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 1mQEhR-0008HB-Ui for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Sep 2021 20:06:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mQEhQ-0006HF-LL for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Sep 2021 20:06:36 +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 1mQEhP-0006H3-Ug for pgsql-hackers@lists.postgresql.org; Tue, 14 Sep 2021 20:06:36 +0000 Received: from smtp-fw-6001.amazon.com ([52.95.48.154]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mQEhN-0001H3-8J for pgsql-hackers@postgresql.org; Tue, 14 Sep 2021 20:06:34 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1631649993; x=1663185993; h=from:to:cc:date:message-id:references:in-reply-to: mime-version:subject; bh=76sVUtRbuMhtek200dj0YXh8gYibL0mBq6RAhaE81HQ=; b=lgyOeTDUPrLGLZQCrLlTM8wyzAxnEJiUsKbetGgJngor4Mzs6XsfBKeg 6LAANbq8/6j+LOP13gn4XXHyvQV+eR+VsI4WEsh4p/UYrp4T4G5l78dNg klZmu6MpDHkc5gjdfFe9fY3k1TmFWgTnNHjCVzYvV1vY2rrA1gf7SCJ3o Y=; X-Amazon-filename: v5-0001-wal-segment-pre-allocation.patch X-IronPort-AV: E=Sophos;i="5.85,292,1624320000"; d="scan'208,223";a="141739789" Subject: Re: Pre-allocating WAL files Thread-Topic: Pre-allocating WAL files Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-pdx-2c-7d0c7241.us-west-2.amazon.com) ([10.43.8.6]) by smtp-border-fw-6001.iad6.amazon.com with ESMTP; 14 Sep 2021 20:06:31 +0000 Received: from EX13MTAUWB001.ant.amazon.com (pdx1-ws-svc-p6-lb9-vlan2.pdx.amazon.com [10.236.137.194]) by email-inbound-relay-pdx-2c-7d0c7241.us-west-2.amazon.com (Postfix) with ESMTPS id 2D8464162F; Tue, 14 Sep 2021 20:06:31 +0000 (UTC) Received: from EX13D03UWC003.ant.amazon.com (10.43.162.79) by EX13MTAUWB001.ant.amazon.com (10.43.161.207) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Tue, 14 Sep 2021 20:06:30 +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.23; Tue, 14 Sep 2021 20:06:30 +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.023; Tue, 14 Sep 2021 20:06:30 +0000 From: "Bossart, Nathan" To: vignesh C CC: Andres Freund , "pgsql-hackers@postgresql.org" Thread-Index: AQHXWav8+6ha4BKnPEG53jEY0XwfWasIN++AgCyQ/oCAb1ZkgA== Date: Tue, 14 Sep 2021 20:06:29 +0000 Message-ID: <51BAAB3B-9D3C-4155-B125-42E4F06DCDF4@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.176] Content-Type: multipart/mixed; boundary="_002_51BAAB3B9D3C4155B12542E4F06DCDF4amazoncom_" MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_51BAAB3B9D3C4155B12542E4F06DCDF4amazoncom_ Content-Type: text/plain; charset="utf-8" Content-ID: <9996C6D19975C14B88288FA62EBE25FD@amazon.com> Content-Transfer-Encoding: base64 T24gOC8zMS8yMSwgMTA6MjcgQU0sICJCb3NzYXJ0LCBOYXRoYW4iIDxib3NzYXJ0bkBhbWF6b24u Y29tPiB3cm90ZToNCj4gUmViYXNpbmcgYWdhaW4gdG8ga2VlcCBodHRwOi8vY29tbWl0ZmVzdC5j cHV0dWJlLm9yZy8gaGFwcHkuDQoNCkFub3RoZXIgcmViYXNlLg0KDQpOYXRoYW4NCg0K --_002_51BAAB3B9D3C4155B12542E4F06DCDF4amazoncom_ Content-Type: application/octet-stream; name="v5-0001-wal-segment-pre-allocation.patch" Content-Description: v5-0001-wal-segment-pre-allocation.patch Content-Disposition: attachment; filename="v5-0001-wal-segment-pre-allocation.patch"; size=44772; creation-date="Tue, 14 Sep 2021 20:06:29 GMT"; modification-date="Tue, 14 Sep 2021 20:06:29 GMT" Content-ID: <6D75ED78F348CC4B922C849CBB3EFF5D@amazon.com> Content-Transfer-Encoding: base64 RnJvbSA4ZGM5M2JhMDY5MDdjNGU1OWZjY2YyZGI1ZmU1YzIwZjFjYTlkZWQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gQm9zc2FydCA8Ym9zc2FydG5AYW1hem9uLmNvbT4K RGF0ZTogVHVlLCAxNCBTZXAgMjAyMSAxODo0NDoxNSArMDAwMApTdWJqZWN0OiBbUEFUQ0ggdjUg MS8xXSB3YWwgc2VnbWVudCBwcmUtYWxsb2NhdGlvbgoKLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgMjMgKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYyAgICAgICAgICAgICB8IDIyNiArKysrKysrKystLS0tLS0tLS0KIHNyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYyAgICAgICAgICAgfCAgIDggKwogc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgICAgICAgICAgIHwgIDQ1ICsrKysKIHNyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvd2FsX2FsbG9jYXRvci5jICAgICAgICB8IDMxNSArKysrKysrKysrKysr KysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vYmFzZWJhY2t1cC5jICAgICAg ICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvZmQuYyAgICAgICAgICAgICAg ICAgfCAxMTUgKysrKysrKysrKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9ja25hbWVz LnR4dCAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgICAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMg ICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jICAgICAgICAg ICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgICAgICAgICAgICAgICAg ICB8ICAxMiArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUg fCAgIDEgKwogc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19iYXNlYmFja3VwLmMgICAgICAgICB8ICAx OSArLQogc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3QvMDEwX3BnX2Jhc2ViYWNrdXAucGwgIHwgICA0 ICstCiBzcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMgICAgICAgICAgICAgfCAgNDgg KysrKwogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaCAgICAgICAgICAgICAgICAgICAgIHwgICA1 ICsKIHNyYy9pbmNsdWRlL21pc2NhZG1pbi5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyAr CiBzcmMvaW5jbHVkZS9wb3N0bWFzdGVyL3dhbF9hbGxvY2F0b3IuaCAgICAgICAgfCAgMjEgKysK IHNyYy9pbmNsdWRlL3N0b3JhZ2UvZmQuaCAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaCAgICAgICAgICAgICAgICAgICAgfCAgMTEgKy0KIHNy Yy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCAgICAgICAgICAgICAgICB8ICAgMyArLQogMjQg ZmlsZXMgY2hhbmdlZCwgNzY1IGluc2VydGlvbnMoKyksIDExMSBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbF9hbGxvY2F0b3IuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvd2FsX2FsbG9jYXRvci5oCgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZp Zy5zZ21sCmluZGV4IGVmMGUyYTc3NDYuLjExNjUyODg5ODcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTMyMDMs NiArMzIwMywyOSBAQCBpbmNsdWRlX2RpciAnY29uZi5kJwogICAgICAgPC9saXN0aXRlbT4KICAg ICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLXdhbC1hbGxv Y2F0b3ItbWF4LXNpemUiIHhyZWZsYWJlbD0id2FsX2FsbG9jYXRvcl9tYXhfc2l6ZSI+CisgICAg ICA8dGVybT48dmFybmFtZT53YWxfYWxsb2NhdG9yX21heF9zaXplPC92YXJuYW1lPiAoPHR5cGU+ aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJu YW1lPndhbF9hbGxvY2F0b3JfbWF4X3NpemU8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1l dGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBX QUwgdG8gcHJlLWFsbG9jYXRlIGZvciB1c2Ugd2hlbiBhIG5ldyBXQUwgc2VnbWVudAorICAgICAg ICBtdXN0IGJlIGluaXRpYWxpemVkLiAgU2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byBhIHNpemUg bGVzcyB0aGFuIHRoZSBXQUwKKyAgICAgICAgc2VnbWVudCBzaXplIGRpc2FibGVzIHRoaXMgYmVo YXZpb3IuICBUaGUgZGVmYXVsdCB2YWx1ZXMgaXMgNjQgbWVnYWJ5dGVzCisgICAgICAgICg8bGl0 ZXJhbD42NE1CPC9saXRlcmFsPikuICBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSBzZXQgaW4g dGhlCisgICAgICAgIDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG9y IG9uIHRoZSBzZXJ2ZXIgY29tbWFuZCBsaW5lLgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxw YXJhPgorICAgICAgICBXQUwgcHJlLWFsbG9jYXRpb24gbWF5IGltcHJvdmUgcGVyZm9ybWFuY2Ug aW4gc2NlbmFyaW9zIHdoZXJlIG5ldyBXQUwKKyAgICAgICAgc2VnbWVudHMgbXVzdCBiZSBjcmVh dGVkIChlLmcuLCBkdXJpbmcgY2hlY2twb2ludHMgd2hlbiBXQUwgc2VnbWVudHMKKyAgICAgICAg Y2Fubm90IGJlIHJlY3ljbGVkKS4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgor ICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtd2FsLWJ1 ZmZlcnMiIHhyZWZsYWJlbD0id2FsX2J1ZmZlcnMiPgogICAgICAgPHRlcm0+PHZhcm5hbWU+d2Fs X2J1ZmZlcnM8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKICAgICAgIDxpbmRleHRl cm0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXggZTUxYTdhNzQ5ZC4uMGMzODgyNmJh NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1 ZGUgInBvcnQvcGdfaW92ZWMuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd3JpdGVyLmgiCiAj aW5jbHVkZSAicG9zdG1hc3Rlci9zdGFydHVwLmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci93YWxf YWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci93YWx3cml0ZXIuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9iYXNlYmFja3VwLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNh bC5oIgpAQCAtNzIzLDYgKzcyNCwxMyBAQCB0eXBlZGVmIHN0cnVjdCBYTG9nQ3RsRGF0YQogCSAq LwogCVhMb2dSZWNQdHIJbGFzdEZwd0Rpc2FibGVSZWNQdHI7CiAKKwkvKgorCSAqIG51bWJlciBv ZiBwcmUtYWxsb2NhdGVkIFdBTCBzZWdtZW50cyBpbiBwZ193YWwvcHJlYWxsb2NhdGVkX3NlZ21l bnRzCisJICoKKwkgKiBQcm90ZWN0ZWQgYnkgV0FMUHJlYWxsb2NhdGlvbkxvY2suCisJICovCisJ aW50IG51bV9wcmVhbGxvY19zZWdzOworCiAJc2xvY2tfdAkJaW5mb19sY2s7CQkvKiBsb2NrcyBz aGFyZWQgdmFyaWFibGVzIHNob3duIGFib3ZlICovCiB9IFhMb2dDdGxEYXRhOwogCkBAIC0zMjYw LDExICszMjY4LDEwIEBAIHN0YXRpYyBpbnQKIFhMb2dGaWxlSW5pdEludGVybmFsKFhMb2dTZWdO byBsb2dzZWdubywgYm9vbCAqYWRkZWQsIGNoYXIgKnBhdGgpCiB7CiAJY2hhcgkJdG1wcGF0aFtN QVhQR1BBVEhdOwotCVBHQWxpZ25lZFhMb2dCbG9jayB6YnVmZmVyOwogCVhMb2dTZWdObwlpbnN0 YWxsZWRfc2Vnbm87CiAJWExvZ1NlZ05vCW1heF9zZWdubzsKIAlpbnQJCQlmZDsKLQlpbnQJCQlz YXZlX2Vycm5vOworCWJvb2wJCWZvdW5kID0gZmFsc2U7CiAKIAlYTG9nRmlsZVBhdGgocGF0aCwg VGhpc1RpbWVMaW5lSUQsIGxvZ3NlZ25vLCB3YWxfc2VnbWVudF9zaXplKTsKIApAQCAtMzI4NCwx MTUgKzMyOTEsNDUgQEAgWExvZ0ZpbGVJbml0SW50ZXJuYWwoWExvZ1NlZ05vIGxvZ3NlZ25vLCBi b29sICphZGRlZCwgY2hhciAqcGF0aCkKIAkJcmV0dXJuIGZkOwogCiAJLyoKLQkgKiBJbml0aWFs aXplIGFuIGVtcHR5IChhbGwgemVyb2VzKSBzZWdtZW50LiAgTk9URTogaXQgaXMgcG9zc2libGUg dGhhdAotCSAqIGFub3RoZXIgcHJvY2VzcyBpcyBkb2luZyB0aGUgc2FtZSB0aGluZy4gIElmIHNv LCB3ZSB3aWxsIGVuZCB1cAotCSAqIHByZS1jcmVhdGluZyBhbiBleHRyYSBsb2cgc2VnbWVudC4g IFRoYXQgc2VlbXMgT0ssIGFuZCBiZXR0ZXIgdGhhbgotCSAqIGhvbGRpbmcgdGhlIGxvY2sgdGhy b3VnaG91dCB0aGlzIGxlbmd0aHkgcHJvY2Vzcy4KKwkgKiBUcnkgdG8gdXNlIGEgcHJlLWFsbG9j YXRlZCBzZWdtZW50LCBpZiBvbmUgZXhpc3RzLiAgSWYgbm9uZSBhcmUKKwkgKiBhdmFpbGFibGUs IHdlIGZhbGwgYmFjayB0byBjcmVhdGluZyBhIG5ldyBzZWdtZW50IG9uIG91ciBvd24uCisJICoK KwkgKiBOb3RlIHRoYXQgd2Ugc3RpbGwgbG9vayBmb3IgYSBwcmUtYWxsb2NhdGVkIHNlZ21lbnQg ZXZlbiBpZiB0aGUgcHJlLQorCSAqIGFsbG9jYXRpb24gZnVuY3Rpb25hbGl0eSBpcyBkaXNhYmxl ZCB2aWEgdGhlIEdVQ3MuICBUaGlzIGVuc3VyZXMgdGhhdCBhbnkKKwkgKiBwcmUtYWxsb2NhdGVk IHNlZ21lbnRzIGxlZnQgb3ZlciBhZnRlciB0dXJuaW5nIG9mZiB0aGUgcHJlLWFsbG9jYXRpb24K KwkgKiBmdW5jdGlvbmFsaXR5IGFyZSBldmVudHVhbGx5IHVzZWQgdXAuCiAJICovCi0JZWxvZyhE RUJVRzIsICJjcmVhdGluZyBhbmQgZmlsbGluZyBuZXcgV0FMIGZpbGUiKTsKLQotCXNucHJpbnRm KHRtcHBhdGgsIE1BWFBHUEFUSCwgWExPR0RJUiAiL3hsb2d0ZW1wLiVkIiwgKGludCkgZ2V0cGlk KCkpOwotCi0JdW5saW5rKHRtcHBhdGgpOwotCi0JLyogZG8gbm90IHVzZSBnZXRfc3luY19iaXQo KSBoZXJlIC0tLSB3YW50IHRvIGZzeW5jIG9ubHkgYXQgZW5kIG9mIGZpbGwgKi8KLQlmZCA9IEJh c2ljT3BlbkZpbGUodG1wcGF0aCwgT19SRFdSIHwgT19DUkVBVCB8IE9fRVhDTCB8IFBHX0JJTkFS WSk7Ci0JaWYgKGZkIDwgMCkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZV9mb3JfZmls ZV9hY2Nlc3MoKSwKLQkJCQkgZXJybXNnKCJjb3VsZCBub3QgY3JlYXRlIGZpbGUgXCIlc1wiOiAl bSIsIHRtcHBhdGgpKSk7Ci0KLQltZW1zZXQoemJ1ZmZlci5kYXRhLCAwLCBYTE9HX0JMQ0tTWik7 Ci0KLQlwZ3N0YXRfcmVwb3J0X3dhaXRfc3RhcnQoV0FJVF9FVkVOVF9XQUxfSU5JVF9XUklURSk7 Ci0Jc2F2ZV9lcnJubyA9IDA7Ci0JaWYgKHdhbF9pbml0X3plcm8pCisJTFdMb2NrQWNxdWlyZShX QUxQcmVhbGxvY2F0aW9uTG9jaywgTFdfRVhDTFVTSVZFKTsKKwlpZiAoWExvZ0N0bC0+bnVtX3By ZWFsbG9jX3NlZ3MgPiAwKQogCXsKLQkJc3RydWN0IGlvdmVjIGlvdltQR19JT1ZfTUFYXTsKLQkJ aW50CQkJYmxvY2tzOwotCi0JCS8qCi0JCSAqIFplcm8tZmlsbCB0aGUgZmlsZS4gIFdpdGggdGhp cyBzZXR0aW5nLCB3ZSBkbyB0aGlzIHRoZSBoYXJkIHdheSB0bwotCQkgKiBlbnN1cmUgdGhhdCBh bGwgdGhlIGZpbGUgc3BhY2UgaGFzIHJlYWxseSBiZWVuIGFsbG9jYXRlZC4gIE9uCi0JCSAqIHBs YXRmb3JtcyB0aGF0IGFsbG93ICJob2xlcyIgaW4gZmlsZXMsIGp1c3Qgc2Vla2luZyB0byB0aGUg ZW5kCi0JCSAqIGRvZXNuJ3QgYWxsb2NhdGUgaW50ZXJtZWRpYXRlIHNwYWNlLiAgVGhpcyB3YXks IHdlIGtub3cgdGhhdCB3ZQotCQkgKiBoYXZlIGFsbCB0aGUgc3BhY2UgYW5kIChhZnRlciB0aGUg ZnN5bmMgYmVsb3cpIHRoYXQgYWxsIHRoZQotCQkgKiBpbmRpcmVjdCBibG9ja3MgYXJlIGRvd24g b24gZGlzay4gIFRoZXJlZm9yZSwgZmRhdGFzeW5jKDIpIG9yCi0JCSAqIE9fRFNZTkMgd2lsbCBi ZSBzdWZmaWNpZW50IHRvIHN5bmMgZnV0dXJlIHdyaXRlcyB0byB0aGUgbG9nIGZpbGUuCi0JCSAq LwotCi0JCS8qIFByZXBhcmUgdG8gd3JpdGUgb3V0IGEgbG90IG9mIGNvcGllcyBvZiBvdXIgemVy byBidWZmZXIgYXQgb25jZS4gKi8KLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGhvZihpb3Yp OyArK2kpCi0JCXsKLQkJCWlvdltpXS5pb3ZfYmFzZSA9IHpidWZmZXIuZGF0YTsKLQkJCWlvdltp XS5pb3ZfbGVuID0gWExPR19CTENLU1o7Ci0JCX0KLQotCQkvKiBMb29wLCB3cml0aW5nIGFzIG1h bnkgYmxvY2tzIGFzIHdlIGNhbiBmb3IgZWFjaCBzeXN0ZW0gY2FsbC4gKi8KLQkJYmxvY2tzID0g d2FsX3NlZ21lbnRfc2l6ZSAvIFhMT0dfQkxDS1NaOwotCQlmb3IgKGludCBpID0gMDsgaSA8IGJs b2NrczspCi0JCXsKLQkJCWludAkJCWlvdmNudCA9IE1pbihibG9ja3MgLSBpLCBsZW5ndGhvZihp b3YpKTsKLQkJCW9mZl90CQlvZmZzZXQgPSBpICogWExPR19CTENLU1o7Ci0KLQkJCWlmIChwZ19w d3JpdGV2X3dpdGhfcmV0cnkoZmQsIGlvdiwgaW92Y250LCBvZmZzZXQpIDwgMCkKLQkJCXsKLQkJ CQlzYXZlX2Vycm5vID0gZXJybm87Ci0JCQkJYnJlYWs7Ci0JCQl9CisJCWVsb2coREVCVUcyLCAi dXNpbmcgcHJlLWFsbG9jYXRlZCBXQUwgZmlsZSIpOwogCi0JCQlpICs9IGlvdmNudDsKLQkJfQor CQlmb3VuZCA9IHRydWU7CisJCVhMb2dDdGwtPm51bV9wcmVhbGxvY19zZWdzLS07CisJCXNucHJp bnRmKHRtcHBhdGgsIE1BWFBHUEFUSCwgIiVzL3ByZWFsbG9jYXRlZF9zZWdtZW50cy94bG9ndGVt cC4lZCIsCisJCQkJIFhMT0dESVIsIFhMb2dDdGwtPm51bV9wcmVhbGxvY19zZWdzKTsKIAl9Ci0J ZWxzZQorCisJaWYgKCFmb3VuZCkKIAl7CiAJCS8qCi0JCSAqIE90aGVyd2lzZSwgc2Vla2luZyB0 byB0aGUgZW5kIGFuZCB3cml0aW5nIGEgc29saXRhcnkgYnl0ZSBpcwotCQkgKiBlbm91Z2guCisJ CSAqIFdlJ3JlIG5vdCB1c2luZyBhIHByZS1hbGxvY2F0ZWQgc2VnbWVudCwgc28gdGhlcmUncyBu byBuZWVkIHRvIGtlZXAKKwkJICogaG9sZGluZyB0aGUgV0FMUHJlYWxsb2NhdGlvbkxvY2suCiAJ CSAqLwotCQllcnJubyA9IDA7Ci0JCWlmIChwZ19wd3JpdGUoZmQsIHpidWZmZXIuZGF0YSwgMSwg d2FsX3NlZ21lbnRfc2l6ZSAtIDEpICE9IDEpCi0JCXsKLQkJCS8qIGlmIHdyaXRlIGRpZG4ndCBz ZXQgZXJybm8sIGFzc3VtZSBubyBkaXNrIHNwYWNlICovCi0JCQlzYXZlX2Vycm5vID0gZXJybm8g PyBlcnJubyA6IEVOT1NQQzsKLQkJfQotCX0KLQlwZ3N0YXRfcmVwb3J0X3dhaXRfZW5kKCk7CisJ CUxXTG9ja1JlbGVhc2UoV0FMUHJlYWxsb2NhdGlvbkxvY2spOwogCi0JaWYgKHNhdmVfZXJybm8p Ci0JewogCQkvKgotCQkgKiBJZiB3ZSBmYWlsIHRvIG1ha2UgdGhlIGZpbGUsIGRlbGV0ZSBpdCB0 byByZWxlYXNlIGRpc2sgc3BhY2UKKwkJICogSW5pdGlhbGl6ZSBhbiBlbXB0eSAoYWxsIHplcm9l cykgc2VnbWVudC4gIE5PVEU6IGl0IGlzIHBvc3NpYmxlIHRoYXQKKwkJICogYW5vdGhlciBwcm9j ZXNzIGlzIGRvaW5nIHRoZSBzYW1lIHRoaW5nLiAgSWYgc28sIHdlIHdpbGwgZW5kIHVwCisJCSAq IHByZS1jcmVhdGluZyBhbiBleHRyYSBsb2cgc2VnbWVudC4gIFRoYXQgc2VlbXMgT0ssIGFuZCBi ZXR0ZXIgdGhhbgorCQkgKiBob2xkaW5nIHRoZSBsb2NrIHRocm91Z2hvdXQgdGhpcyBsZW5ndGh5 IHByb2Nlc3MuCiAJCSAqLwotCQl1bmxpbmsodG1wcGF0aCk7Ci0KLQkJY2xvc2UoZmQpOworCQll bG9nKERFQlVHMiwgImNyZWF0aW5nIGFuZCBmaWxsaW5nIG5ldyBXQUwgZmlsZSIpOwogCi0JCWVy cm5vID0gc2F2ZV9lcnJubzsKLQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlX2Zvcl9m aWxlX2FjY2VzcygpLAotCQkJCSBlcnJtc2coImNvdWxkIG5vdCB3cml0ZSB0byBmaWxlIFwiJXNc IjogJW0iLCB0bXBwYXRoKSkpOworCQlzbnByaW50Zih0bXBwYXRoLCBNQVhQR1BBVEgsIFhMT0dE SVIgIi94bG9ndGVtcC4lZCIsIChpbnQpIGdldHBpZCgpKTsKKwkJQ3JlYXRlRW1wdHlXYWxTZWdt ZW50KHRtcHBhdGgpOwogCX0KIAotCXBnc3RhdF9yZXBvcnRfd2FpdF9zdGFydChXQUlUX0VWRU5U X1dBTF9JTklUX1NZTkMpOwotCWlmIChwZ19mc3luYyhmZCkgIT0gMCkKLQl7Ci0JCWludAkJCXNh dmVfZXJybm8gPSBlcnJubzsKLQotCQljbG9zZShmZCk7Ci0JCWVycm5vID0gc2F2ZV9lcnJubzsK LQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKLQkJCQkg ZXJybXNnKCJjb3VsZCBub3QgZnN5bmMgZmlsZSBcIiVzXCI6ICVtIiwgdG1wcGF0aCkpKTsKLQl9 Ci0JcGdzdGF0X3JlcG9ydF93YWl0X2VuZCgpOwotCi0JaWYgKGNsb3NlKGZkKSAhPSAwKQotCQll cmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAotCQkJCSBlcnJt c2coImNvdWxkIG5vdCBjbG9zZSBmaWxlIFwiJXNcIjogJW0iLCB0bXBwYXRoKSkpOwotCiAJLyoK IAkgKiBOb3cgbW92ZSB0aGUgc2VnbWVudCBpbnRvIHBsYWNlIHdpdGggaXRzIGZpbmFsIG5hbWUu ICBDb3BlIHdpdGgKIAkgKiBwb3NzaWJpbGl0eSB0aGF0IHNvbWVvbmUgZWxzZSBoYXMgY3JlYXRl ZCB0aGUgZmlsZSB3aGlsZSB3ZSB3ZXJlCkBAIC0zNDEzLDcgKzMzNTAsNyBAQCBYTG9nRmlsZUlu aXRJbnRlcm5hbChYTG9nU2VnTm8gbG9nc2Vnbm8sIGJvb2wgKmFkZGVkLCBjaGFyICpwYXRoKQog CWlmIChJbnN0YWxsWExvZ0ZpbGVTZWdtZW50KCZpbnN0YWxsZWRfc2Vnbm8sIHRtcHBhdGgsIHRy dWUsIG1heF9zZWdubykpCiAJewogCQkqYWRkZWQgPSB0cnVlOwotCQllbG9nKERFQlVHMiwgImRv bmUgY3JlYXRpbmcgYW5kIGZpbGxpbmcgbmV3IFdBTCBmaWxlIik7CisJCWVsb2coREVCVUcyLCAi ZG9uZSBpbnN0YWxsaW5nIG5ldyBXQUwgZmlsZSIpOwogCX0KIAllbHNlCiAJewpAQCAtMzQyNiw2 ICszMzYzLDE4IEBAIFhMb2dGaWxlSW5pdEludGVybmFsKFhMb2dTZWdObyBsb2dzZWdubywgYm9v bCAqYWRkZWQsIGNoYXIgKnBhdGgpCiAJCWVsb2coREVCVUcyLCAiYWJhbmRvbmVkIG5ldyBXQUwg ZmlsZSIpOwogCX0KIAorCS8qCisJICogSWYgd2UgYXJlIHVzaW5nIGEgcHJlLWFsbG9jYXRlZCBz ZWdtZW50LCB3ZSd2ZSBiZWVuIGhvbGRpbmcgb250byB0aGUKKwkgKiBXQUxQcmVhbGxvY2F0aW9u TG9jayBhbGwgdGhpcyB0aW1lIHNvIHRoYXQgdGhlIFdBTCBBbGxvY2F0b3IgcHJvY2VzcworCSAq IGNhbid0IG92ZXJ3cml0ZSB0aGUgZmlsZSBiZWZvcmUgd2UndmUgaW5zdGFsbGVkIGl0LgorCSAq CisJICogV2hpbGUgd2UncmUgYXQgaXQsIGFsc28gdHJ5IHRvIHdha2UgdXAgdGhlIFdBTCBhbGxv Y2F0b3IgZWFybHkgc28gdGhhdCBpdAorCSAqIGNhbiBnZXQgYSBqdW1wIHN0YXJ0IG9uIGFsbG9j YXRpbmcgbmV3IHNlZ21lbnRzIGlmIHBvc3NpYmxlLgorCSAqLworCWlmIChmb3VuZCkKKwkJTFdM b2NrUmVsZWFzZShXQUxQcmVhbGxvY2F0aW9uTG9jayk7CisJUmVxdWVzdFdhbFByZWFsbG9jYXRp b24oKTsKKwogCXJldHVybiAtMTsKIH0KIApAQCAtNDI4Miw4ICs0MjMxLDggQEAgUmVtb3ZlWGxv Z0ZpbGUoY29uc3QgY2hhciAqc2VnbmFtZSwgWExvZ1NlZ05vIHJlY3ljbGVTZWdObywKIH0KIAog LyoKLSAqIFZlcmlmeSB3aGV0aGVyIHBnX3dhbCBhbmQgcGdfd2FsL2FyY2hpdmVfc3RhdHVzIGV4 aXN0LgotICogSWYgdGhlIGxhdHRlciBkb2VzIG5vdCBleGlzdCwgcmVjcmVhdGUgaXQuCisgKiBW ZXJpZnkgd2hldGhlciBwZ193YWwsIHBnX3dhbC9hcmNoaXZlX3N0YXR1cyBhbmQgcGdfd2FsL3By ZWFsbG9jYXRlZF9zZWdtZW50cworICogZXhpc3QuICBJZiBlaXRoZXIgb2YgdGhlIGxhdHRlciB0 d28gZG8gbm90IGV4aXN0LCByZWNyZWF0ZSBpdC4KICAqCiAgKiBJdCBpcyBub3QgdGhlIGdvYWwg b2YgdGhpcyBmdW5jdGlvbiB0byB2ZXJpZnkgdGhlIGNvbnRlbnRzIG9mIHRoZXNlCiAgKiBkaXJl Y3RvcmllcywgYnV0IHRvIGhlbHAgaW4gY2FzZXMgd2hlcmUgc29tZW9uZSBoYXMgcGVyZm9ybWVk IGEgY2x1c3RlcgpAQCAtNDMyNiw2ICs0Mjc1LDI2IEBAIFZhbGlkYXRlWExPR0RpcmVjdG9yeVN0 cnVjdHVyZSh2b2lkKQogCQkJCQkoZXJybXNnKCJjb3VsZCBub3QgY3JlYXRlIG1pc3NpbmcgZGly ZWN0b3J5IFwiJXNcIjogJW0iLAogCQkJCQkJCXBhdGgpKSk7CiAJfQorCisJLyogQ2hlY2sgZm9y IHByZWFsbG9jYXRlZF9zZWdtZW50cyAqLworCXNucHJpbnRmKHBhdGgsIE1BWFBHUEFUSCwgWExP R0RJUiAiL3ByZWFsbG9jYXRlZF9zZWdtZW50cyIpOworCWlmIChzdGF0KHBhdGgsICZzdGF0X2J1 ZikgPT0gMCkKKwl7CisJCS8qIENoZWNrIGZvciB3ZWlyZCBjYXNlcyB3aGVyZSBpdCBleGlzdHMg YnV0IGlzbid0IGEgZGlyZWN0b3J5ICovCisJCWlmICghU19JU0RJUihzdGF0X2J1Zi5zdF9tb2Rl KSkKKwkJCWVyZXBvcnQoRkFUQUwsCisJCQkJCShlcnJtc2coInJlcXVpcmVkIFdBTCBkaXJlY3Rv cnkgXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQlwYXRoKSkpOworCX0KKwllbHNlCisJ eworCQllcmVwb3J0KExPRywKKwkJCQkoZXJybXNnKCJjcmVhdGluZyBtaXNzaW5nIFdBTCBkaXJl Y3RvcnkgXCIlc1wiIiwgcGF0aCkpKTsKKwkJaWYgKE1ha2VQR0RpcmVjdG9yeShwYXRoKSA8IDAp CisJCQllcmVwb3J0KEZBVEFMLAorCQkJCQkoZXJybXNnKCJjb3VsZCBub3QgY3JlYXRlIG1pc3Np bmcgZGlyZWN0b3J5IFwiJXNcIjogJW0iLAorCQkJCQkJCXBhdGgpKSk7CisJfQogfQogCiAvKgpA QCAtNTIzMyw2ICs1MjAyLDkgQEAgWExPR1NobWVtSW5pdCh2b2lkKQogCVNwaW5Mb2NrSW5pdCgm WExvZ0N0bC0+dWxzbl9sY2spOwogCUluaXRTaGFyZWRMYXRjaCgmWExvZ0N0bC0+cmVjb3ZlcnlX YWtldXBMYXRjaCk7CiAJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZYTG9nQ3RsLT5yZWNvdmVyeU5v dFBhdXNlZENWKTsKKworCS8qIHByb3RlY3RlZCBieSBXQUxQcmVhbGxvY2F0aW9uTG9jayAqLwor CVhMb2dDdGwtPm51bV9wcmVhbGxvY19zZWdzID0gMDsKIH0KIAogLyoKQEAgLTEyOTkzLDMgKzEy OTY1LDU1IEBAIFhMb2dSZXF1ZXN0V2FsUmVjZWl2ZXJSZXBseSh2b2lkKQogewogCWRvUmVxdWVz dFdhbFJlY2VpdmVyUmVwbHkgPSB0cnVlOwogfQorCitpbnQKK0dldE51bVByZWFsbG9jYXRlZFdh bFNlZ3Modm9pZCkKK3sKKwlpbnQgcmV0OworCisJTFdMb2NrQWNxdWlyZShXQUxQcmVhbGxvY2F0 aW9uTG9jaywgTFdfU0hBUkVEKTsKKwlyZXQgPSBYTG9nQ3RsLT5udW1fcHJlYWxsb2Nfc2VnczsK KwlMV0xvY2tSZWxlYXNlKFdBTFByZWFsbG9jYXRpb25Mb2NrKTsKKworCXJldHVybiByZXQ7Cit9 CisKK3ZvaWQKK1NldE51bVByZWFsbG9jYXRlZFdhbFNlZ3MoaW50IGkpCit7CisJTFdMb2NrQWNx dWlyZShXQUxQcmVhbGxvY2F0aW9uTG9jaywgTFdfRVhDTFVTSVZFKTsKKwlYTG9nQ3RsLT5udW1f cHJlYWxsb2Nfc2VncyA9IGk7CisJTFdMb2NrUmVsZWFzZShXQUxQcmVhbGxvY2F0aW9uTG9jayk7 Cit9CisKKy8qCisgKiBJbnN0YWxsUHJlYWxsb2NhdGVkV2FsU2VnCisgKgorICogUmVuYW1lcyB0 aGUgZmlsZSBhdCAicGF0aCIgdG8gdGhlIG5leHQgb3BlbiBwcmUtYWxsb2NhdGVkIHNlZ21lbnQg c2xvdCBhbmQKKyAqIGJ1bXBzIHVwIFhMb2dDdGwtPm51bV9wcmVhbGxvY19zZWdzLgorICovCit2 b2lkCitJbnN0YWxsUHJlYWxsb2NhdGVkV2FsU2VnKGNvbnN0IGNoYXIgKnBhdGgpCit7CisJY2hh cgluZXdwYXRoW01BWFBHUEFUSF07CisKKwlMV0xvY2tBY3F1aXJlKFdBTFByZWFsbG9jYXRpb25M b2NrLCBMV19FWENMVVNJVkUpOworCisJc25wcmludGYobmV3cGF0aCwgTUFYUEdQQVRILCAiJXMv cHJlYWxsb2NhdGVkX3NlZ21lbnRzL3hsb2d0ZW1wLiVkIiwKKwkJCSBYTE9HRElSLCBYTG9nQ3Rs LT5udW1fcHJlYWxsb2Nfc2Vncyk7CisJKHZvaWQpIGR1cmFibGVfcmVuYW1lKHBhdGgsIG5ld3Bh dGgsIEVSUk9SKTsKKwlYTG9nQ3RsLT5udW1fcHJlYWxsb2Nfc2VncysrOworCisJTFdMb2NrUmVs ZWFzZShXQUxQcmVhbGxvY2F0aW9uTG9jayk7Cit9CisKKy8qCisgKiBSZXF1ZXN0IHRoYXQgdGhl IFdBTCBhbGxvY2F0b3Igd2FrZSB1cCBlYXJseS4KKyAqLwordm9pZAorUmVxdWVzdFdhbFByZWFs bG9jYXRpb24odm9pZCkKK3sKKwlpZiAoUHJvY0dsb2JhbC0+d2FsQWxsb2NhdG9yTGF0Y2ggJiYK KwkJV2FsUHJlYWxsb2NhdGlvbkVuYWJsZWQoKSkKKwkJU2V0TGF0Y2goUHJvY0dsb2JhbC0+d2Fs QWxsb2NhdG9yTGF0Y2gpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9N YWtlZmlsZSBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvTWFrZWZpbGUKaW5kZXggNzg3YzZhMmMz Yi4uZDY5YWRhMGM0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9NYWtlZmls ZQorKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL01ha2VmaWxlCkBAIC0yNSw2ICsyNSw3IEBA IE9CSlMgPSBcCiAJcG9zdG1hc3Rlci5vIFwKIAlzdGFydHVwLm8gXAogCXN5c2xvZ2dlci5vIFwK Kwl3YWxfYWxsb2NhdG9yLm8gXAogCXdhbHdyaXRlci5vCiAKIGluY2x1ZGUgJCh0b3Bfc3JjZGly KS9zcmMvYmFja2VuZC9jb21tb24ubWsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvYXV4cHJvY2Vzcy5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXhwcm9jZXNzLmMKaW5k ZXggNzQ1MmY5MDhiMi4uODNmYmViYzRkOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9hdXhwcm9jZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXhwcm9jZXNz LmMKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1eHByb2Nlc3MuaCIK ICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd3JpdGVyLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9z dGFydHVwLmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci93YWxfYWxsb2NhdG9yLmgiCiAjaW5jbHVk ZSAicG9zdG1hc3Rlci93YWx3cml0ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNl aXZlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCkBAIC04MCw2ICs4MSw5IEBAIEF1 eGlsaWFyeVByb2Nlc3NNYWluKEF1eFByb2NUeXBlIGF1eHR5cGUpCiAJCWNhc2UgV2FsUmVjZWl2 ZXJQcm9jZXNzOgogCQkJTXlCYWNrZW5kVHlwZSA9IEJfV0FMX1JFQ0VJVkVSOwogCQkJYnJlYWs7 CisJCWNhc2UgV2FsQWxsb2NhdG9yUHJvY2VzczoKKwkJCU15QmFja2VuZFR5cGUgPSBCX1dBTF9B TExPQ0FUT1I7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJzb21ldGhp bmcgaGFzIGdvbmUgd3JvbmciKTsKIAkJCU15QmFja2VuZFR5cGUgPSBCX0lOVkFMSUQ7CkBAIC0x NjIsNiArMTY2LDEwIEBAIEF1eGlsaWFyeVByb2Nlc3NNYWluKEF1eFByb2NUeXBlIGF1eHR5cGUp CiAJCQlXYWxSZWNlaXZlck1haW4oKTsKIAkJCXByb2NfZXhpdCgxKTsKIAorCQljYXNlIFdhbEFs bG9jYXRvclByb2Nlc3M6CisJCQlXYWxBbGxvY2F0b3JNYWluKCk7CisJCQlwcm9jX2V4aXQoMSk7 CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coUEFOSUMsICJ1bnJlY29nbml6ZWQgcHJvY2VzcyB0eXBl OiAlZCIsIChpbnQpIE15QXV4UHJvY1R5cGUpOwogCQkJcHJvY19leGl0KDEpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3Bvc3RtYXN0ZXIuYwppbmRleCBiMmZlNDIwYzNjLi43MGVhNDJjNjVjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpAQCAtMjUxLDYgKzI1MSw3IEBAIHN0YXRpYyBwaWRf dCBTdGFydHVwUElEID0gMCwKIAkJCUNoZWNrcG9pbnRlclBJRCA9IDAsCiAJCQlXYWxXcml0ZXJQ SUQgPSAwLAogCQkJV2FsUmVjZWl2ZXJQSUQgPSAwLAorCQkJV2FsQWxsb2NhdG9yUElEID0gMCwK IAkJCUF1dG9WYWNQSUQgPSAwLAogCQkJUGdBcmNoUElEID0gMCwKIAkJCVBnU3RhdFBJRCA9IDAs CkBAIC01NTcsNiArNTU4LDcgQEAgc3RhdGljIHZvaWQgU2htZW1CYWNrZW5kQXJyYXlSZW1vdmUo QmFja2VuZCAqYm4pOwogI2RlZmluZSBTdGFydENoZWNrcG9pbnRlcigpCQlTdGFydENoaWxkUHJv Y2VzcyhDaGVja3BvaW50ZXJQcm9jZXNzKQogI2RlZmluZSBTdGFydFdhbFdyaXRlcigpCQlTdGFy dENoaWxkUHJvY2VzcyhXYWxXcml0ZXJQcm9jZXNzKQogI2RlZmluZSBTdGFydFdhbFJlY2VpdmVy KCkJCVN0YXJ0Q2hpbGRQcm9jZXNzKFdhbFJlY2VpdmVyUHJvY2VzcykKKyNkZWZpbmUgU3RhcnRX YWxBbGxvY2F0b3IoKQkJU3RhcnRDaGlsZFByb2Nlc3MoV2FsQWxsb2NhdG9yUHJvY2VzcykKIAog LyogTWFjcm9zIHRvIGNoZWNrIGV4aXQgc3RhdHVzIG9mIGEgY2hpbGQgcHJvY2VzcyAqLwogI2Rl ZmluZSBFWElUX1NUQVRVU18wKHN0KSAgKChzdCkgPT0gMCkKQEAgLTE4MDEsNiArMTgwMywxMyBA QCBTZXJ2ZXJMb29wKHZvaWQpCiAJCWlmIChXYWxXcml0ZXJQSUQgPT0gMCAmJiBwbVN0YXRlID09 IFBNX1JVTikKIAkJCVdhbFdyaXRlclBJRCA9IFN0YXJ0V2FsV3JpdGVyKCk7CiAKKwkJLyoKKwkJ ICogSWYgd2UgaGF2ZSBsb3N0IHRoZSBXQUwgYWxsb2NhdG9yIHByb2Nlc3MsIHRyeSB0byBzdGFy dCBhIG5ldyBvbmUuCisJCSAqLworCQlpZiAoV2FsQWxsb2NhdG9yUElEID09IDAgJiYKKwkJCShw bVN0YXRlID09IFBNX1JVTiB8fCBwbVN0YXRlID09IFBNX0hPVF9TVEFOREJZKSkKKwkJCVdhbEFs bG9jYXRvclBJRCA9IFN0YXJ0V2FsQWxsb2NhdG9yKCk7CisKIAkJLyoKIAkJICogSWYgd2UgaGF2 ZSBsb3N0IHRoZSBhdXRvdmFjdXVtIGxhdW5jaGVyLCB0cnkgdG8gc3RhcnQgYSBuZXcgb25lLiBX ZQogCQkgKiBkb24ndCB3YW50IGF1dG92YWN1dW0gdG8gcnVuIGluIGJpbmFyeSB1cGdyYWRlIG1v ZGUgYmVjYXVzZQpAQCAtMjcxNiw2ICsyNzI1LDggQEAgU0lHSFVQX2hhbmRsZXIoU0lHTkFMX0FS R1MpCiAJCQlzaWduYWxfY2hpbGQoV2FsV3JpdGVyUElELCBTSUdIVVApOwogCQlpZiAoV2FsUmVj ZWl2ZXJQSUQgIT0gMCkKIAkJCXNpZ25hbF9jaGlsZChXYWxSZWNlaXZlclBJRCwgU0lHSFVQKTsK KwkJaWYgKFdhbEFsbG9jYXRvclBJRCAhPSAwKQorCQkJc2lnbmFsX2NoaWxkKFdhbEFsbG9jYXRv clBJRCwgU0lHSFVQKTsKIAkJaWYgKEF1dG9WYWNQSUQgIT0gMCkKIAkJCXNpZ25hbF9jaGlsZChB dXRvVmFjUElELCBTSUdIVVApOwogCQlpZiAoUGdBcmNoUElEICE9IDApCkBAIC0zMDQzLDYgKzMw NTQsOCBAQCByZWFwZXIoU0lHTkFMX0FSR1MpCiAJCQkJQmdXcml0ZXJQSUQgPSBTdGFydEJhY2tn cm91bmRXcml0ZXIoKTsKIAkJCWlmIChXYWxXcml0ZXJQSUQgPT0gMCkKIAkJCQlXYWxXcml0ZXJQ SUQgPSBTdGFydFdhbFdyaXRlcigpOworCQkJaWYgKFdhbEFsbG9jYXRvclBJRCA9PSAwKQorCQkJ CVdhbEFsbG9jYXRvclBJRCA9IFN0YXJ0V2FsQWxsb2NhdG9yKCk7CiAKIAkJCS8qCiAJCQkgKiBM aWtld2lzZSwgc3RhcnQgb3RoZXIgc3BlY2lhbCBjaGlsZHJlbiBhcyBuZWVkZWQuICBJbiBhIHJl c3RhcnQKQEAgLTMxNzAsNiArMzE4MywyMCBAQCByZWFwZXIoU0lHTkFMX0FSR1MpCiAJCQljb250 aW51ZTsKIAkJfQogCisJCS8qCisJCSAqIFdhcyBpdCB0aGUgV0FMIGFsbG9jYXRvcj8gIE5vcm1h bCBleGl0IGNhbiBiZSBpZ25vcmVkOyB3ZSdsbCBzdGFydCBhCisJCSAqIG5ldyBvbmUgYXQgdGhl IG5leHQgaXRlcmF0aW9uIG9mIHRoZSBwb3N0bWFzdGVyJ3MgbWFpbiBsb29wLCBpZgorCQkgKiBu ZWNlc3NhcnkuICBBbnkgb3RoZXIgZXhpdCBjb25kaXRpb24gaXMgdHJlYXRlZCBhcyBhIGNyYXNo LgorCQkgKi8KKwkJaWYgKHBpZCA9PSBXYWxBbGxvY2F0b3JQSUQpCisJCXsKKwkJCVdhbEFsbG9j YXRvclBJRCA9IDA7CisJCQlpZiAoIUVYSVRfU1RBVFVTXzAoZXhpdHN0YXR1cykpCisJCQkJSGFu ZGxlQ2hpbGRDcmFzaChwaWQsIGV4aXRzdGF0dXMsCisJCQkJCQkJCSBfKCJXQUwgQWxsb2NhdG9y IHByb2Nlc3MiKSk7CisJCQljb250aW51ZTsKKwkJfQorCiAJCS8qCiAJCSAqIFdhcyBpdCB0aGUg YXV0b3ZhY3V1bSBsYXVuY2hlcj8JTm9ybWFsIGV4aXQgY2FuIGJlIGlnbm9yZWQ7IHdlJ2xsCiAJ CSAqIHN0YXJ0IGEgbmV3IG9uZSBhdCB0aGUgbmV4dCBpdGVyYXRpb24gb2YgdGhlIHBvc3RtYXN0 ZXIncyBtYWluCkBAIC0zNjM4LDYgKzM2NjUsMTggQEAgSGFuZGxlQ2hpbGRDcmFzaChpbnQgcGlk LCBpbnQgZXhpdHN0YXR1cywgY29uc3QgY2hhciAqcHJvY25hbWUpCiAJCXNpZ25hbF9jaGlsZChX YWxSZWNlaXZlclBJRCwgKFNlbmRTdG9wID8gU0lHU1RPUCA6IFNJR1FVSVQpKTsKIAl9CiAKKwkv KiBUYWtlIGNhcmUgb2YgdGhlIFdBTCBhbGxvY2F0b3IgdG9vICovCisJaWYgKHBpZCA9PSBXYWxB bGxvY2F0b3JQSUQpCisJCVdhbEFsbG9jYXRvclBJRCA9IDA7CisJZWxzZSBpZiAoV2FsQWxsb2Nh dG9yUElEICE9IDAgJiYgdGFrZV9hY3Rpb24pCisJeworCQllcmVwb3J0KERFQlVHMiwKKwkJCQko ZXJybXNnX2ludGVybmFsKCJzZW5kaW5nICVzIHRvIHByb2Nlc3MgJWQiLAorCQkJCQkJCQkgKFNl bmRTdG9wID8gIlNJR1NUT1AiIDogIlNJR1FVSVQiKSwKKwkJCQkJCQkJIChpbnQpIFdhbEFsbG9j YXRvclBJRCkpKTsKKwkJc2lnbmFsX2NoaWxkKFdhbEFsbG9jYXRvclBJRCwgKFNlbmRTdG9wID8g U0lHU1RPUCA6IFNJR1FVSVQpKTsKKwl9CisKIAkvKiBUYWtlIGNhcmUgb2YgdGhlIGF1dG92YWN1 dW0gbGF1bmNoZXIgdG9vICovCiAJaWYgKHBpZCA9PSBBdXRvVmFjUElEKQogCQlBdXRvVmFjUElE ID0gMDsKQEAgLTM4MjUsNiArMzg2NCw4IEBAIFBvc3RtYXN0ZXJTdGF0ZU1hY2hpbmUodm9pZCkK IAkJCXNpZ25hbF9jaGlsZChTdGFydHVwUElELCBTSUdURVJNKTsKIAkJaWYgKFdhbFJlY2VpdmVy UElEICE9IDApCiAJCQlzaWduYWxfY2hpbGQoV2FsUmVjZWl2ZXJQSUQsIFNJR1RFUk0pOworCQlp ZiAoV2FsQWxsb2NhdG9yUElEICE9IDApCisJCQlzaWduYWxfY2hpbGQoV2FsQWxsb2NhdG9yUElE LCBTSUdURVJNKTsKIAkJLyogY2hlY2twb2ludGVyLCBhcmNoaXZlciwgc3RhdHMsIGFuZCBzeXNs b2dnZXIgbWF5IGNvbnRpbnVlIGZvciBub3cgKi8KIAogCQkvKiBOb3cgdHJhbnNpdGlvbiB0byBQ TV9XQUlUX0JBQ0tFTkRTIHN0YXRlIHRvIHdhaXQgZm9yIHRoZW0gdG8gZGllICovCkBAIC0zODU1 LDYgKzM4OTYsNyBAQCBQb3N0bWFzdGVyU3RhdGVNYWNoaW5lKHZvaWQpCiAJCQkoQ2hlY2twb2lu dGVyUElEID09IDAgfHwKIAkJCSAoIUZhdGFsRXJyb3IgJiYgU2h1dGRvd24gPCBJbW1lZGlhdGVT aHV0ZG93bikpICYmCiAJCQlXYWxXcml0ZXJQSUQgPT0gMCAmJgorCQkJV2FsQWxsb2NhdG9yUElE ID09IDAgJiYKIAkJCUF1dG9WYWNQSUQgPT0gMCkKIAkJewogCQkJaWYgKFNodXRkb3duID49IElt bWVkaWF0ZVNodXRkb3duIHx8IEZhdGFsRXJyb3IpCkBAIC0zOTQ4LDYgKzM5OTAsNyBAQCBQb3N0 bWFzdGVyU3RhdGVNYWNoaW5lKHZvaWQpCiAJCQlBc3NlcnQoQmdXcml0ZXJQSUQgPT0gMCk7CiAJ CQlBc3NlcnQoQ2hlY2twb2ludGVyUElEID09IDApOwogCQkJQXNzZXJ0KFdhbFdyaXRlclBJRCA9 PSAwKTsKKwkJCUFzc2VydChXYWxBbGxvY2F0b3JQSUQgPT0gMCk7CiAJCQlBc3NlcnQoQXV0b1Zh Y1BJRCA9PSAwKTsKIAkJCS8qIHN5c2xvZ2dlciBpcyBub3QgY29uc2lkZXJlZCBoZXJlICovCiAJ CQlwbVN0YXRlID0gUE1fTk9fQ0hJTERSRU47CkBAIC00MTU2LDYgKzQxOTksOCBAQCBUZXJtaW5h dGVDaGlsZHJlbihpbnQgc2lnbmFsKQogCQlzaWduYWxfY2hpbGQoV2FsV3JpdGVyUElELCBzaWdu YWwpOwogCWlmIChXYWxSZWNlaXZlclBJRCAhPSAwKQogCQlzaWduYWxfY2hpbGQoV2FsUmVjZWl2 ZXJQSUQsIHNpZ25hbCk7CisJaWYgKFdhbEFsbG9jYXRvclBJRCAhPSAwKQorCQlzaWduYWxfY2hp bGQoV2FsQWxsb2NhdG9yUElELCBzaWduYWwpOwogCWlmIChBdXRvVmFjUElEICE9IDApCiAJCXNp Z25hbF9jaGlsZChBdXRvVmFjUElELCBzaWduYWwpOwogCWlmIChQZ0FyY2hQSUQgIT0gMCkKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2FsX2FsbG9jYXRvci5jIGIvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci93YWxfYWxsb2NhdG9yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uMzhjZWJmNzk1MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvd2FsX2FsbG9jYXRvci5jCkBAIC0wLDAgKzEsMzE1IEBACisvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqCisgKiB3YWxfYWxsb2NhdG9yLmMKKyAqCisgKiBUaGUgV0FMIGFsbG9jYXRv ciBpcyBuZXcgYXMgb2YgUG9zdGdyZXMgMTUuICBJdCBhdHRlbXB0cyB0byBrZWVwIHJlZ3VsYXIK KyAqIGJhY2tlbmRzIGZyb20gaGF2aW5nIHRvIGFsbG9jYXRlIG5ldyBXQUwgc2VnbWVudHMuICBF dmVuIHdoZW4KKyAqIHdhbF9yZWN5Y2xlIGlzIGVuYWJsZWQsIHByZS1hbGxvY2F0aW5nIFdBTCBz ZWdtZW50cyBjYW4geWllbGQKKyAqIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50 cyBpbiBjZXJ0YWluIHNjZW5hcmlvcy4gIE5vdGUgdGhhdAorICogcmVndWxhciBiYWNrZW5kcyBh cmUgc3RpbGwgZW1wb3dlcmVkIHRvIGNyZWF0ZSBuZXcgV0FMIHNlZ21lbnRzIGlmIHRoZQorICog V0FMIGFsbG9jYXRvciBmYWlscyB0byBnZW5lcmF0ZSBlbm91Z2ggbmV3IHNlZ21lbnRzLgorICoK KyAqIFRoZSBXQUwgYWxsb2NhdG9yIGlzIGNvbnRyb2xsZWQgYnkgb25lIHBhcmFtZXRlcjogd2Fs X2FsbG9jYXRvcl9tYXhfc2l6ZS4KKyAqIHdhbF9hbGxvY2F0b3JfbWF4X3NpemUgc3BlY2lmaWVz IHRoZSBtYXhpbXVtIGFtb3VudCBvZiBXQUwgdG8gcHJlLQorICogYWxsb2NhdGUuICBJZiB0aGlz IHZhbHVlIGlzIG5vdCBkaXZpc2libGUgYnkgdGhlIFdBTCBzZWdtZW50IHNpemUsIGZld2VyCisg KiBXQUwgc2VnbWVudHMgd2lsbCBiZSBwcmUtYWxsb2NhdGVkLgorICoKKyAqIFRoZSBXQUwgYWxs b2NhdG9yIGlzIHN0YXJ0ZWQgYnkgdGhlIHBvc3RtYXN0ZXIgYXMgc29vbiBhcyB0aGUgc3RhcnR1 cAorICogc3VicHJvY2VzcyBmaW5pc2hlcywgb3IgYXMgc29vbiBhcyByZWNvdmVyeSBiZWdpbnMg aWYgd2UgYXJlIGRvaW5nCisgKiBhcmNoaXZlIHJlY292ZXJ5LiAgSXQgcmVtYWlucyBhbGl2ZSB1 bnRpbCB0aGUgcG9zdG1hc3RlciBjb21tYW5kcyBpdCB0bworICogdGVybWluYXRlLiAgTm9ybWFs IHRlcm1pbmF0aW9uIGlzIGJ5IFNJR1RFUk0sIHdoaWNoIGluc3RydWN0cyB0aGUKKyAqIFdBTCBh bGxvY2F0b3IgdG8gZXhpdCgwKS4gIEVtZXJnZW5jeSB0ZXJtaW5hdGlvbiBpcyBieSBTSUdRVUlU OyBsaWtlIGFueQorICogYmFja2VuZCwgdGhlIFdBTCBhbGxvY2F0b3Igd2lsbCBzaW1wbHkgYWJv cnQgYW5kIGV4aXQgb24gU0lHUVVJVC4KKyAqCisgKiBJZiB0aGUgV0FMIGFsbG9jYXRvciBleGl0 cyB1bmV4cGVjdGVkbHksIHRoZSBwb3N0bWFzdGVyIHRyZWF0cyB0aGF0IHRoZQorICogc2FtZSBh cyBhIGJhY2tlbmQgY3Jhc2g6IHNoYXJlZCBtZW1vcnkgbWF5IGJlIGNvcnJ1cHRlZCwgc28gcmVt YWluaW5nCisgKiBiYWNrZW5kcyBzaG91bGQgYmUga2lsbGVkIGJ5IFNJR1FVSVQgYW5kIHRoZW4g YSByZWNvdmVyeSBjeWNsZSBzdGFydGVkLgorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTYtMjAyMSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisg KgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxfYWxs b2NhdG9yLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVz LmgiCisKKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorCisjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIK KyNpbmNsdWRlICJhY2Nlc3MveGxvZ19pbnRlcm5hbC5oIgorI2luY2x1ZGUgImxpYnBxL3Bxc2ln bmFsLmgiCisjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1 cHQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL3dhbF9hbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJz dG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgi CisjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5j bHVkZSAic3RvcmFnZS9sd2xvY2suaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNs dWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCisj aW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCisjaW5jbHVk ZSAidXRpbHMvbWVtdXRpbHMuaCIKKworI2RlZmluZSBXQUxfQUxMT0NfVElNRU9VVF9TICg2MCkK KworLyoKKyAqIEdVQyBwYXJhbWV0ZXJzCisgKi8KK2ludAkJCXdhbF9hbGxvY19tYXhfc2l6ZV9t YiA9IDY0OworCitzdGF0aWMgdm9pZCBEb1dhbFByZUFsbG9jYXRpb24odm9pZCk7CitzdGF0aWMg dm9pZCBTY2FuRm9yRXhpc3RpbmdQcmVhbGxvY2F0ZWRTZWdtZW50cyh2b2lkKTsKKworLyoKKyAq IE1haW4gZW50cnkgcG9pbnQgZm9yIFdBTCBhbGxvY2F0b3IgcHJvY2VzcworICoKKyAqIFRoaXMg aXMgaW52b2tlZCBmcm9tIEF1eGlsaWFyeVByb2Nlc3NNYWluLCB3aGljaCBoYXMgYWxyZWFkeSBj cmVhdGVkIHRoZQorICogYmFzaWMgZXhlY3V0aW9uIGVudmlyb25tZW50LCBidXQgbm90IGVuYWJs ZWQgc2lnbmFscyB5ZXQuCisgKi8KK3ZvaWQKK1dhbEFsbG9jYXRvck1haW4odm9pZCkKK3sKKwlz aWdqbXBfYnVmCWxvY2FsX3NpZ2ptcF9idWY7CisJTWVtb3J5Q29udGV4dCB3YWxfYWxsb2NfY29u dGV4dDsKKworCS8qCisJICogUHJvcGVybHkgYWNjZXB0IG9yIGlnbm9yZSBzaWduYWxzIHRoYXQg bWlnaHQgYmUgc2VudCB0byB1cy4KKwkgKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRs ZXJGb3JDb25maWdSZWxvYWQpOworCXBxc2lnbmFsKFNJR0lOVCwgU0lHX0lHTik7CisJcHFzaWdu YWwoU0lHVEVSTSwgU2lnbmFsSGFuZGxlckZvclNodXRkb3duUmVxdWVzdCk7CisJLyogU0lHUVVJ VCBoYW5kbGVyIHdhcyBhbHJlYWR5IHNldCB1cCBieSBJbml0UG9zdG1hc3RlckNoaWxkICovCisJ cHFzaWduYWwoU0lHQUxSTSwgU0lHX0lHTik7CisJcHFzaWduYWwoU0lHUElQRSwgU0lHX0lHTik7 CisJcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOworCXBxc2ln bmFsKFNJR1VTUjIsIFNJR19JR04pOworCisJLyoKKwkgKiBSZXNldCBzb21lIHNpZ25hbHMgdGhh dCBhcmUgYWNjZXB0ZWQgYnkgcG9zdG1hc3RlciBidXQgbm90IGhlcmUKKwkgKi8KKwlwcXNpZ25h bChTSUdDSExELCBTSUdfREZMKTsKKworCS8qCisJICogQ3JlYXRlIGEgbWVtb3J5IGNvbnRleHQg dGhhdCB3ZSB3aWxsIGRvIGFsbCBvdXIgd29yayBpbi4gIFdlIGRvIHRoaXMgc28KKwkgKiB0aGF0 IHdlIGNhbiByZXNldCB0aGUgY29udGV4dCBkdXJpbmcgZXJyb3IgcmVjb3ZlcnkgYW5kIHRoZXJl YnkgYXZvaWQKKwkgKiBwb3NzaWJsZSBtZW1vcnkgbGVha3MuCisJICovCisJd2FsX2FsbG9jX2Nv bnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9wTWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJ CQkJICAiV0FMIEFsbG9jYXRvciIsCisJCQkJCQkJCQkJCSAgQUxMT0NTRVRfREVGQVVMVF9TSVpF Uyk7CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKHdhbF9hbGxvY19jb250ZXh0KTsKKworCS8qCisJ ICogSWYgYW4gZXhjZXB0aW9uIGlzIGVuY291bnRlcmVkLCBwcm9jZXNzaW5nIHJlc3VtZXMgaGVy ZS4KKwkgKgorCSAqIFlvdSBtaWdodCB3b25kZXIgd2h5IHRoaXMgaXNuJ3QgY29kZWQgYXMgYW4g aW5maW5pdGUgbG9vcCBhcm91bmQgYQorCSAqIFBHX1RSWSBjb25zdHJ1Y3QuICBUaGUgcmVhc29u IGlzIHRoYXQgdGhpcyBpcyB0aGUgYm90dG9tIG9mIHRoZQorCSAqIGV4Y2VwdGlvbiBzdGFjaywg YW5kIHNvIHdpdGggUEdfVFJZIHRoZXJlIHdvdWxkIGJlIG5vIGV4Y2VwdGlvbiBoYW5kbGVyCisJ ICogaW4gZm9yY2UgYXQgYWxsIGR1cmluZyB0aGUgQ0FUQ0ggcGFydC4gIEJ5IGxlYXZpbmcgdGhl IG91dGVybW9zdCBzZXRqbXAKKwkgKiBhbHdheXMgYWN0aXZlLCB3ZSBoYXZlIGF0IGxlYXN0IHNv bWUgY2hhbmNlIG9mIHJlY292ZXJpbmcgZnJvbSBhbiBlcnJvcgorCSAqIGR1cmluZyBlcnJvciBy ZWNvdmVyeS4gIChJZiB3ZSBnZXQgaW50byBhbiBpbmZpbml0ZSBsb29wIHRoZXJlYnksIGl0CisJ ICogd2lsbCBzb29uIGJlIHN0b3BwZWQgYnkgb3ZlcmZsb3cgb2YgZWxvZy5jJ3MgaW50ZXJuYWwg c3RhdGUgc3RhY2suKQorCSAqCisJICogTm90ZSB0aGF0IHdlIHVzZSBzaWdzZXRqbXAoLi4uLCAx KSwgc28gdGhhdCB0aGUgcHJldmFpbGluZyBzaWduYWwgbWFzaworCSAqICh0byB3aXQsIEJsb2Nr U2lnKSB3aWxsIGJlIHJlc3RvcmVkIHdoZW4gbG9uZ2ptcCdpbmcgdG8gaGVyZS4gIFRodXMsCisJ ICogc2lnbmFscyBvdGhlciB0aGFuIFNJR1FVSVQgd2lsbCBiZSBibG9ja2VkIHVudGlsIHdlIGNv bXBsZXRlIGVycm9yCisJICogcmVjb3ZlcnkuICBJdCBtaWdodCBzZWVtIHRoYXQgdGhpcyBwb2xp Y3kgbWFrZXMgdGhlIEhPTERfSU5URVJSVVBUUygpCisJICogY2FsbCByZWR1bmRhbnQsIGJ1dCBp dCBpcyBub3Qgc2luY2UgSW50ZXJydXB0UGVuZGluZyBtaWdodCBiZSBzZXQKKwkgKiBhbHJlYWR5 LgorCSAqLworCWlmIChzaWdzZXRqbXAobG9jYWxfc2lnam1wX2J1ZiwgMSkgIT0gMCkKKwl7CisJ CS8qIFNpbmNlIG5vdCB1c2luZyBQR19UUlksIG11c3QgcmVzZXQgZXJyb3Igc3RhY2sgYnkgaGFu ZCAqLworCQllcnJvcl9jb250ZXh0X3N0YWNrID0gTlVMTDsKKworCQkvKiBQcmV2ZW50IGludGVy cnVwdHMgd2hpbGUgY2xlYW5pbmcgdXAgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJLyog UmVwb3J0IHRoZSBlcnJvciB0byB0aGUgc2VydmVyIGxvZyAqLworCQlFbWl0RXJyb3JSZXBvcnQo KTsKKworCQkvKgorCQkgKiBUaGVzZSBvcGVyYXRpb25zIGFyZSByZWFsbHkganVzdCBhIG1pbmlt YWwgc3Vic2V0IG9mCisJCSAqIEFib3J0VHJhbnNhY3Rpb24oKS4gIFdlIGRvbid0IGhhdmUgdmVy eSBtYW55IHJlc291cmNlcyB0byB3b3JyeQorCQkgKiBhYm91dC4KKwkJICovCisJCUxXTG9ja1Jl bGVhc2VBbGwoKTsKKwkJQ29uZGl0aW9uVmFyaWFibGVDYW5jZWxTbGVlcCgpOworCQlwZ3N0YXRf cmVwb3J0X3dhaXRfZW5kKCk7CisJCUFib3J0QnVmZmVySU8oKTsKKwkJVW5sb2NrQnVmZmVycygp OworCQlSZWxlYXNlQXV4UHJvY2Vzc1Jlc291cmNlcyhmYWxzZSk7CisJCUF0RU9YYWN0X0J1ZmZl cnMoZmFsc2UpOworCQlBdEVPWGFjdF9TTWdyKCk7CisJCUF0RU9YYWN0X0ZpbGVzKGZhbHNlKTsK KwkJQXRFT1hhY3RfSGFzaFRhYmxlcyhmYWxzZSk7CisKKwkJLyoKKwkJICogTm93IHJldHVybiB0 byBub3JtYWwgdG9wLWxldmVsIGNvbnRleHQgYW5kIGNsZWFyIEVycm9yQ29udGV4dCBmb3IKKwkJ ICogbmV4dCB0aW1lLgorCQkgKi8KKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKHdhbF9hbGxvY19j b250ZXh0KTsKKwkJRmx1c2hFcnJvclN0YXRlKCk7CisKKwkJLyogRmx1c2ggYW55IGxlYWtlZCBk YXRhIGluIHRoZSB0b3AtbGV2ZWwgY29udGV4dCAqLworCQlNZW1vcnlDb250ZXh0UmVzZXRBbmRE ZWxldGVDaGlsZHJlbih3YWxfYWxsb2NfY29udGV4dCk7CisKKwkJLyogTm93IHdlIGNhbiBhbGxv dyBpbnRlcnJ1cHRzIGFnYWluICovCisJCVJFU1VNRV9JTlRFUlJVUFRTKCk7CisKKwkJLyoKKwkJ ICogU2xlZXAgYXQgbGVhc3QgMSBzZWNvbmQgYWZ0ZXIgYW55IGVycm9yLiAgQSB3cml0ZSBlcnJv ciBpcyBsaWtlbHkKKwkJICogdG8gYmUgcmVwZWF0ZWQsIGFuZCB3ZSBkb24ndCB3YW50IHRvIGJl IGZpbGxpbmcgdGhlIGVycm9yIGxvZ3MgYXMKKwkJICogZmFzdCBhcyB3ZSBjYW4uCisJCSAqLwor CQlwZ191c2xlZXAoMTAwMDAwMEwpOworCisJCS8qCisJCSAqIENsb3NlIGFsbCBvcGVuIGZpbGVz IGFmdGVyIGFueSBlcnJvci4gIFRoaXMgaXMgaGVscGZ1bCBvbiBXaW5kb3dzLAorCQkgKiB3aGVy ZSBob2xkaW5nIGRlbGV0ZWQgZmlsZXMgb3BlbiBjYXVzZXMgdmFyaW91cyBzdHJhbmdlIGVycm9y cy4KKwkJICogSXQncyBub3QgY2xlYXIgd2UgbmVlZCBpdCBlbHNld2hlcmUsIGJ1dCBzaG91bGRu J3QgaHVydC4KKwkJICovCisJCXNtZ3JjbG9zZWFsbCgpOworCisJCS8qIFJlcG9ydCB3YWl0IGVu ZCBoZXJlLCB3aGVuIHRoZXJlIGlzIG5vIGZ1cnRoZXIgcG9zc2liaWxpdHkgb2Ygd2FpdCAqLwor CQlwZ3N0YXRfcmVwb3J0X3dhaXRfZW5kKCk7CisJfQorCisJLyogV2UgY2FuIG5vdyBoYW5kbGUg ZXJlcG9ydChFUlJPUikgKi8KKwlQR19leGNlcHRpb25fc3RhY2sgPSAmbG9jYWxfc2lnam1wX2J1 ZjsKKworCS8qCisJICogVW5ibG9jayBzaWduYWxzICh0aGV5IHdlcmUgYmxvY2tlZCB3aGVuIHRo ZSBwb3N0bWFzdGVyIGZvcmtlZCB1cykKKwkgKi8KKwlQR19TRVRNQVNLKCZVbkJsb2NrU2lnKTsK KworCS8qCisJICogQWR2ZXJ0aXNlIG91ciBsYXRjaCB0aGF0IGJhY2tlbmRzIGNhbiB1c2UgdG8g d2FrZSB1cyB1cCB3aGlsZSB3ZSdyZQorCSAqIHNsZWVwaW5nLgorCSAqLworCVByb2NHbG9iYWwt PndhbEFsbG9jYXRvckxhdGNoID0gJk15UHJvYy0+cHJvY0xhdGNoOworCisJLyoKKwkgKiBCZWZv cmUgd2UgZ28gaW50byB0aGUgbWFpbiBsb29wLCBzY2FuIHRoZSBwcmUtYWxsb2NhdGVkIHNlZ21l bnRzCisJICogZGlyZWN0b3J5IGFuZCBsb29rIGZvciBhbnl0aGluZyB0aGF0IHdhcyBsZWZ0IG92 ZXIgZnJvbSB0aGUgbGFzdCB0aW1lLgorCSAqLworCVNjYW5Gb3JFeGlzdGluZ1ByZWFsbG9jYXRl ZFNlZ21lbnRzKCk7CisKKwkvKgorCSAqIExvb3AgZm9yZXZlcgorCSAqLworCWZvciAoOzspCisJ eworCQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KKwkJUmVzZXRMYXRj aChNeUxhdGNoKTsKKworCQlIYW5kbGVNYWluTG9vcEludGVycnVwdHMoKTsKKworCQlEb1dhbFBy ZUFsbG9jYXRpb24oKTsKKworCQkvKiBYWFg6IFNlbmQgYWN0aXZpdHkgc3RhdGlzdGljcyB0byB0 aGUgc3RhdHMgY29sbGVjdG9yICovCisKKwkJLyogU2xlZXAgdW50aWwgd2UgYXJlIHNpZ25hbGVk IG9yIFdBTF9BTExPQ19USU1FT1VUX1MgaGFzIGVsYXBzZWQuICovCisJCSh2b2lkKSBXYWl0TGF0 Y2goTXlMYXRjaCwKKwkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9P Tl9QTV9ERUFUSCwKKwkJCQkJCSBXQUxfQUxMT0NfVElNRU9VVF9TICogMTAwMEwgLyogY29udmVy dCB0byBtcyAqLywKKwkJCQkJCSBXQUlUX0VWRU5UX1dBTF9BTExPQ0FUT1JfTUFJTik7CisJfQor CisJcGdfdW5yZWFjaGFibGUoKTsKK30KKworLyoKKyAqIERvV2FsUHJlQWxsb2NhdGlvbgorICoK KyAqIFRyaWVzIHRvIGFsbG9jYXRlIHVwIHRvIHdhbF9hbGxvY2F0b3JfbWF4X3NpemUgd29ydGgg b2YgV0FMLgorICovCitzdGF0aWMgdm9pZAorRG9XYWxQcmVBbGxvY2F0aW9uKHZvaWQpCit7CisJ aW50CQltYXhfcHJlYWxsb2Nfc2VnczsKKworCW1heF9wcmVhbGxvY19zZWdzID0gd2FsX2FsbG9j X21heF9zaXplX21iIC8gKHdhbF9zZWdtZW50X3NpemUgLyAoMTAyNCAqIDEwMjQpKTsKKworCXdo aWxlICghU2h1dGRvd25SZXF1ZXN0UGVuZGluZyAmJgorCQkgICBHZXROdW1QcmVhbGxvY2F0ZWRX YWxTZWdzKCkgPCBtYXhfcHJlYWxsb2Nfc2VncykKKwl7CisJCWNoYXIgdG1wcGF0aFtNQVhQR1BB VEhdOworCisJCXNucHJpbnRmKHRtcHBhdGgsIE1BWFBHUEFUSCwgIiVzL3ByZWFsbG9jYXRlZF9z ZWdtZW50cy94bG9ndGVtcCIsIFhMT0dESVIpOworCQlDcmVhdGVFbXB0eVdhbFNlZ21lbnQodG1w cGF0aCk7CisJCUluc3RhbGxQcmVhbGxvY2F0ZWRXYWxTZWcodG1wcGF0aCk7CisJCWVsb2coREVC VUcyLCAicHJlLWFsbG9jYXRlZCBXQUwgc2VnbWVudCIpOworCisJCWlmIChDb25maWdSZWxvYWRQ ZW5kaW5nKQorCQl7CisJCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CisJCQlQcm9jZXNz Q29uZmlnRmlsZShQR0NfU0lHSFVQKTsKKworCQkJbWF4X3ByZWFsbG9jX3NlZ3MgPSB3YWxfYWxs b2NfbWF4X3NpemVfbWIgLyAod2FsX3NlZ21lbnRfc2l6ZSAvICgxMDI0ICogMTAyNCkpOworCQl9 CisJfQorfQorCisvKgorICogU2NhbkZvckV4aXN0aW5nUHJlYWxsb2NhdGVkU2VnbWVudHMKKyAq CisgKiBUaGlzIGZ1bmN0aW9uIHNlYXJjaGVzIHRocm91Z2ggcGdfd2FsL3ByZWFsbG9jYXRlZF9z ZWdtZW50cyBmb3IgYW55IHNlZ21lbnRzCisgKiB0aGF0IHdlcmUgbGVmdCBvdmVyIGZyb20gYSBw cmV2aW91cyBXQUwgYWxsb2NhdG9yIHByb2Nlc3MgYW5kIHNldHMgdGhlCisgKiB0cmFja2luZyB2 YXJpYWJsZSBpbiBzaGFyZWQgbWVtb3J5IGFjY29yZGluZ2x5LgorICovCitzdGF0aWMgdm9pZAor U2NhbkZvckV4aXN0aW5nUHJlYWxsb2NhdGVkU2VnbWVudHModm9pZCkKK3sKKwlpbnQgaSA9IDA7 CisKKwkvKgorCSAqIGZzeW5jIHRoZSBwcmVhbGxvY2F0ZWRfc2VnbWVudHMgZGlyZWN0b3J5IGlu IGNhc2UgYW55IHJlbmFtZXMgaGF2ZSB5ZXQgdG8KKwkgKiBiZSBmbHVzaGVkIHRvIGRpc2suICBU aGlzIGlzIHByb2JhYmx5IG5vdCByZWFsbHkgbmVjZXNzYXJ5LCBidXQgaXQgc2VlbXMKKwkgKiBu aWNlIHRvIGtub3cgdGhhdCBhbGwgdGhlIHNlZ21lbnRzIHdlIGZpbmQgYXJlIHJlYWxseSB3aGVy ZSB3ZSB0aGluayB0aGV5CisJICogYXJlLgorCSAqLworCWZzeW5jX2ZuYW1lX2V4dChYTE9HRElS ICIvcHJlYWxsb2NhdGVkX3NlZ21lbnRzIiwgdHJ1ZSwgZmFsc2UsIEZBVEFMKTsKKworCS8qCisJ ICogR2F0aGVyIGFsbCB0aGUgcHJlYWxsb2NhdGVkIHNlZ21lbnRzIHdlIGNhbiBmaW5kLgorCSAq LworCXdoaWxlICh0cnVlKQorCXsKKwkJRklMRSAqZmQ7CisJCWNoYXIgcGF0aFtNQVhQR1BBVEhd OworCisJCXNucHJpbnRmKHBhdGgsIE1BWFBHUEFUSCwgIiVzL3ByZWFsbG9jYXRlZF9zZWdtZW50 cy94bG9ndGVtcC4lZCIsCisJCQkJIFhMT0dESVIsIGkpOworCisJCWZkID0gQWxsb2NhdGVGaWxl KHBhdGgsICJyIik7CisJCWlmIChmZCAhPSBOVUxMKQorCQl7CisJCQlGcmVlRmlsZShmZCk7CisJ CQlpKys7CisJCX0KKwkJZWxzZQorCQl7CisJCQlpZiAoZXJybm8gIT0gRU5PRU5UKQorCQkJCWVy ZXBvcnQoRkFUQUwsCisJCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKKwkJCQkJCSBl cnJtc2coImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlbSIsIHBhdGgpKSk7CisJCQlicmVh azsKKwkJfQorCX0KKworCVNldE51bVByZWFsbG9jYXRlZFdhbFNlZ3MoaSk7CisJZWxvZyhERUJV RzIsICJmb3VuZCAlZCBwcmVhbGxvY2F0ZWQgc2VnbWVudHMgZHVyaW5nIHN0YXJ0dXAiLCBpKTsK K30KKworYm9vbAorV2FsUHJlYWxsb2NhdGlvbkVuYWJsZWQodm9pZCkKK3sKKwlyZXR1cm4gd2Fs X2FsbG9jX21heF9zaXplX21iID49IHdhbF9zZWdtZW50X3NpemUgLyAoMTAyNCAqIDEwMjQpOwor fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vYmFzZWJhY2t1cC5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vYmFzZWJhY2t1cC5jCmluZGV4IGUwOTEwOGQwZWMuLmM5YTkx ZGM5MzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXAuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9iYXNlYmFja3VwLmMKQEAgLTEzOTksMTEgKzEz OTksMTMgQEAgc2VuZERpcihjb25zdCBjaGFyICpwYXRoLCBpbnQgYmFzZXBhdGhsZW4sIGJvb2wg c2l6ZW9ubHksIExpc3QgKnRhYmxlc3BhY2VzLAogCQkJc2l6ZSArPSBfdGFyV3JpdGVEaXIocGF0 aGJ1ZiwgYmFzZXBhdGhsZW4sICZzdGF0YnVmLCBzaXplb25seSk7CiAKIAkJCS8qCi0JCQkgKiBB bHNvIHNlbmQgYXJjaGl2ZV9zdGF0dXMgZGlyZWN0b3J5IChieSBoYWNraXNobHkgcmV1c2luZwot CQkJICogc3RhdGJ1ZiBmcm9tIGFib3ZlIC4uLikuCisJCQkgKiBBbHNvIHNlbmQgYXJjaGl2ZV9z dGF0dXMgYW5kIHByZWFsbG9jYXRlZF9zZWdtZW50cyAoYnkgaGFja2lzaGx5CisJCQkgKiByZXVz aW5nIHN0YXRidWYgZnJvbSBhYm92ZSAuLi4pLgogCQkJICovCiAJCQlzaXplICs9IF90YXJXcml0 ZUhlYWRlcigiLi9wZ193YWwvYXJjaGl2ZV9zdGF0dXMiLCBOVUxMLCAmc3RhdGJ1ZiwKIAkJCQkJ CQkJCXNpemVvbmx5KTsKKwkJCXNpemUgKz0gX3RhcldyaXRlSGVhZGVyKCIuL3BnX3dhbC9wcmVh bGxvY2F0ZWRfc2VnbWVudHMiLCBOVUxMLAorCQkJCQkJCQkJJnN0YXRidWYsIHNpemVvbmx5KTsK IAogCQkJY29udGludWU7CQkJLyogZG9uJ3QgcmVjdXJzZSBpbnRvIHBnX3dhbCAqLwogCQl9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvZmQuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvZmlsZS9mZC5jCmluZGV4IGY5Y2RhNjkwNmQuLmU1YWMzNGE1MzkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv ZmlsZS9mZC5jCkBAIC03Niw2ICs3Niw3IEBACiAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KICNpbmNs dWRlIDxzeXMvcGFyYW0uaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90 aW1lLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWZuZGVmIFdJTjMyCiAjaW5jbHVkZSA8 c3lzL21tYW4uaD4KQEAgLTM4NzAsMyArMzg3MSwxMTcgQEAgcGdfcHdyaXRldl93aXRoX3JldHJ5 KGludCBmZCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZjbnQsIG9mZl90IG9mZnNl dCkKIAogCXJldHVybiBzdW07CiB9CisKKy8qCisgKiBDcmVhdGVFbXB0eVdhbFNlZ21lbnQKKyAq CisgKiBDcmVhdGUgYSBuZXcgZmlsZSB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgbmV3IFdBTCBzZWdt ZW50LiAgVGhlIGNhbGxlciBpcworICogcmVzcG9uc2libGUgZm9yIGluc3RhbGxpbmcgdGhlIG5l dyBmaWxlIGluIHBnX3dhbC4KKyAqLwordm9pZAorQ3JlYXRlRW1wdHlXYWxTZWdtZW50KGNvbnN0 IGNoYXIgKnBhdGgpCit7CisJUEdBbGlnbmVkWExvZ0Jsb2NrIHpidWZmZXI7CisJaW50CQkJZmQ7 CisJaW50CQkJc2F2ZV9lcnJubzsKKworCXVubGluayhwYXRoKTsKKworCS8qIGRvIG5vdCB1c2Ug Z2V0X3N5bmNfYml0KCkgaGVyZSAtLS0gd2FudCB0byBmc3luYyBvbmx5IGF0IGVuZCBvZiBmaWxs ICovCisJZmQgPSBCYXNpY09wZW5GaWxlKHBhdGgsIE9fUkRXUiB8IE9fQ1JFQVQgfCBPX0VYQ0wg fCBQR19CSU5BUlkpOworCWlmIChmZCA8IDApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGVfZm9yX2ZpbGVfYWNjZXNzKCksCisJCQkJIGVycm1zZygiY291bGQgbm90IGNyZWF0ZSBmaWxl IFwiJXNcIjogJW0iLCBwYXRoKSkpOworCisJbWVtc2V0KHpidWZmZXIuZGF0YSwgMCwgWExPR19C TENLU1opOworCisJcGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KFdBSVRfRVZFTlRfV0FMX0lOSVRf V1JJVEUpOworCXNhdmVfZXJybm8gPSAwOworCWlmICh3YWxfaW5pdF96ZXJvKQorCXsKKwkJc3Ry dWN0IGlvdmVjIGlvdltQR19JT1ZfTUFYXTsKKwkJaW50CQkJYmxvY2tzOworCisJCS8qCisJCSAq IFplcm8tZmlsbCB0aGUgZmlsZS4gIFdpdGggdGhpcyBzZXR0aW5nLCB3ZSBkbyB0aGlzIHRoZSBo YXJkIHdheSB0bworCQkgKiBlbnN1cmUgdGhhdCBhbGwgdGhlIGZpbGUgc3BhY2UgaGFzIHJlYWxs eSBiZWVuIGFsbG9jYXRlZC4gIE9uCisJCSAqIHBsYXRmb3JtcyB0aGF0IGFsbG93ICJob2xlcyIg aW4gZmlsZXMsIGp1c3Qgc2Vla2luZyB0byB0aGUgZW5kCisJCSAqIGRvZXNuJ3QgYWxsb2NhdGUg aW50ZXJtZWRpYXRlIHNwYWNlLiAgVGhpcyB3YXksIHdlIGtub3cgdGhhdCB3ZQorCQkgKiBoYXZl IGFsbCB0aGUgc3BhY2UgYW5kIChhZnRlciB0aGUgZnN5bmMgYmVsb3cpIHRoYXQgYWxsIHRoZQor CQkgKiBpbmRpcmVjdCBibG9ja3MgYXJlIGRvd24gb24gZGlzay4gIFRoZXJlZm9yZSwgZmRhdGFz eW5jKDIpIG9yCisJCSAqIE9fRFNZTkMgd2lsbCBiZSBzdWZmaWNpZW50IHRvIHN5bmMgZnV0dXJl IHdyaXRlcyB0byB0aGUgbG9nIGZpbGUuCisJCSAqLworCisJCS8qIFByZXBhcmUgdG8gd3JpdGUg b3V0IGEgbG90IG9mIGNvcGllcyBvZiBvdXIgemVybyBidWZmZXIgYXQgb25jZS4gKi8KKwkJZm9y IChpbnQgaSA9IDA7IGkgPCBsZW5ndGhvZihpb3YpOyArK2kpCisJCXsKKwkJCWlvdltpXS5pb3Zf YmFzZSA9IHpidWZmZXIuZGF0YTsKKwkJCWlvdltpXS5pb3ZfbGVuID0gWExPR19CTENLU1o7CisJ CX0KKworCQkvKiBMb29wLCB3cml0aW5nIGFzIG1hbnkgYmxvY2tzIGFzIHdlIGNhbiBmb3IgZWFj aCBzeXN0ZW0gY2FsbC4gKi8KKwkJYmxvY2tzID0gd2FsX3NlZ21lbnRfc2l6ZSAvIFhMT0dfQkxD S1NaOworCQlmb3IgKGludCBpID0gMDsgaSA8IGJsb2NrczspCisJCXsKKwkJCWludAkJCWlvdmNu dCA9IE1pbihibG9ja3MgLSBpLCBsZW5ndGhvZihpb3YpKTsKKwkJCW9mZl90CQlvZmZzZXQgPSBp ICogWExPR19CTENLU1o7CisKKwkJCWlmIChwZ19wd3JpdGV2X3dpdGhfcmV0cnkoZmQsIGlvdiwg aW92Y250LCBvZmZzZXQpIDwgMCkKKwkJCXsKKwkJCQlzYXZlX2Vycm5vID0gZXJybm87CisJCQkJ YnJlYWs7CisJCQl9CisKKwkJCWkgKz0gaW92Y250OworCQl9CisJfQorCWVsc2UKKwl7CisJCS8q CisJCSAqIE90aGVyd2lzZSwgc2Vla2luZyB0byB0aGUgZW5kIGFuZCB3cml0aW5nIGEgc29saXRh cnkgYnl0ZSBpcworCQkgKiBlbm91Z2guCisJCSAqLworCQllcnJubyA9IDA7CisJCWlmIChwZ19w d3JpdGUoZmQsIHpidWZmZXIuZGF0YSwgMSwgd2FsX3NlZ21lbnRfc2l6ZSAtIDEpICE9IDEpCisJ CXsKKwkJCS8qIGlmIHdyaXRlIGRpZG4ndCBzZXQgZXJybm8sIGFzc3VtZSBubyBkaXNrIHNwYWNl ICovCisJCQlzYXZlX2Vycm5vID0gZXJybm8gPyBlcnJubyA6IEVOT1NQQzsKKwkJfQorCX0KKwlw Z3N0YXRfcmVwb3J0X3dhaXRfZW5kKCk7CisKKwlpZiAoc2F2ZV9lcnJubykKKwl7CisJCS8qCisJ CSAqIElmIHdlIGZhaWwgdG8gbWFrZSB0aGUgZmlsZSwgZGVsZXRlIGl0IHRvIHJlbGVhc2UgZGlz ayBzcGFjZQorCQkgKi8KKwkJdW5saW5rKHBhdGgpOworCisJCWNsb3NlKGZkKTsKKworCQllcnJu byA9IHNhdmVfZXJybm87CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZV9mb3JfZmls ZV9hY2Nlc3MoKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3Qgd3JpdGUgdG8gZmlsZSBcIiVzXCI6 ICVtIiwgcGF0aCkpKTsKKwl9CisKKwlwZ3N0YXRfcmVwb3J0X3dhaXRfc3RhcnQoV0FJVF9FVkVO VF9XQUxfSU5JVF9TWU5DKTsKKwlpZiAocGdfZnN5bmMoZmQpICE9IDApCisJeworCQlpbnQJCQlz YXZlX2Vycm5vID0gZXJybm87CisKKwkJY2xvc2UoZmQpOworCQllcnJubyA9IHNhdmVfZXJybm87 CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCisJCQkJ IGVycm1zZygiY291bGQgbm90IGZzeW5jIGZpbGUgXCIlc1wiOiAlbSIsIHBhdGgpKSk7CisJfQor CXBnc3RhdF9yZXBvcnRfd2FpdF9lbmQoKTsKKworCWlmIChjbG9zZShmZCkgIT0gMCkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKKwkJCQkgZXJybXNn KCJjb3VsZCBub3QgY2xvc2UgZmlsZSBcIiVzXCI6ICVtIiwgcGF0aCkpKTsKK30KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2tuYW1lcy50eHQgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvbHdsb2NrbmFtZXMudHh0CmluZGV4IDZjN2NmNmMyOTUuLjIxMmJkYThl N2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2tuYW1lcy50eHQK KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9ja25hbWVzLnR4dApAQCAtNTMsMyAr NTMsNCBAQCBYYWN0VHJ1bmNhdGlvbkxvY2sJCQkJCTQ0CiAjIDQ1IHdhcyBYYWN0VHJ1bmNhdGlv bkxvY2sgdW50aWwgcmVtb3ZhbCBvZiBCYWNrZW5kUmFuZG9tTG9jawogV3JhcExpbWl0c1ZhY3V1 bUxvY2sJCQkJNDYKIE5vdGlmeVF1ZXVlVGFpbExvY2sJCQkJCTQ3CitXQUxQcmVhbGxvY2F0aW9u TG9jawkJCQk0OApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5kZXggYjdkOWRhMGFhOS4uNTc5MGQ1 ODZlZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYworKysgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCkBAIC0xODEsNiArMTgxLDcgQEAgSW5pdFBy b2NHbG9iYWwodm9pZCkKIAlQcm9jR2xvYmFsLT5zdGFydHVwUHJvY1BpZCA9IDA7CiAJUHJvY0ds b2JhbC0+c3RhcnR1cEJ1ZmZlclBpbldhaXRCdWZJZCA9IC0xOwogCVByb2NHbG9iYWwtPndhbHdy aXRlckxhdGNoID0gTlVMTDsKKwlQcm9jR2xvYmFsLT53YWxBbGxvY2F0b3JMYXRjaCA9IE5VTEw7 CiAJUHJvY0dsb2JhbC0+Y2hlY2twb2ludGVyTGF0Y2ggPSBOVUxMOwogCXBnX2F0b21pY19pbml0 X3UzMigmUHJvY0dsb2JhbC0+cHJvY0FycmF5R3JvdXBGaXJzdCwgSU5WQUxJRF9QR1BST0NOTyk7 CiAJcGdfYXRvbWljX2luaXRfdTMyKCZQcm9jR2xvYmFsLT5jbG9nR3JvdXBGaXJzdCwgSU5WQUxJ RF9QR1BST0NOTyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0 X2V2ZW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKaW5kZXgg ZWY3ZTZiZmI3Ny4uYTNjNDMyNGM5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRf ZXZlbnQuYwpAQCAtMjQ4LDYgKzI0OCw5IEBAIHBnc3RhdF9nZXRfd2FpdF9hY3Rpdml0eShXYWl0 RXZlbnRBY3Rpdml0eSB3KQogCQljYXNlIFdBSVRfRVZFTlRfV0FMX1dSSVRFUl9NQUlOOgogCQkJ ZXZlbnRfbmFtZSA9ICJXYWxXcml0ZXJNYWluIjsKIAkJCWJyZWFrOworCQljYXNlIFdBSVRfRVZF TlRfV0FMX0FMTE9DQVRPUl9NQUlOOgorCQkJZXZlbnRfbmFtZSA9ICJXYWxBbGxvY2F0b3JNYWlu IjsKKwkJCWJyZWFrOwogCQkJLyogbm8gZGVmYXVsdCBjYXNlLCBzbyB0aGF0IGNvbXBpbGVyIHdp bGwgd2FybiAqLwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNj aW5pdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jCmluZGV4IDg4ODAxMzc0 YjUuLjlmMTJlMThiNjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2lu aXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMKQEAgLTI4NSw2ICsy ODUsOSBAQCBHZXRCYWNrZW5kVHlwZURlc2MoQmFja2VuZFR5cGUgYmFja2VuZFR5cGUpCiAJCWNh c2UgQl9XQUxfV1JJVEVSOgogCQkJYmFja2VuZERlc2MgPSAid2Fsd3JpdGVyIjsKIAkJCWJyZWFr OworCQljYXNlIEJfV0FMX0FMTE9DQVRPUjoKKwkJCWJhY2tlbmREZXNjID0gIndhbCBhbGxvY2F0 b3IiOworCQkJYnJlYWs7CiAJCWNhc2UgQl9BUkNISVZFUjoKIAkJCWJhY2tlbmREZXNjID0gImFy Y2hpdmVyIjsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggMjMyMzZmYTRjMy4uMWVk NzE0ZDM3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVkZSAi cG9zdG1hc3Rlci9iZ3dyaXRlci5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5o IgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvc3lzbG9nZ2VyLmgiCisjaW5jbHVkZSAicG9zdG1hc3Rl ci93YWxfYWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci93YWx3cml0ZXIuaCIKICNp bmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIKICNpbmNsdWRlICJyZXBsaWNh dGlvbi9yZW9yZGVyYnVmZmVyLmgiCkBAIC0yODI4LDYgKzI4MjksMTcgQEAgc3RhdGljIHN0cnVj dCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJ fSwKIAorCXsKKwkJeyJ3YWxfYWxsb2NhdG9yX21heF9zaXplIiwgUEdDX1NJR0hVUCwgV0FMX1NF VFRJTkdTLAorCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBtYXhpbXVtIGFtb3VudCBvZiBXQUwg dG8gcHJlLWFsbG9jYXRlLiIpLAorCQkJTlVMTCwKKwkJCUdVQ19VTklUX01CCisJCX0sCisJCSZ3 YWxfYWxsb2NfbWF4X3NpemVfbWIsCisJCTY0LCAwLCAxMDI0MDAsCisJCU5VTEwsIE5VTEwsIE5V TEwKKwl9LAorCiAJewogCQl7IndhbF9idWZmZXJzIiwgUEdDX1BPU1RNQVNURVIsIFdBTF9TRVRU SU5HUywKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgbnVtYmVyIG9mIGRpc2stcGFnZSBidWZm ZXJzIGluIHNoYXJlZCBtZW1vcnkgZm9yIFdBTC4iKSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCAzZmU5YTUzY2IzLi5hNTE3ZGZlZTZkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0y MjMsNiArMjIzLDcgQEAKIAkJCQkJIyBvZmYsIHBnbHosIGx6NCwgb3Igb24KICN3YWxfaW5pdF96 ZXJvID0gb24JCQkjIHplcm8tZmlsbCBuZXcgV0FMIGZpbGVzCiAjd2FsX3JlY3ljbGUgPSBvbgkJ CSMgcmVjeWNsZSBXQUwgZmlsZXMKKyN3YWxfYWxsb2NhdG9yX21heF9zaXplID0gNjRNQgkJIyBh bW91bnQgb2YgV0FMIHRvIHByZS1hbGxvY2F0ZQogI3dhbF9idWZmZXJzID0gLTEJCQkjIG1pbiAz MmtCLCAtMSBzZXRzIGJhc2VkIG9uIHNoYXJlZF9idWZmZXJzCiAJCQkJCSMgKGNoYW5nZSByZXF1 aXJlcyByZXN0YXJ0KQogI3dhbF93cml0ZXJfZGVsYXkgPSAyMDBtcwkJIyAxLTEwMDAwIG1pbGxp c2Vjb25kcwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMgYi9zcmMvYmluL2lu aXRkYi9pbml0ZGIuYwppbmRleCAxZWQ0ODA4ZDUzLi5hYTUyYWFlZmZiIDEwMDY0NAotLS0gYS9z cmMvYmluL2luaXRkYi9pbml0ZGIuYworKysgYi9zcmMvYmluL2luaXRkYi9pbml0ZGIuYwpAQCAt MjA4LDYgKzIwOCw3IEBAIHN0YXRpYyBjaGFyICpleHRyYV9vcHRpb25zID0gIiI7CiBzdGF0aWMg Y29uc3QgY2hhciAqY29uc3Qgc3ViZGlyc1tdID0gewogCSJnbG9iYWwiLAogCSJwZ193YWwvYXJj aGl2ZV9zdGF0dXMiLAorCSJwZ193YWwvcHJlYWxsb2NhdGVkX3NlZ21lbnRzIiwKIAkicGdfY29t bWl0X3RzIiwKIAkicGdfZHluc2htZW0iLAogCSJwZ19ub3RpZnkiLApkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAuYyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1 cC9wZ19iYXNlYmFja3VwLmMKaW5kZXggNzI5NmViOTdkMC4uMTc3OGM5YzkxYiAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAuYworKysgYi9zcmMvYmluL3Bn X2Jhc2ViYWNrdXAvcGdfYmFzZWJhY2t1cC5jCkBAIC02ODAsNiArNjgwLDIyIEBAIFN0YXJ0TG9n U3RyZWFtZXIoY2hhciAqc3RhcnRwb3MsIHVpbnQzMiB0aW1lbGluZSwgY2hhciAqc3lzaWRlbnRp ZmllcikKIAkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wi OiAlbSIsIHN0YXR1c2Rpcik7CiAJCQlleGl0KDEpOwogCQl9CisKKwkJLyoKKwkJICogQWxzbyBj cmVhdGUgcGdfd2FsL3ByZWFsbG9jYXRlZF9zZWdtZW50cyBpZiBuZWNlc3NhcnkuCisJCSAqLwor CQlpZiAoUFFzZXJ2ZXJWZXJzaW9uKGNvbm4pID49IDE1MDAwMCkKKwkJeworCQkJY2hhciBwcmVh bGxvY19kaXJbTUFYUEdQQVRIXTsKKworCQkJc25wcmludGYocHJlYWxsb2NfZGlyLCBzaXplb2Yo cHJlYWxsb2NfZGlyKSwgIiVzL3BnX3dhbC9wcmVhbGxvY2F0ZWRfc2VnbWVudHMiLAorCQkJCQkg YmFzZWRpcik7CisJCQlpZiAocGdfbWtkaXJfcChwcmVhbGxvY19kaXIsIHBnX2Rpcl9jcmVhdGVf bW9kZSkgIT0gMCAmJiBlcnJubyAhPSBFRVhJU1QpCisJCQl7CisJCQkJcGdfbG9nX2Vycm9yKCJj b3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgcHJlYWxsb2NfZGlyKTsKKwkJ CQlleGl0KDEpOworCQkJfQorCQl9CiAJfQogCiAJLyoKQEAgLTE2MTYsNyArMTYzMiw4IEBAIFJl Y2VpdmVUYXJBbmRVbnBhY2tDb3B5Q2h1bmsoc2l6ZV90IHIsIGNoYXIgKmNvcHlidWYsIHZvaWQg KmNhbGxiYWNrX2RhdGEpCiAJCQkJCSAqLwogCQkJCQlpZiAoISgocGdfc3RyX2VuZHN3aXRoKHN0 YXRlLT5maWxlbmFtZSwgIi9wZ193YWwiKSB8fAogCQkJCQkJICAgcGdfc3RyX2VuZHN3aXRoKHN0 YXRlLT5maWxlbmFtZSwgIi9wZ194bG9nIikgfHwKLQkJCQkJCSAgIHBnX3N0cl9lbmRzd2l0aChz dGF0ZS0+ZmlsZW5hbWUsICIvYXJjaGl2ZV9zdGF0dXMiKSkgJiYKKwkJCQkJCSAgIHBnX3N0cl9l bmRzd2l0aChzdGF0ZS0+ZmlsZW5hbWUsICIvYXJjaGl2ZV9zdGF0dXMiKSB8fAorCQkJCQkJICAg cGdfc3RyX2VuZHN3aXRoKHN0YXRlLT5maWxlbmFtZSwgIi9wcmVhbGxvY2F0ZWRfc2VnbWVudHMi KSkgJiYKIAkJCQkJCSAgZXJybm8gPT0gRUVYSVNUKSkKIAkJCQkJewogCQkJCQkJcGdfbG9nX2Vy cm9yKCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzAxMF9wZ19iYXNlYmFja3VwLnBsIGIvc3JjL2Jpbi9w Z19iYXNlYmFja3VwL3QvMDEwX3BnX2Jhc2ViYWNrdXAucGwKaW5kZXggYTJjYjJhNzY3OS4uNDNl MWUzZTg5ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3QvMDEwX3BnX2Jhc2Vi YWNrdXAucGwKKysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3QvMDEwX3BnX2Jhc2ViYWNrdXAu cGwKQEAgLTEyMCwxMCArMTIwLDEwIEBAIFNLSVA6CiAJCSJjaGVjayBiYWNrdXAgZGlyIHBlcm1p c3Npb25zIik7CiB9CiAKLSMgT25seSBhcmNoaXZlX3N0YXR1cyBkaXJlY3Rvcnkgc2hvdWxkIGJl IGNvcGllZCBpbiBwZ193YWwvLgorIyBPbmx5IGFyY2hpdmVfc3RhdHVzIGFuZCBwcmVhbGxvY2F0 ZWRfc2VnbWVudHMgZGlyZWN0b3JpZXMgc2hvdWxkIGJlIGNvcGllZCBpbiBwZ193YWwvLgogaXNf ZGVlcGx5KAogCVsgc29ydChzbHVycF9kaXIoIiR0ZW1wZGlyL2JhY2t1cC9wZ193YWwvIikpIF0s Ci0JWyBzb3J0IHF3KC4gLi4gYXJjaGl2ZV9zdGF0dXMpIF0sCisJWyBzb3J0IHF3KC4gLi4gYXJj aGl2ZV9zdGF0dXMgcHJlYWxsb2NhdGVkX3NlZ21lbnRzKSBdLAogCSdubyBXQUwgZmlsZXMgY29w aWVkJyk7CiAKICMgQ29udGVudHMgb2YgdGhlc2UgZGlyZWN0b3JpZXMgc2hvdWxkIG5vdCBiZSBj b3BpZWQuCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMgYi9z cmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMKaW5kZXggODRiNmY3MGFkNi4uMjM0YTg2 Nzg5NSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jCisrKyBi L3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYwpAQCAtODUsNiArODUsNyBAQCBzdGF0 aWMgdm9pZCBSZXdyaXRlQ29udHJvbEZpbGUodm9pZCk7CiBzdGF0aWMgdm9pZCBGaW5kRW5kT2ZY TE9HKHZvaWQpOwogc3RhdGljIHZvaWQgS2lsbEV4aXN0aW5nWExPRyh2b2lkKTsKIHN0YXRpYyB2 b2lkIEtpbGxFeGlzdGluZ0FyY2hpdmVTdGF0dXModm9pZCk7CitzdGF0aWMgdm9pZCBLaWxsRXhp c3RpbmdQcmVhbGxvY2F0ZWRTZWdtZW50cyh2b2lkKTsKIHN0YXRpYyB2b2lkIFdyaXRlRW1wdHlY TE9HKHZvaWQpOwogc3RhdGljIHZvaWQgdXNhZ2Uodm9pZCk7CiAKQEAgLTUzMCw2ICs1MzEsNyBA QCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJUmV3cml0ZUNvbnRyb2xGaWxlKCk7CiAJ S2lsbEV4aXN0aW5nWExPRygpOwogCUtpbGxFeGlzdGluZ0FyY2hpdmVTdGF0dXMoKTsKKwlLaWxs RXhpc3RpbmdQcmVhbGxvY2F0ZWRTZWdtZW50cygpOwogCVdyaXRlRW1wdHlYTE9HKCk7CiAKIAlw cmludGYoXygiV3JpdGUtYWhlYWQgbG9nIHJlc2V0XG4iKSk7CkBAIC0xMDcwLDYgKzEwNzIsNTIg QEAgS2lsbEV4aXN0aW5nWExPRyh2b2lkKQogfQogCiAKKy8qCisgKiBSZW1vdmUgZXhpc3Rpbmcg cHJlYWxsb2NhdGVkIHNlZ21lbnRzCisgKi8KK3N0YXRpYyB2b2lkCitLaWxsRXhpc3RpbmdQcmVh bGxvY2F0ZWRTZWdtZW50cyh2b2lkKQoreworI2RlZmluZSBQUkVBTExPQ1NFR0RJUiBYTE9HRElS ICIvcHJlYWxsb2NhdGVkX3NlZ21lbnRzIgorCisJRElSCQkgICAqeGxkaXI7CisJc3RydWN0IGRp cmVudCAqeGxkZTsKKwljaGFyCQlwYXRoW01BWFBHUEFUSCArIHNpemVvZihQUkVBTExPQ1NFR0RJ UildOworCisJeGxkaXIgPSBvcGVuZGlyKFBSRUFMTE9DU0VHRElSKTsKKwlpZiAoeGxkaXIgPT0g TlVMTCkKKwl7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNc IjogJW0iLCBQUkVBTExPQ1NFR0RJUik7CisJCWV4aXQoMSk7CisJfQorCisJd2hpbGUgKGVycm5v ID0gMCwgKHhsZGUgPSByZWFkZGlyKHhsZGlyKSkgIT0gTlVMTCkKKwl7CisJCWlmIChzdHJuY21w KHhsZGUtPmRfbmFtZSwgInhsb2d0ZW1wIiwgc3RybGVuKCJ4bG9ndGVtcCIpKSA9PSAgMCkKKwkJ eworCQkJc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgpLCAiJXMvJXMiLCBQUkVBTExPQ1NFR0RJ UiwgeGxkZS0+ZF9uYW1lKTsKKwkJCWlmICh1bmxpbmsocGF0aCkgPCAwKQorCQkJeworCQkJCXBn X2xvZ19lcnJvcigiY291bGQgbm90IGRlbGV0ZSBmaWxlIFwiJXNcIjogJW0iLCBwYXRoKTsKKwkJ CQlleGl0KDEpOworCQkJfQorCQl9CisJfQorCisJaWYgKGVycm5vKQorCXsKKwkJcGdfbG9nX2Vy cm9yKCJjb3VsZCBub3QgcmVhZCBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIFBSRUFMTE9DU0VHRElS KTsKKwkJZXhpdCgxKTsKKwl9CisKKwlpZiAoY2xvc2VkaXIoeGxkaXIpKQorCXsKKwkJcGdfbG9n X2Vycm9yKCJjb3VsZCBub3QgY2xvc2UgZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBQUkVBTExPQ1NF R0RJUik7CisJCWV4aXQoMSk7CisJfQorfQorCisKIC8qCiAgKiBSZW1vdmUgZXhpc3RpbmcgYXJj aGl2ZSBzdGF0dXMgZmlsZXMKICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hs b2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKaW5kZXggMGE4ZWRlNzAwZC4uN2Q5OWQ5 MDI0NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAorKysgYi9zcmMvaW5j bHVkZS9hY2Nlc3MveGxvZy5oCkBAIC0zMjcsNiArMzI3LDExIEBAIGV4dGVybiB2b2lkIFhMb2dS ZXF1ZXN0V2FsUmVjZWl2ZXJSZXBseSh2b2lkKTsKIGV4dGVybiB2b2lkIGFzc2lnbl9tYXhfd2Fs X3NpemUoaW50IG5ld3ZhbCwgdm9pZCAqZXh0cmEpOwogZXh0ZXJuIHZvaWQgYXNzaWduX2NoZWNr cG9pbnRfY29tcGxldGlvbl90YXJnZXQoZG91YmxlIG5ld3ZhbCwgdm9pZCAqZXh0cmEpOwogCitl eHRlcm4gaW50IEdldE51bVByZWFsbG9jYXRlZFdhbFNlZ3Modm9pZCk7CitleHRlcm4gdm9pZCBJ bnN0YWxsUHJlYWxsb2NhdGVkV2FsU2VnKGNvbnN0IGNoYXIgKnBhdGgpOworZXh0ZXJuIHZvaWQg U2V0TnVtUHJlYWxsb2NhdGVkV2FsU2VncyhpbnQgaSk7CitleHRlcm4gdm9pZCBSZXF1ZXN0V2Fs UHJlYWxsb2NhdGlvbih2b2lkKTsKKwogLyoKICAqIFJvdXRpbmVzIHRvIHN0YXJ0LCBzdG9wLCBh bmQgZ2V0IHN0YXR1cyBvZiBhIGJhc2UgYmFja3VwLgogICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IDJlMmU5YTM2 NGEuLmUxMGQzN2JjMDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisrKyBi L3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC0zMzMsNiArMzMzLDcgQEAgdHlwZWRlZiBlbnVt IEJhY2tlbmRUeXBlCiAJQl9XQUxfUkVDRUlWRVIsCiAJQl9XQUxfU0VOREVSLAogCUJfV0FMX1dS SVRFUiwKKwlCX1dBTF9BTExPQ0FUT1IsCiAJQl9BUkNISVZFUiwKIAlCX1NUQVRTX0NPTExFQ1RP UiwKIAlCX0xPR0dFUiwKQEAgLTQzMyw2ICs0MzQsNyBAQCB0eXBlZGVmIGVudW0KIAlDaGVja3Bv aW50ZXJQcm9jZXNzLAogCVdhbFdyaXRlclByb2Nlc3MsCiAJV2FsUmVjZWl2ZXJQcm9jZXNzLAor CVdhbEFsbG9jYXRvclByb2Nlc3MsCiAKIAlOVU1fQVVYUFJPQ1RZUEVTCQkJLyogTXVzdCBiZSBs YXN0ISAqLwogfSBBdXhQcm9jVHlwZTsKQEAgLTQ0NSw2ICs0NDcsNyBAQCBleHRlcm4gQXV4UHJv Y1R5cGUgTXlBdXhQcm9jVHlwZTsKICNkZWZpbmUgQW1DaGVja3BvaW50ZXJQcm9jZXNzKCkJCShN eUF1eFByb2NUeXBlID09IENoZWNrcG9pbnRlclByb2Nlc3MpCiAjZGVmaW5lIEFtV2FsV3JpdGVy UHJvY2VzcygpCQkoTXlBdXhQcm9jVHlwZSA9PSBXYWxXcml0ZXJQcm9jZXNzKQogI2RlZmluZSBB bVdhbFJlY2VpdmVyUHJvY2VzcygpCQkoTXlBdXhQcm9jVHlwZSA9PSBXYWxSZWNlaXZlclByb2Nl c3MpCisjZGVmaW5lIEFtV2FsQWxsb2NhdG9yUHJvY2VzcygpCQkoTXlBdXhQcm9jVHlwZSA9PSBX YWxBbGxvY2F0b3JQcm9jZXNzKQogCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci93YWxfYWxsb2NhdG9yLmggYi9zcmMvaW5jbHVkZS9w b3N0bWFzdGVyL3dhbF9hbGxvY2F0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwLi5jN2UxMzkyMjZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvcG9zdG1h c3Rlci93YWxfYWxsb2NhdG9yLmgKQEAgLTAsMCArMSwyMSBAQAorLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgorICogd2FsX2FsbG9jYXRvci5oCisgKgkgIEV4cG9ydHMgZnJvbSBwb3N0bWFzdGVyL3dh bF9hbGxvY2F0b3IuYy4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMSwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBzcmMvaW5jbHVkZS9w b3N0bWFzdGVyL3dhbF9hbGxvY2F0b3IuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisj aWZuZGVmIF9XQUxfQUxMT0NBVE9SX0gKKyNkZWZpbmUgX1dBTF9BTExPQ0FUT1JfSAorCisvKiBH VUMgb3B0aW9ucyAqLworZXh0ZXJuIGludCAgd2FsX2FsbG9jX21heF9zaXplX21iOworCitleHRl cm4gdm9pZCBXYWxBbGxvY2F0b3JNYWluKHZvaWQpIHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOwor ZXh0ZXJuIGJvb2wgV2FsUHJlYWxsb2NhdGlvbkVuYWJsZWQodm9pZCk7CisKKyNlbmRpZgkJCQkJ CQkvKiBfV0FMX0FMTE9DQVRPUl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdl L2ZkLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2ZkLmgKaW5kZXggMzQ2MDJhZTAwNi4uYWJjZDc0 YmQ1MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9mZC5oCisrKyBiL3NyYy9pbmNs dWRlL3N0b3JhZ2UvZmQuaApAQCAtMTkwLDYgKzE5MCw3IEBAIGV4dGVybiBpbnQJZHVyYWJsZV91 bmxpbmsoY29uc3QgY2hhciAqZm5hbWUsIGludCBsb2dsZXZlbCk7CiBleHRlcm4gaW50CWR1cmFi bGVfcmVuYW1lX2V4Y2woY29uc3QgY2hhciAqb2xkZmlsZSwgY29uc3QgY2hhciAqbmV3ZmlsZSwg aW50IGxvZ2xldmVsKTsKIGV4dGVybiB2b2lkIFN5bmNEYXRhRGlyZWN0b3J5KHZvaWQpOwogZXh0 ZXJuIGludAlkYXRhX3N5bmNfZWxldmVsKGludCBlbGV2ZWwpOworZXh0ZXJuIHZvaWQgQ3JlYXRl RW1wdHlXYWxTZWdtZW50KGNvbnN0IGNoYXIgKnBhdGgpOwogCiAvKiBGaWxlbmFtZSBjb21wb25l bnRzICovCiAjZGVmaW5lIFBHX1RFTVBfRklMRVNfRElSICJwZ3NxbF90bXAiCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5o CmluZGV4IGJlNjdkOGE4NjEuLjhkMGNhZTM3YjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvcHJvYy5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCkBAIC0zNDgsNiAr MzQ4LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUFJPQ19IRFIKIAlwZ19hdG9taWNfdWludDMyIGNsb2dH cm91cEZpcnN0OwogCS8qIFdBTFdyaXRlciBwcm9jZXNzJ3MgbGF0Y2ggKi8KIAlMYXRjaAkgICAq d2Fsd3JpdGVyTGF0Y2g7CisJLyogV0FMIEFsbG9jYXRvciBwcm9jZXNzJ3MgbGF0Y2ggKi8KKwlM YXRjaAkgICAqd2FsQWxsb2NhdG9yTGF0Y2g7CiAJLyogQ2hlY2twb2ludGVyIHByb2Nlc3MncyBs YXRjaCAqLwogCUxhdGNoCSAgICpjaGVja3BvaW50ZXJMYXRjaDsKIAkvKiBDdXJyZW50IHNoYXJl ZCBlc3RpbWF0ZSBvZiBhcHByb3ByaWF0ZSBzcGluc19wZXJfZGVsYXkgdmFsdWUgKi8KQEAgLTM3 MCwxMSArMzcyLDEyIEBAIGV4dGVybiBQR1BST0MgKlByZXBhcmVkWGFjdFByb2NzOwogICogV2Ug c2V0IGFzaWRlIHNvbWUgZXh0cmEgUEdQUk9DIHN0cnVjdHVyZXMgZm9yIGF1eGlsaWFyeSBwcm9j ZXNzZXMsCiAgKiBpZSB0aGluZ3MgdGhhdCBhcmVuJ3QgZnVsbC1mbGVkZ2VkIGJhY2tlbmRzIGJ1 dCBuZWVkIHNobWVtIGFjY2Vzcy4KICAqCi0gKiBCYWNrZ3JvdW5kIHdyaXRlciwgY2hlY2twb2lu dGVyLCBXQUwgd3JpdGVyIGFuZCBhcmNoaXZlciBydW4gZHVyaW5nIG5vcm1hbAotICogb3BlcmF0 aW9uLiAgU3RhcnR1cCBwcm9jZXNzIGFuZCBXQUwgcmVjZWl2ZXIgYWxzbyBjb25zdW1lIDIgc2xv dHMsIGJ1dCBXQUwKLSAqIHdyaXRlciBpcyBsYXVuY2hlZCBvbmx5IGFmdGVyIHN0YXJ0dXAgaGFz IGV4aXRlZCwgc28gd2Ugb25seSBuZWVkIDUgc2xvdHMuCisgKiBCYWNrZ3JvdW5kIHdyaXRlciwg Y2hlY2twb2ludGVyLCBXQUwgd3JpdGVyLCBhcmNoaXZlciwgYW5kIFdBTCBhbGxvY2F0b3IgcnVu CisgKiBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbi4gIFN0YXJ0dXAgcHJvY2VzcyBhbmQgV0FMIHJl Y2VpdmVyIGFsc28gY29uc3VtZSAyCisgKiBzbG90cywgYnV0IFdBTCB3cml0ZXIgaXMgbGF1bmNo ZWQgb25seSBhZnRlciBzdGFydHVwIGhhcyBleGl0ZWQsIHNvIHdlIG9ubHkKKyAqIG5lZWQgNiBz bG90cy4KICAqLwotI2RlZmluZSBOVU1fQVVYSUxJQVJZX1BST0NTCQk1CisjZGVmaW5lIE5VTV9B VVhJTElBUllfUFJPQ1MJCTYKIAogLyogY29uZmlndXJhYmxlIG9wdGlvbnMgKi8KIGV4dGVybiBQ R0RMTElNUE9SVCBpbnQgRGVhZGxvY2tUaW1lb3V0OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvd2FpdF9ldmVudC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCmluZGV4 IDYwMDc4MjdiNDQuLjE4YTA1ZjhkNTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3dh aXRfZXZlbnQuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKQEAgLTQ3LDcg KzQ3LDggQEAgdHlwZWRlZiBlbnVtCiAJV0FJVF9FVkVOVF9TWVNMT0dHRVJfTUFJTiwKIAlXQUlU X0VWRU5UX1dBTF9SRUNFSVZFUl9NQUlOLAogCVdBSVRfRVZFTlRfV0FMX1NFTkRFUl9NQUlOLAot CVdBSVRfRVZFTlRfV0FMX1dSSVRFUl9NQUlOCisJV0FJVF9FVkVOVF9XQUxfV1JJVEVSX01BSU4s CisJV0FJVF9FVkVOVF9XQUxfQUxMT0NBVE9SX01BSU4KIH0gV2FpdEV2ZW50QWN0aXZpdHk7CiAK IC8qIC0tLS0tLS0tLS0KLS0gCjIuMTYuNgoK --_002_51BAAB3B9D3C4155B12542E4F06DCDF4amazoncom_--