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=-17.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, USER_AGENT_SANE_2 autolearn=unavailable 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 F363EC433EF for ; Wed, 22 Sep 2021 07:15:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D0D7761156 for ; Wed, 22 Sep 2021 07:15:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233149AbhIVHRE (ORCPT ); Wed, 22 Sep 2021 03:17:04 -0400 Received: from Mailgw01.mediatek.com ([1.203.163.78]:18586 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S232946AbhIVHRC (ORCPT ); Wed, 22 Sep 2021 03:17:02 -0400 X-UUID: fcf005a27d364ed49440c57ef0f687d3-20210922 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=xgeq0Oxb/rs5NNmLixA1URVKzZC9xdbmAyw/ZjcC1vQ=; b=kUXA64g0w34zdMD07x/zcbIPkAPofOOcqeIXJtuPpdtTFk+/Z8Rd58ZI+rfHYbYRW9F6uRfkytcw53Fv8EMB8qrIAOim3760uo+BgfW+rbciiy6PzQccHrZndRYksIe/ACjoG1leNNec99VegLOqMdO6o7TdaHA2L2CF3w9vUKI=; X-UUID: fcf005a27d364ed49440c57ef0f687d3-20210922 Received: from mtkcas32.mediatek.inc [(172.27.4.253)] by mailgw01.mediatek.com (envelope-from ) (mailgw01.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1488162200; Wed, 22 Sep 2021 15:15:29 +0800 Received: from MTKCAS36.mediatek.inc (172.27.4.186) by MTKMBS33N1.mediatek.inc (172.27.4.75) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 22 Sep 2021 15:15:22 +0800 Received: from mhfsdcap04 (10.17.3.154) by MTKCAS36.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 22 Sep 2021 15:15:21 +0800 Message-ID: <2f618d2abe90b15b2949f93a28cd0910d3cbded7.camel@mediatek.com> Subject: Re: [PATCH 1/4] phy: mediatek: add support for phy-mtk-hdmi-mt8195 From: Chunfeng Yun To: Guillaume Ranquet CC: Chun-Kuang Hu , Philipp Zabel , David Airlie , Daniel Vetter , Rob Herring , Matthias Brugger , Kishon Vijay Abraham I , "Vinod Koul" , CK Hu , Jitao shi , , , , , , Date: Wed, 22 Sep 2021 15:15:23 +0800 In-Reply-To: <20210907083723.7725-2-granquet@baylibre.com> References: <20210907083723.7725-1-granquet@baylibre.com> <20210907083723.7725-2-granquet@baylibre.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 MIME-Version: 1.0 X-TM-SNTS-SMTP: B0DAE3A750B1586185CBA09883D76C85461BC6C1EE1B20A205E8443CDBBFFF1F2000:8 X-MTK: N Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gVHVlLCAyMDIxLTA5LTA3IGF0IDEwOjM3ICswMjAwLCBHdWlsbGF1bWUgUmFucXVldCB3cm90 ZToNCj4gQWRkIGJhc2ljIHN1cHBvcnQgZm9yIHRoZSBtZWRpYXRlayBoZG1pIHBoeSBvbiBNVDgx OTUgU29DDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBHdWlsbGF1bWUgUmFucXVldCA8Z3JhbnF1ZXRA YmF5bGlicmUuY29tPg0KPiAtLS0NCj4gIGRyaXZlcnMvcGh5L21lZGlhdGVrL01ha2VmaWxlICAg ICAgICAgICAgICB8ICAgMSArDQo+ICBkcml2ZXJzL3BoeS9tZWRpYXRlay9waHktbXRrLWhkbWkt bXQ4MTk1LmMgfCA3NzcNCj4gKysrKysrKysrKysrKysrKysrKysrDQo+ICBkcml2ZXJzL3BoeS9t ZWRpYXRlay9waHktbXRrLWhkbWktbXQ4MTk1LmggfCAxNzkgKysrKysNCj4gIDMgZmlsZXMgY2hh bmdlZCwgOTU3IGluc2VydGlvbnMoKykNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3Bo eS9tZWRpYXRlay9waHktbXRrLWhkbWktbXQ4MTk1LmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL3BoeS9tZWRpYXRlay9waHktbXRrLWhkbWktbXQ4MTk1LmgNCj4gDQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3BoeS9tZWRpYXRlay9NYWtlZmlsZQ0KPiBiL2RyaXZlcnMvcGh5L21lZGlh dGVrL01ha2VmaWxlDQo+IGluZGV4IGFjZTY2MGZiZWQzYS4uODAyNDk2MTE2MGFkIDEwMDY0NA0K PiAtLS0gYS9kcml2ZXJzL3BoeS9tZWRpYXRlay9NYWtlZmlsZQ0KPiArKysgYi9kcml2ZXJzL3Bo eS9tZWRpYXRlay9NYWtlZmlsZQ0KPiBAQCAtMTAsNiArMTAsNyBAQCBvYmotJChDT05GSUdfUEhZ X01US19YU1BIWSkJCSs9IHBoeS1tdGstDQo+IHhzcGh5Lm8NCj4gIHBoeS1tdGstaGRtaS1kcnYt eQkJCTo9IHBoeS1tdGstaGRtaS5vDQo+ICBwaHktbXRrLWhkbWktZHJ2LXkJCQkrPSBwaHktbXRr LWhkbWktbXQyNzAxLm8NCj4gIHBoeS1tdGstaGRtaS1kcnYteQkJCSs9IHBoeS1tdGstaGRtaS1t dDgxNzMubw0KPiArcGh5LW10ay1oZG1pLWRydi15CQkJKz0gcGh5LW10ay1oZG1pLW10ODE5NS5v DQo+ICBvYmotJChDT05GSUdfUEhZX01US19IRE1JKQkJKz0gcGh5LW10ay1oZG1pLWRydi5vDQo+ ICANCj4gIHBoeS1tdGstbWlwaS1kc2ktZHJ2LXkJCQk6PSBwaHktbXRrLW1pcGktZHNpLm8NCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L21lZGlhdGVrL3BoeS1tdGstaGRtaS1tdDgxOTUuYw0K PiBiL2RyaXZlcnMvcGh5L21lZGlhdGVrL3BoeS1tdGstaGRtaS1tdDgxOTUuYw0KPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjBjYjQ2YWIyOTI1Nw0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvcGh5L21lZGlhdGVrL3BoeS1tdGstaGRtaS1tdDgx OTUuYw0KPiBAQCAtMCwwICsxLDc3NyBAQA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjANCj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTkgTWVkaWFUZWsgSW5jLg0K MjAyMT8NCj4gKyAqLw0KPiArDQo+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4gKyNpbmNs dWRlIDxsaW51eC9pby5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4NCj4gKyNp bmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9waHkvcGh5Lmg+DQo+ ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ICsjaW5jbHVkZSA8bGludXgv dHlwZXMuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9udm1lbS1jb25zdW1lci5oPg0KPiArDQo+ICsj aW5jbHVkZSAicGh5LW10ay1oZG1pLW10ODE5NS5oIg0KPiArI2luY2x1ZGUgInBoeS1tdGstaGRt aS5oIg0KPiArDQo+ICtzdGF0aWMgaW5saW5lIGJvb2wgbXRrX2hkbWlfcGh5X3JlYWRiaXQoc3Ry dWN0IG10a19oZG1pX3BoeQ0KPiAqaGRtaV9waHksDQo+ICsJCQkJCXVuc2lnbmVkIHNob3J0IHJl ZywgdW5zaWduZWQNCj4gaW50IG9mZnNldCkNCj4gK3sNCj4gKwlyZXR1cm4gKHJlYWRsKGhkbWlf cGh5LT5yZWdzICsgcmVnKSAmIG9mZnNldCk7DQo+ICt9DQo+ICsNCj4gKy8qKioqKioqKipBbmFs b2cgQVBJIGV4cG9ydCB0byBIRE1JIERpZ2l0YWwgc3RhcnQqKioqKi8NCj4gK3N0YXRpYyB2b2lk IG10a19oZG1pX2FuYV9maWZvX2VuKHN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5KQ0KPiAr ew0KPiArCS8qbWFrZSBkYXRhIGZpZm8gd3JpdGFibGUgZm9yIGhkbWkyLjAqLw0KPiArCW10a19o ZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0FOQV9DVEwsDQo+IHJlZ19hbmFfaGRtaTIwX2Zp Zm9fZW4sDQo+ICsJCQkgIHJlZ19hbmFfaGRtaTIwX2ZpZm9fZW4pOw0KPiArfQ0KPiArDQo+ICt2 b2lkIG10a190bWRzX2hpZ2hfYml0X2Nsa19yYXRpbyhzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1p X3BoeSwgYm9vbA0KPiBlbmFibGUpDQo+ICt7DQo+ICsJbXRrX2hkbWlfYW5hX2ZpZm9fZW4oaGRt aV9waHkpOw0KPiArDQo+ICsJLyogSERNSSAyLjAgc3BlY2lmaWNhdGlvbiwgMy40R2JwcyA8PSBU TURTIEJpdCBSYXRlIDw9IDZHLA0KPiArCSAqIGNsb2NrIGJpdCByYXRpbyAxOjQwLCB1bmRlciAz LjRHYnBzLCBjbG9jayBiaXQgcmF0aW8gMToxMA0KPiArCSAqLw0KPiArCWlmIChlbmFibGUpDQo+ ICsJCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JMjBfQ0xLX0NGRywNCj4gKwkJCQkg ICgweDIgPDwgcmVnX3R4Y19kaXZfU0hJRlQpLA0KPiByZWdfdHhjX2Rpdik7DQo+ICsJZWxzZQ0K PiArCQltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSTIwX0NMS19DRkcsIDAsDQo+IHJl Z190eGNfZGl2KTsNCj4gK30NCj4gKw0KPiArLyoqKioqKioqKkFuYWxvZyBBUEkgZXhwb3J0IHRv IEhETUkgRGlnaXRhbCBlbmQqKioqKioqLw0KPiArDQo+ICtzdGF0aWMgaW50IG10a19oZG1pX3Bs bF9zZWxlY3Rfc291cmNlKHN0cnVjdCBjbGtfaHcgKmh3KQ0KPiArew0KPiArCXN0cnVjdCBtdGtf aGRtaV9waHkgKmhkbWlfcGh5ID0gdG9fbXRrX2hkbWlfcGh5KGh3KTsNCj4gKw0KPiArCW10a19o ZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NUTF8zLA0KPiArCQkJMHgwIDw8IFJFR19IRE1J VFhfUkVGX1hUQUxfU0VMX1NISUZULA0KSG93IGFib3V0IHVzaW5nIGEgbWFjcm8sIGxpa2UgUkVH X0hETUlUWF9SRUZfWFRBTF9TRUxfVkFMKHgpPw0KDQo+ICsJCQlSRUdfSERNSVRYX1JFRl9YVEFM X1NFTCk7DQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfQ1RMXzMsDQo+ICsJ CQkweDAgPDwgUkVHX0hETUlUWF9SRUZfUkVTUExMX1NFTF9TSElGVCwNCj4gKwkJCVJFR19IRE1J VFhfUkVGX1JFU1BMTF9TRUwpOw0KPiArDQo+ICsJLypEQV9IRE1JVFgyMV9SRUZfQ0sgZm9yIFRY UExMIGlucHV0IHNvdXJjZSovDQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlf MV9DRkdfMTAsDQo+ICsJCQkgIDB4MCA8PCBSR19IRE1JVFhQTExfUkVGX0NLX1NFTF9TSElGVCwN Cj4gKwkJCSAgUkdfSERNSVRYUExMX1JFRl9DS19TRUwpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgbXRrX2hkbWlfcGxsX3BlcmZvcm1hbmNlX3NldHRpbmco c3RydWN0IGNsa19odyAqaHcpDQo+ICt7DQo+ICsJc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9w aHkgPSB0b19tdGtfaGRtaV9waHkoaHcpOw0KPiArDQo+ICsJLyogbm8gbWF0dGVyIHBsbCBpbnB1 dCBzb3VyY2UgaXMgSERNSVJYX1JFRl9DSywgeFRhbDI2TSBvciBUVkQNCj4gUExMLA0KPiArCSAq IHRoZSBwZXJmb3JtYW5jZSBjb25maWd1cmF0aW9uIGlzIHRoZSBzYW1lLg0KPiArCSAqIFJHX0hE TUlUWFBMTF9CUDIgYWx3YXlzIDEnYjEgPSAweDENCj4gKwkgKiBSR19IRE1JVFhQTExfQkNbMTow XSBhbHdheXMgMidiMTEgPSAweDMNCj4gKwkgKiBSR19IRE1JVFhQTExfSUNbNDowXSBhbHdheXMg NSdiMDAwMDEgPSAweDENCj4gKwkgKiBSR19IRE1JVFhQTExfQlJbMjowXSBzdGFnZSB0cmVhdG1l bnQ6DQo+ICsJICogICAgICAyNGJpdCBvciA0OGJpdC0+MydiMDAxID0gMHgxDQo+ICsJICogICAg ICAzMGJpdCBvciAzNmJpdC0+MydiMDExID0gMHgzDQo+ICsJICogUkdfSERNSVRYUExMX0lSWzQ6 MF0gc3RhZ2UgdHJlYXRtZW50Og0KPiArCSAqICAgICAgMjRiaXQsMzBiaXQsNDhiaXQgLT41J2Iw MDAxMCA9IDB4Mg0KPiArCSAqICAgICAgMzZiaXQgLT41J2IwMDAxMSA9IDB4Mw0KPiArCSAqIFJH X0hETUlUWFBMTF9CUFszOjBdIGFsd2F5cyA0J2IxMTExID0gMHhmDQo+ICsJICogUkdfSERNSVRY UExMX0lCQU5EX0ZJWF9FTiwgUkdfSERNSVRYUExMX1JFU0VSVkVbMTRdIGFsd2F5cw0KPiAyJ2Iw MCA9IDB4MA0KPiArCSAqIFJHX0hETUlUWFBMTF9ISUtWQ08gYWx3YXlzIDEnYjEgPSAweDENCj4g KwkgKi8NCj4gKw0KPiArCS8qIEJQMiAqLw0KPiArCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5 LCBIRE1JXzFfUExMX0NGR18wLA0KPiArCQkJICAweDEgPDwgUkdfSERNSVRYUExMX0JQMl9TSElG VCwNCj4gUkdfSERNSVRYUExMX0JQMik7DQo+ICsNCj4gKwkvKiBCQyAqLw0KPiArCW10a19oZG1p X3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JXzFfUExMX0NGR18yLA0KPiArCQkJICAweDMgPDwgUkdf SERNSVRYUExMX0JDX1NISUZULA0KPiBSR19IRE1JVFhQTExfQkMpOw0KPiArDQo+ICsJLyogSUMg Ki8NCj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8xX1BMTF9DRkdfMiwNCj4g KwkJCSAgMHgxIDw8IFJHX0hETUlUWFBMTF9JQ19TSElGVCwNCj4gUkdfSERNSVRYUExMX0lDKTsN Cj4gKw0KPiArCS8qIEJSICovDQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlf MV9QTExfQ0ZHXzIsDQo+ICsJCQkweDIgPDwgUkdfSERNSVRYUExMX0JSX1NISUZULA0KPiArCQkJ UkdfSERNSVRYUExMX0JSKTsNCj4gKw0KPiArCS8qIElSICovDQo+ICsJbXRrX2hkbWlfcGh5X21h c2soaGRtaV9waHksIEhETUlfMV9QTExfQ0ZHXzIsDQo+ICsJCQkweDIgPDwgUkdfSERNSVRYUExM X0lSX1NISUZULA0KPiArCQkJUkdfSERNSVRYUExMX0lSKTsNCj4gKw0KPiArCS8qIEJQICovDQo+ ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfMV9QTExfQ0ZHXzIsDQo+ICsJCQkg IDB4ZiA8PCBSR19IRE1JVFhQTExfQlBfU0hJRlQsDQo+IFJHX0hETUlUWFBMTF9CUCk7DQo+ICsN Cj4gKwkvKiBJQkFORF9GSVhfRU4sIFJFU0VSVkVbMTRdICovDQo+ICsJbXRrX2hkbWlfcGh5X21h c2soaGRtaV9waHksIEhETUlfMV9QTExfQ0ZHXzAsDQo+ICsJCQkgIDB4MCA8PCBSR19IRE1JVFhQ TExfSUJBTkRfRklYX0VOX1NISUZULA0KPiArCQkJICBSR19IRE1JVFhQTExfSUJBTkRfRklYX0VO KTsNCj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8xX1BMTF9DRkdfMSwNCj4g KwkJCSAgMHgwIDw8IFJHX0hETUlUWFBMTF9SRVNFUlZFX0JJVDE0X1NISUZULA0KPiArCQkJICBS R19IRE1JVFhQTExfUkVTRVJWRV9CSVQxNCk7DQo+ICsNCj4gKwkvKiBISUtWQ08gKi8NCj4gKwlt dGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8xX1BMTF9DRkdfMiwNCj4gKwkJCSAgMHgw IDw8IFJHX0hETUlUWFBMTF9ISUtWQ09fU0hJRlQsDQo+ICsJCQkgIFJHX0hETUlUWFBMTF9ISUtW Q08pOw0KPiArDQo+ICsJLyogSFJFTiAqLw0KPiArCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5 LCBIRE1JXzFfUExMX0NGR18wLA0KPiArCQkJICAweDEgPDwgUkdfSERNSVRYUExMX0hSRU5fU0hJ RlQsDQo+IFJHX0hETUlUWFBMTF9IUkVOKTsNCj4gKw0KPiArCS8qIExWUl9TRUwgKi8NCj4gKwlt dGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8xX1BMTF9DRkdfMCwNCj4gKwkJCSAgMHgx IDw8IFJHX0hETUlUWFBMTF9MVlJfU0VMX1NISUZULA0KPiArCQkJICBSR19IRE1JVFhQTExfTFZS X1NFTCk7DQo+ICsNCj4gKwkvKiBSR19IRE1JVFhQTExfUkVTRVJWRVsxMjoxMV0gKi8NCj4gKwlt dGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8xX1BMTF9DRkdfMSwNCj4gKwkJCSAgMHgz IDw8IFJHX0hETUlUWFBMTF9SRVNFUlZFX0JJVDEyXzExX1NISUZULA0KPiArCQkJICBSR19IRE1J VFhQTExfUkVTRVJWRV9CSVQxMl8xMSk7DQo+ICsNCj4gKwkvKiBUQ0xfRU4gKi8NCj4gKwltdGtf aGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8xX1BMTF9DRkdfMCwNCj4gKwkJCSAgMHgxIDw8 IFJHX0hETUlUWFBMTF9UQ0xfRU5fU0hJRlQsDQo+ICsJCQkgIFJHX0hETUlUWFBMTF9UQ0xfRU4p Ow0KPiArDQo+ICsJLyogZGlzYWJsZSByZWFkIGNhbGlicmF0aW9uIGltcGVkYW5jZSBmcm9tIGVm dXNlICovDQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfQ1RMXzEsDQo+ICsJ CQkweDFmIDw8IFJHX0lOVFJfSU1QX1JHX01PREVfU0hJRlQsDQo+ICsJCQlSR19JTlRSX0lNUF9S R19NT0RFKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ ICttdGtfaGRtaV9wbGxfc2V0X2h3KHN0cnVjdCBjbGtfaHcgKmh3LA0KPiArCQkgICAgICB1bnNp Z25lZCBjaGFyIHByZWRpdiwNCj4gKwkJICAgICAgdW5zaWduZWQgY2hhciBmYmtkaXZfaGlnaCwg dW5zaWduZWQgbG9uZw0KPiBmYmtkaXZfbG93LA0KPiArCQkgICAgICB1bnNpZ25lZCBjaGFyIGZi a2Rpdl9oczMsIHVuc2lnbmVkIGNoYXIgcG9zZGl2MSwNCj4gKwkJICAgICAgdW5zaWduZWQgY2hh ciBwb3NkaXYyLCB1bnNpZ25lZCBjaGFyIHR4cHJlZGl2LA0KPiArCQkgICAgICB1bnNpZ25lZCBj aGFyIHR4cG9zZGl2LCB1bnNpZ25lZCBjaGFyDQo+IGRpZ2l0YWxfZGl2KQ0KPiArew0KPiArCXVu c2lnbmVkIGNoYXIgdHhwb3NkaXZfdmFsdWUgPSAwOw0KPiArCXVuc2lnbmVkIGNoYXIgZGl2M19j dHJsX3ZhbHVlID0gMDsNCj4gKwl1bnNpZ25lZCBjaGFyIHBvc2Rpdl92YWxsdWUgPSAwOw0KPiAr CXVuc2lnbmVkIGNoYXIgZGl2X2N0cmxfdmFsdWUgPSAwOw0KPiArCXVuc2lnbmVkIGNoYXIgcmVz ZXJ2ZV8zXzJfdmFsdWUgPSAwOw0KPiArCXVuc2lnbmVkIGNoYXIgcHJlZGl2X3ZhbHVlID0gMDsN Cj4gKwl1bnNpZ25lZCBjaGFyIHJlc2VydmUxM192YWx1ZSA9IDA7DQo+ICsNCj4gKwlzdHJ1Y3Qg bXRrX2hkbWlfcGh5ICpoZG1pX3BoeSA9IHRvX210a19oZG1pX3BoeShodyk7DQo+ICsNCj4gKwlt dGtfaGRtaV9wbGxfc2VsZWN0X3NvdXJjZShodyk7DQo+ICsNCj4gKwltdGtfaGRtaV9wbGxfcGVy Zm9ybWFuY2Vfc2V0dGluZyhodyk7DQo+ICsNCj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3Bo eSwgSERNSV8xX0NGR18xMCwNCj4gKwkJCSAgMHgyIDw8IFJHX0hETUlUWDIxX0JJQVNfUEVfQkdf VlJFRl9TRUxfU0hJRlQsDQo+ICsJCQkgIFJHX0hETUlUWDIxX0JJQVNfUEVfQkdfVlJFRl9TRUwp Ow0KPiArCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JXzFfQ0ZHXzEwLA0KPiArCQkJ ICAweDAgPDwgUkdfSERNSVRYMjFfVlJFRl9TRUxfU0hJRlQsDQo+ICsJCQkgIFJHX0hETUlUWDIx X1ZSRUZfU0VMKTsNCj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8xX0NGR185 LA0KPiArCQkJICAweDIgPDwgUkdfSERNSVRYMjFfU0xET19WUkVGX1NFTF9TSElGVCwNCj4gKwkJ CSAgUkdfSERNSVRYMjFfU0xET19WUkVGX1NFTCk7DQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRt aV9waHksIEhETUlfMV9DRkdfMTAsDQo+ICsJCQkgIDB4MCA8PCBSR19IRE1JVFgyMV9CSUFTX1BF X1ZSRUZfU0VMQl9TSElGVCwNCj4gKwkJCSAgUkdfSERNSVRYMjFfQklBU19QRV9WUkVGX1NFTEIp Ow0KPiArCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JXzFfQ0ZHXzMsDQo+ICsJCQkg IDB4MSA8PCBSR19IRE1JVFgyMV9TTERPTFBGX0VOX1NISUZULA0KPiArCQkJICBSR19IRE1JVFgy MV9TTERPTFBGX0VOKTsNCj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8xX0NG R182LA0KPiArCQkJICAweDExIDw8IFJHX0hETUlUWDIxX0lOVFJfQ0FMX1NISUZULA0KPiArCQkJ ICBSR19IRE1JVFgyMV9JTlRSX0NBTCk7DQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHks IEhETUlfMV9QTExfQ0ZHXzIsDQo+ICsJCQkgIDB4MSA8PCBSR19IRE1JVFhQTExfUFdEX1NISUZU LA0KPiBSR19IRE1JVFhQTExfUFdEKTsNCj4gKw0KPiArCS8qIFRYUE9TRElWICovDQo+ICsJaWYg KHR4cG9zZGl2ID09IDEpDQo+ICsJCXR4cG9zZGl2X3ZhbHVlID0gMHgwOw0KPiArCWVsc2UgaWYg KHR4cG9zZGl2ID09IDIpDQo+ICsJCXR4cG9zZGl2X3ZhbHVlID0gMHgxOw0KPiArCWVsc2UgaWYg KHR4cG9zZGl2ID09IDQpDQo+ICsJCXR4cG9zZGl2X3ZhbHVlID0gMHgyOw0KPiArCWVsc2UgaWYg KHR4cG9zZGl2ID09IDgpDQo+ICsJCXR4cG9zZGl2X3ZhbHVlID0gMHgzOw0KPiArCWVsc2UNCj4g KwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwg SERNSV8xX0NGR182LA0KPiArCQkJICB0eHBvc2Rpdl92YWx1ZSA8PA0KPiBSR19IRE1JVFgyMV9U WF9QT1NESVZfU0hJRlQsDQo+ICsJCQkgIFJHX0hETUlUWDIxX1RYX1BPU0RJVik7DQo+ICsNCj4g KwkvKiAvNSwgdG1kc19jbGtfZnJlcXVlbmN5ID0gdG1kc19kYXRhX2ZyZXF1ZW5jeSAvIDUgKi8N Cj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8xX0NGR182LA0KPiArCQkJICAw eDEgPDwgUkdfSERNSVRYMjFfVFhfUE9TRElWX0VOX1NISUZULA0KPiArCQkJICBSR19IRE1JVFgy MV9UWF9QT1NESVZfRU4pOw0KPiArCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JXzFf Q0ZHXzYsDQo+ICsJCQkgIDB4MCA8PCBSR19IRE1JVFgyMV9GUkxfRU5fU0hJRlQsDQo+IFJHX0hE TUlUWDIxX0ZSTF9FTik7DQo+ICsNCj4gKwkvKiBUWFBSRURJViAqLw0KPiArCWlmICh0eHByZWRp diA9PSAyKSB7DQo+ICsJCWRpdjNfY3RybF92YWx1ZSA9IDB4MDsNCj4gKwkJcG9zZGl2X3ZhbGx1 ZSA9IDB4MDsNCj4gKwl9IGVsc2UgaWYgKHR4cHJlZGl2ID09IDQpIHsNCj4gKwkJZGl2M19jdHJs X3ZhbHVlID0gMHgwOw0KPiArCQlwb3NkaXZfdmFsbHVlID0gMHgxOw0KPiArCX0gZWxzZSBpZiAo dHhwcmVkaXYgPT0gNikgew0KPiArCQlkaXYzX2N0cmxfdmFsdWUgPSAweDE7DQo+ICsJCXBvc2Rp dl92YWxsdWUgPSAweDA7DQo+ICsJfSBlbHNlIGlmICh0eHByZWRpdiA9PSAxMikgew0KPiArCQlk aXYzX2N0cmxfdmFsdWUgPSAweDE7DQo+ICsJCXBvc2Rpdl92YWxsdWUgPSAweDE7DQo+ICsJfSBl bHNlDQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRt aV9waHksIEhETUlfMV9QTExfQ0ZHXzQsDQo+ICsJCQkgIGRpdjNfY3RybF92YWx1ZQ0KPiArCQkJ CSAgPDwNCj4gUkdfSERNSVRYUExMX1BPU0RJVl9ESVYzX0NUUkxfU0hJRlQsDQo+ICsJCQkgIFJH X0hETUlUWFBMTF9QT1NESVZfRElWM19DVFJMKTsNCj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1p X3BoeSwgSERNSV8xX1BMTF9DRkdfNCwNCj4gKwkJCSAgcG9zZGl2X3ZhbGx1ZSA8PCBSR19IRE1J VFhQTExfUE9TRElWX1NISUZULA0KPiArCQkJICBSR19IRE1JVFhQTExfUE9TRElWKTsNCj4gKw0K PiArCS8qIFBPU0RJVjEgKi8NCj4gKwlpZiAocG9zZGl2MSA9PSA1KQ0KPiArCQlkaXZfY3RybF92 YWx1ZSA9IDB4MDsNCj4gKwllbHNlIGlmIChwb3NkaXYxID09IDEwKQ0KPiArCQlkaXZfY3RybF92 YWx1ZSA9IDB4MTsNCj4gKwllbHNlIGlmIChwb3NkaXYxID09ICgxMjUgLyAxMCkpDQo+ICsJCWRp dl9jdHJsX3ZhbHVlID0gMHgyOw0KPiArCWVsc2UgaWYgKHBvc2RpdjEgPT0gMTUpDQo+ICsJCWRp dl9jdHJsX3ZhbHVlID0gMHgzOw0KPiArCWVsc2UNCj4gKwkJZGl2X2N0cmxfdmFsdWUgPSAweDE7 DQo+ICsNCj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8xX1BMTF9DRkdfNCwN Cj4gKwkJCSAgZGl2X2N0cmxfdmFsdWUgPDwNCj4gUkdfSERNSVRYUExMX0RJVl9DVFJMX1NISUZU LA0KPiArCQkJICBSR19IRE1JVFhQTExfRElWX0NUUkwpOw0KPiArDQo+ICsJLyogREUgYWRkIG5l dyBzZXR0aW5nICovDQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfMV9QTExf Q0ZHXzEsDQo+ICsJCQkgIDB4MCA8PCBSR19IRE1JVFhQTExfUkVTRVJWRV9CSVQxNF9TSElGVCwN Cj4gKwkJCSAgUkdfSERNSVRYUExMX1JFU0VSVkVfQklUMTQpOw0KPiArDQo+ICsJLyogUE9TRElW MiAqLw0KPiArCWlmIChwb3NkaXYyID09IDEpDQo+ICsJCXJlc2VydmVfM18yX3ZhbHVlID0gMHgw Ow0KPiArCWVsc2UgaWYgKHBvc2RpdjIgPT0gMikNCj4gKwkJcmVzZXJ2ZV8zXzJfdmFsdWUgPSAw eDE7DQo+ICsJZWxzZSBpZiAocG9zZGl2MiA9PSA0KQ0KPiArCQlyZXNlcnZlXzNfMl92YWx1ZSA9 IDB4MjsNCj4gKwllbHNlIGlmIChwb3NkaXYyID09IDYpDQo+ICsJCXJlc2VydmVfM18yX3ZhbHVl ID0gMHgzOw0KPiArCWVsc2UNCj4gKwkJcmVzZXJ2ZV8zXzJfdmFsdWUgPSAweDE7DQo+ICsNCj4g KwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8xX1BMTF9DRkdfMSwNCj4gKwkJCSAg cmVzZXJ2ZV8zXzJfdmFsdWUNCj4gKwkJCQkgIDw8IFJHX0hETUlUWFBMTF9SRVNFUlZFX0JJVDNf Ml9TSElGVCwNCj4gKwkJCSAgUkdfSERNSVRYUExMX1JFU0VSVkVfQklUM18yKTsNCj4gKw0KPiAr CS8qIERFIGFkZCBuZXcgc2V0dGluZyAqLw0KPiArCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5 LCBIRE1JXzFfUExMX0NGR18xLA0KPiArCQkJICAweDIgPDwgUkdfSERNSVRYUExMX1JFU0VSVkVf QklUMV8wX1NISUZULA0KPiArCQkJICBSR19IRE1JVFhQTExfUkVTRVJWRV9CSVQxXzApOw0KPiAr DQo+ICsJLyogUFJFRElWICovDQo+ICsJaWYgKHByZWRpdiA9PSAxKQ0KPiArCQlwcmVkaXZfdmFs dWUgPSAweDA7DQo+ICsJZWxzZSBpZiAocHJlZGl2ID09IDIpDQo+ICsJCXByZWRpdl92YWx1ZSA9 IDB4MTsNCj4gKwllbHNlIGlmIChwcmVkaXYgPT0gNCkNCj4gKwkJcHJlZGl2X3ZhbHVlID0gMHgy Ow0KPiArDQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfMV9QTExfQ0ZHXzQs DQo+ICsJCQkgIHByZWRpdl92YWx1ZSA8PCBSR19IRE1JVFhQTExfUFJFRElWX1NISUZULA0KPiAr CQkJICBSR19IRE1JVFhQTExfUFJFRElWKTsNCj4gKw0KPiArCS8qIEZCS0RJVl9IUzMgKi8NCj4g KwlpZiAoZmJrZGl2X2hzMyA9PSAxKQ0KPiArCQlyZXNlcnZlMTNfdmFsdWUgPSAweDA7DQo+ICsJ ZWxzZSBpZiAoZmJrZGl2X2hzMyA9PSAyKQ0KPiArCQlyZXNlcnZlMTNfdmFsdWUgPSAweDE7DQo+ ICsJZWxzZQ0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKw0KPiArCW10a19oZG1pX3BoeV9tYXNr KGhkbWlfcGh5LCBIRE1JXzFfUExMX0NGR18xLA0KPiArCQkJICByZXNlcnZlMTNfdmFsdWUgPDwN Cj4gUkdfSERNSVRYUExMX1JFU0VSVkVfQklUMTNfU0hJRlQsDQo+ICsJCQkgIFJHX0hETUlUWFBM TF9SRVNFUlZFX0JJVDEzKTsNCj4gKw0KPiArCS8qIEZCRElWICovDQo+ICsJbXRrX2hkbWlfcGh5 X21hc2soaGRtaV9waHksIEhETUlfMV9QTExfQ0ZHXzQsDQo+ICsJCQkgIGZia2Rpdl9oaWdoIDw8 DQo+IFJHX0hETUlUWFBMTF9GQktESVZfaGlnaF9TSElGVCwNCj4gKwkJCSAgUkdfSERNSVRYUExM X0ZCS0RJVl9oaWdoKTsNCj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8xX1BM TF9DRkdfMywNCj4gKwkJCSAgZmJrZGl2X2xvdyA8PCBSR19IRE1JVFhQTExfRkJLRElWX2xvd19T SElGVCwNCj4gKwkJCSAgUkdfSERNSVRYUExMX0ZCS0RJVl9sb3cpOw0KPiArDQo+ICsJLyogRGln aXRhbCBESVZJREVSICovDQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfQ1RM XzMsDQo+ICsJCQkweDAgPDwgUkVHX1BJWEVMX0NMT0NLX1NFTF9TSElGVCwNCj4gKwkJCVJFR19Q SVhFTF9DTE9DS19TRUwpOw0KPiArDQo+ICsJaWYgKGRpZ2l0YWxfZGl2ID09IDEpDQo+ICsJCW10 a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NUTF8zLA0KPiArCQkJCSAgMHgwIDw8IFJF R19IRE1JVFhfUElYRUxfQ0xPQ0tfU0hJRlQsDQo+ICsJCQkJICBSRUdfSERNSVRYX1BJWEVMX0NM T0NLKTsNCj4gKwllbHNlIHsNCj4gKwkJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlf Q1RMXzMsDQo+ICsJCQkJICAweDEgPDwgUkVHX0hETUlUWF9QSVhFTF9DTE9DS19TSElGVCwNCj4g KwkJCQkgIFJFR19IRE1JVFhfUElYRUxfQ0xPQ0spOw0KPiArCQltdGtfaGRtaV9waHlfbWFzayho ZG1pX3BoeSwgSERNSV9DVExfMywNCj4gKwkJCQkgIChkaWdpdGFsX2RpdiAtIDEpIDw8DQo+IFJF R19IRE1JVFhQTExfRElWX1NISUZULA0KPiArCQkJCSAgUkVHX0hETUlUWFBMTF9ESVYpOw0KPiAr CX0NCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICsjZGVmaW5lIFBDV19ERUNJTUFM X1dJRFRIIDI0DQo+ICsNCj4gK3N0YXRpYyBpbnQgbXRrX2hkbWlfcGxsX2NhbGN1bGF0ZV9wYXJh bXMoc3RydWN0IGNsa19odyAqaHcsDQo+ICsJCQkJCSAgIHVuc2lnbmVkIGxvbmcgcmF0ZSwNCj4g KwkJCQkJICAgdW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSkNCj4gK3sNCj4gKwlpbnQgcmV0Ow0K PiArCXVuc2lnbmVkIGxvbmcgbG9uZyB0bWRzX2NsayA9IDA7DQo+ICsJdW5zaWduZWQgbG9uZyBs b25nIHBpeGVsX2NsayA9IDA7DQo+ICsJLy9yZWYgY2xvY2sgZnJvbSBoZG1pIFJ4DQo+ICsJdW5z aWduZWQgbG9uZyBsb25nIGhkbWlyeF9yZWZfY2sgPSAwOw0KPiArCS8vcmVmIGNsb2NrIGZyb20g dHZkIHBsbA0KPiArCXVuc2lnbmVkIGxvbmcgbG9uZyBhZF9yZXNwbGxfY2sgPSAwOw0KPiArCS8v cGxsIGlucHV0IHNvdXJjZSBmcmVxdWVuY3kNCj4gKwl1bnNpZ25lZCBsb25nIGxvbmcgZGFfaGRt aXR4MjFfcmVmX2NrID0gMDsNCj4gKwl1bnNpZ25lZCBsb25nIGxvbmcgbnNfaGRtaXBsbF9jayA9 IDA7IC8vSUNPIG91dHB1dCBjbGsNCj4gKwkvL3NvdXJjZSBjbGsgZm9yIERpc3BsYXkgZGlnaXRh bA0KPiArCXVuc2lnbmVkIGxvbmcgbG9uZyBhZF9oZG1pcGxsX3BpeGVsX2NrID0gMDsNCj4gKwl1 bnNpZ25lZCBjaGFyIGRpZ2l0YWxfZGl2ID0gMDsNCj4gKwl1bnNpZ25lZCBsb25nIGxvbmcgcGN3 ID0gMDsgLy9GQkRJVg0KPiArCXVuc2lnbmVkIGNoYXIgdHhwcmVkaXYgPSAwOw0KPiArCXVuc2ln bmVkIGNoYXIgdHhwb3NkaXYgPSAwOw0KPiArCXVuc2lnbmVkIGNoYXIgZmJrZGl2X2hpZ2ggPSAw Ow0KPiArCXVuc2lnbmVkIGxvbmcgZmJrZGl2X2xvdyA9IDA7DQo+ICsJdW5zaWduZWQgY2hhciBw b3NkaXYxID0gMDsNCj4gKwl1bnNpZ25lZCBjaGFyIHBvc2RpdjIgPSAwOw0KPiArCXVuc2lnbmVk IGNoYXIgcHJlZGl2ID0gMTsgLy9wcmVkaXYgaXMgYWx3YXlzIDENCj4gKwl1bnNpZ25lZCBjaGFy IGZia2Rpdl9oczMgPSAxOyAvL2Zia2Rpdl9oczMgaXMgYWx3YXlzIDENCj4gKwlpbnQgaSA9IDA7 DQo+ICsJdW5zaWduZWQgY2hhciBUWFBSRURJVls0XSA9IHsgMiwgNCwgNiwgMTIgfTsNCj4gKwlz dHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSA9IHRvX210a19oZG1pX3BoeShodyk7DQo+ICsN Cj4gKwl0bWRzX2NsayA9IHJhdGU7DQo+ICsJZGFfaGRtaXR4MjFfcmVmX2NrID0gMjYwMDAwMDBV TDsgLy9pbiBIWg0KPiArDQo+ICsJLyogIFRYUE9TRElWIHN0YWdlIHRyZWF0bWVudDoNCj4gKwkg KgkwTSAgPCAgVE1EUyBjbGsgIDwgNTRNCQkgIC84DQo+ICsJICoJNTRNIDw9IFRNRFMgY2xrICA8 IDE0OC4zNU0gICAgLzQNCj4gKwkgKgkxNDguMzVNIDw9VE1EUyBjbGsgPCAyOTYuN00gICAvMg0K PiArCSAqCTI5Ni43IDw9VE1EUyBjbGsgPD0gNTk0TQkgIC8xDQo+ICsJICovDQo+ICsJaWYgKHRt ZHNfY2xrIDwgNTQwMDAwMDBVTCkNCj4gKwkJdHhwb3NkaXYgPSA4Ow0KPiArCWVsc2UgaWYgKCh0 bWRzX2NsayA+PSA1NDAwMDAwMFVMKSAmJiAodG1kc19jbGsgPCAxNDgzNTAwMDBVTCkpDQo+ICsJ CXR4cG9zZGl2ID0gNDsNCj4gKwllbHNlIGlmICgodG1kc19jbGsgPj0gMTQ4MzUwMDAwVUwpICYm ICh0bWRzX2NsayA8IDI5NjcwMDAwMFVMKSkNCj4gKwkJdHhwb3NkaXYgPSAyOw0KPiArCWVsc2Ug aWYgKCh0bWRzX2NsayA+PSAyOTY3MDAwMDBVTCkgJiYgKHRtZHNfY2xrIDw9DQo+IDU5NDAwMDAw MFVMKSkNCj4gKwkJdHhwb3NkaXYgPSAxOw0KPiArCWVsc2UNCj4gKwkJcmV0dXJuIC1FSU5WQUw7 DQo+ICsNCj4gKwkvKiBjYWxjdWxhdGUgVFhQUkVESVY6IGNhbiBiZSAyLCA0LCA2LCAxMg0KPiAr CSAqIElDTyBjbGsgPSA1KlRNRFNfQ0xLKlRYUE9TRElWKlRYUFJFRElWDQo+ICsJICogSUNPIGNs ayBjb25zdHJhaW50OiA1RyA9PCBJQ08gY2xrIDw9IDEyRw0KPiArCSAqLw0KPiArCWZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKFRYUFJFRElWKTsgaSsrKSB7DQo+ICsJCW5zX2hkbWlwbGxfY2sg PSA1ICogdG1kc19jbGsgKiB0eHBvc2RpdiAqIFRYUFJFRElWW2ldOw0KPiArCQlpZiAoKG5zX2hk bWlwbGxfY2sgPj0gNTAwMDAwMDAwMFVMKSAmJg0KPiArCQkgICAgKG5zX2hkbWlwbGxfY2sgPD0g MTIwMDAwMDAwMDBVTCkpDQo+ICsJCQlicmVhazsNCj4gKwl9DQo+ICsJaWYgKChpID09IChBUlJB WV9TSVpFKFRYUFJFRElWKSAtIDEpKSAmJg0KPiArCSAgICAoKG5zX2hkbWlwbGxfY2sgPCA1MDAw MDAwMDAwVUwpIHx8DQo+ICsJICAgICAobnNfaGRtaXBsbF9jayA+IDEyMDAwMDAwMDAwVUwpKSkg ew0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsJdHhwcmVkaXYgPSBUWFBSRURJVltp XTsNCj4gKw0KPiArCS8qIFBDVyBjYWxjdWxhdGlvbjogRkJLRElWDQo+ICsJICogZm9ybXVsYTog cGN3PShmcmVxdWVuY3lfb3V0KjJecGN3X2JpdCkgLyBmcmVxdWVuY3lfaW4gLw0KPiBGQktESVZf SFMzOw0KPiArCSAqIFJHX0hETUlUWFBMTF9GQktESVZbMzI6MF06DQo+ICsJICogWzMyLDI0XSA5 Yml0IGludGVnZXIsIFsyMywwXToyNGJpdCBmcmFjdGlvbg0KPiArCSAqLw0KPiArCXBjdyA9IG5z X2hkbWlwbGxfY2s7DQo+ICsJcGN3ID0gcGN3IDw8IFBDV19ERUNJTUFMX1dJRFRIOw0KPiArCXBj dyA9IHBjdyAvIGRhX2hkbWl0eDIxX3JlZl9jazsNCj4gKwlwY3cgPSBwY3cgLyBmYmtkaXZfaHMz Ow0KPiArDQo+ICsJaWYgKChwY3cgLyAoMVVMTCA8PCAzMikpID4gMSkNCj4gKwkJcmV0dXJuIC1F SU5WQUw7DQo+ICsJZWxzZSBpZiAoKHBjdyAvICgxVUxMIDw8IDMyKSkgPT0gMSkgew0KPiArCQlm YmtkaXZfaGlnaCA9IDE7DQo+ICsJCWZia2Rpdl9sb3cgPSBwY3cgJSAoMVVMTCA8PCAzMik7DQo+ ICsJfSBlbHNlIHsNCj4gKwkJZmJrZGl2X2hpZ2ggPSAwOw0KPiArCQlmYmtkaXZfbG93ID0gcGN3 Ow0KPiArCX0NCj4gKw0KPiArCXBvc2RpdjEgPSAxMDsNCj4gKwlwb3NkaXYyID0gMTsNCj4gKwlh ZF9oZG1pcGxsX3BpeGVsX2NrID0gKG5zX2hkbWlwbGxfY2sgLyAxMCkgLyAxOw0KPiArDQo+ICsJ LyogRGlnaXRhbCBjbGsgZGl2aWRlciwgbWF4IC8zMiAqLw0KPiArCWRpZ2l0YWxfZGl2ID0gYWRf aGRtaXBsbF9waXhlbF9jayAvIHBpeGVsX2NsazsNCj4gKwlpZiAoISgoZGlnaXRhbF9kaXYgPD0g MzIpICYmIChkaWdpdGFsX2RpdiA+PSAxKSkpDQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArDQo+ ICsJcmV0ID0gbXRrX2hkbWlfcGxsX3NldF9odyhodywNCj4gKwkJCQkgICAgcHJlZGl2LCBmYmtk aXZfaGlnaCwgZmJrZGl2X2xvdywNCj4gZmJrZGl2X2hzMywNCj4gKwkJCQkgICAgcG9zZGl2MSwg cG9zZGl2MiwgdHhwcmVkaXYsDQo+IHR4cG9zZGl2LA0KPiArCQkJCSAgICBkaWdpdGFsX2Rpdik7 DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKwlwcl9kZWJ1Zygi W0hETUldW1RYUExMXSBQYXJhbWV0ZXIgbGlzdDpcbiIpOw0KPiArCXByX2RlYnVnKCJwcmVkaXYg PSAlZFxuIiwgcHJlZGl2KTsNCj4gKwlwcl9kZWJ1ZygicGN3ID0gJWxseFxuIiwgcGN3KTsNCj4g Kwlwcl9kZWJ1ZygiZmJrZGl2X2hpZ2ggPSAleFxuIiwgZmJrZGl2X2hpZ2gpOw0KPiArCXByX2Rl YnVnKCJmYmtkaXZfbG93ID0gJWx4XG4iLCBmYmtkaXZfbG93KTsNCj4gKwlwcl9kZWJ1ZygiZmJr ZGl2X2hzMyA9ICVkXG4iLCBmYmtkaXZfaHMzKTsNCj4gKwlwcl9kZWJ1ZygicG9zZGl2MSA9ICVk XG4iLCBwb3NkaXYxKTsNCj4gKwlwcl9kZWJ1ZygicG9zZGl2MiA9ICVkXG4iLCBwb3NkaXYyKTsN Cj4gKwlwcl9kZWJ1ZygiZGlnaXRhbF9kaXYgPSAlZFxuIiwgZGlnaXRhbF9kaXYpOw0KPiArCXBy X2RlYnVnKCJ0eHByZWRpdiA9ICVkXG4iLCB0eHByZWRpdik7DQo+ICsJcHJfZGVidWcoInR4cG9z ZGl2ID0gJWRcbiIsIHR4cG9zZGl2KTsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3Rh dGljIGludCBtdGtfaGRtaV9wbGxfZHJ2X3NldHRpbmcoc3RydWN0IGNsa19odyAqaHcpDQo+ICt7 DQo+ICsJdW5zaWduZWQgY2hhciBkYXRhX2NoYW5uZWxfYmlhcywgY2xrX2NoYW5uZWxfYmlhczsN Cj4gKwl1bnNpZ25lZCBjaGFyIGltcGVkYW5jZSwgaW1wZWRhbmNlX2VuOw0KPiArCXN0cnVjdCBt dGtfaGRtaV9waHkgKmhkbWlfcGh5ID0gdG9fbXRrX2hkbWlfcGh5KGh3KTsNCj4gKw0KPiArCS8q IGJpYXMgJiBpbXBlZGFuY2Ugc2V0dGluZyAqLw0KPiArCWRhdGFfY2hhbm5lbF9iaWFzID0gMHgz YzsgLy8yNG1BDQpVc2UgLyogKi8gaW5zdGVhZCAnLy8nDQo+ICsJY2xrX2NoYW5uZWxfYmlhcyA9 IDB4MzQ7IC8vMjBtQQ0KPiArCWltcGVkYW5jZV9lbiA9IDB4ZjsNCj4gKwlpbXBlZGFuY2UgPSAw eDM2OyAvLzEwMG9obQ0KPiArDQo+ICsJLyogYmlhcyAqLw0KPiArCW10a19oZG1pX3BoeV9tYXNr KGhkbWlfcGh5LCBIRE1JXzFfQ0ZHXzEsDQo+ICsJCQkgIGRhdGFfY2hhbm5lbF9iaWFzIDw8DQo+ IFJHX0hETUlUWDIxX0RSVl9JQklBU19EMF9TSElGVCwNCj4gKwkJCSAgUkdfSERNSVRYMjFfRFJW X0lCSUFTX0QwKTsNCj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8xX0NGR18x LA0KPiArCQkJICBkYXRhX2NoYW5uZWxfYmlhcyA8PA0KPiBSR19IRE1JVFgyMV9EUlZfSUJJQVNf RDFfU0hJRlQsDQo+ICsJCQkgIFJHX0hETUlUWDIxX0RSVl9JQklBU19EMSk7DQo+ICsJbXRrX2hk bWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfMV9DRkdfMSwNCj4gKwkJCSAgZGF0YV9jaGFubmVs X2JpYXMgPDwNCj4gUkdfSERNSVRYMjFfRFJWX0lCSUFTX0QyX1NISUZULA0KPiArCQkJICBSR19I RE1JVFgyMV9EUlZfSUJJQVNfRDIpOw0KPiArCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBI RE1JXzFfQ0ZHXzAsDQo+ICsJCQkgIGNsa19jaGFubmVsX2JpYXMgPDwNCj4gUkdfSERNSVRYMjFf RFJWX0lCSUFTX0NMS19TSElGVCwNCj4gKwkJCSAgUkdfSERNSVRYMjFfRFJWX0lCSUFTX0NMSyk7 DQo+ICsNCj4gKwkvKiBpbXBlZGFuY2UgKi8NCj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3Bo eSwgSERNSV8xX0NGR18wLA0KPiArCQkJICBpbXBlZGFuY2VfZW4gPDwgUkdfSERNSVRYMjFfRFJW X0lNUF9FTl9TSElGVCwNCj4gKwkJCSAgUkdfSERNSVRYMjFfRFJWX0lNUF9FTik7DQo+ICsJbXRr X2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfMV9DRkdfMiwNCj4gKwkJCSAgaW1wZWRhbmNl IDw8DQo+IFJHX0hETUlUWDIxX0RSVl9JTVBfRDBfRU4xX1NISUZULA0KPiArCQkJICBSR19IRE1J VFgyMV9EUlZfSU1QX0QwX0VOMSk7DQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhE TUlfMV9DRkdfMiwNCj4gKwkJCSAgaW1wZWRhbmNlIDw8DQo+IFJHX0hETUlUWDIxX0RSVl9JTVBf RDFfRU4xX1NISUZULA0KPiArCQkJICBSR19IRE1JVFgyMV9EUlZfSU1QX0QxX0VOMSk7DQo+ICsJ bXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfMV9DRkdfMiwNCj4gKwkJCSAgaW1wZWRh bmNlIDw8DQo+IFJHX0hETUlUWDIxX0RSVl9JTVBfRDJfRU4xX1NISUZULA0KPiArCQkJICBSR19I RE1JVFgyMV9EUlZfSU1QX0QyX0VOMSk7DQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHks IEhETUlfMV9DRkdfMiwNCj4gKwkJCSAgaW1wZWRhbmNlIDw8DQo+IFJHX0hETUlUWDIxX0RSVl9J TVBfQ0xLX0VOMV9TSElGVCwNCj4gKwkJCSAgUkdfSERNSVRYMjFfRFJWX0lNUF9DTEtfRU4xKTsN Cj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBtdGtfaGRtaV9wbGxfcHJl cGFyZShzdHJ1Y3QgY2xrX2h3ICpodykNCj4gK3sNCj4gKwlzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpo ZG1pX3BoeSA9IHRvX210a19oZG1pX3BoeShodyk7DQo+ICsNCj4gKwltdGtfaGRtaV9waHlfbWFz ayhoZG1pX3BoeSwgSERNSV8xX0NGR182LA0KPiArCQkJICAweDEgPDwgUkdfSERNSVRYMjFfVFhf UE9TRElWX0VOX1NISUZULA0KPiArCQkJICBSR19IRE1JVFgyMV9UWF9QT1NESVZfRU4pOw0KPiAr DQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfMV9DRkdfMCwNCj4gKwkJCSAg MHhmIDw8IFJHX0hETUlUWDIxX1NFUl9FTl9TSElGVCwNCj4gUkdfSERNSVRYMjFfU0VSX0VOKTsN Cj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8xX0NGR182LA0KPiArCQkJICAw eDEgPDwgUkdfSERNSVRYMjFfRDBfRFJWX09QX0VOX1NISUZULA0KPiArCQkJICBSR19IRE1JVFgy MV9EMF9EUlZfT1BfRU4pOw0KPiArCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JXzFf Q0ZHXzYsDQo+ICsJCQkgIDB4MSA8PCBSR19IRE1JVFgyMV9EMV9EUlZfT1BfRU5fU0hJRlQsDQo+ ICsJCQkgIFJHX0hETUlUWDIxX0QxX0RSVl9PUF9FTik7DQo+ICsJbXRrX2hkbWlfcGh5X21hc2so aGRtaV9waHksIEhETUlfMV9DRkdfNiwNCj4gKwkJCSAgMHgxIDw8IFJHX0hETUlUWDIxX0QyX0RS Vl9PUF9FTl9TSElGVCwNCj4gKwkJCSAgUkdfSERNSVRYMjFfRDJfRFJWX09QX0VOKTsNCj4gKwlt dGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8xX0NGR182LA0KPiArCQkJICAweDEgPDwg UkdfSERNSVRYMjFfQ0tfRFJWX09QX0VOX1NISUZULA0KPiArCQkJICBSR19IRE1JVFgyMV9DS19E UlZfT1BfRU4pOw0KPiArDQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfMV9D RkdfNiwNCj4gKwkJCSAgMHgwIDw8IFJHX0hETUlUWDIxX0ZSTF9EMF9FTl9TSElGVCwNCj4gKwkJ CSAgUkdfSERNSVRYMjFfRlJMX0QwX0VOKTsNCj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3Bo eSwgSERNSV8xX0NGR182LA0KPiArCQkJICAweDAgPDwgUkdfSERNSVRYMjFfRlJMX0QxX0VOX1NI SUZULA0KPiArCQkJICBSR19IRE1JVFgyMV9GUkxfRDFfRU4pOw0KPiArCW10a19oZG1pX3BoeV9t YXNrKGhkbWlfcGh5LCBIRE1JXzFfQ0ZHXzYsDQo+ICsJCQkgIDB4MCA8PCBSR19IRE1JVFgyMV9G UkxfRDJfRU5fU0hJRlQsDQo+ICsJCQkgIFJHX0hETUlUWDIxX0ZSTF9EMl9FTik7DQo+ICsJbXRr X2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfMV9DRkdfNiwNCj4gKwkJCSAgMHgwIDw8IFJH X0hETUlUWDIxX0ZSTF9DS19FTl9TSElGVCwNCj4gKwkJCSAgUkdfSERNSVRYMjFfRlJMX0NLX0VO KTsNCj4gKw0KPiArCW10a19oZG1pX3BsbF9kcnZfc2V0dGluZyhodyk7DQo+ICsNCj4gKwltdGtf aGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8xX0NGR18xMCwNCj4gKwkJCSAgMHgwIDw8IFJH X0hETUlUWDIxX0JHX1BXRF9TSElGVCwNCj4gUkdfSERNSVRYMjFfQkdfUFdEKTsNCj4gKwltdGtf aGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8xX0NGR182LA0KPiArCQkJICAweDEgPDwgUkdf SERNSVRYMjFfQklBU19FTl9TSElGVCwNCj4gKwkJCSAgUkdfSERNSVRYMjFfQklBU19FTik7DQo+ ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfMV9DRkdfMywNCj4gKwkJCSAgMHgx IDw8IFJHX0hETUlUWDIxX0NLTERPX0VOX1NISUZULA0KPiArCQkJICBSR19IRE1JVFgyMV9DS0xE T19FTik7DQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfMV9DRkdfMywNCj4g KwkJCSAgMHhmIDw8IFJHX0hETUlUWDIxX1NMRE9fRU5fU0hJRlQsDQo+ICsJCQkgIFJHX0hETUlU WDIxX1NMRE9fRU4pOw0KPiArDQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlf MV9QTExfQ0ZHXzQsDQo+ICsJCQkgIDB4MSA8PCBEQV9IRE1JVFhQTExfUFdSX09OX1NISUZULA0K PiArCQkJICBEQV9IRE1JVFhQTExfUFdSX09OKTsNCj4gKwl1ZGVsYXkoNSk7DQo+ICsJbXRrX2hk bWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfMV9QTExfQ0ZHXzQsDQo+ICsJCQkgIDB4MCA8PCBE QV9IRE1JVFhQTExfSVNPX0VOX1NISUZULA0KPiArCQkJICBEQV9IRE1JVFhQTExfSVNPX0VOKTsN Cj4gKwl1ZGVsYXkoNSk7DQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfMV9Q TExfQ0ZHXzIsDQo+ICsJCQkgIDB4MCA8PCBSR19IRE1JVFhQTExfUFdEX1NISUZULA0KPiBSR19I RE1JVFhQTExfUFdEKTsNCj4gKwl1ZGVsYXkoMzApOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyB2b2lkIG10a19oZG1pX3BsbF91bnByZXBhcmUoc3RydWN0IGNsa19o dyAqaHcpDQo+ICt7DQo+ICsJc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHkgPSB0b19tdGtf aGRtaV9waHkoaHcpOw0KPiArDQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlf MV9DRkdfMTAsDQo+ICsJCQkgIDB4MSA8PCBSR19IRE1JVFgyMV9CR19QV0RfU0hJRlQsDQo+IFJH X0hETUlUWDIxX0JHX1BXRCk7DQo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlf MV9DRkdfNiwNCj4gKwkJCSAgMHgwIDw8IFJHX0hETUlUWDIxX0JJQVNfRU5fU0hJRlQsDQo+ICsJ CQkgIFJHX0hETUlUWDIxX0JJQVNfRU4pOw0KPiArCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5 LCBIRE1JXzFfQ0ZHXzMsDQo+ICsJCQkgIDB4MCA8PCBSR19IRE1JVFgyMV9DS0xET19FTl9TSElG VCwNCj4gKwkJCSAgUkdfSERNSVRYMjFfQ0tMRE9fRU4pOw0KPiArCW10a19oZG1pX3BoeV9tYXNr KGhkbWlfcGh5LCBIRE1JXzFfQ0ZHXzMsDQo+ICsJCQkgIDB4MCA8PCBSR19IRE1JVFgyMV9TTERP X0VOX1NISUZULA0KPiArCQkJICBSR19IRE1JVFgyMV9TTERPX0VOKTsNCj4gKw0KPiArCW10a19o ZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JXzFfUExMX0NGR18yLA0KPiArCQkJICAweDEgPDwg UkdfSERNSVRYUExMX1BXRF9TSElGVCwNCj4gUkdfSERNSVRYUExMX1BXRCk7DQo+ICsJdWRlbGF5 KDEwKTsNCj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8xX1BMTF9DRkdfNCwN Cj4gKwkJCSAgMHgxIDw8IERBX0hETUlUWFBMTF9JU09fRU5fU0hJRlQsDQo+ICsJCQkgIERBX0hE TUlUWFBMTF9JU09fRU4pOw0KPiArCXVkZWxheSgxMCk7DQo+ICsJbXRrX2hkbWlfcGh5X21hc2so aGRtaV9waHksIEhETUlfMV9QTExfQ0ZHXzQsDQo+ICsJCQkgIDB4MCA8PCBEQV9IRE1JVFhQTExf UFdSX09OX1NISUZULA0KPiArCQkJICBEQV9IRE1JVFhQTExfUFdSX09OKTsNCj4gK30NCj4gKw0K PiArc3RhdGljIGludCBtdGtfaGRtaV9wbGxfc2V0X3JhdGUoc3RydWN0IGNsa19odyAqaHcsIHVu c2lnbmVkIGxvbmcNCj4gcmF0ZSwNCj4gKwkJCQkgICB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRl KQ0KPiArew0KPiArCXN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5ID0gdG9fbXRrX2hkbWlf cGh5KGh3KTsNCj4gKwlpbnQgcmV0Ow0KPiArDQo+ICsJZGV2X2RiZyhoZG1pX3BoeS0+ZGV2LCAi JXM6ICVsdSBIeiwgcGFyZW50OiAlbHUgSHpcbiIsDQo+IF9fZnVuY19fLCByYXRlLA0KPiArCQlw YXJlbnRfcmF0ZSk7DQo+ICsNCj4gKwlyZXQgPSBtdGtfaGRtaV9wbGxfY2FsY3VsYXRlX3BhcmFt cyhodywgcmF0ZSwgcGFyZW50X3JhdGUpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiAtRUlO VkFMOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBsb25nIG10a19o ZG1pX3BsbF9yb3VuZF9yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LCB1bnNpZ25lZCBsb25nDQo+IHJh dGUsDQo+ICsJCQkJICAgICAgdW5zaWduZWQgbG9uZyAqcGFyZW50X3JhdGUpDQo+ICt7DQo+ICsJ cmV0dXJuIHJhdGU7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB1bnNpZ25lZCBsb25nIG10a19oZG1p X3BsbF9yZWNhbGNfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywNCj4gKwkJCQkJCXVuc2lnbmVkIGxv bmcNCj4gcGFyZW50X3JhdGUpDQo+ICt7DQo+ICsJcmV0dXJuIHBhcmVudF9yYXRlOw0KPiArfQ0K PiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgbXRrX2hkbWlfcGxsX29wcyA9IHsN Cj4gKwkucHJlcGFyZSA9IG10a19oZG1pX3BsbF9wcmVwYXJlLA0KPiArCS51bnByZXBhcmUgPSBt dGtfaGRtaV9wbGxfdW5wcmVwYXJlLA0KPiArCS5zZXRfcmF0ZSA9IG10a19oZG1pX3BsbF9zZXRf cmF0ZSwNCj4gKwkucm91bmRfcmF0ZSA9IG10a19oZG1pX3BsbF9yb3VuZF9yYXRlLA0KPiArCS5y ZWNhbGNfcmF0ZSA9IG10a19oZG1pX3BsbF9yZWNhbGNfcmF0ZSwNCj4gK307DQo+ICsNCj4gK3N0 YXRpYyB2b2lkIHZUeFNpZ25hbE9uT2ZmKHN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5LCBi b29sDQo+IE9uT2ZmKQ0KUGxlYXNlIGF2b2lkIENhbWVsLUNhc2UgY29kZSBzdHlsZQ0KDQo+ICt7 DQo+ICsJaWYgKE9uT2ZmKQ0KPiArCQltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV8x X0NGR18wLA0KPiBSR19IRE1JVFgyMV9EUlZfRU4sDQo+ICsJCQkJICBSR19IRE1JVFgyMV9EUlZf RU4pOw0KPiArCWVsc2UNCj4gKwkJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfMV9D RkdfMCwNCj4gKwkJCQkgIDB4MCA8PCBSR19IRE1JVFgyMV9EUlZfRU5fU0hJRlQsDQo+ICsJCQkJ ICBSR19IRE1JVFgyMV9EUlZfRU4pOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBtdGtfaGRt aV9waHlfZW5hYmxlX3RtZHMoc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHkpDQo+ICt7DQo+ ICsJdlR4U2lnbmFsT25PZmYoaGRtaV9waHksIHRydWUpOw0KPiArCXVzbGVlcF9yYW5nZSgxMDAs IDE1MCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIG10a19oZG1pX3BoeV9kaXNhYmxlX3Rt ZHMoc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHkpDQo+ICt7DQo+ICsJdlR4U2lnbmFsT25P ZmYoaGRtaV9waHksIGZhbHNlKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBtdGtfaGRtaV9w aHlfcG93ZXJfb24oc3RydWN0IHBoeSAqcGh5KQ0KPiArew0KPiArCXN0cnVjdCBtdGtfaGRtaV9w aHkgKmhkbWlfcGh5ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7DQo+ICsJaW50IHJldDsNCj4gKw0K PiArCWlmICghX19jbGtfaXNfZW5hYmxlZChoZG1pX3BoeS0+cGxsKSkgew0KPiArCQlyZXQgPSBj bGtfcHJlcGFyZV9lbmFibGUoaGRtaV9waHktPnBsbCk7DQo+ICsJCWlmIChyZXQgPCAwKQ0KPiAr CQkJcmV0dXJuIHJldDsNCj4gKwl9DQo+ICsJdWRlbGF5KDEwKTsNCj4gKwltdGtfaGRtaV9waHlf ZW5hYmxlX3RtZHMoaGRtaV9waHkpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4g K3N0YXRpYyBpbnQgbXRrX2hkbWlfcGh5X3Bvd2VyX29mZihzdHJ1Y3QgcGh5ICpwaHkpDQo+ICt7 DQo+ICsJc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHkgPSBwaHlfZ2V0X2RydmRhdGEocGh5 KTsNCj4gKw0KPiArCW10a19oZG1pX3BoeV9kaXNhYmxlX3RtZHMoaGRtaV9waHkpOw0KPiArCXVk ZWxheSgxMCk7DQo+ICsJaWYgKF9fY2xrX2lzX2VuYWJsZWQoaGRtaV9waHktPnBsbCkpDQo+ICsJ CWNsa19kaXNhYmxlX3VucHJlcGFyZShoZG1pX3BoeS0+cGxsKTsNCj4gKw0KPiArCXJldHVybiAw Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHBoeV9vcHMgbXRrX2hkbWlfcGh5 X29wcyA9IHsNCj4gKwkucG93ZXJfb24gPSBtdGtfaGRtaV9waHlfcG93ZXJfb24sDQo+ICsJLnBv d2VyX29mZiA9IG10a19oZG1pX3BoeV9wb3dlcl9vZmYsDQo+ICsJLm93bmVyID0gVEhJU19NT0RV TEUsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW50IG10a19oZG1pX3BoeV9wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KV2h5IG5vdCBhcHBseSB0aGlzIGRyaXZlciBiYXNlZCBv biBwaHktbXRrLWhkbWkuYyBsaWtlIG10ODE3Mz8NCg0KPiArew0KPiArCXN0cnVjdCBkZXZpY2Ug KmRldiA9ICZwZGV2LT5kZXY7DQo+ICsJc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHk7DQo+ ICsJc3RydWN0IHJlc291cmNlICptZW07DQo+ICsJc3RydWN0IHBoeSAqcGh5Ow0KPiArCXN0cnVj dCBwaHlfcHJvdmlkZXIgKnBoeV9wcm92aWRlcjsNCj4gKwlzdHJ1Y3QgY2xrICpyZWZfY2xrOw0K PiArCWNvbnN0IGNoYXIgKnJlZl9jbGtfbmFtZTsNCj4gKwlzdHJ1Y3QgY2xrX2luaXRfZGF0YSBj bGtfaW5pdCA9IHsNCj4gKwkJLm9wcyA9ICZtdGtfaGRtaV9wbGxfb3BzLA0KPiArCQkubnVtX3Bh cmVudHMgPSAxLA0KPiArCQkucGFyZW50X25hbWVzID0gKGNvbnN0IGNoYXIgKmNvbnN0ICopJnJl Zl9jbGtfbmFtZSwNCj4gKwkJLmZsYWdzID0gQ0xLX1NFVF9SQVRFX1BBUkVOVCB8IENMS19TRVRf UkFURV9HQVRFLA0KPiArCX07DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCWhkbWlfcGh5ID0gZGV2 bV9remFsbG9jKGRldiwgc2l6ZW9mKCpoZG1pX3BoeSksIEdGUF9LRVJORUwpOw0KPiArCWlmICgh aGRtaV9waHkpDQo+ICsJCXJldHVybiAtRU5PTUVNOw0KPiArDQo+ICsJcmVmX2NsayA9IGRldm1f Y2xrX2dldChkZXYsICJoZG1pX3h0YWxfc2VsIik7DQo+ICsJaWYgKElTX0VSUihyZWZfY2xrKSkg ew0KPiArCQlyZXQgPSBQVFJfRVJSKHJlZl9jbGspOw0KPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYs ICJGYWlsZWQgdG8gZ2V0IFBMTCByZWZlcmVuY2UgY2xvY2s6DQo+ICVkXG4iLA0KPiArCQkJcmV0 KTsNCj4gKwkJcmV0dXJuIHJldDsNCj4gKwl9DQo+ICsJcmVmX2Nsa19uYW1lID0gX19jbGtfZ2V0 X25hbWUocmVmX2Nsayk7DQo+ICsNCj4gKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZyhk ZXYtPm9mX25vZGUsICJjbG9jay1vdXRwdXQtDQo+IG5hbWVzIiwNCj4gKwkJCQkgICAgICAmY2xr X2luaXQubmFtZSk7DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4g KwloZG1pX3BoeS0+cGxsX2h3LmluaXQgPSAmY2xrX2luaXQ7DQo+ICsJaGRtaV9waHktPnBsbCA9 IGRldm1fY2xrX3JlZ2lzdGVyKGRldiwgJmhkbWlfcGh5LT5wbGxfaHcpOw0KPiArCWlmIChJU19F UlIoaGRtaV9waHktPnBsbCkpIHsNCj4gKwkJcmV0ID0gUFRSX0VSUihoZG1pX3BoeS0+cGxsKTsN Cj4gKwkJcmV0dXJuIHJldDsNCj4gKwl9DQo+ICsNCj4gKwltZW0gPSBwbGF0Zm9ybV9nZXRfcmVz b3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOw0KPiArCWhkbWlfcGh5LT5yZWdzID0gZGV2 bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgbWVtKTsNCj4gKwlpZiAoSVNfRVJSKGhkbWlfcGh5LT5y ZWdzKSkgew0KPiArCQlyZXQgPSBQVFJfRVJSKGhkbWlfcGh5LT5yZWdzKTsNCj4gKwkJcmV0dXJu IHJldDsNCj4gKwl9DQo+ICsNCj4gKwlwaHkgPSBkZXZtX3BoeV9jcmVhdGUoZGV2LCBOVUxMLCAm bXRrX2hkbWlfcGh5X29wcyk7DQo+ICsJaWYgKElTX0VSUihwaHkpKQ0KPiArCQlyZXR1cm4gUFRS X0VSUihwaHkpOw0KPiArDQo+ICsJcGh5X3NldF9kcnZkYXRhKHBoeSwgaGRtaV9waHkpOw0KPiAr DQo+ICsJcGh5X3Byb3ZpZGVyID0gZGV2bV9vZl9waHlfcHJvdmlkZXJfcmVnaXN0ZXIoZGV2LA0K PiBvZl9waHlfc2ltcGxlX3hsYXRlKTsNCj4gKwlpZiAoSVNfRVJSKHBoeV9wcm92aWRlcikpDQo+ ICsJCXJldHVybiBQVFJfRVJSKHBoeV9wcm92aWRlcik7DQo+ICsNCj4gKwloZG1pX3BoeS0+ZGV2 ID0gZGV2Ow0KPiArDQo+ICsJcmV0dXJuIG9mX2Nsa19hZGRfcHJvdmlkZXIoZGV2LT5vZl9ub2Rl LCBvZl9jbGtfc3JjX3NpbXBsZV9nZXQsDQo+ICsJCQkJICAgaGRtaV9waHktPnBsbCk7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyBpbnQgbXRrX2hkbWlfcGh5X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQ0KPiArew0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdGtfaGRtaV9waHlfbWF0Y2hbXSA9IHsNCj4gKwl7 DQo+ICsJCS5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE5NS1oZG1pLXBoeSIsDQo+ICsJfSwN Cj4gKwl7fSwNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2hkbWlf cGh5X210ODE5NV9kcml2ZXIgPSB7DQo+ICsJLnByb2JlID0gbXRrX2hkbWlfcGh5X3Byb2JlLA0K PiArCS5yZW1vdmUgPSBtdGtfaGRtaV9waHlfcmVtb3ZlLA0KPiArCS5kcml2ZXIgPSB7DQo+ICsJ CS5uYW1lID0gIm1lZGlhdGVrLWhkbWktbXQ4MTk1LXBoeSIsDQo+ICsJCS5vZl9tYXRjaF90YWJs ZSA9IG10a19oZG1pX3BoeV9tYXRjaCwNCj4gKwl9LA0KPiArfTsNCj4gK21vZHVsZV9wbGF0Zm9y bV9kcml2ZXIobXRrX2hkbWlfcGh5X210ODE5NV9kcml2ZXIpOw0KPiArDQo+ICtNT0RVTEVfQVVU SE9SKCJDYW4gWmVuZyA8Y2FuLnplbmdAbWVkaWF0ZWsuY29tPiIpOw0KPiArTU9EVUxFX0RFU0NS SVBUSU9OKCJNZWRpYVRlayBNVDgxOTUgSERNSSBQSFkgRHJpdmVyIik7DQo+ICtNT0RVTEVfTElD RU5TRSgiR1BMIHYyIik7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9tZWRpYXRlay9waHkt bXRrLWhkbWktbXQ4MTk1LmgNCj4gYi9kcml2ZXJzL3BoeS9tZWRpYXRlay9waHktbXRrLWhkbWkt bXQ4MTk1LmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi43 ZDJjNWExMWU2MTMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL3BoeS9tZWRpYXRl ay9waHktbXRrLWhkbWktbXQ4MTk1LmgNCj4gQEAgLTAsMCArMSwxNzkgQEANCj4gKy8qIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovDQo+ICsvKg0KPiArICogQ29weXJpZ2h0IChj KSAyMDE5IE1lZGlhVGVrIEluYy4NCj4gKyAqLw0KPiArDQo+ICsjaWZuZGVmIF9NVEtfSERNSV9Q SFlfODE5NV9IDQo+ICsjZGVmaW5lIF9NVEtfSERNSV9QSFlfODE5NV9IDQo+ICsNCj4gKyNpbmNs dWRlIDxsaW51eC90eXBlcy5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPg0KPiArI2luY2x1 ZGUgPGxpbnV4L2Nsay1wcm92aWRlci5oPg0KPiArDQo+ICsjZGVmaW5lIEhETUlfQU5BX0NUTCAw eDdjDQo+ICsjZGVmaW5lIHJlZ19hbmFfaGRtaTIwX2ZpZm9fZW4gKDB4MSA8PCAxNikNClVzZSBC SVQoKSwgYW5kIHVwcGVyIGNhc2UgbGV0dGVycw0KDQo+ICsjZGVmaW5lIHJlZ190eGNfZGl2X1NI SUZUICgzMCkNCkFsc28gZm9yIHRoZSBYWFhfU0hJRlQsIHRyeSB0byB1c2UgQklUKCkgaW5zdGVh ZA0KDQo+ICsjZGVmaW5lIEhETUlfQ1RMXzMgMHhjYw0KPiArI2RlZmluZSBSRUdfSERNSVRYX1JF Rl9SRVNQTExfU0VMX1NISUZUICg5KQ0KPiArI2RlZmluZSBSRUdfSERNSVRYX1JFRl9SRVNQTExf U0VMIEJJVCg5KQ0KPiArI2RlZmluZSByZWdfdHhjX2RpdiAoMHgzIDw8IDMwKQ0KVXNlIEdFTk1B U0soKSwgdGhlIHNhbWUgZm9yIHRoZSBmb2xsb3dpbmcgb25lcw0KDQpUaGFua3MgYSBsb3QNCg0K PiArI2RlZmluZSBIRE1JXzFfQ0ZHXzAgMHgwMA0KPiArI2RlZmluZSBSR19IRE1JVFgyMV9TRVJf RU4gKDB4ZiA8PCAyOCkNCj4gKyNkZWZpbmUgUkdfSERNSVRYMjFfRFJWX0VOICgweGYgPDwgMjQp DQo+ICsjZGVmaW5lIFJHX0hETUlUWDIxX0RSVl9JTVBfRU4gKDB4ZiA8PCAyMCkNCj4gKyNkZWZp bmUgUkdfSERNSVRYMjFfRFJWX0lCSUFTX0NMSyAoMHgzZiA8PCA1KQ0KPiArI2RlZmluZSBSR19I RE1JVFgyMV9TRVJfRU5fU0hJRlQgKDI4KQ0KPiArI2RlZmluZSBSR19IRE1JVFgyMV9EUlZfRU5f U0hJRlQgKDI0KQ0KPiArI2RlZmluZSBSR19IRE1JVFgyMV9EUlZfSU1QX0VOX1NISUZUICgyMCkN Cj4gKyNkZWZpbmUgUkdfSERNSVRYMjFfRFJWX0lCSUFTX0NMS19TSElGVCAoNSkNCj4gKyNkZWZp bmUgSERNSV8xX0NGR18xIDB4MDQNCj4gKyNkZWZpbmUgUkdfSERNSVRYMjFfRFJWX0lCSUFTX0Qy ICgweDNmIDw8IDI2KQ0KPiArI2RlZmluZSBSR19IRE1JVFgyMV9EUlZfSUJJQVNfRDEgKDB4M2Yg PDwgMjApDQo+ICsjZGVmaW5lIFJHX0hETUlUWDIxX0RSVl9JQklBU19EMCAoMHgzZiA8PCAxNCkN Cj4gKyNkZWZpbmUgUkdfSERNSVRYMjFfRFJWX0lCSUFTX0QyX1NISUZUICgyNikNCj4gKyNkZWZp bmUgUkdfSERNSVRYMjFfRFJWX0lCSUFTX0QxX1NISUZUICgyMCkNCj4gKyNkZWZpbmUgUkdfSERN SVRYMjFfRFJWX0lCSUFTX0QwX1NISUZUICgxNCkNCj4gKyNkZWZpbmUgSERNSV8xX0NGR18yIDB4 MDgNCj4gKyNkZWZpbmUgUkdfSERNSVRYMjFfRFJWX0lNUF9DTEtfRU4xICgweDNmIDw8IDI2KQ0K PiArI2RlZmluZSBSR19IRE1JVFgyMV9EUlZfSU1QX0QyX0VOMSAoMHgzZiA8PCAyMCkNCj4gKyNk ZWZpbmUgUkdfSERNSVRYMjFfRFJWX0lNUF9EMV9FTjEgKDB4M2YgPDwgMTQpDQo+ICsjZGVmaW5l IFJHX0hETUlUWDIxX0RSVl9JTVBfRDBfRU4xICgweDNmIDw8IDgpDQo+ICsjZGVmaW5lIFJHX0hE TUlUWDIxX0RSVl9JTVBfQ0xLX0VOMV9TSElGVCAoMjYpDQo+ICsjZGVmaW5lIFJHX0hETUlUWDIx X0RSVl9JTVBfRDJfRU4xX1NISUZUICgyMCkNCj4gKyNkZWZpbmUgUkdfSERNSVRYMjFfRFJWX0lN UF9EMV9FTjFfU0hJRlQgKDE0KQ0KPiArI2RlZmluZSBSR19IRE1JVFgyMV9EUlZfSU1QX0QwX0VO MV9TSElGVCAoOCkNCj4gKyNkZWZpbmUgSERNSV8xX0NGR18zIDB4MGMNCj4gKyNkZWZpbmUgUkdf SERNSVRYMjFfU0xET19FTiAoMHhmIDw8IDgpDQo+ICsjZGVmaW5lIFJHX0hETUlUWDIxX1NMRE9M UEZfRU4gKDB4MSA8PCA3KQ0KPiArI2RlZmluZSBSR19IRE1JVFgyMV9DS0xET19FTiAoMHgxIDw8 IDMpDQo+ICsjZGVmaW5lIFJHX0hETUlUWDIxX1NMRE9fRU5fU0hJRlQgKDgpDQo+ICsjZGVmaW5l IFJHX0hETUlUWDIxX1NMRE9MUEZfRU5fU0hJRlQgKDcpDQo+ICsjZGVmaW5lIFJHX0hETUlUWDIx X0NLTERPX0VOX1NISUZUICgzKQ0KPiArI2RlZmluZSBIRE1JXzFfQ0ZHXzYgMHgxOA0KPiArI2Rl ZmluZSBSR19IRE1JVFgyMV9CSUFTX0VOICgweDEgPDwgMjkpDQo+ICsjZGVmaW5lIFJHX0hETUlU WDIxX1RYX1BPU0RJVl9FTiAoMHgxIDw8IDI4KQ0KPiArI2RlZmluZSBSR19IRE1JVFgyMV9UWF9Q T1NESVYgKDB4MyA8PCAyNikNCj4gKyNkZWZpbmUgUkdfSERNSVRYMjFfSU5UUl9DQUwgKDB4MWYg PDwgMTgpDQo+ICsjZGVmaW5lIFJHX0hETUlUWDIxX0ZSTF9EMl9FTiAoMHgxIDw8IDE2KQ0KPiAr I2RlZmluZSBSR19IRE1JVFgyMV9GUkxfRDFfRU4gKDB4MSA8PCAxNSkNCj4gKyNkZWZpbmUgUkdf SERNSVRYMjFfRlJMX0QwX0VOICgweDEgPDwgMTQpDQo+ICsjZGVmaW5lIFJHX0hETUlUWDIxX0ZS TF9DS19FTiAoMHgxIDw8IDEzKQ0KPiArI2RlZmluZSBSR19IRE1JVFgyMV9GUkxfRU4gKDB4MSA8 PCAxMikNCj4gKyNkZWZpbmUgUkdfSERNSVRYMjFfQ0tfRFJWX09QX0VOICgweDEgPDwgMTEpDQo+ ICsjZGVmaW5lIFJHX0hETUlUWDIxX0QwX0RSVl9PUF9FTiAoMHgxIDw8IDEwKQ0KPiArI2RlZmlu ZSBSR19IRE1JVFgyMV9EMV9EUlZfT1BfRU4gKDB4MSA8PCA5KQ0KPiArI2RlZmluZSBSR19IRE1J VFgyMV9EMl9EUlZfT1BfRU4gKDB4MSA8PCA4KQ0KPiArI2RlZmluZSBSR19IRE1JVFgyMV9CSUFT X0VOX1NISUZUICgyOSkNCj4gKyNkZWZpbmUgUkdfSERNSVRYMjFfVFhfUE9TRElWX0VOX1NISUZU ICgyOCkNCj4gKyNkZWZpbmUgUkdfSERNSVRYMjFfVFhfUE9TRElWX1NISUZUICgyNikNCj4gKyNk ZWZpbmUgUkdfSERNSVRYMjFfSU5UUl9DQUxfU0hJRlQgKDE4KQ0KPiArI2RlZmluZSBSR19IRE1J VFgyMV9GUkxfRDJfRU5fU0hJRlQgKDE2KQ0KPiArI2RlZmluZSBSR19IRE1JVFgyMV9GUkxfRDFf RU5fU0hJRlQgKDE1KQ0KPiArI2RlZmluZSBSR19IRE1JVFgyMV9GUkxfRDBfRU5fU0hJRlQgKDE0 KQ0KPiArI2RlZmluZSBSR19IRE1JVFgyMV9GUkxfQ0tfRU5fU0hJRlQgKDEzKQ0KPiArI2RlZmlu ZSBSR19IRE1JVFgyMV9GUkxfRU5fU0hJRlQgKDEyKQ0KPiArI2RlZmluZSBSR19IRE1JVFgyMV9D S19EUlZfT1BfRU5fU0hJRlQgKDExKQ0KPiArI2RlZmluZSBSR19IRE1JVFgyMV9EMF9EUlZfT1Bf RU5fU0hJRlQgKDEwKQ0KPiArI2RlZmluZSBSR19IRE1JVFgyMV9EMV9EUlZfT1BfRU5fU0hJRlQg KDkpDQo+ICsjZGVmaW5lIFJHX0hETUlUWDIxX0QyX0RSVl9PUF9FTl9TSElGVCAoOCkNCj4gKyNk ZWZpbmUgUkdfSERNSVRYMjFfRFJWX0lCSUFTX0QyX0ZGRTEgKDB4MWYgPDwgMjcpDQo+ICsjZGVm aW5lIFJHX0hETUlUWDIxX0RSVl9JQklBU19EMV9GRkUxICgweDFmIDw8IDIyKQ0KPiArI2RlZmlu ZSBSR19IRE1JVFgyMV9EUlZfSUJJQVNfRDBfRkZFMSAoMHgxZiA8PCAxNykNCj4gKyNkZWZpbmUg UkdfSERNSVRYMjFfRFJWX0lCSUFTX0QyX0ZGRTFfU0hJRlQgKDI3KQ0KPiArI2RlZmluZSBSR19I RE1JVFgyMV9EUlZfSUJJQVNfRDFfRkZFMV9TSElGVCAoMjIpDQo+ICsjZGVmaW5lIFJHX0hETUlU WDIxX0RSVl9JQklBU19EMF9GRkUxX1NISUZUICgxNykNCj4gKyNkZWZpbmUgUkdfSERNSVRYMjFf RFJWX0lCSUFTX0QyX0ZGRTIgKDB4ZiA8PCAyOCkNCj4gKyNkZWZpbmUgUkdfSERNSVRYMjFfRFJW X0lCSUFTX0QxX0ZGRTIgKDB4ZiA8PCAyNCkNCj4gKyNkZWZpbmUgUkdfSERNSVRYMjFfRFJWX0lC SUFTX0QwX0ZGRTIgKDB4ZiA8PCAyMCkNCj4gKyNkZWZpbmUgUkdfSERNSVRYMjFfRFJWX0lCSUFT X0QyX0ZGRTJfU0hJRlQgKDI4KQ0KPiArI2RlZmluZSBSR19IRE1JVFgyMV9EUlZfSUJJQVNfRDFf RkZFMl9TSElGVCAoMjQpDQo+ICsjZGVmaW5lIFJHX0hETUlUWDIxX0RSVl9JQklBU19EMF9GRkUy X1NISUZUICgyMCkNCj4gKyNkZWZpbmUgSERNSV8xX0NGR185IDB4MjQNCj4gKyNkZWZpbmUgUkdf SERNSVRYMjFfU0xET19WUkVGX1NFTCAoMHgzIDw8IDQpDQo+ICsjZGVmaW5lIFJHX0hETUlUWDIx X1NMRE9fVlJFRl9TRUxfU0hJRlQgKDQpDQo+ICsjZGVmaW5lIEhETUlfMV9DRkdfMTAgMHg0MA0K PiArI2RlZmluZSBSR19IRE1JVFgyMV9CR19QV0QgKDB4MSA8PCAyMCkNCj4gKyNkZWZpbmUgUkdf SERNSVRYMjFfQklBU19QRV9CR19WUkVGX1NFTCAoMHgzIDw8IDE1KQ0KPiArI2RlZmluZSBSR19I RE1JVFgyMV9CSUFTX1BFX1ZSRUZfU0VMQiAoMHgxIDw8IDEwKQ0KPiArI2RlZmluZSBSR19IRE1J VFgyMV9WUkVGX1NFTCAoMHgxIDw8IDQpDQo+ICsjZGVmaW5lIFJHX0hETUlUWFBMTF9SRUZfQ0tf U0VMICgweDMgPDwgMSkNCj4gKyNkZWZpbmUgUkdfSERNSVRYMjFfQkdfUFdEX1NISUZUICgyMCkN Cj4gKyNkZWZpbmUgUkdfSERNSVRYMjFfQklBU19QRV9CR19WUkVGX1NFTF9TSElGVCAoMTUpDQo+ ICsjZGVmaW5lIFJHX0hETUlUWDIxX0JJQVNfUEVfVlJFRl9TRUxCX1NISUZUICgxMCkNCj4gKyNk ZWZpbmUgUkdfSERNSVRYMjFfVlJFRl9TRUxfU0hJRlQgKDQpDQo+ICsjZGVmaW5lIFJHX0hETUlU WFBMTF9SRUZfQ0tfU0VMX1NISUZUICgxKQ0KPiArI2RlZmluZSBIRE1JXzFfUExMX0NGR18wIDB4 NDQNCj4gKyNkZWZpbmUgUkdfSERNSVRYUExMX1RDTF9FTiAoMHgxIDw8IDMxKQ0KPiArI2RlZmlu ZSBSR19IRE1JVFhQTExfQlAyICgweDEgPDwgMzApDQo+ICsjZGVmaW5lIFJHX0hETUlUWFBMTF9M VlJfU0VMICgweDMgPDwgMjYpDQo+ICsjZGVmaW5lIFJHX0hETUlUWFBMTF9JQkFORF9GSVhfRU4g KDB4MSA8PCAyNCkNCj4gKyNkZWZpbmUgUkdfSERNSVRYUExMX0hSRU4gKDB4MyA8PCAxMikNCj4g KyNkZWZpbmUgUkdfSERNSVRYUExMX1RDTF9FTl9TSElGVCAoMzEpDQo+ICsjZGVmaW5lIFJHX0hE TUlUWFBMTF9CUDJfU0hJRlQgKDMwKQ0KPiArI2RlZmluZSBSR19IRE1JVFhQTExfTFZSX1NFTF9T SElGVCAoMjYpDQo+ICsjZGVmaW5lIFJHX0hETUlUWFBMTF9JQkFORF9GSVhfRU5fU0hJRlQgKDI0 KQ0KPiArI2RlZmluZSBSR19IRE1JVFhQTExfSFJFTl9TSElGVCAoMTIpDQo+ICsjZGVmaW5lIEhE TUlfMV9QTExfQ0ZHXzEgMHg0OA0KPiArI2RlZmluZSBSR19IRE1JVFhQTExfUkVTRVJWRSAoMHhm ZmZmIDw8IDApDQo+ICsjZGVmaW5lIFJHX0hETUlUWFBMTF9SRVNFUlZFX0JJVDEzIEJJVCgxMykN Cj4gKyNkZWZpbmUgUkdfSERNSVRYUExMX1JFU0VSVkVfQklUMTQgQklUKDE0KQ0KPiArI2RlZmlu ZSBSR19IRE1JVFhQTExfUkVTRVJWRV9CSVQxMl8xMSBHRU5NQVNLKDEyLCAxMSkNCj4gKyNkZWZp bmUgUkdfSERNSVRYUExMX1JFU0VSVkVfQklUM18yIEdFTk1BU0soMywgMikNCj4gKyNkZWZpbmUg UkdfSERNSVRYUExMX1JFU0VSVkVfQklUMV8wIEdFTk1BU0soMSwgMCkNCj4gKyNkZWZpbmUgUkdf SERNSVRYUExMX1JFU0VSVkVfU0hJRlQgKDApDQo+ICsjZGVmaW5lIFJHX0hETUlUWFBMTF9SRVNF UlZFX0JJVDEzX1NISUZUICgxMykNCj4gKyNkZWZpbmUgUkdfSERNSVRYUExMX1JFU0VSVkVfQklU MTRfU0hJRlQgKDE0KQ0KPiArI2RlZmluZSBSR19IRE1JVFhQTExfUkVTRVJWRV9CSVQxMl8xMV9T SElGVCAoMTEpDQo+ICsjZGVmaW5lIFJHX0hETUlUWFBMTF9SRVNFUlZFX0JJVDNfMl9TSElGVCAo MikNCj4gKyNkZWZpbmUgUkdfSERNSVRYUExMX1JFU0VSVkVfQklUMV8wX1NISUZUICgwKQ0KPiAr I2RlZmluZSBIRE1JXzFfUExMX0NGR18yIDB4NGMNCj4gKyNkZWZpbmUgUkdfSERNSVRYUExMX1BX RCAoMHgxIDw8IDMxKQ0KPiArI2RlZmluZSBSR19IRE1JVFhQTExfSElLVkNPICgweDEgPDwgMjkp DQo+ICsjZGVmaW5lIFJHX0hETUlUWFBMTF9CQyAoMHgzIDw8IDI3KQ0KPiArI2RlZmluZSBSR19I RE1JVFhQTExfSUMgKDB4MWYgPDwgMjIpDQo+ICsjZGVmaW5lIFJHX0hETUlUWFBMTF9CUiAoMHg3 IDw8IDE5KQ0KPiArI2RlZmluZSBSR19IRE1JVFhQTExfSVIgKDB4MWYgPDwgMTQpDQo+ICsjZGVm aW5lIFJHX0hETUlUWFBMTF9CUCAoMHhmIDw8IDEwKQ0KPiArI2RlZmluZSBSR19IRE1JVFhQTExf UFdEX1NISUZUICgzMSkNCj4gKyNkZWZpbmUgUkdfSERNSVRYUExMX0hJS1ZDT19TSElGVCAoMjkp DQo+ICsjZGVmaW5lIFJHX0hETUlUWFBMTF9CQ19TSElGVCAoMjcpDQo+ICsjZGVmaW5lIFJHX0hE TUlUWFBMTF9JQ19TSElGVCAoMjIpDQo+ICsjZGVmaW5lIFJHX0hETUlUWFBMTF9CUl9TSElGVCAo MTkpDQo+ICsjZGVmaW5lIFJHX0hETUlUWFBMTF9JUl9TSElGVCAoMTQpDQo+ICsjZGVmaW5lIFJH X0hETUlUWFBMTF9CUF9TSElGVCAoMTApDQo+ICsjZGVmaW5lIEhETUlfMV9QTExfQ0ZHXzMgMHg1 MA0KPiArI2RlZmluZSBSR19IRE1JVFhQTExfRkJLRElWX2xvdyAoMHhmZmZmZmZmZiA8PCAwKQ0K PiArI2RlZmluZSBSR19IRE1JVFhQTExfRkJLRElWX2xvd19TSElGVCAoMCkNCj4gKyNkZWZpbmUg SERNSV8xX1BMTF9DRkdfNCAweDU0DQo+ICsjZGVmaW5lIFJHX0hETUlUWFBMTF9GQktESVZfaGln aCAoMHgxIDw8IDMxKQ0KPiArI2RlZmluZSBSR19IRE1JVFhQTExfUFJFRElWICgweDMgPDwgMjgp DQo+ICsjZGVmaW5lIFJHX0hETUlUWFBMTF9ESVZfQ1RSTCAoMHgzIDw8IDI0KQ0KPiArI2RlZmlu ZSBSR19IRE1JVFhQTExfUE9TRElWICgweDMgPDwgMjIpDQo+ICsjZGVmaW5lIFJHX0hETUlUWFBM TF9QT1NESVZfRElWM19DVFJMICgweDEgPDwgMjEpDQo+ICsjZGVmaW5lIERBX0hETUlUWFBMTF9Q V1JfT04gKDB4MSA8PCAyKQ0KPiArI2RlZmluZSBEQV9IRE1JVFhQTExfSVNPX0VOICgweDEgPDwg MSkNCj4gKyNkZWZpbmUgUkdfSERNSVRYUExMX0ZCS0RJVl9oaWdoX1NISUZUICgzMSkNCj4gKyNk ZWZpbmUgUkdfSERNSVRYUExMX1BSRURJVl9TSElGVCAoMjgpDQo+ICsjZGVmaW5lIFJHX0hETUlU WFBMTF9ESVZfQ1RSTF9TSElGVCAoMjQpDQo+ICsjZGVmaW5lIFJHX0hETUlUWFBMTF9QT1NESVZf U0hJRlQgKDIyKQ0KPiArI2RlZmluZSBSR19IRE1JVFhQTExfUE9TRElWX0RJVjNfQ1RSTF9TSElG VCAoMjEpDQo+ICsjZGVmaW5lIERBX0hETUlUWFBMTF9QV1JfT05fU0hJRlQgKDIpDQo+ICsjZGVm aW5lIERBX0hETUlUWFBMTF9JU09fRU5fU0hJRlQgKDEpDQo+ICsjZGVmaW5lIEhETUkyMF9DTEtf Q0ZHIDB4NzANCj4gKyNkZWZpbmUgSERNSV8xX0NGR18yMSAweDg0DQo+ICsjZGVmaW5lIEhETUlf MV9DRkdfMjIgMHg4OA0KPiArI2RlZmluZSBSR19IRE1JVFgyMV9JTlRSX0NBTF9SRUFET1VUIEdF Tk1BU0soMjIsIDE4KQ0KPiArI2RlZmluZSBSR19IRE1JVFgyMV9JTlRSX0NBTF9SRUFET1VUX1NI SUZUICgxOCkNCj4gKyNkZWZpbmUgSERNSV9DVExfMSAweGM0DQo+ICsjZGVmaW5lIFJHX0lOVFJf SU1QX1JHX01PREUgR0VOTUFTSyg3LCAzKQ0KPiArI2RlZmluZSBSR19JTlRSX0lNUF9SR19NT0RF X1NISUZUICgzKQ0KPiArI2RlZmluZSBSRUdfSERNSVRYX1BJWEVMX0NMT0NLIEJJVCgyMykNCj4g KyNkZWZpbmUgUkVHX1BJWEVMX0NMT0NLX1NFTCBCSVQoMTApDQo+ICsjZGVmaW5lIFJFR19IRE1J VFhfUkVGX1hUQUxfU0VMIEJJVCg3KQ0KPiArI2RlZmluZSBSRUdfSERNSVRYUExMX0RJViBHRU5N QVNLKDQsIDApDQo+ICsjZGVmaW5lIFJFR19IRE1JVFhfUElYRUxfQ0xPQ0tfU0hJRlQgKDIzKQ0K PiArI2RlZmluZSBSRUdfUElYRUxfQ0xPQ0tfU0VMX1NISUZUICgxMCkNCj4gKyNkZWZpbmUgUkVH X0hETUlUWF9SRUZfWFRBTF9TRUxfU0hJRlQgKDcpDQo+ICsjZGVmaW5lIFJFR19IRE1JVFhQTExf RElWX1NISUZUICgwKQ0KPiArDQo+ICsjZW5kaWYgLyogTVRLX0hETUlfUEhZXzgxOTVfSCAqLw0K