From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.5 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CDCEBC433E0 for ; Tue, 11 Aug 2020 01:04:54 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 971CC20716 for ; Tue, 11 Aug 2020 01:04:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 971CC20716 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 06B996E4A7; Tue, 11 Aug 2020 01:04:54 +0000 (UTC) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id C3A246E4A5 for ; Tue, 11 Aug 2020 01:04:52 +0000 (UTC) IronPort-SDR: RCnWOvIUJ4j+Yh6I6Rf7BrMvnZyyt4hT59+ETnVtSCOc4Bz4754qbTg7fghTyHRNII+AkMrcTo YZRraNVIi7XA== X-IronPort-AV: E=McAfee;i="6000,8403,9709"; a="133186172" X-IronPort-AV: E=Sophos;i="5.75,458,1589266800"; d="scan'208";a="133186172" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Aug 2020 18:04:52 -0700 IronPort-SDR: Nod6kpSFFKvGDuB8kTJdf/0a0EZgO+KOi7FKfjzSUybEpX7r8kkTsYiRp80LPSW3Uf7F5ggO6f 1LAmxpVB/+qg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,458,1589266800"; d="scan'208";a="469244713" Received: from dceraolo-mobl.amr.corp.intel.com (HELO [10.209.182.176]) ([10.209.182.176]) by orsmga005.jf.intel.com with ESMTP; 10 Aug 2020 18:04:51 -0700 To: John.C.Harrison@Intel.com, Intel-GFX@Lists.FreeDesktop.Org, "Wajdeczko, Michal" References: <20200807174637.375324-1-John.C.Harrison@Intel.com> <20200807174637.375324-2-John.C.Harrison@Intel.com> From: Daniele Ceraolo Spurio Message-ID: <49855416-a10a-d386-a1f7-bc2e8e76c91c@intel.com> Date: Mon, 10 Aug 2020 18:04:51 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20200807174637.375324-2-John.C.Harrison@Intel.com> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH 1/2] drm/i915/guc: Update to GuC v45.0.0 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" CgpPbiA4LzcvMjAyMCAxMDo0NiBBTSwgSm9obi5DLkhhcnJpc29uQEludGVsLmNvbSB3cm90ZToK PiBGcm9tOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+Cj4gVXBk YXRlIHRvIHRoZSBsYXRlc3QgR3VDIGZpcm13YXJlLiBUaGlzIGluY2x1ZGVzIHNvbWUgc2lnbmlm aWNhbnQKPiBjaGFuZ2VzIHRvIHRoZSBpbnRlcmZhY2UuCgpBIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcg b2YgdGhlIGNoYW5nZXMgd291bGQgYmUgbmljZSBmb3IgZXh0cmEgY2xhcml0eS4gQSAKY291cGxl IG9mIGV4YW1wbGU6CgotIEd1QyBub3cgcmVxdWlyZXMgYSBwcml2YXRlIG1lbW9yeSBhcmVhCi0g eW91J3JlIGRyb3BwaW5nIHRoZSBwcm9ncmFtbWluZyBvZiB0aGUgcmVnX3N0YXRlIHN0cnVjdCwg YnV0IHRoYXQncyAKYWN0dWFsbHkgc3RpbGwgZGVmaW5lZCBpbiB0aGUgc3RydWN0dXJlLCBzbyBJ TU8gaXQncyB3b3J0aCBtZW50aW9uaW5nIAp0aGF0IGl0IHdpbGwgY29tZSBiYWNrIHdpdGggR3VD IHN1Ym1pc3Npb24uCgo+Cj4gU2lnbmVkLW9mZi1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhh cnJpc29uQEludGVsLmNvbT4KPiBBdXRob3I6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmll bGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Cj4gQXV0aG9yOiBKb2huIEhhcnJpc29uIDxKb2hu LkMuSGFycmlzb25ASW50ZWwuY29tPgo+IEF1dGhvcjogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5i cm9zdEBpbnRlbC5jb20+Cj4gQXV0aG9yOiBNaWNoYWwgV2FqZGVjemtvIDxtaWNoYWwud2FqZGVj emtvQGludGVsLmNvbT4KPiBBdXRob3I6IE1pY2hlbCBUaGllcnJ5IDxtaWNoZWwudGhpZXJyeUBp bnRlbC5jb20+Cj4gQXV0aG9yOiBPc2NhciBNYXRlbyA8b3NjYXIubWF0ZW9AaW50ZWwuY29tPgo+ IEF1dGhvcjogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+IC0tLQo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMgICAgfCAgIDMgKy0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5jICAgICAgIHwgMTI1ICsrKysr KystLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfYWJpLmggICB8 IDIxNSArKysrKysrKysrKysrKysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWNfYWRzLmMgICB8IDExNiArKysrKysrKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF9ndWNfZncuYyAgICB8ICAyMSArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3aWYuaCAgfCAxMTAgKysrKy0tLS0tLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3JlZy5oICAgfCAgIDUgKwo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuYyAgICAgfCAgMjcgKystCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19mdy5oICAgICB8ICAgMiArCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19md19hYmkuaCB8ICAgNiArLQo+ICAgMTAgZmls ZXMgY2hhbmdlZCwgNDg1IGluc2VydGlvbnMoKyksIDE0NSBkZWxldGlvbnMoLSkKPiAgIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfYWJpLmgK Pgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3Mu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCj4gaW5kZXggZWE0 YmEyYWZlOWY5Li45Y2Q2MmQ2OGFiYzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9lbmdpbmVfY3MuYwo+IEBAIC0zMDUsOCArMzA1LDkgQEAgc3RhdGljIGludCBpbnRlbF9l bmdpbmVfc2V0dXAoc3RydWN0IGludGVsX2d0ICpndCwgZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQp Cj4gICAJZW5naW5lLT5pOTE1ID0gaTkxNTsKPiAgIAllbmdpbmUtPmd0ID0gZ3Q7Cj4gICAJZW5n aW5lLT51bmNvcmUgPSBndC0+dW5jb3JlOwo+IC0JZW5naW5lLT5od19pZCA9IGVuZ2luZS0+Z3Vj X2lkID0gaW5mby0+aHdfaWQ7Cj4gICAJZW5naW5lLT5tbWlvX2Jhc2UgPSBfX2VuZ2luZV9tbWlv X2Jhc2UoaTkxNSwgaW5mby0+bW1pb19iYXNlcyk7Cj4gKwllbmdpbmUtPmh3X2lkID0gaW5mby0+ aHdfaWQ7Cj4gKwllbmdpbmUtPmd1Y19pZCA9IE1BS0VfR1VDX0lEKGluZm8tPmNsYXNzLCBpbmZv LT5pbnN0YW5jZSk7Cj4gICAKPiAgIAllbmdpbmUtPmNsYXNzID0gaW5mby0+Y2xhc3M7Cj4gICAJ ZW5naW5lLT5pbnN0YW5jZSA9IGluZm8tPmluc3RhbmNlOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3VjL2ludGVsX2d1Yy5jCj4gaW5kZXggODYxNjU3ODk3YzBmLi44ZDMwZTFkN2Q4YTYgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuYwo+IEBAIC03LDYgKzcsNyBAQAo+ ICAgI2luY2x1ZGUgImd0L2ludGVsX2d0X2lycS5oIgo+ICAgI2luY2x1ZGUgImd0L2ludGVsX2d0 X3BtX2lycS5oIgo+ICAgI2luY2x1ZGUgImludGVsX2d1Yy5oIgo+ICsjaW5jbHVkZSAiaW50ZWxf Z3VjX2FiaS5oIgo+ICAgI2luY2x1ZGUgImludGVsX2d1Y19hZHMuaCIKPiAgICNpbmNsdWRlICJp bnRlbF9ndWNfc3VibWlzc2lvbi5oIgo+ICAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gQEAgLTIx MywyMyArMjE0LDYgQEAgc3RhdGljIHUzMiBndWNfY3RsX2ZlYXR1cmVfZmxhZ3Moc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQo+ICAgCXJldHVybiBmbGFnczsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdTMy IGd1Y19jdGxfY3R4aW5mb19mbGFncyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gLXsKPiAtCXUz MiBmbGFncyA9IDA7Cj4gLQo+IC0JaWYgKGludGVsX2d1Y19zdWJtaXNzaW9uX2lzX3VzZWQoZ3Vj KSkgewo+IC0JCXUzMiBjdHhudW0sIGJhc2U7Cj4gLQo+IC0JCWJhc2UgPSBpbnRlbF9ndWNfZ2d0 dF9vZmZzZXQoZ3VjLCBndWMtPnN0YWdlX2Rlc2NfcG9vbCk7Cj4gLQkJY3R4bnVtID0gR1VDX01B WF9TVEFHRV9ERVNDUklQVE9SUyAvIDE2Owo+IC0KPiAtCQliYXNlID4+PSBQQUdFX1NISUZUOwo+ IC0JCWZsYWdzIHw9IChiYXNlIDw8IEdVQ19DVExfQkFTRV9BRERSX1NISUZUKSB8Cj4gLQkJCShj dHhudW0gPDwgR1VDX0NUTF9DVFhOVU1fSU4xNl9TSElGVCk7Cj4gLQl9Cj4gLQlyZXR1cm4gZmxh Z3M7Cj4gLX0KPiAtCj4gICBzdGF0aWMgdTMyIGd1Y19jdGxfbG9nX3BhcmFtc19mbGFncyhzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMpCj4gICB7Cj4gICAJdTMyIG9mZnNldCA9IGludGVsX2d1Y19nZ3R0 X29mZnNldChndWMsIGd1Yy0+bG9nLnZtYSkgPj4gUEFHRV9TSElGVDsKPiBAQCAtMjkxLDcgKzI3 NSw2IEBAIHN0YXRpYyB2b2lkIGd1Y19pbml0X3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMp Cj4gICAKPiAgIAlCVUlMRF9CVUdfT04oc2l6ZW9mKGd1Yy0+cGFyYW1zKSAhPSBHVUNfQ1RMX01B WF9EV09SRFMgKiBzaXplb2YodTMyKSk7Cj4gICAKPiAtCXBhcmFtc1tHVUNfQ1RMX0NUWElORk9d ID0gZ3VjX2N0bF9jdHhpbmZvX2ZsYWdzKGd1Yyk7Cj4gICAJcGFyYW1zW0dVQ19DVExfTE9HX1BB UkFNU10gPSBndWNfY3RsX2xvZ19wYXJhbXNfZmxhZ3MoZ3VjKTsKPiAgIAlwYXJhbXNbR1VDX0NU TF9GRUFUVVJFXSA9IGd1Y19jdGxfZmVhdHVyZV9mbGFncyhndWMpOwo+ICAgCXBhcmFtc1tHVUNf Q1RMX0RFQlVHXSA9IGd1Y19jdGxfZGVidWdfZmxhZ3MoZ3VjKTsKPiBAQCAtNDAwLDMyICszODMs NjUgQEAgdm9pZCBpbnRlbF9ndWNfZmluaShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gICAJaW50 ZWxfdWNfZndfZmluaSgmZ3VjLT5mdyk7Cj4gICB9Cj4gICAKPiArc3RhdGljIGJvb2wgaXNfdmFs aWRfbW1pb19hY3Rpb24odTMyIGFjdGlvbikKPiArewo+ICsJcmV0dXJuIGFjdGlvbiA9PSBHVUNf QUNUSU9OX1JFR0lTVEVSX0NUQiB8fAo+ICsJICAgICAgIGFjdGlvbiA9PSBHVUNfQUNUSU9OX0RF UkVHSVNURVJfQ1RCOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGd1Y19zdGF0dXNfdG9fZXJybm8o dTMyIHN0YXR1cykKPiArewo+ICsJc3dpdGNoIChzdGF0dXMpIHsKPiArCWNhc2UgR1VDX1NUQVRV U19VTktOT1dOX0FDVElPTjoKPiArCQlyZXR1cm4gLUVPUE5PVFNVUFA7Cj4gKwljYXNlIEdVQ19T VEFUVVNfSU5WQUxJRF9QQVJBTVM6Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwljYXNlIEdVQ19T VEFUVVNfSU5WQUxJRF9BRERSOgo+ICsJCXJldHVybiAtRUZBVUxUOwo+ICsJY2FzZSBHVUNfU1RB VFVTX0NUWF9OT1RfUkVHSVNURVJFRDoKPiArCQlyZXR1cm4gLUVTUkNIOwo+ICsJY2FzZSBHVUNf U1RBVFVTX0NUQl9GVUxMOgo+ICsJCXJldHVybiAtRU5PU1BDOwo+ICsJY2FzZSBHVUNfU1RBVFVT X1VOQVVUSE9SSVpFRF9SRVFVRVNUOgo+ICsJCXJldHVybiAtRUFDQ0VTOwo+ICsJY2FzZSBHVUNf U1RBVFVTX0dFTkVSSUNfRkFJTDoKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIC1FTlhJTzsKPiAr CX0KPiArfQo+ICsKPiAgIC8qCj4gICAgKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIE1N SU8gYmFzZWQgaG9zdCB0byBHdUMgaW50ZXJmYWNlLgo+ICAgICovCj4gLWludCBpbnRlbF9ndWNf c2VuZF9tbWlvKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgY29uc3QgdTMyICphY3Rpb24sIHUzMiBs ZW4sCj4gK2ludCBpbnRlbF9ndWNfc2VuZF9tbWlvKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgY29u c3QgdTMyICpyZXF1ZXN0LCB1MzIgbGVuLAo+ICAgCQkJdTMyICpyZXNwb25zZV9idWYsIHUzMiBy ZXNwb25zZV9idWZfc2l6ZSkKPiAgIHsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gZ3VjX3RvX2d0KGd1YyktPmk5MTU7Cj4gICAJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3Jl ID0gZ3VjX3RvX2d0KGd1YyktPnVuY29yZTsKPiAtCXUzMiBzdGF0dXM7Cj4gKwl1MzIgYWN0aW9u ID0gRklFTERfR0VUKEdVQ19NTUlPX1JFUVVFU1RfQUNUSU9OLCAqcmVxdWVzdCk7Cj4gKwl1MzIg c3ViY29kZSA9IEZJRUxEX0dFVChHVUNfTU1JT19SRVFVRVNUX1NVQkNPREUsICpyZXF1ZXN0KTsK PiArCXUzMiBtYWdpYyA9IEdVQ19NTUlPX01TR19NQUdJQ19ERUZBVUxUOwo+ICsJdTMyIGhlYWRl cjsKPiAgIAlpbnQgaTsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gICAJR0VNX0JVR19PTighbGVuKTsK PiAgIAlHRU1fQlVHX09OKGxlbiA+IGd1Yy0+c2VuZF9yZWdzLmNvdW50KTsKPiAgIAo+IC0JLyog V2UgZXhwZWN0IG9ubHkgYWN0aW9uIGNvZGUgKi8KPiAtCUdFTV9CVUdfT04oKmFjdGlvbiAmIH5J TlRFTF9HVUNfTVNHX0NPREVfTUFTSyk7Cj4gKwkvKiBXZSBleHBlY3QgdG8gdXNlIE1NSU8gb25s eSBmb3Igc3BlY2lhbCBhY3Rpb25zICovCj4gKwlHRU1fQlVHX09OKCFpc192YWxpZF9tbWlvX2Fj dGlvbihhY3Rpb24pKTsKPiAgIAo+IC0JLyogSWYgQ1QgaXMgYXZhaWxhYmxlLCB3ZSBleHBlY3Qg dG8gdXNlIE1NSU8gb25seSBkdXJpbmcgaW5pdC9maW5pICovCj4gLQlHRU1fQlVHX09OKCphY3Rp b24gIT0gSU5URUxfR1VDX0FDVElPTl9SRUdJU1RFUl9DT01NQU5EX1RSQU5TUE9SVF9CVUZGRVIg JiYKPiAtCQkgICAqYWN0aW9uICE9IElOVEVMX0dVQ19BQ1RJT05fREVSRUdJU1RFUl9DT01NQU5E X1RSQU5TUE9SVF9CVUZGRVIpOwo+ICsJaGVhZGVyID0gRklFTERfUFJFUChHVUNfTU1JT19NU0df VFlQRSwgR1VDX01NSU9fTVNHX1RZUEVfUkVRVUVTVCkgfAo+ICsJCUZJRUxEX1BSRVAoR1VDX01N SU9fTVNHX01BR0lDLCBtYWdpYykgfAo+ICsJCUZJRUxEX1BSRVAoR1VDX01NSU9fUkVRVUVTVF9T VUJDT0RFLCBzdWJjb2RlKSB8Cj4gKwkJRklFTERfUFJFUChHVUNfTU1JT19SRVFVRVNUX0FDVElP TiwgYWN0aW9uKTsKPiAgIAo+ICAgCW11dGV4X2xvY2soJmd1Yy0+c2VuZF9tdXRleCk7Cj4gICAJ aW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQodW5jb3JlLCBndWMtPnNlbmRfcmVncy5md19kb21h aW5zKTsKPiAgIAo+IC0JZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQo+IC0JCWludGVsX3VuY29y ZV93cml0ZSh1bmNvcmUsIGd1Y19zZW5kX3JlZyhndWMsIGkpLCBhY3Rpb25baV0pOwo+ICsJaW50 ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwgZ3VjX3NlbmRfcmVnKGd1YywgMCksIGhlYWRlcik7Cj4g Kwlmb3IgKGkgPSAxOyBpIDwgbGVuOyBpKyspCj4gKwkJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29y ZSwgZ3VjX3NlbmRfcmVnKGd1YywgaSksIHJlcXVlc3RbaV0pOwo+ICAgCj4gICAJaW50ZWxfdW5j b3JlX3Bvc3RpbmdfcmVhZCh1bmNvcmUsIGd1Y19zZW5kX3JlZyhndWMsIGkgLSAxKSk7Cj4gICAK PiBAQCAtNDM3LDE3ICs0NTMsNDUgQEAgaW50IGludGVsX2d1Y19zZW5kX21taW8oc3RydWN0IGlu dGVsX2d1YyAqZ3VjLCBjb25zdCB1MzIgKmFjdGlvbiwgdTMyIGxlbiwKPiAgIAkgKi8KPiAgIAly ZXQgPSBfX2ludGVsX3dhaXRfZm9yX3JlZ2lzdGVyX2Z3KHVuY29yZSwKPiAgIAkJCQkJICAgZ3Vj X3NlbmRfcmVnKGd1YywgMCksCj4gLQkJCQkJICAgSU5URUxfR1VDX01TR19UWVBFX01BU0ssCj4g LQkJCQkJICAgSU5URUxfR1VDX01TR19UWVBFX1JFU1BPTlNFIDw8Cj4gLQkJCQkJICAgSU5URUxf R1VDX01TR19UWVBFX1NISUZULAo+IC0JCQkJCSAgIDEwLCAxMCwgJnN0YXR1cyk7Cj4gLQkvKiBJ ZiBHdUMgZXhwbGljaXRseSByZXR1cm5lZCBhbiBlcnJvciwgY29udmVydCBpdCB0byAtRUlPICov Cj4gLQlpZiAoIXJldCAmJiAhSU5URUxfR1VDX01TR19JU19SRVNQT05TRV9TVUNDRVNTKHN0YXR1 cykpCj4gLQkJcmV0ID0gLUVJTzsKPiArCQkJCQkgICBHVUNfTU1JT19NU0dfT1JJR0lOLAo+ICsJ CQkJCSAgIEZJRUxEX1BSRVAoR1VDX01NSU9fTVNHX09SSUdJTiwKPiArCQkJCQkJICAgICAgR1VD X01NSU9fTVNHX09SSUdJTl9HVUMpLAo+ICsJCQkJCSAgIDEwLCAxMCwgJmhlYWRlcik7Cj4gKwlp ZiAodW5saWtlbHkocmV0KSkKPiArCQlnb3RvIG91dDsKPiAgIAo+IC0JaWYgKHJldCkgewo+IC0J CURSTV9FUlJPUigiTU1JTzogR3VDIGFjdGlvbiAlI3ggZmFpbGVkIHdpdGggZXJyb3IgJWQgJSN4 XG4iLAo+IC0JCQkgIGFjdGlvblswXSwgcmV0LCBzdGF0dXMpOwo+ICsJaWYgKHVubGlrZWx5KEZJ RUxEX0dFVChHVUNfTU1JT19NU0dfTUFHSUMsIGhlYWRlcikgIT0gbWFnaWMpKSB7Cj4gKwkJcmV0 ID0gLUVTVEFMRTsKPiArCQlnb3RvIG91dDsKPiArCX0KCkkgdGhpbmsgd2Ugc2hvdWxkIG1vdmUg dGhpcyBhZnRlciB0aGUgY2hlY2sgZm9yIGJ1c3luZXNzLiBJSVJDIHRoZSAKcHJvdG9jb2wgc2F5 cyB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBHdUMgdG8gc3RvcCBiZWluZyBidXN5IGJlZm9yZSAK c2VuZGluZyBtb3JlIG1lc3NhZ2VzLiBUaGF0IHdheSB5b3UgY2FuIGFsc28gdW5pZnkgdGhpcyB3 aXRoIHRoZSBvdGhlciAKc2ltaWxhciBjaGVjayBiZWxvdy4KCj4gKwo+ICsJaWYgKEZJRUxEX0dF VChHVUNfTU1JT19NU0dfVFlQRSwgaGVhZGVyKSA9PSBHVUNfTU1JT19NU0dfVFlQRV9CVVNZKSB7 Cj4gKyNkZWZpbmUgZG9uZSAoeyBoZWFkZXIgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIGd1 Y19zZW5kX3JlZyhndWMsIDApKTsgXAo+ICsJCUZJRUxEX0dFVChHVUNfTU1JT19NU0dfVFlQRSwg aGVhZGVyKSAhPSBHVUNfTU1JT19NU0dfVFlQRV9CVVNZOyB9KQo+ICsJCXJldCA9IHdhaXRfZm9y KGRvbmUsIDEwMDApOwo+ICsJCWlmICh1bmxpa2VseShyZXQpKQo+ICsJCQlnb3RvIG91dDsKPiAr CQlpZiAodW5saWtlbHkoRklFTERfR0VUKEdVQ19NTUlPX01TR19PUklHSU4sIGhlYWRlcikgIT0K PiArCQkJCSAgICAgICBHVUNfTU1JT19NU0dfT1JJR0lOX0dVQykpIHsKClRoaXMgY2hlY2sgb24g R1VDX01NSU9fTVNHX09SSUdJTiBpcyByZWR1bmRhbnQuIFdlIGFscmVhZHkgd2FpdGVkIGZvciBp dCAKdG8gYmUgR1VDX01NSU9fTVNHX09SSUdJTl9HVUMgZHVyaW5nIHRoZSB3YWl0IGFib3ZlIGFu ZCB3ZSdyZSBub3QgCnNlbmRpbmcgb3RoZXIgbWVzc2FnZSBmcm9tIGk5MTUgd2hpbGUgd2UncmUg d2FpdGluZyBmb3IgdGhpcyBvbmUsIHNvIAp0aGF0IGZpZWxkIGNhbid0IGNoYW5nZS4KCj4gKwkJ CXJldCA9IC1FUFJPVE87Cj4gKwkJCWdvdG8gb3V0Owo+ICsJCX0KPiArCQlpZiAodW5saWtlbHko RklFTERfR0VUKEdVQ19NTUlPX01TR19NQUdJQywgaGVhZGVyKSAhPSBtYWdpYykpIHsKPiArCQkJ cmV0ID0gLUVTVEFMRTsKPiArCQkJZ290byBvdXQ7Cj4gKwkJfQo+ICsjdW5kZWYgZG9uZQo+ICsJ fQo+ICsKPiArCWlmIChGSUVMRF9HRVQoR1VDX01NSU9fTVNHX1RZUEUsIGhlYWRlcikgPT0gR1VD X01NSU9fTVNHX1RZUEVfRVJST1IpIHsKPiArCQl1MzIgc3RhdHVzID0gRklFTERfR0VUKEdVQ19N TUlPX0VSUk9SX1NUQVRVUywgaGVhZGVyKTsKPiArCj4gKwkJcmV0ID0gZ3VjX3N0YXR1c190b19l cnJubyhzdGF0dXMpOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCWlmIChGSUVMRF9HRVQo R1VDX01NSU9fTVNHX1RZUEUsIGhlYWRlcikgIT0gR1VDX01NSU9fTVNHX1RZUEVfUkVTUE9OU0Up IHsKPiArCQlyZXQgPSAtRVBST1RPOwo+ICAgCQlnb3RvIG91dDsKPiAgIAl9Cj4gICAKPiBAQCAt NDYwLDEyICs1MDQsMTcgQEAgaW50IGludGVsX2d1Y19zZW5kX21taW8oc3RydWN0IGludGVsX2d1 YyAqZ3VjLCBjb25zdCB1MzIgKmFjdGlvbiwgdTMyIGxlbiwKPiAgIAl9Cj4gICAKPiAgIAkvKiBV c2UgZGF0YSBmcm9tIHRoZSBHdUMgcmVzcG9uc2UgYXMgb3VyIHJldHVybiB2YWx1ZSAqLwo+IC0J cmV0ID0gSU5URUxfR1VDX01TR19UT19EQVRBKHN0YXR1cyk7CgpJTlRFTF9HVUNfTVNHX1RPX0RB VEEgaXMgc3RpbGwgdXNlZCBpbiBpbnRlbF9ndWNfY3QuYy4gRWl0aGVyIHN0aWNrIHRvIAp0aGF0 IG9yIHVwZGF0ZSB0aGUgb3RoZXIgdXNlLWNhc2UgdG8gdGhlIG5ldyBkZWZpbmUuCgo+ICsJcmV0 ID0gRklFTERfR0VUKEdVQ19NTUlPX1JFU1BPTlNFX0RBVEEwLCBoZWFkZXIpOwo+ICAgCj4gICBv dXQ6Cj4gICAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQodW5jb3JlLCBndWMtPnNlbmRfcmVn cy5md19kb21haW5zKTsKPiAgIAltdXRleF91bmxvY2soJmd1Yy0+c2VuZF9tdXRleCk7Cj4gICAK PiArCWlmICh1bmxpa2VseShyZXQgPCAwKSkKPiArCQlkcm1fZXJyKCZpOTE1LT5kcm0sCj4gKwkJ CSJHdUMgTU1JTyBhY3Rpb24gJSMwNnggZmFpbGVkIHdpdGggZXJyb3IgJWQgJSN4XG4iLAo+ICsJ CQkqcmVxdWVzdCwgcmV0LCBoZWFkZXIpOwo+ICsKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+ICAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hYmku aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hYmkuaAo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi45NTA0Mzc4OGUwYWQKPiAtLS0gL2Rl di9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2FiaS5o Cj4gQEAgLTAsMCArMSwyMTUgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVCAq Lwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKi8K PiArCj4gKyNpZm5kZWYgX19JTlRFTF9HVUNfQUJJX0hfXwo+ICsjZGVmaW5lIF9fSU5URUxfR1VD X0FCSV9IX18KPiArCj4gKy8qKgo+ICsgKiBET0M6IEd1QyBNTUlPIGJhc2VkIGNvbW11bmljYXRp b24KPiArICoKPiArICogVGhlIE1NSU8gYmFzZWQgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIEhvc3Qg YW5kIEd1QyByZWxpZXMgb24gc3BlY2lhbAo+ICsgKiBoYXJkd2FyZSByZWdpc3RlcnMgd2hpY2gg Zm9ybWF0IGNvdWxkIGJlIGRlZmluZWQgYnkgdGhlIHNvZnR3YXJlCj4gKyAqIChzbyBjYWxsZWQg c2NyYXRjaCByZWdpc3RlcnMpLgo+ICsgKgo+ICsgKiBFYWNoIE1NSU8gYmFzZWQgbWVzc2FnZSwg Ym90aCBIb3N0IHRvIEd1QyAoSDJHKSBhbmQgR3VDIHRvIEhvc3QgKEcySCkKPiArICogbWVzc2Fn ZXMsIHdoaWNoIG1heGltdW0gbGVuZ3RoIGRlcGVuZHMgb24gbnVtYmVyIG9mIGF2YWlsYWJsZSBz Y3JhdGNoCj4gKyAqIHJlZ2lzdGVycywgaXMgZGlyZWN0bHkgd3JpdHRlbiBpbnRvIHRob3NlIHNj cmF0Y2ggcmVnaXN0ZXJzLgo+ICsgKgo+ICsgKiBGb3IgR2VuOSssIHRoZXJlIGFyZSAxNiBzb2Z0 d2FyZSBzY3JhdGNoIHJlZ2lzdGVycyAweEMxODAtMHhDMUI4LAo+ICsgKiBidXQgbm8gSDJHIGNv bW1hbmQgdGFrZXMgbW9yZSB0aGFuIDggcGFyYW1ldGVycyBhbmQgdGhlIEd1QyBmaXJtd2FyZQo+ ICsgKiBpdHNlbGYgdXNlcyBhbiA4LWVsZW1lbnQgYXJyYXkgdG8gc3RvcmUgdGhlIEgyRyBtZXNz YWdlLgo+ICsgKgo+ICsgKiBGb3IgR2VuMTErLCB0aGVyZSBhcmUgYWRkaXRpb25hbCA0IHJlZ2lz dGVycyAweDE5MDI0MC0weDE5MDI0Qywgd2hpY2gKPiArICogYXJlLCByZWdhcmRsZXNzIG9uIGxv d2VyIGNvdW50LCBwcmVmZmVyZWQgb3ZlciBsZWdhY3kgb25lcy4KPiArICoKPiArICogVGhlIE1N SU8gYmFzZWQgY29tbXVuaWNhdGlvbiBpcyBtYWlubHkgdXNlZCBkdXJpbmcgZHJpdmVyIGluaXRp YWxpemF0aW9uCj4gKyAqIHBoYXNlIHRvIHNldHVwIHRoZSBDVEIgYmFzZWQgY29tbXVuaWNhdGlv biB0aGF0IHdpbGwgYmUgdXNlZCBhZnRlcndhcmRzLgo+ICsgKgo+ICsgKiBEZXRhaWxzIG9mIHRo ZSBtZXNzYWdlcyBmb3JtYXRzIGRlcGVuZCBvbiBHdUMgZmlybXdhcmUgdmVyc2lvbiBiZWluZyB1 c2VkCj4gKyAqIGJ5IHRoZSBob3N0IGRyaXZlci4gRG9jdW1lbnRlZCBoZXJlIG1lc3NhZ2VzIGFy ZSBmb3IgR3VDIDQ1LjAgYW5kIG5ld2VyLgo+ICsgKi8KPiArCj4gKyNkZWZpbmUgR1VDX01BWF9N TUlPX01TR19MRU4JCQk4CgpBcmUgd2Ugb2sgd2l0aCBub3QgaGF2aW5nIGFuIElOVEVMXyBwcmVm aXggdG8gYWxsIHRoZSBkZWZpbmVzPyBJJ20gbm90IApjb21wbGFpbmluZywgd2UgdXN1YWxseSBz dGljayB3aXRoIHRoYXQgcHJlZml4IGJ1dCBJJ20gbm90IHN1cmUgaWYgaXQgaXMgCmFuIGlyb24g cnVsZSBvciBub3QuCgo+ICsKPiArLyoqCj4gKyAqIERPQzogR3VDIE1NSU8gbWVzc2FnZSBmb3Jt YXQKPiArICoKPiArICogQml0cyBvZiB0aGUgZmlyc3Qgc2NyYXRjaCByZWdpc3RlciBhcmUgdHJl YXRlZCBhcyBhIG1lc3NhZ2UgaGVhZGVyLAo+ICsgKiBhbmQgb3RoZXIgcmVnaXN0ZXJzIHZhbHVl cyBhcmUgdXNlZCB0byBob2xkIG1lc3NhZ2UgcGF5bG9hZCAoZGF0YSk6Ogo+ICsgKgo+ICsgKiAg ICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Kwo+ICsgKiAgICAgIHwgIFNDUkFUQ0ggIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfAo+ICsgKiAgICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiAgICAgIHwgMCB8IDMxOjI4IHwgbWVz c2FnZSBPUklHSU4vVFlQRSAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiAgICAgIHwgICB8 IDI3OjI0IHwgbWVzc2FnZSBNQUdJQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsg KiAgICAgIHwgICB8ICAyMzowIHwgbWVzc2FnZSBEQVRBMCAoZGVwZW5kcyBvbiBUWVBFKSAgICAg ICAgICAgfAo+ICsgKiAgICAgICstLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiAgICAgIHwgMSB8ICAzMTowIHwgbWVzc2FnZSBEQVRB MSAoZGVwZW5kcyBvbiBUWVBFKSAgICAgICAgICAgfAo+ICsgKiAgICAgIHwuLi58ICAgICAgIHwg bWVzc2FnZSBEQVRBMiAoZGVwZW5kcyBvbiBUWVBFKSAgICAgICAgICAgfAo+ICsgKiAgICAgIHwg biB8ICAgICAgIHwgbWVzc2FnZSBEQVRBMyAoZGVwZW5kcyBvbiBUWVBFKSAgICAgICAgICAgfAo+ ICsgKiAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Kwo+ICsgKgo+ICsgKiBXaGVyZToKPiArICogIC0gKipUWVBFKiogaXMgYSA0YiBt ZXNzYWdlIHR5cGUgaWRlbnRpZmllci4KPiArICogIC0gKipNQUdJQyoqIGlzIGEgNGIgbWVzc2Fn ZSBzZXF1ZW5jZSBudW1iZXIuCj4gKyAqICAgIFRoZSBzYW1lIHNlcXVlbmNlIG51bWJlciBtdXN0 IGJlIGluY2x1ZGVkIGluIGFsbCByZWxhdGVkIG1lc3NhZ2VzLgo+ICsgKiAgICBUaGlzIGZpZWxk IGlzIHVzZWQgZm9yIHRyYWNraW5nIGFuZCBkZWJ1ZyBwdXJwb3Nlcy4KCkkgZG9uJ3QgdGhpbmsg Im1hZ2ljIiBpcyBhIGNsZWFyIGVub3VnaCBuYW1lIGZvciB0aGUgcm9sZSBvZiB0aGUgZmllbGQu IAoiUmVxdWVzdCBpZCIgb3Igc29tZXRoaW5nIGxpa2UgdGhhdCB3b3VsZCBiZSBtb3JlIGFwcHJv cHJpYXRlIElNTy4KCj4gKyAqICAtICoqREFUQTAuLjMqKiBiaXRzIHJlcHJlc2VudHMgbWVzc2Fn ZSBwYXlsb2FkLgo+ICsgKiAgICBEZWZpbml0aW9ucyBvZiB0aGVzZSBiaXRzIGRlcGVuZHMgb24g bWVzc2FnZSAqKlRZUEUqKi4KPiArICoKPiArICogVGhlIE1TQiBvZiB0aGUgaGVhZGVyIGFuZCAq KlRZUEUqKiBpbmRpY2F0ZXMgb3JpZ2luIG9mIHRoZSBtZXNzYWdlOgo+ICsgKiAgLSAwIC0gbWVz c2FnZSBmcm9tIHRoZSBIb3N0Cj4gKyAqICAtIDEgLSBtZXNzYWdlIGZyb20gdGhlIEd1Qwo+ICsg Kgo+ICsgKiBDdXJyZW50bHkgc3VwcG9ydGVkIG1lc3NhZ2UgdHlwZXMgYXJlOgo+ICsgKiAgLSAw eDAgLSAqKlJFUVVFU1QqKiAtIHJlcHJlc2VudHMgSG9zdCByZXF1ZXN0IG1lc3NhZ2UgdG8gdGhl IEd1Qwo+ICsgKiAgLSAweEYgLSAqKlNVQ0NFU1MgUkVTUE9OU0UqKiAtIEd1QyByZXBseSBmb3Ig dGhlIGVhcmxpZXIgcmVxdWVzdAo+ICsgKiAgLSAweEUgLSAqKkVSUk9SIFJFU1BPTlNFKiogLSBH dUMgZmFpbHVyZSByZXBseSBmb3IgdGhlIGVhcmxpZXIgcmVxdWVzdAo+ICsgKiAgLSAweEIgLSAq KkJVU1kqKiAtIEd1QyB3aWxsIGJlIHByb2Nlc3NpbmcgcmVxdWVzdCBmb3IgdGhlIGxvbmdlciB0 aW1lCj4gKyAqLwo+ICsKPiArI2RlZmluZSBHVUNfTU1JT19NU0dfT1JJR0lOCQkJKDB4MSA8PCAz MSkKPiArI2RlZmluZSAgIEdVQ19NTUlPX01TR19PUklHSU5fSE9TVAkJMHUKPiArI2RlZmluZSAg IEdVQ19NTUlPX01TR19PUklHSU5fR1VDCQkxdQo+ICsKPiArI2RlZmluZSBHVUNfTU1JT19NU0df VFlQRQkJCSgweEYgPDwgMjgpCj4gKyNkZWZpbmUgICBHVUNfTU1JT19NU0dfVFlQRV9SRVFVRVNU CQkweDAKPiArI2RlZmluZSAgIEdVQ19NTUlPX01TR19UWVBFX1JFU1BPTlNFCQkweEYKPiArI2Rl ZmluZSAgIEdVQ19NTUlPX01TR19UWVBFX0VSUk9SCQkweEUKPiArI2RlZmluZSAgIEdVQ19NTUlP X01TR19UWVBFX0JVU1kJCTB4Qgo+ICsKPiArI2RlZmluZSBHVUNfTU1JT19NU0dfTUFHSUMJCQko MHhGIDw8IDI0KQo+ICsjZGVmaW5lICAgR1VDX01NSU9fTVNHX01BR0lDX0RFRkFVTFQJCTB1Cj4g Kwo+ICsvKioKPiArICogRE9DOiBHdUMgTU1JTyBIMkcgUkVRVUVTVAo+ICsgKgo+ICsgKiBUaGUg TU1JTyBIMkcgUkVRVUVTVCBtZXNzYWdlIGlzIHVzZWQgYnkgdGhlIEhvc3QgdG8gcmVxdWVzdCBz b21lIGFjdGlvbgo+ICsgKiB0byBiZSBwZXJmb3JtZWQgYnkgdGhlIEd1Qzo6Cj4gKyAqCj4gKyAq ICAgICAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0rCj4gKyAqICAgICAgfCAgU0NSQVRDSCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCj4gKyAqICAgICAgfCAwIHwgMzE6MjggfCBt ZXNzYWdlIFRZUEUgPSAweDAgPSBSRVFVRVNUICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgfCAg IHwgMjc6MjQgfCBtZXNzYWdlIE1BR0lDICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4g KyAqICAgICAgfCAgIHwgMjM6MTYgfCByZXF1ZXN0IFNVQkNPREUgKGRlcGVuZHMgb24gQUNUSU9O KSAgICAgICB8Cj4gKyAqICAgICAgfCAgIHwgIDE1OjAgfCByZXF1ZXN0IEFDVElPTiBjb2RlICAg ICAgICAgICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICAgICAgfCAxIHwgIDMxOjAg fCByZXF1ZXN0IERBVEExIChkZXBlbmRzIG9uIEFDVElPTi9TVUJDT0RFKSB8Cj4gKyAqICAgICAg fC4uLnwgICAgICAgfCByZXF1ZXN0IERBVEEyIChkZXBlbmRzIG9uIEFDVElPTi9TVUJDT0RFKSB8 Cj4gKyAqICAgICAgfCBuIHwgIDMxOjAgfCByZXF1ZXN0IERBVEEzIChkZXBlbmRzIG9uIEFDVElP Ti9TVUJDT0RFKSB8Cj4gKyAqICAgICAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0rCj4gKyAqCj4gKyAqIFdoZXJlOgo+ICsgKiAgLSAqKlRZ UEUqKiBtdXN0IGJlIHNldCB0byB2YWx1ZSAweDAuCj4gKyAqICAtICoqTUFHSUMqKiBtZXNzYWdl IHNlcXVlbmNlIG51bWJlciBpcyBnZW5lcmF0ZWQgYnkgdGhlIGhvc3QuCj4gKyAqICAtICoqQUNU SU9OKiogcmVwcmVzZW50cyAxNmIgcmVxdWVzdCBhY3Rpb24gY29kZSB0aGF0IGRlZmluZXMgYm90 aAo+ICsgKiAgICBwdXJwb3NlIG9mIHRoZSByZXF1ZXN0IGFuZCBmb3JtYXQgb2YgdGhlIHBhc3Nl ZCBwYXlsb2FkIGRhdGEuCj4gKyAqICAgIExpc3Qgb2Ygc3VwcG9ydGVkIGNvZGVzIGRlcGVuZHMg b24gR3VDIHZlcnNpb24gYW5kIHBsYWZvcm0uCj4gKyAqICAgIEFjdGlvbiBjb2RlIGNhbid0IGJl IHplcm8uCj4gKyAqICAtICoqU1VCQ09ERSoqIGlzIG9wdGlvbmFsIDhiIGRhdGEgcmVsYXRlZCB0 byB0aGUgKipBQ1RJT04qKi4KPiArICogICAgTUJaIGlmIG5vdCBleHBsaWNpdGx5IGRlZmluZWQg YnkgZ2l2ZW4gKipBQ1RJT04qKi4KPiArICogIC0gKipEQVRBMS4uMyoqIGFyZSBvcHRpb25hbCAz MmIgcGF5bG9hZCBkd29yZHMgcmVsYXRlZCB0byAqKkFDVElPTioqLgo+ICsgKiAgICBGb3JtYXQg b2YgZWFjaCBkd29yZCBpcyBkZWZpbmVkIGJ5IHNwZWNpZmljICoqQUNUSU9OKiouCj4gKyAqLwo+ ICsKPiArI2RlZmluZSBHVUNfTU1JT19SRVFVRVNUX1NVQkNPREUJCSgweEZGIDw8IDE2KQo+ICsj ZGVmaW5lIEdVQ19NTUlPX1JFUVVFU1RfQUNUSU9OCQkJKDB4RkZGRiA8PCAwKQo+ICsjZGVmaW5l ICAgR1VDX0FDVElPTl9JTlZBTElECQkJMHgwMDAwCj4gKyNkZWZpbmUgICBHVUNfQUNUSU9OX1JF R0lTVEVSX0NUQgkJMHg0NTA1Cj4gKyNkZWZpbmUgICBHVUNfQUNUSU9OX0RFUkVHSVNURVJfQ1RC CQkweDQ1MDYKClRoZXNlIGFyZSBub3cgZGVmaW5lZCB0d2ljZSAob25jZSBoZXJlIGFuZCBvbmNl IGluIHRoZSBlbnVtKS4gV2Ugc2hvdWxkIApwaWNrIG9uZSBmb3IgY29uc2lzdGVuY3kuCgo+ICsK PiArLyoqCj4gKyAqIERPQzogR3VDIE1NSU8gRzJIIFNVQ0NFU1MgUkVTUE9OU0UKPiArICoKPiAr ICogVGhlIE1NSU8gRzJIIFNVQ0NFU1MgUkVTUE9OU0UgbWVzc2FnZSBpcyB1c2VkIGJ5IHRoZSBH dUMgdG8gcmVwbHkgdG8KPiArICogdGhlIGVhcmxpZXIgSDJHIHJlcXVlc3QgbWVzc2FnZS4gVGhp cyBtZXNzYWdlIGlzIHVzZWQgaWYgbm8gZXJyb3JzCj4gKyAqIHdlcmUgZW5jb3VudGVyZWQgYnkg dGhlIEd1QyBkdXJpbmcgcHJvY2Vzc2luZyBvZiB0aGUgcmVxdWVzdDo6Cj4gKyAqCj4gKyAqICAg ICAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0rCj4gKyAqICAgICAgfCAgU0NSQVRDSCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0rCj4gKyAqICAgICAgfCAwIHwgMzE6MjggfCBtZXNz YWdlIFRZUEUgPSAweEYgPSBTVUNDRVNTIFJFU1BPTlNFICAgICB8Cj4gKyAqICAgICAgfCAgIHwg Mjc6MjQgfCBtZXNzYWdlIE1BR0lDICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gKyAq ICAgICAgfCAgIHwgIDIzOjAgfCByZXNwb25zZSBEQVRBMCAoZGVwZW5kcyBvbiBBQ1RJT04vU1VC Q09ERSl8Cj4gKyAqICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICAgICAgfCAxIHwgIDMxOjAgfCByZXNwb25zZSBEQVRB MSAoZGVwZW5kcyBvbiBBQ1RJT04vU1VCQ09ERSl8Cj4gKyAqICAgICAgfC4uLnwgICAgICAgfCBy ZXNwb25zZSBEQVRBMiAoZGVwZW5kcyBvbiBBQ1RJT04vU1VCQ09ERSl8Cj4gKyAqICAgICAgfCBu IHwgIDMxOjAgfCByZXNwb25zZSBEQVRBMyAoZGVwZW5kcyBvbiBBQ1RJT04vU1VCQ09ERSl8Cj4g KyAqICAgICAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0rCj4gKyAqCj4gKyAqIFdoZXJlOgo+ICsgKiAgLSAqKlRZUEUqKiBtdXN0IGJlIHNl dCB0byB2YWx1ZSAweEYuCj4gKyAqICAtICoqTUFHSUMqKiBtdXN0IG1hdGNoIHZhbHVlIHVzZWQg YnkgdGhlIGhvc3QgaW4gKipSRVFVRVNUKiogbWVzc2FnZS4KPiArICogIC0gKipEQVRBKiogaXMg b3B0aW9uYWwgcGF5bG9hZCBkYXRhIHJlbGF0ZWQgdG8gKipBQ1RJT04qKi4KPiArICogICAgRm9y bWF0IGlzIGRlZmluZWQgYnkgZWFjaCAqKkFDVElPTioqIHNlcGFyYXRlbHkuCj4gKyAqLwo+ICsK PiArI2RlZmluZSBHVUNfTU1JT19SRVNQT05TRV9EQVRBMAkJCSgweEZGRkZGRiA8PCAwKQo+ICsK PiArLyoqCj4gKyAqIERPQzogR3VDIE1NSU8gRzJIIEVSUk9SIFJFU1BPTlNFCj4gKyAqCj4gKyAq IFRoZSBNTUlPIEcySCBFUlJPUiBSRVNQT05TRSBtZXNzYWdlIGlzIHVzZWQgYnkgdGhlIEd1QyB0 byByZXBseSB0bwo+ICsgKiB0aGUgZWFybGllciBIMkcgcmVxdWVzdCBtZXNzYWdlLiBUaGlzIG1l c3NhZ2UgaXMgdXNlZCBpZiBzb21lIGVycm9ycwo+ICsgKiB3ZXJlIGVuY291bnRlcmVkIGJ5IHRo ZSBHdUMgZHVyaW5nIHByb2Nlc3Npbmcgb2YgdGhlIHJlcXVlc3Q6Ogo+ICsgKgo+ICsgKiAgICAg ICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Kwo+ICsgKiAgICAgIHwgIFNDUkFUQ0ggIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfAo+ICsgKiAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Kwo+ICsgKiAgICAgIHwgMCB8IDMxOjI4IHwgbWVzc2Fn ZSBUWVBFID0gMHhFID0gRVJST1IgUkVTUE9OU0UgICAgICAgfAo+ICsgKiAgICAgIHwgICB8IDI3 OjI0IHwgbWVzc2FnZSBNQUdJQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiAg ICAgIHwgICB8IDIzOjE2IHwgcmVzZXJ2ZWQgTUJaICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfAo+ICsgKiAgICAgIHwgICB8ICAxNTowIHwgcmVzcG9uc2UgU1RBVFVTIGZhaWx1cmUgY29k ZSAgICAgICAgICAgICAgfAo+ICsgKiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiAgICAgIHwgMSB8ICAzMTowIHwgcmVz ZXJ2ZWQgTUJaICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiAgICAgIHwuLi58 ICAgICAgIHwgcmVzZXJ2ZWQgTUJaICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsg KiAgICAgIHwgbiB8ICAzMTowIHwgcmVzZXJ2ZWQgTUJaICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfAo+ICsgKiAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Kwo+ICsgKgo+ICsgKiBXaGVyZToKPiArICogIC0gKipUWVBFKiog bXVzdCBiZSBzZXQgdG8gdmFsdWUgMHhFLgo+ICsgKiAgLSAqKk1BR0lDKiogbXVzdCBtYXRjaCB2 YWx1ZSB1c2VkIGJ5IHRoZSBob3N0IGluICoqUkVRVUVTVCoqIG1lc3NhZ2UuCj4gKyAqICAtICoq U1RBVFVTKiogcmVwcmVzZW50cyBub24temVybyBmYWlsdXJlIGNvZGUuCj4gKyAqLwo+ICsKPiAr I2RlZmluZSBHVUNfTU1JT19FUlJPUl9TVEFUVVMJCQkoMHhGRkZGIDw8IDApCj4gKyNkZWZpbmUg ICBHVUNfU1RBVFVTX1VOS05PV05fQUNUSU9OCQkweDMwCj4gKyNkZWZpbmUgICBHVUNfU1RBVFVT X0lOVkFMSURfUEFSQU1TCQkweDYwCj4gKyNkZWZpbmUgICBHVUNfU1RBVFVTX0lOVkFMSURfQURE UgkJMHg4MAo+ICsjZGVmaW5lICAgR1VDX1NUQVRVU19DVFhfTk9UX1JFR0lTVEVSRUQJCTB4MTAw Cj4gKyNkZWZpbmUgICBHVUNfU1RBVFVTX05PX0xPQ0FMX01FTU9SWQkJMHgyMDAKPiArI2RlZmlu ZSAgIEdVQ19TVEFUVVNfTk9fVklSVFVBTElaQVRJT04JCTB4MzAwCj4gKyNkZWZpbmUgICBHVUNf U1RBVFVTX0NUQl9GVUxMCQkJMHgzMDEKPiArI2RlZmluZSAgIEdVQ19TVEFUVVNfVU5BVVRIT1JJ WkVEX1JFUVVFU1QJMHgzMDIKPiArI2RlZmluZSAgIEdVQ19TVEFUVVNfR0VORVJJQ19GQUlMCQkw eEYwMDAKPiArCj4gKy8qKgo+ICsgKiBET0M6IE1NSU8gRzJIIEJVU1kgUkVTUE9OU0UKPiArICoK PiArICogVGhlIE1NSU8gRzJIIEJVU1kgUkVTUE9OU0UgbWVzc2FnZSBpcyB1c2VkIGJ5IHRoZSBH dUMgdG8gcmVwbHkgdG8KPiArICogdGhlIGVhcmxpZXIgSDJHIHJlcXVlc3QgbWVzc2FnZS4gVGhp cyBtZXNzYWdlIGlzIHVzZWQgaWYgcHJvY2Vzc2luZwo+ICsgKiBvZiB0aGUgcmVxdWVzdCB3aWxs IHRha2UgbG9uZ2VyIHRpbWUgYW5kIGZpbmFsIFNVQ0NFU1MvRVJST1IgcmVzcG9uc2UKPiArICog bWVzc2FnZSB3aWxsIGJlIGRlbGl2ZXJlZCBsYXRlcjo6Cj4gKyAqCj4gKyAqICAgICAgKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCj4gKyAq ICAgICAgfCAgU0NSQVRDSCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8Cj4gKyAqICAgICAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0rCj4gKyAqICAgICAgfCAwIHwgMzE6MjggfCBtZXNzYWdlIFRZUEUg PSAweEIgPSBCVVNZIFJFU1BPTlNFICAgICAgICB8Cj4gKyAqICAgICAgfCAgIHwgMjc6MjQgfCBt ZXNzYWdlIE1BR0lDICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgfCAg IHwgIDIzOjAgfCByZXNlcnZlZCBNQlogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4g KyAqICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rCj4gKyAqICAgICAgfCAxIHwgIDMxOjAgfCByZXNlcnZlZCBNQlogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgfC4uLnwgICAgICAgfCByZXNlcnZlZCBN QlogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgfCBuIHwgIDMxOjAg fCByZXNlcnZlZCBNQlogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gKyAqICAgICAg Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0r Cj4gKyAqCj4gKyAqIFdoZXJlOgo+ICsgKiAgLSAqKlRZUEUqKiBtdXN0IGJlIHNldCB0byB2YWx1 ZSAweEIuCj4gKyAqICAtICoqTUFHSUMqKiBtdXN0IG1hdGNoIHZhbHVlIHVzZWQgYnkgdGhlIGhv c3QgaW4gKipSRVFVRVNUKiogbWVzc2FnZS4KPiArICogIC0gYWxsIG90aGVyIGJpdHMgYXJlIHJl c2VydmVkIGFzIE1CWi4KPiArICovCj4gKwo+ICsjZW5kaWYgLyogX19JTlRFTF9HVUNfQUJJX0hf XyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNf YWRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfYWRzLmMKPiBpbmRl eCBkNDQwNjEwMzNmMjMuLmU2NmNiZjFiZTMyMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfYWRzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF9ndWNfYWRzLmMKPiBAQCAtMTAsMTEgKzEwLDUyIEBACj4gICAKPiAgIC8q Cj4gICAgKiBUaGUgQWRkaXRpb25hbCBEYXRhIFN0cnVjdCAoQURTKSBoYXMgcG9pbnRlcnMgZm9y IGRpZmZlcmVudCBidWZmZXJzIHVzZWQgYnkKPiAtICogdGhlIEd1Qy4gT25lIHNpbmdsZSBnZW0g b2JqZWN0IGNvbnRhaW5zIHRoZSBBRFMgc3RydWN0IGl0c2VsZiAoZ3VjX2FkcyksIHRoZQo+IC0g KiBzY2hlZHVsaW5nIHBvbGljaWVzIChndWNfcG9saWNpZXMpLCBhIHN0cnVjdHVyZSBkZXNjcmli aW5nIGEgY29sbGVjdGlvbiBvZgo+IC0gKiByZWdpc3RlciBzZXRzIChndWNfbW1pb19yZWdfc3Rh dGUpIGFuZCBzb21lIGV4dHJhIHBhZ2VzIGZvciB0aGUgR3VDIHRvIHNhdmUKPiAtICogaXRzIGlu dGVybmFsIHN0YXRlIGZvciBzbGVlcC4KPiArICogdGhlIEd1Qy4gT25lIHNpbmdsZSBnZW0gb2Jq ZWN0IGNvbnRhaW5zIHRoZSBBRFMgc3RydWN0IGl0c2VsZiAoZ3VjX2FkcykgYW5kCj4gKyAqIGFs bCB0aGUgZXh0cmEgYnVmZmVycyBpbmRpcmVjdGx5IGxpbmtlZCB2aWEgdGhlIEFEUyBzdHJ1Y3Qn cyBlbnRpcmVzLgo+ICsgKgo+ICsgKiBMYXlvdXQgb2YgdGhlIEFEUyBibG9iIGFsbG9jYXRlZCBm b3IgdGhlIEd1QzoKPiArICoKPiArICogICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKyA8PT0gYmFzZQo+ICsgKiAgICAgIHwgZ3VjX2FkcyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsKPiArICogICAgICB8IGd1Y19wb2xpY2llcyAgICAgICAgICAgICAgICAg ICAgICAgICAgfAo+ICsgKiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rCj4gKyAqICAgICAgfCBndWNfZ3Rfc3lzdGVtX2luZm8gICAgICAgICAgICAgICAgICAg IHwKPiArICogICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ ICsgKiAgICAgIHwgZ3VjX2NsaWVudHNfaW5mbyAgICAgICAgICAgICAgICAgICAgICB8Cj4gKyAq ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPiArICogICAg ICB8IGd1Y19jdF9wb29sX2VudHJ5W3NpemVdICAgICAgICAgICAgICAgfAo+ICsgKiAgICAgICst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICAgICAgfCBwYWRk aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiArICogICAgICArLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8PT0gNEsgYWxpZ25lZAo+ICsgKiAgICAg IHwgcHJpdmF0ZSBkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPiArICogICAgICB8IHBhZGRp bmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiAgICAgICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDw9PSA0SyBhbGlnbmVkCj4gICAgKi8KCkkg dGhpbmsgaXQgd2UgY291bGQgZXhwYW5kIHRoZSBjb21tZW50IChvciBhZGQgYSBuZXcgb25lKSB0 byBtYWtlIGNsZWFyIAp0aGF0IHRoZSBwcml2YXRlIGRhdGEgaXMgbm90IGluY2x1ZGVkIGluIHRo ZSBfX2d1Y19hZHNfYmxvYiB0byBrZWVwIAp0aGluZ3Mgc2ltcGxlIHNpbmNlIGl0IGlzIHZhcmlh YmxlIGluIHNpemUsIGJ1dCBpdCBpcyBzdGlsbCBwYXJ0IG9mIHRoZSAKYWRzX2Jsb2JwYXNzZXMg dG8gR3VDLgoKPiArc3RydWN0IF9fZ3VjX2Fkc19ibG9iIHsKPiArCXN0cnVjdCBndWNfYWRzIGFk czsKPiArCXN0cnVjdCBndWNfcG9saWNpZXMgcG9saWNpZXM7Cj4gKwlzdHJ1Y3QgZ3VjX2d0X3N5 c3RlbV9pbmZvIHN5c3RlbV9pbmZvOwo+ICsJc3RydWN0IGd1Y19jbGllbnRzX2luZm8gY2xpZW50 c19pbmZvOwo+ICsJc3RydWN0IGd1Y19jdF9wb29sX2VudHJ5IGN0X3Bvb2xbR1VDX0NUX1BPT0xf U0laRV07Cj4gK30gX19wYWNrZWQ7Cj4gKwo+ICtzdGF0aWMgdTMyIGd1Y19hZHNfcHJpdmF0ZV9k YXRhX3NpemUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICt7Cj4gKwlyZXR1cm4gUEFHRV9BTElH TihndWMtPmZ3LnByaXZhdGVfZGF0YV9zaXplKTsKPiArfQo+ICsKPiArc3RhdGljIHUzMiBndWNf YWRzX3ByaXZhdGVfZGF0YV9vZmZzZXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICt7Cj4gKwly ZXR1cm4gUEFHRV9BTElHTihzaXplb2Yoc3RydWN0IF9fZ3VjX2Fkc19ibG9iKSk7Cj4gK30KPiAr Cj4gK3N0YXRpYyB1MzIgZ3VjX2Fkc19ibG9iX3NpemUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ ICt7Cj4gKwlyZXR1cm4gZ3VjX2Fkc19wcml2YXRlX2RhdGFfb2Zmc2V0KGd1YykgKwo+ICsJICAg ICAgIGd1Y19hZHNfcHJpdmF0ZV9kYXRhX3NpemUoZ3VjKTsKPiArfQo+ICAgCj4gICBzdGF0aWMg dm9pZCBndWNfcG9saWN5X2luaXQoc3RydWN0IGd1Y19wb2xpY3kgKnBvbGljeSkKPiAgIHsKPiBA QCAtNDgsMjMgKzg5LDMzIEBAIHN0YXRpYyB2b2lkIGd1Y19jdF9wb29sX2VudHJpZXNfaW5pdChz dHJ1Y3QgZ3VjX2N0X3Bvb2xfZW50cnkgKnBvb2wsIHUzMiBudW0pCj4gICAJbWVtc2V0KHBvb2ws IDAsIG51bSAqIHNpemVvZigqcG9vbCkpOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyB2b2lkIGd1Y19t YXBwaW5nX3RhYmxlX2luaXQoc3RydWN0IGludGVsX2d0ICpndCwKPiArCQkJCSAgIHN0cnVjdCBn dWNfZ3Rfc3lzdGVtX2luZm8gKnN5c3RlbV9pbmZvKQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQgaSwg ajsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiArCWVudW0gaW50ZWxfZW5n aW5lX2lkIGlkOwo+ICsKPiArCS8qIFRhYmxlIG11c3QgYmUgc2V0IHRvIGludmFsaWQgdmFsdWVz IGZvciBlbnRyaWVzIG5vdCB1c2VkICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgR1VDX01BWF9FTkdJ TkVfQ0xBU1NFUzsgKytpKQo+ICsJCWZvciAoaiA9IDA7IGogPCBHVUNfTUFYX0lOU1RBTkNFU19Q RVJfQ0xBU1M7ICsraikKPiArCQkJc3lzdGVtX2luZm8tPm1hcHBpbmdfdGFibGVbaV1bal0gPQo+ ICsJCQkJR1VDX01BWF9JTlNUQU5DRVNfUEVSX0NMQVNTOwo+ICsKPiArCWZvcl9lYWNoX2VuZ2lu ZShlbmdpbmUsIGd0LCBpZCkgewo+ICsJCXU4IGd1Y19jbGFzcyA9IGVuZ2luZS0+Y2xhc3M7Cj4g Kwo+ICsJCXN5c3RlbV9pbmZvLT5tYXBwaW5nX3RhYmxlW2d1Y19jbGFzc11bZW5naW5lLT5pbnN0 YW5jZV0KPiArCQkJPSBlbmdpbmUtPmluc3RhbmNlOwo+ICsJfQo+ICt9Cj4gKwo+ICAgLyoKPiAg ICAqIFRoZSBmaXJzdCA4MCBkd29yZHMgb2YgdGhlIHJlZ2lzdGVyIHN0YXRlIGNvbnRleHQsIGNv bnRhaW5pbmcgdGhlCj4gICAgKiBleGVjbGlzdHMgYW5kIHBwZ3R0IHJlZ2lzdGVycy4KPiAgICAq Lwo+ICAgI2RlZmluZSBMUl9IV19DT05URVhUX1NJWkUJKDgwICogc2l6ZW9mKHUzMikpCj4gICAK PiAtLyogVGhlIGFkcyBvYmogaW5jbHVkZXMgdGhlIHN0cnVjdCBpdHNlbGYgYW5kIGJ1ZmZlcnMg cGFzc2VkIHRvIEd1QyAqLwo+IC1zdHJ1Y3QgX19ndWNfYWRzX2Jsb2Igewo+IC0Jc3RydWN0IGd1 Y19hZHMgYWRzOwo+IC0Jc3RydWN0IGd1Y19wb2xpY2llcyBwb2xpY2llczsKPiAtCXN0cnVjdCBn dWNfbW1pb19yZWdfc3RhdGUgcmVnX3N0YXRlOwo+IC0Jc3RydWN0IGd1Y19ndF9zeXN0ZW1faW5m byBzeXN0ZW1faW5mbzsKPiAtCXN0cnVjdCBndWNfY2xpZW50c19pbmZvIGNsaWVudHNfaW5mbzsK PiAtCXN0cnVjdCBndWNfY3RfcG9vbF9lbnRyeSBjdF9wb29sW0dVQ19DVF9QT09MX1NJWkVdOwo+ IC0JdTggcmVnX3N0YXRlX2J1ZmZlcltHVUNfUzNfU0FWRV9TUEFDRV9QQUdFUyAqIFBBR0VfU0la RV07Cj4gLX0gX19wYWNrZWQ7Cj4gLQo+ICAgc3RhdGljIHZvaWQgX19ndWNfYWRzX2luaXQoc3Ry dWN0IGludGVsX2d1YyAqZ3VjKQo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBndWNf dG9fZ3QoZ3VjKTsKPiBAQCAtMTA3LDYgKzE1OCwxNiBAQCBzdGF0aWMgdm9pZCBfX2d1Y19hZHNf aW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gICAJYmxvYi0+c3lzdGVtX2luZm8udmVib3hf ZW5hYmxlX21hc2sgPSBWRUJPWF9NQVNLKGd0KTsKPiAgIAlibG9iLT5zeXN0ZW1faW5mby52ZGJv eF9zZmNfc3VwcG9ydF9tYXNrID0gZ3QtPmluZm8udmRib3hfc2ZjX2FjY2VzczsKPiAgIAo+ICsJ aWYgKElOVEVMX0dFTihndC0+aTkxNSkgPj0gMTIgJiYgIUlTX0RHRlgoZ3QtPmk5MTUpKSB7Cj4g KwkJdTMyIGRpc3RkYnJlZyA9IGludGVsX3VuY29yZV9yZWFkKGd0LT51bmNvcmUsCj4gKwkJCQkJ CSAgR0VOMTJfRElTVF9EQlNfUE9QVUxBVEVEKTsKPiArCQlibG9iLT5zeXN0ZW1faW5mby5udW1f b2ZfZG9vcmJlbGxzX3Blcl9zcWlkaSA9Cj4gKwkJCSgoZGlzdGRicmVnID4+IEdFTjEyX0RPT1JC RUxMU19QRVJfU1FJRElfU0hJRlQpICYKPiArCQkJIEdFTjEyX0RPT1JCRUxMU19QRVJfU1FJREkp ICsgMTsKPiArCX0KPiArCj4gKwlndWNfbWFwcGluZ190YWJsZV9pbml0KGd1Y190b19ndChndWMp LCAmYmxvYi0+c3lzdGVtX2luZm8pOwo+ICsKPiAgIAliYXNlID0gaW50ZWxfZ3VjX2dndHRfb2Zm c2V0KGd1YywgZ3VjLT5hZHNfdm1hKTsKPiAgIAo+ICAgCS8qIENsaWVudHMgaW5mbyAgKi8KPiBA QCAtMTE4LDExICsxNzksMTIgQEAgc3RhdGljIHZvaWQgX19ndWNfYWRzX2luaXQoc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQo+ICAgCj4gICAJLyogQURTICovCj4gICAJYmxvYi0+YWRzLnNjaGVkdWxl cl9wb2xpY2llcyA9IGJhc2UgKyBwdHJfb2Zmc2V0KGJsb2IsIHBvbGljaWVzKTsKPiAtCWJsb2It PmFkcy5yZWdfc3RhdGVfYnVmZmVyID0gYmFzZSArIHB0cl9vZmZzZXQoYmxvYiwgcmVnX3N0YXRl X2J1ZmZlcik7Cj4gLQlibG9iLT5hZHMucmVnX3N0YXRlX2FkZHIgPSBiYXNlICsgcHRyX29mZnNl dChibG9iLCByZWdfc3RhdGUpOwo+ICAgCWJsb2ItPmFkcy5ndF9zeXN0ZW1faW5mbyA9IGJhc2Ug KyBwdHJfb2Zmc2V0KGJsb2IsIHN5c3RlbV9pbmZvKTsKPiAgIAlibG9iLT5hZHMuY2xpZW50c19p bmZvID0gYmFzZSArIHB0cl9vZmZzZXQoYmxvYiwgY2xpZW50c19pbmZvKTsKPiAgIAo+ICsJLyog UHJpdmF0ZSBEYXRhICovCj4gKwlibG9iLT5hZHMucHJpdmF0ZV9kYXRhID0gYmFzZSArIGd1Y19h ZHNfcHJpdmF0ZV9kYXRhX29mZnNldChndWMpOwo+ICsKPiAgIAlpOTE1X2dlbV9vYmplY3RfZmx1 c2hfbWFwKGd1Yy0+YWRzX3ZtYS0+b2JqKTsKPiAgIH0KPiAgIAo+IEBAIC0xMzUsMTQgKzE5Nywx NSBAQCBzdGF0aWMgdm9pZCBfX2d1Y19hZHNfaW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4g ICAgKi8KPiAgIGludCBpbnRlbF9ndWNfYWRzX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMp Cj4gICB7Cj4gLQljb25zdCB1MzIgc2l6ZSA9IFBBR0VfQUxJR04oc2l6ZW9mKHN0cnVjdCBfX2d1 Y19hZHNfYmxvYikpOwo+ICsJdTMyIHNpemU7Cj4gICAJaW50IHJldDsKPiAgIAo+ICAgCUdFTV9C VUdfT04oZ3VjLT5hZHNfdm1hKTsKPiAgIAo+ICsJc2l6ZSA9IGd1Y19hZHNfYmxvYl9zaXplKGd1 Yyk7Cj4gKwo+ICAgCXJldCA9IGludGVsX2d1Y19hbGxvY2F0ZV9hbmRfbWFwX3ZtYShndWMsIHNp emUsICZndWMtPmFkc192bWEsCj4gICAJCQkJCSAgICAgKHZvaWQgKiopJmd1Yy0+YWRzX2Jsb2Ip Owo+IC0KPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTE1Niw2ICsy MTksMTggQEAgdm9pZCBpbnRlbF9ndWNfYWRzX2Rlc3Ryb3koc3RydWN0IGludGVsX2d1YyAqZ3Vj KQo+ICAgCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZndWMtPmFkc192bWEsIEk5MTVfVk1B X1JFTEVBU0VfTUFQKTsKPiAgIH0KPiAgIAo+ICt2b2lkIGd1Y19hZHNfcHJpdmF0ZV9kYXRhX3Jl c2V0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiArewo+ICsJdTMyIHNpemU7Cj4gKwo+ICsJc2l6 ZSA9IGd1Y19hZHNfcHJpdmF0ZV9kYXRhX3NpemUoZ3VjKTsKPiArCWlmICghc2l6ZSkKPiArCQly ZXR1cm47Cj4gKwo+ICsJbWVtc2V0KCh2b2lkICopZ3VjLT5hZHNfYmxvYiArIGd1Y19hZHNfcHJp dmF0ZV9kYXRhX29mZnNldChndWMpLCAwLAo+ICsJICAgICAgIHNpemUpOwo+ICt9Cj4gKwo+ICAg LyoqCj4gICAgKiBpbnRlbF9ndWNfYWRzX3Jlc2V0KCkgLSBwcmVwYXJlcyBHdUMgQWRkaXRpb25h bCBEYXRhIFN0cnVjdCBmb3IgcmV1c2UKPiAgICAqIEBndWM6IGludGVsX2d1YyBzdHJ1Y3QKPiBA QCAtMTY4LDUgKzI0Myw4IEBAIHZvaWQgaW50ZWxfZ3VjX2Fkc19yZXNldChzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCj4gICB7Cj4gICAJaWYgKCFndWMtPmFkc192bWEpCj4gICAJCXJldHVybjsKPiAr Cj4gICAJX19ndWNfYWRzX2luaXQoZ3VjKTsKPiArCj4gKwlndWNfYWRzX3ByaXZhdGVfZGF0YV9y ZXNldChndWMpOwo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91 Yy9pbnRlbF9ndWNfZncuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19m dy5jCj4gaW5kZXggZDRhODdmNGM5NDIxLi4yMTJkZTBhOTM5YmYgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3LmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZncuYwo+IEBAIC03NCw4ICs3NCw5IEBAIHN0YXRp YyBpbmxpbmUgYm9vbCBndWNfcmVhZHkoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLCB1MzIg KnN0YXR1cykKPiAgIAkJKCh2YWwgJiBHU19NSUFfQ09SRV9TVEFURSkgJiYgKHVrX3ZhbCA9PSBH U19VS0VSTkVMX0xBUElDX0RPTkUpKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50IGd1Y193YWl0 X3Vjb2RlKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKPiArc3RhdGljIGludCBndWNfd2Fp dF91Y29kZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+ICAgewo+ICsJc3RydWN0IGludGVsX3VuY29y ZSAqdW5jb3JlID0gZ3QtPnVuY29yZTsKClRoZSBndCBzZWVtcyB0byBiZSB1c2VkIG9ubHkgZm9y IGd0LT5pOTE1LCB3aHkgbm90IGp1c3QgdXNlIHVuY29yZS0+aTkxNT8KCj4gICAJdTMyIHN0YXR1 czsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gQEAgLTkzLDEyICs5NCwyNCBAQCBzdGF0aWMgaW50IGd1 Y193YWl0X3Vjb2RlKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKPiAgIAlpZiAoKHN0YXR1 cyAmIEdTX0JPT1RST01fTUFTSykgPT0gR1NfQk9PVFJPTV9SU0FfRkFJTEVEKSB7Cj4gICAJCURS TV9FUlJPUigiR3VDIGZpcm13YXJlIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZmFpbGVkXG4iKTsK PiAgIAkJcmV0ID0gLUVOT0VYRUM7Cj4gLQl9Cj4gLQo+ICsJfSBlbHNlCj4gICAJaWYgKChzdGF0 dXMgJiBHU19VS0VSTkVMX01BU0spID09IEdTX1VLRVJORUxfRVhDRVBUSU9OKSB7Cj4gICAJCURS TV9FUlJPUigiR3VDIGZpcm13YXJlIGV4Y2VwdGlvbi4gRUlQOiAlI3hcbiIsCj4gICAJCQkgIGlu dGVsX3VuY29yZV9yZWFkKHVuY29yZSwgU09GVF9TQ1JBVENIKDEzKSkpOwo+ICAgCQlyZXQgPSAt RU5YSU87Cj4gKwl9IGVsc2UKPiArCWlmIChyZXQpIHsKPiArCQlpOTE1X3Byb2JlX2Vycm9yKGd0 LT5pOTE1LCAiR3VDIGxvYWQgZmFpbGVkOiBzdGF0dXMgPSAweCUwOFhcbiIsCj4gKwkJCQkgc3Rh dHVzKTsKPiArCQlpOTE1X3Byb2JlX2Vycm9yKGd0LT5pOTE1LCAiR3VDIHN0YXR1czogUmVzZXQg PSAlZCwgIgo+ICsJCQkJICJCb290Uk9NID0gMHglMDJYLCBVS2VybmVsID0gMHglMDJYLCAiCj4g KwkJCQkgIk1JQSA9IDB4JTAyWCwgQXV0aCA9IDB4JTAyWFxuIiwKPiArCQkJCSAoc3RhdHVzID4+ IEdTX1JFU0VUX1NISUZUKSAmIDEsCj4gKwkJCQkgKHN0YXR1cyAmIEdTX0JPT1RST01fTUFTSykg Pj4gR1NfQk9PVFJPTV9TSElGVCwKPiArCQkJCSAoc3RhdHVzICYgR1NfVUtFUk5FTF9NQVNLKSA+ PiBHU19VS0VSTkVMX1NISUZULAo+ICsJCQkJIChzdGF0dXMgJiBHU19NSUFfTUFTSykgPj4gR1Nf TUlBX1NISUZULAo+ICsJCQkJIChzdGF0dXMgJiBHU19BVVRIX1NUQVRVU19NQVNLKSA+Pgo+ICsJ CQkJCQkJICBHU19BVVRIX1NUQVRVU19TSElGVCk7CgpuaXQ6IEkgdGhpbmsgdXNpbmcgdGhlIEZJ RUxEX0dFVCBtYWNybyBoZXJlIGFzIHdlbGwgY291bGQgbWFrZSB0aGluZ3MgCmNsZWFuZXIKCj4g ICAJfQo+ICAgCj4gICAJcmV0dXJuIHJldDsKPiBAQCAtMTM5LDcgKzE1Miw3IEBAIGludCBpbnRl bF9ndWNfZndfdXBsb2FkKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgIAlpZiAocmV0KQo+ICAg CQlnb3RvIG91dDsKPiAgIAo+IC0JcmV0ID0gZ3VjX3dhaXRfdWNvZGUodW5jb3JlKTsKPiArCXJl dCA9IGd1Y193YWl0X3Vjb2RlKGd0KTsKPiAgIAlpZiAocmV0KQo+ICAgCQlnb3RvIG91dDsKPiAg IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZndp Zi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3aWYuaAo+IGluZGV4 IGE2YjczM2MxNDZjOS4uNzdlNDlkNTNiYjVjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3VjL2ludGVsX2d1Y19md2lmLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF9ndWNfZndpZi5oCj4gQEAgLTI3LDcgKzI3LDcgQEAKPiAgICNkZWZpbmUg R1VDX01BWF9FTkdJTkVTX05VTQkJKEdVQ19WSURFT19FTkdJTkUyICsgMSkKPiAgIAo+ICAgI2Rl ZmluZSBHVUNfTUFYX0VOR0lORV9DTEFTU0VTCQk1Cj4gLSNkZWZpbmUgR1VDX01BWF9JTlNUQU5D RVNfUEVSX0NMQVNTCTE2Cj4gKyNkZWZpbmUgR1VDX01BWF9JTlNUQU5DRVNfUEVSX0NMQVNTCTMy Cj4gICAKPiAgICNkZWZpbmUgR1VDX0RPT1JCRUxMX0lOVkFMSUQJCTI1Ngo+ICAgCj4gQEAgLTYy LDEyICs2Miw3IEBACj4gICAjZGVmaW5lIEdVQ19TVEFHRV9ERVNDX0FUVFJfUENICQlCSVQoNikK PiAgICNkZWZpbmUgR1VDX1NUQUdFX0RFU0NfQVRUUl9URVJNSU5BVEVECUJJVCg3KQo+ICAgCj4g LS8qIE5ldyBHdUMgY29udHJvbCBkYXRhICovCj4gLSNkZWZpbmUgR1VDX0NUTF9DVFhJTkZPCQkJ MAo+IC0jZGVmaW5lICAgR1VDX0NUTF9DVFhOVU1fSU4xNl9TSElGVAkwCj4gLSNkZWZpbmUgICBH VUNfQ1RMX0JBU0VfQUREUl9TSElGVAkxMgo+IC0KPiAtI2RlZmluZSBHVUNfQ1RMX0xPR19QQVJB TVMJCTEKPiArI2RlZmluZSBHVUNfQ1RMX0xPR19QQVJBTVMJCTAKPiAgICNkZWZpbmUgICBHVUNf TE9HX1ZBTElECQkJKDEgPDwgMCkKPiAgICNkZWZpbmUgICBHVUNfTE9HX05PVElGWV9PTl9IQUxG X0ZVTEwJKDEgPDwgMSkKPiAgICNkZWZpbmUgICBHVUNfTE9HX0FMTE9DX0lOX01FR0FCWVRFCSgx IDw8IDMpCj4gQEAgLTc5LDExICs3NCwxMSBAQAo+ICAgI2RlZmluZSAgIEdVQ19MT0dfSVNSX01B U0sJICAgICAgICAoMHg3IDw8IEdVQ19MT0dfSVNSX1NISUZUKQo+ICAgI2RlZmluZSAgIEdVQ19M T0dfQlVGX0FERFJfU0hJRlQJMTIKPiAgIAo+IC0jZGVmaW5lIEdVQ19DVExfV0EJCQkyCj4gLSNk ZWZpbmUgR1VDX0NUTF9GRUFUVVJFCQkJMwo+ICsjZGVmaW5lIEdVQ19DVExfV0EJCQkxCj4gKyNk ZWZpbmUgR1VDX0NUTF9GRUFUVVJFCQkJMgo+ICAgI2RlZmluZSAgIEdVQ19DVExfRElTQUJMRV9T Q0hFRFVMRVIJKDEgPDwgMTQpCj4gICAKPiAtI2RlZmluZSBHVUNfQ1RMX0RFQlVHCQkJNAo+ICsj ZGVmaW5lIEdVQ19DVExfREVCVUcJCQkzCj4gICAjZGVmaW5lICAgR1VDX0xPR19WRVJCT1NJVFlf U0hJRlQJMAo+ICAgI2RlZmluZSAgIEdVQ19MT0dfVkVSQk9TSVRZX0xPVwkJKDAgPDwgR1VDX0xP R19WRVJCT1NJVFlfU0hJRlQpCj4gICAjZGVmaW5lICAgR1VDX0xPR19WRVJCT1NJVFlfTUVECQko MSA8PCBHVUNfTE9HX1ZFUkJPU0lUWV9TSElGVCkKPiBAQCAtOTcsMTIgKzkyLDMxIEBACj4gICAj ZGVmaW5lICAgR1VDX0xPR19ESVNBQkxFRAkJKDEgPDwgNikKPiAgICNkZWZpbmUgICBHVUNfUFJP RklMRV9FTkFCTEVECQkoMSA8PCA3KQo+ICAgCj4gLSNkZWZpbmUgR1VDX0NUTF9BRFMJCQk1Cj4g KyNkZWZpbmUgR1VDX0NUTF9BRFMJCQk0Cj4gICAjZGVmaW5lICAgR1VDX0FEU19BRERSX1NISUZU CQkxCj4gICAjZGVmaW5lICAgR1VDX0FEU19BRERSX01BU0sJCSgweEZGRkZGIDw8IEdVQ19BRFNf QUREUl9TSElGVCkKPiAgIAo+ICAgI2RlZmluZSBHVUNfQ1RMX01BWF9EV09SRFMJCShTT0ZUX1ND UkFUQ0hfQ09VTlQgLSAyKSAvKiBbMS4uMTRdICovCj4gICAKPiArLyoKPiArICogVGhlIGNsYXNz IGdvZXMgaW4gYml0cyBbMC4uMl0gb2YgdGhlIEd1QyBJRCwgdGhlIGluc3RhbmNlIGluIGJpdHMg WzMuLjZdLgo+ICsgKiBCaXQgNyBjYW4gYmUgdXNlZCBmb3Igb3BlcmF0aW9ucyB0aGF0IGFwcGx5 IHRvIGFsbCBlbmdpbmUgY2xhc3NlcyZpbnN0YW5jZXMuCj4gKyAqLwo+ICsjZGVmaW5lIEdVQ19F TkdJTkVfQ0xBU1NfU0hJRlQJCTAKPiArI2RlZmluZSBHVUNfRU5HSU5FX0NMQVNTX01BU0sJCSgw eDcgPDwgR1VDX0VOR0lORV9DTEFTU19TSElGVCkKPiArI2RlZmluZSBHVUNfRU5HSU5FX0lOU1RB TkNFX1NISUZUCTMKPiArI2RlZmluZSBHVUNfRU5HSU5FX0lOU1RBTkNFX01BU0sJKDB4ZiA8PCBH VUNfRU5HSU5FX0lOU1RBTkNFX1NISUZUKQo+ICsjZGVmaW5lIEdVQ19FTkdJTkVfQUxMX0lOU1RB TkNFUwkoMSA8PCA3KQo+ICsKPiArI2RlZmluZSBNQUtFX0dVQ19JRChjbGFzcywgaW5zdGFuY2Up IFwKPiArCSgoKGNsYXNzKSA8PCBHVUNfRU5HSU5FX0NMQVNTX1NISUZUKSB8IFwKPiArCSAoKGlu c3RhbmNlKSA8PCBHVUNfRU5HSU5FX0lOU1RBTkNFX1NISUZUKSkKPiArCj4gKyNkZWZpbmUgR1VD X0lEX1RPX0VOR0lORV9DTEFTUyhndWNfaWQpIFwKPiArCSgoKGd1Y19pZCkgJiBHVUNfRU5HSU5F X0NMQVNTX01BU0spID4+IEdVQ19FTkdJTkVfQ0xBU1NfU0hJRlQpCj4gKyNkZWZpbmUgR1VDX0lE X1RPX0VOR0lORV9JTlNUQU5DRShndWNfaWQpIFwKPiArCSgoKGd1Y19pZCkgJiBHVUNfRU5HSU5F X0lOU1RBTkNFX01BU0spID4+IEdVQ19FTkdJTkVfSU5TVEFOQ0VfU0hJRlQpCj4gKwo+ICAgLyog V29yayBpdGVtIGZvciBzdWJtaXR0aW5nIHdvcmtsb2FkcyBpbnRvIHdvcmsgcXVldWUgb2YgR3VD LiAqLwo+ICAgc3RydWN0IGd1Y193cV9pdGVtIHsKPiAgIAl1MzIgaGVhZGVyOwo+IEBAIC0zMzgs NyArMzUyLDYgQEAgc3RydWN0IGd1Y19wb2xpY2llcyB7Cj4gICAvKiBHdUMgTU1JTyByZWcgc3Rh dGUgc3RydWN0ICovCj4gICAKPiAgIAo+IC0jZGVmaW5lIEdVQ19SRUdTRVRfTUFYX1JFR0lTVEVS Uwk2NAo+ICAgI2RlZmluZSBHVUNfUzNfU0FWRV9TUEFDRV9QQUdFUwkJMTAKPiAgIAo+ICAgc3Ry dWN0IGd1Y19tbWlvX3JlZyB7Cj4gQEAgLTM0OCwxNiArMzYxLDE3IEBAIHN0cnVjdCBndWNfbW1p b19yZWcgewo+ICAgI2RlZmluZSBHVUNfUkVHU0VUX01BU0tFRAkJKDEgPDwgMCkKPiAgIH0gX19w YWNrZWQ7Cj4gICAKPiAtc3RydWN0IGd1Y19tbWlvX3JlZ3NldCB7Cj4gLQlzdHJ1Y3QgZ3VjX21t aW9fcmVnIHJlZ2lzdGVyc1tHVUNfUkVHU0VUX01BWF9SRUdJU1RFUlNdOwo+IC0JdTMyIHZhbHVl c192YWxpZDsKPiAtCXUzMiBudW1iZXJfb2ZfcmVnaXN0ZXJzOwo+IC19IF9fcGFja2VkOwo+IC0K PiAgIC8qIEd1QyByZWdpc3RlciBzZXRzICovCj4gLXN0cnVjdCBndWNfbW1pb19yZWdfc3RhdGUg ewo+IC0Jc3RydWN0IGd1Y19tbWlvX3JlZ3NldCBlbmdpbmVfcmVnW0dVQ19NQVhfRU5HSU5FX0NM QVNTRVNdW0dVQ19NQVhfSU5TVEFOQ0VTX1BFUl9DTEFTU107Cj4gLQl1MzIgcmVzZXJ2ZWRbOThd Owo+ICtzdHJ1Y3QgZ3VjX21taW9fcmVnX3NldCB7Cj4gKwl1MzIgYWRkcmVzczsKPiArCXVuaW9u IHsKPiArCQlzdHJ1Y3Qgewo+ICsJCQl1MzIgY291bnQ6MTY7Cj4gKwkJCXUzMiByZXNlcnZlZDE6 MTI7Cj4gKwkJCXUzMiByZXNlcnZlZDI6NDsKPiArCQl9Owo+ICsJCXUzMiBjb3VudF91MzI7Cj4g Kwl9Owo+ICAgfSBfX3BhY2tlZDsKPiAgIAo+ICAgLyogSFcgaW5mbyAqLwo+IEBAIC0zNjksNyAr MzgzLDkgQEAgc3RydWN0IGd1Y19ndF9zeXN0ZW1faW5mbyB7Cj4gICAJdTMyIHZkYm94X2VuYWJs ZV9tYXNrOwo+ICAgCXUzMiB2ZGJveF9zZmNfc3VwcG9ydF9tYXNrOwo+ICAgCXUzMiB2ZWJveF9l bmFibGVfbWFzazsKPiAtCXUzMiByZXNlcnZlZFs5XTsKPiArCXUzMiBudW1fb2ZfZG9vcmJlbGxz X3Blcl9zcWlkaTsKPiArCXU4IG1hcHBpbmdfdGFibGVbR1VDX01BWF9FTkdJTkVfQ0xBU1NFU11b R1VDX01BWF9JTlNUQU5DRVNfUEVSX0NMQVNTXTsKPiArCXUzMiByZXNlcnZlZDJbOF07Cj4gICB9 IF9fcGFja2VkOwo+ICAgCj4gICAvKiBDbGllbnRzIGluZm8gKi8KPiBAQCAtMzkwLDE1ICs0MDYs MTYgQEAgc3RydWN0IGd1Y19jbGllbnRzX2luZm8gewo+ICAgCj4gICAvKiBHdUMgQWRkaXRpb25h bCBEYXRhIFN0cnVjdCAqLwo+ICAgc3RydWN0IGd1Y19hZHMgewo+IC0JdTMyIHJlZ19zdGF0ZV9h ZGRyOwo+IC0JdTMyIHJlZ19zdGF0ZV9idWZmZXI7Cj4gKwlzdHJ1Y3QgZ3VjX21taW9fcmVnX3Nl dCByZWdfc3RhdGVfbGlzdFtHVUNfTUFYX0VOR0lORV9DTEFTU0VTXVtHVUNfTUFYX0lOU1RBTkNF U19QRVJfQ0xBU1NdOwo+ICsJdTMyIHJlc2VydmVkMDsKPiAgIAl1MzIgc2NoZWR1bGVyX3BvbGlj aWVzOwo+ICAgCXUzMiBndF9zeXN0ZW1faW5mbzsKPiAgIAl1MzIgY2xpZW50c19pbmZvOwo+ICAg CXUzMiBjb250cm9sX2RhdGE7Cj4gICAJdTMyIGdvbGRlbl9jb250ZXh0X2xyY2FbR1VDX01BWF9F TkdJTkVfQ0xBU1NFU107Cj4gICAJdTMyIGVuZ19zdGF0ZV9zaXplW0dVQ19NQVhfRU5HSU5FX0NM QVNTRVNdOwo+IC0JdTMyIHJlc2VydmVkWzE2XTsKPiArCXUzMiBwcml2YXRlX2RhdGE7Cj4gKwl1 MzIgcmVzZXJ2ZWRbMTVdOwo+ICAgfSBfX3BhY2tlZDsKPiAgIAo+ICAgLyogR3VDIGxvZ2dpbmcg c3RydWN0dXJlcyAqLwo+IEBAIC00NzQsNDkgKzQ5MSw2IEBAIHN0cnVjdCBndWNfc2hhcmVkX2N0 eF9kYXRhIHsKPiAgIAlzdHJ1Y3QgZ3VjX2N0eF9yZXBvcnQgcHJlZW1wdF9jdHhfcmVwb3J0W0dV Q19NQVhfRU5HSU5FU19OVU1dOwo+ICAgfSBfX3BhY2tlZDsKPiAgIAo+IC0vKioKPiAtICogRE9D OiBNTUlPIGJhc2VkIGNvbW11bmljYXRpb24KPiAtICoKPiAtICogVGhlIE1NSU8gYmFzZWQgY29t bXVuaWNhdGlvbiBiZXR3ZWVuIEhvc3QgYW5kIEd1QyB1c2VzIHNvZnR3YXJlIHNjcmF0Y2gKPiAt ICogcmVnaXN0ZXJzLCB3aGVyZSBmaXJzdCByZWdpc3RlciBob2xkcyBkYXRhIHRyZWF0ZWQgYXMg bWVzc2FnZSBoZWFkZXIsCj4gLSAqIGFuZCBvdGhlciByZWdpc3RlcnMgYXJlIHVzZWQgdG8gaG9s ZCBtZXNzYWdlIHBheWxvYWQuCj4gLSAqCj4gLSAqIEZvciBHZW45KywgR3VDIHVzZXMgc29mdHdh cmUgc2NyYXRjaCByZWdpc3RlcnMgMHhDMTgwLTB4QzFCOCwKPiAtICogYnV0IG5vIEgyRyBjb21t YW5kIHRha2VzIG1vcmUgdGhhbiA4IHBhcmFtZXRlcnMgYW5kIHRoZSBHdUMgRlcKPiAtICogaXRz ZWxmIHVzZXMgYW4gOC1lbGVtZW50IGFycmF5IHRvIHN0b3JlIHRoZSBIMkcgbWVzc2FnZS4KPiAt ICoKPiAtICogICAgICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r Cj4gLSAqICAgICAgfCAgTU1JT1swXSAgfCBNTUlPWzFdIHwgICAuLi4gICB8IE1NSU9bbl0gfAo+ IC0gKiAgICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSsKPiAt ICogICAgICB8IGhlYWRlciAgICB8ICAgICAgb3B0aW9uYWwgcGF5bG9hZCAgICAgICB8Cj4gLSAq ICAgICAgKz09PT09PSs9PT09Kz09PT09PT09PSs9PT09PT09PT0rPT09PT09PT09Kwo+IC0gKiAg ICAgIHwgMzE6Mjh8dHlwZXwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwKPiAtICogICAg ICArLS0tLS0tKy0tLS0rICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8Cj4gLSAqICAgICAg fCAyNzoxNnxkYXRhfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfAo+IC0gKiAgICAgICst LS0tLS0rLS0tLSsgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwKPiAtICogICAgICB8ICAx NTowfGNvZGV8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8Cj4gLSAqICAgICAgKy0tLS0t LSstLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKwo+IC0gKgo+IC0gKiBUaGUgbWVz c2FnZSBoZWFkZXIgY29uc2lzdHMgb2Y6Cj4gLSAqCj4gLSAqIC0gKip0eXBlKiosIGluZGljYXRl cyBtZXNzYWdlIHR5cGUKPiAtICogLSAqKmNvZGUqKiwgaW5kaWNhdGVzIG1lc3NhZ2UgY29kZSwg aXMgc3BlY2lmaWMgZm9yICoqdHlwZSoqCj4gLSAqIC0gKipkYXRhKiosIGluZGljYXRlcyBtZXNz YWdlIGRhdGEsIG9wdGlvbmFsLCBkZXBlbmRzIG9uICoqY29kZSoqCj4gLSAqCj4gLSAqIFRoZSBm b2xsb3dpbmcgbWVzc2FnZSAqKnR5cGVzKiogYXJlIHN1cHBvcnRlZDoKPiAtICoKPiAtICogLSAq KlJFUVVFU1QqKiwgaW5kaWNhdGVzIEhvc3QtdG8tR3VDIHJlcXVlc3QsIHJlcXVlc3RlZCBHdUMg YWN0aW9uIGNvZGUKPiAtICogICBtdXN0IGJlIHByaW92aWRlZCBpbiAqKmNvZGUqKiBmaWVsZC4g T3B0aW9uYWwgYWN0aW9uIHNwZWNpZmljIHBhcmFtZXRlcnMKPiAtICogICBjYW4gYmUgcHJvdmlk ZWQgaW4gcmVtYWluaW5nIHBheWxvYWQgcmVnaXN0ZXJzIG9yICoqZGF0YSoqIGZpZWxkLgo+IC0g Kgo+IC0gKiAtICoqUkVTUE9OU0UqKiwgaW5kaWNhdGVzIEd1Qy10by1Ib3N0IHJlc3BvbnNlIGZy b20gZWFybGllciBHdUMgcmVxdWVzdCwKPiAtICogICBhY3Rpb24gcmVzcG9uc2Ugc3RhdHVzIHdp bGwgYmUgcHJvdmlkZWQgaW4gKipjb2RlKiogZmllbGQuIE9wdGlvbmFsCj4gLSAqICAgcmVzcG9u c2UgZGF0YSBjYW4gYmUgcmV0dXJuZWQgaW4gcmVtYWluaW5nIHBheWxvYWQgcmVnaXN0ZXJzIG9y ICoqZGF0YSoqCj4gLSAqICAgZmllbGQuCj4gLSAqLwo+IC0KPiAtI2RlZmluZSBHVUNfTUFYX01N SU9fTVNHX0xFTgkJOAo+IC0KPiAgICNkZWZpbmUgSU5URUxfR1VDX01TR19UWVBFX1NISUZUCTI4 Cj4gICAjZGVmaW5lIElOVEVMX0dVQ19NU0dfVFlQRV9NQVNLCQkoMHhGIDw8IElOVEVMX0dVQ19N U0dfVFlQRV9TSElGVCkKPiAgICNkZWZpbmUgSU5URUxfR1VDX01TR19EQVRBX1NISUZUCTE2CgpU aGVzZSBHVUNfTVNHIGRlZmluZXMgYXJlIGFsc28gZHVwbGljYXRlZAoKRGFuaWVsZQoKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3JlZy5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3JlZy5oCj4gaW5kZXggMTk0OTM0NmU3 MTRlLi5iMzdmYzJmZmFlZjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv dWMvaW50ZWxfZ3VjX3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfZ3VjX3JlZy5oCj4gQEAgLTExOCw2ICsxMTgsMTEgQEAgc3RydWN0IGd1Y19kb29yYmVsbF9p bmZvIHsKPiAgICNkZWZpbmUgICBHRU44X0RSQl9WQUxJRAkJICAoMTw8MCkKPiAgICNkZWZpbmUg R0VOOF9EUkJSRUdVKHgpCQkJX01NSU8oMHgxMDAwICsgKHgpICogOCArIDQpCj4gICAKPiArI2Rl ZmluZSBHRU4xMl9ESVNUX0RCU19QT1BVTEFURUQJCV9NTUlPKDB4ZDA4KQo+ICsjZGVmaW5lICAg R0VOMTJfRE9PUkJFTExTX1BFUl9TUUlESV9TSElGVAkxNgo+ICsjZGVmaW5lICAgR0VOMTJfRE9P UkJFTExTX1BFUl9TUUlESQkJKDB4ZmYpCj4gKyNkZWZpbmUgICBHRU4xMl9TUUlESVNfRE9PUkJF TExfRVhJU1QJCSgweGZmZmYpCj4gKwo+ICAgI2RlZmluZSBERV9HVUNSTVIJCQlfTU1JTygweDQ0 MDU0KQo+ICAgCj4gICAjZGVmaW5lIEdVQ19CQ1NfUkNTX0lFUgkJCV9NTUlPKDB4QzU1MCkKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3LmMKPiBpbmRleCA1OWIyN2FiYTE1 YzYuLmY3Y2IwYjFmMWJhNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91 Yy9pbnRlbF91Y19mdy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf dWNfZncuYwo+IEBAIC00NCwyMyArNDQsMTkgQEAgdm9pZCBpbnRlbF91Y19md19jaGFuZ2Vfc3Rh dHVzKHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncsCj4gICAgKiBMaXN0IG9mIHJlcXVpcmVkIEd1 QyBhbmQgSHVDIGJpbmFyaWVzIHBlci1wbGF0Zm9ybS4KPiAgICAqIE11c3QgYmUgb3JkZXJlZCBi YXNlZCBvbiBwbGF0Zm9ybSArIHJldmlkLCBmcm9tIG5ld2VyIHRvIG9sZGVyLgo+ICAgICoKPiAt ICogVEdMIDM1LjIgaXMgaW50ZXJmYWNlLWNvbXBhdGlibGUgd2l0aCAzMy4wIGZvciBwcmV2aW91 cyBHZW5zLiBUaGUgZGVsdGFzCj4gLSAqIGJldHdlZW4gMzMuMCBhbmQgMzUuMiBhcmUgb25seSBy ZWxhdGVkIHRvIG5ldyBhZGRpdGlvbnMgdG8gc3VwcG9ydCBuZXcgR2VuMTIKPiAtICogZmVhdHVy ZXMuCj4gLSAqCj4gICAgKiBOb3RlIHRoYXQgUktMIHVzZXMgdGhlIHNhbWUgZmlybXdhcmUgYXMg VEdMLgo+ICAgICovCj4gICAjZGVmaW5lIElOVEVMX1VDX0ZJUk1XQVJFX0RFRlMoZndfZGVmLCBn dWNfZGVmLCBodWNfZGVmKSBcCj4gLQlmd19kZWYoUk9DS0VUTEFLRSwgIDAsIGd1Y19kZWYodGds LCAzNSwgMiwgMCksIGh1Y19kZWYodGdsLCAgNywgMCwgMTIpKSBcCj4gLQlmd19kZWYoVElHRVJM QUtFLCAgIDAsIGd1Y19kZWYodGdsLCAzNSwgMiwgMCksIGh1Y19kZWYodGdsLCAgNywgMCwgMTIp KSBcCj4gLQlmd19kZWYoRUxLSEFSVExBS0UsIDAsIGd1Y19kZWYoZWhsLCAzMywgMCwgNCksIGh1 Y19kZWYoZWhsLCAgOSwgMCwgMCkpIFwKPiAtCWZ3X2RlZihJQ0VMQUtFLCAgICAgMCwgZ3VjX2Rl ZihpY2wsIDMzLCAwLCAwKSwgaHVjX2RlZihpY2wsICA5LCAwLCAwKSkgXAo+IC0JZndfZGVmKENP TUVUTEFLRSwgICA1LCBndWNfZGVmKGNtbCwgMzMsIDAsIDApLCBodWNfZGVmKGNtbCwgIDQsIDAs IDApKSBcCj4gLQlmd19kZWYoQ09GRkVFTEFLRSwgIDAsIGd1Y19kZWYoa2JsLCAzMywgMCwgMCks IGh1Y19kZWYoa2JsLCAgNCwgMCwgMCkpIFwKPiAtCWZ3X2RlZihHRU1JTklMQUtFLCAgMCwgZ3Vj X2RlZihnbGssIDMzLCAwLCAwKSwgaHVjX2RlZihnbGssICA0LCAwLCAwKSkgXAo+IC0JZndfZGVm KEtBQllMQUtFLCAgICAwLCBndWNfZGVmKGtibCwgMzMsIDAsIDApLCBodWNfZGVmKGtibCwgIDQs IDAsIDApKSBcCj4gLQlmd19kZWYoQlJPWFRPTiwgICAgIDAsIGd1Y19kZWYoYnh0LCAzMywgMCwg MCksIGh1Y19kZWYoYnh0LCAgMiwgMCwgMCkpIFwKPiAtCWZ3X2RlZihTS1lMQUtFLCAgICAgMCwg Z3VjX2RlZihza2wsIDMzLCAwLCAwKSwgaHVjX2RlZihza2wsICAyLCAwLCAwKSkKPiArCWZ3X2Rl ZihST0NLRVRMQUtFLCAgMCwgZ3VjX2RlZih0Z2wsIDQ1LCAwLCAwKSwgaHVjX2RlZih0Z2wsICA3 LCAwLCAxMikpIFwKPiArCWZ3X2RlZihUSUdFUkxBS0UsICAgMCwgZ3VjX2RlZih0Z2wsIDQ1LCAw LCAwKSwgaHVjX2RlZih0Z2wsICA3LCAwLCAxMikpIFwKPiArCWZ3X2RlZihFTEtIQVJUTEFLRSwg MCwgZ3VjX2RlZihlaGwsIDQ1LCAwLCAwKSwgaHVjX2RlZihlaGwsICA5LCAwLCAwKSkgXAo+ICsJ ZndfZGVmKElDRUxBS0UsICAgICAwLCBndWNfZGVmKGljbCwgNDUsIDAsIDApLCBodWNfZGVmKGlj bCwgIDksIDAsIDApKSBcCj4gKwlmd19kZWYoQ09NRVRMQUtFLCAgIDUsIGd1Y19kZWYoY21sLCA0 NSwgMCwgMCksIGh1Y19kZWYoY21sLCAgNCwgMCwgMCkpIFwKPiArCWZ3X2RlZihDT0ZGRUVMQUtF LCAgMCwgZ3VjX2RlZihrYmwsIDQ1LCAwLCAwKSwgaHVjX2RlZihrYmwsICA0LCAwLCAwKSkgXAo+ ICsJZndfZGVmKEdFTUlOSUxBS0UsICAwLCBndWNfZGVmKGdsaywgNDUsIDAsIDApLCBodWNfZGVm KGdsaywgIDQsIDAsIDApKSBcCj4gKwlmd19kZWYoS0FCWUxBS0UsICAgIDAsIGd1Y19kZWYoa2Js LCA0NSwgMCwgMCksIGh1Y19kZWYoa2JsLCAgNCwgMCwgMCkpIFwKPiArCWZ3X2RlZihCUk9YVE9O LCAgICAgMCwgZ3VjX2RlZihieHQsIDQ1LCAwLCAwKSwgaHVjX2RlZihieHQsICAyLCAwLCAwKSkg XAo+ICsJZndfZGVmKFNLWUxBS0UsICAgICAwLCBndWNfZGVmKHNrbCwgNDUsIDAsIDApLCBodWNf ZGVmKHNrbCwgIDIsIDAsIDApKQo+ICAgCj4gICAjZGVmaW5lIF9fTUFLRV9VQ19GV19QQVRIKHBy ZWZpeF8sIG5hbWVfLCBtYWpvcl8sIG1pbm9yXywgcGF0Y2hfKSBcCj4gICAJImk5MTUvIiBcCj4g QEAgLTM3MSw2ICszNjcsOSBAQCBpbnQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGludGVsX3Vj X2Z3ICp1Y19mdykKPiAgIAkJfQo+ICAgCX0KPiAgIAo+ICsJaWYgKHVjX2Z3LT50eXBlID09IElO VEVMX1VDX0ZXX1RZUEVfR1VDKQo+ICsJCXVjX2Z3LT5wcml2YXRlX2RhdGFfc2l6ZSA9IGNzcy0+ cHJpdmF0ZV9kYXRhX3NpemU7Cj4gKwo+ICAgCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVf c2htZW1fZnJvbV9kYXRhKGk5MTUsIGZ3LT5kYXRhLCBmdy0+c2l6ZSk7Cj4gICAJaWYgKElTX0VS UihvYmopKSB7Cj4gICAJCWVyciA9IFBUUl9FUlIob2JqKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX3VjX2Z3LmgKPiBpbmRleCAyM2QzYTQyM2FjMGYuLjk5YmIxZmUxYWY2NiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19mdy5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuaAo+IEBAIC04OCw2 ICs4OCw4IEBAIHN0cnVjdCBpbnRlbF91Y19mdyB7Cj4gICAKPiAgIAl1MzIgcnNhX3NpemU7Cj4g ICAJdTMyIHVjb2RlX3NpemU7Cj4gKwo+ICsJdTMyIHByaXZhdGVfZGF0YV9zaXplOwo+ICAgfTsK PiAgIAo+ICAgI2lmZGVmIENPTkZJR19EUk1fSTkxNV9ERUJVR19HVUMKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZndfYWJpLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19md19hYmkuaAo+IGluZGV4IDAyOTIxNGNkZWRkNS4u ZTQxZmZjN2E3ZmJjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX3VjX2Z3X2FiaS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf dWNfZndfYWJpLmgKPiBAQCAtNjksNyArNjksMTEgQEAgc3RydWN0IHVjX2Nzc19oZWFkZXIgewo+ ICAgI2RlZmluZSBDU1NfU1dfVkVSU0lPTl9VQ19NQUpPUgkJKDB4RkYgPDwgMTYpCj4gICAjZGVm aW5lIENTU19TV19WRVJTSU9OX1VDX01JTk9SCQkoMHhGRiA8PCA4KQo+ICAgI2RlZmluZSBDU1Nf U1dfVkVSU0lPTl9VQ19QQVRDSAkJKDB4RkYgPDwgMCkKPiAtCXUzMiByZXNlcnZlZFsxNF07Cj4g Kwl1MzIgcmVzZXJ2ZWQwWzEzXTsKPiArCXVuaW9uIHsKPiArCQl1MzIgcHJpdmF0ZV9kYXRhX3Np emU7IC8qIG9ubHkgYXBwbGllcyB0byBHdUMgKi8KPiArCQl1MzIgcmVzZXJ2ZWQxOwo+ICsJfTsK PiAgIAl1MzIgaGVhZGVyX2luZm87Cj4gICB9IF9fcGFja2VkOwo+ICAgc3RhdGljX2Fzc2VydChz aXplb2Yoc3RydWN0IHVjX2Nzc19oZWFkZXIpID09IDEyOCk7CgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK