Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp332654pxk; Wed, 2 Sep 2020 02:34:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyYOG72K4hYSAc5EILNtEZzwK8u8DInNm85KUx9YK4MqPzSbWFPKppG5zCof1hBGo7Jzzrv X-Received: by 2002:a17:906:4c81:: with SMTP id q1mr5244196eju.72.1599039297163; Wed, 02 Sep 2020 02:34:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599039297; cv=none; d=google.com; s=arc-20160816; b=T+18m0Z4w7dNVijIH572ImYPIWr8YoyVI9aBrR370CrCLvL7xleoaTwAC213VNbooK Ok/36Iq0PNswXr4Jt/s8OWdAI2QapdYFMN+68RCH2TD7AUrdfMaQBmD1hJYTXIZxfctq j1zdwFEd5CdIEFwCa7dPUuaY1ggIdwDfRu8+at5ZzueIMkVyHhpGs7wqT6ZU1JjyghUe yAAcZTBbQwIg0xgg/mCEbFafnc0jcVjycs7vLhfsHWnvYUnonJ2RmT8LbOiwlSOFJKEy kpyA5TzTtVfx4bFIEoyukkjXbxxitTG8wytasni/z0essz5cwLXVBFQOY7OTVszX+frn 4Afg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:authenticated-by; bh=PrgbFgn8gPHlyIP4UYQ8yI9azLt4j8oeehNSMfGKNDU=; b=iP5DqeiGx6NHHopUOJV90+VIhfofXTc87fwO3mL0udWQC+Rw0IOydXYJeT4sKW3R19 VrK1Qyplxpdnh+NT1eml33rOsvzHXIiIP3iTYsmVUqGIYqz+eIAv0RZwweX72t2BRl8E wTSgPbpxZ39aSX1LWHXEeASoj81Ykkzb/t9SkEtzJuXzIki+yDB9m4oRb+sz1i2YYCQD 8sq1HZjrSXqIRJpEVru2dPZ8k2t7q8oC8eeUGp3WzPQh5XbGXuKnWmEr1FgCqBFEbRhk NN8gjO0wxmZfBbdaKAQkR3bybJm3hdsgLCs1ijAh4DFHwAWhT0HNYNYgVUXdWXM6VkxD SpGw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t11si2139222ejb.154.2020.09.02.02.34.32; Wed, 02 Sep 2020 02:34:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726293AbgIBJbd (ORCPT + 99 others); Wed, 2 Sep 2020 05:31:33 -0400 Received: from rtits2.realtek.com ([211.75.126.72]:49016 "EHLO rtits2.realtek.com.tw" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726173AbgIBJbb (ORCPT ); Wed, 2 Sep 2020 05:31:31 -0400 Authenticated-By: X-SpamFilter-By: ArmorX SpamTrap 5.69 with qID 0829V0kC4027842, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (rtexmb06.realtek.com.tw[172.21.6.99]) by rtits2.realtek.com.tw (8.15.2/2.66/5.86) with ESMTPS id 0829V0kC4027842 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Wed, 2 Sep 2020 17:31:00 +0800 Received: from RTEXMB01.realtek.com.tw (172.21.6.94) by RTEXMB06.realtek.com.tw (172.21.6.99) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1779.2; Wed, 2 Sep 2020 17:30:59 +0800 Received: from RTEXMB01.realtek.com.tw ([fe80::3d72:efbe:f42a:2926]) by RTEXMB01.realtek.com.tw ([fe80::3d72:efbe:f42a:2926%13]) with mapi id 15.01.2044.004; Wed, 2 Sep 2020 17:30:59 +0800 From: =?big5?B?p2Sp/rzhIFJpY2t5?= To: Bjorn Helgaas CC: "arnd@arndb.de" , "gregkh@linuxfoundation.org" , "ulf.hansson@linaro.org" , "bhelgaas@google.com" , "rui_feng@realsil.com.cn" , "vailbhavgupta40@gamail.com" , "linux-pci@vger.kernel.org" , "puranjay12@gmail.com" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH v3] misc: rtsx: add power saving function and bios guide options Thread-Topic: [PATCH v3] misc: rtsx: add power saving function and bios guide options Thread-Index: AQHWgEV0DyFToDvuNUeiA7m3e90ZgqlTKb8AgAHTJkA= Date: Wed, 2 Sep 2020 09:30:59 +0000 Message-ID: References: <20200901095118.4949-1-ricky_wu@realtek.com> <20200901120536.GA151590@bjorn-Precision-5520> In-Reply-To: <20200901120536.GA151590@bjorn-Precision-5520> Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.22.88.99] Content-Type: text/plain; charset="big5" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEJqb3JuIEhlbGdhYXMgW21h aWx0bzpoZWxnYWFzQGtlcm5lbC5vcmddDQo+IFNlbnQ6IFR1ZXNkYXksIFNlcHRlbWJlciAwMSwg MjAyMCA4OjA2IFBNDQo+IFRvOiCnZKn+vOEgUmlja3kNCj4gQ2M6IGFybmRAYXJuZGIuZGU7IGdy ZWdraEBsaW51eGZvdW5kYXRpb24ub3JnOyB1bGYuaGFuc3NvbkBsaW5hcm8ub3JnOw0KPiBiaGVs Z2Fhc0Bnb29nbGUuY29tOyBydWlfZmVuZ0ByZWFsc2lsLmNvbS5jbjsgdmFpbGJoYXZndXB0YTQw QGdhbWFpbC5jb207DQo+IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7IHB1cmFuamF5MTJAZ21h aWwuY29tOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFU Q0ggdjNdIG1pc2M6IHJ0c3g6IGFkZCBwb3dlciBzYXZpbmcgZnVuY3Rpb24gYW5kIGJpb3MgZ3Vp ZGUNCj4gb3B0aW9ucw0KPiANCj4gT24gVHVlLCBTZXAgMDEsIDIwMjAgYXQgMDU6NTE6MThQTSAr MDgwMCwgcmlja3lfd3VAcmVhbHRlay5jb20gd3JvdGU6DQo+ID4gRnJvbTogUmlja3kgV3UgPHJp Y2t5X3d1QHJlYWx0ZWsuY29tPg0KPiA+DQo+ID4gdjIgdjM6DQo+ID4gZml4ZWQgYnVpbGQgV0FS TklORw0KPiA+DQo+ID4gdjE6DQo+ID4gQWRkZWQgcnRzNTIyNyBydHM1MjQ5IHJ0czUyNjAgcnRz NTIyOCBwb3dlciBzYXZpbmcgZnVuY3Rpb25zLA0KPiA+IGFkZGVkIEJJT1MgZ3VpZGUgTU1DIGZ1 bmNpdG9uIGFuZCBVX2QzX2VuIHJlZ2lzdGVyIHN1cHBvcnQgYW5kDQo+ID4gZml4ZWQgcnRzNTI2 MCBkcml2aW5nIHBhcmFtZXRlcg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogUmlja3kgV3UgPHJp Y2t5X3d1QHJlYWx0ZWsuY29tPg0KPiANCj4gSSdtIGF0dGFjaGluZyB0aGUgc2FtZSByZXNwb25z ZSBJIHNlbnQgeW91IHllc3RlcmRheSwgc2luY2UgaXQgZG9lc24ndA0KPiBsb29rIGxpa2UgeW91 IHJlYWQgYW55IG9mIGl0IChleGNlcHQgYWRkaW5nIHRvIHRoZSBjYyBsaXN0KS4NCj4gDQpTb3Jy eSwgSSBkaWQgbm90IG5vdGUgdGhlIGJlbG93IHJlc3BvbnNlIHllc3RlcmRheQ0KSSBhbSBnb2lu ZyB0byBwcmVwYXJlIHRoZSBuZXh0IHBhdGNoIHRvIGZpeCBhbmQgc29ydCBvdXQgYmVsb3cgcHJv YmxlbSBBU0FQDQoNCj4gRnJvbSBoZWxnYWFzQGtlcm5lbC5vcmcgTW9uIEF1ZyAzMSAxNjoyMTo1 MyAyMDIwDQo+IERhdGU6IE1vbiwgMzEgQXVnIDIwMjAgMTY6MjE6NTMgLTA1MDANCj4gRnJvbTog Qmpvcm4gSGVsZ2FhcyA8aGVsZ2Fhc0BrZXJuZWwub3JnPg0KPiBUbzogUmlja3kgV3UgPHJpY2t5 X3d1QHJlYWx0ZWsuY29tPg0KPiBDYzogYXJuZEBhcm5kYi5kZSwgZ3JlZ2toQGxpbnV4Zm91bmRh dGlvbi5vcmcsIHJpY2t5X3d1QHJlYWx0ZWsuY29tLA0KPiAJdWxmLmhhbnNzb25AbGluYXJvLm9y ZywgYmhlbGdhYXNAZ29vZ2xlLmNvbSwNCj4gCXJ1aV9mZW5nQHJlYWxzaWwuY29tLmNuLCBQdXJh bmpheSBNb2hhbiA8cHVyYW5qYXkxMkBnbWFpbC5jb20+LA0KPiAJVmFpYmhhdiBHdXB0YSA8dmFp Ymhhdmd1cHRhNDBAZ21haWwuY29tPg0KPiBTdWJqZWN0OiBSZTogRndkOiBbUEFUQ0hdIG1pc2M6 IHJ0c3g6IGFkZCBwb3dlciBzYXZpbmcgZnVuY3Rpb24gYW5kIGJpb3MNCj4gIGd1aWRlIG9wdGlv bnMNCj4gTWVzc2FnZS1JRDogPDIwMjAwODMxMjEyMTUxLkdBOTI1MzJAYmpvcm4tUHJlY2lzaW9u LTU1MjA+DQo+IE1JTUUtVmVyc2lvbjogMS4wDQo+IENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsg Y2hhcnNldD11cy1hc2NpaQ0KPiBDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmUNCj4gSW4tUmVw bHktVG86DQo+IDxDQUVyU3BvNWlvMmJoNlE1NmJIQm89akg9MjJtaWItbko5YTJQYWVaUHBYcGZD PTVZdHdAbWFpbC5nbWFpbC5jb20NCj4gPg0KPiBTdGF0dXM6IFJPDQo+IENvbnRlbnQtTGVuZ3Ro OiAyNDc2Mw0KPiBMaW5lczogNjQxDQo+IA0KPiBbK2NjIFB1cmFuamF5LCBWYWliaGF2XQ0KPiAN Cj4gSSB0aGluayB5b3UgZm9yZ290IHRvIGNjIHRoZSBtYWlsaW5nIGxpc3RzLiAgTG9va3MgbGlr ZQ0KPiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnIGlzIHRoZSBvbmx5IG9uZQ0KPiAic2Ny aXB0cy9nZXRfbWFpbnRhaW5lci5wbCAtZiBkcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHMqIg0K PiBzdWdnZXN0cy4NCj4gDQo+IEkgd291bGQgYWRkIGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmcg YmVjYXVzZSB0aGlzIGFsc28gYWRkcyBzb21lDQo+IEFTUE0tcmVsYXRlZCBzdHVmZiB0aGF0IHdl IHdvdWxkIGxpa2UgdG8gc3VwcG9ydCBiZXR0ZXIgaW4gdGhlIFBDSQ0KPiBjb3JlIHRvIHJlZHVj ZSB0aGUgYW1vdW50IG9mIHRoaXMgY29kZSBpbiB0aGUgZHJpdmVyLg0KPiANCj4gQWxzbyBjYzog UHVyYW5qYXkgTW9oYW4gPHB1cmFuamF5MTJAZ21haWwuY29tPiwgd2hvIGlzIHdvcmtpbmcgb24g TFRSDQo+IGluIHRoZSBQQ0kgY29yZSwgYW5kIFZhaWJoYXYgR3VwdGEgPHZhaWJoYXZndXB0YTQw QGdtYWlsLmNvbT4sIHdobyBpcw0KPiB3b3JraW5nIG9uIFBDSSBsZWdhY3kgc3VzcGVuZC9yZXN1 bWUuDQo+IA0KPiA+IEZyb206IDxyaWNreV93dUByZWFsdGVrLmNvbT4NCj4gPiBEYXRlOiBNb24s IEF1ZyAzMSwgMjAyMCBhdCAzOjI0IEFNDQo+ID4gU3ViamVjdDogW1BBVENIXSBtaXNjOiBydHN4 OiBhZGQgcG93ZXIgc2F2aW5nIGZ1bmN0aW9uIGFuZCBiaW9zIGd1aWRlDQo+ID4gb3B0aW9ucw0K PiA+IFRvOiA8YXJuZEBhcm5kYi5kZT4sIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4sDQo+ IDxyaWNreV93dUByZWFsdGVrLmNvbT4sIDwNCj4gPiB1bGYuaGFuc3NvbkBsaW5hcm8ub3JnPiwg PGJoZWxnYWFzQGdvb2dsZS5jb20+LA0KPiA8cnVpX2ZlbmdAcmVhbHNpbC5jb20uY24+DQo+ID4N Cj4gPg0KPiA+IEZyb206IFJpY2t5IFd1IDxyaWNreV93dUByZWFsdGVrLmNvbT4NCj4gPg0KPiA+ IEFkZGVkIHJ0czUyMjcgcnRzNTI0OSBydHM1MjYwIHJ0czUyMjggcG93ZXIgc2F2aW5nIGZ1bmN0 aW9ucywNCj4gPiBhZGRlZCBCSU9TIGd1aWRlIE1NQyBmdW5jaXRvbiBhbmQgVV9kM19lbiByZWdp c3RlciBzdXBwb3J0IGFuZA0KPiA+IGZpeGVkIHJ0czUyNjAgZHJpdmluZyBwYXJhbWV0ZXINCj4g DQo+IFRoaXMgc2hvdWxkIGJlIHNwbGl0IGludG8gc21hbGwgbG9naWNhbCBwaWVjZXMuICBJIGNh bid0IHJlYWxseSB0ZWxsDQo+IHdoYXQgdGhvc2Ugd291bGQgYmUsIGJ1dCBqdXN0IGJhc2VkIG9u IHRoZSBjb21taXQgbWVzc2FnZSwgaXQgY291bGQNCj4gYmU6DQo+IA0KPiAgIDEpIEFkZCBydHM1 MjI3IHJ0czUyNDkgcnRzNTI2MCBydHM1MjI4IHBvd2VyIHNhdmluZyBmdW5jdGlvbnMNCj4gDQo+ ICAgMikgQWRkIEJJT1MgZ3VpZGUgTU1DIGZ1bmN0aW9uIGFuZCBVX2QzX2VuIHJlZ2lzdGVyIHN1 cHBvcnQNCj4gDQo+ICAgMykgRml4IHJ0czUyNjAgZHJpdmluZyBwYXJhbWV0ZXINCj4gDQo+IHMv ZnVuY2l0b24vZnVuY3Rpb24vDQo+IA0KPiBJdCBsb29rcyBsaWtlIDEpICptaWdodCogYmUganVz dCB0aGlzOg0KPiANCj4gICBydHMqX2ZvcmNlX3Bvd2VyX2Rvd24oKQ0KPiAgIHsNCj4gICAgIC4u Lg0KPiAgICAgcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBwY3ItPnJlZ19wbV9jdHJsMywg RDNfREVMSU5LX01PREVfRU4sDQo+IAkJCSAgICBEM19ERUxJTktfTU9ERV9FTik7DQo+IA0KPiBU aGF0IHNob3VsZCBiZSBhIHNpbmdsZSBwYXRjaCBieSBpdHNlbGYgc28gaXQncyBvYnZpb3VzIHRo YXQgaXQncw0KPiBkb2luZyB0aGUgc2FtZSB0aGluZyB0byBzZXZlcmFsIGRyaXZlcnMuDQo+IA0K DQpPaywgSSB3aWxsIGhhdmUgYSBleHRyYSBwYXRjaCBmb3IgYWxsIHh4X2ZvcmNlX3Bvd2VyX2Rv d24oKQ0KDQo+IEV4cGxhaW4gd2hhdCAiQklPUyBndWlkZSBNTUMgZnVuY3Rpb24iIG1lYW5zLiAg TWVudGlvbiB0aGUgbmFtZSBvZiB0aGUNCj4gZnVuY3Rpb24gdGhpcyBhZGRzIHNvIHdlIGNhbiBj b25uZWN0IHRoZSBwYXRjaCB3aXRoIHRoZSBjb21taXQgbG9nLg0KPiANCg0KIkJJT1MgZ3VpZGUg TU1DIGZ1bmN0aW9uIiBtZWFucywgdmlhIEJJT1Mgc2V0dGluZyB0byBrbm93IE1NQyBjYXJkIHN1 cHBvcnQgb3Igbm90IA0KDQo+IEV4cGxhaW4gd2hhdCAiVV9kM19lbiIgaXM7IHRoYXQgZG9lc24n dCBldmVuIGFwcGVhciBpbiB0aGUgcGF0Y2guDQo+IA0KDQpJIGFtIGdvaW5nIHRvIHJlbW92ZSBV X2QzX2VuIGZyb20gcGF0Y2ggZGVzY3JpcHRpb24sIHRoaXMgbWVhbiBEM19ERUxJTktfTU9ERV9F TiByZWdpc3RlciANCg0KPiBNb3JlIGNvbW1lbnRzIGJlbG93LCBpbmNsdWRpbmcgd2hhdCBsb29r cyBsaWtlIGEgcmVhbCBidWcuDQo+IA0KPiBCam9ybg0KPiANCj4gPiBTaWduZWQtb2ZmLWJ5OiBS aWNreSBXdSA8cmlja3lfd3VAcmVhbHRlay5jb20+DQo+ID4gLS0tDQo+ID4gIGRyaXZlcnMvbWlz Yy9jYXJkcmVhZGVyL3J0czUyMjcuYyAgfCAxMTUgKysrKysrKysrKysrKysrKysrKysrLQ0KPiA+ ICBkcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHM1MjI4LmMgIHwgICA1ICstDQo+ID4gIGRyaXZl cnMvbWlzYy9jYXJkcmVhZGVyL3J0czUyNDkuYyAgfCAxNDcNCj4gKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0NCj4gPiAgZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzNTI2MC5jICB8ICAz MyArKysrLS0tDQo+ID4gIGRyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0c3hfcGNyLmggfCAgMTgg KysrKw0KPiA+ICA1IGZpbGVzIGNoYW5nZWQsIDI4OSBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlv bnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHM1 MjI3LmMNCj4gPiBiL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0czUyMjcuYw0KPiA+IGluZGV4 IGY1ZjM5MmRkZjNkNi4uMzE0MDM3ZWZmMTdkIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbWlz Yy9jYXJkcmVhZGVyL3J0czUyMjcuYw0KPiA+ICsrKyBiL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVy L3J0czUyMjcuYw0KPiA+IEBAIC03Miw2ICs3Miw4IEBAIHN0YXRpYyB2b2lkIHJ0czUyMjdfZmV0 Y2hfdmVuZG9yX3NldHRpbmdzKHN0cnVjdA0KPiBydHN4X3Bjcg0KPiA+ICpwY3IpDQo+ID4NCj4g PiAgICAgICAgIHBjaV9yZWFkX2NvbmZpZ19kd29yZChwZGV2LCBQQ1JfU0VUVElOR19SRUcyLCAm cmVnKTsNCj4gPiAgICAgICAgIHBjcl9kYmcocGNyLCAiQ2ZnIDB4JXg6IDB4JXhcbiIsIFBDUl9T RVRUSU5HX1JFRzIsIHJlZyk7DQo+ID4gKyAgICAgICBpZiAocnRzeF9jaGVja19tbWNfc3VwcG9y dChyZWcpKQ0KPiA+ICsgICAgICAgICAgICAgICBwY3ItPmV4dHJhX2NhcHMgfD0gRVhUUkFfQ0FQ U19OT19NTUM7DQo+ID4gICAgICAgICBwY3ItPnNkMzBfZHJpdmVfc2VsXzN2MyA9IHJ0c3hfcmVn X3RvX3NkMzBfZHJpdmVfc2VsXzN2MyhyZWcpOw0KPiA+ICAgICAgICAgaWYgKHJ0c3hfcmVnX2No ZWNrX3JldmVyc2Vfc29ja2V0KHJlZykpDQo+ID4gICAgICAgICAgICAgICAgIHBjci0+ZmxhZ3Mg fD0gUENSX1JFVkVSU0VfU09DS0VUOw0KPiA+IEBAIC04NCwxNiArODYsNzggQEAgc3RhdGljIHZv aWQgcnRzNTIyN19mb3JjZV9wb3dlcl9kb3duKHN0cnVjdCBydHN4X3Bjcg0KPiA+ICpwY3IsIHU4 IHBtX3N0YXRlKQ0KPiA+ICAgICAgICAgcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBBVVRP TE9BRF9DRkdfQkFTRSArIDIsIDB4RkYsIDApOw0KPiA+ICAgICAgICAgcnRzeF9wY2lfd3JpdGVf cmVnaXN0ZXIocGNyLCBBVVRPTE9BRF9DRkdfQkFTRSArIDMsIDB4MDEsIDApOw0KPiA+DQo+ID4g LSAgICAgICBpZiAocG1fc3RhdGUgPT0gSE9TVF9FTlRFUl9TMykNCj4gPiAtICAgICAgICAgICAg ICAgcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBwY3ItPnJlZ19wbV9jdHJsMywgMHgxMCwN Cj4gMHgxMCk7DQo+ID4gKyAgICAgICBydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIHBjci0+ cmVnX3BtX2N0cmwzLCAweDEwLCAweDEwKTsNCj4gDQo+IFdoeSBkb2Vzbid0IHRoaXMgdXNlIEQz X0RFTElOS19NT0RFX0VOLCBsaWtlIDUyMjgsIDUyNDksIDUyNjAgZG8/DQo+IA0KPiBXaHkgZGlk IHlvdSBub3QgbWFrZSBhIHNpbWlsYXIgY2hhbmdlIHRvIHJ0czUyNjFfZm9yY2VfcG93ZXJfZG93 bigpLA0KPiB3aGljaCBhbHNvIGNvbnRhaW5zIHRoaXMgY29kZT8NCj4gDQo+ICAgaWYgKHBtX3N0 YXRlID09IEhPU1RfRU5URVJfUzMpDQo+ICAgICBydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3Is IHBjci0+cmVnX3BtX2N0cmwzLCBEM19ERUxJTktfTU9ERV9FTiwNCj4gCQkJICAgIEQzX0RFTElO S19NT0RFX0VOKTsNCj4gDQo+ID4gICAgICAgICBydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3Is IEZQRENUTCwgMHgwMywgMHgwMyk7DQo+ID4gIH0NCj4gPg0KPiA+ICtzdGF0aWMgdm9pZCBydHM1 MjI3X2luaXRfZnJvbV9jZmcoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQo+ID4gK3sNCj4gPiArICAg ICAgIHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gcGNyLT5wY2k7DQo+ID4gKyAgICAgICBpbnQgbDFz czsNCj4gPiArICAgICAgIHUzMiBsdmFsOw0KPiA+ICsgICAgICAgc3RydWN0IHJ0c3hfY3Jfb3B0 aW9uICpvcHRpb24gPSAmcGNyLT5vcHRpb247DQo+ID4gKw0KPiA+ICsgICAgICAgbDFzcyA9IHBj aV9maW5kX2V4dF9jYXBhYmlsaXR5KHBkZXYsIFBDSV9FWFRfQ0FQX0lEX0wxU1MpOw0KPiA+ICsg ICAgICAgaWYgKCFsMXNzKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm47DQo+ID4gKw0KPiA+ ICsgICAgICAgcGNpX3JlYWRfY29uZmlnX2R3b3JkKHBkZXYsIGwxc3MgKyBQQ0lfTDFTU19DVEwx LCAmbHZhbCk7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKENIS19QQ0lfUElEKHBjciwgMHg1MjJB KSkgew0KPiA+ICsgICAgICAgICAgICAgICBpZiAoMCA9PSAobHZhbCAmIDB4MEYpKQ0KPiANCj4g U2hvdWxkIHVzZSBQQ0lfTDFTU19DVEwxX0wxU1NfTUFTSywgSSB0aGluay4NCj4gDQo+IEkgd291 bGQgd3JpdGUgdGhpcyBhczoNCj4gDQo+ICAgaWYgKGx2YWwgJiBQQ0lfTDFTU19DVEwxX0wxU1Nf TUFTSykNCj4gICAgIHJ0c3hfcGNpX2Rpc2FibGVfb29ic19wb2xsaW5nKHBjcik7DQo+ICAgZWxz ZQ0KPiAgICAgcnRzeF9wY2lfZW5hYmxlX29vYnNfcG9sbGluZyhwY3IpOw0KPiANCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICBydHN4X3BjaV9lbmFibGVfb29ic19wb2xsaW5nKHBjcik7DQo+ ID4gKyAgICAgICAgICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBydHN4 X3BjaV9kaXNhYmxlX29vYnNfcG9sbGluZyhwY3IpOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4g PiArICAgICAgIGlmIChsdmFsICYgUENJX0wxU1NfQ1RMMV9BU1BNX0wxXzEpDQo+ID4gKyAgICAg ICAgICAgICAgIHJ0c3hfc2V0X2Rldl9mbGFnKHBjciwgQVNQTV9MMV8xX0VOKTsNCj4gPiArICAg ICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgcnRzeF9jbGVhcl9kZXZfZmxhZyhwY3IsIEFT UE1fTDFfMV9FTik7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGx2YWwgJiBQQ0lfTDFTU19DVEwx X0FTUE1fTDFfMikNCj4gPiArICAgICAgICAgICAgICAgcnRzeF9zZXRfZGV2X2ZsYWcocGNyLCBB U1BNX0wxXzJfRU4pOw0KPiA+ICsgICAgICAgZWxzZQ0KPiA+ICsgICAgICAgICAgICAgICBydHN4 X2NsZWFyX2Rldl9mbGFnKHBjciwgQVNQTV9MMV8yX0VOKTsNCj4gPiArDQo+ID4gKyAgICAgICBp ZiAobHZhbCAmIFBDSV9MMVNTX0NUTDFfUENJUE1fTDFfMSkNCj4gPiArICAgICAgICAgICAgICAg cnRzeF9zZXRfZGV2X2ZsYWcocGNyLCBQTV9MMV8xX0VOKTsNCj4gPiArICAgICAgIGVsc2UNCj4g PiArICAgICAgICAgICAgICAgcnRzeF9jbGVhcl9kZXZfZmxhZyhwY3IsIFBNX0wxXzFfRU4pOw0K PiA+ICsNCj4gPiArICAgICAgIGlmIChsdmFsICYgUENJX0wxU1NfQ1RMMV9QQ0lQTV9MMV8yKQ0K PiA+ICsgICAgICAgICAgICAgICBydHN4X3NldF9kZXZfZmxhZyhwY3IsIFBNX0wxXzJfRU4pOw0K PiA+ICsgICAgICAgZWxzZQ0KPiA+ICsgICAgICAgICAgICAgICBydHN4X2NsZWFyX2Rldl9mbGFn KHBjciwgUE1fTDFfMl9FTik7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKG9wdGlvbi0+bHRyX2Vu KSB7DQo+ID4gKyAgICAgICAgICAgICAgIHUxNiB2YWw7DQo+ID4gKw0KPiA+ICsgICAgICAgICAg ICAgICBwY2llX2NhcGFiaWxpdHlfcmVhZF93b3JkKHBjci0+cGNpLCBQQ0lfRVhQX0RFVkNUTDIs DQo+ICZ2YWwpOw0KPiA+ICsgICAgICAgICAgICAgICBpZiAodmFsICYgUENJX0VYUF9ERVZDVEwy X0xUUl9FTikgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi0+bHRyX2VuYWJs ZWQgPSB0cnVlOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi0+bHRyX2FjdGl2 ZSA9IHRydWU7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcnRzeF9zZXRfbHRyX2xhdGVu Y3kocGNyLA0KPiA+IG9wdGlvbi0+bHRyX2FjdGl2ZV9sYXRlbmN5KTsNCj4gPiArICAgICAgICAg ICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24tPmx0cl9l bmFibGVkID0gZmFsc2U7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgIH0NCj4g PiArDQo+ID4gKyAgICAgICBpZiAocnRzeF9jaGVja19kZXZfZmxhZyhwY3IsIEFTUE1fTDFfMV9F TiB8IEFTUE1fTDFfMl9FTg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQ TV9MMV8xX0VOIHwgUE1fTDFfMl9FTikpDQo+ID4gKyAgICAgICAgICAgICAgIG9wdGlvbi0+Zm9y Y2VfY2xrcmVxXzAgPSBmYWxzZTsNCj4gPiArICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAg ICAgb3B0aW9uLT5mb3JjZV9jbGtyZXFfMCA9IHRydWU7DQo+ID4gKw0KPiA+ICt9DQo+ID4gKw0K PiA+ICBzdGF0aWMgaW50IHJ0czUyMjdfZXh0cmFfaW5pdF9odyhzdHJ1Y3QgcnRzeF9wY3IgKnBj cikNCj4gPiAgew0KPiA+ICAgICAgICAgdTE2IGNhcDsNCj4gPiArICAgICAgIHN0cnVjdCBydHN4 X2NyX29wdGlvbiAqb3B0aW9uID0gJnBjci0+b3B0aW9uOw0KPiA+DQo+ID4gKyAgICAgICBydHM1 MjI3X2luaXRfZnJvbV9jZmcocGNyKTsNCj4gPiAgICAgICAgIHJ0c3hfcGNpX2luaXRfY21kKHBj cik7DQo+ID4NCj4gPiAgICAgICAgIC8qIENvbmZpZ3VyZSBHUElPIGFzIG91dHB1dCAqLw0KPiA+ IEBAIC0xMTUsOSArMTc5LDE3IEBAIHN0YXRpYyBpbnQgcnRzNTIyN19leHRyYV9pbml0X2h3KHN0 cnVjdCBydHN4X3BjciAqcGNyKQ0KPiA+ICAgICAgICAgcnRzNTIyN19maWxsX2RyaXZpbmcocGNy LCBPVVRQVVRfM1YzKTsNCj4gPiAgICAgICAgIC8qIENvbmZpZ3VyZSBmb3JjZV9jbG9ja19yZXEg Ki8NCj4gPiAgICAgICAgIGlmIChwY3ItPmZsYWdzICYgUENSX1JFVkVSU0VfU09DS0VUKQ0KPiA+ IC0gICAgICAgICAgICAgICBydHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVHX0NNRCwgUEVU WENGRywgMHhCOCwNCj4gMHhCOCk7DQo+ID4gKyAgICAgICAgICAgICAgIHJ0c3hfcGNpX2FkZF9j bWQocGNyLCBXUklURV9SRUdfQ01ELCBQRVRYQ0ZHLCAweDMwLA0KPiAweDMwKTsNCj4gPiAgICAg ICAgIGVsc2UNCj4gPiAtICAgICAgICAgICAgICAgcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdSSVRF X1JFR19DTUQsIFBFVFhDRkcsIDB4QjgsDQo+IDB4ODgpOw0KPiA+ICsgICAgICAgICAgICAgICBy dHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVHX0NNRCwgUEVUWENGRywgMHgzMCwNCj4gMHgw MCk7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKG9wdGlvbi0+Zm9yY2VfY2xrcmVxXzApDQo+ID4g KyAgICAgICAgICAgICAgIHJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBQRVRY Q0ZHLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk9SQ0VfQ0xLUkVRX0RF TElOS19NQVNLLA0KPiBGT1JDRV9DTEtSRVFfTE9XKTsNCj4gPiArICAgICAgIGVsc2UNCj4gPiAr ICAgICAgICAgICAgICAgcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdSSVRFX1JFR19DTUQsIFBFVFhD RkcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGT1JDRV9DTEtSRVFfREVM SU5LX01BU0ssDQo+ID4gRk9SQ0VfQ0xLUkVRX0hJR0gpOw0KPiA+ICsNCj4gPiAgICAgICAgIHJ0 c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBwY3ItPnJlZ19wbV9jdHJsMywgMHgx MCwNCj4gMHgwMCk7DQo+ID4NCj4gPiAgICAgICAgIHJldHVybiBydHN4X3BjaV9zZW5kX2NtZChw Y3IsIDEwMCk7DQo+ID4gQEAgLTM3Myw2ICs0NDUsMjcgQEAgc3RhdGljIGludCBydHM1MjJhX3N3 aXRjaF9vdXRwdXRfdm9sdGFnZShzdHJ1Y3QNCj4gPiBydHN4X3BjciAqcGNyLCB1OCB2b2x0YWdl KQ0KPiA+ICAgICAgICAgcmV0dXJuIHJ0c3hfcGNpX3NlbmRfY21kKHBjciwgMTAwKTsNCj4gPiAg fQ0KPiA+DQo+ID4gK3N0YXRpYyB2b2lkIHJ0czUyMmFfc2V0X2wxb2ZmX2NmZ19zdWJfZDAoc3Ry dWN0IHJ0c3hfcGNyICpwY3IsIGludCBhY3RpdmUpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVj dCBydHN4X2NyX29wdGlvbiAqb3B0aW9uID0gJnBjci0+b3B0aW9uOw0KPiA+ICsgICAgICAgaW50 IGFzcG1fTDFfMSwgYXNwbV9MMV8yOw0KPiA+ICsgICAgICAgdTggdmFsID0gMDsNCj4gPiArDQo+ ID4gKyAgICAgICBhc3BtX0wxXzEgPSBydHN4X2NoZWNrX2Rldl9mbGFnKHBjciwgQVNQTV9MMV8x X0VOKTsNCj4gPiArICAgICAgIGFzcG1fTDFfMiA9IHJ0c3hfY2hlY2tfZGV2X2ZsYWcocGNyLCBB U1BNX0wxXzJfRU4pOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChhY3RpdmUpIHsNCj4gPiArICAg ICAgICAgICAgICAgLyogcnVuLCBsYXRlbmN5OiA2MHVzICovDQo+ID4gKyAgICAgICAgICAgICAg IGlmIChhc3BtX0wxXzEpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gb3B0aW9u LT5sdHJfbDFvZmZfc25vb3plX3NzcHdyZ2F0ZTsNCj4gPiArICAgICAgIH0gZWxzZSB7DQo+ID4g KyAgICAgICAgICAgICAgIC8qIGwxb2ZmLCBsYXRlbmN5OiAzMDB1cyAqLw0KPiA+ICsgICAgICAg ICAgICAgICBpZiAoYXNwbV9MMV8yKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9 IG9wdGlvbi0+bHRyX2wxb2ZmX3NzcHdyZ2F0ZTsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4g KyAgICAgICBydHN4X3NldF9sMW9mZl9zdWIocGNyLCB2YWwpOw0KPiA+ICt9DQo+ID4NCj4gPiAg LyogcnRzNTIyYSBvcGVyYXRpb25zIG1haW5seSBkZXJpdmVkIGZyb20gcnRzNTIyNywgZXhjZXB0 IHBoeS9odyBpbml0DQo+ID4gc2V0dGluZy4NCj4gPiAgICovDQo+ID4gQEAgLTM5MCwxNSArNDgz LDI5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNyX29wcyBydHM1MjJhX3Bjcl9vcHMgPSB7DQo+ ID4gICAgICAgICAuY2RfZGVnbGl0Y2ggPSBOVUxMLA0KPiA+ICAgICAgICAgLmNvbnZfY2xrX2Fu ZF9kaXZfbiA9IE5VTEwsDQo+ID4gICAgICAgICAuZm9yY2VfcG93ZXJfZG93biA9IHJ0czUyMjdf Zm9yY2VfcG93ZXJfZG93biwNCj4gPiArICAgICAgIC5zZXRfbDFvZmZfY2ZnX3N1Yl9kMCA9IHJ0 czUyMmFfc2V0X2wxb2ZmX2NmZ19zdWJfZDAsDQo+ID4gIH07DQo+ID4NCj4gPiAgdm9pZCBydHM1 MjJhX2luaXRfcGFyYW1zKHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KPiA+ICB7DQo+ID4gKyAgICAg ICBzdHJ1Y3QgcnRzeF9jcl9vcHRpb24gKm9wdGlvbiA9ICZwY3ItPm9wdGlvbjsNCj4gPiArDQo+ ID4gICAgICAgICBydHM1MjI3X2luaXRfcGFyYW1zKHBjcik7DQo+ID4gICAgICAgICBwY3ItPm9w cyA9ICZydHM1MjJhX3Bjcl9vcHM7DQo+ID4gICAgICAgICBwY3ItPnR4X2luaXRpYWxfcGhhc2Ug PSBTRVRfQ0xPQ0tfUEhBU0UoMjAsIDIwLCAxMSk7DQo+ID4gICAgICAgICBwY3ItPnJlZ19wbV9j dHJsMyA9IFJUUzUyMkFfUE1fQ1RSTDM7DQo+ID4NCj4gPiArICAgICAgIG9wdGlvbi0+ZGV2X2Zs YWdzID0gTFRSX0wxU1NfUFdSX0dBVEVfRU47DQo+ID4gKyAgICAgICBvcHRpb24tPmx0cl9lbiA9 IHRydWU7DQo+ID4gKw0KPiA+ICsgICAgICAgLyogaW5pdCBsYXRlbmN5IG9mIGFjdGl2ZSwgaWRs ZSwgTDFPRkYgdG8gNjB1cywgMzAwdXMsIDNtcyAqLw0KPiA+ICsgICAgICAgb3B0aW9uLT5sdHJf YWN0aXZlX2xhdGVuY3kgPSBMVFJfQUNUSVZFX0xBVEVOQ1lfREVGOw0KPiA+ICsgICAgICAgb3B0 aW9uLT5sdHJfaWRsZV9sYXRlbmN5ID0gTFRSX0lETEVfTEFURU5DWV9ERUY7DQo+ID4gKyAgICAg ICBvcHRpb24tPmx0cl9sMW9mZl9sYXRlbmN5ID0gTFRSX0wxT0ZGX0xBVEVOQ1lfREVGOw0KPiA+ ICsgICAgICAgb3B0aW9uLT5sMV9zbm9vemVfZGVsYXkgPSBMMV9TTk9PWkVfREVMQVlfREVGOw0K PiA+ICsgICAgICAgb3B0aW9uLT5sdHJfbDFvZmZfc3Nwd3JnYXRlID0gMHg3RjsNCj4gPiArICAg ICAgIG9wdGlvbi0+bHRyX2wxb2ZmX3Nub296ZV9zc3B3cmdhdGUgPSAweDc4Ow0KPiA+ICsNCj4g PiAgICAgICAgIHBjci0+b3B0aW9uLm9jcF9lbiA9IDE7DQo+ID4gICAgICAgICBpZiAocGNyLT5v cHRpb24ub2NwX2VuKQ0KPiA+ICAgICAgICAgICAgICAgICBwY3ItPmh3X3BhcmFtLmludGVycnVw dF9lbiB8PSBTRF9PQ19JTlRfRU47DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9jYXJk cmVhZGVyL3J0czUyMjguYw0KPiA+IGIvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzNTIyOC5j DQo+ID4gaW5kZXggMjhmZWFiMTQ0OWFiLi43ODFhODZkZWY1OWEgMTAwNjQ0DQo+ID4gLS0tIGEv ZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzNTIyOC5jDQo+ID4gKysrIGIvZHJpdmVycy9taXNj L2NhcmRyZWFkZXIvcnRzNTIyOC5jDQo+ID4gQEAgLTk5LDkgKzk5LDggQEAgc3RhdGljIHZvaWQg cnRzNTIyOF9mb3JjZV9wb3dlcl9kb3duKHN0cnVjdCBydHN4X3Bjcg0KPiA+ICpwY3IsIHU4IHBt X3N0YXRlKQ0KPiA+ICAgICAgICAgcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBBVVRPTE9B RF9DRkdfQkFTRSArIDMsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUxJ TktfVElNRV9NQVNLLCAwKTsNCj4gPg0KPiA+IC0gICAgICAgaWYgKHBtX3N0YXRlID09IEhPU1Rf RU5URVJfUzMpDQo+ID4gLSAgICAgICAgICAgICAgIHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBj ciwgcGNyLT5yZWdfcG1fY3RybDMsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEQzX0RFTElOS19NT0RFX0VOLA0KPiA+IEQzX0RFTElOS19NT0RFX0VOKTsNCj4g PiArICAgICAgIHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgcGNyLT5yZWdfcG1fY3RybDMs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgRDNfREVMSU5LX01PREVfRU4sIEQzX0RFTElO S19NT0RFX0VOKTsNCj4gPg0KPiA+ICAgICAgICAgcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNy LCBGUERDVEwsDQo+ID4gICAgICAgICAgICAgICAgIFNTQ19QT1dFUl9ET1dOLCBTU0NfUE9XRVJf RE9XTik7DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0czUyNDku Yw0KPiA+IGIvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzNTI0OS5jDQo+ID4gaW5kZXggOTQx YjNkNzdmMWU5Li4yNjU5NDE1YzE3NWYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9taXNjL2Nh cmRyZWFkZXIvcnRzNTI0OS5jDQo+ID4gKysrIGIvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRz NTI0OS5jDQo+ID4gQEAgLTczLDYgKzczLDggQEAgc3RhdGljIHZvaWQgcnRzeF9iYXNlX2ZldGNo X3ZlbmRvcl9zZXR0aW5ncyhzdHJ1Y3QNCj4gPiBydHN4X3BjciAqcGNyKQ0KPiA+DQo+ID4gICAg ICAgICBwY2lfcmVhZF9jb25maWdfZHdvcmQocGRldiwgUENSX1NFVFRJTkdfUkVHMiwgJnJlZyk7 DQo+ID4gICAgICAgICBwY3JfZGJnKHBjciwgIkNmZyAweCV4OiAweCV4XG4iLCBQQ1JfU0VUVElO R19SRUcyLCByZWcpOw0KPiA+ICsgICAgICAgaWYgKHJ0c3hfY2hlY2tfbW1jX3N1cHBvcnQocmVn KSkNCj4gPiArICAgICAgICAgICAgICAgcGNyLT5leHRyYV9jYXBzIHw9IEVYVFJBX0NBUFNfTk9f TU1DOw0KPiA+ICAgICAgICAgcGNyLT5zZDMwX2RyaXZlX3NlbF8zdjMgPSBydHN4X3JlZ190b19z ZDMwX2RyaXZlX3NlbF8zdjMocmVnKTsNCj4gPiAgICAgICAgIGlmIChydHN4X3JlZ19jaGVja19y ZXZlcnNlX3NvY2tldChyZWcpKQ0KPiA+ICAgICAgICAgICAgICAgICBwY3ItPmZsYWdzIHw9IFBD Ul9SRVZFUlNFX1NPQ0tFVDsNCj4gPiBAQCAtODUsOCArODcsNyBAQCBzdGF0aWMgdm9pZCBydHN4 X2Jhc2VfZm9yY2VfcG93ZXJfZG93bihzdHJ1Y3QgcnRzeF9wY3INCj4gPiAqcGNyLCB1OCBwbV9z dGF0ZSkNCj4gPiAgICAgICAgIHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgQVVUT0xPQURf Q0ZHX0JBU0UgKyAyLCAweEZGLCAwKTsNCj4gPiAgICAgICAgIHJ0c3hfcGNpX3dyaXRlX3JlZ2lz dGVyKHBjciwgQVVUT0xPQURfQ0ZHX0JBU0UgKyAzLCAweDAxLCAwKTsNCj4gPg0KPiA+IC0gICAg ICAgaWYgKHBtX3N0YXRlID09IEhPU1RfRU5URVJfUzMpDQo+ID4gLSAgICAgICAgICAgICAgIHJ0 c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgcGNyLT5yZWdfcG1fY3RybDMsDQo+ID4gKyAgICAg ICBydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIHBjci0+cmVnX3BtX2N0cmwzLA0KPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgIEQzX0RFTElOS19NT0RFX0VOLA0KPiBEM19ERUxJTktfTU9E RV9FTik7DQo+ID4NCj4gPiAgICAgICAgIHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgRlBE Q1RMLCAweDAzLCAweDAzKTsNCj4gPiBAQCAtMTA1LDYgKzEwNiwxMyBAQCBzdGF0aWMgdm9pZCBy dHM1MjQ5X2luaXRfZnJvbV9jZmcoc3RydWN0IHJ0c3hfcGNyDQo+ICpwY3IpDQo+ID4NCj4gPiAg ICAgICAgIHBjaV9yZWFkX2NvbmZpZ19kd29yZChwZGV2LCBsMXNzICsgUENJX0wxU1NfQ1RMMSwg Jmx2YWwpOw0KPiA+DQo+ID4gKyAgICAgICBpZiAoQ0hLX1BDSV9QSUQocGNyLCBQSURfNTI0QSkg fHwgQ0hLX1BDSV9QSUQocGNyLCBQSURfNTI1QSkpIHsNCj4gPiArICAgICAgICAgICAgICAgaWYg KDAgPT0gKGx2YWwgJiAweDBGKSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBydHN4X3Bj aV9lbmFibGVfb29ic19wb2xsaW5nKHBjcik7DQo+ID4gKyAgICAgICAgICAgICAgIGVsc2UNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICBydHN4X3BjaV9kaXNhYmxlX29vYnNfcG9sbGluZyhw Y3IpOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiAgICAgICAgIGlmIChsdmFsICYgUENJX0wx U1NfQ1RMMV9BU1BNX0wxXzEpDQo+ID4gICAgICAgICAgICAgICAgIHJ0c3hfc2V0X2Rldl9mbGFn KHBjciwgQVNQTV9MMV8xX0VOKTsNCj4gPg0KPiA+IEBAIC0xNDQsNiArMTUyLDExMyBAQCBzdGF0 aWMgaW50IHJ0czUyNDlfaW5pdF9mcm9tX2h3KHN0cnVjdCBydHN4X3Bjcg0KPiAqcGNyKQ0KPiA+ ICAgICAgICAgcmV0dXJuIDA7DQo+ID4gIH0NCj4gPg0KPiA+ICtzdGF0aWMgdm9pZCBydHM1Mnhh X3NhdmVfY29udGVudF9mcm9tX2VmdXNlKHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KPiA+ICt7DQo+ ID4gKyAgICAgICB1OCBjbnQsIHN2LCBjdjsNCj4gPiArICAgICAgIHU4IGogPSAwOw0KPiANCj4g VW5uZWNlc3NhcnkgaW5pdGlhbGl6YXRpb24uICB1OCBpcyB0b28gc21hbGwgdG8gaG9sZCAxMDI0 ICh0aGUgbG9vcA0KPiBsaW1pdCkuICBEaWQgeW91IHRlc3QgdGhpcz8NCj4gDQo+ID4gKyAgICAg ICB1OCB0bXA7DQo+ID4gKyAgICAgICB1OCB2YWw7DQo+ID4gKyAgICAgICBpbnQgaTsNCj4gPiAr DQo+ID4gKyAgICAgICBydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNEFfUE1FX0ZP UkNFX0NUTCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFR19FRlVTRV9C WVBBU1MgfA0KPiBSRUdfRUZVU0VfUE9SLA0KPiA+IFJFR19FRlVTRV9QT1IpOw0KPiA+ICsgICAg ICAgdWRlbGF5KDEpOw0KPiA+ICsNCj4gPiArICAgICAgIHBjcl9kYmcocGNyLCAiRW5hYmxlIGVm dXNlIHBvciEiKTsNCj4gPiArICAgICAgIHBjcl9kYmcocGNyLCAic2F2ZSBlZnVzZSB0byBhdXRv bG9hZCIpOw0KPiA+ICsNCj4gPiArICAgICAgIHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwg UlRTNTI1QV9FRlVTRV9BREQsDQo+IFJFR19FRlVTRV9BRERfTUFTSywNCj4gPiAweDAwKTsNCj4g PiArICAgICAgIHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI1QV9FRlVTRV9DVEws DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUdfRUZVU0VfRU5BQkxFIHwN Cj4gUkVHX0VGVVNFX01PREUsDQo+ID4gUkVHX0VGVVNFX0VOQUJMRSk7DQo+ID4gKyAgICAgICAv KiBXYWl0IHRyYW5zZmVyIGVuZCAqLw0KPiA+ICsgICAgICAgZm9yIChqID0gMDsgaiA8IDEwMjQ7 IGorKykgew0KPiA+ICsgICAgICAgICAgICAgICBydHN4X3BjaV9yZWFkX3JlZ2lzdGVyKHBjciwg UlRTNTI1QV9FRlVTRV9DVEwsICZ0bXApOw0KPiA+ICsgICAgICAgICAgICAgICBpZiAoKHRtcCAm IDB4ODApID09IDApDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAg ICAgICB9DQo+ID4gKyAgICAgICBydHN4X3BjaV9yZWFkX3JlZ2lzdGVyKHBjciwgUlRTNTI1QV9F RlVTRV9EQVRBLCAmdmFsKTsNCj4gPiArICAgICAgIGNudCA9IHZhbCAmIDB4MEY7DQo+ID4gKyAg ICAgICBzdiA9IHZhbCAmIDB4MTA7DQo+ID4gKyAgICAgICBjdiA9IHZhbCAmIDB4MjA7DQo+IA0K PiAiY3YiIGlzIHVudXNlZDsganVzdCByZW1vdmUgaXQuDQo+IA0KPiA+ICsgICAgICAgaWYgKHN2 KSB7DQo+ID4gKyAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICBydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsDQo+IFJU UzUyNUFfRUZVU0VfQURELA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVH X0VGVVNFX0FERF9NQVNLLCAweDA0ICsgaSk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg cnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLA0KPiBSVFM1MjVBX0VGVVNFX0NUTCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFR19FRlVTRV9FTkFCTEUgfA0KPiBSRUdf RUZVU0VfTU9ERSwNCj4gPiBSRUdfRUZVU0VfRU5BQkxFKTsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAvKiBXYWl0IHRyYW5zZmVyIGVuZCAqLw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIGZvciAoaiA9IDA7IGogPCAxMDI0OyBqKyspIHsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJ0c3hfcGNpX3JlYWRfcmVnaXN0ZXIocGNyLA0KPiA+IFJUUzUyNUFfRUZV U0VfQ1RMLCAmdG1wKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgo dG1wICYgMHg4MCkgPT0gMCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIHJ0c3hfcGNpX3JlYWRfcmVnaXN0ZXIocGNyLA0KPiBSVFM1MjVBX0VG VVNFX0RBVEEsDQo+ID4gJnZhbCk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcnRzeF9w Y2lfd3JpdGVfcmVnaXN0ZXIocGNyLCAweEZGMDQgKyBpLCAweEZGLCB2YWwpOw0KPiA+ICsgICAg ICAgICAgICAgICB9DQo+ID4gKyAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgICAgICAgICBy dHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIDB4RkYwNCwgMHhGRiwNCj4gPiAodTgpUENJX1ZJ RChwY3IpKTsNCj4gPiArICAgICAgICAgICAgICAgcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNy LCAweEZGMDUsIDB4RkYsDQo+ID4gKHU4KShQQ0lfVklEKHBjcikgPj4gOCkpOw0KPiA+ICsgICAg ICAgICAgICAgICBydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIDB4RkYwNiwgMHhGRiwNCj4g PiAodTgpUENJX1BJRChwY3IpKTsNCj4gPiArICAgICAgICAgICAgICAgcnRzeF9wY2lfd3JpdGVf cmVnaXN0ZXIocGNyLCAweEZGMDcsIDB4RkYsDQo+ID4gKHU4KShQQ0lfUElEKHBjcikgPj4gOCkp Ow0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBjbnQg KiA0OyBpKyspIHsNCj4gPiArICAgICAgICAgICAgICAgaWYgKHN2KQ0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwNCj4gUlRTNTI1QV9FRlVT RV9BREQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUdfRUZVU0VfQURE X01BU0ssIDB4MDggKyBpKTsNCj4gPiArICAgICAgICAgICAgICAgZWxzZQ0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwNCj4gUlRTNTI1QV9F RlVTRV9BREQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUdfRUZVU0Vf QUREX01BU0ssIDB4MDQgKyBpKTsNCj4gPiArICAgICAgICAgICAgICAgcnRzeF9wY2lfd3JpdGVf cmVnaXN0ZXIocGNyLCBSVFM1MjVBX0VGVVNFX0NUTCwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFJFR19FRlVTRV9FTkFCTEUgfA0KPiBSRUdfRUZVU0VfTU9ERSwNCj4gPiBS RUdfRUZVU0VfRU5BQkxFKTsNCj4gPiArICAgICAgICAgICAgICAgLyogV2FpdCB0cmFuc2ZlciBl bmQgKi8NCj4gPiArICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IDEwMjQ7IGorKykgew0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJ0c3hfcGNpX3JlYWRfcmVnaXN0ZXIocGNyLA0K PiBSVFM1MjVBX0VGVVNFX0NUTCwNCj4gPiAmdG1wKTsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBpZiAoKHRtcCAmIDB4ODApID09IDApDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAgICAg ICBydHN4X3BjaV9yZWFkX3JlZ2lzdGVyKHBjciwgUlRTNTI1QV9FRlVTRV9EQVRBLCAmdmFsKTsN Cj4gPiArICAgICAgICAgICAgICAgcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCAweEZGMDgg KyBpLCAweEZGLCB2YWwpOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgICAgcnRzeF9wY2lfd3Jp dGVfcmVnaXN0ZXIocGNyLCAweEZGMDAsIDB4RkYsIChjbnQgJiAweDdGKSB8IDB4ODApOw0KPiA+ ICsgICAgICAgcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjRBX1BNRV9GT1JDRV9D VEwsDQo+ID4gKyAgICAgICAgICAgICAgIFJFR19FRlVTRV9CWVBBU1MgfCBSRUdfRUZVU0VfUE9S LA0KPiBSRUdfRUZVU0VfQllQQVNTKTsNCj4gPiArICAgICAgIHBjcl9kYmcocGNyLCAiRGlzYWJs ZSBlZnVzZSBwb3IhIik7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIHJ0czUyeGFf c2F2ZV9jb250ZW50X3RvX2F1dG9sb2FkX3NwYWNlKHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KPiA+ ICt7DQo+ID4gKyAgICAgICB1OCB2YWw7DQo+ID4gKw0KPiA+ICsgICAgICAgcnRzeF9wY2lfcmVh ZF9yZWdpc3RlcihwY3IsIFJFU0VUX0xPQURfUkVHLCAmdmFsKTsNCj4gPiArICAgICAgIGlmICh2 YWwgJiAweDAyKSB7DQo+ID4gKyAgICAgICAgICAgICAgIHJ0c3hfcGNpX3JlYWRfcmVnaXN0ZXIo cGNyLCBSVFM1MjVBX0JJT1NfQ0ZHLCAmdmFsKTsNCj4gPiArICAgICAgICAgICAgICAgaWYgKHZh bCAmIFJUUzUyNUFfTE9BRF9CSU9TX0ZMQUcpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNUFfQklPU19DRkcsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVFM1MjVBX0xPQURfQklPU19GTEFHLA0KPiA+ IFJUUzUyNUFfQ0xFQVJfQklPU19GTEFHKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLA0KPiBSVFM1MjRBX1BNRV9GT1JDRV9D VEwsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUdfRUZVU0VfUE9XRVJf TUFTSywNCj4gUkVHX0VGVVNFX1BPV0VST04pOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBwY3JfZGJnKHBjciwgIlBvd2VyIE9OIGVmdXNlISIpOw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIG1kZWxheSgxKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBydHM1 MnhhX3NhdmVfY29udGVudF9mcm9tX2VmdXNlKHBjcik7DQo+ID4gKyAgICAgICAgICAgICAgIH0g ZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcnRzeF9wY2lfcmVhZF9yZWdpc3Rl cihwY3IsDQo+IFJUUzUyNEFfUE1FX0ZPUkNFX0NUTCwNCj4gPiAmdmFsKTsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBpZiAoISh2YWwgJiAweDA4KSkNCj4gPiArDQo+IHJ0czUyeGFfc2F2 ZV9jb250ZW50X2Zyb21fZWZ1c2UocGNyKTsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsg ICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAgcGNyX2RiZyhwY3IsICJMb2FkIGZy b20gYXV0b2xvYWQiKTsNCj4gPiArICAgICAgICAgICAgICAgcnRzeF9wY2lfd3JpdGVfcmVnaXN0 ZXIocGNyLCAweEZGMDAsIDB4RkYsIDB4ODApOw0KPiA+ICsgICAgICAgICAgICAgICBydHN4X3Bj aV93cml0ZV9yZWdpc3RlcihwY3IsIDB4RkYwNCwgMHhGRiwNCj4gPiAodTgpUENJX1ZJRChwY3Ip KTsNCj4gPiArICAgICAgICAgICAgICAgcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCAweEZG MDUsIDB4RkYsDQo+ID4gKHU4KShQQ0lfVklEKHBjcikgPj4gOCkpOw0KPiA+ICsgICAgICAgICAg ICAgICBydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIDB4RkYwNiwgMHhGRiwNCj4gPiAodTgp UENJX1BJRChwY3IpKTsNCj4gPiArICAgICAgICAgICAgICAgcnRzeF9wY2lfd3JpdGVfcmVnaXN0 ZXIocGNyLCAweEZGMDcsIDB4RkYsDQo+ID4gKHU4KShQQ0lfUElEKHBjcikgPj4gOCkpOw0KPiA+ ICsgICAgICAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICBzdGF0aWMgaW50IHJ0czUyNDlfZXh0cmFf aW5pdF9odyhzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCj4gPiAgew0KPiA+ICAgICAgICAgc3RydWN0 IHJ0c3hfY3Jfb3B0aW9uICpvcHRpb24gPSAmKHBjci0+b3B0aW9uKTsNCj4gPiBAQCAtMTUzLDYg KzI2OCw5IEBAIHN0YXRpYyBpbnQgcnRzNTI0OV9leHRyYV9pbml0X2h3KHN0cnVjdCBydHN4X3Bj ciAqcGNyKQ0KPiA+DQo+ID4gICAgICAgICBydHN4X3BjaV9pbml0X2NtZChwY3IpOw0KPiA+DQo+ ID4gKyAgICAgICBpZiAoQ0hLX1BDSV9QSUQocGNyLCBQSURfNTI0QSkgfHwgQ0hLX1BDSV9QSUQo cGNyLCBQSURfNTI1QSkpDQo+ID4gKyAgICAgICAgICAgICAgIHJ0czUyeGFfc2F2ZV9jb250ZW50 X3RvX2F1dG9sb2FkX3NwYWNlKHBjcik7DQo+ID4gKw0KPiA+ICAgICAgICAgLyogUmVzdCBMMVNV QiBDb25maWcgKi8NCj4gPiAgICAgICAgIHJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdf Q01ELCBMMVNVQl9DT05GSUczLCAweEZGLA0KPiAweDAwKTsNCj4gPiAgICAgICAgIC8qIENvbmZp Z3VyZSBHUElPIGFzIG91dHB1dCAqLw0KPiA+IEBAIC0xNzEsMTggKzI4OSwzNSBAQCBzdGF0aWMg aW50IHJ0czUyNDlfZXh0cmFfaW5pdF9odyhzdHJ1Y3QgcnRzeF9wY3INCj4gKnBjcikNCj4gPiAg ICAgICAgIGVsc2UNCj4gPiAgICAgICAgICAgICAgICAgcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdS SVRFX1JFR19DTUQsIFBFVFhDRkcsIDB4QjAsDQo+IDB4ODApOw0KPiA+DQo+ID4gKyAgICAgICBy dHN4X3BjaV9zZW5kX2NtZChwY3IsIENNRF9USU1FT1VUX0RFRik7DQo+ID4gKw0KPiA+ICsgICAg ICAgaWYgKENIS19QQ0lfUElEKHBjciwgUElEXzUyNEEpIHx8IENIS19QQ0lfUElEKHBjciwgUElE XzUyNUEpKSB7DQo+ID4gKyAgICAgICAgICAgICAgIHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBj ciwgUkVHX1ZSRUYsIFBXRF9TVVNQTkRfRU4sDQo+ID4gUFdEX1NVU1BORF9FTik7DQo+ID4gKyAg ICAgICAgICAgICAgIHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI0QV9QTV9DVFJM MywgMHgwMSwNCj4gMHgwMCk7DQo+ID4gKyAgICAgICAgICAgICAgIHJ0c3hfcGNpX3dyaXRlX3Jl Z2lzdGVyKHBjciwgUlRTNTI0QV9QTUVfRk9SQ0VfQ1RMLA0KPiAweDMwLA0KPiA+IDB4MjApOw0K PiA+ICsgICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAgcnRzeF9wY2lfd3JpdGVf cmVnaXN0ZXIocGNyLCBQTUVfRk9SQ0VfQ1RMLCAweEZGLCAweDMwKTsNCj4gPiArICAgICAgICAg ICAgICAgcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBQTV9DVFJMMywgMHgwMSwgMHgwMCk7 DQo+ID4gKyAgICAgICB9DQo+ID4gICAgICAgICAvKg0KPiA+ICAgICAgICAgICogSWYgdV9mb3Jj ZV9jbGtyZXFfMCBpcyBlbmFibGVkLCBDTEtSRVEjIFBJTiB3aWxsIGJlIGZvcmNlZA0KPiA+ICAg ICAgICAgICogdG8gZHJpdmUgbG93LCBhbmQgd2UgZm9yY2libHkgcmVxdWVzdCBjbG9jay4NCj4g PiAgICAgICAgICAqLw0KPiA+ICAgICAgICAgaWYgKG9wdGlvbi0+Zm9yY2VfY2xrcmVxXzApDQo+ ID4gLSAgICAgICAgICAgICAgIHJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBQ RVRYQ0ZHLA0KPiA+ICsgICAgICAgICAgICAgICBydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3Is IFBFVFhDRkcsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgRk9SQ0VfQ0xLUkVRX0RFTElO S19NQVNLLA0KPiBGT1JDRV9DTEtSRVFfTE9XKTsNCj4gPiAgICAgICAgIGVsc2UNCj4gPiAtICAg ICAgICAgICAgICAgcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdSSVRFX1JFR19DTUQsIFBFVFhDRkcs DQo+ID4gKyAgICAgICAgICAgICAgIHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUEVUWENG RywNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBGT1JDRV9DTEtSRVFfREVMSU5LX01BU0ss DQo+IEZPUkNFX0NMS1JFUV9ISUdIKTsNCj4gPg0KPiA+IC0gICAgICAgcmV0dXJuIHJ0c3hfcGNp X3NlbmRfY21kKHBjciwgQ01EX1RJTUVPVVRfREVGKTsNCj4gPiArICAgICAgIHJ0c3hfcGNpX3dy aXRlX3JlZ2lzdGVyKHBjciwgcGNyLT5yZWdfcG1fY3RybDMsIDB4MTAsIDB4MDApOw0KPiA+ICsg ICAgICAgaWYgKENIS19QQ0lfUElEKHBjciwgUElEXzUyNEEpIHx8IENIS19QQ0lfUElEKHBjciwg UElEXzUyNUEpKSB7DQo+ID4gKyAgICAgICAgICAgICAgIHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVy KHBjciwgUlRTNTI0QV9QTUVfRk9SQ0VfQ1RMLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUkVHX0VGVVNFX1BPV0VSX01BU0ssDQo+IFJFR19FRlVTRV9QT1dFUk9GRik7DQo+ ID4gKyAgICAgICAgICAgICAgIHBjcl9kYmcocGNyLCAiUG93ZXIgT0ZGIGVmdXNlISIpOw0KPiA+ ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICB9DQo+ID4NCj4g PiAgc3RhdGljIGludCBydHM1MjQ5X29wdGltaXplX3BoeShzdHJ1Y3QgcnRzeF9wY3IgKnBjcikN Cj4gPiBAQCAtNjY4LDYgKzgwMyw4IEBAIHN0YXRpYyBpbnQgcnRzNTI1YV9leHRyYV9pbml0X2h3 KHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KPiA+ICB7DQo+ID4gICAgICAgICBydHM1MjQ5X2V4dHJh X2luaXRfaHcocGNyKTsNCj4gPg0KPiA+ICsgICAgICAgcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIo cGNyLCBSVFM1MjUwX0NMS19DRkczLA0KPiBSVFM1MjVBX0NGR19NRU1fUEQsDQo+ID4gUlRTNTI1 QV9DRkdfTUVNX1BEKTsNCj4gPiArDQo+ID4gICAgICAgICBydHN4X3BjaV93cml0ZV9yZWdpc3Rl cihwY3IsIFBDTEtfQ1RMLCBQQ0xLX01PREVfU0VMLA0KPiA+IFBDTEtfTU9ERV9TRUwpOw0KPiA+ ICAgICAgICAgaWYgKGlzX3ZlcnNpb24ocGNyLCAweDUyNUEsIElDX1ZFUl9BKSkgew0KPiA+ICAg ICAgICAgICAgICAgICBydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIEwxU1VCX0NPTkZJRzIs DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0czUyNjAuYw0KPiA+ IGIvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzNTI2MC5jDQo+ID4gaW5kZXggYjlmNjZiMTM4 NGE2Li4wYzNlMjZjNzljY2IgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9taXNjL2NhcmRyZWFk ZXIvcnRzNTI2MC5jDQo+ID4gKysrIGIvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzNTI2MC5j DQo+ID4gQEAgLTI2LDIxICsyNiwxNyBAQCBzdGF0aWMgdTggcnRzNTI2MF9nZXRfaWNfdmVyc2lv bihzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCj4gPg0KPiA+ICBzdGF0aWMgdm9pZCBydHM1MjYwX2Zp bGxfZHJpdmluZyhzdHJ1Y3QgcnRzeF9wY3IgKnBjciwgdTggdm9sdGFnZSkNCj4gPiAgew0KPiA+ IC0gICAgICAgdTggZHJpdmluZ18zdjNbNl1bM10gPSB7DQo+ID4gLSAgICAgICAgICAgICAgIHsw eDk0LCAweDk0LCAweDk0fSwNCj4gPiAtICAgICAgICAgICAgICAgezB4MTEsIDB4MTEsIDB4MTh9 LA0KPiA+IC0gICAgICAgICAgICAgICB7MHg1NSwgMHg1NSwgMHg1Q30sDQo+ID4gLSAgICAgICAg ICAgICAgIHsweDk0LCAweDk0LCAweDk0fSwNCj4gPiAtICAgICAgICAgICAgICAgezB4OTQsIDB4 OTQsIDB4OTR9LA0KPiA+IC0gICAgICAgICAgICAgICB7MHhGRiwgMHhGRiwgMHhGRn0sDQo+ID4g KyAgICAgICB1OCBkcml2aW5nXzN2M1s0XVszXSA9IHsNCj4gPiArICAgICAgICAgICAgICAgezB4 MTEsIDB4MTEsIDB4MTF9LA0KPiA+ICsgICAgICAgICAgICAgICB7MHgyMiwgMHgyMiwgMHgyMn0s DQo+ID4gKyAgICAgICAgICAgICAgIHsweDU1LCAweDU1LCAweDU1fSwNCj4gPiArICAgICAgICAg ICAgICAgezB4MzMsIDB4MzMsIDB4MzN9LA0KPiA+ICAgICAgICAgfTsNCj4gPiAtICAgICAgIHU4 IGRyaXZpbmdfMXY4WzZdWzNdID0gew0KPiA+IC0gICAgICAgICAgICAgICB7MHg5QSwgMHg4OSwg MHg4OX0sDQo+ID4gLSAgICAgICAgICAgICAgIHsweEM0LCAweEM0LCAweEM0fSwNCj4gPiAtICAg ICAgICAgICAgICAgezB4M0MsIDB4M0MsIDB4M0N9LA0KPiA+ICsgICAgICAgdTggZHJpdmluZ18x djhbNF1bM10gPSB7DQo+ID4gKyAgICAgICAgICAgICAgIHsweDM1LCAweDMzLCAweDMzfSwNCj4g PiArICAgICAgICAgICAgICAgezB4OEEsIDB4ODgsIDB4ODh9LA0KPiA+ICsgICAgICAgICAgICAg ICB7MHhCRCwgMHhCQiwgMHhCQn0sDQo+ID4gICAgICAgICAgICAgICAgIHsweDlCLCAweDk5LCAw eDk5fSwNCj4gPiAtICAgICAgICAgICAgICAgezB4OUEsIDB4ODksIDB4ODl9LA0KPiA+IC0gICAg ICAgICAgICAgICB7MHhGRSwgMHhGRSwgMHhGRX0sDQo+ID4gICAgICAgICB9Ow0KPiA+ICAgICAg ICAgdTggKCpkcml2aW5nKVszXSwgZHJpdmVfc2VsOw0KPiA+DQo+ID4gQEAgLTU4LDcgKzU0LDcg QEAgc3RhdGljIHZvaWQgcnRzNTI2MF9maWxsX2RyaXZpbmcoc3RydWN0IHJ0c3hfcGNyICpwY3Is IHU4DQo+ID4gdm9sdGFnZSkNCj4gPiAgICAgICAgIHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBj ciwgU0QzMF9DTURfRFJJVkVfU0VMLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAweEZG LCBkcml2aW5nW2RyaXZlX3NlbF1bMV0pOw0KPiA+DQo+ID4gLSAgICAgICBydHN4X3BjaV93cml0 ZV9yZWdpc3RlcihwY3IsIFNEMzBfQ01EX0RSSVZFX1NFTCwNCj4gPiArICAgICAgIHJ0c3hfcGNp X3dyaXRlX3JlZ2lzdGVyKHBjciwgU0QzMF9EQVRfRFJJVkVfU0VMLA0KPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAweEZGLCBkcml2aW5nW2RyaXZlX3NlbF1bMl0pOw0KPiA+ICB9DQo+ID4N Cj4gPiBAQCAtODIsNiArNzgsOCBAQCBzdGF0aWMgdm9pZCBydHN4X2Jhc2VfZmV0Y2hfdmVuZG9y X3NldHRpbmdzKHN0cnVjdA0KPiA+IHJ0c3hfcGNyICpwY3IpDQo+ID4NCj4gPiAgICAgICAgIHBj aV9yZWFkX2NvbmZpZ19kd29yZChwZGV2LCBQQ1JfU0VUVElOR19SRUcyLCAmcmVnKTsNCj4gPiAg ICAgICAgIHBjcl9kYmcocGNyLCAiQ2ZnIDB4JXg6IDB4JXhcbiIsIFBDUl9TRVRUSU5HX1JFRzIs IHJlZyk7DQo+ID4gKyAgICAgICBpZiAocnRzeF9jaGVja19tbWNfc3VwcG9ydChyZWcpKQ0KPiA+ ICsgICAgICAgICAgICAgICBwY3ItPmV4dHJhX2NhcHMgfD0gRVhUUkFfQ0FQU19OT19NTUM7DQo+ ID4gICAgICAgICBwY3ItPnNkMzBfZHJpdmVfc2VsXzN2MyA9IHJ0c3hfcmVnX3RvX3NkMzBfZHJp dmVfc2VsXzN2MyhyZWcpOw0KPiA+ICAgICAgICAgaWYgKHJ0c3hfcmVnX2NoZWNrX3JldmVyc2Vf c29ja2V0KHJlZykpDQo+ID4gICAgICAgICAgICAgICAgIHBjci0+ZmxhZ3MgfD0gUENSX1JFVkVS U0VfU09DS0VUOw0KPiA+IEBAIC05NSw5ICs5Myw4IEBAIHN0YXRpYyB2b2lkIHJ0c3hfYmFzZV9m b3JjZV9wb3dlcl9kb3duKHN0cnVjdCBydHN4X3Bjcg0KPiA+ICpwY3IsIHU4IHBtX3N0YXRlKQ0K PiA+ICAgICAgICAgcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBBVVRPTE9BRF9DRkdfQkFT RSArIDMsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUxJTktfVElNRV9N QVNLLCAwKTsNCj4gPg0KPiA+IC0gICAgICAgaWYgKHBtX3N0YXRlID09IEhPU1RfRU5URVJfUzMp DQo+ID4gLSAgICAgICAgICAgICAgIHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgcGNyLT5y ZWdfcG1fY3RybDMsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEQzX0RFTElOS19NT0RFX0VOLA0KPiA+IEQzX0RFTElOS19NT0RFX0VOKTsNCj4gPiArICAgICAg IHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgcGNyLT5yZWdfcG1fY3RybDMsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgRDNfREVMSU5LX01PREVfRU4sIEQzX0RFTElOS19NT0RFX0VO KTsNCj4gPg0KPiA+ICAgICAgICAgcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBGUERDVEws IEFMTF9QT1dFUl9ET1dOLA0KPiA+IEFMTF9QT1dFUl9ET1dOKTsNCj4gPiAgfQ0KPiA+IEBAIC01 NzQsNiArNTcxLDggQEAgc3RhdGljIGludCBydHM1MjYwX2V4dHJhX2luaXRfaHcoc3RydWN0IHJ0 c3hfcGNyICpwY3IpDQo+ID4gICAgICAgICAgICAgICAgIHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVy KHBjciwgUEVUWENGRywNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGT1JD RV9DTEtSRVFfREVMSU5LX01BU0ssDQo+ID4gRk9SQ0VfQ0xLUkVRX0hJR0gpOw0KPiA+DQo+ID4g KyAgICAgICBydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIHBjci0+cmVnX3BtX2N0cmwzLCAw eDEwLCAweDAwKTsNCj4gPiArDQo+ID4gICAgICAgICByZXR1cm4gMDsNCj4gPiAgfQ0KPiA+DQo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0c3hfcGNyLmgNCj4gPiBi L2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0c3hfcGNyLmgNCj4gPiBpbmRleCA2YjMyMmRiODcz OGUuLmYzOWMyMmNlYjY3OSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL21pc2MvY2FyZHJlYWRl ci9ydHN4X3Bjci5oDQo+ID4gKysrIGIvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzeF9wY3Iu aA0KPiA+IEBAIC0xOCw3ICsxOCwyNSBAQA0KPiA+ICAjZGVmaW5lIFJUUzUyMkFfUE1fQ1RSTDMg ICAgICAgICAgICAgICAweEZGN0UNCj4gPg0KPiA+ICAjZGVmaW5lIFJUUzUyNEFfUE1FX0ZPUkNF X0NUTCAgICAgICAgICAweEZGNzgNCj4gPiArI2RlZmluZSBSRUdfRUZVU0VfQllQQVNTICAgICAg ICAgICAgICAgMHgwOA0KPiA+ICsjZGVmaW5lIFJFR19FRlVTRV9QT1IgICAgICAgICAgICAgICAg ICAweDA0DQo+ID4gKyNkZWZpbmUgUkVHX0VGVVNFX1BPV0VSX01BU0sgICAgICAgICAgIDB4MDMN Cj4gPiArI2RlZmluZSBSRUdfRUZVU0VfUE9XRVJPTiAgICAgICAgICAgICAgMHgwMw0KPiA+ICsj ZGVmaW5lIFJFR19FRlVTRV9QT1dFUk9GRiAgICAgICAgICAgICAweDAwDQo+ID4gKyNkZWZpbmUg UlRTNTI1MF9DTEtfQ0ZHMyAgICAgICAgICAgICAgIDB4RkY3OQ0KPiA+ICsjZGVmaW5lIFJUUzUy NUFfQ0ZHX01FTV9QRCAgICAgICAgICAgICAweEYwDQo+ID4gICNkZWZpbmUgUlRTNTI0QV9QTV9D VFJMMyAgICAgICAgICAgICAgIDB4RkY3RQ0KPiA+ICsjZGVmaW5lIFJUUzUyNUFfQklPU19DRkcg ICAgICAgICAgICAgICAweEZGMkQNCj4gPiArI2RlZmluZSBSVFM1MjVBX0xPQURfQklPU19GTEFH IDB4MDENCj4gPiArI2RlZmluZSBSVFM1MjVBX0NMRUFSX0JJT1NfRkxBRyAgICAgICAgMHgwMA0K PiA+ICsNCj4gPiArI2RlZmluZSBSVFM1MjVBX0VGVVNFX0NUTCAgICAgICAgICAgICAgMHhGQzMy DQo+ID4gKyNkZWZpbmUgUkVHX0VGVVNFX0VOQUJMRSAgICAgICAgICAgICAgIDB4ODANCj4gPiAr I2RlZmluZSBSRUdfRUZVU0VfTU9ERSAgICAgICAgICAgICAgICAgMHg0MA0KPiA+ICsjZGVmaW5l IFJUUzUyNUFfRUZVU0VfQUREICAgICAgICAgICAgICAweEZDMzMNCj4gPiArI2RlZmluZSBSRUdf RUZVU0VfQUREX01BU0sgICAgICAgICAgICAgMHgzRg0KPiA+ICsjZGVmaW5lIFJUUzUyNUFfRUZV U0VfREFUQSAgICAgICAgICAgICAweEZDMzUNCj4gPiArDQo+ID4NCj4gPiAgI2RlZmluZSBMVFJf QUNUSVZFX0xBVEVOQ1lfREVGICAgICAgICAgMHg4ODNDDQo+ID4gICNkZWZpbmUgTFRSX0lETEVf TEFURU5DWV9ERUYgICAgICAgICAgIDB4ODkyQw0KPiA+IC0tDQo+ID4gMi4xNy4xDQo+IA0KPiAN Cj4gLS0tLS0tUGxlYXNlIGNvbnNpZGVyIHRoZSBlbnZpcm9ubWVudCBiZWZvcmUgcHJpbnRpbmcg dGhpcyBlLW1haWwuDQo=