Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp2155732pxf; Sat, 13 Mar 2021 09:29:48 -0800 (PST) X-Google-Smtp-Source: ABdhPJw0yHW4ey/Y86V6vezQH+T+N1y1W8dEBCpiNfGIxD3eTNpskKyFhA71vj1LtUzSo7jN04vk X-Received: by 2002:a17:907:7692:: with SMTP id jv18mr14893877ejc.475.1615656588278; Sat, 13 Mar 2021 09:29:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615656588; cv=none; d=google.com; s=arc-20160816; b=ESLCwL3Sd2v7HZv5dYS/9jAymtpfQBEVXqO5ZiLxsF0E7HsdirP/8p3Ov2Hmu4SN+V fj0yn8YLGbzt9DXEwmeZZQoLsjfDKwMTk6VJGinSfkhol6matjEUkAVlF9ekGlj2mH83 p7bssJImf+ofmlDeDiTDmM3xsawhiYfGE1AgJ8q3GIer2aPvAFXr/icm0RmDJQLdWabW JFj8gy8oLqJdtSYjTs+k4wODPsNAkHxCwQpigvkuVN8D/gmm23YgmTQe1ITzxPvXtYrS Bb94OY4cWM9PcUeg0lcF7b90HXmBKJsLJi9H0OjvgpCXG8JyHICGAEXN2ejS+xclzI6J /vfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :dkim-signature; bh=SxuXt1F/ehD6M4cG723ulEtbno9vV8BuZ5DXrB18OPk=; b=ArHhvO1Ko61+4h8xMgJhK6+BZnRmcPpS4zxzFkSB7iEH4v0CJdQ3L8vA9cY1uBGnOd KiT5bI3O+r1SlLlTg1ILfGrjLTly8U33CdBnVIJNO9Vvkt0/7bFNVZNCF6DXLA5tzgF5 ze9O90fInb8oxpY1WIEeC40dgbjHPYCK0PUzcDfnLz+7m0JO1jdtlZdlvZDwVbVqBPNa TU5vH9FDxrnMGaBGiLb9ophBFhZPD5PdUdSabd5falfv16NxvQNFH5FUpERd4gwTWguJ ENvd+IR1vsBn0O5C+EdthMAJxgSHgNga0+v6sYskgMzFTtk0silpmSS1NdQO2bztunrX IQAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=JJXbkXP+; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v12si7000778ejb.425.2021.03.13.09.29.11; Sat, 13 Mar 2021 09:29:48 -0800 (PST) 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; dkim=pass header.i=@mediatek.com header.s=dk header.b=JJXbkXP+; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234103AbhCMRZU (ORCPT + 99 others); Sat, 13 Mar 2021 12:25:20 -0500 Received: from mailgw02.mediatek.com ([210.61.82.184]:33072 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S233635AbhCMRYx (ORCPT ); Sat, 13 Mar 2021 12:24:53 -0500 X-UUID: 484af5cdd929441186dde1b984a35f91-20210314 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=SxuXt1F/ehD6M4cG723ulEtbno9vV8BuZ5DXrB18OPk=; b=JJXbkXP+mXxgVmW/JllXfcK+CgWzie+k5sec4gyeVbyAZ+6pqweCPqDBt5kUsdkLxehRre/R5njI0MVksYAdKJ2HF0VGT9iGl8WRZb7Vg3pKqxuY9YZl59gZ+dijYh/kYEHso459E9haR1xtsY0bFp9vBhxPYfnQkaiFl/n4BzY=; X-UUID: 484af5cdd929441186dde1b984a35f91-20210314 Received: from mtkexhb02.mediatek.inc [(172.21.101.103)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1447232727; Sun, 14 Mar 2021 01:24:50 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sun, 14 Mar 2021 01:24:48 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Sun, 14 Mar 2021 01:24:48 +0800 Message-ID: <1615656288.1253.2.camel@mtksdaap41> Subject: Re: [PATCH v6 3/4] spmi: mediatek: Add support for MT6873/8192 From: Hsin-hsiung Wang To: Stephen Boyd CC: Matthias Brugger , Rob Herring , , , , , , , Date: Sun, 14 Mar 2021 01:24:48 +0800 In-Reply-To: <161282286152.4172033.2089037988542209363@swboyd.mtv.corp.google.com> References: <1612675154-2747-1-git-send-email-hsin-hsiung.wang@mediatek.com> <1612675154-2747-4-git-send-email-hsin-hsiung.wang@mediatek.com> <161282286152.4172033.2089037988542209363@swboyd.mtv.corp.google.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQpIaSwNCg0KT24gTW9uLCAyMDIxLTAyLTA4IGF0IDE0OjIxIC0wODAwLCBTdGVwaGVuIEJveWQg d3JvdGU6DQo+IFF1b3RpbmcgSHNpbi1Ic2l1bmcgV2FuZyAoMjAyMS0wMi0wNiAyMToxOToxMykN Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcG1pL0tjb25maWcgYi9kcml2ZXJzL3NwbWkvS2Nv bmZpZw0KPiA+IGluZGV4IGE1M2JhZDU0MWYxYS4uNDE4ODQ4ODQwOTk5IDEwMDY0NA0KPiA+IC0t LSBhL2RyaXZlcnMvc3BtaS9LY29uZmlnDQo+ID4gKysrIGIvZHJpdmVycy9zcG1pL0tjb25maWcN Cj4gPiBAQCAtMjUsNCArMjUsMTMgQEAgY29uZmlnIFNQTUlfTVNNX1BNSUNfQVJCDQo+ID4gICAg ICAgICAgIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGNvbW11bmljYXRpbmcgd2l0aCBRdWFsY29tbSBQ TUlDcyBhbmQNCj4gPiAgICAgICAgICAgb3RoZXIgZGV2aWNlcyB0aGF0IGhhdmUgdGhlIFNQTUkg aW50ZXJmYWNlLg0KPiA+ICANCj4gPiArY29uZmlnIFNQTUlfTVRLX1BNSUYNCj4gPiArICAgICAg IHRyaXN0YXRlICJNZWRpYXRlayBTUE1JIENvbnRyb2xsZXIgKFBNSUMgQXJiaXRlcikiDQo+ID4g KyAgICAgICBoZWxwDQo+ID4gKyAgICAgICAgIElmIHlvdSBzYXkgeWVzIHRvIHRoaXMgb3B0aW9u LCBzdXBwb3J0IHdpbGwgYmUgaW5jbHVkZWQgZm9yIHRoZQ0KPiA+ICsgICAgICAgICBidWlsdC1p biBTUE1JIFBNSUMgQXJiaXRlciBpbnRlcmZhY2Ugb24gTWVkaWF0ZWsgZmFtaWx5DQo+ID4gKyAg ICAgICAgIHByb2Nlc3NvcnMuDQo+ID4gKw0KPiA+ICsgICAgICAgICBUaGlzIGlzIHJlcXVpcmVk IGZvciBjb21tdW5pY2F0aW5nIHdpdGggTWVkaWF0ZWsgUE1JQ3MgYW5kDQo+ID4gKyAgICAgICAg IG90aGVyIGRldmljZXMgdGhhdCBoYXZlIHRoZSBTUE1JIGludGVyZmFjZS4NCj4gDQo+IFByZWZl cmFibHkgYWRkIGFub3RoZXIgbmV3bGluZSBoZXJlIHRvIHVuc3RpY2sgdGhlICdlbmRpZicNCj4g DQoNClRoYW5rcy4gSSB3aWxsIHVwZGF0ZSBpdCBpbiB0aGUgbmV4dCBwYXRjaC4NCg0KPiA+ICBl bmRpZg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NwbWkvc3BtaS1tdGstcG1pZi5jIGIvZHJp dmVycy9zcG1pL3NwbWktbXRrLXBtaWYuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4g aW5kZXggMDAwMDAwMDAwMDAwLi40YWM0NjQzZjg5ZjMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4g KysrIGIvZHJpdmVycy9zcG1pL3NwbWktbXRrLXBtaWYuYw0KPiA+IEBAIC0wLDAgKzEsNDg4IEBA DQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ID4gKy8vDQo+ID4g Ky8vIENvcHlyaWdodCAoYykgMjAyMSBNZWRpYVRlayBJbmMuDQo+ID4gKw0KPiA+ICsjaW5jbHVk ZSA8bGludXgvY2xrLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4NCj4gPiArI2lu Y2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+ DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9zcG1pLmg+DQo+ID4gKw0KPiA+ICsjZGVmaW5lIFNXSU5G X0lETEUgICAgIDB4MDANCj4gPiArI2RlZmluZSBTV0lORl9XRlZMRENMUiAweDA2DQo+ID4gKw0K PiA+ICsjZGVmaW5lIEdFVF9TV0lORih4KSAgICgoKHgpID4+IDEpICYgMHg3KQ0KPiA+ICsNCj4g PiArI2RlZmluZSBQTUlGX0NNRF9SRUdfMCAgICAgICAgIDANCj4gPiArI2RlZmluZSBQTUlGX0NN RF9SRUcgICAgICAgICAgIDENCj4gPiArI2RlZmluZSBQTUlGX0NNRF9FWFRfUkVHICAgICAgIDIN Cj4gPiArI2RlZmluZSBQTUlGX0NNRF9FWFRfUkVHX0xPTkcgIDMNCj4gPiArDQo+ID4gKyNkZWZp bmUgUE1JRl9ERUxBWV9VUyAgIDEwDQo+ID4gKyNkZWZpbmUgUE1JRl9USU1FT1VUX1VTICgxMCAq IDEwMDApDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFBNSUZfQ0hBTl9PRkZTRVQgMHg1DQo+ID4gKw0K PiA+ICsjZGVmaW5lIFBNSUZfTUFYX0NMS1MgIDMNCj4gPiArDQo+ID4gKyNkZWZpbmUgU1BNSV9P UF9TVF9CVVNZIDENCj4gPiArDQo+ID4gK3N0cnVjdCBjaF9yZWcgew0KPiA+ICsgICAgICAgdTMy IGNoX3N0YTsNCj4gPiArICAgICAgIHUzMiB3ZGF0YTsNCj4gPiArICAgICAgIHUzMiByZGF0YTsN Cj4gPiArICAgICAgIHUzMiBjaF9zZW5kOw0KPiA+ICsgICAgICAgdTMyIGNoX3JkeTsNCj4gPiAr fTsNCj4gPiArDQo+ID4gK3N0cnVjdCBwbWlmX2RhdGEgew0KPiA+ICsgICAgICAgY29uc3QgdTMy ICAgICAgICpyZWdzOw0KPiA+ICsgICAgICAgY29uc3QgdTMyICAgICAgICpzcG1pbXN0X3JlZ3M7 DQo+ID4gKyAgICAgICB1MzIgICAgIHNvY19jaGFuOw0KPiANCj4gSXMgdGhpcyB1c2VkPw0KPiAN Cg0KWWVzLg0KDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgcG1pZiB7DQo+ID4gKyAgICAg ICB2b2lkIF9faW9tZW0gICAgKmJhc2U7DQo+ID4gKyAgICAgICB2b2lkIF9faW9tZW0gICAgKnNw bWltc3RfYmFzZTsNCj4gPiArICAgICAgIHJhd19zcGlubG9ja190ICBsb2NrOw0KPiANCj4gV2h5 IGlzIHRoZSBzcGlubG9jayByYXc/IElzIGl0IHVzZWQgaW4gaGFyZCBpcnEgaGFuZGxpbmc/DQo+ IA0KDQpUaGFua3MgZm9yIHRoZSBjb21tZW50LiBBZnRlciByZXZpZXdpbmcgdGhlIGNvZGUsIEkg d2lsbCByZW1vdmUgaXQgYW5kDQp1cGRhdGUgaXQgaW4gdGhlIG5leHQgcGF0Y2guDQoNCj4gPiAr ICAgICAgIHN0cnVjdCBjaF9yZWcgICBjaGFuOw0KPiA+ICsgICAgICAgc3RydWN0IGNsa19idWxr X2RhdGEgY2xrc1tQTUlGX01BWF9DTEtTXTsNCj4gPiArICAgICAgIHUzMiBuY2xrczsNCj4gPiAr ICAgICAgIGNvbnN0IHN0cnVjdCBwbWlmX2RhdGEgKmRhdGE7DQo+ID4gK307DQo+ID4gKw0KPiA+ ICtzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHBtaWZfY2xvY2tfbmFtZXNbXSA9IHsNCj4gPiAr ICAgICAgICJwbWlmX3N5c19jayIsICJwbWlmX3Rtcl9jayIsICJzcG1pbXN0X2Nsa19tdXgiLA0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArZW51bSBwbWlmX3JlZ3Mgew0KPiA+ICsgICAgICAgUE1JRl9J TklUX0RPTkUsDQo+ID4gKyAgICAgICBQTUlGX0lORl9FTiwNCj4gPiArICAgICAgIFBNSUZfQVJC X0VOLA0KPiA+ICsgICAgICAgUE1JRl9DTURJU1NVRV9FTiwNCj4gPiArICAgICAgIFBNSUZfVElN RVJfQ1RSTCwNCj4gPiArICAgICAgIFBNSUZfU1BJX01PREVfQ1RSTCwNCj4gPiArICAgICAgIFBN SUZfSVJRX0VWRU5UX0VOXzAsDQo+ID4gKyAgICAgICBQTUlGX0lSUV9GTEFHXzAsDQo+ID4gKyAg ICAgICBQTUlGX0lSUV9DTFJfMCwNCj4gPiArICAgICAgIFBNSUZfSVJRX0VWRU5UX0VOXzEsDQo+ ID4gKyAgICAgICBQTUlGX0lSUV9GTEFHXzEsDQo+ID4gKyAgICAgICBQTUlGX0lSUV9DTFJfMSwN Cj4gPiArICAgICAgIFBNSUZfSVJRX0VWRU5UX0VOXzIsDQo+ID4gKyAgICAgICBQTUlGX0lSUV9G TEFHXzIsDQo+ID4gKyAgICAgICBQTUlGX0lSUV9DTFJfMiwNCj4gPiArICAgICAgIFBNSUZfSVJR X0VWRU5UX0VOXzMsDQo+ID4gKyAgICAgICBQTUlGX0lSUV9GTEFHXzMsDQo+ID4gKyAgICAgICBQ TUlGX0lSUV9DTFJfMywNCj4gPiArICAgICAgIFBNSUZfSVJRX0VWRU5UX0VOXzQsDQo+ID4gKyAg ICAgICBQTUlGX0lSUV9GTEFHXzQsDQo+ID4gKyAgICAgICBQTUlGX0lSUV9DTFJfNCwNCj4gPiAr ICAgICAgIFBNSUZfV0RUX0VWRU5UX0VOXzAsDQo+ID4gKyAgICAgICBQTUlGX1dEVF9GTEFHXzAs DQo+ID4gKyAgICAgICBQTUlGX1dEVF9FVkVOVF9FTl8xLA0KPiA+ICsgICAgICAgUE1JRl9XRFRf RkxBR18xLA0KPiA+ICsgICAgICAgUE1JRl9TV0lORl8wX1NUQSwNCj4gPiArICAgICAgIFBNSUZf U1dJTkZfMF9XREFUQV8zMV8wLA0KPiA+ICsgICAgICAgUE1JRl9TV0lORl8wX1JEQVRBXzMxXzAs DQo+ID4gKyAgICAgICBQTUlGX1NXSU5GXzBfQUNDLA0KPiA+ICsgICAgICAgUE1JRl9TV0lORl8w X1ZMRF9DTFIsDQo+ID4gKyAgICAgICBQTUlGX1NXSU5GXzFfU1RBLA0KPiA+ICsgICAgICAgUE1J Rl9TV0lORl8xX1dEQVRBXzMxXzAsDQo+ID4gKyAgICAgICBQTUlGX1NXSU5GXzFfUkRBVEFfMzFf MCwNCj4gPiArICAgICAgIFBNSUZfU1dJTkZfMV9BQ0MsDQo+ID4gKyAgICAgICBQTUlGX1NXSU5G XzFfVkxEX0NMUiwNCj4gPiArICAgICAgIFBNSUZfU1dJTkZfMl9TVEEsDQo+ID4gKyAgICAgICBQ TUlGX1NXSU5GXzJfV0RBVEFfMzFfMCwNCj4gPiArICAgICAgIFBNSUZfU1dJTkZfMl9SREFUQV8z MV8wLA0KPiA+ICsgICAgICAgUE1JRl9TV0lORl8yX0FDQywNCj4gPiArICAgICAgIFBNSUZfU1dJ TkZfMl9WTERfQ0xSLA0KPiA+ICsgICAgICAgUE1JRl9TV0lORl8zX1NUQSwNCj4gPiArICAgICAg IFBNSUZfU1dJTkZfM19XREFUQV8zMV8wLA0KPiA+ICsgICAgICAgUE1JRl9TV0lORl8zX1JEQVRB XzMxXzAsDQo+ID4gKyAgICAgICBQTUlGX1NXSU5GXzNfQUNDLA0KPiA+ICsgICAgICAgUE1JRl9T V0lORl8zX1ZMRF9DTFIsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3QgdTMyIG10 Njg3M19yZWdzW10gPSB7DQo+ID4gKyAgICAgICBbUE1JRl9JTklUX0RPTkVdID0gICAgICAweDAw MDAsDQo+ID4gKyAgICAgICBbUE1JRl9JTkZfRU5dID0gICAgICAgICAweDAwMjQsDQo+ID4gKyAg ICAgICBbUE1JRl9BUkJfRU5dID0gICAgICAgICAweDAxNTAsDQo+ID4gKyAgICAgICBbUE1JRl9D TURJU1NVRV9FTl0gPSAgICAweDAzQjQsDQo+ID4gKyAgICAgICBbUE1JRl9USU1FUl9DVFJMXSA9 ICAgICAweDAzRTAsDQo+ID4gKyAgICAgICBbUE1JRl9TUElfTU9ERV9DVFJMXSA9ICAweDA0MDAs DQo+ID4gKyAgICAgICBbUE1JRl9JUlFfRVZFTlRfRU5fMF0gPSAweDA0MTgsDQo+ID4gKyAgICAg ICBbUE1JRl9JUlFfRkxBR18wXSA9ICAgICAweDA0MjAsDQo+ID4gKyAgICAgICBbUE1JRl9JUlFf Q0xSXzBdID0gICAgICAweDA0MjQsDQo+ID4gKyAgICAgICBbUE1JRl9JUlFfRVZFTlRfRU5fMV0g PSAweDA0MjgsDQo+ID4gKyAgICAgICBbUE1JRl9JUlFfRkxBR18xXSA9ICAgICAweDA0MzAsDQo+ ID4gKyAgICAgICBbUE1JRl9JUlFfQ0xSXzFdID0gICAgICAweDA0MzQsDQo+ID4gKyAgICAgICBb UE1JRl9JUlFfRVZFTlRfRU5fMl0gPSAweDA0MzgsDQo+ID4gKyAgICAgICBbUE1JRl9JUlFfRkxB R18yXSA9ICAgICAweDA0NDAsDQo+ID4gKyAgICAgICBbUE1JRl9JUlFfQ0xSXzJdID0gICAgICAw eDA0NDQsDQo+ID4gKyAgICAgICBbUE1JRl9JUlFfRVZFTlRfRU5fM10gPSAweDA0NDgsDQo+ID4g KyAgICAgICBbUE1JRl9JUlFfRkxBR18zXSA9ICAgICAweDA0NTAsDQo+ID4gKyAgICAgICBbUE1J Rl9JUlFfQ0xSXzNdID0gICAgICAweDA0NTQsDQo+ID4gKyAgICAgICBbUE1JRl9JUlFfRVZFTlRf RU5fNF0gPSAweDA0NTgsDQo+ID4gKyAgICAgICBbUE1JRl9JUlFfRkxBR180XSA9ICAgICAweDA0 NjAsDQo+ID4gKyAgICAgICBbUE1JRl9JUlFfQ0xSXzRdID0gICAgICAweDA0NjQsDQo+ID4gKyAg ICAgICBbUE1JRl9XRFRfRVZFTlRfRU5fMF0gPSAweDA0NkMsDQo+ID4gKyAgICAgICBbUE1JRl9X RFRfRkxBR18wXSA9ICAgICAweDA0NzAsDQo+ID4gKyAgICAgICBbUE1JRl9XRFRfRVZFTlRfRU5f MV0gPSAweDA0NzQsDQo+ID4gKyAgICAgICBbUE1JRl9XRFRfRkxBR18xXSA9ICAgICAweDA0Nzgs DQo+ID4gKyAgICAgICBbUE1JRl9TV0lORl8wX0FDQ10gPSAgICAweDBDMDAsDQo+ID4gKyAgICAg ICBbUE1JRl9TV0lORl8wX1dEQVRBXzMxXzBdID0gICAgIDB4MEMwNCwNCj4gPiArICAgICAgIFtQ TUlGX1NXSU5GXzBfUkRBVEFfMzFfMF0gPSAgICAgMHgwQzE0LA0KPiA+ICsgICAgICAgW1BNSUZf U1dJTkZfMF9WTERfQ0xSXSA9ICAgICAgICAweDBDMjQsDQo+ID4gKyAgICAgICBbUE1JRl9TV0lO Rl8wX1NUQV0gPSAgICAweDBDMjgsDQo+ID4gKyAgICAgICBbUE1JRl9TV0lORl8xX0FDQ10gPSAg ICAweDBDNDAsDQo+ID4gKyAgICAgICBbUE1JRl9TV0lORl8xX1dEQVRBXzMxXzBdID0gICAgIDB4 MEM0NCwNCj4gPiArICAgICAgIFtQTUlGX1NXSU5GXzFfUkRBVEFfMzFfMF0gPSAgICAgMHgwQzU0 LA0KPiA+ICsgICAgICAgW1BNSUZfU1dJTkZfMV9WTERfQ0xSXSA9ICAgICAgICAweDBDNjQsDQo+ ID4gKyAgICAgICBbUE1JRl9TV0lORl8xX1NUQV0gPSAgICAweDBDNjgsDQo+ID4gKyAgICAgICBb UE1JRl9TV0lORl8yX0FDQ10gPSAgICAweDBDODAsDQo+ID4gKyAgICAgICBbUE1JRl9TV0lORl8y X1dEQVRBXzMxXzBdID0gICAgIDB4MEM4NCwNCj4gPiArICAgICAgIFtQTUlGX1NXSU5GXzJfUkRB VEFfMzFfMF0gPSAgICAgMHgwQzk0LA0KPiA+ICsgICAgICAgW1BNSUZfU1dJTkZfMl9WTERfQ0xS XSA9ICAgICAgICAweDBDQTQsDQo+ID4gKyAgICAgICBbUE1JRl9TV0lORl8yX1NUQV0gPSAgICAw eDBDQTgsDQo+ID4gKyAgICAgICBbUE1JRl9TV0lORl8zX0FDQ10gPSAgICAweDBDQzAsDQo+ID4g KyAgICAgICBbUE1JRl9TV0lORl8zX1dEQVRBXzMxXzBdID0gICAgIDB4MENDNCwNCj4gPiArICAg ICAgIFtQTUlGX1NXSU5GXzNfUkRBVEFfMzFfMF0gPSAgICAgMHgwQ0Q0LA0KPiA+ICsgICAgICAg W1BNSUZfU1dJTkZfM19WTERfQ0xSXSA9ICAgICAgICAweDBDRTQsDQo+ID4gKyAgICAgICBbUE1J Rl9TV0lORl8zX1NUQV0gPSAgICAweDBDRTgsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtlbnVtIHNw bWlfcmVncyB7DQo+ID4gKyAgICAgICBTUE1JX09QX1NUX0NUUkwsDQo+ID4gKyAgICAgICBTUE1J X0dSUF9JRF9FTiwNCj4gPiArICAgICAgIFNQTUlfT1BfU1RfU1RBLA0KPiA+ICsgICAgICAgU1BN SV9NU1RfU0FNUEwsDQo+ID4gKyAgICAgICBTUE1JX01TVF9SRVFfRU4sDQo+ID4gKyAgICAgICBT UE1JX1JFQ19DVFJMLA0KPiA+ICsgICAgICAgU1BNSV9SRUMwLA0KPiA+ICsgICAgICAgU1BNSV9S RUMxLA0KPiA+ICsgICAgICAgU1BNSV9SRUMyLA0KPiA+ICsgICAgICAgU1BNSV9SRUMzLA0KPiA+ ICsgICAgICAgU1BNSV9SRUM0LA0KPiA+ICsgICAgICAgU1BNSV9NU1RfREJHLA0KPiA+ICt9Ow0K PiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHUzMiBtdDY4NzNfc3BtaV9yZWdzW10gPSB7DQo+IA0K PiBUaGVyZSdzIG9ubHkgb25lIG9mIHRoZXNlIHNvIGZhci4gSXMgdGhlcmUgZ29pbmcgdG8gYmUg YSBkaWZmZXJlbnQNCj4gcmVnaXN0ZXIgbGF5b3V0IGluIHRoZSBmdXR1cmU/IElmIHdlIGNhbiBh dm9pZCB0aGUgaW5kaXJlY3Rpb24gaXQgd291bGQNCj4gYmUgaWRlYWwuDQo+IA0KDQpZZXMsIHdl IGhhdmUgb3RoZXIgY2hpcHMgd2l0aCBkaWZmZXJlbnQgcmVnaXN0ZXJzIGZvciBzcG1pIGRyaXZl ciBpbiB0aGUNCmZlYXR1cmUuDQoNCj4gPiArICAgICAgIFtTUE1JX09QX1NUX0NUUkxdID0gICAg IDB4MDAwMCwNCj4gPiArICAgICAgIFtTUE1JX0dSUF9JRF9FTl0gPSAgICAgIDB4MDAwNCwNCj4g PiArICAgICAgIFtTUE1JX09QX1NUX1NUQV0gPSAgICAgIDB4MDAwOCwNCj4gPiArICAgICAgIFtT UE1JX01TVF9TQU1QTF0gPSAgICAgIDB4MDAwYywNCj4gPiArICAgICAgIFtTUE1JX01TVF9SRVFf RU5dID0gICAgIDB4MDAxMCwNCj4gPiArICAgICAgIFtTUE1JX1JFQ19DVFJMXSA9ICAgICAgIDB4 MDA0MCwNCj4gPiArICAgICAgIFtTUE1JX1JFQzBdID0gICAgICAgICAgIDB4MDA0NCwNCj4gPiAr ICAgICAgIFtTUE1JX1JFQzFdID0gICAgICAgICAgIDB4MDA0OCwNCj4gPiArICAgICAgIFtTUE1J X1JFQzJdID0gICAgICAgICAgIDB4MDA0YywNCj4gPiArICAgICAgIFtTUE1JX1JFQzNdID0gICAg ICAgICAgIDB4MDA1MCwNCj4gPiArICAgICAgIFtTUE1JX1JFQzRdID0gICAgICAgICAgIDB4MDA1 NCwNCj4gPiArICAgICAgIFtTUE1JX01TVF9EQkddID0gICAgICAgIDB4MDBmYywNCj4gPiArfTsN Cj4gPiArDQo+ID4gK3N0YXRpYyB1MzIgcG1pZl9yZWFkbChzdHJ1Y3QgcG1pZiAqYXJiLCBlbnVt IHBtaWZfcmVncyByZWcpDQo+ID4gK3sNCj4gPiArICAgICAgIHJldHVybiByZWFkbChhcmItPmJh c2UgKyBhcmItPmRhdGEtPnJlZ3NbcmVnXSk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2 b2lkIHBtaWZfd3JpdGVsKHN0cnVjdCBwbWlmICphcmIsIHUzMiB2YWwsIGVudW0gcG1pZl9yZWdz IHJlZykNCj4gPiArew0KPiA+ICsgICAgICAgd3JpdGVsKHZhbCwgYXJiLT5iYXNlICsgYXJiLT5k YXRhLT5yZWdzW3JlZ10pOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBtdGtfc3Bt aV93cml0ZWwoc3RydWN0IHBtaWYgKmFyYiwgdTMyIHZhbCwgZW51bSBzcG1pX3JlZ3MgcmVnKQ0K PiA+ICt7DQo+ID4gKyAgICAgICB3cml0ZWwodmFsLCBhcmItPnNwbWltc3RfYmFzZSArIGFyYi0+ ZGF0YS0+c3BtaW1zdF9yZWdzW3JlZ10pOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgYm9v bCBwbWlmX2lzX2ZzbV92bGRjbHIoc3RydWN0IHBtaWYgKmFyYikNCj4gPiArew0KPiA+ICsgICAg ICAgdTMyIHJlZ19yZGF0YTsNCj4gPiArDQo+ID4gKyAgICAgICByZWdfcmRhdGEgPSBwbWlmX3Jl YWRsKGFyYiwgYXJiLT5jaGFuLmNoX3N0YSk7DQo+ID4gKyAgICAgICByZXR1cm4gR0VUX1NXSU5G KHJlZ19yZGF0YSkgPT0gU1dJTkZfV0ZWTERDTFI7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRp YyBpbnQgcG1pZl9hcmJfY21kKHN0cnVjdCBzcG1pX2NvbnRyb2xsZXIgKmN0cmwsIHU4IG9wYywg dTggc2lkKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgcG1pZiAqYXJiID0gc3BtaV9jb250 cm9sbGVyX2dldF9kcnZkYXRhKGN0cmwpOw0KPiA+ICsgICAgICAgdTMyIHJkYXRhLCBjbWQ7DQo+ ID4gKyAgICAgICBpbnQgcmV0Ow0KPiA+ICsNCj4gPiArICAgICAgIC8qIENoZWNrIGZvciBhcmd1 bWVudCB2YWxpZGF0aW9uLiAqLw0KPiA+ICsgICAgICAgaWYgKHNpZCAmIH4weGYpIHsNCj4gPiAr ICAgICAgICAgICAgICAgZGV2X2VycigmY3RybC0+ZGV2LCAiZXhjZWVkIHRoZSBtYXggc2x2IGlk XG4iKTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKyAgICAgICB9 DQo+ID4gKw0KPiA+ICsgICAgICAgLyogQ2hlY2sgdGhlIG9wY29kZSAqLw0KPiA+ICsgICAgICAg aWYgKG9wYyA8IFNQTUlfQ01EX1JFU0VUIHx8IG9wYyA+IFNQTUlfQ01EX1dBS0VVUCkNCj4gPiAr ICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsgICAgICAgY21kID0g b3BjIC0gU1BNSV9DTURfUkVTRVQ7DQo+ID4gKw0KPiA+ICsgICAgICAgbXRrX3NwbWlfd3JpdGVs KGFyYiwgKGNtZCA8PCAweDQpIHwgc2lkLCBTUE1JX09QX1NUX0NUUkwpOw0KPiA+ICsgICAgICAg cmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0X2F0b21pYyhhcmItPnNwbWltc3RfYmFzZSArIGFyYi0+ ZGF0YS0+c3BtaW1zdF9yZWdzW1NQTUlfT1BfU1RfU1RBXSwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmRhdGEsIChyZGF0YSAmIFNQTUlfT1BfU1RfQlVTWSkg PT0gU1BNSV9PUF9TVF9CVVNZLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQTUlGX0RFTEFZX1VTLCBQTUlGX1RJTUVPVVRfVVMpOw0KPiA+ICsgICAgICAgaWYg KHJldCA8IDApDQo+ID4gKyAgICAgICAgICAgICAgIGRldl9lcnIoJmN0cmwtPmRldiwgInRpbWVv dXQsIGVyciA9ICVkXG4iLCByZXQpOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiByZXQ7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgcG1pZl9zcG1pX3JlYWRfY21kKHN0cnVjdCBz cG1pX2NvbnRyb2xsZXIgKmN0cmwsIHU4IG9wYywgdTggc2lkLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHUxNiBhZGRyLCB1OCAqYnVmLCBzaXplX3QgbGVuKQ0KPiA+ICt7DQo+ ID4gKyAgICAgICBzdHJ1Y3QgcG1pZiAqYXJiID0gc3BtaV9jb250cm9sbGVyX2dldF9kcnZkYXRh KGN0cmwpOw0KPiA+ICsgICAgICAgc3RydWN0IGNoX3JlZyAqaW5mX3JlZzsNCj4gPiArICAgICAg IGludCByZXQ7DQo+ID4gKyAgICAgICB1MzIgZGF0YSwgY21kOw0KPiA+ICsgICAgICAgdW5zaWdu ZWQgbG9uZyBmbGFnczsNCj4gPiArDQo+ID4gKyAgICAgICAvKiBDaGVjayBmb3IgYXJndW1lbnQg dmFsaWRhdGlvbi4gKi8NCj4gPiArICAgICAgIGlmIChzaWQgJiB+MHhmKSB7DQo+ID4gKyAgICAg ICAgICAgICAgIGRldl9lcnIoJmN0cmwtPmRldiwgImV4Y2VlZCB0aGUgbWF4IHNsdiBpZFxuIik7 DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICAgfQ0KPiA+ ICsNCj4gPiArICAgICAgIGlmIChsZW4gPiA0KSB7DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9l cnIoJmN0cmwtPmRldiwgInBtaWYgc3VwcG9ydHMgMS4uNCBieXRlcyBwZXIgdHJhbnMsIGJ1dDol enUgcmVxdWVzdGVkIiwgbGVuKTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKG9wYyA+PSAweDYwICYmIG9w YyA8PSAweDdmKQ0KPiA+ICsgICAgICAgICAgICAgICBvcGMgPSBQTUlGX0NNRF9SRUc7DQo+ID4g KyAgICAgICBlbHNlIGlmICgob3BjID49IDB4MjAgJiYgb3BjIDw9IDB4MmYpIHx8IChvcGMgPj0g MHgzOCAmJiBvcGMgPD0gMHgzZikpDQo+ID4gKyAgICAgICAgICAgICAgIG9wYyA9IFBNSUZfQ01E X0VYVF9SRUdfTE9ORzsNCj4gPiArICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsgICAgICAgcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZh cmItPmxvY2ssIGZsYWdzKTsNCj4gPiArDQo+ID4gKyAgICAgICAvKiBXYWl0IGZvciBTb2Z0d2Fy ZSBJbnRlcmZhY2UgRlNNIHN0YXRlIHRvIGJlIElETEUuICovDQo+ID4gKyAgICAgICBpbmZfcmVn ID0gJmFyYi0+Y2hhbjsNCj4gPiArICAgICAgIHJldCA9IHJlYWRsX3BvbGxfdGltZW91dF9hdG9t aWMoYXJiLT5iYXNlICsgYXJiLT5kYXRhLT5yZWdzW2luZl9yZWctPmNoX3N0YV0sDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsIEdFVF9TV0lORihkYXRh KSA9PSBTV0lORl9JRExFLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQTUlGX0RFTEFZX1VTLCBQTUlGX1RJTUVPVVRfVVMpOw0KPiA+ICsgICAgICAgaWYgKHJl dCA8IDApIHsNCj4gPiArICAgICAgICAgICAgICAgLyogc2V0IGNoYW5uZWwgcmVhZHkgaWYgdGhl IGRhdGEgaGFzIHRyYW5zZmVycmVkICovDQo+ID4gKyAgICAgICAgICAgICAgIGlmIChwbWlmX2lz X2ZzbV92bGRjbHIoYXJiKSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBwbWlmX3dyaXRl bChhcmIsIDEsIGluZl9yZWctPmNoX3JkeSk7DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9lcnIo JmN0cmwtPmRldiwgImZhaWxlZCB0byB3YWl0IGZvciBTV0lORl9JRExFXG4iKTsNCj4gPiArICAg ICAgICAgICAgICAgZ290byBvdXQ7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAg LyogU2VuZCB0aGUgY29tbWFuZC4gKi8NCj4gPiArICAgICAgIGNtZCA9IChvcGMgPDwgMzApIHwg KHNpZCA8PCAyNCkgfCAoKGxlbiAtIDEpIDw8IDE2KSB8IGFkZHI7DQo+ID4gKyAgICAgICBwbWlm X3dyaXRlbChhcmIsIGNtZCwgaW5mX3JlZy0+Y2hfc2VuZCk7DQo+ID4gKw0KPiA+ICsgICAgICAg LyoNCj4gPiArICAgICAgICAqIFdhaXQgZm9yIFNvZnR3YXJlIEludGVyZmFjZSBGU00gc3RhdGUg dG8gYmUgV0ZWTERDTFIsDQo+ID4gKyAgICAgICAgKiByZWFkIHRoZSBkYXRhIGFuZCBjbGVhciB0 aGUgdmFsaWQgZmxhZy4NCj4gPiArICAgICAgICAqLw0KPiA+ICsgICAgICAgcmV0ID0gcmVhZGxf cG9sbF90aW1lb3V0X2F0b21pYyhhcmItPmJhc2UgKyBhcmItPmRhdGEtPnJlZ3NbaW5mX3JlZy0+ Y2hfc3RhXSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0 YSwgR0VUX1NXSU5GKGRhdGEpID09IFNXSU5GX1dGVkxEQ0xSLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQTUlGX0RFTEFZX1VTLCBQTUlGX1RJTUVPVVRfVVMp Ow0KPiA+ICsgICAgICAgaWYgKHJldCA8IDApIHsNCj4gPiArICAgICAgICAgICAgICAgZGV2X2Vy cigmY3RybC0+ZGV2LCAiZmFpbGVkIHRvIHdhaXQgZm9yIFNXSU5GX1dGVkxEQ0xSXG4iKTsNCj4g PiArICAgICAgICAgICAgICAgZ290byBvdXQ7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgICAgZGF0YSA9IHBtaWZfcmVhZGwoYXJiLCBpbmZfcmVnLT5yZGF0YSk7DQo+ID4gKyAgICAg ICBtZW1jcHkoYnVmLCAmZGF0YSwgbGVuKTsNCj4gPiArICAgICAgIHBtaWZfd3JpdGVsKGFyYiwg MSwgaW5mX3JlZy0+Y2hfcmR5KTsNCj4gPiArDQo+ID4gK291dDoNCj4gPiArICAgICAgIHJhd19z cGluX3VubG9ja19pcnFyZXN0b3JlKCZhcmItPmxvY2ssIGZsYWdzKTsNCj4gPiArICAgICAgIGlm IChyZXQgPCAwKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiAr ICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHBtaWZfc3Bt aV93cml0ZV9jbWQoc3RydWN0IHNwbWlfY29udHJvbGxlciAqY3RybCwgdTggb3BjLCB1OCBzaWQs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUxNiBhZGRyLCBjb25zdCB1OCAq YnVmLCBzaXplX3QgbGVuKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgcG1pZiAqYXJiID0g c3BtaV9jb250cm9sbGVyX2dldF9kcnZkYXRhKGN0cmwpOw0KPiA+ICsgICAgICAgc3RydWN0IGNo X3JlZyAqaW5mX3JlZzsNCj4gPiArICAgICAgIGludCByZXQ7DQo+ID4gKyAgICAgICB1MzIgZGF0 YSwgY21kOw0KPiA+ICsgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gPiArDQo+ID4gKyAg ICAgICAvKiBDaGVjayBmb3IgYXJndW1lbnQgdmFsaWRhdGlvbi4gKi8NCj4gPiArICAgICAgIGlm IChzaWQgJiB+MHhmKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9lcnIoJmN0cmwtPmRldiwg ImV4Y2VlZCB0aGUgbWF4IHNsdiBpZFxuIik7DQo+IA0KPiBGZWVscyBsaWtlIHNvbWV0aGluZyB3 ZSBzaG91bGQgcHVzaCB1cCBpbnRvIHRoZSBjb3JlIGZyYW1ld29yayBpbnN0ZWFkDQo+IG9mIGhh dmluZyBlYWNoIGRyaXZlciBmaWd1cmUgb3V0Lg0KPiANCg0KVGhhbmtzIGZvciB0aGUgcmV2aWV3 Lg0KQWZ0ZXIgY2hlY2tpbmcgdGhlIGZyYW1ld29yaywgaXQgYWxyZWFkeSBoYXMgdGhlIHNhbWUg Y2hlY2ssIHNvIEkgd2lsbCByZW1vdmUgaXQgaW4gdGhlIG5leHQgcGF0Y2guDQoNCj4gPiArICAg ICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgICAgaWYgKGxlbiA+IDQpIHsNCj4gPiArICAgICAgICAgICAgICAgZGV2X2VycigmY3RybC0+ ZGV2LCAicG1pZiBzdXBwb3J0cyAxLi40IGJ5dGVzIHBlciB0cmFucywgYnV0OiV6dSByZXF1ZXN0 ZWQiLCBsZW4pOw0KPiANCj4gRmVlbHMgbGlrZSBzb21ldGhpbmcgd2Ugc2hvdWxkIHB1c2ggdXAg aW50byB0aGUgY29yZSBmcmFtZXdvcmsgaW5zdGVhZA0KPiBvZiBoYXZpbmcgZWFjaCBkcml2ZXIg ZmlndXJlIG91dC4NCj4gDQoNClRoYW5rcyBmb3IgdGhlIGNvbW1lbnQsIGl0J3Mgb3VyIGh3IGRl c2lnbiwgbm90IGZvciBjb21tb24gZHJpdmVyLiANCg0KPiA+ICsgICAgICAgICAgICAgICByZXR1 cm4gLUVJTlZBTDsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAvKiBDaGVjayB0 aGUgb3Bjb2RlICovDQo+ID4gKyAgICAgICBpZiAob3BjID49IDB4NDAgJiYgb3BjIDw9IDB4NUYp DQo+ID4gKyAgICAgICAgICAgICAgIG9wYyA9IFBNSUZfQ01EX1JFRzsNCj4gPiArICAgICAgIGVs c2UgaWYgKChvcGMgPD0gMHhGKSB8fCAob3BjID49IDB4MzAgJiYgb3BjIDw9IDB4MzcpKQ0KPiA+ ICsgICAgICAgICAgICAgICBvcGMgPSBQTUlGX0NNRF9FWFRfUkVHX0xPTkc7DQo+ID4gKyAgICAg ICBlbHNlIGlmIChvcGMgPj0gMHg4MCkNCj4gPiArICAgICAgICAgICAgICAgb3BjID0gUE1JRl9D TURfUkVHXzA7DQo+ID4gKyAgICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAt RUlOVkFMOw0KPiA+ICsNCj4gPiArICAgICAgIHJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYXJiLT5s b2NrLCBmbGFncyk7DQo+ID4gKw0KPiA+ICsgICAgICAgLyogV2FpdCBmb3IgU29mdHdhcmUgSW50 ZXJmYWNlIEZTTSBzdGF0ZSB0byBiZSBJRExFLiAqLw0KPiA+ICsgICAgICAgaW5mX3JlZyA9ICZh cmItPmNoYW47DQo+ID4gKyAgICAgICByZXQgPSByZWFkbF9wb2xsX3RpbWVvdXRfYXRvbWljKGFy Yi0+YmFzZSArIGFyYi0+ZGF0YS0+cmVnc1tpbmZfcmVnLT5jaF9zdGFdLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLCBHRVRfU1dJTkYoZGF0YSkgPT0g U1dJTkZfSURMRSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UE1JRl9ERUxBWV9VUywgUE1JRl9USU1FT1VUX1VTKTsNCj4gPiArICAgICAgIGlmIChyZXQgPCAw KSB7DQo+ID4gKyAgICAgICAgICAgICAgIC8qIHNldCBjaGFubmVsIHJlYWR5IGlmIHRoZSBkYXRh IGhhcyB0cmFuc2ZlcnJlZCAqLw0KPiA+ICsgICAgICAgICAgICAgICBpZiAocG1pZl9pc19mc21f dmxkY2xyKGFyYikpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcG1pZl93cml0ZWwoYXJi LCAxLCBpbmZfcmVnLT5jaF9yZHkpOw0KPiA+ICsgICAgICAgICAgICAgICBkZXZfZXJyKCZjdHJs LT5kZXYsICJmYWlsZWQgdG8gd2FpdCBmb3IgU1dJTkZfSURMRVxuIik7DQo+ID4gKyAgICAgICAg ICAgICAgIGdvdG8gb3V0Ow0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIC8qIFNl dCB0aGUgd3JpdGUgZGF0YS4gKi8NCj4gPiArICAgICAgIG1lbWNweSgmZGF0YSwgYnVmLCBsZW4p Ow0KPiA+ICsgICAgICAgcG1pZl93cml0ZWwoYXJiLCBkYXRhLCBpbmZfcmVnLT53ZGF0YSk7DQo+ ID4gKw0KPiA+ICsgICAgICAgLyogU2VuZCB0aGUgY29tbWFuZC4gKi8NCj4gPiArICAgICAgIGNt ZCA9IChvcGMgPDwgMzApIHwgQklUKDI5KSB8IChzaWQgPDwgMjQpIHwgKChsZW4gLSAxKSA8PCAx NikgfCBhZGRyOw0KPiA+ICsgICAgICAgcG1pZl93cml0ZWwoYXJiLCBjbWQsIGluZl9yZWctPmNo X3NlbmQpOw0KPiANCj4gV2hhdCBpcyBCSVQgMjk/IElzIHRoYXQgc3BlY2lhbCBzb21laG93Pw0K PiANCg0KQml0IDI5IG1lYW5zIHdyaXRlIG9yIHJlYWQgY21kLg0KMSBmb3Igd3JpdGUgYW5kIDAg Zm9yIHJlYWQuIA0KDQo+ID4gKw0KPiA+ICtvdXQ6DQo+ID4gKyAgICAgICByYXdfc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmYXJiLT5sb2NrLCBmbGFncyk7DQo+ID4gKyAgICAgICBpZiAocmV0IDwg MCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKyAgICAgICBy ZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCg0KDQo=