Received: by 2002:a89:413:0:b0:1fd:dba5:e537 with SMTP id m19csp1695439lqs; Sun, 16 Jun 2024 00:00:04 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUpTjV+1JSaTCQ5ESqEtzU1WlknzWOSgdvbtr7ftorJbc2EMc1GMQEr85EUanWXCUGA0M9hMFJ1lmTdZC4uDR85VEDFhYFTiRTcQSvvvg== X-Google-Smtp-Source: AGHT+IFjGffMfixFZLwEdvGT/RxFV8ytQLegwq1u7jXNXv4Ny2qEJcvH0VgtUDk3OifWvGJu2d6W X-Received: by 2002:a05:6a20:1594:b0:1b6:63e8:7839 with SMTP id adf61e73a8af0-1b8befd89dbmr15746909637.7.1718521203985; Sun, 16 Jun 2024 00:00:03 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1718521203; cv=pass; d=google.com; s=arc-20160816; b=qzb42eMTK26ooARk+YBpjpOQLnjhk/50uaYP0mT1Qo1gvtABJerV8aSyQggFcu0Asw GrfizzQXW+GWD7g7slLWmqBLZajxecJ82tezETVwzCPZcsOw66+y1c8EeT96LaDZm+NG MTtB9YtCa0CU3YTkfWidfIppoHx0la+xT45VJhcuHsviKmafq95RELLOVozPBMgwjUhN SKZOdyIrItiBLhpBKmHR/TPKz0CieRFzNhSyQo10fAx20ukb76WUNSiAiU5tUhm2NwmV 6QUpfLiFGUDcWoSKlscZnz92pgKxPsKjtXs73QnIfYuMeh7GooEVNciaCmsJ6DTL0Kjq YWiw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:mime-version:list-unsubscribe:list-subscribe:list-id :precedence:content-transfer-encoding:references:in-reply-to:subject :cc:to:from:date:dkim-signature; bh=8+C2j95V8+HG6OQ0nU35/W6XpPRO6XFyNLVqt8pQt18=; fh=+ZnlSmDPPDdxe5M5JRrnTswEAjhr20aZ8Fz6D4Jl/sU=; b=rYT1uyaD87jDiHAND7MNU/PqLS07A1YtypDQ9HOtOd5V11D4unfOCZIzS0ofLK+v8g pSxyldeZLa4ZJkd775lKti0s6sciSrIPPlICZnjPCQLRUmdrxKKcvu8G42HxxZUk7dAW WOdPC7W27V3CQnxWTpyDaLxeUaDWZ9yOdszOqCHwOI0oe4iiE8UIjdOobvCORhWhqorF vsRrJPyYol5CeRltZmoODT/4XCQe4PVJAatZB0ZUZxSJVnHsj2zRSKnCcRABqjQ9aa0p YW3EfJhoq4Xcbddh4TiMP914vpqQnNvdPLye3pAUOcxtqPSfv5EaDfTcWtJhQAAed+Cn EGJQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=neutral (body hash did not verify) header.i=@163.com header.s=s110527 header.b=T2edXOTd; arc=pass (i=1 spf=pass spfdomain=163.com dmarc=pass fromdomain=163.com); spf=pass (google.com: domain of linux-kernel+bounces-216151-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-216151-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=163.com Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id 41be03b00d2f7-707f2e95b0dsi1385224a12.238.2024.06.16.00.00.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Jun 2024 00:00:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-216151-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@163.com header.s=s110527 header.b=T2edXOTd; arc=pass (i=1 spf=pass spfdomain=163.com dmarc=pass fromdomain=163.com); spf=pass (google.com: domain of linux-kernel+bounces-216151-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-216151-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=163.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 41B35B2308F for ; Sun, 16 Jun 2024 06:59:56 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BF99D16EC04; Sun, 16 Jun 2024 06:59:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=163.com header.i=@163.com header.b="T2edXOTd" Received: from m15.mail.163.com (m15.mail.163.com [45.254.50.219]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9945016EBE5; Sun, 16 Jun 2024 06:59:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.254.50.219 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718521182; cv=none; b=CJZtSwzVl8sH/0UylZwHHT2Wcd6X4MyMvh3S6DoX5p1UzrNw3OFz3z7JrQOWYfhfBVoeWhWr4Dhl6G7KYjQb0KuhlQ10rJ5HSkTFW2yehfMzBx3KUQyFI3Aqt9Z659Mu5KvcV2MOwIe0hZ8J5hOB89z5kULWruwXLWRwNFYqVoA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718521182; c=relaxed/simple; bh=8+C2j95V8+HG6OQ0nU35/W6XpPRO6XFyNLVqt8pQt18=; h=Date:From:To:Cc:Subject:In-Reply-To:References:Content-Type: MIME-Version:Message-ID; b=eHv2Us2Q9j+aetSDGMlWpDaXc0MKVElKCbNNuIn10XxsI08WKBAgfmDer5CO10x8LM3EzgIoPVd2VtpDeL7Z24SN69qYSUOmxic+czO3XHhAof1/8vp/QOiQ/vb8A8CoUeOQTPkonR1/43n9l5iRBEvKAo6gh9J65vBD4OZe53c= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com; spf=pass smtp.mailfrom=163.com; dkim=fail (1024-bit key) header.d=163.com header.i=@163.com header.b=T2edXOTd reason="signature verification failed"; arc=none smtp.client-ip=45.254.50.219 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=163.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=Date:From:Subject:Content-Type:MIME-Version: Message-ID; bh=tO3d+INYeQUrxHJcvOaVvI7we9N+kCD8EszKmiqgmpo=; b=T 2edXOTdP/d4+C+wx+wnCllW/3wkrloWC4PnRSawGWE27faI2KOnCIeSXRZr89RGJ OVkh5MUcfDhohDqc4P0X/TqwnLuWAgzrByGJrmMLlvPW+g9yy/coD0aAFwZMoQTr OARnUv0nQfHLgKUf4pw8D1mPsnbECwxe4Aoc/dnyX8= Received: from andyshrk$163.com ( [58.22.7.114] ) by ajax-webmail-wmsvr-40-134 (Coremail) ; Sun, 16 Jun 2024 14:58:20 +0800 (CST) Date: Sun, 16 Jun 2024 14:58:20 +0800 (CST) From: "Andy Yan" To: "Detlev Casanova" Cc: linux-kernel@vger.kernel.org, "Mauro Carvalho Chehab" , "Rob Herring" , "Krzysztof Kozlowski" , "Conor Dooley" , "Heiko Stuebner" , "Greg Kroah-Hartman" , "Sebastian Reichel" , "Dragan Simic" , "Alexey Charkov" , "Cristian Ciocaltea" , "Diederik de Haas" , "Andy Yan" , linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev Subject: Re:[PATCH 1/3] media: rockchip: Introduce the rkvdec2 driver X-Priority: 3 X-Mailer: Coremail Webmail Server Version XT5.0.14 build 20230109(dcb5de15) Copyright (c) 2002-2024 www.mailtech.cn 163com In-Reply-To: <20240615015734.1612108-2-detlev.casanova@collabora.com> References: <20240615015734.1612108-1-detlev.casanova@collabora.com> <20240615015734.1612108-2-detlev.casanova@collabora.com> X-NTES-SC: AL_Qu2aCvmZvkkr5iOYbekZnEobh+Y5UcK2s/ki2YFXN5k0miXD8QkEdEROOkv06OeSFBy1iyOebSdx0st2cLR9W7oMeiL7Y2DAl/CeNk3dYwt1 Content-Transfer-Encoding: base64 Content-Type: text/plain; charset=UTF-8 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-ID: <7868a575.14f8.1901fd6f81a.Coremail.andyshrk@163.com> X-Coremail-Locale: zh_CN X-CM-TRANSID:_____wD3nzwMjW5m4VkDAA--.15116W X-CM-SenderInfo: 5dqg52xkunqiywtou0bp/1tbiMwgAXmXAl3SHsQAGsT X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== CkhpIERldGxldu+8jAogICAgIFRoYW5rcyBmb3IgeW91ciBncmVhdCB3b3Jr44CCCiAgICAgSG93 IGNhbiBJIHRlc3QgdGhlc2UgcGF0Y2hlcz8gRG8gdGhleSByZXF1aXJlIGFueSBhZGRpdGlvbmFs IHVzZXJzcGFjZSBwYXRjaGVzPwoKQXQgMjAyNC0wNi0xNSAwOTo1NjoyNywgIkRldGxldiBDYXNh bm92YSIgPGRldGxldi5jYXNhbm92YUBjb2xsYWJvcmEuY29tPiB3cm90ZToKPlRoaXMgZHJpdmVy IHN1cHBvcnRzIHRoZSBzZWNvbmQgZ2VuZXJhdGlvbiBvZiB0aGUgUm9ja2NoaXAgVmlkZW8KPmRl Y29kZXIsIGFsc28ga25vd24gYXMgdmRwdTM0eC4KPkl0IGlzIGN1cnJlbnRseSBvbmx5IHVzZWQg b24gdGhlIFJLMzU4OChzKSBTb0MuCj4KPlRoZXJlIGFyZSAyIGRlY29kZXJzIG9uIHRoZSBSSzM1 ODggU29DIHRoYXQgY2FuIHdvcmsgaW4gcGFpciB0byBkZWNvZGUKPjhLIHZpZGVvIGF0IDMwIEZQ UyBidXQgY3VycmVudGx5LCBvbmx5IHVzaW5nIG9uZSBjb3JlIGF0IGEgdGltZSBpcwo+c3VwcG9y dGVkLgo+Cj5TY2hlZHVsaW5nIHJlcXVlc3RzIGJldHdlZW4gdGhlIHR3byBjb3JlcyB3aWxsIGJl IGltcGxlbWVudGVkIGxhdGVyLgo+Cj5UaGUgY29yZSBzdXBwb3J0cyBIMjY0LCBIRVZDLCBWUDkg YW5kIEFWUzIgZGVjb2RpbmcgYnV0IHRoaXMgZHJpdmVyCj5jdXJyZW50bHkgb25seSBzdXBwb3J0 cyBIMjY0Lgo+Cj5UaGUgZHJpdmVyIGlzIGJhc2VkIG9uIHJrdmRlYyBhbmQgdGhleSBtYXkgc2hh cmUgc29tZSBjb2RlIGluIHRoZQo+ZnV0dXJlLgo+VGhlIGRlY2lzaW9uIHRvIG1ha2UgYSBkaWZm ZXJlbnQgZHJpdmVyIGlzIG1haW5seSBiZWNhdXNlIHJrdmRlYzIgaGFzCj5tb3JlIGZlYXR1cmVz IGFuZCBjYW4gd29yayB3aXRoIG11bHRpcGxlIGNvcmVzLgo+Cj5UaGUgcmVnaXN0ZXJzIGFyZSBt YXBwZWQgaW4gYSBzdHJ1Y3QgaW4gUkFNIHVzaW5nIGJpdGZpZWxkcy4gSXQgaXMgSU8KPmNvcGll ZCB0byB0aGUgSFcgd2hlbiBhbGwgdmFsdWVzIGFyZSBjb25maWd1cmVkLgo+VGhlIGRlY2lzaW9u IHRvIHVzZSBzdWNoIGEgc3RydWN0IGluc3RlYWQgb2Ygd3JpdGluZyBidWZmZXJzIG9uZSBieSBv bmUKPmlzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgcmVhc29uczoKPiAtIFJvY2tjaGlwIGNvcmVz IGFyZSBrbm93biB0byBtaXNiZWhhdmUgd2hlbiByZWdpc3RlcnMgYXJlIG5vdCB3cml0dGVuCj4g ICBpbiBhZGRyZXNzIG9yZGVyLAo+IC0gVGhvc2UgY29yZXMgYWxzbyBuZWVkIHRoZSBzb2Z0d2Fy ZSB0byB3cml0ZSBhbGwgcmVnaXN0ZXJzLCBldmVuIGlmCj4gICB0aGV5IGFyZSB3cml0dGVuIHRo ZWlyIGRlZmF1bHQgdmFsdWVzIG9yIGFyZSBub3QgcmVsYXRlZCB0byB0aGUgdGFzawo+ICAgKHRo aXMgY29yZSB3aWxsIG5vdCBzdGFydCBkZWNvZGluZyBzb21lIEgyNjQgZnJhbWVzIGlmIHNvbWUg VlA5Cj4gICByZWdpc3RlcnMgYXJlIG5vdCB3cml0dGVuIHRvIDApCj4gLSBJbiB0aGUgZnV0dXJl LCB0byBzdXBwb3J0IG11bHRpcGxlIGNvcmVzLCB0aGUgc2NoZWR1bGVyIGNvdWxkIGJlCj4gICBv cHRpbWl6ZWQgYnkgc3RvcmluZyB0aGUgcHJlY29tcHV0ZWQgcmVnaXN0ZXJzIHZhbHVlcyBhbmQg Y29weSB0aGVtCj4gICB0byB0aGUgSFcgYXMgc29vcyBhcyBhIGNvcmUgYmVjb21lcyBhdmFpbGFi bGUuCj4KPlRoaXMgbWFrZXMgdGhlIGNvZGUgbW9yZSByZWFkYWJsZSBhbmQgbWF5IGJyaW5nIHBl cmZvcm1hbmNlIGltcHJvdmVtZW50cwo+aW4gZnV0dXJlIGZlYXR1cmVzLgo+Cj5TaWduZWQtb2Zm LWJ5OiBEZXRsZXYgQ2FzYW5vdmEgPGRldGxldi5jYXNhbm92YUBjb2xsYWJvcmEuY29tPgo+LS0t Cj4gZHJpdmVycy9zdGFnaW5nL21lZGlhL0tjb25maWcgICAgICAgICAgICAgICAgfCAgICAxICsK PiBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgIDEgKwo+ IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9ya3ZkZWMyL0tjb25maWcgICAgICAgIHwgICAxNSArCj4g ZHJpdmVycy9zdGFnaW5nL21lZGlhL3JrdmRlYzIvTWFrZWZpbGUgICAgICAgfCAgICAzICsKPiBk cml2ZXJzL3N0YWdpbmcvbWVkaWEvcmt2ZGVjMi9UT0RPICAgICAgICAgICB8ICAgMTMgKwo+IGRy aXZlcnMvc3RhZ2luZy9tZWRpYS9ya3ZkZWMyL3JrdmRlYzItaDI2NC5jIHwgIDg5OSArKysrKysr KysrKysrKwo+IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9ya3ZkZWMyL3JrdmRlYzItcmVncy5oIHwg IDM3MiArKysrKysKPiBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvcmt2ZGVjMi9ya3ZkZWMyLmMgICAg ICB8IDExNjAgKysrKysrKysrKysrKysrKysrCj4gZHJpdmVycy9zdGFnaW5nL21lZGlhL3JrdmRl YzIvcmt2ZGVjMi5oICAgICAgfCAgMTIzICsrCj4gOSBmaWxlcyBjaGFuZ2VkLCAyNTg3IGluc2Vy dGlvbnMoKykKPiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL21lZGlhL3JrdmRl YzIvS2NvbmZpZwo+IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvcmt2 ZGVjMi9NYWtlZmlsZQo+IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcvbWVkaWEv cmt2ZGVjMi9UT0RPCj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9y a3ZkZWMyL3JrdmRlYzItaDI2NC5jCj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2lu Zy9tZWRpYS9ya3ZkZWMyL3JrdmRlYzItcmVncy5oCj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvc3RhZ2luZy9tZWRpYS9ya3ZkZWMyL3JrdmRlYzIuYwo+IGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL3N0YWdpbmcvbWVkaWEvcmt2ZGVjMi9ya3ZkZWMyLmgKPgo+ZGlmZiAtLWdpdCBhL2Ry aXZlcnMvc3RhZ2luZy9tZWRpYS9LY29uZmlnIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL0tjb25m aWcKPmluZGV4IDU1NGMyZTQ3NWNlMy4uN2YzNzdkMzdlNjcwIDEwMDY0NAo+LS0tIGEvZHJpdmVy cy9zdGFnaW5nL21lZGlhL0tjb25maWcKPisrKyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9LY29u ZmlnCj5AQCAtMzUsNiArMzUsNyBAQCBzb3VyY2UgImRyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNv bi92ZGVjL0tjb25maWciCj4gc291cmNlICJkcml2ZXJzL3N0YWdpbmcvbWVkaWEvb21hcDRpc3Mv S2NvbmZpZyIKPiAKPiBzb3VyY2UgImRyaXZlcnMvc3RhZ2luZy9tZWRpYS9ya3ZkZWMvS2NvbmZp ZyIKPitzb3VyY2UgImRyaXZlcnMvc3RhZ2luZy9tZWRpYS9ya3ZkZWMyL0tjb25maWciCj4gCj4g c291cmNlICJkcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3RhcmZpdmUvS2NvbmZpZyIKPiAKPmRpZmYg LS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvTWFrZWZpbGUgYi9kcml2ZXJzL3N0YWdpbmcv bWVkaWEvTWFrZWZpbGUKPmluZGV4IGRjYWVlY2EwZWU2ZC4uMGEyZDg5ZGIzMmIyIDEwMDY0NAo+ LS0tIGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL01ha2VmaWxlCj4rKysgYi9kcml2ZXJzL3N0YWdp bmcvbWVkaWEvTWFrZWZpbGUKPkBAIC02LDYgKzYsNyBAQCBvYmotJChDT05GSUdfVklERU9fTUFY OTY3MTIpCSs9IG1heDk2NzEyLwo+IG9iai0kKENPTkZJR19WSURFT19NRVNPTl9WREVDKQkrPSBt ZXNvbi92ZGVjLwo+IG9iai0kKENPTkZJR19WSURFT19PTUFQNCkJKz0gb21hcDRpc3MvCj4gb2Jq LSQoQ09ORklHX1ZJREVPX1JPQ0tDSElQX1ZERUMpCSs9IHJrdmRlYy8KPitvYmotJChDT05GSUdf VklERU9fUk9DS0NISVBfVkRFQzIpCSs9IHJrdmRlYzIvCj4gb2JqLSQoQ09ORklHX1ZJREVPX1NU QVJGSVZFX0NBTVNTKQkrPSBzdGFyZml2ZS8KPiBvYmotJChDT05GSUdfVklERU9fU1VOWEkpCSs9 IHN1bnhpLwo+IG9iai0kKENPTkZJR19WSURFT19URUdSQSkJKz0gdGVncmEtdmlkZW8vCj5kaWZm IC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL3JrdmRlYzIvS2NvbmZpZyBiL2RyaXZlcnMv c3RhZ2luZy9tZWRpYS9ya3ZkZWMyL0tjb25maWcKPm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj5pbmRl eCAwMDAwMDAwMDAwMDAuLmZkNTA1Y2I3YWZmOQo+LS0tIC9kZXYvbnVsbAo+KysrIGIvZHJpdmVy cy9zdGFnaW5nL21lZGlhL3JrdmRlYzIvS2NvbmZpZwo+QEAgLTAsMCArMSwxNSBAQAo+KyMgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPitjb25maWcgVklERU9fUk9DS0NISVBfVkRF QzIKPisJdHJpc3RhdGUgIlJvY2tjaGlwIFZpZGVvIERlY29kZXIgZHJpdmVyIDIiCj4rCWRlcGVu ZHMgb24gQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1QKPisJZGVwZW5kcyBvbiBWSURFT19E RVYKPisJc2VsZWN0IE1FRElBX0NPTlRST0xMRVIKPisJc2VsZWN0IFZJREVPQlVGMl9ETUFfQ09O VElHCj4rCXNlbGVjdCBWSURFT0JVRjJfVk1BTExPQwo+KwlzZWxlY3QgVjRMMl9NRU0yTUVNX0RF Vgo+KwlzZWxlY3QgVjRMMl9IMjY0Cj4rCWhlbHAKPisJICBTdXBwb3J0IGZvciB0aGUgUm9ja2No aXAgVmlkZW8gRGVjb2RlciAyIElQIHByZXNlbnQgb24gUm9ja2NoaXAgU29DcywKPisJICB3aGlj aCBhY2NlbGVyYXRlcyB2aWRlbyBkZWNvZGluZy4KPisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVy IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlCj4rCSAgd2lsbCBiZSBjYWxs ZWQgcm9ja2NoaXAtdmRlYzIuCj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL3Jr dmRlYzIvTWFrZWZpbGUgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvcmt2ZGVjMi9NYWtlZmlsZQo+ bmV3IGZpbGUgbW9kZSAxMDA2NDQKPmluZGV4IDAwMDAwMDAwMDAwMC4uYjVhNmFjNzAxOTcwCj4t LS0gL2Rldi9udWxsCj4rKysgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvcmt2ZGVjMi9NYWtlZmls ZQo+QEAgLTAsMCArMSwzIEBACj4rb2JqLSQoQ09ORklHX1ZJREVPX1JPQ0tDSElQX1ZERUMyKSAr PSByb2NrY2hpcC12ZGVjMi5vCj4rCj4rcm9ja2NoaXAtdmRlYzIteSArPSBya3ZkZWMyLm8gcmt2 ZGVjMi1oMjY0Lm8KPmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvcmt2ZGVjMi9U T0RPIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL3JrdmRlYzIvVE9ETwo+bmV3IGZpbGUgbW9kZSAx MDA2NDQKPmluZGV4IDAwMDAwMDAwMDAwMC4uODQ0OGZiMjAxODVlCj4tLS0gL2Rldi9udWxsCj4r KysgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvcmt2ZGVjMi9UT0RPCj5AQCAtMCwwICsxLDEzIEBA Cj4rKiBIMjY0IGZlYXR1cmVzCj4rCj4rICAtIEZsdXN0ZXIgc2NvcmUgY3VycmVudGx5IGlzIDEy OS8xMzUgZm9yIEpWVC1BVkNfVjEuCj4rICAgIFRoaXMgcHJvYmFibHkgd29uJ3QgaW1wcm92ZS4K PisgIC0gUkNCIGlzIG5vdCBzdG9yZWQgaW4gc3JhbSB5ZXQuCj4rCj4rKiBTdXBwb3J0IGZvciBI RVZDIGFuZCBWUDkgYXJlIHBsYW5uZWQgZm9yIHRoaXMgZHJpdmVyLgo+Kwo+KyAgRmlyc3QsIHRo ZSBoMjY0IGJhY2tlbmQgbmVlZHMgdG8gYmUgc3RhYmlsaXplZC4KPisKPisqIEV2YWx1YXRlIHNo YXJpbmcgY29kZSB3aXRoIHJrdmRlYwo+Kwo+KyAgQXMgcmt2ZGVjIGlzIHN0aWxsIGluIHN0YWdp bmcsIHRoaXMgZHJpdmVyIHN0YXlzIHRoZXJlIGFzIHdlbGwuCj5kaWZmIC0tZ2l0IGEvZHJpdmVy cy9zdGFnaW5nL21lZGlhL3JrdmRlYzIvcmt2ZGVjMi1oMjY0LmMgYi9kcml2ZXJzL3N0YWdpbmcv bWVkaWEvcmt2ZGVjMi9ya3ZkZWMyLWgyNjQuYwo+bmV3IGZpbGUgbW9kZSAxMDA2NDQKPmluZGV4 IDAwMDAwMDAwMDAwMC4uNDg0ZDMyZjE1YTQyCj4tLS0gL2Rldi9udWxsCj4rKysgYi9kcml2ZXJz L3N0YWdpbmcvbWVkaWEvcmt2ZGVjMi9ya3ZkZWMyLWgyNjQuYwo+QEAgLTAsMCArMSw4OTkgQEAK PisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+Ky8qCj4rICogUm9ja2NoaXAg VmlkZW8gRGVjb2RlciAyIEgyNjQgYmFja2VuZAo+KyAqCj4rICogQ29weXJpZ2h0IChDKSAyMDI0 IENvbGxhYm9yYSwgTHRkLgo+KyAqICBEZXRsZXYgQ2FzYW5vdmEgPGRldGxldi5jYXNhbm92YUBj b2xsYWJvcmEuY29tPgo+KyAqCj4rICogQmFzZWQgb24gcmt2ZGVjIGRyaXZlciBieSBCb3JpcyBC cmV6aWxsb24gPGJvcmlzLmJyZXppbGxvbkBjb2xsYWJvcmEuY29tPgo+KyAqLwo+Kwo+KyNpbmNs dWRlIDxtZWRpYS92NGwyLWgyNjQuaD4KPisjaW5jbHVkZSA8bWVkaWEvdjRsMi1tZW0ybWVtLmg+ Cj4rCj4rI2luY2x1ZGUgInJrdmRlYzIuaCIKPisjaW5jbHVkZSAicmt2ZGVjMi1yZWdzLmgiCj4r Cj4rI2RlZmluZSBSS1ZERUNfTlVNX1JFRkxJU1QJCTMKPisKPitzdHJ1Y3Qgcmt2ZGVjMl9oMjY0 X3NjYWxpbmdfbGlzdCB7Cj4rCXU4IHNjYWxpbmdfbGlzdF80eDRbNl1bMTZdOwo+Kwl1OCBzY2Fs aW5nX2xpc3RfOHg4WzZdWzY0XTsKPisJdTggcGFkZGluZ1sxMjhdOwo+K307Cj4rCj4rc3RydWN0 IHJrdmRlYzJfc3BzIHsKPisJdTE2IHNlcV9wYXJhbWV0ZXJfc2V0X2lkOgkJCTQ7Cj4rCXUxNiBw cm9maWxlX2lkYzoJCQkJODsKPisJdTE2IGNvbnN0cmFpbnRfc2V0M19mbGFnOgkJCTE7Cj4rCXUx NiBjaHJvbWFfZm9ybWF0X2lkYzoJCQkJMjsKPisJdTE2IGJpdF9kZXB0aF9sdW1hOgkJCQkzOwo+ Kwl1MTYgYml0X2RlcHRoX2Nocm9tYToJCQkJMzsKPisJdTE2IHFwcHJpbWVfeV96ZXJvX3RyYW5z Zm9ybV9ieXBhc3NfZmxhZzoJMTsKPisJdTE2IGxvZzJfbWF4X2ZyYW1lX251bV9taW51czQ6CQkJ NDsKPisJdTE2IG1heF9udW1fcmVmX2ZyYW1lczoJCQkJNTsKPisJdTE2IHBpY19vcmRlcl9jbnRf dHlwZToJCQkJMjsKPisJdTE2IGxvZzJfbWF4X3BpY19vcmRlcl9jbnRfbHNiX21pbnVzNDoJCTQ7 Cj4rCXUxNiBkZWx0YV9waWNfb3JkZXJfYWx3YXlzX3plcm9fZmxhZzoJCTE7Cj4rCXUxNiBwaWNf d2lkdGhfaW5fbWJzOgkJCQkxMjsKPisJdTE2IHBpY19oZWlnaHRfaW5fbWJzOgkJCQkxMjsKPisJ dTE2IGZyYW1lX21ic19vbmx5X2ZsYWc6CQkJMTsKPisJdTE2IG1iX2FkYXB0aXZlX2ZyYW1lX2Zp ZWxkX2ZsYWc6CQkxOwo+Kwl1MTYgZGlyZWN0Xzh4OF9pbmZlcmVuY2VfZmxhZzoJCQkxOwo+Kwl1 MTYgbXZjX2V4dGVuc2lvbl9lbmFibGU6CQkJMTsKPisJdTE2IG51bV92aWV3czoJCQkJCTI7Cj4r Cj4rCXUxNiByZXNlcnZlZF9iaXRzOgkJCQkxMjsKPisJdTE2IHJlc2VydmVkWzExXTsKPit9IF9f cGFja2VkOwo+Kwo+K3N0cnVjdCBya3ZkZWMyX3BwcyB7Cj4rCXUxNiBwaWNfcGFyYW1ldGVyX3Nl dF9pZDoJCQkJODsKPisJdTE2IHBwc19zZXFfcGFyYW1ldGVyX3NldF9pZDoJCQkJNTsKPisJdTE2 IGVudHJvcHlfY29kaW5nX21vZGVfZmxhZzoJCQkJMTsKPisJdTE2IGJvdHRvbV9maWVsZF9waWNf b3JkZXJfaW5fZnJhbWVfcHJlc2VudF9mbGFnOgkxOwo+Kwl1MTYgbnVtX3JlZl9pZHhfbDBfZGVm YXVsdF9hY3RpdmVfbWludXMxOgkJNTsKPisJdTE2IG51bV9yZWZfaWR4X2wxX2RlZmF1bHRfYWN0 aXZlX21pbnVzMToJCTU7Cj4rCXUxNiB3ZWlnaHRlZF9wcmVkX2ZsYWc6CQkJCQkxOwo+Kwl1MTYg d2VpZ2h0ZWRfYmlwcmVkX2lkYzoJCQkJMjsKPisJdTE2IHBpY19pbml0X3FwX21pbnVzMjY6CQkJ CTc7Cj4rCXUxNiBwaWNfaW5pdF9xc19taW51czI2OgkJCQk2Owo+Kwl1MTYgY2hyb21hX3FwX2lu ZGV4X29mZnNldDoJCQkJNTsKPisJdTE2IGRlYmxvY2tpbmdfZmlsdGVyX2NvbnRyb2xfcHJlc2Vu dF9mbGFnOgkJMTsKPisJdTE2IGNvbnN0cmFpbmVkX2ludHJhX3ByZWRfZmxhZzoJCQkxOwo+Kwl1 MTYgcmVkdW5kYW50X3BpY19jbnRfcHJlc2VudDoJCQkJMTsKPisJdTE2IHRyYW5zZm9ybV84eDhf bW9kZV9mbGFnOgkJCQkxOwo+Kwl1MTYgc2Vjb25kX2Nocm9tYV9xcF9pbmRleF9vZmZzZXQ6CQkJ NTsKPisJdTE2IHNjYWxpbmdfbGlzdF9lbmFibGVfZmxhZzoJCQkJMTsKPisJdTMyIHNjYWxpbmdf bGlzdF9hZGRyZXNzOwo+Kwl1MTYgaXNfbG9uZ3Rlcm07Cj4rCj4rCXU4IHJlc2VydmVkWzNdOwo+ K30gX19wYWNrZWQ7Cj4rCj4rc3RydWN0IHJrdmRlYzJfcnBzX2VudHJ5IHsKPisJdTMyIGRwYl9p bmZvMDoJCTU7Cj4rCXUzMiBib3R0b21fZmxhZzA6CTE7Cj4rCXUzMiB2aWV3X2luZGV4X29mZjA6 CTE7Cj4rCXUzMiBkcGJfaW5mbzE6CQk1Owo+Kwl1MzIgYm90dG9tX2ZsYWcxOgkxOwo+Kwl1MzIg dmlld19pbmRleF9vZmYxOgkxOwo+Kwl1MzIgZHBiX2luZm8yOgkJNTsKPisJdTMyIGJvdHRvbV9m bGFnMjoJMTsKPisJdTMyIHZpZXdfaW5kZXhfb2ZmMjoJMTsKPisJdTMyIGRwYl9pbmZvMzoJCTU7 Cj4rCXUzMiBib3R0b21fZmxhZzM6CTE7Cj4rCXUzMiB2aWV3X2luZGV4X29mZjM6CTE7Cj4rCXUz MiBkcGJfaW5mbzQ6CQk1Owo+Kwl1MzIgYm90dG9tX2ZsYWc0OgkxOwo+Kwl1MzIgdmlld19pbmRl eF9vZmY0OgkxOwo+Kwl1MzIgZHBiX2luZm81OgkJNTsKPisJdTMyIGJvdHRvbV9mbGFnNToJMTsK PisJdTMyIHZpZXdfaW5kZXhfb2ZmNToJMTsKPisJdTMyIGRwYl9pbmZvNjoJCTU7Cj4rCXUzMiBi b3R0b21fZmxhZzY6CTE7Cj4rCXUzMiB2aWV3X2luZGV4X29mZjY6CTE7Cj4rCXUzMiBkcGJfaW5m bzc6CQk1Owo+Kwl1MzIgYm90dG9tX2ZsYWc3OgkxOwo+Kwl1MzIgdmlld19pbmRleF9vZmY3Ogkx Owo+K30gX19wYWNrZWQ7Cj4rCj4rc3RydWN0IHJrdmRlYzJfcnBzIHsKPisJdTE2IGZyYW1lX251 bVsxNl07Cj4rCXUzMiByZXNlcnZlZDA7Cj4rCXN0cnVjdCBya3ZkZWMyX3Jwc19lbnRyeSBlbnRy aWVzWzEyXTsKPisJdTMyIHJlc2VydmVkMVs2Nl07Cj4rfSAgX19wYWNrZWQ7Cj4rCj4raW50IGEg PSBzaXplb2Yoc3RydWN0IHJrdmRlYzJfcnBzKTsKPisKPitzdHJ1Y3Qgcmt2ZGVjMl9zcHNfcHBz IHsKPisJc3RydWN0IHJrdmRlYzJfc3BzIHNwczsKPisJc3RydWN0IHJrdmRlYzJfcHBzIHBwczsK Pit9ICBfX3BhY2tlZDsKPisKPisvKiBEYXRhIHN0cnVjdHVyZSBkZXNjcmliaW5nIGF1eGlsaWFy eSBidWZmZXIgZm9ybWF0LiAqLwo+K3N0cnVjdCBya3ZkZWMyX2gyNjRfcHJpdl90Ymwgewo+Kwl1 MzIgY2FiYWNfdGFibGVbOTI4XTsKPisJc3RydWN0IHJrdmRlYzJfaDI2NF9zY2FsaW5nX2xpc3Qg c2NhbGluZ19saXN0Owo+KwlzdHJ1Y3Qgcmt2ZGVjMl9zcHNfcHBzIHBhcmFtX3NldFsyNTZdOwo+ KwlzdHJ1Y3Qgcmt2ZGVjMl9ycHMgcnBzOwo+K307Cj4rCj4rc3RydWN0IHJrdmRlYzJfaDI2NF9y ZWZsaXN0cyB7Cj4rCXN0cnVjdCB2NGwyX2gyNjRfcmVmZXJlbmNlIHBbVjRMMl9IMjY0X1JFRl9M SVNUX0xFTl07Cj4rCXN0cnVjdCB2NGwyX2gyNjRfcmVmZXJlbmNlIGIwW1Y0TDJfSDI2NF9SRUZf TElTVF9MRU5dOwo+KwlzdHJ1Y3QgdjRsMl9oMjY0X3JlZmVyZW5jZSBiMVtWNEwyX0gyNjRfUkVG X0xJU1RfTEVOXTsKPit9Owo+Kwo+K3N0cnVjdCBya3ZkZWMyX2gyNjRfcnVuIHsKPisJc3RydWN0 IHJrdmRlYzJfcnVuCQkJCQliYXNlOwo+Kwljb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX2gyNjRfZGVj b2RlX3BhcmFtcwkJKmRlY29kZV9wYXJhbXM7Cj4rCWNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaDI2 NF9zcHMJCQkJKnNwczsKPisJY29uc3Qgc3RydWN0IHY0bDJfY3RybF9oMjY0X3BwcwkJCQkqcHBz Owo+Kwljb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX2gyNjRfc2NhbGluZ19tYXRyaXgJCSpzY2FsaW5n X21hdHJpeDsKPisJc3RydWN0IHZiMl9idWZmZXIgKnJlZl9idWZbVjRMMl9IMjY0X05VTV9EUEJf RU5UUklFU107Cj4rfTsKPisKPitzdHJ1Y3Qgcmt2ZGVjMl9oMjY0X2N0eCB7Cj4rCXN0cnVjdCBy a3ZkZWMyX2F1eF9idWYJCXByaXZfdGJsOwo+KwlzdHJ1Y3Qgcmt2ZGVjMl9oMjY0X3JlZmxpc3Rz CXJlZmxpc3RzOwo+KwlzdHJ1Y3Qgcmt2ZGVjMl9yZWdzX2gyNjQJcmVnczsKPit9Owo+Kwo+Ky8q Cj4rICogQ29uc3RhbnQgQ0FCQUMgdGFibGUuCj4rICovCj4rc3RhdGljIGNvbnN0IHUzMiBya3Zk ZWMyX2gyNjRfY2FiYWNfdGFibGVbOTI4XSA9IHsKPisJMHgzNjAyZjExNCwgMHhmMTE0NGEwMywg MHg0YTAzMzYwMiwgMHg2OGU5N2ZlNCwgMHgzNmZmMzVmYSwgMHgyMTE3MzMwNywKPisJMHgwMDE1 MDIxNywgMHgzMTAwMDkwMSwgMHgzOTA1NzZkYiwgMHg0MWY1NGVmMywgMHgzMTBjM2UwMSwgMHgz MjExNDlmYywKPisJMHgyYjA5NDAxMiwgMHg0MzFhMDAxZCwgMHg2ODA5NWExMCwgMHg2OGVjN2Zk MiwgMHg0ZWYzNDMwMSwgMHgzZTAxNDFmNSwKPisJMHg1ZmVmNTZmYSwgMHgyZDA5M2RmYSwgMHg1 MWZhNDVmZCwgMHgzNzA2NjBmNSwgMHg1NmZiNDMwNywgMHgzYTAwNTgwMiwKPisJMHg1ZWY2NGNm ZCwgMHg0NTA0MzYwNSwgMHg1ODAwNTFmZCwgMHg0YWZiNDNmOSwgMHg1MGZiNGFmYywgMHgzYTAx NDhmOSwKPisJMHgzZjAwMjkwMCwgMHgzZjAwM2YwMCwgMHg1NjA0NTNmNywgMHg0OGY5NjEwMCwg MHgzZTAzMjkwZCwgMHg0ZWZjMmQwMCwKPisJMHg3ZWU1NjBmZCwgMHg2NWU3NjJlNCwgMHg1MmU0 NDNlOSwgMHg1M2YwNWVlYywgMHg1YmViNmVlYSwgMHg1ZGYzNjZlZSwKPisJMHg1Y2Y5N2ZlMywg MHg2MGY5NTlmYiwgMHgyZWZkNmNmMywgMHgzOWZmNDFmZiwgMHg0YWZkNWRmNywgMHg1N2Y4NWNm NywKPisJMHgzNjA1N2VlOSwgMHgzYjA2M2MwNiwgMHgzMGZmNDUwNiwgMHg0NWZjNDQwMCwgMHg1 NWZlNThmOCwgMHg0YmZmNGVmYSwKPisJMHgzNjAyNGRmOSwgMHg0NGZkMzIwNSwgMHgyYTA2MzIw MSwgMHgzZjAxNTFmYywgMHg0MzAwNDZmYywgMHg0Y2ZlMzkwMiwKPisJMHg0MDA0MjMwYiwgMHgy MzBiM2QwMSwgMHgxODBjMTkxMiwgMHgyNDBkMWQwZCwgMHg0OWY5NWRmNiwgMHgyZTBkNDlmZSwK PisJMHg2NGY5MzEwOSwgMHgzNTAyMzUwOSwgMHgzZGZlMzUwNSwgMHgzODAwMzgwMCwgMHgzY2Zi M2ZmMywgMHgzOTA0M2VmZiwKPisJMHgzOTA0NDVmYSwgMHgzMzA0MjcwZSwgMHg0MDAzNDQwZCwg MHgzZjA5M2QwMSwgMHgyNzEwMzIwNywgMHgzNDA0MmMwNSwKPisJMHgzY2ZiMzAwYiwgMHgzYjAw M2JmZiwgMHgyYzA1MjExNiwgMHg0ZWZmMmIwZSwgMHg0NTA5M2MwMCwgMHgyODAyMWMwYiwKPisJ MHgzMTAwMmMwMywgMHgyYzAyMmUwMCwgMHgyZjAwMzMwMiwgMHgzZTAyMjcwNCwgMHgzNjAwMmUw NiwgMHgzYTAyMzYwMywKPisJMHgzMzA2M2YwNCwgMHgzNTA3MzkwNiwgMHgzNzA2MzQwNiwgMHgy NDBlMmQwYiwgMHg1MmZmMzUwOCwgMHg0ZWZkMzcwNywKPisJMHgxZjE2MmUwZiwgMHgwNzE5NTRm ZiwgMHgwMzFjZjkxZSwgMHgwMDIwMDQxYywgMHgwNjFlZmYyMiwgMHgwOTIwMDYxZSwKPisJMHgx YjFhMTMxZiwgMHgxNDI1MWUxYSwgMHg0NjExMjIxYywgMHgzYjA1NDMwMSwgMHgxZTEwNDMwOSwg MHgyMzEyMjAxMiwKPisJMHgxZjE4MWQxNiwgMHgyYjEyMjYxNywgMHgzZjBiMjkxNCwgMHg0MDA5 M2IwOSwgMHg1OWZlNWVmZiwgMHg0Y2ZhNmNmNywKPisJMHgyZDAwMmNmZSwgMHg0MGZkMzQwMCwg MHg0NmZjM2JmZSwgMHg1MmY4NGJmYywgMHg0ZGY3NjZlZiwgMHgyYTAwMTgwMywKPisJMHgzNzAw MzAwMCwgMHg0N2Y5M2JmYSwgMHg1N2Y1NTNmNCwgMHgzYTAxNzdlMiwgMHgyNGZmMWRmZCwgMHgy YjAyMjYwMSwKPisJMHgzYTAwMzdmYSwgMHg0YWZkNDAwMCwgMHg0NjAwNWFmNiwgMHgxZjA1MWRm YywgMHgzYjAxMmEwNywgMHg0OGZkM2FmZSwKPisJMHg2MWY1NTFmZCwgMHgwNTA4M2EwMCwgMHgx MjBlMGUwYSwgMHgyODAyMWIwZCwgMHg0NmZkM2EwMCwgMHg1NWY4NGZmYSwKPisJMHg2YWYzMDAw MCwgMHg1N2Y2NmFmMCwgMHg2ZWVlNzJlYiwgMHg2ZWVhNjJmMiwgMHg2N2VlNmFlYiwgMHg2Y2U5 NmJlYiwKPisJMHg2MGY2NzBlNiwgMHg1YmZiNWZmNCwgMHg1ZWVhNWRmNywgMHg0MzA5NTZmYiwg MHg1NWY2NTBmYywgMHgzYzA3NDZmZiwKPisJMHgzZDA1M2EwOSwgMHgzMjBmMzIwYywgMHgzNjEx MzExMiwgMHgyZTA3MjkwYSwgMHgzMTA3MzNmZiwgMHgyOTA5MzQwOCwKPisJMHgzNzAyMmYwNiwg MHgyYzBhMjkwZCwgMHgzNTA1MzIwNiwgMHgzZjA0MzEwZCwgMHg0NWZlNDAwNiwgMHg0NjA2M2Jm ZSwKPisJMHgxZjA5MmMwYSwgMHgzNTAzMmIwYywgMHgyNjBhMjIwZSwgMHgyODBkMzRmZCwgMHgy YzA3MjAxMSwgMHgzMjBkMjYwNywKPisJMHgyYjFhMzkwYSwgMHgwZTBiMGIwZSwgMHgwYjEyMGIw OSwgMHhmZTE3MDkxNSwgMHhmMTIwZjEyMCwgMHhlOTI3ZWIyMiwKPisJMHhlMTI5ZGYyYSwgMHhm NDI2ZTQyZSwgMHhlODJkMWQxNSwgMHhlNjMwZDMzNSwgMHhlZDJiZDU0MSwgMHgwOTFlZjYyNywK PisJMHgxYjE0MWExMiwgMHg1MmYyMzkwMCwgMHg2MWVkNGJmYiwgMHgwMDFiN2RkZCwgMHhmYzFm MDAxYywgMHgwODIyMDYxYiwKPisJMHgxNjE4MGExZSwgMHgyMDE2MTMyMSwgMHgyOTE1MWYxYSwg MHgyZjE3MmMxYSwgMHg0NzBlNDExMCwgMHgzZjA2M2MwOCwKPisJMHgxODE1NDExMSwgMHgxNzFh MTQxNywgMHgxNzFjMjAxYiwgMHgyODE3MTgxYywgMHgxZDFjMjAxOCwgMHgzOTEzMmExNywKPisJ MHgzZDE2MzUxNiwgMHgyODBjNTYwYiwgMHgzYjBlMzMwYiwgMHg0N2Y5NGZmYywgMHg0NmY3NDVm YiwgMHg0NGY2NDJmOCwKPisJMHg0NWY0NDllZCwgMHg0M2YxNDZmMCwgMHg0NmVkM2VlYywgMHg0 MWVhNDJmMCwgMHhmZTA5M2ZlYywgMHhmNzIxZjcxYSwKPisJMHhmZTI5ZjkyNywgMHgwOTMxMDMy ZCwgMHgzYjI0MWIyZCwgMHgyM2Y5NDJmYSwgMHgyZGY4MmFmOSwgMHgzOGY0MzBmYiwKPisJMHgz ZWZiM2NmYSwgMHg0Y2Y4NDJmOCwgMHg1MWZhNTVmYiwgMHg1MWY5NGRmNiwgMHg0OWVlNTBlZiwg MHg1M2Y2NGFmYywKPisJMHg0M2Y3NDdmNywgMHg0MmY4M2RmZiwgMHgzYjAwNDJmMiwgMHhmMzE1 M2IwMiwgMHhmOTI3ZjIyMSwgMHgwMjMzZmUyZSwKPisJMHgxMTNkMDYzYywgMHgzZTJhMjIzNywg MHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgzNjAyZjExNCwgMHhmMTE0NGEwMywKPisJMHg0YTAz MzYwMiwgMHg2OGU5N2ZlNCwgMHgzNmZmMzVmYSwgMHgxOTE2MzMwNywgMHgwMDEwMDAyMiwgMHgy OTA0MDlmZSwKPisJMHg0MTAyNzZlMywgMHg0ZmYzNDdmYSwgMHgzMjA5MzQwNSwgMHgzNjBhNDZm ZCwgMHgxNjEzMjIxYSwgMHgwMjM5MDAyOCwKPisJMHg0NTFhMjQyOSwgMHg2NWYxN2ZkMywgMHg0 N2ZhNGNmYywgMHgzNDA1NGZmMywgMHg1YWYzNDUwNiwgMHgyYjA4MzQwMCwKPisJMHg1MmZiNDVm ZSwgMHgzYjAyNjBmNiwgMHg1N2ZkNGIwMiwgMHgzODAxNjRmZCwgMHg1NWZhNGFmZCwgMHg1MWZk M2IwMCwKPisJMHg1ZmZiNTZmOSwgMHg0ZGZmNDJmZiwgMHg1NmZlNDYwMSwgMHgzZDAwNDhmYiwg MHgzZjAwMjkwMCwgMHgzZjAwM2YwMCwKPisJMHg1NjA0NTNmNywgMHg0OGY5NjEwMCwgMHgzZTAz MjkwZCwgMHgzMzA3MGYwZCwgMHg3ZmQ5NTAwMiwgMHg2MGVmNWJlZSwKPisJMHg2MmRkNTFlNiwg MHg2MWU5NjZlOCwgMHg2M2U4NzdlNSwgMHg2NmVlNmVlYiwgMHg1MDAwN2ZkYywgMHg1ZWY5NTlm YiwKPisJMHgyNzAwNWNmYywgMHg1NGYxNDEwMCwgMHg0OWZlN2ZkZCwgMHg1YmY3NjhmNCwgMHgz NzAzN2ZlMSwgMHgzNzA3MzgwNywKPisJMHgzNWZkM2QwOCwgMHg0YWY5NDQwMCwgMHg2N2YzNThm NywgMHg1OWY3NWJmMywgMHg0Y2Y4NWNmMiwgMHg2ZWU5NTdmNCwKPisJMHg0ZWY2NjllOCwgMHg2 M2VmNzBlYywgMHg3ZmJhN2ZiMiwgMHg3ZmQyN2ZjZSwgMHg0ZWZiNDJmYywgMHg0OGY4NDdmYywK PisJMHgzN2ZmM2IwMiwgMHg0YmZhNDZmOSwgMHg3N2RlNTlmOCwgMHgxNDIwNGJmZCwgMHg3ZmQ0 MTYxZSwgMHgzZGZiMzYwMCwKPisJMHgzY2ZmM2EwMCwgMHg0M2Y4M2RmZCwgMHg0YWYyNTRlNywg MHgzNDA1NDFmYiwgMHgzZDAwMzkwMiwgMHg0NmY1NDVmNywKPisJMHg0N2ZjMzcxMiwgMHgzZDA3 M2EwMCwgMHgxOTEyMjkwOSwgMHgyYjA1MjAwOSwgMHgyYzAwMmYwOSwgMHgyZTAyMzMwMCwKPisJ MHg0MmZjMjYxMywgMHgyYTBjMjYwZiwgMHg1OTAwMjIwOSwgMHgxYzBhMmQwNCwgMHhmNTIxMWYw YSwgMHgwZjEyZDUzNCwKPisJMHhlYTIzMDAxYywgMHgwMDIyZTcyNiwgMHhmNDIwZWUyNywgMHgw MDAwYTI2NiwgMHhmYzIxZjEzOCwgMHhmYjI1MGExZCwKPisJMHhmNzI3ZTMzMywgMHhjNjQ1ZGUz NCwgMHhmYjJjYzE0MywgMHhlMzM3MDcyMCwgMHgwMDAwMDEyMCwgMHhlNzIxMjQxYiwKPisJMHhl NDI0ZTIyMiwgMHhlNTI2ZTQyNiwgMHhmMDIzZWUyMiwgMHhmODIwZjIyMiwgMHgwMDIzZmEyNSwg MHgxMjFjMGExZSwKPisJMHgyOTFkMTkxYSwgMHg0ODAyNGIwMCwgMHgyMzBlNGQwOCwgMHgyMzEx MWYxMiwgMHgyZDExMWUxNSwgMHgyZDEyMmExNCwKPisJMHgzNjEwMWExYiwgMHgzODEwNDIwNywg MHg0MzBhNDkwYiwgMHg3MGU5NzRmNiwgMHgzZGY5NDdmMSwgMHg0MmZiMzUwMCwKPisJMHg1MGY3 NGRmNSwgMHg1N2Y2NTRmNywgMHg2NWViN2ZkZSwgMHgzNWZiMjdmZCwgMHg0YmY1M2RmOSwgMHg1 YmVmNGRmMSwKPisJMHg2ZmU3NmJlNywgMHg0Y2Y1N2FlNCwgMHgzNGY2MmNmNiwgMHgzYWY3Mzlm NiwgMHg0NWY5NDhmMCwgMHg0YWZiNDVmYywKPisJMHg0MjAyNTZmNywgMHgyMDAxMjJmNywgMHgz NDA1MWYwYiwgMHg0M2ZlMzdmZSwgMHg1OWY4NDkwMCwgMHgwNDA3MzQwMywKPisJMHgwODExMDgw YSwgMHgyNTAzMTMxMCwgMHg0OWZiM2RmZiwgMHg0ZWZjNDZmZiwgMHg3ZWViMDAwMCwgMHg2ZWVj N2NlOSwKPisJMHg3Y2U3N2VlNiwgMHg3OWU1NjllZiwgMHg2NmVmNzVlNSwgMHg3NGU1NzVlNiwg MHg1ZmY2N2FkZiwgMHg1ZmY4NjRmMiwKPisJMHg3MmU0NmZlZiwgMHg1MGZlNTlmYSwgMHg1NWY3 NTJmYywgMHg0OGZmNTFmOCwgMHg0MzAxNDAwNSwgMHg0NTAwMzgwOSwKPisJMHg0NTA3NDUwMSwg MHg0M2ZhNDVmOSwgMHg0MGZlNGRmMCwgMHg0M2ZhM2QwMiwgMHgzOTAyNDBmZCwgMHg0MmZkNDFm ZCwKPisJMHgzMzA5M2UwMCwgMHg0N2ZlNDJmZiwgMHg0NmZmNGJmZSwgMHgzYzBlNDhmNywgMHgy ZjAwMjUxMCwgMHgyNTBiMjMxMiwKPisJMHgyOTBhMjkwYywgMHgyOTBjMzAwMiwgMHgzYjAwMjkw ZCwgMHgyODEzMzIwMywgMHgzMjEyNDIwMywgMHhmYTEyZmExMywKPisJMHhmNDFhMDAwZSwgMHhl NzIxZjAxZiwgMHhlNDI1ZWEyMSwgMHhlMjJhZTIyNywgMHhkYzJkZDYyZiwgMHhlZjI5ZGUzMSwK PisJMHhiOTQ1MDkyMCwgMHhjMDQyYzEzZiwgMHhkOTM2YjY0ZCwgMHhmNjI5ZGQzNCwgMHhmZjI4 MDAyNCwgMHgxYTFjMGUxZSwKPisJMHgzNzBjMjUxNywgMHhkZjI1NDEwYiwgMHhkYjI4ZGMyNywg MHhkZjJlZTIyNiwgMHhlODI4ZTIyYSwgMHhmNDI2ZTMzMSwKPisJMHhmZDI2ZjYyOCwgMHgxNDFm ZmIyZSwgMHgyYzE5MWUxZCwgMHgzMTBiMzAwYywgMHgxNjE2MmQxYSwgMHgxNTFiMTYxNywKPisJ MHgxYzFhMTQyMSwgMHgyMjFiMTgxZSwgMHgyNzE5MmExMiwgMHg0NjBjMzIxMiwgMHg0NzBlMzYx NSwgMHgyMDE5NTMwYiwKPisJMHgzNjE1MzExNSwgMHg1MWZhNTVmYiwgMHg1MWY5NGRmNiwgMHg0 OWVlNTBlZiwgMHg1M2Y2NGFmYywgMHg0M2Y3NDdmNywKPisJMHg0MmY4M2RmZiwgMHgzYjAwNDJm MiwgMHhmNjExM2IwMiwgMHhmNzJhZjMyMCwgMHgwMDM1ZmIzMSwgMHgwYTQ0MDM0MCwKPisJMHgz OTJmMWI0MiwgMHgxODAwNDdmYiwgMHgyYWZlMjRmZiwgMHgzOWY3MzRmZSwgMHg0MWZjM2ZmYSwg MHg1MmY5NDNmYywKPisJMHg0Y2ZkNTFmZCwgMHg0ZWZhNDhmOSwgMHg0NGYyNDhmNCwgMHg0Y2Zh NDZmZCwgMHgzZWZiNDJmYiwgMHgzZGZjMzkwMCwKPisJMHgzNjAxM2NmNywgMHhmNjExM2EwMiwg MHhmNzJhZjMyMCwgMHgwMDM1ZmIzMSwgMHgwYTQ0MDM0MCwgMHgzOTJmMWI0MiwKPisJMHgwMDAw MDAwMCwgMHgwMDAwMDAwMCwgMHgzNjAyZjExNCwgMHhmMTE0NGEwMywgMHg0YTAzMzYwMiwgMHg2 OGU5N2ZlNCwKPisJMHgzNmZmMzVmYSwgMHgxMDFkMzMwNywgMHgwMDBlMDAxOSwgMHgzZWZkMzNm NiwgMHgxMDFhNjNlNSwgMHg2NmU4NTVmYywKPisJMHgzOTA2MzkwNSwgMHgzOTBlNDllZiwgMHgw YTE0MjgxNCwgMHgwMDM2MDAxZCwgMHg2MTBjMmEyNSwgMHg3NWVhN2ZlMCwKPisJMHg1NWZjNGFm ZSwgMHgzOTA1NjZlOCwgMHg1OGYyNWRmYSwgMHgzNzA0MmNmYSwgMHg2N2YxNTlmNSwgMHgzOTEz NzRlYiwKPisJMHg1NDA0M2ExNCwgMHgzZjAxNjAwNiwgMHg2YWYzNTVmYiwgMHg0YjA2M2YwNSwg MHg2NWZmNWFmZCwgMHg0ZmZjMzcwMywKPisJMHg2MWY0NGJmZSwgMHgzYzAxMzJmOSwgMHgzZjAw MjkwMCwgMHgzZjAwM2YwMCwgMHg1NjA0NTNmNywgMHg0OGY5NjEwMCwKPisJMHgzZTAzMjkwZCwg MHg1OGY3MjIwNywgMHg3ZmRjN2ZlYywgMHg1ZmYyNWJlZiwgMHg1NmU3NTRlNywgMHg1YmVmNTlm NCwKPisJMHg0Y2YyN2ZlMSwgMHg1YWYzNjdlZSwgMHg1MDBiN2ZkYiwgMHg1NDAyNGMwNSwgMHgz N2ZhNGUwNSwgMHg1M2YyM2QwNCwKPisJMHg0ZmZiN2ZkYiwgMHg1YmY1NjhmNSwgMHg0MTAwN2Zl MiwgMHg0ODAwNGZmZSwgMHgzOGZhNWNmYywgMHg0N2Y4NDQwMywKPisJMHg1NmZjNjJmMywgMHg1 MmZiNThmNCwgMHg0M2ZjNDhmZCwgMHg1OWYwNDhmOCwgMHgzYmZmNDVmNywgMHgzOTA0NDIwNSwK PisJMHg0N2ZlNDdmYywgMHg0YWZmM2EwMiwgMHg0NWZmMmNmYywgMHgzM2Y5M2UwMCwgMHgyYWZh MmZmYywgMHgzNWZhMjlmZCwKPisJMHg0ZWY3NGMwOCwgMHgzNDA5NTNmNSwgMHg1YWZiNDMwMCwg MHg0OGYxNDMwMSwgMHg1MGY4NGJmYiwgMHg0MGViNTNlYiwKPisJMHg0MGU3MWZmMywgMHg0YjA5 NWVlMywgMHg0YWY4M2YxMSwgMHgxYmZlMjNmYiwgMHg0MTAzNWIwZCwgMHg0ZDA4NDVmOSwKPisJ MHgzZTAzNDJmNiwgMHg1MWVjNDRmZCwgMHgwNzAxMWUwMCwgMHg0YWViMTdmZCwgMHg3Y2U5NDIx MCwgMHhlZTJjMjUxMSwKPisJMHg3ZmVhZGUzMiwgMHgyYTAwMjcwNCwgMHgxZDBiMjIwNywgMHgy NTA2MWYwOCwgMHgyODAzMmEwNywgMHgyYjBkMjEwOCwKPisJMHgyZjA0MjQwZCwgMHgzYTAyMzcw MywgMHgyYzA4M2MwNiwgMHgyYTBlMmMwYiwgMHgzODA0MzAwNywgMHgyNTBkMzQwNCwKPisJMHgz YTEzMzEwOSwgMHgyZDBjMzAwYSwgMHgyMTE0NDUwMCwgMHhlZTIzM2YwOCwgMHhmZDFjZTcyMSwg MHgwMDFiMGExOCwKPisJMHhkNDM0ZjIyMiwgMHgxMTEzZTgyNywgMHgxZDI0MTkxZiwgMHgwZjIy MjExOCwgMHg0OTE2MTQxZSwgMHgxZjEzMjIxNCwKPisJMHgxMDEzMmMxYiwgMHgyNDBmMjQwZiwg MHgxNTE5MWMxNSwgMHgwYzFmMTQxZSwgMHgyYTE4MTAxYiwgMHgzODBlNWQwMCwKPisJMHgyNjFh MzkwZiwgMHg3M2U4N2ZlOCwgMHgzZWY3NTJlYSwgMHgzYjAwMzUwMCwgMHg1OWYzNTVmMiwgMHg1 Y2Y1NWVmMywKPisJMHg2NGViN2ZlMywgMHg0M2Y0MzlmMiwgMHg0ZGY2NDdmNSwgMHg1OGYwNTVl YiwgMHg2MmYxNjhlOSwgMHg1MmY2N2ZkYiwKPisJMHgzZGY4MzBmOCwgMHg0NmY5NDJmOCwgMHg0 ZmY2NGJmMiwgMHg1Y2Y0NTNmNywgMHg0ZmZjNmNlZSwgMHg0YmYwNDVlYSwKPisJMHgzYTAxM2Fm ZSwgMHg1M2Y3NGVmMywgMHg2M2YzNTFmYywgMHgyNmZhNTFmMywgMHgzYWZhM2VmMywgMHg0OWYw M2JmZSwKPisJMHg1NmYzNGNmNiwgMHg1N2Y2NTNmNywgMHg3ZmVhMDAwMCwgMHg3OGU3N2ZlNywg MHg3MmVkN2ZlNSwgMHg3NmU3NzVlOSwKPisJMHg3MWU4NzVlNiwgMHg3OGUxNzZlNCwgMHg1ZWY2 N2NkYiwgMHg2M2Y2NjZmMSwgMHg3ZmNlNmFmMywgMHgzOTExNWNmYiwKPisJMHg1ZWYzNTZmYiwg MHg0ZGZlNWJmNCwgMHg0OWZmNDcwMCwgMHg1MWY5NDAwNCwgMHgzOTBmNDAwNSwgMHg0NDAwNDMw MSwKPisJMHg0NDAxNDNmNiwgMHg0MDAyNGQwMCwgMHg0ZWZiNDQwMCwgMHgzYjA1MzcwNywgMHgz NjBlNDEwMiwgMHgzYzA1MmMwZiwKPisJMHg0Y2ZlNDYwMiwgMHg0NjBjNTZlZSwgMHg0NmY0NDAw NSwgMHgzODA1MzcwYiwgMHg0MTAyNDUwMCwgMHgzNjA1NGFmYSwKPisJMHg0Y2ZhMzYwNywgMHg0 ZGZlNTJmNSwgMHgyYTE5NGRmZSwgMHhmNzEwZjMxMSwgMHhlYjFiZjQxMSwgMHhkODI5ZTIyNSwK PisJMHhkMTMwZDcyYSwgMHhkODJlZTAyNywgMHhkNzJlY2QzNCwgMHhlZDJiZDkzNCwgMHhjOTNk MGIyMCwgMHhjZTNlZDIzOCwKPisJMHhlYzJkYmQ1MSwgMHgwZjFjZmUyMywgMHgwMTI3MDEyMiwg MHgyNjE0MTExZSwgMHgzNjBmMmQxMiwgMHhmMDI0NGYwMCwKPisJMHhlZjI1ZjIyNSwgMHgwZjIy MDEyMCwgMHgxOTE4MGYxZCwgMHgxMDFmMTYyMiwgMHgxYzFmMTIyMywgMHgxYzI0MjkyMSwKPisJ MHgzZTE1MmYxYiwgMHgxYTEzMWYxMiwgMHgxNzE4MTgyNCwgMHgxZTE4MTAxYiwgMHgyOTE2MWQx ZiwgMHgzYzEwMmExNiwKPisJMHgzYzBlMzQwZiwgMHg3YmYwNGUwMywgMHgzODE2MzUxNSwgMHgy MTE1M2QxOSwgMHgzZDExMzIxMywgMHg0YWY4NGVmZCwKPisJMHg0OGY2NDhmNywgMHg0N2Y0NGJl ZSwgMHg0NmZiM2ZmNSwgMHg0OGYyNGJlZiwgMHgzNWY4NDNmMCwgMHgzNGY3M2JmMiwKPisJMHhm ZTA5NDRmNSwgMHhmYzFmZjYxZSwgMHgwNzIxZmYyMSwgMHgxNzI1MGMxZiwgMHg0MDE0MjYxZiwg MHgyNWY5NDdmNywKPisJMHgzMWY1MmNmOCwgMHgzYmY0MzhmNiwgMHg0M2Y3M2ZmOCwgMHg0ZmY2 NDRmYSwgMHg0YWY4NGVmZCwgMHg0OGY2NDhmNywKPisJMHg0N2Y0NGJlZSwgMHg0NmZiM2ZmNSwg MHg0OGYyNGJlZiwgMHgzNWY4NDNmMCwgMHgzNGY3M2JmMiwgMHhmZTA5NDRmNSwKPisJMHhmYzFm ZjYxZSwgMHgwNzIxZmYyMSwgMHgxNzI1MGMxZiwgMHg0MDE0MjYxZiwgMHgwMDAwMDAwMCwgMHgw MDAwMDAwMCwKPisJMHgzNjAyZjExNCwgMHhmMTE0NGEwMywgMHg0YTAzMzYwMiwgMHg2OGU5N2Zl NCwgMHgzNmZmMzVmYSwgMHgwMDAwMzMwNywKPisJMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgw MDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKPisJMHgwMDAwMDAw MCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAw MDAwMCwKPisJMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwg MHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKPisJMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAw MDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKPisJMHgzZjAwMjkwMCwg MHgzZjAwM2YwMCwgMHg1NjA0NTNmNywgMHg0OGY5NjEwMCwgMHgzZTAzMjkwZCwgMHgzNzAxMGIw MCwKPisJMHg3ZmVmNDUwMCwgMHg1MjAwNjZmMywgMHg2YmViNGFmOSwgMHg3ZmUxN2ZlNSwgMHg1 ZmVlN2ZlOCwgMHg3MmViN2ZlNSwKPisJMHg3YmVmN2ZlMiwgMHg3YWYwNzNmNCwgMHgzZmY0NzNm NSwgMHg1NGYxNDRmZSwgMHg0NmZkNjhmMywgMHg1YWY2NWRmOCwKPisJMHg0YWZmN2ZlMiwgMHg1 YmY5NjFmYSwgMHgzOGZjN2ZlYywgMHg0Y2Y5NTJmYiwgMHg1ZGY5N2RlYSwgMHg0ZGZkNTdmNSwK PisJMHgzZmZjNDdmYiwgMHg1NGY0NDRmYywgMHg0MWY5M2VmOSwgMHgzODA1M2QwOCwgMHg0MDAx NDJmZSwgMHg0ZWZlM2QwMCwKPisJMHgzNDA3MzIwMSwgMHgyYzAwMjMwYSwgMHgyZDAxMjYwYiwg MHgyYzA1MmUwMCwgMHgzMzAxMTExZiwgMHgxMzFjMzIwNywKPisJMHgzZTBlMjExMCwgMHg2NGYx NmNmMywgMHg1YmYzNjVmMywgMHg1OGY2NWVmNCwgMHg1NmY2NTRmMCwgMHg1N2YzNTNmOSwKPisJ MHg0NjAxNWVlZCwgMHg0YWZiNDgwMCwgMHg2NmY4M2IxMiwgMHg1ZjAwNjRmMSwgMHg0ODAyNGJm YywgMHg0N2ZkNGJmNSwKPisJMHg0NWYzMmUwZiwgMHg0MTAwM2UwMCwgMHg0OGYxMjUxNSwgMHgz NjEwMzkwOSwgMHg0ODBjM2UwMCwgMHgwOTBmMDAxOCwKPisJMHgxMjBkMTkwOCwgMHgxMzBkMDkw ZiwgMHgxMjBjMjUwYSwgMHgyMTE0MWQwNiwgMHgyZDA0MWUwZiwgMHgzZTAwM2EwMSwKPisJMHgy NjBjM2QwNywgMHgyNzBmMmQwYiwgMHgyYzBkMmEwYiwgMHgyOTBjMmQxMCwgMHgyMjFlMzEwYSwg MHgzNzBhMmExMiwKPisJMHgyZTExMzMxMSwgMHhlZDFhNTkwMCwgMHhlZjFhZWYxNiwgMHhlYzFj ZTcxZSwgMHhlNTI1ZTkyMSwgMHhlNDI4ZTkyMSwKPisJMHhmNTIxZWYyNiwgMHhmYTI5ZjEyOCwg MHgxMTI5MDEyNiwgMHgwMzFiZmExZSwgMHhmMDI1MTYxYSwgMHhmODI2ZmMyMywKPisJMHgwMzI1 ZmQyNiwgMHgwMDJhMDUyNiwgMHgxNjI3MTAyMywgMHgyNTFiMzAwZSwgMHg0NDBjM2MxNSwgMHg0 N2ZkNjEwMiwKPisJMHgzMmZiMmFmYSwgMHgzZWZlMzZmZCwgMHgzZjAxM2EwMCwgMHg0YWZmNDhm ZSwgMHg0M2ZiNWJmNywgMHgyN2ZkMWJmYiwKPisJMHgyZTAwMmNmZSwgMHg0NGY4NDBmMCwgMHg0 ZGZhNGVmNiwgMHg1Y2Y0NTZmNiwgMHgzY2Y2MzdmMSwgMHg0MWZjM2VmYSwKPisJMHg0Y2Y4NDlm NCwgMHg1OGY3NTBmOSwgMHg2MWY1NmVlZiwgMHg0ZmY1NTRlYywgMHg0YWZjNDlmYSwgMHg2MGYz NTZmMywKPisJMHg3NWVkNjFmNSwgMHgyMWZiNGVmOCwgMHgzNWZlMzBmYywgMHg0N2YzM2VmZCwg MHg1NmY0NGZmNiwgMHg2MWYyNWFmMywKPisJMHg1ZGZhMDAwMCwgMHg0ZmY4NTRmYSwgMHg0N2Zm NDIwMCwgMHgzY2ZlM2UwMCwgMHg0YmZiM2JmZSwgMHgzYWZjM2VmZCwKPisJMHg0ZmZmNDJmNywg MHg0NDAzNDcwMCwgMHgzZWY5MmMwYSwgMHgyODBlMjQwZiwgMHgxZDBjMWIxMCwgMHgyNDE0MmMw MSwKPisJMHgyYTA1MjAxMiwgMHgzZTBhMzAwMSwgMHg0MDA5MmUxMSwgMHg2MWY1NjhmNCwgMHg1 OGY5NjBmMCwgMHg1NWY5NTVmOCwKPisJMHg1OGYzNTVmNywgMHg0ZGZkNDIwNCwgMHg0Y2ZhNGNm ZCwgMHg0Y2ZmM2EwYSwgMHg2M2Y5NTNmZiwgMHg1ZjAyNWZmMiwKPisJMHg0YWZiNGMwMCwgMHg0 YmY1NDYwMCwgMHg0MTAwNDQwMSwgMHgzZTAzNDlmMiwgMHg0NGZmM2UwNCwgMHgzNzBiNGJmMywK PisJMHg0NjBjNDAwNSwgMHgxMzA2MDYwZiwgMHgwZTBjMTAwNywgMHgwYjBkMGQxMiwgMHgxMDBm MGYwZCwgMHgxNzBkMTcwYywKPisJMHgxYTBlMTQwZiwgMHgyODExMmMwZSwgMHgxMTE4MmYxMSwg MHgxNjE5MTUxNSwgMHgxZDE2MWIxZiwgMHgzMjBlMjMxMywKPisJMHgzZjA3MzkwYSwgMHg1MmZj NGRmZSwgMHg0NTA5NWVmZCwgMHhkZDI0NmRmNCwgMHhlNjIwZGUyNCwgMHhlMDJjZTIyNSwKPisJ MHhmMTIyZWUyMiwgMHhmOTIxZjEyOCwgMHgwMDIxZmIyMywgMHgwZDIxMDIyNiwgMHgzYTBkMjMx NywgMHgwMDFhZmQxZCwKPisJMHhmOTFmMWUxNiwgMHhmZDIyZjEyMywgMHhmZjI0MDMyMiwgMHgw YjIwMDUyMiwgMHgwYzIyMDUyMywgMHgxZDFlMGIyNywKPisJMHgyNzFkMWEyMiwgMHgxNTFmNDIx MywgMHgzMjE5MWYxZiwgMHg3MGVjNzhlZiwgMHg1NWY1NzJlZSwgMHg1OWYyNWNmMSwKPisJMHg1 MWYxNDdlNiwgMHg0NDAwNTBmMiwgMHgzOGU4NDZmMiwgMHgzMmU4NDRlOSwgMHhmMzE3NGFmNSwg MHhmMTI4ZjMxYSwKPisJMHgwMzJjZjIzMSwgMHgyMjJjMDYyZCwgMHg1MjEzMzYyMSwgMHgxN2Zm NGJmZCwgMHgyYjAxMjIwMSwgMHgzN2ZlMzYwMCwKPisJMHg0MDAxM2QwMCwgMHg1Y2Y3NDQwMCwg MHg2MWYzNmFmMiwgMHg1YWY0NWFmMSwgMHg0OWY2NThlZSwgMHg1NmYyNGZmNywKPisJMHg0NmY2 NDlmNiwgMHg0MmZiNDVmNiwgMHgzYWZiNDBmNywgMHhmNjE1M2IwMiwgMHhmODFjZjUxOCwgMHgw MzFkZmYxYywKPisJMHgxNDIzMDkxZCwgMHg0MzBlMjQxZCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAw MAo+K307Cj4rCj4rc3RhdGljIHZvaWQgYXNzZW1ibGVfaHdfcHBzKHN0cnVjdCBya3ZkZWMyX2N0 eCAqY3R4LAo+KwkJCSAgICBzdHJ1Y3Qgcmt2ZGVjMl9oMjY0X3J1biAqcnVuKQo+K3sKPisJc3Ry dWN0IHJrdmRlYzJfaDI2NF9jdHggKmgyNjRfY3R4ID0gY3R4LT5wcml2Owo+Kwljb25zdCBzdHJ1 Y3QgdjRsMl9jdHJsX2gyNjRfc3BzICpzcHMgPSBydW4tPnNwczsKPisJY29uc3Qgc3RydWN0IHY0 bDJfY3RybF9oMjY0X3BwcyAqcHBzID0gcnVuLT5wcHM7Cj4rCWNvbnN0IHN0cnVjdCB2NGwyX2N0 cmxfaDI2NF9kZWNvZGVfcGFyYW1zICpkZWNfcGFyYW1zID0gcnVuLT5kZWNvZGVfcGFyYW1zOwo+ Kwljb25zdCBzdHJ1Y3QgdjRsMl9oMjY0X2RwYl9lbnRyeSAqZHBiID0gZGVjX3BhcmFtcy0+ZHBi Owo+KwlzdHJ1Y3Qgcmt2ZGVjMl9oMjY0X3ByaXZfdGJsICpwcml2X3RibCA9IGgyNjRfY3R4LT5w cml2X3RibC5jcHU7Cj4rCXN0cnVjdCBya3ZkZWMyX3Nwc19wcHMgKmh3X3BzOwo+KwlkbWFfYWRk cl90IHNjYWxpbmdfbGlzdF9hZGRyZXNzOwo+Kwl1MzIgc2NhbGluZ19kaXN0YW5jZTsKPisJdTMy IGk7Cj4rCj4rCS8qCj4rCSAqIEhXIHJlYWQgdGhlIFNQUy9QUFMgaW5mb3JtYXRpb24gZnJvbSBQ UFMgcGFja2V0IGluZGV4IGJ5IFBQUyBpZC4KPisJICogb2Zmc2V0IGZyb20gdGhlIGJhc2UgY2Fu IGJlIGNhbGN1bGF0ZWQgYnkgUFBTX2lkICogMzIgKHNpemUgcGVyIFBQUwo+KwkgKiBwYWNrZXQg dW5pdCkuIHNvIHRoZSBkcml2ZXIgY29weSBTUFMvUFBTIGluZm9ybWF0aW9uIHRvIHRoZSBleGFj dCBQUFMKPisJICogcGFja2V0IHVuaXQgZm9yIEhXIGFjY2Vzc2luZy4KPisJICovCj4rCWh3X3Bz ID0gJnByaXZfdGJsLT5wYXJhbV9zZXRbcHBzLT5waWNfcGFyYW1ldGVyX3NldF9pZF07Cj4rCW1l bXNldChod19wcywgMCwgc2l6ZW9mKCpod19wcykpOwo+Kwo+KwkvKiB3cml0ZSBzcHMgKi8KPisJ aHdfcHMtPnNwcy5zZXFfcGFyYW1ldGVyX3NldF9pZCA9IDB4ZjsKPisJaHdfcHMtPnNwcy5wcm9m aWxlX2lkYyA9IDB4ZmY7Cj4rCWh3X3BzLT5zcHMuY29uc3RyYWludF9zZXQzX2ZsYWcgPSAxOwo+ Kwlod19wcy0+c3BzLmNocm9tYV9mb3JtYXRfaWRjID0gc3BzLT5jaHJvbWFfZm9ybWF0X2lkYzsK PisJaHdfcHMtPnNwcy5iaXRfZGVwdGhfbHVtYSA9IHNwcy0+Yml0X2RlcHRoX2x1bWFfbWludXM4 Owo+Kwlod19wcy0+c3BzLmJpdF9kZXB0aF9jaHJvbWEgPSBzcHMtPmJpdF9kZXB0aF9jaHJvbWFf bWludXM4Owo+Kwlod19wcy0+c3BzLnFwcHJpbWVfeV96ZXJvX3RyYW5zZm9ybV9ieXBhc3NfZmxh ZyA9IDA7Cj4rCWh3X3BzLT5zcHMubG9nMl9tYXhfZnJhbWVfbnVtX21pbnVzNCA9IHNwcy0+bG9n Ml9tYXhfZnJhbWVfbnVtX21pbnVzNDsKPisJaHdfcHMtPnNwcy5tYXhfbnVtX3JlZl9mcmFtZXMg PSBzcHMtPm1heF9udW1fcmVmX2ZyYW1lczsKPisJaHdfcHMtPnNwcy5waWNfb3JkZXJfY250X3R5 cGUgPSBzcHMtPnBpY19vcmRlcl9jbnRfdHlwZTsKPisJaHdfcHMtPnNwcy5sb2cyX21heF9waWNf b3JkZXJfY250X2xzYl9taW51czQgPQo+KwkJc3BzLT5sb2cyX21heF9waWNfb3JkZXJfY250X2xz Yl9taW51czQ7Cj4rCWh3X3BzLT5zcHMuZGVsdGFfcGljX29yZGVyX2Fsd2F5c196ZXJvX2ZsYWcg PQo+KwkJISEoc3BzLT5mbGFncyAmIFY0TDJfSDI2NF9TUFNfRkxBR19ERUxUQV9QSUNfT1JERVJf QUxXQVlTX1pFUk8pOwo+Kwlod19wcy0+c3BzLm12Y19leHRlbnNpb25fZW5hYmxlID0gMTsKPisJ aHdfcHMtPnNwcy5udW1fdmlld3MgPSAxOwo+Kwo+KwkvKgo+KwkgKiBVc2UgdGhlIFNQUyB2YWx1 ZXMgc2luY2UgdGhleSBhcmUgYWxyZWFkeSBpbiBtYWNyb2Jsb2Nrcwo+KwkgKiBkaW1lbnNpb25z LCBoZWlnaHQgY2FuIGJlIGZpZWxkIGhlaWdodCAoaGFsdmVkKSBpZgo+KwkgKiBWNEwyX0gyNjRf U1BTX0ZMQUdfRlJBTUVfTUJTX09OTFkgaXMgbm90IHNldCBhbmQgYWxzbyBpdCBhbGxvd3MKPisJ ICogZGVjb2Rpbmcgc21hbGxlciBpbWFnZXMgaW50byBsYXJnZXIgYWxsb2NhdGlvbiB3aGljaCBj YW4gYmUgdXNlZAo+KwkgKiB0byBpbXBsZW1lbnRpbmcgU1ZDIHNwYXRpYWwgbGF5ZXIgc3VwcG9y dC4KPisJICovCj4rCWh3X3BzLT5zcHMucGljX3dpZHRoX2luX21icyA9IHNwcy0+cGljX3dpZHRo X2luX21ic19taW51czEgKyAxOwo+Kwlod19wcy0+c3BzLnBpY19oZWlnaHRfaW5fbWJzID0gc3Bz LT5waWNfaGVpZ2h0X2luX21hcF91bml0c19taW51czEgKyAxOwo+Kwlod19wcy0+c3BzLmZyYW1l X21ic19vbmx5X2ZsYWcgPQo+KwkJISEoc3BzLT5mbGFncyAmIFY0TDJfSDI2NF9TUFNfRkxBR19G UkFNRV9NQlNfT05MWSk7Cj4rCWh3X3BzLT5zcHMubWJfYWRhcHRpdmVfZnJhbWVfZmllbGRfZmxh ZyA9Cj4rCQkhIShzcHMtPmZsYWdzICYgVjRMMl9IMjY0X1NQU19GTEFHX01CX0FEQVBUSVZFX0ZS QU1FX0ZJRUxEKTsKPisJaHdfcHMtPnNwcy5kaXJlY3RfOHg4X2luZmVyZW5jZV9mbGFnID0KPisJ CSEhKHNwcy0+ZmxhZ3MgJiBWNEwyX0gyNjRfU1BTX0ZMQUdfRElSRUNUXzhYOF9JTkZFUkVOQ0Up Owo+Kwo+KwkvKiB3cml0ZSBwcHMgKi8KPisJaHdfcHMtPnBwcy5waWNfcGFyYW1ldGVyX3NldF9p ZCA9IDB4ZmY7Cj4rCWh3X3BzLT5wcHMucHBzX3NlcV9wYXJhbWV0ZXJfc2V0X2lkID0gMHgxZjsK PisJaHdfcHMtPnBwcy5lbnRyb3B5X2NvZGluZ19tb2RlX2ZsYWcgPQo+KwkJISEocHBzLT5mbGFn cyAmIFY0TDJfSDI2NF9QUFNfRkxBR19FTlRST1BZX0NPRElOR19NT0RFKTsKPisJaHdfcHMtPnBw cy5ib3R0b21fZmllbGRfcGljX29yZGVyX2luX2ZyYW1lX3ByZXNlbnRfZmxhZyA9Cj4rCQkhIShw cHMtPmZsYWdzICYgVjRMMl9IMjY0X1BQU19GTEFHX0JPVFRPTV9GSUVMRF9QSUNfT1JERVJfSU5f RlJBTUVfUFJFU0VOVCk7Cj4rCWh3X3BzLT5wcHMubnVtX3JlZl9pZHhfbDBfZGVmYXVsdF9hY3Rp dmVfbWludXMxID0KPisJCXBwcy0+bnVtX3JlZl9pZHhfbDBfZGVmYXVsdF9hY3RpdmVfbWludXMx Owo+Kwlod19wcy0+cHBzLm51bV9yZWZfaWR4X2wxX2RlZmF1bHRfYWN0aXZlX21pbnVzMSA9Cj4r CQlwcHMtPm51bV9yZWZfaWR4X2wxX2RlZmF1bHRfYWN0aXZlX21pbnVzMTsKPisJaHdfcHMtPnBw cy53ZWlnaHRlZF9wcmVkX2ZsYWcgPQo+KwkJISEocHBzLT5mbGFncyAmIFY0TDJfSDI2NF9QUFNf RkxBR19XRUlHSFRFRF9QUkVEKTsKPisJaHdfcHMtPnBwcy53ZWlnaHRlZF9iaXByZWRfaWRjID0g cHBzLT53ZWlnaHRlZF9iaXByZWRfaWRjOwo+Kwlod19wcy0+cHBzLnBpY19pbml0X3FwX21pbnVz MjYgPSBwcHMtPnBpY19pbml0X3FwX21pbnVzMjY7Cj4rCWh3X3BzLT5wcHMucGljX2luaXRfcXNf bWludXMyNiA9IHBwcy0+cGljX2luaXRfcXNfbWludXMyNjsKPisJaHdfcHMtPnBwcy5jaHJvbWFf cXBfaW5kZXhfb2Zmc2V0ID0gcHBzLT5jaHJvbWFfcXBfaW5kZXhfb2Zmc2V0Owo+Kwlod19wcy0+ cHBzLmRlYmxvY2tpbmdfZmlsdGVyX2NvbnRyb2xfcHJlc2VudF9mbGFnID0KPisJCSEhKHBwcy0+ ZmxhZ3MgJiBWNEwyX0gyNjRfUFBTX0ZMQUdfREVCTE9DS0lOR19GSUxURVJfQ09OVFJPTF9QUkVT RU5UKTsKPisJaHdfcHMtPnBwcy5jb25zdHJhaW5lZF9pbnRyYV9wcmVkX2ZsYWcgPQo+KwkJISEo cHBzLT5mbGFncyAmIFY0TDJfSDI2NF9QUFNfRkxBR19DT05TVFJBSU5FRF9JTlRSQV9QUkVEKTsK PisJaHdfcHMtPnBwcy5yZWR1bmRhbnRfcGljX2NudF9wcmVzZW50ID0KPisJCSEhKHBwcy0+Zmxh Z3MgJiBWNEwyX0gyNjRfUFBTX0ZMQUdfUkVEVU5EQU5UX1BJQ19DTlRfUFJFU0VOVCk7Cj4rCWh3 X3BzLT5wcHMudHJhbnNmb3JtXzh4OF9tb2RlX2ZsYWcgPQo+KwkJISEocHBzLT5mbGFncyAmIFY0 TDJfSDI2NF9QUFNfRkxBR19UUkFOU0ZPUk1fOFg4X01PREUpOwo+Kwlod19wcy0+cHBzLnNlY29u ZF9jaHJvbWFfcXBfaW5kZXhfb2Zmc2V0ID0gcHBzLT5zZWNvbmRfY2hyb21hX3FwX2luZGV4X29m ZnNldDsKPisJaHdfcHMtPnBwcy5zY2FsaW5nX2xpc3RfZW5hYmxlX2ZsYWcgPQo+KwkJISEocHBz LT5mbGFncyAmIFY0TDJfSDI2NF9QUFNfRkxBR19TQ0FMSU5HX01BVFJJWF9QUkVTRU5UKTsKPisK PisJLyoKPisJICogVG8gYmUgb24gdGhlIHNhZmUgc2lkZSwgcHJvZ3JhbSB0aGUgc2NhbGluZyBt YXRyaXggYWRkcmVzcwo+KwkgKgo+KwkgKiBXaXRoIHRoaXMgc2V0IGhlcmUsCj4rCSAqICBSS1ZE RUNfU1dSRUcxMl9TRU5DT0RBUllfRU46c3dfc2Nhbmxpc3RfYWRkcl92YWxpZF9lbgo+KwkgKiBj YW4gc3RheSBhdCAwCj4rCSAqLwo+KwlzY2FsaW5nX2Rpc3RhbmNlID0gb2Zmc2V0b2Yoc3RydWN0 IHJrdmRlYzJfaDI2NF9wcml2X3RibCwgc2NhbGluZ19saXN0KTsKPisJc2NhbGluZ19saXN0X2Fk ZHJlc3MgPSBoMjY0X2N0eC0+cHJpdl90YmwuZG1hICsgc2NhbGluZ19kaXN0YW5jZTsKPisJaHdf cHMtPnBwcy5zY2FsaW5nX2xpc3RfYWRkcmVzcyA9IHNjYWxpbmdfbGlzdF9hZGRyZXNzOwo+Kwo+ Kwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShkZWNfcGFyYW1zLT5kcGIpOyBpKyspIHsKPisJ CWlmIChkcGJbaV0uZmxhZ3MgJiBWNEwyX0gyNjRfRFBCX0VOVFJZX0ZMQUdfTE9OR19URVJNKQo+ KwkJCWh3X3BzLT5wcHMuaXNfbG9uZ3Rlcm0gfD0gKDEgPDwgaSk7Cj4rCX0KPit9Cj4rCj4rc3Rh dGljIHZvaWQgbG9va3VwX3JlZl9idWZfaWR4KHN0cnVjdCBya3ZkZWMyX2N0eCAqY3R4LAo+KwkJ CSAgICAgICBzdHJ1Y3Qgcmt2ZGVjMl9oMjY0X3J1biAqcnVuKQo+K3sKPisJY29uc3Qgc3RydWN0 IHY0bDJfY3RybF9oMjY0X2RlY29kZV9wYXJhbXMgKmRlY19wYXJhbXMgPSBydW4tPmRlY29kZV9w YXJhbXM7Cj4rCXUzMiBpOwo+Kwo+Kwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShkZWNfcGFy YW1zLT5kcGIpOyBpKyspIHsKPisJCXN0cnVjdCB2NGwyX20ybV9jdHggKm0ybV9jdHggPSBjdHgt PmZoLm0ybV9jdHg7Cj4rCQljb25zdCBzdHJ1Y3QgdjRsMl9oMjY0X2RwYl9lbnRyeSAqZHBiID0g cnVuLT5kZWNvZGVfcGFyYW1zLT5kcGI7Cj4rCQlzdHJ1Y3QgdmIyX3F1ZXVlICpjYXBfcSA9ICZt Mm1fY3R4LT5jYXBfcV9jdHgucTsKPisJCXN0cnVjdCB2YjJfYnVmZmVyICpidWYgPSBOVUxMOwo+ Kwo+KwkJaWYgKGRwYltpXS5mbGFncyAmIFY0TDJfSDI2NF9EUEJfRU5UUllfRkxBR19BQ1RJVkUp IHsKPisJCQlidWYgPSB2YjJfZmluZF9idWZmZXIoY2FwX3EsIGRwYltpXS5yZWZlcmVuY2VfdHMp Owo+KwkJCWlmICghYnVmKSB7Cj4rCQkJCWRldl9kYmcoY3R4LT5kZXYtPmRldiwgIk5vIGJ1ZmZl ciBmb3IgcmVmZXJlbmNlX3RzICVsbHUiLAo+KwkJCQkJZHBiW2ldLnJlZmVyZW5jZV90cyk7Cj4r CQkJfQo+KwkJfQo+Kwo+KwkJcnVuLT5yZWZfYnVmW2ldID0gYnVmOwo+Kwl9Cj4rfQo+Kwo+K3N0 YXRpYyB2b2lkIHNldF9kcGJfaW5mbyhzdHJ1Y3Qgcmt2ZGVjMl9ycHNfZW50cnkgKmVudHJpZXMs Cj4rCQkJIHU4IHJlZmxpc3QsCj4rCQkJIHU4IHJlZm51bSwKPisJCQkgdTggaW5mbywKPisJCQkg Ym9vbCBib3R0b20pCj4rewo+KwlzdHJ1Y3Qgcmt2ZGVjMl9ycHNfZW50cnkgKmVudHJ5ID0gJmVu dHJpZXNbKHJlZmxpc3QgKiA0KSArIHJlZm51bSAvIDhdOwo+Kwl1OCBpZHggPSByZWZudW0gJSA4 Owo+Kwo+Kwlzd2l0Y2ggKGlkeCkgewo+KwljYXNlIDA6Cj4rCQllbnRyeS0+ZHBiX2luZm8wID0g aW5mbzsKPisJCWVudHJ5LT5ib3R0b21fZmxhZzAgPSBib3R0b207Cj4rCQlicmVhazsKPisJY2Fz ZSAxOgo+KwkJZW50cnktPmRwYl9pbmZvMSA9IGluZm87Cj4rCQllbnRyeS0+Ym90dG9tX2ZsYWcx ID0gYm90dG9tOwo+KwkJYnJlYWs7Cj4rCWNhc2UgMjoKPisJCWVudHJ5LT5kcGJfaW5mbzIgPSBp bmZvOwo+KwkJZW50cnktPmJvdHRvbV9mbGFnMiA9IGJvdHRvbTsKPisJCWJyZWFrOwo+KwljYXNl IDM6Cj4rCQllbnRyeS0+ZHBiX2luZm8zID0gaW5mbzsKPisJCWVudHJ5LT5ib3R0b21fZmxhZzMg PSBib3R0b207Cj4rCQlicmVhazsKPisJY2FzZSA0Ogo+KwkJZW50cnktPmRwYl9pbmZvNCA9IGlu Zm87Cj4rCQllbnRyeS0+Ym90dG9tX2ZsYWc0ID0gYm90dG9tOwo+KwkJYnJlYWs7Cj4rCWNhc2Ug NToKPisJCWVudHJ5LT5kcGJfaW5mbzUgPSBpbmZvOwo+KwkJZW50cnktPmJvdHRvbV9mbGFnNSA9 IGJvdHRvbTsKPisJCWJyZWFrOwo+KwljYXNlIDY6Cj4rCQllbnRyeS0+ZHBiX2luZm82ID0gaW5m bzsKPisJCWVudHJ5LT5ib3R0b21fZmxhZzYgPSBib3R0b207Cj4rCQlicmVhazsKPisJY2FzZSA3 Ogo+KwkJZW50cnktPmRwYl9pbmZvNyA9IGluZm87Cj4rCQllbnRyeS0+Ym90dG9tX2ZsYWc3ID0g Ym90dG9tOwo+KwkJYnJlYWs7Cj4rCX0KPit9Cj4rCj4rc3RhdGljIHZvaWQgYXNzZW1ibGVfaHdf cnBzKHN0cnVjdCBya3ZkZWMyX2N0eCAqY3R4LAo+KwkJCSAgICBzdHJ1Y3QgdjRsMl9oMjY0X3Jl Zmxpc3RfYnVpbGRlciAqYnVpbGRlciwKPisJCQkgICAgc3RydWN0IHJrdmRlYzJfaDI2NF9ydW4g KnJ1bikKPit7Cj4rCWNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaDI2NF9kZWNvZGVfcGFyYW1zICpk ZWNfcGFyYW1zID0gcnVuLT5kZWNvZGVfcGFyYW1zOwo+Kwljb25zdCBzdHJ1Y3QgdjRsMl9oMjY0 X2RwYl9lbnRyeSAqZHBiID0gZGVjX3BhcmFtcy0+ZHBiOwo+KwlzdHJ1Y3Qgcmt2ZGVjMl9oMjY0 X2N0eCAqaDI2NF9jdHggPSBjdHgtPnByaXY7Cj4rCXN0cnVjdCBya3ZkZWMyX2gyNjRfcHJpdl90 YmwgKnByaXZfdGJsID0gaDI2NF9jdHgtPnByaXZfdGJsLmNwdTsKPisKPisJc3RydWN0IHJrdmRl YzJfcnBzICpod19ycHMgPSAmcHJpdl90YmwtPnJwczsKPisJdTMyIGksIGo7Cj4rCj4rCW1lbXNl dChod19ycHMsIDAsIHNpemVvZihwcml2X3RibC0+cnBzKSk7Cj4rCj4rCS8qCj4rCSAqIEFzc2ln biBhbiBpbnZhbGlkIHBpY19udW0gaWYgRFBCIGVudHJ5IGF0IHRoYXQgcG9zaXRpb24gaXMgaW5h Y3RpdmUuCj4rCSAqIElmIHdlIGFzc2lnbiAwIGluIHRoYXQgcG9zaXRpb24gaGFyZHdhcmUgd2ls bCB0cmVhdCB0aGF0IGFzIGEgcmVhbAo+KwkgKiByZWZlcmVuY2UgcGljdHVyZSB3aXRoIHBpY19u dW0gMCwgdHJpZ2dlcmluZyBvdXRwdXQgcGljdHVyZQo+KwkgKiBjb3JydXB0aW9uLgo+KwkgKi8K PisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZGVjX3BhcmFtcy0+ZHBiKTsgaSsrKSB7Cj4r CQlpZiAoIShkcGJbaV0uZmxhZ3MgJiBWNEwyX0gyNjRfRFBCX0VOVFJZX0ZMQUdfQUNUSVZFKSkK PisJCQljb250aW51ZTsKPisKPisJCWh3X3Jwcy0+ZnJhbWVfbnVtW2ldID0gYnVpbGRlci0+cmVm c1tpXS5mcmFtZV9udW07Cj4rCX0KPisKPisJZm9yIChqID0gMDsgaiA8IFJLVkRFQ19OVU1fUkVG TElTVDsgaisrKSB7Cj4rCQlmb3IgKGkgPSAwOyBpIDwgYnVpbGRlci0+bnVtX3ZhbGlkOyBpKysp IHsKPisJCQlzdHJ1Y3QgdjRsMl9oMjY0X3JlZmVyZW5jZSAqcmVmOwo+KwkJCWJvb2wgZHBiX3Zh bGlkOwo+KwkJCWJvb2wgYm90dG9tOwo+Kwo+KwkJCXN3aXRjaCAoaikgewo+KwkJCWNhc2UgMDoK PisJCQkJcmVmID0gJmgyNjRfY3R4LT5yZWZsaXN0cy5wW2ldOwo+KwkJCQlicmVhazsKPisJCQlj YXNlIDE6Cj4rCQkJCXJlZiA9ICZoMjY0X2N0eC0+cmVmbGlzdHMuYjBbaV07Cj4rCQkJCWJyZWFr Owo+KwkJCWNhc2UgMjoKPisJCQkJcmVmID0gJmgyNjRfY3R4LT5yZWZsaXN0cy5iMVtpXTsKPisJ CQkJYnJlYWs7Cj4rCQkJfQo+Kwo+KwkJCWlmIChXQVJOX09OKHJlZi0+aW5kZXggPj0gQVJSQVlf U0laRShkZWNfcGFyYW1zLT5kcGIpKSkKPisJCQkJY29udGludWU7Cj4rCj4rCQkJZHBiX3ZhbGlk ID0gISEocnVuLT5yZWZfYnVmW3JlZi0+aW5kZXhdKTsKPisJCQlib3R0b20gPSByZWYtPmZpZWxk cyA9PSBWNEwyX0gyNjRfQk9UVE9NX0ZJRUxEX1JFRjsKPisKPisJCQlzZXRfZHBiX2luZm8oaHdf cnBzLT5lbnRyaWVzLCBqLCBpLCByZWYtPmluZGV4IHwgKGRwYl92YWxpZCA8PCA0KSwgYm90dG9t KTsKPisJCX0KPisJfQo+K30KPisKPitzdGF0aWMgdm9pZCBhc3NlbWJsZV9od19zY2FsaW5nX2xp c3Qoc3RydWN0IHJrdmRlYzJfY3R4ICpjdHgsCj4rCQkJCSAgICAgc3RydWN0IHJrdmRlYzJfaDI2 NF9ydW4gKnJ1bikKPit7Cj4rCWNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaDI2NF9zY2FsaW5nX21h dHJpeCAqc2NhbGluZyA9IHJ1bi0+c2NhbGluZ19tYXRyaXg7Cj4rCWNvbnN0IHN0cnVjdCB2NGwy X2N0cmxfaDI2NF9wcHMgKnBwcyA9IHJ1bi0+cHBzOwo+KwlzdHJ1Y3Qgcmt2ZGVjMl9oMjY0X2N0 eCAqaDI2NF9jdHggPSBjdHgtPnByaXY7Cj4rCXN0cnVjdCBya3ZkZWMyX2gyNjRfcHJpdl90Ymwg KnRibCA9IGgyNjRfY3R4LT5wcml2X3RibC5jcHU7Cj4rCj4rCWlmICghKHBwcy0+ZmxhZ3MgJiBW NEwyX0gyNjRfUFBTX0ZMQUdfU0NBTElOR19NQVRSSVhfUFJFU0VOVCkpCj4rCQlyZXR1cm47Cj4r Cj4rCUJVSUxEX0JVR19PTihzaXplb2YodGJsLT5zY2FsaW5nX2xpc3Quc2NhbGluZ19saXN0XzR4 NCkgIT0KPisJCSAgICAgc2l6ZW9mKHNjYWxpbmctPnNjYWxpbmdfbGlzdF80eDQpKTsKPisJQlVJ TERfQlVHX09OKHNpemVvZih0YmwtPnNjYWxpbmdfbGlzdC5zY2FsaW5nX2xpc3RfOHg4KSAhPQo+ KwkJICAgICBzaXplb2Yoc2NhbGluZy0+c2NhbGluZ19saXN0Xzh4OCkpOwo+Kwo+KwltZW1jcHko dGJsLT5zY2FsaW5nX2xpc3Quc2NhbGluZ19saXN0XzR4NCwKPisJICAgICAgIHNjYWxpbmctPnNj YWxpbmdfbGlzdF80eDQsCj4rCSAgICAgICBzaXplb2Yoc2NhbGluZy0+c2NhbGluZ19saXN0XzR4 NCkpOwo+Kwo+KwltZW1jcHkodGJsLT5zY2FsaW5nX2xpc3Quc2NhbGluZ19saXN0Xzh4OCwKPisJ ICAgICAgIHNjYWxpbmctPnNjYWxpbmdfbGlzdF84eDgsCj4rCSAgICAgICBzaXplb2Yoc2NhbGlu Zy0+c2NhbGluZ19saXN0Xzh4OCkpOwo+K30KPisKPitzdGF0aWMgdm9pZCBya3ZkZWMyX3dyaXRl X3JlZ3Moc3RydWN0IHJrdmRlYzJfY3R4ICpjdHgpCj4rewo+KwlzdHJ1Y3Qgcmt2ZGVjMl9kZXYg KnJrdmRlYyA9IGN0eC0+ZGV2Owo+KwlzdHJ1Y3Qgcmt2ZGVjMl9oMjY0X2N0eCAqaDI2NF9jdHgg PSBjdHgtPnByaXY7Cj4rCj4rCV9faW93cml0ZTMyX2NvcHlfZnVsbChya3ZkZWMtPnJlZ3MgKyBP RkZTRVRfQ09NTU9OX1JFR1MsCj4rCQkJICAgICAgJmgyNjRfY3R4LT5yZWdzLmNvbW1vbiwKPisJ CQkgICAgICBzaXplb2YoaDI2NF9jdHgtPnJlZ3MuY29tbW9uKSk7Cj4rCV9faW93cml0ZTMyX2Nv cHlfZnVsbChya3ZkZWMtPnJlZ3MgKyBPRkZTRVRfQ09ERUNfUEFSQU1TX1JFR1MsCj4rCQkJICAg ICAgJmgyNjRfY3R4LT5yZWdzLmgyNjRfcGFyYW0sCj4rCQkJICAgICAgc2l6ZW9mKGgyNjRfY3R4 LT5yZWdzLmgyNjRfcGFyYW0pKTsKPisJX19pb3dyaXRlMzJfY29weV9mdWxsKHJrdmRlYy0+cmVn cyArIE9GRlNFVF9DT01NT05fQUREUl9SRUdTLAo+KwkJCSAgICAgICZoMjY0X2N0eC0+cmVncy5j b21tb25fYWRkciwKPisJCQkgICAgICBzaXplb2YoaDI2NF9jdHgtPnJlZ3MuY29tbW9uX2FkZHIp KTsKPisJX19pb3dyaXRlMzJfY29weV9mdWxsKHJrdmRlYy0+cmVncyArIE9GRlNFVF9DT0RFQ19B RERSX1JFR1MsCj4rCQkJICAgICAgJmgyNjRfY3R4LT5yZWdzLmgyNjRfYWRkciwKPisJCQkgICAg ICBzaXplb2YoaDI2NF9jdHgtPnJlZ3MuaDI2NF9hZGRyKSk7Cj4rCV9faW93cml0ZTMyX2NvcHlf ZnVsbChya3ZkZWMtPnJlZ3MgKyBPRkZTRVRfUE9DX0hJR0hCSVRfUkVHUywKPisJCQkgICAgICAm aDI2NF9jdHgtPnJlZ3MuaDI2NF9oaWdocG9jLAo+KwkJCSAgICAgIHNpemVvZihoMjY0X2N0eC0+ cmVncy5oMjY0X2hpZ2hwb2MpKTsKPit9Cj4rCj4rc3RhdGljIHZvaWQgY29uZmlnX3JlZ2lzdGVy cyhzdHJ1Y3Qgcmt2ZGVjMl9jdHggKmN0eCwKPisJCQkgICAgIHN0cnVjdCBya3ZkZWMyX2gyNjRf cnVuICpydW4pCj4rewo+Kwljb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX2gyNjRfZGVjb2RlX3BhcmFt cyAqZGVjX3BhcmFtcyA9IHJ1bi0+ZGVjb2RlX3BhcmFtczsKPisJY29uc3Qgc3RydWN0IHY0bDJf Y3RybF9oMjY0X3NwcyAqc3BzID0gcnVuLT5zcHM7Cj4rCWNvbnN0IHN0cnVjdCB2NGwyX2gyNjRf ZHBiX2VudHJ5ICpkcGIgPSBkZWNfcGFyYW1zLT5kcGI7Cj4rCXN0cnVjdCBya3ZkZWMyX2gyNjRf Y3R4ICpoMjY0X2N0eCA9IGN0eC0+cHJpdjsKPisJZG1hX2FkZHJfdCBwcml2X3N0YXJ0X2FkZHIg PSBoMjY0X2N0eC0+cHJpdl90YmwuZG1hOwo+Kwljb25zdCBzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0 X21wbGFuZSAqZHN0X2ZtdDsKPisJc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqc3JjX2J1ZiA9IHJ1 bi0+YmFzZS5idWZzLnNyYzsKPisJc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqZHN0X2J1ZiA9IHJ1 bi0+YmFzZS5idWZzLmRzdDsKPisJc3RydWN0IHJrdmRlYzJfcmVnc19oMjY0ICpyZWdzID0gJmgy NjRfY3R4LT5yZWdzOwo+Kwljb25zdCBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmY7Cj4rCWRtYV9hZGRy X3QgcmxjX2FkZHI7Cj4rCWRtYV9hZGRyX3QgZHN0X2FkZHI7Cj4rCXUzMiBob3Jfdmlyc3RyaWRl ID0gMDsKPisJdTMyIHZlcl92aXJzdHJpZGUgPSAwOwo+Kwl1MzIgeV92aXJzdHJpZGUgPSAwOwo+ Kwl1MzIgeXV2X3ZpcnN0cmlkZSA9IDA7Cj4rCXUzMiBvZmZzZXQ7Cj4rCXUzMiBwaXhlbHM7Cj4r CXUzMiBpOwo+Kwo+KwltZW1zZXQocmVncywgMCwgc2l6ZW9mKCpyZWdzKSk7Cj4rCj4rCS8qIFNl dCBIMjY0IG1vZGUgKi8KPisJcmVncy0+Y29tbW9uLnJlZzAwOS5kZWNfbW9kZSA9IFJLVkRFQzJf TU9ERV9IMjY0Owo+Kwo+KwkvKiBTZXQgY29uZmlnICovCj4rCXJlZ3MtPmNvbW1vbi5yZWcwMTEu YnVmX2VtcHR5X2VuID0gMTsKPisJcmVncy0+Y29tbW9uLnJlZzAxMS5kZWNfY2xrZ2F0ZV9lID0g MTsKPisJcmVncy0+Y29tbW9uLnJlZzAxMS5kZWNfdGltZW91dF9lID0gMTsKPisJcmVncy0+Y29t bW9uLnJlZzAxMS5waXhfcmFuZ2VfZGV0ZWN0aW9uX2UgPSAxOwo+Kwo+KwkvKiBTZXQgSURSIGZs YWcgKi8KPisJcmVncy0+Y29tbW9uLnJlZzAxMy5jdXJfcGljX2lzX2lkciA9Cj4rCQkhIShkZWNf cGFyYW1zLT5mbGFncyAmIFY0TDJfSDI2NF9ERUNPREVfUEFSQU1fRkxBR19JRFJfUElDKTsKPisK PisJLyogU2V0IGlucHV0IHN0cmVhbSBsZW5ndGggKi8KPisJcmVncy0+Y29tbW9uLnJlZzAxNl9z dHJfbGVuID0gdmIyX2dldF9wbGFuZV9wYXlsb2FkKCZzcmNfYnVmLT52YjJfYnVmLCAwKTsKPisK PisJLyogU2V0IG1heCBzbGljZSBudW1iZXIgKi8KPisJcmVncy0+Y29tbW9uLnJlZzAxNy5zbGlj ZV9udW0gPSBNQVhfU0xJQ0VfTlVNQkVSOwo+Kwo+KwkvKiBTZXQgc3RyaWRlcyAqLwo+KwlmID0g JmN0eC0+ZGVjb2RlZF9mbXQ7Cj4rCWRzdF9mbXQgPSAmZi0+Zm10LnBpeF9tcDsKPisJaG9yX3Zp cnN0cmlkZSA9IChzcHMtPmJpdF9kZXB0aF9sdW1hX21pbnVzOCArIDgpICogZHN0X2ZtdC0+d2lk dGggLyA4Owo+Kwl2ZXJfdmlyc3RyaWRlID0gcm91bmRfdXAoZHN0X2ZtdC0+aGVpZ2h0LCAxNik7 Cj4rCXlfdmlyc3RyaWRlID0gaG9yX3ZpcnN0cmlkZSAqIHZlcl92aXJzdHJpZGU7Cj4rCXBpeGVs cyA9IGRzdF9mbXQtPmhlaWdodCAqIGRzdF9mbXQtPndpZHRoOwo+Kwo+KwlpZiAoc3BzLT5jaHJv bWFfZm9ybWF0X2lkYyA9PSAwKQo+KwkJeXV2X3ZpcnN0cmlkZSA9IHlfdmlyc3RyaWRlOwo+Kwll bHNlIGlmIChzcHMtPmNocm9tYV9mb3JtYXRfaWRjID09IDEpCj4rCQl5dXZfdmlyc3RyaWRlICs9 IHlfdmlyc3RyaWRlICsgeV92aXJzdHJpZGUgLyAyOwo+KwllbHNlIGlmIChzcHMtPmNocm9tYV9m b3JtYXRfaWRjID09IDIpCj4rCQl5dXZfdmlyc3RyaWRlICs9IDIgKiB5X3ZpcnN0cmlkZTsKPisK PisJcmVncy0+Y29tbW9uLnJlZzAxOC55X2hvcl92aXJzdHJpZGUgPSBob3Jfdmlyc3RyaWRlIC8g MTY7Cj4rCXJlZ3MtPmNvbW1vbi5yZWcwMTkudXZfaG9yX3ZpcnN0cmlkZSA9IGhvcl92aXJzdHJp ZGUgLyAxNjsKPisJcmVncy0+Y29tbW9uLnJlZzAyMF95X3ZpcnN0cmlkZS55X3ZpcnN0cmlkZSA9 IHlfdmlyc3RyaWRlIC8gMTY7Cj4rCj4rCS8qIEFjdGl2YXRlIGJsb2NrIGdhdGluZyAqLwo+Kwly ZWdzLT5jb21tb24ucmVnMDI2LnN3cmVnX2Jsb2NrX2dhdGluZ19lID0gMHhmZmZlZjsKPisJcmVn cy0+Y29tbW9uLnJlZzAyNi5yZWdfY2ZnX2dhdGluZ19lbiA9IDE7Cj4rCj4rCS8qIFNldCB0aW1l b3V0IHRocmVzaG9sZCAqLwo+KwlpZiAocGl4ZWxzIDwgUktWREVDMl8xMDgwUF9QSVhFTFMpCj4r CQlyZWdzLT5jb21tb24ucmVnMDMyX3RpbWVvdXRfdGhyZXNob2xkID0gUktWREVDMl9USU1FT1VU XzEwODBwOwo+KwllbHNlIGlmIChwaXhlbHMgPCBSS1ZERUMyXzRLX1BJWEVMUykKPisJCXJlZ3Mt PmNvbW1vbi5yZWcwMzJfdGltZW91dF90aHJlc2hvbGQgPSBSS1ZERUMyX1RJTUVPVVRfNEs7Cj4r CWVsc2UgaWYgKHBpeGVscyA8IFJLVkRFQzJfOEtfUElYRUxTKQo+KwkJcmVncy0+Y29tbW9uLnJl ZzAzMl90aW1lb3V0X3RocmVzaG9sZCA9IFJLVkRFQzJfVElNRU9VVF84SzsKPisKPisJLyogU2V0 IFRPUCBhbmQgQk9UVE9NIFBPQ3MgKi8KPisJcmVncy0+aDI2NF9wYXJhbS5jdXJfdG9wX3BvYyA9 IGRlY19wYXJhbXMtPnRvcF9maWVsZF9vcmRlcl9jbnQ7Cj4rCXJlZ3MtPmgyNjRfcGFyYW0uY3Vy X2JvdF9wb2MgPSBkZWNfcGFyYW1zLT5ib3R0b21fZmllbGRfb3JkZXJfY250Owo+Kwo+KwkvKiBT ZXQgcmVmIHBpYyBhZGRyZXNzICYgcG9jICovCj4rCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KGRlY19wYXJhbXMtPmRwYik7IGkrKykgewo+KwkJc3RydWN0IHZiMl9idWZmZXIgKnZiX2J1ZiA9 IHJ1bi0+cmVmX2J1ZltpXTsKPisJCWRtYV9hZGRyX3QgYnVmX2RtYTsKPisKPisJCS8qCj4rCQkg KiBJZiBhIERQQiBlbnRyeSBpcyB1bnVzZWQgb3IgaW52YWxpZCwgYWRkcmVzcyBvZiBjdXJyZW50 IGRlc3RpbmF0aW9uCj4rCQkgKiBidWZmZXIgaXMgcmV0dXJuZWQuCj4rCQkgKi8KPisJCWlmICgh dmJfYnVmKQo+KwkJCXZiX2J1ZiA9ICZkc3RfYnVmLT52YjJfYnVmOwo+Kwo+KwkJYnVmX2RtYSA9 IHZiMl9kbWFfY29udGlnX3BsYW5lX2RtYV9hZGRyKHZiX2J1ZiwgMCk7Cj4rCj4rCQkvKiBTZXQg cmVmZXJlbmNlIGFkZHJlc3NlcyAqLwo+KwkJcmVncy0+aDI2NF9hZGRyLnJlZl9iYXNlW2ldID0g YnVmX2RtYTsKPisKPisJCS8qIFNldCBDT0xNViBhZGRyZXNzZXMgKi8KPisJCXJlZ3MtPmgyNjRf YWRkci5jb2xtdl9iYXNlW2ldID0gYnVmX2RtYSArIGN0eC0+Y29sbXZfb2Zmc2V0Owo+Kwo+KwkJ c3RydWN0IHJrdmRlYzJfaDI2NF9yZWZfaW5mbyAqcmVmX2luZm8gPQo+KwkJCSZyZWdzLT5oMjY0 X3BhcmFtLnJlZzk5XzEwMl9yZWZfaW5mb1tpIC8gNF0ucmVmX2luZm9baSAlIDRdOwo+Kwo+KwkJ cmVmX2luZm8tPnJlZl9maWVsZCA9Cj4rCQkJISEoZHBiW2ldLmZsYWdzICYgVjRMMl9IMjY0X0RQ Ql9FTlRSWV9GTEFHX0ZJRUxEKTsKPisJCXJlZl9pbmZvLT5yZWZfY29sbXZfdXNlX2ZsYWcgPQo+ KwkJCSEhKGRwYltpXS5mbGFncyAmIFY0TDJfSDI2NF9EUEJfRU5UUllfRkxBR19BQ1RJVkUpOwo+ KwkJcmVmX2luZm8tPnJlZl90b3BmaWVsZF91c2VkID0KPisJCQkhIShkcGJbaV0uZmllbGRzICYg VjRMMl9IMjY0X1RPUF9GSUVMRF9SRUYpOwo+KwkJcmVmX2luZm8tPnJlZl9ib3RmaWVsZF91c2Vk ID0KPisJCQkhIShkcGJbaV0uZmllbGRzICYgVjRMMl9IMjY0X0JPVFRPTV9GSUVMRF9SRUYpOwo+ Kwo+KwkJcmVncy0+aDI2NF9wYXJhbS5yZWc2N185OF9yZWZfcG9jW2kgKiAyXSA9Cj4rCQkJZHBi W2ldLnRvcF9maWVsZF9vcmRlcl9jbnQ7Cj4rCQlyZWdzLT5oMjY0X3BhcmFtLnJlZzY3Xzk4X3Jl Zl9wb2NbaSAqIDIgKyAxXSA9Cj4rCQkJZHBiW2ldLmJvdHRvbV9maWVsZF9vcmRlcl9jbnQ7Cj4r CX0KPisKPisJLyogU2V0IHJsYyBiYXNlIGFkZHJlc3MgKGlucHV0IHN0cmVhbSkgKi8KPisJcmxj X2FkZHIgPSB2YjJfZG1hX2NvbnRpZ19wbGFuZV9kbWFfYWRkcigmc3JjX2J1Zi0+dmIyX2J1Ziwg MCk7Cj4rCXJlZ3MtPmNvbW1vbl9hZGRyLnJlZzEyOF9ybGNfYmFzZSA9IHJsY19hZGRyOwo+Kwly ZWdzLT5jb21tb25fYWRkci5yZWcxMjlfcmxjd3JpdGVfYmFzZSA9IHJsY19hZGRyOwo+Kwo+Kwkv KiBTZXQgb3V0cHV0IGJhc2UgYWRkcmVzcyAqLwo+Kwlkc3RfYWRkciA9IHZiMl9kbWFfY29udGln X3BsYW5lX2RtYV9hZGRyKCZkc3RfYnVmLT52YjJfYnVmLCAwKTsKPisJcmVncy0+Y29tbW9uX2Fk ZHIucmVnMTMwX2RlY291dF9iYXNlID0gZHN0X2FkZHI7Cj4rCj4rCS8qIFNldCBjb2xtdiBhZGRy ZXNzICovCj4rCXJlZ3MtPmNvbW1vbl9hZGRyLnJlZzEzMV9jb2xtdl9jdXJfYmFzZSA9IGRzdF9h ZGRyICsgY3R4LT5jb2xtdl9vZmZzZXQ7Cj4rCj4rCS8qIFNldCBSQ0IgYWRkcmVzc2VzICovCj4r CWZvciAoaSA9IDA7IGkgPCBSS1ZERUMyX1JDQl9DT1VOVDsgaSsrKQo+KwkJcmVncy0+Y29tbW9u X2FkZHIucmVnMTMzXzE0Ml9yY2JfYmFzZVtpXSA9IGN0eC0+cmNiX2J1ZnNbaV0uZG1hOwo+Kwo+ KwkvKiBTZXQgaHcgcHBzIGFkZHJlc3MgKi8KPisJb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IHJr dmRlYzJfaDI2NF9wcml2X3RibCwgcGFyYW1fc2V0KTsKPisJcmVncy0+aDI2NF9hZGRyLnBwc19i YXNlID0gcHJpdl9zdGFydF9hZGRyICsgb2Zmc2V0Owo+Kwo+KwkvKiBTZXQgaHcgcnBzIGFkZHJl c3MgKi8KPisJb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IHJrdmRlYzJfaDI2NF9wcml2X3RibCwg cnBzKTsKPisJcmVncy0+aDI2NF9hZGRyLnJwc19iYXNlID0gcHJpdl9zdGFydF9hZGRyICsgb2Zm c2V0Owo+Kwo+KwkvKiBTZXQgY2FiYWMgdGFibGUgKi8KPisJb2Zmc2V0ID0gb2Zmc2V0b2Yoc3Ry dWN0IHJrdmRlYzJfaDI2NF9wcml2X3RibCwgY2FiYWNfdGFibGUpOwo+KwlyZWdzLT5oMjY0X2Fk ZHIuY2FiYWN0YmxfYmFzZSA9IHByaXZfc3RhcnRfYWRkciArIG9mZnNldDsKPisKPisJcmt2ZGVj Ml93cml0ZV9yZWdzKGN0eCk7Cj4rfQo+Kwo+KyNkZWZpbmUgUktWREVDX0gyNjRfTUFYX0RFUFRI X0lOX0JZVEVTCQkyCj4rCj4rc3RhdGljIGludCBya3ZkZWMyX2gyNjRfYWRqdXN0X2ZtdChzdHJ1 Y3Qgcmt2ZGVjMl9jdHggKmN0eCwKPisJCQkJICAgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQo+K3sK PisJc3RydWN0IHY0bDJfcGl4X2Zvcm1hdF9tcGxhbmUgKmZtdCA9ICZmLT5mbXQucGl4X21wOwo+ Kwo+KwlmbXQtPm51bV9wbGFuZXMgPSAxOwo+KwlpZiAoIWZtdC0+cGxhbmVfZm10WzBdLnNpemVp bWFnZSkKPisJCWZtdC0+cGxhbmVfZm10WzBdLnNpemVpbWFnZSA9IGZtdC0+d2lkdGggKiBmbXQt PmhlaWdodCAqCj4rCQkJCQkgICAgICBSS1ZERUNfSDI2NF9NQVhfREVQVEhfSU5fQllURVM7Cj4r CXJldHVybiAwOwo+K30KPisKPitzdGF0aWMgaW50IHJrdmRlYzJfaDI2NF92YWxpZGF0ZV9zcHMo c3RydWN0IHJrdmRlYzJfY3R4ICpjdHgsCj4rCQkJCSAgICAgY29uc3Qgc3RydWN0IHY0bDJfY3Ry bF9oMjY0X3NwcyAqc3BzKQo+K3sKPisJdW5zaWduZWQgaW50IHdpZHRoLCBoZWlnaHQ7Cj4rCj4r CS8qIEZJWE1FOiBUQkMKPisJICogVE9ETzogVGhlIGhhcmR3YXJlIHN1cHBvcnRzIDEwLWJpdCBh bmQgNDoyOjIgcHJvZmlsZXMsCj4rCSAqIGJ1dCBpdCdzIGN1cnJlbnRseSBicm9rZW4gaW4gdGhl IGRyaXZlci4KPisJICogUmVqZWN0IHRoZW0gZm9yIG5vdywgdW50aWwgaXQncyBmaXhlZC4KPisJ ICovCj4rCWlmIChzcHMtPmNocm9tYV9mb3JtYXRfaWRjID4gMSkKPisJCS8qIE9ubHkgNDowOjAg YW5kIDQ6MjowIGFyZSBzdXBwb3J0ZWQgKi8KPisJCXJldHVybiAtRUlOVkFMOwo+KwlpZiAoc3Bz LT5iaXRfZGVwdGhfbHVtYV9taW51czggIT0gc3BzLT5iaXRfZGVwdGhfY2hyb21hX21pbnVzOCkK PisJCS8qIEx1bWEgYW5kIGNocm9tYSBiaXQgZGVwdGggbWlzbWF0Y2ggKi8KPisJCXJldHVybiAt RUlOVkFMOwo+KwlpZiAoc3BzLT5iaXRfZGVwdGhfbHVtYV9taW51czggIT0gMCkKPisJCS8qIE9u bHkgOC1iaXQgaXMgc3VwcG9ydGVkICovCj4rCQlyZXR1cm4gLUVJTlZBTDsKPisKPisJd2lkdGgg PSAoc3BzLT5waWNfd2lkdGhfaW5fbWJzX21pbnVzMSArIDEpICogMTY7Cj4rCWhlaWdodCA9IChz cHMtPnBpY19oZWlnaHRfaW5fbWFwX3VuaXRzX21pbnVzMSArIDEpICogMTY7Cj4rCj4rCS8qCj4r CSAqIFdoZW4gZnJhbWVfbWJzX29ubHlfZmxhZyBpcyBub3Qgc2V0LCB0aGlzIGlzIGZpZWxkIGhl aWdodCwKPisJICogd2hpY2ggaXMgaGFsZiB0aGUgZmluYWwgaGVpZ2h0IChzZWUgKDctMTgpIGlu IHRoZQo+KwkgKiBzcGVjaWZpY2F0aW9uKQo+KwkgKi8KPisJaWYgKCEoc3BzLT5mbGFncyAmIFY0 TDJfSDI2NF9TUFNfRkxBR19GUkFNRV9NQlNfT05MWSkpCj4rCQloZWlnaHQgKj0gMjsKPisKPisJ aWYgKHdpZHRoID4gY3R4LT5jb2RlZF9mbXQuZm10LnBpeF9tcC53aWR0aCB8fAo+KwkgICAgaGVp Z2h0ID4gY3R4LT5jb2RlZF9mbXQuZm10LnBpeF9tcC5oZWlnaHQpCj4rCQlyZXR1cm4gLUVJTlZB TDsKPisKPisJcmV0dXJuIDA7Cj4rfQo+Kwo+K3N0YXRpYyBpbnQgcmt2ZGVjMl9oMjY0X3N0YXJ0 KHN0cnVjdCBya3ZkZWMyX2N0eCAqY3R4KQo+K3sKPisJc3RydWN0IHJrdmRlYzJfZGV2ICpya3Zk ZWMgPSBjdHgtPmRldjsKPisJc3RydWN0IHJrdmRlYzJfaDI2NF9wcml2X3RibCAqcHJpdl90Ymw7 Cj4rCXN0cnVjdCBya3ZkZWMyX2gyNjRfY3R4ICpoMjY0X2N0eDsKPisJc3RydWN0IHY0bDJfY3Ry bCAqY3RybDsKPisJaW50IHJldDsKPisKPisJY3RybCA9IHY0bDJfY3RybF9maW5kKCZjdHgtPmN0 cmxfaGRsLAo+KwkJCSAgICAgIFY0TDJfQ0lEX1NUQVRFTEVTU19IMjY0X1NQUyk7Cj4rCWlmICgh Y3RybCkKPisJCXJldHVybiAtRUlOVkFMOwo+Kwo+KwlyZXQgPSBya3ZkZWMyX2gyNjRfdmFsaWRh dGVfc3BzKGN0eCwgY3RybC0+cF9uZXcucF9oMjY0X3Nwcyk7Cj4rCWlmIChyZXQpCj4rCQlyZXR1 cm4gcmV0Owo+Kwo+KwloMjY0X2N0eCA9IGt6YWxsb2Moc2l6ZW9mKCpoMjY0X2N0eCksIEdGUF9L RVJORUwpOwo+KwlpZiAoIWgyNjRfY3R4KQo+KwkJcmV0dXJuIC1FTk9NRU07Cj4rCj4rCXByaXZf dGJsID0gZG1hX2FsbG9jX2NvaGVyZW50KHJrdmRlYy0+ZGV2LCBzaXplb2YoKnByaXZfdGJsKSwK PisJCQkJICAgICAgJmgyNjRfY3R4LT5wcml2X3RibC5kbWEsIEdGUF9LRVJORUwpOwo+KwlpZiAo IXByaXZfdGJsKSB7Cj4rCQlyZXQgPSAtRU5PTUVNOwo+KwkJZ290byBlcnJfZnJlZV9jdHg7Cj4r CX0KPisKPisJaDI2NF9jdHgtPnByaXZfdGJsLnNpemUgPSBzaXplb2YoKnByaXZfdGJsKTsKPisJ aDI2NF9jdHgtPnByaXZfdGJsLmNwdSA9IHByaXZfdGJsOwo+KwltZW1jcHkocHJpdl90YmwtPmNh YmFjX3RhYmxlLCBya3ZkZWMyX2gyNjRfY2FiYWNfdGFibGUsCj4rCSAgICAgICBzaXplb2Yocmt2 ZGVjMl9oMjY0X2NhYmFjX3RhYmxlKSk7Cj4rCj4rCWN0eC0+cHJpdiA9IGgyNjRfY3R4Owo+Kwly ZXR1cm4gMDsKPisKPitlcnJfZnJlZV9jdHg6Cj4rCWtmcmVlKGgyNjRfY3R4KTsKPisJcmV0dXJu IHJldDsKPit9Cj4rCj4rc3RhdGljIHZvaWQgcmt2ZGVjMl9oMjY0X3N0b3Aoc3RydWN0IHJrdmRl YzJfY3R4ICpjdHgpCj4rewo+KwlzdHJ1Y3Qgcmt2ZGVjMl9oMjY0X2N0eCAqaDI2NF9jdHggPSBj dHgtPnByaXY7Cj4rCXN0cnVjdCBya3ZkZWMyX2RldiAqcmt2ZGVjID0gY3R4LT5kZXY7Cj4rCj4r CWRtYV9mcmVlX2NvaGVyZW50KHJrdmRlYy0+ZGV2LCBoMjY0X2N0eC0+cHJpdl90Ymwuc2l6ZSwK PisJCQkgIGgyNjRfY3R4LT5wcml2X3RibC5jcHUsIGgyNjRfY3R4LT5wcml2X3RibC5kbWEpOwo+ KwlrZnJlZShoMjY0X2N0eCk7Cj4rfQo+Kwo+K3N0YXRpYyB2b2lkIHJrdmRlYzJfaDI2NF9ydW5f cHJlYW1ibGUoc3RydWN0IHJrdmRlYzJfY3R4ICpjdHgsCj4rCQkJCSAgICAgIHN0cnVjdCBya3Zk ZWMyX2gyNjRfcnVuICpydW4pCj4rewo+KwlzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsOwo+Kwo+Kwlj dHJsID0gdjRsMl9jdHJsX2ZpbmQoJmN0eC0+Y3RybF9oZGwsCj4rCQkJICAgICAgVjRMMl9DSURf U1RBVEVMRVNTX0gyNjRfREVDT0RFX1BBUkFNUyk7Cj4rCXJ1bi0+ZGVjb2RlX3BhcmFtcyA9IGN0 cmwgPyBjdHJsLT5wX2N1ci5wIDogTlVMTDsKPisJY3RybCA9IHY0bDJfY3RybF9maW5kKCZjdHgt PmN0cmxfaGRsLAo+KwkJCSAgICAgIFY0TDJfQ0lEX1NUQVRFTEVTU19IMjY0X1NQUyk7Cj4rCXJ1 bi0+c3BzID0gY3RybCA/IGN0cmwtPnBfY3VyLnAgOiBOVUxMOwo+KwljdHJsID0gdjRsMl9jdHJs X2ZpbmQoJmN0eC0+Y3RybF9oZGwsCj4rCQkJICAgICAgVjRMMl9DSURfU1RBVEVMRVNTX0gyNjRf UFBTKTsKPisJcnVuLT5wcHMgPSBjdHJsID8gY3RybC0+cF9jdXIucCA6IE5VTEw7Cj4rCWN0cmwg PSB2NGwyX2N0cmxfZmluZCgmY3R4LT5jdHJsX2hkbCwKPisJCQkgICAgICBWNEwyX0NJRF9TVEFU RUxFU1NfSDI2NF9TQ0FMSU5HX01BVFJJWCk7Cj4rCXJ1bi0+c2NhbGluZ19tYXRyaXggPSBjdHJs ID8gY3RybC0+cF9jdXIucCA6IE5VTEw7Cj4rCj4rCXJrdmRlYzJfcnVuX3ByZWFtYmxlKGN0eCwg JnJ1bi0+YmFzZSk7Cj4rfQo+Kwo+K3N0YXRpYyBpbnQgcmt2ZGVjMl9oMjY0X3J1bihzdHJ1Y3Qg cmt2ZGVjMl9jdHggKmN0eCkKPit7Cj4rCXN0cnVjdCB2NGwyX2gyNjRfcmVmbGlzdF9idWlsZGVy IHJlZmxpc3RfYnVpbGRlcjsKPisJc3RydWN0IHJrdmRlYzJfZGV2ICpya3ZkZWMgPSBjdHgtPmRl djsKPisJc3RydWN0IHJrdmRlYzJfaDI2NF9jdHggKmgyNjRfY3R4ID0gY3R4LT5wcml2Owo+Kwlz dHJ1Y3Qgcmt2ZGVjMl9oMjY0X3J1biBydW47Cj4rCj4rCXJrdmRlYzJfaDI2NF9ydW5fcHJlYW1i bGUoY3R4LCAmcnVuKTsKPisKPisJLyogQnVpbGQgdGhlIFAvQnswLDF9IHJlZiBsaXN0cy4gKi8K PisJdjRsMl9oMjY0X2luaXRfcmVmbGlzdF9idWlsZGVyKCZyZWZsaXN0X2J1aWxkZXIsIHJ1bi5k ZWNvZGVfcGFyYW1zLAo+KwkJCQkgICAgICAgcnVuLnNwcywgcnVuLmRlY29kZV9wYXJhbXMtPmRw Yik7Cj4rCXY0bDJfaDI2NF9idWlsZF9wX3JlZl9saXN0KCZyZWZsaXN0X2J1aWxkZXIsIGgyNjRf Y3R4LT5yZWZsaXN0cy5wKTsKPisJdjRsMl9oMjY0X2J1aWxkX2JfcmVmX2xpc3RzKCZyZWZsaXN0 X2J1aWxkZXIsIGgyNjRfY3R4LT5yZWZsaXN0cy5iMCwKPisJCQkJICAgIGgyNjRfY3R4LT5yZWZs aXN0cy5iMSk7Cj4rCj4rCWFzc2VtYmxlX2h3X3NjYWxpbmdfbGlzdChjdHgsICZydW4pOwo+Kwlh c3NlbWJsZV9od19wcHMoY3R4LCAmcnVuKTsKPisJbG9va3VwX3JlZl9idWZfaWR4KGN0eCwgJnJ1 bik7Cj4rCWFzc2VtYmxlX2h3X3JwcyhjdHgsICZyZWZsaXN0X2J1aWxkZXIsICZydW4pOwo+Kwo+ Kwljb25maWdfcmVnaXN0ZXJzKGN0eCwgJnJ1bik7Cj4rCj4rCXJrdmRlYzJfcnVuX3Bvc3RhbWJs ZShjdHgsICZydW4uYmFzZSk7Cj4rCj4rCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmcmt2ZGVjLT53 YXRjaGRvZ193b3JrLCBtc2Vjc190b19qaWZmaWVzKDIwMDApKTsKPisKPisJLyogU3RhcnQgZGVj b2RpbmchICovCj4rCXdyaXRlbChSS1ZERUMyX1JFR19ERUNfRV9CSVQsIHJrdmRlYy0+cmVncyAr IFJLVkRFQzJfUkVHX0RFQ19FKTsKPisKPisJcmV0dXJuIDA7Cj4rfQo+Kwo+K3N0YXRpYyBpbnQg cmt2ZGVjMl9oMjY0X3RyeV9jdHJsKHN0cnVjdCBya3ZkZWMyX2N0eCAqY3R4LCBzdHJ1Y3QgdjRs Ml9jdHJsICpjdHJsKQo+K3sKPisJaWYgKGN0cmwtPmlkID09IFY0TDJfQ0lEX1NUQVRFTEVTU19I MjY0X1NQUykKPisJCXJldHVybiBya3ZkZWMyX2gyNjRfdmFsaWRhdGVfc3BzKGN0eCwgY3RybC0+ cF9uZXcucF9oMjY0X3Nwcyk7Cj4rCj4rCXJldHVybiAwOwo+K30KPisKPitjb25zdCBzdHJ1Y3Qg cmt2ZGVjMl9jb2RlZF9mbXRfb3BzIHJrdmRlYzJfaDI2NF9mbXRfb3BzID0gewo+KwkuYWRqdXN0 X2ZtdCA9IHJrdmRlYzJfaDI2NF9hZGp1c3RfZm10LAo+Kwkuc3RhcnQgPSBya3ZkZWMyX2gyNjRf c3RhcnQsCj4rCS5zdG9wID0gcmt2ZGVjMl9oMjY0X3N0b3AsCj4rCS5ydW4gPSBya3ZkZWMyX2gy NjRfcnVuLAo+KwkudHJ5X2N0cmwgPSBya3ZkZWMyX2gyNjRfdHJ5X2N0cmwsCj4rfTsKPmRpZmYg LS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvcmt2ZGVjMi9ya3ZkZWMyLXJlZ3MuaCBiL2Ry aXZlcnMvc3RhZ2luZy9tZWRpYS9ya3ZkZWMyL3JrdmRlYzItcmVncy5oCj5uZXcgZmlsZSBtb2Rl IDEwMDY0NAo+aW5kZXggMDAwMDAwMDAwMDAwLi5hMjE0NTk3Y2RjZGMKPi0tLSAvZGV2L251bGwK PisrKyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9ya3ZkZWMyL3JrdmRlYzItcmVncy5oCj5AQCAt MCwwICsxLDM3MiBAQAo+Ky8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4rLyoK PisgKiBSb2NrY2hpcCBWaWRlbyBEZWNvZGVyIDIgZHJpdmVyIHJlZ2lzdGVycyBkZXNjcmlwdGlv bgo+KyAqCj4rICogQ29weXJpZ2h0IChDKSAyMDI0IENvbGxhYm9yYSwgTHRkLgo+KyAqICBEZXRs ZXYgQ2FzYW5vdmEgPGRldGxldi5jYXNhbm92YUBjb2xsYWJvcmEuY29tPgo+KyAqLwo+Kwo+KyNp Zm5kZWYgX1JLVkRFQ19SRUdTX0hfCj4rI2RlZmluZSBfUktWREVDX1JFR1NfSF8KPisKPisjZGVm aW5lIE9GRlNFVF9DT01NT05fUkVHUwkJKDggKiBzaXplb2YodTMyKSkKPisjZGVmaW5lIE9GRlNF VF9DT0RFQ19QQVJBTVNfUkVHUwkoNjQgKiBzaXplb2YodTMyKSkKPisjZGVmaW5lIE9GRlNFVF9D T01NT05fQUREUl9SRUdTCQkoMTI4ICogc2l6ZW9mKHUzMikpCj4rI2RlZmluZSBPRkZTRVRfQ09E RUNfQUREUl9SRUdTCQkoMTYwICogc2l6ZW9mKHUzMikpCj4rI2RlZmluZSBPRkZTRVRfUE9DX0hJ R0hCSVRfUkVHUwkJKDIwMCAqIHNpemVvZih1MzIpKQo+Kwo+KyNkZWZpbmUgUktWREVDMl9NT0RF X0hFVkMJMAo+KyNkZWZpbmUgUktWREVDMl9NT0RFX0gyNjQJMQo+KyNkZWZpbmUgUktWREVDMl9N T0RFX1ZQOQkyCj4rI2RlZmluZSBSS1ZERUMyX01PREVfQVZTMgkzCj4rCj4rI2RlZmluZSBNQVhf U0xJQ0VfTlVNQkVSCTB4M2ZmZgo+Kwo+KyNkZWZpbmUgUktWREVDMl8xMDgwUF9QSVhFTFMJCSgx OTIwICogMTA4MCkKPisjZGVmaW5lIFJLVkRFQzJfNEtfUElYRUxTCQkoNDA5NiAqIDIzMDQpCj4r I2RlZmluZSBSS1ZERUMyXzhLX1BJWEVMUwkJKDc2ODAgKiA0MzIwKQo+KyNkZWZpbmUgUktWREVD Ml9USU1FT1VUXzEwODBwCQkoMHhlZmZmZmYpCj4rI2RlZmluZSBSS1ZERUMyX1RJTUVPVVRfNEsJ CSgweDJjZmZmZmYpCj4rI2RlZmluZSBSS1ZERUMyX1RJTUVPVVRfOEsJCSgweDRmZmZmZmYpCj4r Cj4rI2RlZmluZSBSS1ZERUMyX1JFR19ERUNfRQkJMHgwMjgKPisjZGVmaW5lIFJLVkRFQzJfUkVH X0RFQ19FX0JJVAkJMQo+Kwo+KyNkZWZpbmUgUktWREVDMl9SRUdfSU1QT1JUQU5UX0VOCTB4MDJj Cj4rI2RlZmluZSBSS1ZERUMyX1JFR19ERUNfSVJRX0RJU0FCTEUJQklUKDQpCj4rCj4rI2RlZmlu ZSBSS1ZERUMyX1JFR19TVEFfSU5UCQkweDM4MAo+KyNkZWZpbmUgU1RBX0lOVF9ERUNfUkRZX1NU QQkJQklUKDIpCj4rCj4rLyogYmFzZTogT0ZGU0VUX0NPTU1PTl9SRUdTICovCj4rc3RydWN0IHJr dmRlYzJfcmVnc19jb21tb24gewo+KwlzdHJ1Y3Qgcmt2ZGVjMl9pbl9vdXQgewo+KwkJdTMyIGlu X2VuZGlhbgkJOiAxOwo+KwkJdTMyIGluX3N3YXAzMl9lCQk6IDE7Cj4rCQl1MzIgaW5fc3dhcDY0 X2UJCTogMTsKPisJCXUzMiBzdHJfZW5kaWFuCQk6IDE7Cj4rCQl1MzIgc3RyX3N3YXAzMl9lCTog MTsKPisJCXUzMiBzdHJfc3dhcDY0X2UJOiAxOwo+KwkJdTMyIG91dF9lbmRpYW4JCTogMTsKPisJ CXUzMiBvdXRfc3dhcDMyX2UJOiAxOwo+KwkJdTMyIG91dF9jYmNyX3N3YXAJOiAxOwo+KwkJdTMy IG91dF9zd2FwNjRfZQk6IDE7Cj4rCQl1MzIgcmVzZXJ2ZWQJCTogMjI7Cj4rCX0gcmVnMDA4Owo+ Kwo+KwlzdHJ1Y3Qgcmt2ZGVjMl9kZWNfbW9kZSB7Cj4rCQl1MzIgZGVjX21vZGUJOiAxMDsKPisJ CXUzMiByZXNlcnZlZAk6IDIyOwo+Kwl9IHJlZzAwOTsKPisKPisJc3RydWN0IHJrdmRlYzJfZGVj X2Ugewo+KwkJdTMyIGRlY19lCTogMTsKPisJCXUzMiByZXNlcnZlZAk6IDMxOwo+Kwl9IHJlZzAx MDsKPisKPisJc3RydWN0IHJrdmRlYzJfaW1wb3J0YW50X2VuIHsKPisJCXUzMiByZXNlcnZlZAkJ CTogMTsKPisJCXUzMiBkZWNfY2xrZ2F0ZV9lCQk6IDE7Cj4rCQl1MzIgZGVjX2Vfc3RybWRfY2xr Z2F0ZV9kaXMJOiAxOwo+KwkJdTMyIHJlc2VydmVkMAkJCTogMTsKPisKPisJCXUzMiBkZWNfaXJx X2RpcwkJCTogMTsKPisJCXUzMiBkZWNfdGltZW91dF9lCQk6IDE7Cj4rCQl1MzIgYnVmX2VtcHR5 X2VuCQk6IDE7Cj4rCQl1MzIgcmVzZXJ2ZWQxCQkJOiAzOwo+Kwo+KwkJdTMyIGRlY19lX3Jld3Jp dGVfdmFsaWQJCTogMTsKPisJCXUzMiByZXNlcnZlZDIJCQk6IDk7Cj4rCQl1MzIgc29mdHJzdF9l bl9wCQk6IDE7Cj4rCQl1MzIgZm9yY2Vfc29mdHJlc2V0X3ZhbGlkCTogMTsKPisJCXUzMiByZXNl cnZlZDMJCQk6IDI7Cj4rCQl1MzIgcGl4X3JhbmdlX2RldGVjdGlvbl9lCTogMTsKPisJCXUzMiBy ZXNlcnZlZDQJCQk6IDc7Cj4rCX0gcmVnMDExOwo+Kwo+KwlzdHJ1Y3Qgcmt2ZGVjMl9zZW5jb2Rh cnlfZW4gewo+KwkJdTMyIHdyX2Rkcl9hbGlnbl9lbgkJOiAxOwo+KwkJdTMyIGNvbG12X2NvbXBy ZXNzX2VuCQk6IDE7Cj4rCQl1MzIgZmJjX2UJCQk6IDE7Cj4rCQl1MzIgcmVzZXJ2ZWQwCQkJOiAx Owo+Kwo+KwkJdTMyIGJ1c3ByX3Nsb3RfZGlzYWJsZQkJOiAxOwo+KwkJdTMyIGVycm9yX2luZm9f ZW4JCTogMTsKPisJCXUzMiBpbmZvX2NvbGxlY3RfZW4JCTogMTsKPisJCXUzMiB3YWl0X3Jlc2V0 X2VuCQk6IDE7Cj4rCj4rCQl1MzIgc2Nhbmxpc3RfYWRkcl92YWxpZF9lbgk6IDE7Cj4rCQl1MzIg c2NhbGVfZG93bl9lbgkJOiAxOwo+KwkJdTMyIGVycm9yX2NmZ193cl9kaXNhYmxlCTogMTsKPisJ CXUzMiByZXNlcnZlZDEJCQk6IDIxOwo+Kwl9IHJlZzAxMjsKPisKPisJc3RydWN0IHJrdmRlYzJf ZW5fbW9kZV9zZXQgewo+KwkJdTMyIHRpbWVvdXRfbW9kZQkJOiAxOwo+KwkJdTMyIHJlcV90aW1l b3V0X3JzdF9zZWwJCTogMTsKPisJCXUzMiByZXNlcnZlZDAJCQk6IDE7Cj4rCQl1MzIgZGVjX2Nv bW1vbmlycV9tb2RlCQk6IDE7Cj4rCQl1MzIgcmVzZXJ2ZWQxCQkJOiAyOwo+KwkJdTMyIHN0bWVy cm9yX3dhaXRkZWNmaWZvX2VtcHR5CTogMTsKPisJCXUzMiByZXNlcnZlZDIJCQk6IDI7Cj4rCQl1 MzIgaDI2eF9zdHJlYW1kX2Vycm9yX21vZGUJOiAxOwo+KwkJdTMyIHJlc2VydmVkMwkJCTogMjsK PisJCXUzMiBhbGxvd19ub3Rfd3JfdW5yZWZfYmZyYW1lCTogMTsKPisJCXUzMiBmYmNfb3V0cHV0 X3dyX2Rpc2FibGUJOiAxOwo+KwkJdTMyIHJlc2VydmVkNAkJCTogMTsKPisJCXUzMiBjb2xtdl9l cnJvcl9tb2RlCQk6IDE7Cj4rCj4rCQl1MzIgcmVzZXJ2ZWQ1CQkJOiAyOwo+KwkJdTMyIGgyNnhf ZXJyb3JfbW9kZQkJOiAxOwo+KwkJdTMyIHJlc2VydmVkNgkJCTogMjsKPisJCXUzMiB5Y2FjaGVy ZF9wcmlvcgkJOiAxOwo+KwkJdTMyIHJlc2VydmVkNwkJCTogMjsKPisJCXUzMiBjdXJfcGljX2lz X2lkcgkJOiAxOwo+KwkJdTMyIHJlc2VydmVkOAkJCTogMTsKPisJCXUzMiByaWdodF9hdXRvX3Jz dF9kaXNhYmxlCTogMTsKPisJCXUzMiBmcmFtZV9lbmRfZXJyX3JzdF9mbGFnCTogMTsKPisJCXUz MiByZF9wcmlvcl9tb2RlCQk6IDE7Cj4rCQl1MzIgcmRfY3RybF9wcmlvcl9tb2RlCQk6IDE7Cj4r CQl1MzIgcmVzZXJ2ZWQ5CQkJOiAxOwo+KwkJdTMyIGZpbHRlcl9vdXRidWZfbW9kZQkJOiAxOwo+ Kwl9IHJlZzAxMzsKPisKPisJc3RydWN0IHJrdmRlYzJfZmJjX3BhcmFtX3NldCB7Cj4rCQl1MzIg ZmJjX2ZvcmNlX3VuY29tcHJlc3MJOiAxOwo+Kwo+KwkJdTMyIHJlc2VydmVkMAkJCTogMjsKPisJ CXUzMiBhbGxvd18xNng4X2NwX2ZsYWcJCTogMTsKPisJCXUzMiByZXNlcnZlZDEJCQk6IDI7Cj4r Cj4rCQl1MzIgZmJjX2gyNjRfZXh0ZW5fNG9yOF9mbGFnCTogMTsKPisJCXUzMiByZXNlcnZlZDIJ CQk6IDI1Owo+Kwl9IHJlZzAxNDsKPisKPisJc3RydWN0IHJrdmRlYzJfc3RyZWFtX3BhcmFtX3Nl dCB7Cj4rCQl1MzIgcmxjX21vZGVfZGlyZWN0X3dyaXRlCTogMTsKPisJCXUzMiBybGNfbW9kZQkJ CTogMTsKPisJCXUzMiByZXNlcnZlZDAJCQk6IDM7Cj4rCj4rCQl1MzIgc3RybV9zdGFydF9iaXQJ CTogNzsKPisJCXUzMiByZXNlcnZlZDEJCQk6IDIwOwo+Kwl9IHJlZzAxNTsKPisKPisJdTMyICBy ZWcwMTZfc3RyX2xlbjsKPisKPisJc3RydWN0IHJrdmRlYzJfc2xpY2VfbnVtYmVyIHsKPisJCXUz MiBzbGljZV9udW0JOiAyNTsKPisJCXUzMiByZXNlcnZlZAk6IDc7Cj4rCX0gcmVnMDE3Owo+Kwo+ KwlzdHJ1Y3Qgcmt2ZGVjMl95X2hvcl9zdHJpZGUgewo+KwkJdTMyIHlfaG9yX3ZpcnN0cmlkZQk6 IDE2Owo+KwkJdTMyIHJlc2VydmVkCQk6IDE2Owo+Kwl9IHJlZzAxODsKPisKPisJc3RydWN0IHJr dmRlYzJfdXZfaG9yX3N0cmlkZSB7Cj4rCQl1MzIgdXZfaG9yX3ZpcnN0cmlkZQk6IDE2Owo+KwkJ dTMyIHJlc2VydmVkCQk6IDE2Owo+Kwl9IHJlZzAxOTsKPisKPisJdW5pb24gewo+KwkJc3RydWN0 IHJrdmRlYzJfeV9zdHJpZGUgewo+KwkJCXUzMiB5X3ZpcnN0cmlkZQkJOiAyODsKPisJCQl1MzIg cmVzZXJ2ZWQJCTogNDsKPisJCX0gcmVnMDIwX3lfdmlyc3RyaWRlOwo+Kwo+KwkJc3RydWN0IHJr dmRlYzJfZmJjX3BheWxvYWRfb2Zmc2V0IHsKPisJCQl1MzIgcmVzZXJ2ZWQJCTogNDsKPisJCQl1 MzIgcGF5bG9hZF9zdF9vZmZzZXQJOiAyODsKPisJCX0gcmVnMDIwX2ZiY19wYXlsb2FkX29mZjsK PisJfTsKPisKPisJc3RydWN0IHJrdmRlYzJfZXJyb3JfY3RybF9zZXQgewo+KwkJdTMyIGludGVy X2Vycm9yX3ByY19tb2RlCQk6IDE7Cj4rCQl1MzIgZXJyb3JfaW50cmFfbW9kZQkJCTogMTsKPisJ CXUzMiBlcnJvcl9kZWJfZW4JCQk6IDE7Cj4rCQl1MzIgcGljaWR4X3JlcGxhY2UJCQk6IDU7Cj4r CQl1MzIgZXJyb3Jfc3ByZWFkX2UJCQk6IDE7Cj4rCQl1MzIgcmVzZXJ2ZWQwCQkJCTogMzsKPisJ CXUzMiBlcnJvcl9pbnRlcl9wcmVkX2Nyb3NzX3NsaWNlCTogMTsKPisJCXUzMiByZXNlcnZlZDEJ CQkJOiAxMTsKPisJCXUzMiByb2lfZXJyb3JfY3R1X2NhbF9lbgkJOiAxOwo+KwkJdTMyIHJlc2Vy dmVkMgkJCQk6IDc7Cj4rCX0gcmVnMDIxOwo+Kwo+KwlzdHJ1Y3Qgcmt2ZGVjMl9lcnJfcm9pX2N0 dV9vZmZzZXRfc3RhcnQgewo+KwkJdTMyIHJvaV94X2N0dV9vZmZzZXRfc3QJOiAxMjsKPisJCXUz MiByZXNlcnZlZDAJCTogNDsKPisJCXUzMiByb2lfeV9jdHVfb2Zmc2V0X3N0CTogMTI7Cj4rCQl1 MzIgcmVzZXJ2ZWQxCQk6IDQ7Cj4rCX0gcmVnMDIyOwo+Kwo+KwlzdHJ1Y3Qgcmt2ZGVjMl9lcnJf cm9pX2N0dV9vZmZzZXRfZW5kIHsKPisJCXUzMiByb2lfeF9jdHVfb2Zmc2V0X2VuZAk6IDEyOwo+ KwkJdTMyIHJlc2VydmVkMAkJCTogNDsKPisJCXUzMiByb2lfeV9jdHVfb2Zmc2V0X2VuZAk6IDEy Owo+KwkJdTMyIHJlc2VydmVkMQkJCTogNDsKPisJfSByZWcwMjM7Cj4rCj4rCXN0cnVjdCBya3Zk ZWMyX2NhYmFjX2Vycm9yX2VuX2xvd2JpdHMgewo+KwkJdTMyIGNhYmFjX2Vycl9lbl9sb3diaXRz CTogMzI7Cj4rCX0gcmVnMDI0Owo+Kwo+KwlzdHJ1Y3Qgcmt2ZGVjMl9jYWJhY19lcnJvcl9lbl9o aWdoYml0cyB7Cj4rCQl1MzIgY2FiYWNfZXJyX2VuX2hpZ2hiaXRzCTogMzA7Cj4rCQl1MzIgcmVz ZXJ2ZWQJCQk6IDI7Cj4rCX0gcmVnMDI1Owo+Kwo+KwlzdHJ1Y3Qgcmt2ZGVjMl9ibG9ja19nYXRp bmdfZW4gewo+KwkJdTMyIHN3cmVnX2Jsb2NrX2dhdGluZ19lCTogMjA7Cj4rCQl1MzIgcmVzZXJ2 ZWQJCQk6IDExOwo+KwkJdTMyIHJlZ19jZmdfZ2F0aW5nX2VuCQk6IDE7Cj4rCX0gcmVnMDI2Owo+ Kwo+KwkvKiBOT1RFOiByZWcwMjcgfiByZWcwMzIgYXJlIGFkZGVkIGluIHZkcHUzOHggYXQgcmsz NTg4ICovCj4rCXN0cnVjdCBTVzAyN19DT1JFX1NBRkVfUElYRUxTIHsKPisJCS8vIGNvbG12IGFu ZCByZWNvbiByZXBvcnQgY29vcmQgeCBzYWZlIHBpeGVscwo+KwkJdTMyIGNvcmVfc2FmZV94X3Bp eGVscwk6IDE2Owo+KwkJLy8gY29sbXYgYW5kIHJlY29uIHJlcG9ydCBjb29yZCB5IHNhZmUgcGl4 ZWxzCj4rCQl1MzIgY29yZV9zYWZlX3lfcGl4ZWxzCTogMTY7Cj4rCX0gcmVnMDI3Owo+Kwo+Kwlz dHJ1Y3Qgcmt2ZGVjMl9tdWx0aXBseV9jb3JlX2N0cmwgewo+KwkJdTMyIHN3cmVnX3ZwOV93cl9w cm9iX2lkeAk6IDM7Cj4rCQl1MzIgcmVzZXJ2ZWQwCQkJOiAxOwo+KwkJdTMyIHN3cmVnX3ZwOV9y ZF9wcm9iX2lkeAk6IDM7Cj4rCQl1MzIgcmVzZXJ2ZWQxCQkJOiAxOwo+Kwo+KwkJdTMyIHN3cmVn X3JlZl9yZXFfYWR2YW5jZV9mbGFnCTogMTsKPisJCXUzMiBzd19jb2xtdl9yZXFfYWR2YW5jZV9m bGFnCTogMTsKPisJCXUzMiBzd19wb2Nfb25seV9oaWdoYml0X2ZsYWcJOiAxOwo+KwkJdTMyIHN3 X3BvY19hcmJfZmxhZwkJOiAxOwo+Kwo+KwkJdTMyIHJlc2VydmVkMgkJCTogNDsKPisJCXUzMiBz d19maWxtX2lkeAkJCTogMTA7Cj4rCQl1MzIgcmVzZXJ2ZWQzCQkJOiAyOwo+KwkJdTMyIHN3X3B1 X3JlcV9taXNtYXRjaF9kaXMJOiAxOwo+KwkJdTMyIHN3X2NvbG12X3JlcV9taXNtYXRjaF9kaXMJ OiAxOwo+KwkJdTMyIHJlc2VydmVkNAkJCTogMjsKPisJfSByZWcwMjg7Cj4rCj4rCXN0cnVjdCBT VzAyOV9TQ0FMRV9ET1dOX0NUUkwgewo+KwkJdTMyIHNjYWxlX2Rvd25faG9yX3JhdGlvCTogMjsK PisJCXUzMiByZXNlcnZlZDAJCQk6IDY7Cj4rCQl1MzIgc2NhbGVfZG93bl92cnpfcmF0aW8JOiAy Owo+KwkJdTMyIHJlc2VydmVkMQkJCTogMjI7Cj4rCX0gcmVnMDI5Owo+Kwo+KwlzdHJ1Y3QgU1cw MzJfWV9TQ0FMRV9ET1dOX1RJTEU4eDhfSE9SX1NUUklERSB7Cj4rCQl1MzIgeV9zY2FsZV9kb3du X2hvcl9zdHJpZGUJOiAyMDsKPisJCXUzMiByZXNlcnZlZDAJCQk6IDEyOwo+Kwl9IHJlZzAzMDsK PisKPisJc3RydWN0IFNXMDMxX1VWX1NDQUxFX0RPV05fVElMRTh4OF9IT1JfU1RSSURFIHsKPisJ CXUzMiB1dl9zY2FsZV9kb3duX2hvcl9zdHJpZGUJOiAyMDsKPisJCXUzMiByZXNlcnZlZDAJCQk6 IDEyOwo+Kwl9IHJlZzAzMTsKPisKPisJdTMyICByZWcwMzJfdGltZW91dF90aHJlc2hvbGQ7Cj4r fSBfX3BhY2tlZDsKPisKPisvKiBiYXNlOiBPRkZTRVRfQ09NTU9OX0FERFJfUkVHUyAqLwo+K3N0 cnVjdCBya3ZkZWMyX3JlZ3NfY29tbW9uX2FkZHIgewo+Kwl1MzIgcmVnMTI4X3JsY19iYXNlOwo+ Kwl1MzIgcmVnMTI5X3JsY3dyaXRlX2Jhc2U7Cj4rCXUzMiByZWcxMzBfZGVjb3V0X2Jhc2U7Cj4r CXUzMiByZWcxMzFfY29sbXZfY3VyX2Jhc2U7Cj4rCXUzMiByZWcxMzJfZXJyb3JfcmVmX2Jhc2U7 Cj4rCXUzMiByZWcxMzNfMTQyX3JjYl9iYXNlWzEwXTsKPit9IF9fcGFja2VkOwo+Kwo+Ky8qIGJh c2U6IE9GRlNFVF9DT0RFQ19QQVJBTVNfUkVHUyAqLwo+K3N0cnVjdCBya3ZkZWMyX3JlZ3NfaDI2 NF9wYXJhbXMgewo+KwlzdHJ1Y3Qgcmt2ZGVjMl9oMjZ4X3NldCB7Cj4rCQl1MzIgaDI2eF9mcmFt ZV9vcnNsaWNlCQk6IDE7Cj4rCQl1MzIgaDI2eF9ycHNfbW9kZQkJOiAxOwo+KwkJdTMyIGgyNnhf c3RyZWFtX21vZGUJCTogMTsKPisJCXUzMiBoMjZ4X3N0cmVhbV9sYXN0cGFja2V0CTogMTsKPisJ CXUzMiBoMjY0X2ZpcnN0c2xpY2VfZmxhZwk6IDE7Cj4rCQl1MzIgcmVzZXJ2ZWQJCQk6IDI3Owo+ Kwl9IHJlZzY0Owo+Kwo+Kwl1MzIgIGN1cl90b3BfcG9jOwo+Kwl1MzIgIGN1cl9ib3RfcG9jOwo+ Kwl1MzIgIHJlZzY3Xzk4X3JlZl9wb2NbMzJdOwo+Kwo+KwkvKiBSZWdzIDk5IC0gMTAyICovCj4r CXN0cnVjdCBya3ZkZWMyX2gyNjRfaW5mbyB7Cj4rCQlzdHJ1Y3Qgcmt2ZGVjMl9oMjY0X3JlZl9p bmZvIHsKPisJCQl1MzIgcmVmX2ZpZWxkCQk6IDE7Cj4rCQkJdTMyIHJlZl90b3BmaWVsZF91c2Vk CTogMTsKPisJCQl1MzIgcmVmX2JvdGZpZWxkX3VzZWQJOiAxOwo+KwkJCXUzMiByZWZfY29sbXZf dXNlX2ZsYWcJOiAxOwo+KwkJCXUzMiByZWZfcmVzZXJ2ZWQJOiA0Owo+KwkJfSBfX3BhY2tlZCBy ZWZfaW5mb1s0XTsKPisJfSBfX3BhY2tlZCByZWc5OV8xMDJfcmVmX2luZm9bNF07Cj4rCj4rCXUz MiAgcmVzZXJ2ZWRfMTAzXzExMVs5XTsKPisKPisJc3RydWN0IHJrdmRlYzJfZXJyb3JfcmVmX2lu Zm8gewo+KwkJdTMyIGF2czJfcmVmX2Vycm9yX2ZpZWxkCTogMTsKPisJCXUzMiBhdnMyX3JlZl9l cnJvcl90b3BmaWVsZAk6IDE7Cj4rCQl1MzIgcmVmX2Vycm9yX3RvcGZpZWxkX3VzZWQJOiAxOwo+ KwkJdTMyIHJlZl9lcnJvcl9ib3RmaWVsZF91c2VkCTogMTsKPisJCXUzMiByZXNlcnZlZAkJCTog Mjg7Cj4rCX0gcmVnMTEyOwo+K30gX19wYWNrZWQ7Cj4rCj4rLyogYmFzZTogT0ZGU0VUX0NPREVD X0FERFJfUkVHUyAqLwo+K3N0cnVjdCBya3ZkZWMyX3JlZ3NfaDI2NF9hZGRyIHsKPisJLyogU1dS RUcxNjAgKi8KPisJdTMyICByZWcxNjBfbm9fdXNlOwo+Kwo+KwkvKiBTV1JFRzE2MSAqLwo+Kwl1 MzIgIHBwc19iYXNlOwo+Kwo+KwkvKiBTV1JFRzE2MiAqLwo+Kwl1MzIgIHJlZzE2Ml9ub191c2U7 Cj4rCj4rCS8qIFNXUkVHMTYzICovCj4rCXUzMiAgcnBzX2Jhc2U7Cj4rCj4rCS8qIFNXUkVHMTY0 fjE3OSAqLwo+Kwl1MzIgIHJlZl9iYXNlWzE2XTsKPisKPisJLyogU1dSRUcxODAgKi8KPisJdTMy ICBzY2FubGlzdF9hZGRyOwo+Kwo+KwkvKiBTV1JFRzE4MX4xOTYgKi8KPisJdTMyICBjb2xtdl9i YXNlWzE2XTsKPisKPisJLyogU1dSRUcxOTcgKi8KPisJdTMyICBjYWJhY3RibF9iYXNlOwo+K30g X19wYWNrZWQ7Cj4rCj4rc3RydWN0IHJrdmRlYzJfcmVnc19oMjY0X2hpZ2hwb2Mgewo+KwkvKiBT V1JFRzIwMCAqLwo+KwlzdHJ1Y3Qgcmt2ZGVjMl9yZWZfcG9jX2hpZ2hiaXQgewo+KwkJdTMyIHJl ZjBfcG9jX2hpZ2hiaXQJOiA0Owo+KwkJdTMyIHJlZjFfcG9jX2hpZ2hiaXQJOiA0Owo+KwkJdTMy IHJlZjJfcG9jX2hpZ2hiaXQJOiA0Owo+KwkJdTMyIHJlZjNfcG9jX2hpZ2hiaXQJOiA0Owo+KwkJ dTMyIHJlZjRfcG9jX2hpZ2hiaXQJOiA0Owo+KwkJdTMyIHJlZjVfcG9jX2hpZ2hiaXQJOiA0Owo+ KwkJdTMyIHJlZjZfcG9jX2hpZ2hiaXQJOiA0Owo+KwkJdTMyIHJlZjdfcG9jX2hpZ2hiaXQJOiA0 Owo+Kwl9IHJlZzIwMFs0XTsKPisJc3RydWN0IHJrdmRlYzJfY3VyX3BvY19oaWdoYml0IHsKPisJ CXUzMiBjdXJfcG9jX2hpZ2hiaXQJOiA0Owo+KwkJdTMyIHJlc2VydmVkCQk6IDI4Owo+Kwl9IHJl ZzIwNDsKPit9IF9fcGFja2VkOwo+Kwo+K3N0cnVjdCBya3ZkZWMyX3JlZ3NfaDI2NCB7Cj4rCXN0 cnVjdCBya3ZkZWMyX3JlZ3NfY29tbW9uCQljb21tb247Cj4rCXN0cnVjdCBya3ZkZWMyX3JlZ3Nf aDI2NF9wYXJhbXMJCWgyNjRfcGFyYW07Cj4rCXN0cnVjdCBya3ZkZWMyX3JlZ3NfY29tbW9uX2Fk ZHIJCWNvbW1vbl9hZGRyOwo+KwlzdHJ1Y3Qgcmt2ZGVjMl9yZWdzX2gyNjRfYWRkcgkJaDI2NF9h ZGRyOwo+KwlzdHJ1Y3Qgcmt2ZGVjMl9yZWdzX2gyNjRfaGlnaHBvYwloMjY0X2hpZ2hwb2M7Cj4r fSBfX3BhY2tlZDsKPisKPisjZW5kaWYgLyogX19SS1ZERUNfUkVHU19IX18gKi8KPmRpZmYgLS1n aXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvcmt2ZGVjMi9ya3ZkZWMyLmMgYi9kcml2ZXJzL3N0 YWdpbmcvbWVkaWEvcmt2ZGVjMi9ya3ZkZWMyLmMKPm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj5pbmRl eCAwMDAwMDAwMDAwMDAuLmRiMzdmZGJmYzM2Ngo+LS0tIC9kZXYvbnVsbAo+KysrIGIvZHJpdmVy cy9zdGFnaW5nL21lZGlhL3JrdmRlYzIvcmt2ZGVjMi5jCj5AQCAtMCwwICsxLDExNjAgQEAKPisv KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwo+Ky8qCj4rICogUm9ja2NoaXAg VmlkZW8gRGVjb2RlciAyIGRyaXZlcgo+KyAqCj4rICogQ29weXJpZ2h0IChDKSAyMDI0IENvbGxh Ym9yYSwgTHRkLgo+KyAqICBEZXRsZXYgQ2FzYW5vdmEgPGRldGxldi5jYXNhbm92YUBjb2xsYWJv cmEuY29tPgo+KyAqCj4rICogQmFzZWQgb24gcmt2ZGVjIGRyaXZlciBieSBCb3JpcyBCcmV6aWxs b24gPGJvcmlzLmJyZXppbGxvbkBjb2xsYWJvcmEuY29tPgo+KyAqLwo+Kwo+KyNpbmNsdWRlIDxs aW51eC9jbGsuaD4KPisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4rI2luY2x1ZGUgPGxp bnV4L21vZHVsZS5oPgo+KyNpbmNsdWRlIDxsaW51eC9vZi5oPgo+KyNpbmNsdWRlIDxsaW51eC9w bGF0Zm9ybV9kZXZpY2UuaD4KPisjaW5jbHVkZSA8bGludXgvcG0uaD4KPisjaW5jbHVkZSA8bGlu dXgvcG1fcnVudGltZS5oPgo+KyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4rI2luY2x1ZGUgPGxp bnV4L3ZpZGVvZGV2Mi5oPgo+KyNpbmNsdWRlIDxsaW51eC93b3JrcXVldWUuaD4KPisjaW5jbHVk ZSA8bWVkaWEvdjRsMi1ldmVudC5oPgo+KyNpbmNsdWRlIDxtZWRpYS92NGwyLW1lbTJtZW0uaD4K PisjaW5jbHVkZSA8bWVkaWEvdmlkZW9idWYyLWNvcmUuaD4KPisjaW5jbHVkZSA8bWVkaWEvdmlk ZW9idWYyLXZtYWxsb2MuaD4KPisKPisjaW5jbHVkZSAicmt2ZGVjMi5oIgo+Kwo+K3N0YXRpYyBp bnQgcmt2ZGVjMl90cnlfY3RybChzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKQo+K3sKPisJc3RydWN0 IHJrdmRlYzJfY3R4ICpjdHggPSBjb250YWluZXJfb2YoY3RybC0+aGFuZGxlciwgc3RydWN0IHJr dmRlYzJfY3R4LCBjdHJsX2hkbCk7Cj4rCWNvbnN0IHN0cnVjdCBya3ZkZWMyX2NvZGVkX2ZtdF9k ZXNjICpkZXNjID0gY3R4LT5jb2RlZF9mbXRfZGVzYzsKPisKPisJaWYgKGRlc2MtPm9wcy0+dHJ5 X2N0cmwpCj4rCQlyZXR1cm4gZGVzYy0+b3BzLT50cnlfY3RybChjdHgsIGN0cmwpOwo+Kwo+Kwly ZXR1cm4gMDsKPit9Cj4rCj4rc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfb3BzIHJrdmRl YzJfY3RybF9vcHMgPSB7Cj4rCS50cnlfY3RybCA9IHJrdmRlYzJfdHJ5X2N0cmwsCj4rfTsKPisK PitzdGF0aWMgY29uc3Qgc3RydWN0IHJrdmRlYzJfY3RybF9kZXNjIHJrdmRlYzJfaDI2NF9jdHJs X2Rlc2NzW10gPSB7Cj4rCXsKPisJCS5jZmcuaWQgPSBWNEwyX0NJRF9TVEFURUxFU1NfSDI2NF9E RUNPREVfUEFSQU1TLAo+Kwl9LAo+Kwl7Cj4rCQkuY2ZnLmlkID0gVjRMMl9DSURfU1RBVEVMRVNT X0gyNjRfU1BTLAo+KwkJLmNmZy5vcHMgPSAmcmt2ZGVjMl9jdHJsX29wcywKPisJfSwKPisJewo+ KwkJLmNmZy5pZCA9IFY0TDJfQ0lEX1NUQVRFTEVTU19IMjY0X1BQUywKPisJfSwKPisJewo+KwkJ LmNmZy5pZCA9IFY0TDJfQ0lEX1NUQVRFTEVTU19IMjY0X1NDQUxJTkdfTUFUUklYLAo+Kwl9LAo+ Kwl7Cj4rCQkuY2ZnLmlkID0gVjRMMl9DSURfU1RBVEVMRVNTX0gyNjRfREVDT0RFX01PREUsCj4r CQkuY2ZnLm1pbiA9IFY0TDJfU1RBVEVMRVNTX0gyNjRfREVDT0RFX01PREVfRlJBTUVfQkFTRUQs Cj4rCQkuY2ZnLm1heCA9IFY0TDJfU1RBVEVMRVNTX0gyNjRfREVDT0RFX01PREVfRlJBTUVfQkFT RUQsCj4rCQkuY2ZnLmRlZiA9IFY0TDJfU1RBVEVMRVNTX0gyNjRfREVDT0RFX01PREVfRlJBTUVf QkFTRUQsCj4rCX0sCj4rCXsKPisJCS5jZmcuaWQgPSBWNEwyX0NJRF9TVEFURUxFU1NfSDI2NF9T VEFSVF9DT0RFLAo+KwkJLmNmZy5taW4gPSBWNEwyX1NUQVRFTEVTU19IMjY0X1NUQVJUX0NPREVf QU5ORVhfQiwKPisJCS5jZmcuZGVmID0gVjRMMl9TVEFURUxFU1NfSDI2NF9TVEFSVF9DT0RFX0FO TkVYX0IsCj4rCQkuY2ZnLm1heCA9IFY0TDJfU1RBVEVMRVNTX0gyNjRfU1RBUlRfQ09ERV9BTk5F WF9CLAo+Kwl9LAo+Kwl7Cj4rCQkuY2ZnLmlkID0gVjRMMl9DSURfTVBFR19WSURFT19IMjY0X1BS T0ZJTEUsCj4rCQkuY2ZnLm1pbiA9IFY0TDJfTVBFR19WSURFT19IMjY0X1BST0ZJTEVfQkFTRUxJ TkUsCj4rCQkuY2ZnLm1heCA9IFY0TDJfTVBFR19WSURFT19IMjY0X1BST0ZJTEVfSElHSF8xMCwK PisJCS5jZmcubWVudV9za2lwX21hc2sgPQo+KwkJCUJJVChWNEwyX01QRUdfVklERU9fSDI2NF9Q Uk9GSUxFX0VYVEVOREVEKSwKPisJCS5jZmcuZGVmID0gVjRMMl9NUEVHX1ZJREVPX0gyNjRfUFJP RklMRV9NQUlOLAo+Kwl9LAo+Kwl7Cj4rCQkuY2ZnLmlkID0gVjRMMl9DSURfTVBFR19WSURFT19I MjY0X0xFVkVMLAo+KwkJLmNmZy5taW4gPSBWNEwyX01QRUdfVklERU9fSDI2NF9MRVZFTF8xXzAs Cj4rCQkuY2ZnLm1heCA9IFY0TDJfTVBFR19WSURFT19IMjY0X0xFVkVMXzZfMCwKPisJfSwKPit9 Owo+Kwo+K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgcmt2ZGVjMl9jdHJscyBya3ZkZWMyX2gyNjRfY3Ry bHMgPSB7Cj4rCS5jdHJscyA9IHJrdmRlYzJfaDI2NF9jdHJsX2Rlc2NzLAo+KwkubnVtX2N0cmxz ID0gQVJSQVlfU0laRShya3ZkZWMyX2gyNjRfY3RybF9kZXNjcyksCj4rfTsKPisKPitzdGF0aWMg Y29uc3QgdTMyIHJrdmRlYzJfaDI2NF9kZWNvZGVkX2ZtdHNbXSA9IHsKPisJVjRMMl9QSVhfRk1U X05WMTIKPit9Owo+Kwo+K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgcmt2ZGVjMl9jb2RlZF9mbXRfZGVz YyBya3ZkZWMyX2NvZGVkX2ZtdHNbXSA9IHsKPisJewo+KwkJLmZvdXJjYyA9IFY0TDJfUElYX0ZN VF9IMjY0X1NMSUNFLAo+KwkJLmZybXNpemUgPSB7Cj4rCQkJLm1pbl93aWR0aCA9IDE2LAo+KwkJ CS5tYXhfd2lkdGggPSAgNjU1MjAsCj4rCQkJLnN0ZXBfd2lkdGggPSAxNiwKPisJCQkubWluX2hl aWdodCA9IDE2LAo+KwkJCS5tYXhfaGVpZ2h0ID0gIDY1NTIwLAo+KwkJCS5zdGVwX2hlaWdodCA9 IDE2LAo+KwkJfSwKPisJCS5jdHJscyA9ICZya3ZkZWMyX2gyNjRfY3RybHMsCj4rCQkub3BzID0g JnJrdmRlYzJfaDI2NF9mbXRfb3BzLAo+KwkJLm51bV9kZWNvZGVkX2ZtdHMgPSBBUlJBWV9TSVpF KHJrdmRlYzJfaDI2NF9kZWNvZGVkX2ZtdHMpLAo+KwkJLmRlY29kZWRfZm10cyA9IHJrdmRlYzJf aDI2NF9kZWNvZGVkX2ZtdHMsCj4rCQkuc3Vic3lzdGVtX2ZsYWdzID0gVkIyX1Y0TDJfRkxfU1VQ UE9SVFNfTTJNX0hPTERfQ0FQVFVSRV9CVUYsCj4rCX0sCj4rfTsKPisKPitlbnVtIHJjYl9heGlz IHsKPisJUElDX1dJRFRIID0gMCwKPisJUElDX0hFSUdIVCA9IDEKPit9Owo+Kwo+K3N0cnVjdCBy Y2Jfc2l6ZV9pbmZvIHsKPisJdTggbXVsdGlwbGllcjsKPisJZW51bSByY2JfYXhpcyBheGlzOwo+ K307Cj4rCj4rc3RhdGljIHN0cnVjdCByY2Jfc2l6ZV9pbmZvIHJjYl9zaXplc1tdID0gewo+Kwl7 NiwJUElDX1dJRFRIfSwJLy8gaW50cmFyCj4rCXsxLAlQSUNfV0lEVEh9LAkvLyB0cmFuc2RyIChJ cyBhY3R1YWxseSAwLjQqcGljX3dpZHRoKQo+Kwl7MSwJUElDX0hFSUdIVH0sCS8vIHRyYW5zZGMg KElzIGFjdHVhbGx5IDAuMSpwaWNfaGVpZ2h0KQo+Kwl7MywJUElDX1dJRFRIfSwJLy8gc3RyZWFt ZHIKPisJezYsCVBJQ19XSURUSH0sCS8vIGludGVycgo+Kwl7MywJUElDX0hFSUdIVH0sCS8vIGlu dGVyYwo+Kwl7MjIsCVBJQ19XSURUSH0sCS8vIGRibGtyCj4rCXs2LAlQSUNfV0lEVEh9LAkvLyBz YW9yCj4rCXsxMSwJUElDX1dJRFRIfSwJLy8gZmJjcgo+Kwl7NjcsCVBJQ19IRUlHSFR9LAkvLyBm aWx0YyBjb2wKPit9Owo+Kwo+KyNkZWZpbmUgUkNCX1NJWkUobikgKHJjYl9zaXplc1sobildLm11 bHRpcGxpZXIgKiAocmNiX3NpemVzWyhuKV0uYXhpcyA/IGhlaWdodCA6IHdpZHRoKSkKPisKPitz dGF0aWMgY29uc3Qgc3RydWN0IHJrdmRlYzJfY29kZWRfZm10X2Rlc2MgKgo+K3JrdmRlYzJfZmlu ZF9jb2RlZF9mbXRfZGVzYyh1MzIgZm91cmNjKQo+K3sKPisJdW5zaWduZWQgaW50IGk7Cj4rCj4r CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHJrdmRlYzJfY29kZWRfZm10cyk7IGkrKykgewo+ KwkJaWYgKHJrdmRlYzJfY29kZWRfZm10c1tpXS5mb3VyY2MgPT0gZm91cmNjKQo+KwkJCXJldHVy biAmcmt2ZGVjMl9jb2RlZF9mbXRzW2ldOwo+Kwl9Cj4rCj4rCXJldHVybiBOVUxMOwo+K30KPisK PitzdGF0aWMgdm9pZCBya3ZkZWMyX3Jlc2V0X2ZtdChzdHJ1Y3Qgcmt2ZGVjMl9jdHggKmN0eCwg c3RydWN0IHY0bDJfZm9ybWF0ICpmLAo+KwkJCSAgICAgIHUzMiBmb3VyY2MpCj4rewo+KwltZW1z ZXQoZiwgMCwgc2l6ZW9mKCpmKSk7Cj4rCWYtPmZtdC5waXhfbXAucGl4ZWxmb3JtYXQgPSBmb3Vy Y2M7Cj4rCWYtPmZtdC5waXhfbXAuZmllbGQgPSBWNEwyX0ZJRUxEX05PTkU7Cj4rCWYtPmZtdC5w aXhfbXAuY29sb3JzcGFjZSA9IFY0TDJfQ09MT1JTUEFDRV9SRUM3MDk7Cj4rCWYtPmZtdC5waXhf bXAueWNiY3JfZW5jID0gVjRMMl9ZQ0JDUl9FTkNfREVGQVVMVDsKPisJZi0+Zm10LnBpeF9tcC5x dWFudGl6YXRpb24gPSBWNEwyX1FVQU5USVpBVElPTl9ERUZBVUxUOwo+KwlmLT5mbXQucGl4X21w LnhmZXJfZnVuYyA9IFY0TDJfWEZFUl9GVU5DX0RFRkFVTFQ7Cj4rfQo+Kwo+K3N0YXRpYyB2b2lk IHJrdmRlYzJfcmVzZXRfY29kZWRfZm10KHN0cnVjdCBya3ZkZWMyX2N0eCAqY3R4KQo+K3sKPisJ c3RydWN0IHY0bDJfZm9ybWF0ICpmID0gJmN0eC0+Y29kZWRfZm10Owo+Kwo+KwljdHgtPmNvZGVk X2ZtdF9kZXNjID0gJnJrdmRlYzJfY29kZWRfZm10c1swXTsKPisJcmt2ZGVjMl9yZXNldF9mbXQo Y3R4LCBmLCBjdHgtPmNvZGVkX2ZtdF9kZXNjLT5mb3VyY2MpOwo+Kwo+KwlmLT50eXBlID0gVjRM Ml9CVUZfVFlQRV9WSURFT19PVVRQVVRfTVBMQU5FOwo+KwlmLT5mbXQucGl4X21wLndpZHRoID0g Y3R4LT5jb2RlZF9mbXRfZGVzYy0+ZnJtc2l6ZS5taW5fd2lkdGg7Cj4rCWYtPmZtdC5waXhfbXAu aGVpZ2h0ID0gY3R4LT5jb2RlZF9mbXRfZGVzYy0+ZnJtc2l6ZS5taW5faGVpZ2h0Owo+Kwo+Kwlp ZiAoY3R4LT5jb2RlZF9mbXRfZGVzYy0+b3BzLT5hZGp1c3RfZm10KQo+KwkJY3R4LT5jb2RlZF9m bXRfZGVzYy0+b3BzLT5hZGp1c3RfZm10KGN0eCwgZik7Cj4rfQo+Kwo+K3N0YXRpYyB2b2lkIHJr dmRlYzJfcmVzZXRfZGVjb2RlZF9mbXQoc3RydWN0IHJrdmRlYzJfY3R4ICpjdHgpCj4rewo+Kwlz dHJ1Y3QgdjRsMl9mb3JtYXQgKmYgPSAmY3R4LT5kZWNvZGVkX2ZtdDsKPisKPisJcmt2ZGVjMl9y ZXNldF9mbXQoY3R4LCBmLCBjdHgtPmNvZGVkX2ZtdF9kZXNjLT5kZWNvZGVkX2ZtdHNbMF0pOwo+ KwlmLT50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFX01QTEFORTsKPisJdjRsMl9m aWxsX3BpeGZtdF9tcCgmZi0+Zm10LnBpeF9tcCwKPisJCQkgICAgY3R4LT5jb2RlZF9mbXRfZGVz Yy0+ZGVjb2RlZF9mbXRzWzBdLAo+KwkJCSAgICBjdHgtPmNvZGVkX2ZtdC5mbXQucGl4X21wLndp ZHRoLAo+KwkJCSAgICBjdHgtPmNvZGVkX2ZtdC5mbXQucGl4X21wLmhlaWdodCk7Cj4rCj4rCWN0 eC0+Y29sbXZfb2Zmc2V0ID0gZi0+Zm10LnBpeF9tcC5wbGFuZV9mbXRbMF0uc2l6ZWltYWdlOwo+ Kwo+KwlmLT5mbXQucGl4X21wLnBsYW5lX2ZtdFswXS5zaXplaW1hZ2UgKz0gMTI4ICoKPisJCURJ Vl9ST1VORF9VUChmLT5mbXQucGl4X21wLndpZHRoLCAxNikgKgo+KwkJRElWX1JPVU5EX1VQKGYt PmZtdC5waXhfbXAuaGVpZ2h0LCAxNik7Cj4rfQo+Kwo+K3N0YXRpYyBpbnQgcmt2ZGVjMl9lbnVt X2ZyYW1lc2l6ZXMoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsCj4rCQkJCSAgIHN0cnVj dCB2NGwyX2ZybXNpemVlbnVtICpmc2l6ZSkKPit7Cj4rCWNvbnN0IHN0cnVjdCBya3ZkZWMyX2Nv ZGVkX2ZtdF9kZXNjICpmbXQ7Cj4rCj4rCWlmIChmc2l6ZS0+aW5kZXggIT0gMCkKPisJCXJldHVy biAtRUlOVkFMOwo+Kwo+KwlmbXQgPSBya3ZkZWMyX2ZpbmRfY29kZWRfZm10X2Rlc2MoZnNpemUt PnBpeGVsX2Zvcm1hdCk7Cj4rCWlmICghZm10KQo+KwkJcmV0dXJuIC1FSU5WQUw7Cj4rCj4rCWZz aXplLT50eXBlID0gVjRMMl9GUk1TSVpFX1RZUEVfU1RFUFdJU0U7Cj4rCWZzaXplLT5zdGVwd2lz ZSA9IGZtdC0+ZnJtc2l6ZTsKPisJcmV0dXJuIDA7Cj4rfQo+Kwo+K3N0YXRpYyBpbnQgcmt2ZGVj Ml9xdWVyeWNhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwKPisJCQkgICAgc3RydWN0 IHY0bDJfY2FwYWJpbGl0eSAqY2FwKQo+K3sKPisJc3RydWN0IHJrdmRlYzJfZGV2ICpya3ZkZWMg PSB2aWRlb19kcnZkYXRhKGZpbGUpOwo+KwlzdHJ1Y3QgdmlkZW9fZGV2aWNlICp2ZGV2ID0gdmlk ZW9fZGV2ZGF0YShmaWxlKTsKPisKPisJc3Ryc2NweShjYXAtPmRyaXZlciwgcmt2ZGVjLT5kZXYt PmRyaXZlci0+bmFtZSwKPisJCXNpemVvZihjYXAtPmRyaXZlcikpOwo+KwlzdHJzY3B5KGNhcC0+ Y2FyZCwgdmRldi0+bmFtZSwgc2l6ZW9mKGNhcC0+Y2FyZCkpOwo+KwlzbnByaW50ZihjYXAtPmJ1 c19pbmZvLCBzaXplb2YoY2FwLT5idXNfaW5mbyksICJwbGF0Zm9ybTolcyIsCj4rCQkgcmt2ZGVj LT5kZXYtPmRyaXZlci0+bmFtZSk7Cj4rCXJldHVybiAwOwo+K30KPisKPitzdGF0aWMgaW50IHJr dmRlYzJfdHJ5X2NhcHR1cmVfZm10KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LAo+KwkJ CQkgICBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpCj4rewo+KwlzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0 X21wbGFuZSAqcGl4X21wID0gJmYtPmZtdC5waXhfbXA7Cj4rCXN0cnVjdCBya3ZkZWMyX2N0eCAq Y3R4ID0gZmhfdG9fcmt2ZGVjMl9jdHgocHJpdik7Cj4rCWNvbnN0IHN0cnVjdCBya3ZkZWMyX2Nv ZGVkX2ZtdF9kZXNjICpjb2RlZF9kZXNjOwo+Kwl1bnNpZ25lZCBpbnQgaTsKPisKPisJLyoKPisJ ICogVGhlIGNvZGVjIGNvbnRleHQgc2hvdWxkIHBvaW50IHRvIGEgY29kZWQgZm9ybWF0IGRlc2Ms IGlmIHRoZSBmb3JtYXQKPisJICogb24gdGhlIGNvZGVkIGVuZCBoYXMgbm90IGJlZW4gc2V0IHll dCwgaXQgc2hvdWxkIHBvaW50IHRvIHRoZQo+KwkgKiBkZWZhdWx0IHZhbHVlLgo+KwkgKi8KPisJ Y29kZWRfZGVzYyA9IGN0eC0+Y29kZWRfZm10X2Rlc2M7Cj4rCWlmIChXQVJOX09OKCFjb2RlZF9k ZXNjKSkKPisJCXJldHVybiAtRUlOVkFMOwo+Kwo+Kwlmb3IgKGkgPSAwOyBpIDwgY29kZWRfZGVz Yy0+bnVtX2RlY29kZWRfZm10czsgaSsrKSB7Cj4rCQlpZiAoY29kZWRfZGVzYy0+ZGVjb2RlZF9m bXRzW2ldID09IHBpeF9tcC0+cGl4ZWxmb3JtYXQpCj4rCQkJYnJlYWs7Cj4rCX0KPisKPisJaWYg KGkgPT0gY29kZWRfZGVzYy0+bnVtX2RlY29kZWRfZm10cykKPisJCXBpeF9tcC0+cGl4ZWxmb3Jt YXQgPSBjb2RlZF9kZXNjLT5kZWNvZGVkX2ZtdHNbMF07Cj4rCj4rCS8qIEFsd2F5cyBhcHBseSB0 aGUgZnJtc2l6ZSBjb25zdHJhaW50IG9mIHRoZSBjb2RlZCBlbmQuICovCj4rCXBpeF9tcC0+d2lk dGggPSBtYXgocGl4X21wLT53aWR0aCwgY3R4LT5jb2RlZF9mbXQuZm10LnBpeF9tcC53aWR0aCk7 Cj4rCXBpeF9tcC0+aGVpZ2h0ID0gbWF4KHBpeF9tcC0+aGVpZ2h0LCBjdHgtPmNvZGVkX2ZtdC5m bXQucGl4X21wLmhlaWdodCk7Cj4rCXY0bDJfYXBwbHlfZnJtc2l6ZV9jb25zdHJhaW50cygmcGl4 X21wLT53aWR0aCwKPisJCQkJICAgICAgICZwaXhfbXAtPmhlaWdodCwKPisJCQkJICAgICAgICZj b2RlZF9kZXNjLT5mcm1zaXplKTsKPisKPisJdjRsMl9maWxsX3BpeGZtdF9tcChwaXhfbXAsIHBp eF9tcC0+cGl4ZWxmb3JtYXQsCj4rCQkJICAgIHBpeF9tcC0+d2lkdGgsIHBpeF9tcC0+aGVpZ2h0 KTsKPisKPisJcGl4X21wLT5wbGFuZV9mbXRbMF0uc2l6ZWltYWdlICs9Cj4rCQkxMjggKgo+KwkJ RElWX1JPVU5EX1VQKHBpeF9tcC0+d2lkdGgsIDE2KSAqCj4rCQlESVZfUk9VTkRfVVAocGl4X21w LT5oZWlnaHQsIDE2KTsKPisKPisJcGl4X21wLT5maWVsZCA9IFY0TDJfRklFTERfTk9ORTsKPisK PisJcmV0dXJuIDA7Cj4rfQo+Kwo+K3N0YXRpYyBpbnQgcmt2ZGVjMl90cnlfb3V0cHV0X2ZtdChz dHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwKPisJCQkJICBzdHJ1Y3QgdjRsMl9mb3JtYXQg KmYpCj4rewo+KwlzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0X21wbGFuZSAqcGl4X21wID0gJmYtPmZt dC5waXhfbXA7Cj4rCXN0cnVjdCBya3ZkZWMyX2N0eCAqY3R4ID0gZmhfdG9fcmt2ZGVjMl9jdHgo cHJpdik7Cj4rCWNvbnN0IHN0cnVjdCBya3ZkZWMyX2NvZGVkX2ZtdF9kZXNjICpkZXNjOwo+Kwo+ KwlkZXNjID0gcmt2ZGVjMl9maW5kX2NvZGVkX2ZtdF9kZXNjKHBpeF9tcC0+cGl4ZWxmb3JtYXQp Owo+KwlpZiAoIWRlc2MpIHsKPisJCXBpeF9tcC0+cGl4ZWxmb3JtYXQgPSBya3ZkZWMyX2NvZGVk X2ZtdHNbMF0uZm91cmNjOwo+KwkJZGVzYyA9ICZya3ZkZWMyX2NvZGVkX2ZtdHNbMF07Cj4rCX0K PisKPisJdjRsMl9hcHBseV9mcm1zaXplX2NvbnN0cmFpbnRzKCZwaXhfbXAtPndpZHRoLAo+KwkJ CQkgICAgICAgJnBpeF9tcC0+aGVpZ2h0LAo+KwkJCQkgICAgICAgJmRlc2MtPmZybXNpemUpOwo+ Kwo+KwlwaXhfbXAtPmZpZWxkID0gVjRMMl9GSUVMRF9OT05FOwo+KwkvKiBBbGwgY29kZWQgZm9y bWF0cyBhcmUgY29uc2lkZXJlZCBzaW5nbGUgcGxhbmFyIGZvciBub3cuICovCj4rCXBpeF9tcC0+ bnVtX3BsYW5lcyA9IDE7Cj4rCj4rCWlmIChkZXNjLT5vcHMtPmFkanVzdF9mbXQpIHsKPisJCWlu dCByZXQ7Cj4rCj4rCQlyZXQgPSBkZXNjLT5vcHMtPmFkanVzdF9mbXQoY3R4LCBmKTsKPisJCWlm IChyZXQpCj4rCQkJcmV0dXJuIHJldDsKPisJfQo+Kwo+KwlyZXR1cm4gMDsKPit9Cj4rCj4rc3Rh dGljIGludCBya3ZkZWMyX3NfY2FwdHVyZV9mbXQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnBy aXYsCj4rCQkJCSBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpCj4rewo+KwlzdHJ1Y3Qgcmt2ZGVjMl9j dHggKmN0eCA9IGZoX3RvX3JrdmRlYzJfY3R4KHByaXYpOwo+KwlzdHJ1Y3QgdmIyX3F1ZXVlICp2 cTsKPisJaW50IHJldDsKPisKPisJLyogQ2hhbmdlIG5vdCBhbGxvd2VkIGlmIHF1ZXVlIGlzIGJ1 c3kgKi8KPisJdnEgPSB2NGwyX20ybV9nZXRfdnEoY3R4LT5maC5tMm1fY3R4LAo+KwkJCSAgICAg VjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFX01QTEFORSk7Cj4rCWlmICh2YjJfaXNfYnVzeSh2 cSkpCj4rCQlyZXR1cm4gLUVCVVNZOwo+Kwo+KwlyZXQgPSBya3ZkZWMyX3RyeV9jYXB0dXJlX2Zt dChmaWxlLCBwcml2LCBmKTsKPisJaWYgKHJldCkKPisJCXJldHVybiByZXQ7Cj4rCj4rCWN0eC0+ ZGVjb2RlZF9mbXQgPSAqZjsKPisJcmV0dXJuIDA7Cj4rfQo+Kwo+K3N0YXRpYyBpbnQgcmt2ZGVj Ml9zX291dHB1dF9mbXQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsCj4rCQkJCXN0cnVj dCB2NGwyX2Zvcm1hdCAqZikKPit7Cj4rCXN0cnVjdCBya3ZkZWMyX2N0eCAqY3R4ID0gZmhfdG9f cmt2ZGVjMl9jdHgocHJpdik7Cj4rCXN0cnVjdCB2NGwyX20ybV9jdHggKm0ybV9jdHggPSBjdHgt PmZoLm0ybV9jdHg7Cj4rCWNvbnN0IHN0cnVjdCBya3ZkZWMyX2NvZGVkX2ZtdF9kZXNjICpkZXNj Owo+KwlzdHJ1Y3QgdjRsMl9mb3JtYXQgKmNhcF9mbXQ7Cj4rCXN0cnVjdCB2YjJfcXVldWUgKnBl ZXJfdnEsICp2cTsKPisJaW50IHJldDsKPisKPisJLyoKPisJICogSW4gb3JkZXIgdG8gc3VwcG9y dCBkeW5hbWljIHJlc29sdXRpb24gY2hhbmdlLCB0aGUgZGVjb2RlciBhZG1pdHMKPisJICogYSBy ZXNvbHV0aW9uIGNoYW5nZSwgYXMgbG9uZyBhcyB0aGUgcGl4ZWxmb3JtYXQgcmVtYWlucy4gQ2Fu J3QgYmUKPisJICogZG9uZSBpZiBzdHJlYW1pbmcuCj4rCSAqLwo+Kwl2cSA9IHY0bDJfbTJtX2dl dF92cShtMm1fY3R4LCBWNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVF9NUExBTkUpOwo+KwlpZiAo dmIyX2lzX3N0cmVhbWluZyh2cSkgfHwKPisJICAgICh2YjJfaXNfYnVzeSh2cSkgJiYKPisJICAg ICBmLT5mbXQucGl4X21wLnBpeGVsZm9ybWF0ICE9IGN0eC0+Y29kZWRfZm10LmZtdC5waXhfbXAu cGl4ZWxmb3JtYXQpKQo+KwkJcmV0dXJuIC1FQlVTWTsKPisKPisJLyoKPisJICogU2luY2UgZm9y bWF0IGNoYW5nZSBvbiB0aGUgT1VUUFVUIHF1ZXVlIHdpbGwgcmVzZXQgdGhlIENBUFRVUkUKPisJ ICogcXVldWUsIHdlIGNhbid0IGFsbG93IGRvaW5nIHNvIHdoZW4gdGhlIENBUFRVUkUgcXVldWUg aGFzIGJ1ZmZlcnMKPisJICogYWxsb2NhdGVkLgo+KwkgKi8KPisJcGVlcl92cSA9IHY0bDJfbTJt X2dldF92cShtMm1fY3R4LCBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkVfTVBMQU5FKTsKPisJ aWYgKHZiMl9pc19idXN5KHBlZXJfdnEpKQo+KwkJcmV0dXJuIC1FQlVTWTsKPisKPisJcmV0ID0g cmt2ZGVjMl90cnlfb3V0cHV0X2ZtdChmaWxlLCBwcml2LCBmKTsKPisJaWYgKHJldCkKPisJCXJl dHVybiByZXQ7Cj4rCj4rCWRlc2MgPSBya3ZkZWMyX2ZpbmRfY29kZWRfZm10X2Rlc2MoZi0+Zm10 LnBpeF9tcC5waXhlbGZvcm1hdCk7Cj4rCWlmICghZGVzYykKPisJCXJldHVybiAtRUlOVkFMOwo+ KwljdHgtPmNvZGVkX2ZtdF9kZXNjID0gZGVzYzsKPisJY3R4LT5jb2RlZF9mbXQgPSAqZjsKPisK PisJLyoKPisJICogQ3VycmVudCBkZWNvZGVkIGZvcm1hdCBtaWdodCBoYXZlIGJlY29tZSBpbnZh bGlkIHdpdGggbmV3bHkKPisJICogc2VsZWN0ZWQgY29kZWMsIHNvIHJlc2V0IGl0IHRvIGRlZmF1 bHQganVzdCB0byBiZSBzYWZlIGFuZAo+KwkgKiBrZWVwIGludGVybmFsIGRyaXZlciBzdGF0ZSBz YW5lLiBVc2VyIGlzIG1hbmRhdGVkIHRvIHNldAo+KwkgKiB0aGUgZGVjb2RlZCBmb3JtYXQgYWdh aW4gYWZ0ZXIgd2UgcmV0dXJuLCBzbyB3ZSBkb24ndCBuZWVkCj4rCSAqIGFueXRoaW5nIHNtYXJ0 ZXIuCj4rCSAqCj4rCSAqIE5vdGUgdGhhdCB0aGlzIHdpbGwgcHJvcGFnYXRlIGFueSBzaXplIGNo YW5nZXMgdG8gdGhlIGRlY29kZWQgZm9ybWF0Lgo+KwkgKi8KPisJcmt2ZGVjMl9yZXNldF9kZWNv ZGVkX2ZtdChjdHgpOwo+Kwo+KwkvKiBQcm9wYWdhdGUgY29sb3JzcGFjZSBpbmZvcm1hdGlvbiB0 byBjYXB0dXJlLiAqLwo+KwljYXBfZm10ID0gJmN0eC0+ZGVjb2RlZF9mbXQ7Cj4rCWNhcF9mbXQt PmZtdC5waXhfbXAuY29sb3JzcGFjZSA9IGYtPmZtdC5waXhfbXAuY29sb3JzcGFjZTsKPisJY2Fw X2ZtdC0+Zm10LnBpeF9tcC54ZmVyX2Z1bmMgPSBmLT5mbXQucGl4X21wLnhmZXJfZnVuYzsKPisJ Y2FwX2ZtdC0+Zm10LnBpeF9tcC55Y2Jjcl9lbmMgPSBmLT5mbXQucGl4X21wLnljYmNyX2VuYzsK PisJY2FwX2ZtdC0+Zm10LnBpeF9tcC5xdWFudGl6YXRpb24gPSBmLT5mbXQucGl4X21wLnF1YW50 aXphdGlvbjsKPisKPisJLyogRW5hYmxlIGZvcm1hdCBzcGVjaWZpYyBxdWV1ZSBmZWF0dXJlcyAq Lwo+Kwl2cS0+c3Vic3lzdGVtX2ZsYWdzIHw9IGRlc2MtPnN1YnN5c3RlbV9mbGFnczsKPisKPisJ cmV0dXJuIDA7Cj4rfQo+Kwo+K3N0YXRpYyBpbnQgcmt2ZGVjMl9nX291dHB1dF9mbXQoc3RydWN0 IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsCj4rCQkJCXN0cnVjdCB2NGwyX2Zvcm1hdCAqZikKPit7 Cj4rCXN0cnVjdCBya3ZkZWMyX2N0eCAqY3R4ID0gZmhfdG9fcmt2ZGVjMl9jdHgocHJpdik7Cj4r Cj4rCSpmID0gY3R4LT5jb2RlZF9mbXQ7Cj4rCXJldHVybiAwOwo+K30KPisKPitzdGF0aWMgaW50 IHJrdmRlYzJfZ19jYXB0dXJlX2ZtdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwKPisJ CQkJIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZikKPit7Cj4rCXN0cnVjdCBya3ZkZWMyX2N0eCAqY3R4 ID0gZmhfdG9fcmt2ZGVjMl9jdHgocHJpdik7Cj4rCj4rCSpmID0gY3R4LT5kZWNvZGVkX2ZtdDsK PisJcmV0dXJuIDA7Cj4rfQo+Kwo+K3N0YXRpYyBpbnQgcmt2ZGVjMl9lbnVtX291dHB1dF9mbXQo c3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsCj4rCQkJCSAgIHN0cnVjdCB2NGwyX2ZtdGRl c2MgKmYpCj4rewo+KwlpZiAoZi0+aW5kZXggPj0gQVJSQVlfU0laRShya3ZkZWMyX2NvZGVkX2Zt dHMpKQo+KwkJcmV0dXJuIC1FSU5WQUw7Cj4rCj4rCWYtPnBpeGVsZm9ybWF0ID0gcmt2ZGVjMl9j b2RlZF9mbXRzW2YtPmluZGV4XS5mb3VyY2M7Cj4rCXJldHVybiAwOwo+K30KPisKPitzdGF0aWMg aW50IHJrdmRlYzJfZW51bV9jYXB0dXJlX2ZtdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJp diwKPisJCQkJICAgIHN0cnVjdCB2NGwyX2ZtdGRlc2MgKmYpCj4rewo+KwlzdHJ1Y3Qgcmt2ZGVj Ml9jdHggKmN0eCA9IGZoX3RvX3JrdmRlYzJfY3R4KHByaXYpOwo+Kwo+KwlpZiAoV0FSTl9PTigh Y3R4LT5jb2RlZF9mbXRfZGVzYykpCj4rCQlyZXR1cm4gLUVJTlZBTDsKPisKPisJaWYgKGYtPmlu ZGV4ID49IGN0eC0+Y29kZWRfZm10X2Rlc2MtPm51bV9kZWNvZGVkX2ZtdHMpCj4rCQlyZXR1cm4g LUVJTlZBTDsKPisKPisJZi0+cGl4ZWxmb3JtYXQgPSBjdHgtPmNvZGVkX2ZtdF9kZXNjLT5kZWNv ZGVkX2ZtdHNbZi0+aW5kZXhdOwo+KwlyZXR1cm4gMDsKPit9Cj4rCj4rc3RhdGljIGNvbnN0IHN0 cnVjdCB2NGwyX2lvY3RsX29wcyBya3ZkZWMyX2lvY3RsX29wcyA9IHsKPisJLnZpZGlvY19xdWVy eWNhcCA9IHJrdmRlYzJfcXVlcnljYXAsCj4rCS52aWRpb2NfZW51bV9mcmFtZXNpemVzID0gcmt2 ZGVjMl9lbnVtX2ZyYW1lc2l6ZXMsCj4rCj4rCS52aWRpb2NfdHJ5X2ZtdF92aWRfY2FwX21wbGFu ZSA9IHJrdmRlYzJfdHJ5X2NhcHR1cmVfZm10LAo+KwkudmlkaW9jX3RyeV9mbXRfdmlkX291dF9t cGxhbmUgPSBya3ZkZWMyX3RyeV9vdXRwdXRfZm10LAo+KwkudmlkaW9jX3NfZm10X3ZpZF9vdXRf bXBsYW5lID0gcmt2ZGVjMl9zX291dHB1dF9mbXQsCj4rCS52aWRpb2Nfc19mbXRfdmlkX2NhcF9t cGxhbmUgPSBya3ZkZWMyX3NfY2FwdHVyZV9mbXQsCj4rCS52aWRpb2NfZ19mbXRfdmlkX291dF9t cGxhbmUgPSBya3ZkZWMyX2dfb3V0cHV0X2ZtdCwKPisJLnZpZGlvY19nX2ZtdF92aWRfY2FwX21w bGFuZSA9IHJrdmRlYzJfZ19jYXB0dXJlX2ZtdCwKPisJLnZpZGlvY19lbnVtX2ZtdF92aWRfb3V0 ID0gcmt2ZGVjMl9lbnVtX291dHB1dF9mbXQsCj4rCS52aWRpb2NfZW51bV9mbXRfdmlkX2NhcCA9 IHJrdmRlYzJfZW51bV9jYXB0dXJlX2ZtdCwKPisKPisJLnZpZGlvY19yZXFidWZzID0gdjRsMl9t Mm1faW9jdGxfcmVxYnVmcywKPisJLnZpZGlvY19xdWVyeWJ1ZiA9IHY0bDJfbTJtX2lvY3RsX3F1 ZXJ5YnVmLAo+KwkudmlkaW9jX3FidWYgPSB2NGwyX20ybV9pb2N0bF9xYnVmLAo+KwkudmlkaW9j X2RxYnVmID0gdjRsMl9tMm1faW9jdGxfZHFidWYsCj4rCS52aWRpb2NfcHJlcGFyZV9idWYgPSB2 NGwyX20ybV9pb2N0bF9wcmVwYXJlX2J1ZiwKPisJLnZpZGlvY19jcmVhdGVfYnVmcyA9IHY0bDJf bTJtX2lvY3RsX2NyZWF0ZV9idWZzLAo+KwkudmlkaW9jX2V4cGJ1ZiA9IHY0bDJfbTJtX2lvY3Rs X2V4cGJ1ZiwKPisKPisJLnZpZGlvY19zdWJzY3JpYmVfZXZlbnQgPSB2NGwyX2N0cmxfc3Vic2Ny aWJlX2V2ZW50LAo+KwkudmlkaW9jX3Vuc3Vic2NyaWJlX2V2ZW50ID0gdjRsMl9ldmVudF91bnN1 YnNjcmliZSwKPisKPisJLnZpZGlvY19zdHJlYW1vbiA9IHY0bDJfbTJtX2lvY3RsX3N0cmVhbW9u LAo+KwkudmlkaW9jX3N0cmVhbW9mZiA9IHY0bDJfbTJtX2lvY3RsX3N0cmVhbW9mZiwKPisKPisJ LnZpZGlvY19kZWNvZGVyX2NtZCA9IHY0bDJfbTJtX2lvY3RsX3N0YXRlbGVzc19kZWNvZGVyX2Nt ZCwKPisJLnZpZGlvY190cnlfZGVjb2Rlcl9jbWQgPSB2NGwyX20ybV9pb2N0bF9zdGF0ZWxlc3Nf dHJ5X2RlY29kZXJfY21kLAo+K307Cj4rCj4rc3RhdGljIGludCBya3ZkZWMyX3F1ZXVlX3NldHVw KHN0cnVjdCB2YjJfcXVldWUgKnZxLCB1bnNpZ25lZCBpbnQgKm51bV9idWZmZXJzLAo+KwkJCSAg ICAgICB1bnNpZ25lZCBpbnQgKm51bV9wbGFuZXMsIHVuc2lnbmVkIGludCBzaXplc1tdLAo+KwkJ CSAgICAgIHN0cnVjdCBkZXZpY2UgKmFsbG9jX2RldnNbXSkKPit7Cj4rCXN0cnVjdCBya3ZkZWMy X2N0eCAqY3R4ID0gdmIyX2dldF9kcnZfcHJpdih2cSk7Cj4rCXN0cnVjdCB2NGwyX2Zvcm1hdCAq ZjsKPisJdW5zaWduZWQgaW50IGk7Cj4rCj4rCWlmIChWNEwyX1RZUEVfSVNfT1VUUFVUKHZxLT50 eXBlKSkKPisJCWYgPSAmY3R4LT5jb2RlZF9mbXQ7Cj4rCWVsc2UKPisJCWYgPSAmY3R4LT5kZWNv ZGVkX2ZtdDsKPisKPisJaWYgKCpudW1fcGxhbmVzKSB7Cj4rCQlpZiAoKm51bV9wbGFuZXMgIT0g Zi0+Zm10LnBpeF9tcC5udW1fcGxhbmVzKQo+KwkJCXJldHVybiAtRUlOVkFMOwo+Kwo+KwkJZm9y IChpID0gMDsgaSA8IGYtPmZtdC5waXhfbXAubnVtX3BsYW5lczsgaSsrKSB7Cj4rCQkJaWYgKHNp emVzW2ldIDwgZi0+Zm10LnBpeF9tcC5wbGFuZV9mbXRbaV0uc2l6ZWltYWdlKQo+KwkJCQlyZXR1 cm4gLUVJTlZBTDsKPisJCX0KPisJfSBlbHNlIHsKPisJCSpudW1fcGxhbmVzID0gZi0+Zm10LnBp eF9tcC5udW1fcGxhbmVzOwo+KwkJZm9yIChpID0gMDsgaSA8IGYtPmZtdC5waXhfbXAubnVtX3Bs YW5lczsgaSsrKQo+KwkJCXNpemVzW2ldID0gZi0+Zm10LnBpeF9tcC5wbGFuZV9mbXRbaV0uc2l6 ZWltYWdlOwo+Kwl9Cj4rCj4rCXJldHVybiAwOwo+K30KPisKPitzdGF0aWMgaW50IHJrdmRlYzJf YnVmX3ByZXBhcmUoc3RydWN0IHZiMl9idWZmZXIgKnZiKQo+K3sKPisJc3RydWN0IHZiMl9xdWV1 ZSAqdnEgPSB2Yi0+dmIyX3F1ZXVlOwo+KwlzdHJ1Y3Qgcmt2ZGVjMl9jdHggKmN0eCA9IHZiMl9n ZXRfZHJ2X3ByaXYodnEpOwo+KwlzdHJ1Y3QgdjRsMl9mb3JtYXQgKmY7Cj4rCXVuc2lnbmVkIGlu dCBpOwo+Kwo+KwlpZiAoVjRMMl9UWVBFX0lTX09VVFBVVCh2cS0+dHlwZSkpCj4rCQlmID0gJmN0 eC0+Y29kZWRfZm10Owo+KwllbHNlCj4rCQlmID0gJmN0eC0+ZGVjb2RlZF9mbXQ7Cj4rCj4rCWZv ciAoaSA9IDA7IGkgPCBmLT5mbXQucGl4X21wLm51bV9wbGFuZXM7ICsraSkgewo+KwkJdTMyIHNp emVpbWFnZSA9IGYtPmZtdC5waXhfbXAucGxhbmVfZm10W2ldLnNpemVpbWFnZTsKPisKPisJCWlm ICh2YjJfcGxhbmVfc2l6ZSh2YiwgaSkgPCBzaXplaW1hZ2UpCj4rCQkJcmV0dXJuIC1FSU5WQUw7 Cj4rCX0KPisKPisJLyoKPisJICogQnVmZmVyJ3MgYnl0ZXN1c2VkIG11c3QgYmUgd3JpdHRlbiBi eSBkcml2ZXIgZm9yIENBUFRVUkUgYnVmZmVycy4KPisJICogKGZvciBPVVRQVVQgYnVmZmVycywg aWYgdXNlcnNwYWNlIHBhc3NlcyAwIGJ5dGVzdXNlZCwgdjRsMi1jb3JlIHNldHMKPisJICogaXQg dG8gYnVmZmVyIGxlbmd0aCkuCj4rCSAqLwo+KwlpZiAoVjRMMl9UWVBFX0lTX0NBUFRVUkUodnEt PnR5cGUpKQo+KwkJdmIyX3NldF9wbGFuZV9wYXlsb2FkKHZiLCAwLCBmLT5mbXQucGl4X21wLnBs YW5lX2ZtdFswXS5zaXplaW1hZ2UpOwo+Kwo+KwlyZXR1cm4gMDsKPit9Cj4rCj4rc3RhdGljIHZv aWQgcmt2ZGVjMl9idWZfcXVldWUoc3RydWN0IHZiMl9idWZmZXIgKnZiKQo+K3sKPisJc3RydWN0 IHJrdmRlYzJfY3R4ICpjdHggPSB2YjJfZ2V0X2Rydl9wcml2KHZiLT52YjJfcXVldWUpOwo+Kwlz dHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICp2YnVmID0gdG9fdmIyX3Y0bDJfYnVmZmVyKHZiKTsKPisK PisJdjRsMl9tMm1fYnVmX3F1ZXVlKGN0eC0+ZmgubTJtX2N0eCwgdmJ1Zik7Cj4rfQo+Kwo+K3N0 YXRpYyBpbnQgcmt2ZGVjMl9idWZfb3V0X3ZhbGlkYXRlKHN0cnVjdCB2YjJfYnVmZmVyICp2YikK Pit7Cj4rCXN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKnZidWYgPSB0b192YjJfdjRsMl9idWZmZXIo dmIpOwo+Kwo+Kwl2YnVmLT5maWVsZCA9IFY0TDJfRklFTERfTk9ORTsKPisJcmV0dXJuIDA7Cj4r fQo+Kwo+K3N0YXRpYyB2b2lkIHJrdmRlYzJfYnVmX3JlcXVlc3RfY29tcGxldGUoc3RydWN0IHZi Ml9idWZmZXIgKnZiKQo+K3sKPisJc3RydWN0IHJrdmRlYzJfY3R4ICpjdHggPSB2YjJfZ2V0X2Ry dl9wcml2KHZiLT52YjJfcXVldWUpOwo+Kwo+Kwl2NGwyX2N0cmxfcmVxdWVzdF9jb21wbGV0ZSh2 Yi0+cmVxX29iai5yZXEsICZjdHgtPmN0cmxfaGRsKTsKPit9Cj4rCj4rc3RhdGljIGludCBya3Zk ZWMyX3N0YXJ0X3N0cmVhbWluZyhzdHJ1Y3QgdmIyX3F1ZXVlICpxLCB1bnNpZ25lZCBpbnQgY291 bnQpCj4rewo+KwlzdHJ1Y3Qgcmt2ZGVjMl9jdHggKmN0eCA9IHZiMl9nZXRfZHJ2X3ByaXYocSk7 Cj4rCWNvbnN0IHN0cnVjdCBya3ZkZWMyX2NvZGVkX2ZtdF9kZXNjICpkZXNjOwo+KwlpbnQgcmV0 LCBpOwo+Kwl1MzIgd2lkdGgsIGhlaWdodDsKPisKPisJaWYgKFY0TDJfVFlQRV9JU19DQVBUVVJF KHEtPnR5cGUpKQo+KwkJcmV0dXJuIDA7Cj4rCj4rCWRlc2MgPSBjdHgtPmNvZGVkX2ZtdF9kZXNj Owo+KwlpZiAoV0FSTl9PTighZGVzYykpCj4rCQlyZXR1cm4gLUVJTlZBTDsKPisKPisJd2lkdGgg PSBjdHgtPmRlY29kZWRfZm10LmZtdC5waXhfbXAud2lkdGg7Cj4rCWhlaWdodCA9IGN0eC0+ZGVj b2RlZF9mbXQuZm10LnBpeF9tcC5oZWlnaHQ7Cj4rCWZvciAoaSA9IDA7IGkgPCBSS1ZERUMyX1JD Ql9DT1VOVDsgaSsrKSB7Cj4rCQljdHgtPnJjYl9idWZzW2ldLmNwdSA9Cj4rCQkJZG1hX2FsbG9j X2NvaGVyZW50KGN0eC0+ZGV2LT5kZXYsCj4rCQkJCQkgICBSQ0JfU0laRShpKSwKPisJCQkJCSAg ICZjdHgtPnJjYl9idWZzW2ldLmRtYSwKPisJCQkJCSAgIEdGUF9LRVJORUwpOwo+KwkJaWYgKCFj dHgtPnJjYl9idWZzW2ldLmNwdSkgewo+KwkJCXJldCA9IC1FTk9NRU07Cj4rCQkJZ290byBlcnJf cmNiOwo+KwkJfQo+Kwl9Cj4rCj4rCWlmIChkZXNjLT5vcHMtPnN0YXJ0KSB7Cj4rCQlyZXQgPSBk ZXNjLT5vcHMtPnN0YXJ0KGN0eCk7Cj4rCQlpZiAocmV0KQo+KwkJCWdvdG8gZXJyX29wc19zdGFy dDsKPisJfQo+Kwo+KwlyZXR1cm4gMDsKPisKPitlcnJfb3BzX3N0YXJ0Ogo+K2Vycl9yY2I6Cj4r CWktLTsKPisJd2hpbGUgKGkpIHsKPisJCWRtYV9mcmVlX2NvaGVyZW50KGN0eC0+ZGV2LT5kZXYs Cj4rCQkJCSAgUkNCX1NJWkUoaSksCj4rCQkJCSAgY3R4LT5yY2JfYnVmc1tpXS5jcHUsCj4rCQkJ CSAgY3R4LT5yY2JfYnVmc1tpXS5kbWEpOwo+KwkJaS0tOwo+Kwl9Cj4rCj4rCXJldHVybiByZXQ7 Cj4rfQo+Kwo+K3N0YXRpYyB2b2lkIHJrdmRlYzJfcXVldWVfY2xlYW51cChzdHJ1Y3QgdmIyX3F1 ZXVlICp2cSwgdTMyIHN0YXRlKQo+K3sKPisJc3RydWN0IHJrdmRlYzJfY3R4ICpjdHggPSB2YjJf Z2V0X2Rydl9wcml2KHZxKTsKPisKPisJd2hpbGUgKHRydWUpIHsKPisJCXN0cnVjdCB2YjJfdjRs Ml9idWZmZXIgKnZidWY7Cj4rCj4rCQlpZiAoVjRMMl9UWVBFX0lTX09VVFBVVCh2cS0+dHlwZSkp Cj4rCQkJdmJ1ZiA9IHY0bDJfbTJtX3NyY19idWZfcmVtb3ZlKGN0eC0+ZmgubTJtX2N0eCk7Cj4r CQllbHNlCj4rCQkJdmJ1ZiA9IHY0bDJfbTJtX2RzdF9idWZfcmVtb3ZlKGN0eC0+ZmgubTJtX2N0 eCk7Cj4rCj4rCQlpZiAoIXZidWYpCj4rCQkJYnJlYWs7Cj4rCj4rCQl2NGwyX2N0cmxfcmVxdWVz dF9jb21wbGV0ZSh2YnVmLT52YjJfYnVmLnJlcV9vYmoucmVxLAo+KwkJCQkJICAgJmN0eC0+Y3Ry bF9oZGwpOwo+KwkJdjRsMl9tMm1fYnVmX2RvbmUodmJ1Ziwgc3RhdGUpOwo+Kwl9Cj4rfQo+Kwo+ K3N0YXRpYyB2b2lkIHJrdmRlYzJfc3RvcF9zdHJlYW1pbmcoc3RydWN0IHZiMl9xdWV1ZSAqcSkK Pit7Cj4rCXN0cnVjdCBya3ZkZWMyX2N0eCAqY3R4ID0gdmIyX2dldF9kcnZfcHJpdihxKTsKPisJ aW50IGk7Cj4rCj4rCWlmIChWNEwyX1RZUEVfSVNfT1VUUFVUKHEtPnR5cGUpKSB7Cj4rCQljb25z dCBzdHJ1Y3Qgcmt2ZGVjMl9jb2RlZF9mbXRfZGVzYyAqZGVzYyA9IGN0eC0+Y29kZWRfZm10X2Rl c2M7Cj4rCj4rCQlpZiAoV0FSTl9PTighZGVzYykpCj4rCQkJcmV0dXJuOwo+Kwo+KwkJaWYgKGRl c2MtPm9wcy0+c3RvcCkKPisJCQlkZXNjLT5vcHMtPnN0b3AoY3R4KTsKPisJfSBlbHNlIHsKPisJ CXUzMiB3aWR0aCA9IGN0eC0+ZGVjb2RlZF9mbXQuZm10LnBpeF9tcC53aWR0aDsKPisJCXUzMiBo ZWlnaHQgPSBjdHgtPmRlY29kZWRfZm10LmZtdC5waXhfbXAuaGVpZ2h0Owo+Kwo+KwkJZm9yIChp ID0gMDsgaSA8IFJLVkRFQzJfUkNCX0NPVU5UOyBpKyspIHsKPisJCQlkbWFfZnJlZV9jb2hlcmVu dChjdHgtPmRldi0+ZGV2LAo+KwkJCQkJICBSQ0JfU0laRShpKSwKPisJCQkJCSAgY3R4LT5yY2Jf YnVmc1tpXS5jcHUsCj4rCQkJCQkgIGN0eC0+cmNiX2J1ZnNbaV0uZG1hKTsKPisJCX0KPisJfQo+ Kwo+Kwlya3ZkZWMyX3F1ZXVlX2NsZWFudXAocSwgVkIyX0JVRl9TVEFURV9FUlJPUik7Cj4rfQo+ Kwo+K3N0YXRpYyBjb25zdCBzdHJ1Y3QgdmIyX29wcyBya3ZkZWMyX3F1ZXVlX29wcyA9IHsKPisJ LnF1ZXVlX3NldHVwID0gcmt2ZGVjMl9xdWV1ZV9zZXR1cCwKPisJLmJ1Zl9wcmVwYXJlID0gcmt2 ZGVjMl9idWZfcHJlcGFyZSwKPisJLmJ1Zl9xdWV1ZSA9IHJrdmRlYzJfYnVmX3F1ZXVlLAo+Kwku YnVmX291dF92YWxpZGF0ZSA9IHJrdmRlYzJfYnVmX291dF92YWxpZGF0ZSwKPisJLmJ1Zl9yZXF1 ZXN0X2NvbXBsZXRlID0gcmt2ZGVjMl9idWZfcmVxdWVzdF9jb21wbGV0ZSwKPisJLnN0YXJ0X3N0 cmVhbWluZyA9IHJrdmRlYzJfc3RhcnRfc3RyZWFtaW5nLAo+Kwkuc3RvcF9zdHJlYW1pbmcgPSBy a3ZkZWMyX3N0b3Bfc3RyZWFtaW5nLAo+Kwkud2FpdF9wcmVwYXJlID0gdmIyX29wc193YWl0X3By ZXBhcmUsCj4rCS53YWl0X2ZpbmlzaCA9IHZiMl9vcHNfd2FpdF9maW5pc2gsCj4rfTsKPisKPitz dGF0aWMgaW50IHJrdmRlYzJfcmVxdWVzdF92YWxpZGF0ZShzdHJ1Y3QgbWVkaWFfcmVxdWVzdCAq cmVxKQo+K3sKPisJdW5zaWduZWQgaW50IGNvdW50Owo+Kwo+Kwljb3VudCA9IHZiMl9yZXF1ZXN0 X2J1ZmZlcl9jbnQocmVxKTsKPisJaWYgKCFjb3VudCkKPisJCXJldHVybiAtRU5PRU5UOwo+Kwll bHNlIGlmIChjb3VudCA+IDEpCj4rCQlyZXR1cm4gLUVJTlZBTDsKPisKPisJcmV0dXJuIHZiMl9y ZXF1ZXN0X3ZhbGlkYXRlKHJlcSk7Cj4rfQo+Kwo+K3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWVkaWFf ZGV2aWNlX29wcyBya3ZkZWMyX21lZGlhX29wcyA9IHsKPisJLnJlcV92YWxpZGF0ZSA9IHJrdmRl YzJfcmVxdWVzdF92YWxpZGF0ZSwKPisJLnJlcV9xdWV1ZSA9IHY0bDJfbTJtX3JlcXVlc3RfcXVl dWUsCj4rfTsKPisKPitzdGF0aWMgdm9pZCBya3ZkZWMyX2pvYl9maW5pc2hfbm9fcG0oc3RydWN0 IHJrdmRlYzJfY3R4ICpjdHgsCj4rCQkJCSAgICAgZW51bSB2YjJfYnVmZmVyX3N0YXRlIHJlc3Vs dCkKPit7Cj4rCWlmIChjdHgtPmNvZGVkX2ZtdF9kZXNjLT5vcHMtPmRvbmUpIHsKPisJCXN0cnVj dCB2YjJfdjRsMl9idWZmZXIgKnNyY19idWYsICpkc3RfYnVmOwo+Kwo+KwkJc3JjX2J1ZiA9IHY0 bDJfbTJtX25leHRfc3JjX2J1ZihjdHgtPmZoLm0ybV9jdHgpOwo+KwkJZHN0X2J1ZiA9IHY0bDJf bTJtX25leHRfZHN0X2J1ZihjdHgtPmZoLm0ybV9jdHgpOwo+KwkJY3R4LT5jb2RlZF9mbXRfZGVz Yy0+b3BzLT5kb25lKGN0eCwgc3JjX2J1ZiwgZHN0X2J1ZiwgcmVzdWx0KTsKPisJfQo+Kwo+Kwl2 NGwyX20ybV9idWZfZG9uZV9hbmRfam9iX2ZpbmlzaChjdHgtPmRldi0+bTJtX2RldiwgY3R4LT5m aC5tMm1fY3R4LAo+KwkJCQkJIHJlc3VsdCk7Cj4rfQo+Kwo+K3N0YXRpYyB2b2lkIHJrdmRlYzJf am9iX2ZpbmlzaChzdHJ1Y3Qgcmt2ZGVjMl9jdHggKmN0eCwKPisJCQkgICAgICAgZW51bSB2YjJf YnVmZmVyX3N0YXRlIHJlc3VsdCkKPit7Cj4rCXN0cnVjdCBya3ZkZWMyX2RldiAqcmt2ZGVjID0g Y3R4LT5kZXY7Cj4rCj4rCXBtX3J1bnRpbWVfbWFya19sYXN0X2J1c3kocmt2ZGVjLT5kZXYpOwo+ KwlwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZChya3ZkZWMtPmRldik7Cj4rCXJrdmRlYzJfam9i X2ZpbmlzaF9ub19wbShjdHgsIHJlc3VsdCk7Cj4rfQo+Kwo+K3ZvaWQgcmt2ZGVjMl9ydW5fcHJl YW1ibGUoc3RydWN0IHJrdmRlYzJfY3R4ICpjdHgsIHN0cnVjdCBya3ZkZWMyX3J1biAqcnVuKQo+ K3sKPisJc3RydWN0IG1lZGlhX3JlcXVlc3QgKnNyY19yZXE7Cj4rCj4rCW1lbXNldChydW4sIDAs IHNpemVvZigqcnVuKSk7Cj4rCj4rCXJ1bi0+YnVmcy5zcmMgPSB2NGwyX20ybV9uZXh0X3NyY19i dWYoY3R4LT5maC5tMm1fY3R4KTsKPisJcnVuLT5idWZzLmRzdCA9IHY0bDJfbTJtX25leHRfZHN0 X2J1ZihjdHgtPmZoLm0ybV9jdHgpOwo+Kwo+KwkvKiBBcHBseSByZXF1ZXN0KHMpIGNvbnRyb2xz IGlmIG5lZWRlZC4gKi8KPisJc3JjX3JlcSA9IHJ1bi0+YnVmcy5zcmMtPnZiMl9idWYucmVxX29i ai5yZXE7Cj4rCWlmIChzcmNfcmVxKQo+KwkJdjRsMl9jdHJsX3JlcXVlc3Rfc2V0dXAoc3JjX3Jl cSwgJmN0eC0+Y3RybF9oZGwpOwo+Kwo+Kwl2NGwyX20ybV9idWZfY29weV9tZXRhZGF0YShydW4t PmJ1ZnMuc3JjLCBydW4tPmJ1ZnMuZHN0LCB0cnVlKTsKPit9Cj4rCj4rdm9pZCBya3ZkZWMyX3J1 bl9wb3N0YW1ibGUoc3RydWN0IHJrdmRlYzJfY3R4ICpjdHgsIHN0cnVjdCBya3ZkZWMyX3J1biAq cnVuKQo+K3sKPisJc3RydWN0IG1lZGlhX3JlcXVlc3QgKnNyY19yZXEgPSBydW4tPmJ1ZnMuc3Jj LT52YjJfYnVmLnJlcV9vYmoucmVxOwo+Kwo+KwlpZiAoc3JjX3JlcSkKPisJCXY0bDJfY3RybF9y ZXF1ZXN0X2NvbXBsZXRlKHNyY19yZXEsICZjdHgtPmN0cmxfaGRsKTsKPit9Cj4rCj4rc3RhdGlj IHZvaWQgcmt2ZGVjMl9kZXZpY2VfcnVuKHZvaWQgKnByaXYpCj4rewo+KwlzdHJ1Y3Qgcmt2ZGVj Ml9jdHggKmN0eCA9IHByaXY7Cj4rCXN0cnVjdCBya3ZkZWMyX2RldiAqcmt2ZGVjID0gY3R4LT5k ZXY7Cj4rCWNvbnN0IHN0cnVjdCBya3ZkZWMyX2NvZGVkX2ZtdF9kZXNjICpkZXNjID0gY3R4LT5j b2RlZF9mbXRfZGVzYzsKPisJaW50IHJldDsKPisKPisJaWYgKFdBUk5fT04oIWRlc2MpKQo+KwkJ cmV0dXJuOwo+Kwo+KwlyZXQgPSBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KHJrdmRlYy0+ZGV2 KTsKPisJaWYgKHJldCA8IDApIHsKPisJCXJrdmRlYzJfam9iX2ZpbmlzaF9ub19wbShjdHgsIFZC Ml9CVUZfU1RBVEVfRVJST1IpOwo+KwkJcmV0dXJuOwo+Kwl9Cj4rCj4rCXJldCA9IGRlc2MtPm9w cy0+cnVuKGN0eCk7Cj4rCWlmIChyZXQpCj4rCQlya3ZkZWMyX2pvYl9maW5pc2goY3R4LCBWQjJf QlVGX1NUQVRFX0VSUk9SKTsKPit9Cj4rCj4rc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX20ybV9v cHMgcmt2ZGVjMl9tMm1fb3BzID0gewo+KwkuZGV2aWNlX3J1biA9IHJrdmRlYzJfZGV2aWNlX3J1 biwKPit9Owo+Kwo+K3N0YXRpYyBpbnQgcmt2ZGVjMl9xdWV1ZV9pbml0KHZvaWQgKnByaXYsCj4r CQkJICAgICAgc3RydWN0IHZiMl9xdWV1ZSAqc3JjX3ZxLAo+KwkJCSAgICAgc3RydWN0IHZiMl9x dWV1ZSAqZHN0X3ZxKQo+K3sKPisJc3RydWN0IHJrdmRlYzJfY3R4ICpjdHggPSBwcml2Owo+Kwlz dHJ1Y3Qgcmt2ZGVjMl9kZXYgKnJrdmRlYyA9IGN0eC0+ZGV2Owo+KwlpbnQgcmV0Owo+Kwo+Kwlz cmNfdnEtPnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVF9NUExBTkU7Cj4rCXNyY192 cS0+aW9fbW9kZXMgPSBWQjJfTU1BUCB8IFZCMl9ETUFCVUY7Cj4rCXNyY192cS0+ZHJ2X3ByaXYg PSBjdHg7Cj4rCXNyY192cS0+b3BzID0gJnJrdmRlYzJfcXVldWVfb3BzOwo+KwlzcmNfdnEtPm1l bV9vcHMgPSAmdmIyX2RtYV9jb250aWdfbWVtb3BzOwo+Kwo+KwkvKgo+KwkgKiBEcml2ZXIgZG9l cyBtb3N0bHkgc2VxdWVudGlhbCBhY2Nlc3MsIHNvIHNhY3JpZmljZSBUTEIgZWZmaWNpZW5jeQo+ KwkgKiBmb3IgZmFzdGVyIGFsbG9jYXRpb24uIEFsc28sIG5vIENQVSBhY2Nlc3Mgb24gdGhlIHNv dXJjZSBxdWV1ZSwKPisJICogc28gbm8ga2VybmVsIG1hcHBpbmcgbmVlZGVkLgo+KwkgKi8KPisJ c3JjX3ZxLT5kbWFfYXR0cnMgPSBETUFfQVRUUl9BTExPQ19TSU5HTEVfUEFHRVMgfAo+KwkJCSAg ICBETUFfQVRUUl9OT19LRVJORUxfTUFQUElORzsKPisJc3JjX3ZxLT5idWZfc3RydWN0X3NpemUg PSBzaXplb2Yoc3RydWN0IHY0bDJfbTJtX2J1ZmZlcik7Cj4rCXNyY192cS0+dGltZXN0YW1wX2Zs YWdzID0gVjRMMl9CVUZfRkxBR19USU1FU1RBTVBfQ09QWTsKPisJc3JjX3ZxLT5sb2NrID0gJnJr dmRlYy0+dmRldl9sb2NrOwo+KwlzcmNfdnEtPmRldiA9IHJrdmRlYy0+djRsMl9kZXYuZGV2Owo+ KwlzcmNfdnEtPnN1cHBvcnRzX3JlcXVlc3RzID0gdHJ1ZTsKPisJc3JjX3ZxLT5yZXF1aXJlc19y ZXF1ZXN0cyA9IHRydWU7Cj4rCj4rCXJldCA9IHZiMl9xdWV1ZV9pbml0KHNyY192cSk7Cj4rCWlm IChyZXQpCj4rCQlyZXR1cm4gcmV0Owo+Kwo+Kwlkc3RfdnEtPmJpZGlyZWN0aW9uYWwgPSB0cnVl Owo+Kwlkc3RfdnEtPm1lbV9vcHMgPSAmdmIyX2RtYV9jb250aWdfbWVtb3BzOwo+Kwlkc3RfdnEt PmRtYV9hdHRycyA9IERNQV9BVFRSX0FMTE9DX1NJTkdMRV9QQUdFUyB8Cj4rCQkJICAgIERNQV9B VFRSX05PX0tFUk5FTF9NQVBQSU5HOwo+Kwlkc3RfdnEtPnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJ REVPX0NBUFRVUkVfTVBMQU5FOwo+Kwlkc3RfdnEtPmlvX21vZGVzID0gVkIyX01NQVAgfCBWQjJf RE1BQlVGOwo+Kwlkc3RfdnEtPmRydl9wcml2ID0gY3R4Owo+Kwlkc3RfdnEtPm9wcyA9ICZya3Zk ZWMyX3F1ZXVlX29wczsKPisJZHN0X3ZxLT5idWZfc3RydWN0X3NpemUgPSBzaXplb2Yoc3RydWN0 IHJrdmRlYzJfZGVjb2RlZF9idWZmZXIpOwo+Kwlkc3RfdnEtPnRpbWVzdGFtcF9mbGFncyA9IFY0 TDJfQlVGX0ZMQUdfVElNRVNUQU1QX0NPUFk7Cj4rCWRzdF92cS0+bG9jayA9ICZya3ZkZWMtPnZk ZXZfbG9jazsKPisJZHN0X3ZxLT5kZXYgPSBya3ZkZWMtPnY0bDJfZGV2LmRldjsKPisKPisJcmV0 dXJuIHZiMl9xdWV1ZV9pbml0KGRzdF92cSk7Cj4rfQo+Kwo+K3N0YXRpYyBpbnQgcmt2ZGVjMl9h ZGRfY3RybHMoc3RydWN0IHJrdmRlYzJfY3R4ICpjdHgsCj4rCQkJICAgICBjb25zdCBzdHJ1Y3Qg cmt2ZGVjMl9jdHJscyAqY3RybHMpCj4rewo+Kwl1bnNpZ25lZCBpbnQgaTsKPisKPisJZm9yIChp ID0gMDsgaSA8IGN0cmxzLT5udW1fY3RybHM7IGkrKykgewo+KwkJY29uc3Qgc3RydWN0IHY0bDJf Y3RybF9jb25maWcgKmNmZyA9ICZjdHJscy0+Y3RybHNbaV0uY2ZnOwo+Kwo+KwkJdjRsMl9jdHJs X25ld19jdXN0b20oJmN0eC0+Y3RybF9oZGwsIGNmZywgY3R4KTsKPisJCWlmIChjdHgtPmN0cmxf aGRsLmVycm9yKQo+KwkJCXJldHVybiBjdHgtPmN0cmxfaGRsLmVycm9yOwo+Kwl9Cj4rCj4rCXJl dHVybiAwOwo+K30KPisKPitzdGF0aWMgaW50IHJrdmRlYzJfaW5pdF9jdHJscyhzdHJ1Y3Qgcmt2 ZGVjMl9jdHggKmN0eCkKPit7Cj4rCXVuc2lnbmVkIGludCBpLCBuY3RybHMgPSAwOwo+KwlpbnQg cmV0Owo+Kwo+Kwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShya3ZkZWMyX2NvZGVkX2ZtdHMp OyBpKyspCj4rCQluY3RybHMgKz0gcmt2ZGVjMl9jb2RlZF9mbXRzW2ldLmN0cmxzLT5udW1fY3Ry bHM7Cj4rCj4rCXY0bDJfY3RybF9oYW5kbGVyX2luaXQoJmN0eC0+Y3RybF9oZGwsIG5jdHJscyk7 Cj4rCj4rCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHJrdmRlYzJfY29kZWRfZm10cyk7IGkr Kykgewo+KwkJcmV0ID0gcmt2ZGVjMl9hZGRfY3RybHMoY3R4LCBya3ZkZWMyX2NvZGVkX2ZtdHNb aV0uY3RybHMpOwo+KwkJaWYgKHJldCkKPisJCQlnb3RvIGVycl9mcmVlX2hhbmRsZXI7Cj4rCX0K PisKPisJcmV0ID0gdjRsMl9jdHJsX2hhbmRsZXJfc2V0dXAoJmN0eC0+Y3RybF9oZGwpOwo+Kwlp ZiAocmV0KQo+KwkJZ290byBlcnJfZnJlZV9oYW5kbGVyOwo+Kwo+KwljdHgtPmZoLmN0cmxfaGFu ZGxlciA9ICZjdHgtPmN0cmxfaGRsOwo+KwlyZXR1cm4gMDsKPisKPitlcnJfZnJlZV9oYW5kbGVy Ogo+Kwl2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZjdHgtPmN0cmxfaGRsKTsKPisJcmV0dXJuIHJl dDsKPit9Cj4rCj4rc3RhdGljIGludCBya3ZkZWMyX29wZW4oc3RydWN0IGZpbGUgKmZpbHApCj4r ewo+KwlzdHJ1Y3Qgcmt2ZGVjMl9kZXYgKnJrdmRlYyA9IHZpZGVvX2RydmRhdGEoZmlscCk7Cj4r CXN0cnVjdCBya3ZkZWMyX2N0eCAqY3R4Owo+KwlpbnQgcmV0Owo+Kwo+KwljdHggPSBremFsbG9j KHNpemVvZigqY3R4KSwgR0ZQX0tFUk5FTCk7Cj4rCWlmICghY3R4KQo+KwkJcmV0dXJuIC1FTk9N RU07Cj4rCj4rCWN0eC0+ZGV2ID0gcmt2ZGVjOwo+Kwlya3ZkZWMyX3Jlc2V0X2NvZGVkX2ZtdChj dHgpOwo+Kwlya3ZkZWMyX3Jlc2V0X2RlY29kZWRfZm10KGN0eCk7Cj4rCXY0bDJfZmhfaW5pdCgm Y3R4LT5maCwgdmlkZW9fZGV2ZGF0YShmaWxwKSk7Cj4rCj4rCXJldCA9IHJrdmRlYzJfaW5pdF9j dHJscyhjdHgpOwo+KwlpZiAocmV0KQo+KwkJZ290byBlcnJfZnJlZV9jdHg7Cj4rCj4rCWN0eC0+ ZmgubTJtX2N0eCA9IHY0bDJfbTJtX2N0eF9pbml0KHJrdmRlYy0+bTJtX2RldiwgY3R4LAo+KwkJ CQkJICAgIHJrdmRlYzJfcXVldWVfaW5pdCk7Cj4rCWlmIChJU19FUlIoY3R4LT5maC5tMm1fY3R4 KSkgewo+KwkJcmV0ID0gUFRSX0VSUihjdHgtPmZoLm0ybV9jdHgpOwo+KwkJZ290byBlcnJfY2xl YW51cF9jdHJsczsKPisJfQo+Kwo+KwlmaWxwLT5wcml2YXRlX2RhdGEgPSAmY3R4LT5maDsKPisJ djRsMl9maF9hZGQoJmN0eC0+ZmgpOwo+Kwo+KwlyZXR1cm4gMDsKPisKPitlcnJfY2xlYW51cF9j dHJsczoKPisJdjRsMl9jdHJsX2hhbmRsZXJfZnJlZSgmY3R4LT5jdHJsX2hkbCk7Cj4rCj4rZXJy X2ZyZWVfY3R4Ogo+KwlrZnJlZShjdHgpOwo+KwlyZXR1cm4gcmV0Owo+K30KPisKPitzdGF0aWMg aW50IHJrdmRlYzJfcmVsZWFzZShzdHJ1Y3QgZmlsZSAqZmlscCkKPit7Cj4rCXN0cnVjdCBya3Zk ZWMyX2N0eCAqY3R4ID0gZmhfdG9fcmt2ZGVjMl9jdHgoZmlscC0+cHJpdmF0ZV9kYXRhKTsKPisK PisJdjRsMl9maF9kZWwoJmN0eC0+ZmgpOwo+Kwl2NGwyX20ybV9jdHhfcmVsZWFzZShjdHgtPmZo Lm0ybV9jdHgpOwo+Kwl2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZjdHgtPmN0cmxfaGRsKTsKPisJ djRsMl9maF9leGl0KCZjdHgtPmZoKTsKPisJa2ZyZWUoY3R4KTsKPisKPisJcmV0dXJuIDA7Cj4r fQo+Kwo+K3N0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9maWxlX29wZXJhdGlvbnMgcmt2ZGVjMl9m b3BzID0gewo+Kwkub3duZXIgPSBUSElTX01PRFVMRSwKPisJLm9wZW4gPSBya3ZkZWMyX29wZW4s Cj4rCS5yZWxlYXNlID0gcmt2ZGVjMl9yZWxlYXNlLAo+KwkucG9sbCA9IHY0bDJfbTJtX2ZvcF9w b2xsLAo+KwkudW5sb2NrZWRfaW9jdGwgPSB2aWRlb19pb2N0bDIsCj4rCS5tbWFwID0gdjRsMl9t Mm1fZm9wX21tYXAsCj4rfTsKPisKPitzdGF0aWMgaW50IHJrdmRlYzJfdjRsMl9pbml0KHN0cnVj dCBya3ZkZWMyX2RldiAqcmt2ZGVjKQo+K3sKPisJaW50IHJldDsKPisKPisJcmV0ID0gdjRsMl9k ZXZpY2VfcmVnaXN0ZXIocmt2ZGVjLT5kZXYsICZya3ZkZWMtPnY0bDJfZGV2KTsKPisJaWYgKHJl dCkgewo+KwkJZGV2X2Vycihya3ZkZWMtPmRldiwgIkZhaWxlZCB0byByZWdpc3RlciBWNEwyIGRl dmljZVxuIik7Cj4rCQlyZXR1cm4gcmV0Owo+Kwl9Cj4rCj4rCXJrdmRlYy0+bTJtX2RldiA9IHY0 bDJfbTJtX2luaXQoJnJrdmRlYzJfbTJtX29wcyk7Cj4rCWlmIChJU19FUlIocmt2ZGVjLT5tMm1f ZGV2KSkgewo+KwkJdjRsMl9lcnIoJnJrdmRlYy0+djRsMl9kZXYsICJGYWlsZWQgdG8gaW5pdCBt ZW0ybWVtIGRldmljZVxuIik7Cj4rCQlyZXQgPSBQVFJfRVJSKHJrdmRlYy0+bTJtX2Rldik7Cj4r CQlnb3RvIGVycl91bnJlZ2lzdGVyX3Y0bDI7Cj4rCX0KPisKPisJcmt2ZGVjLT5tZGV2LmRldiA9 IHJrdmRlYy0+ZGV2Owo+KwlzdHJzY3B5KHJrdmRlYy0+bWRldi5tb2RlbCwgInJrdmRlYzIiLCBz aXplb2Yocmt2ZGVjLT5tZGV2Lm1vZGVsKSk7Cj4rCXN0cnNjcHkocmt2ZGVjLT5tZGV2LmJ1c19p bmZvLCAicGxhdGZvcm06cmt2ZGVjMiIsCj4rCQlzaXplb2Yocmt2ZGVjLT5tZGV2LmJ1c19pbmZv KSk7Cj4rCW1lZGlhX2RldmljZV9pbml0KCZya3ZkZWMtPm1kZXYpOwo+Kwlya3ZkZWMtPm1kZXYu b3BzID0gJnJrdmRlYzJfbWVkaWFfb3BzOwo+Kwlya3ZkZWMtPnY0bDJfZGV2Lm1kZXYgPSAmcmt2 ZGVjLT5tZGV2Owo+Kwo+Kwlya3ZkZWMtPnZkZXYubG9jayA9ICZya3ZkZWMtPnZkZXZfbG9jazsK PisJcmt2ZGVjLT52ZGV2LnY0bDJfZGV2ID0gJnJrdmRlYy0+djRsMl9kZXY7Cj4rCXJrdmRlYy0+ dmRldi5mb3BzID0gJnJrdmRlYzJfZm9wczsKPisJcmt2ZGVjLT52ZGV2LnJlbGVhc2UgPSB2aWRl b19kZXZpY2VfcmVsZWFzZV9lbXB0eTsKPisJcmt2ZGVjLT52ZGV2LnZmbF9kaXIgPSBWRkxfRElS X00yTTsKPisJcmt2ZGVjLT52ZGV2LmRldmljZV9jYXBzID0gVjRMMl9DQVBfU1RSRUFNSU5HIHwK PisJCQkJICAgVjRMMl9DQVBfVklERU9fTTJNX01QTEFORTsKPisJcmt2ZGVjLT52ZGV2LmlvY3Rs X29wcyA9ICZya3ZkZWMyX2lvY3RsX29wczsKPisJdmlkZW9fc2V0X2RydmRhdGEoJnJrdmRlYy0+ dmRldiwgcmt2ZGVjKTsKPisJc3Ryc2NweShya3ZkZWMtPnZkZXYubmFtZSwgInJrdmRlYzIiLCBz aXplb2Yocmt2ZGVjLT52ZGV2Lm5hbWUpKTsKPisKPisJcmV0ID0gdmlkZW9fcmVnaXN0ZXJfZGV2 aWNlKCZya3ZkZWMtPnZkZXYsIFZGTF9UWVBFX1ZJREVPLCAtMSk7Cj4rCWlmIChyZXQpIHsKPisJ CXY0bDJfZXJyKCZya3ZkZWMtPnY0bDJfZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHZpZGVvIGRl dmljZVxuIik7Cj4rCQlnb3RvIGVycl9jbGVhbnVwX21jOwo+Kwl9Cj4rCj4rCXJldCA9IHY0bDJf bTJtX3JlZ2lzdGVyX21lZGlhX2NvbnRyb2xsZXIocmt2ZGVjLT5tMm1fZGV2LCAmcmt2ZGVjLT52 ZGV2LAo+KwkJCQkJCSBNRURJQV9FTlRfRl9QUk9DX1ZJREVPX0RFQ09ERVIpOwo+KwlpZiAocmV0 KSB7Cj4rCQl2NGwyX2Vycigmcmt2ZGVjLT52NGwyX2RldiwKPisJCQkgIkZhaWxlZCB0byBpbml0 aWFsaXplIFY0TDIgTTJNIG1lZGlhIGNvbnRyb2xsZXJcbiIpOwo+KwkJZ290byBlcnJfdW5yZWdp c3Rlcl92ZGV2Owo+Kwl9Cj4rCj4rCXJldCA9IG1lZGlhX2RldmljZV9yZWdpc3Rlcigmcmt2ZGVj LT5tZGV2KTsKPisJaWYgKHJldCkgewo+KwkJdjRsMl9lcnIoJnJrdmRlYy0+djRsMl9kZXYsICJG YWlsZWQgdG8gcmVnaXN0ZXIgbWVkaWEgZGV2aWNlXG4iKTsKPisJCWdvdG8gZXJyX3VucmVnaXN0 ZXJfbWM7Cj4rCX0KPisKPisJcmV0dXJuIDA7Cj4rCj4rZXJyX3VucmVnaXN0ZXJfbWM6Cj4rCXY0 bDJfbTJtX3VucmVnaXN0ZXJfbWVkaWFfY29udHJvbGxlcihya3ZkZWMtPm0ybV9kZXYpOwo+Kwo+ K2Vycl91bnJlZ2lzdGVyX3ZkZXY6Cj4rCXZpZGVvX3VucmVnaXN0ZXJfZGV2aWNlKCZya3ZkZWMt PnZkZXYpOwo+Kwo+K2Vycl9jbGVhbnVwX21jOgo+KwltZWRpYV9kZXZpY2VfY2xlYW51cCgmcmt2 ZGVjLT5tZGV2KTsKPisJdjRsMl9tMm1fcmVsZWFzZShya3ZkZWMtPm0ybV9kZXYpOwo+Kwo+K2Vy cl91bnJlZ2lzdGVyX3Y0bDI6Cj4rCXY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoJnJrdmRlYy0+djRs Ml9kZXYpOwo+KwlyZXR1cm4gcmV0Owo+K30KPisKPitzdGF0aWMgdm9pZCBya3ZkZWMyX3Y0bDJf Y2xlYW51cChzdHJ1Y3Qgcmt2ZGVjMl9kZXYgKnJrdmRlYykKPit7Cj4rCW1lZGlhX2RldmljZV91 bnJlZ2lzdGVyKCZya3ZkZWMtPm1kZXYpOwo+Kwl2NGwyX20ybV91bnJlZ2lzdGVyX21lZGlhX2Nv bnRyb2xsZXIocmt2ZGVjLT5tMm1fZGV2KTsKPisJdmlkZW9fdW5yZWdpc3Rlcl9kZXZpY2UoJnJr dmRlYy0+dmRldik7Cj4rCW1lZGlhX2RldmljZV9jbGVhbnVwKCZya3ZkZWMtPm1kZXYpOwo+Kwl2 NGwyX20ybV9yZWxlYXNlKHJrdmRlYy0+bTJtX2Rldik7Cj4rCXY0bDJfZGV2aWNlX3VucmVnaXN0 ZXIoJnJrdmRlYy0+djRsMl9kZXYpOwo+K30KPisKPitzdGF0aWMgaXJxcmV0dXJuX3Qgcmt2ZGVj Ml9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpwcml2KQo+K3sKPisJc3RydWN0IHJrdmRlYzJf ZGV2ICpya3ZkZWMgPSBwcml2Owo+KwllbnVtIHZiMl9idWZmZXJfc3RhdGUgc3RhdGU7Cj4rCXUz MiBzdGF0dXM7Cj4rCj4rCXN0YXR1cyA9IHJlYWRsKHJrdmRlYy0+cmVncyArIFJLVkRFQzJfUkVH X1NUQV9JTlQpOwo+KwlzdGF0ZSA9IChzdGF0dXMgJiBTVEFfSU5UX0RFQ19SRFlfU1RBKSA/Cj4r CQlWQjJfQlVGX1NUQVRFX0RPTkUgOiBWQjJfQlVGX1NUQVRFX0VSUk9SOwo+Kwo+KwkvKiBDbGVh ciBpbnRlcnJ1cHQgc3RhdHVzICovCj4rCXdyaXRlbCgwLCBya3ZkZWMtPnJlZ3MgKyBSS1ZERUMy X1JFR19TVEFfSU5UKTsKPisJaWYgKGNhbmNlbF9kZWxheWVkX3dvcmsoJnJrdmRlYy0+d2F0Y2hk b2dfd29yaykpIHsKPisJCXN0cnVjdCBya3ZkZWMyX2N0eCAqY3R4Owo+Kwo+KwkJY3R4ID0gdjRs Ml9tMm1fZ2V0X2N1cnJfcHJpdihya3ZkZWMtPm0ybV9kZXYpOwo+KwkJcmt2ZGVjMl9qb2JfZmlu aXNoKGN0eCwgc3RhdGUpOwo+Kwl9Cj4rCj4rCXJldHVybiBJUlFfSEFORExFRDsKPit9Cj4rCj4r c3RhdGljIHZvaWQgcmt2ZGVjMl93YXRjaGRvZ19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y aykKPit7Cj4rCXN0cnVjdCBya3ZkZWMyX2RldiAqcmt2ZGVjID0gY29udGFpbmVyX29mKHRvX2Rl bGF5ZWRfd29yayh3b3JrKSwgc3RydWN0IHJrdmRlYzJfZGV2LAo+KwkJCSAgICAgIHdhdGNoZG9n X3dvcmspOwo+KwlzdHJ1Y3Qgcmt2ZGVjMl9jdHggKmN0eDsKPisKPisJY3R4ID0gdjRsMl9tMm1f Z2V0X2N1cnJfcHJpdihya3ZkZWMtPm0ybV9kZXYpOwo+KwlpZiAoY3R4KSB7Cj4rCQlkZXZfZXJy KHJrdmRlYy0+ZGV2LCAiRnJhbWUgcHJvY2Vzc2luZyB0aW1lZCBvdXQhXG4iKTsKPisJCXdyaXRl bChSS1ZERUMyX1JFR19ERUNfSVJRX0RJU0FCTEUsIHJrdmRlYy0+cmVncyArIFJLVkRFQzJfUkVH X0lNUE9SVEFOVF9FTik7Cj4rCQl3cml0ZWwoMCwgcmt2ZGVjLT5yZWdzICsgUktWREVDMl9SRUdf REVDX0UpOwo+KwkJcmt2ZGVjMl9qb2JfZmluaXNoKGN0eCwgVkIyX0JVRl9TVEFURV9FUlJPUik7 Cj4rCX0KPit9Cj4rCj4rc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2Zfcmt2ZGVj Ml9tYXRjaFtdID0gewo+Kwl7IC5jb21wYXRpYmxlID0gInJvY2tjaGlwLHJrMzU4OC12ZGVjMiIg fSwKPisJeyAvKiBzZW50aW5lbCAqLyB9Cj4rfTsKPitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBv Zl9ya3ZkZWMyX21hdGNoKTsKPisKPitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHJrdmRlYzJf Y2xrX25hbWVzW10gPSB7Cj4rCSJheGkiLAo+KwkiYWhiIiwKPisJImNvcmUiLAo+KwkiY2FiYWMi LAo+KwkiaGV2Y19jYWJhYyIsCj4rfTsKPisKPitzdGF0aWMgaW50IHJrdmRlYzJfcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPit7Cj4rCXN0cnVjdCBya3ZkZWMyX2RldiAqcmt2 ZGVjOwo+Kwl1bnNpZ25lZCBpbnQgaTsKPisJaW50IHJldCwgaXJxOwo+Kwo+Kwlya3ZkZWMgPSBk ZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpya3ZkZWMpLCBHRlBfS0VSTkVMKTsKPisJ aWYgKCFya3ZkZWMpCj4rCQlyZXR1cm4gLUVOT01FTTsKPisKPisJcGxhdGZvcm1fc2V0X2RydmRh dGEocGRldiwgcmt2ZGVjKTsKPisJcmt2ZGVjLT5kZXYgPSAmcGRldi0+ZGV2Owo+Kwo+KwltdXRl eF9pbml0KCZya3ZkZWMtPnZkZXZfbG9jayk7Cj4rCUlOSVRfREVMQVlFRF9XT1JLKCZya3ZkZWMt PndhdGNoZG9nX3dvcmssIHJrdmRlYzJfd2F0Y2hkb2dfZnVuYyk7Cj4rCj4rCXJrdmRlYy0+Y2xv Y2tzID0gZGV2bV9rY2FsbG9jKCZwZGV2LT5kZXYsIEFSUkFZX1NJWkUocmt2ZGVjMl9jbGtfbmFt ZXMpLAo+KwkJCQkgICAgICBzaXplb2YoKnJrdmRlYy0+Y2xvY2tzKSwgR0ZQX0tFUk5FTCk7Cj4r CWlmICghcmt2ZGVjLT5jbG9ja3MpCj4rCQlyZXR1cm4gLUVOT01FTTsKPisKPisJZm9yIChpID0g MDsgaSA8IEFSUkFZX1NJWkUocmt2ZGVjMl9jbGtfbmFtZXMpOyBpKyspCj4rCQlya3ZkZWMtPmNs b2Nrc1tpXS5pZCA9IHJrdmRlYzJfY2xrX25hbWVzW2ldOwo+Kwo+KwlyZXQgPSBkZXZtX2Nsa19i dWxrX2dldCgmcGRldi0+ZGV2LCBBUlJBWV9TSVpFKHJrdmRlYzJfY2xrX25hbWVzKSwKPisJCQkJ cmt2ZGVjLT5jbG9ja3MpOwo+KwlpZiAocmV0KQo+KwkJcmV0dXJuIHJldDsKPisKPisJcmt2ZGVj LT5yZWdzID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApOwo+KwlpZiAo SVNfRVJSKHJrdmRlYy0+cmVncykpCj4rCQlyZXR1cm4gUFRSX0VSUihya3ZkZWMtPnJlZ3MpOwo+ Kwo+KwlyZXQgPSBkbWFfc2V0X2NvaGVyZW50X21hc2soJnBkZXYtPmRldiwgRE1BX0JJVF9NQVNL KDMyKSk7Cj4rCWlmIChyZXQpIHsKPisJCWRldl9lcnIoJnBkZXYtPmRldiwgIkNvdWxkIG5vdCBz ZXQgRE1BIGNvaGVyZW50IG1hc2suXG4iKTsKPisJCXJldHVybiByZXQ7Cj4rCX0KPisKPisJdmIy X2RtYV9jb250aWdfc2V0X21heF9zZWdfc2l6ZSgmcGRldi0+ZGV2LCBETUFfQklUX01BU0soMzIp KTsKPisKPisJaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsKPisJaWYgKGlycSA8PSAw KQo+KwkJcmV0dXJuIC1FTlhJTzsKPisKPisJcmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2ly cSgmcGRldi0+ZGV2LCBpcnEsIE5VTEwsCj4rCQkJCQlya3ZkZWMyX2lycV9oYW5kbGVyLCBJUlFG X09ORVNIT1QsCj4rCQkJCQlkZXZfbmFtZSgmcGRldi0+ZGV2KSwgcmt2ZGVjKTsKPisJaWYgKHJl dCkgewo+KwkJZGV2X2VycigmcGRldi0+ZGV2LCAiQ291bGQgbm90IHJlcXVlc3QgdmRlYzIgSVJR XG4iKTsKPisJCXJldHVybiByZXQ7Cj4rCX0KPisKPisJcG1fcnVudGltZV9zZXRfYXV0b3N1c3Bl bmRfZGVsYXkoJnBkZXYtPmRldiwgMTAwKTsKPisJcG1fcnVudGltZV91c2VfYXV0b3N1c3BlbmQo JnBkZXYtPmRldik7Cj4rCXBtX3J1bnRpbWVfZW5hYmxlKCZwZGV2LT5kZXYpOwo+Kwo+KwlyZXQg PSBjbGtfYnVsa19wcmVwYXJlX2VuYWJsZShBUlJBWV9TSVpFKHJrdmRlYzJfY2xrX25hbWVzKSwg cmt2ZGVjLT5jbG9ja3MpOwo+KwlpZiAocmV0KSB7Cj4rCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJD b3VsZCBub3Qgc3RhcnQgY2xvY2tzXG4iKTsKPisJCXJldHVybiByZXQ7Cj4rCX0KPisKPisJcmV0 ID0gcmt2ZGVjMl92NGwyX2luaXQocmt2ZGVjKTsKPisJaWYgKHJldCkKPisJCWdvdG8gZXJyX2Rp c2FibGVfcnVudGltZV9wbTsKPisKPisJcmV0dXJuIDA7Cj4rCj4rZXJyX2Rpc2FibGVfcnVudGlt ZV9wbToKPisJcG1fcnVudGltZV9kb250X3VzZV9hdXRvc3VzcGVuZCgmcGRldi0+ZGV2KTsKPisJ cG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOwo+KwlyZXR1cm4gcmV0Owo+K30KPisKPitz dGF0aWMgdm9pZCBya3ZkZWMyX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ K3sKPisJc3RydWN0IHJrdmRlYzJfZGV2ICpya3ZkZWMgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShw ZGV2KTsKPisKPisJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZya3ZkZWMtPndhdGNoZG9nX3dv cmspOwo+Kwo+Kwlya3ZkZWMyX3Y0bDJfY2xlYW51cChya3ZkZWMpOwo+KwlwbV9ydW50aW1lX2Rp c2FibGUoJnBkZXYtPmRldik7Cj4rCXBtX3J1bnRpbWVfZG9udF91c2VfYXV0b3N1c3BlbmQoJnBk ZXYtPmRldik7Cj4rfQo+Kwo+KyNpZmRlZiBDT05GSUdfUE0KPitzdGF0aWMgaW50IHJrdmRlYzJf cnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQo+K3sKPisJc3RydWN0IHJrdmRlYzJf ZGV2ICpya3ZkZWMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPisKPisJcmV0dXJuIGNsa19idWxr X3ByZXBhcmVfZW5hYmxlKEFSUkFZX1NJWkUocmt2ZGVjMl9jbGtfbmFtZXMpLAo+KwkJCQkgICAg ICAgcmt2ZGVjLT5jbG9ja3MpOwo+K30KPisKPitzdGF0aWMgaW50IHJrdmRlYzJfcnVudGltZV9z dXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPit7Cj4rCXN0cnVjdCBya3ZkZWMyX2RldiAqcmt2 ZGVjID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4rCj4rCWNsa19idWxrX2Rpc2FibGVfdW5wcmVw YXJlKEFSUkFZX1NJWkUocmt2ZGVjMl9jbGtfbmFtZXMpLAo+KwkJCQkgICBya3ZkZWMtPmNsb2Nr cyk7Cj4rCXJldHVybiAwOwo+K30KPisjZW5kaWYKPisKPitzdGF0aWMgY29uc3Qgc3RydWN0IGRl dl9wbV9vcHMgcmt2ZGVjMl9wbV9vcHMgPSB7Cj4rCVNFVF9TWVNURU1fU0xFRVBfUE1fT1BTKHBt X3J1bnRpbWVfZm9yY2Vfc3VzcGVuZCwKPisJCQkJcG1fcnVudGltZV9mb3JjZV9yZXN1bWUpCj4r CVNFVF9SVU5USU1FX1BNX09QUyhya3ZkZWMyX3J1bnRpbWVfc3VzcGVuZCwgcmt2ZGVjMl9ydW50 aW1lX3Jlc3VtZSwgTlVMTCkKPit9Owo+Kwo+K3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVy IHJrdmRlYzJfZHJpdmVyID0gewo+KwkucHJvYmUgPSBya3ZkZWMyX3Byb2JlLAo+KwkucmVtb3Zl X25ldyA9IHJrdmRlYzJfcmVtb3ZlLAo+KwkuZHJpdmVyID0gewo+KwkJICAgLm5hbWUgPSAicmt2 ZGVjMiIsCj4rCQkgICAub2ZfbWF0Y2hfdGFibGUgPSBvZl9ya3ZkZWMyX21hdGNoLAo+KwkJICAg LnBtID0gJnJrdmRlYzJfcG1fb3BzLAo+Kwl9LAo+K307Cj4rbW9kdWxlX3BsYXRmb3JtX2RyaXZl cihya3ZkZWMyX2RyaXZlcik7Cj4rCj4rTU9EVUxFX0FVVEhPUigiRGV0bGV2IENhc2Fub3ZhIDxk ZXRsZXYuY2FzYW5vdmFAY29sbGFib3JhLmNvbT4iKTsKPitNT0RVTEVfREVTQ1JJUFRJT04oIlJv Y2tjaGlwIFZpZGVvIERlY29kZXIgMiBkcml2ZXIiKTsKPitNT0RVTEVfTElDRU5TRSgiR1BMIik7 Cj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL3JrdmRlYzIvcmt2ZGVjMi5oIGIv ZHJpdmVycy9zdGFnaW5nL21lZGlhL3JrdmRlYzIvcmt2ZGVjMi5oCj5uZXcgZmlsZSBtb2RlIDEw MDY0NAo+aW5kZXggMDAwMDAwMDAwMDAwLi4zOTgyYzAzODc4NjkKPi0tLSAvZGV2L251bGwKPisr KyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9ya3ZkZWMyL3JrdmRlYzIuaAo+QEAgLTAsMCArMSwx MjMgQEAKPisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+Ky8qCj4rICogUm9j a2NoaXAgVmlkZW8gRGVjb2RlciAyIGRyaXZlcgo+KyAqCj4rICogQ29weXJpZ2h0IChDKSAyMDI0 IENvbGxhYm9yYSwgTHRkLgo+KyAqICBEZXRsZXYgQ2FzYW5vdmEgPGRldGxldi5jYXNhbm92YUBj b2xsYWJvcmEuY29tPgo+KyAqCj4rICogQmFzZWQgb24gcmt2ZGVjIGRyaXZlciBieSBCb3JpcyBC cmV6aWxsb24gPGJvcmlzLmJyZXppbGxvbkBjb2xsYWJvcmEuY29tPgo+KyAqLwo+KyNpZm5kZWYg UktWREVDX0hfCj4rI2RlZmluZSBSS1ZERUNfSF8KPisKPisjaW5jbHVkZSA8bGludXgvcGxhdGZv cm1fZGV2aWNlLmg+Cj4rI2luY2x1ZGUgPGxpbnV4L3ZpZGVvZGV2Mi5oPgo+KyNpbmNsdWRlIDxs aW51eC93YWl0Lmg+Cj4rI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+KyNpbmNsdWRlIDxsaW51eC9k bWEtbWFwcGluZy5oPgo+Kwo+KyNpbmNsdWRlIDxtZWRpYS92NGwyLWN0cmxzLmg+Cj4rI2luY2x1 ZGUgPG1lZGlhL3Y0bDItZGV2aWNlLmg+Cj4rI2luY2x1ZGUgPG1lZGlhL3Y0bDItaW9jdGwuaD4K PisjaW5jbHVkZSA8bWVkaWEvdmlkZW9idWYyLWNvcmUuaD4KPisjaW5jbHVkZSA8bWVkaWEvdmlk ZW9idWYyLWRtYS1jb250aWcuaD4KPisKPisjaW5jbHVkZSAicmt2ZGVjMi1yZWdzLmgiCj4rCj4r I2RlZmluZSBSS1ZERUMyX1JDQl9DT1VOVAkxMAo+Kwo+K3N0cnVjdCBya3ZkZWMyX2N0eDsKPisK PitzdHJ1Y3Qgcmt2ZGVjMl9hdXhfYnVmIHsKPisJdm9pZCAqY3B1Owo+KwlkbWFfYWRkcl90IGRt YTsKPisJc2l6ZV90IHNpemU7Cj4rfTsKPisKPitzdHJ1Y3Qgcmt2ZGVjMl9jdHJsX2Rlc2Mgewo+ KwlzdHJ1Y3QgdjRsMl9jdHJsX2NvbmZpZyBjZmc7Cj4rfTsKPisKPitzdHJ1Y3Qgcmt2ZGVjMl9j dHJscyB7Cj4rCWNvbnN0IHN0cnVjdCBya3ZkZWMyX2N0cmxfZGVzYyAqY3RybHM7Cj4rCXVuc2ln bmVkIGludCBudW1fY3RybHM7Cj4rfTsKPisKPitzdHJ1Y3Qgcmt2ZGVjMl9ydW4gewo+KwlzdHJ1 Y3Qgewo+KwkJc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqc3JjOwo+KwkJc3RydWN0IHZiMl92NGwy X2J1ZmZlciAqZHN0Owo+Kwl9IGJ1ZnM7Cj4rfTsKPisKPitzdHJ1Y3Qgcmt2ZGVjMl9kZWNvZGVk X2J1ZmZlciB7Cj4rCS8qIE11c3QgYmUgdGhlIGZpcnN0IGZpZWxkIGluIHRoaXMgc3RydWN0LiAq Lwo+KwlzdHJ1Y3QgdjRsMl9tMm1fYnVmZmVyIGJhc2U7Cj4rfTsKPisKPitzdGF0aWMgaW5saW5l IHN0cnVjdCBya3ZkZWMyX2RlY29kZWRfYnVmZmVyICoKPit2YjJfdG9fcmt2ZGVjMl9kZWNvZGVk X2J1ZihzdHJ1Y3QgdmIyX2J1ZmZlciAqYnVmKQo+K3sKPisJcmV0dXJuIGNvbnRhaW5lcl9vZihi dWYsIHN0cnVjdCBya3ZkZWMyX2RlY29kZWRfYnVmZmVyLAo+KwkJCSAgICBiYXNlLnZiLnZiMl9i dWYpOwo+K30KPisKPitzdHJ1Y3Qgcmt2ZGVjMl9jb2RlZF9mbXRfb3BzIHsKPisJaW50ICgqYWRq dXN0X2ZtdCkoc3RydWN0IHJrdmRlYzJfY3R4ICpjdHgsCj4rCQkJICBzdHJ1Y3QgdjRsMl9mb3Jt YXQgKmYpOwo+KwlpbnQgKCpzdGFydCkoc3RydWN0IHJrdmRlYzJfY3R4ICpjdHgpOwo+Kwl2b2lk ICgqc3RvcCkoc3RydWN0IHJrdmRlYzJfY3R4ICpjdHgpOwo+KwlpbnQgKCpydW4pKHN0cnVjdCBy a3ZkZWMyX2N0eCAqY3R4KTsKPisJdm9pZCAoKmRvbmUpKHN0cnVjdCBya3ZkZWMyX2N0eCAqY3R4 LCBzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICpzcmNfYnVmLAo+KwkJICAgICBzdHJ1Y3QgdmIyX3Y0 bDJfYnVmZmVyICpkc3RfYnVmLAo+KwkJICAgICBlbnVtIHZiMl9idWZmZXJfc3RhdGUgcmVzdWx0 KTsKPisJaW50ICgqdHJ5X2N0cmwpKHN0cnVjdCBya3ZkZWMyX2N0eCAqY3R4LCBzdHJ1Y3QgdjRs Ml9jdHJsICpjdHJsKTsKPit9Owo+Kwo+K3N0cnVjdCBya3ZkZWMyX2NvZGVkX2ZtdF9kZXNjIHsK PisJdTMyIGZvdXJjYzsKPisJc3RydWN0IHY0bDJfZnJtc2l6ZV9zdGVwd2lzZSBmcm1zaXplOwo+ Kwljb25zdCBzdHJ1Y3Qgcmt2ZGVjMl9jdHJscyAqY3RybHM7Cj4rCWNvbnN0IHN0cnVjdCBya3Zk ZWMyX2NvZGVkX2ZtdF9vcHMgKm9wczsKPisJdW5zaWduZWQgaW50IG51bV9kZWNvZGVkX2ZtdHM7 Cj4rCWNvbnN0IHUzMiAqZGVjb2RlZF9mbXRzOwo+Kwl1MzIgc3Vic3lzdGVtX2ZsYWdzOwo+K307 Cj4rCj4rc3RydWN0IHJrdmRlYzJfZGV2IHsKPisJc3RydWN0IHY0bDJfZGV2aWNlIHY0bDJfZGV2 Owo+KwlzdHJ1Y3QgbWVkaWFfZGV2aWNlIG1kZXY7Cj4rCXN0cnVjdCB2aWRlb19kZXZpY2UgdmRl djsKPisJc3RydWN0IHY0bDJfbTJtX2RldiAqbTJtX2RldjsKPisJc3RydWN0IGRldmljZSAqZGV2 Owo+KwlzdHJ1Y3QgY2xrX2J1bGtfZGF0YSAqY2xvY2tzOwo+Kwl2b2lkIF9faW9tZW0gKnJlZ3M7 Cj4rCXN0cnVjdCBtdXRleCB2ZGV2X2xvY2s7IC8qIHNlcmlhbGl6ZXMgaW9jdGxzICovCj4rCXN0 cnVjdCBkZWxheWVkX3dvcmsgd2F0Y2hkb2dfd29yazsKPit9Owo+Kwo+K3N0cnVjdCBya3ZkZWMy X2N0eCB7Cj4rCXN0cnVjdCB2NGwyX2ZoIGZoOwo+KwlzdHJ1Y3QgdjRsMl9mb3JtYXQgY29kZWRf Zm10Owo+KwlzdHJ1Y3QgdjRsMl9mb3JtYXQgZGVjb2RlZF9mbXQ7Cj4rCWNvbnN0IHN0cnVjdCBy a3ZkZWMyX2NvZGVkX2ZtdF9kZXNjICpjb2RlZF9mbXRfZGVzYzsKPisJc3RydWN0IHY0bDJfY3Ry bF9oYW5kbGVyIGN0cmxfaGRsOwo+KwlzdHJ1Y3Qgcmt2ZGVjMl9kZXYgKmRldjsKPisJc3RydWN0 IHJrdmRlYzJfYXV4X2J1ZiByY2JfYnVmc1tSS1ZERUMyX1JDQl9DT1VOVF07Cj4rCj4rCXUzMiBj b2xtdl9vZmZzZXQ7Cj4rCj4rCXZvaWQgKnByaXY7Cj4rfTsKPisKPitzdGF0aWMgaW5saW5lIHN0 cnVjdCBya3ZkZWMyX2N0eCAqZmhfdG9fcmt2ZGVjMl9jdHgoc3RydWN0IHY0bDJfZmggKmZoKQo+ K3sKPisJcmV0dXJuIGNvbnRhaW5lcl9vZihmaCwgc3RydWN0IHJrdmRlYzJfY3R4LCBmaCk7Cj4r fQo+Kwo+K3ZvaWQgcmt2ZGVjMl9ydW5fcHJlYW1ibGUoc3RydWN0IHJrdmRlYzJfY3R4ICpjdHgs IHN0cnVjdCBya3ZkZWMyX3J1biAqcnVuKTsKPit2b2lkIHJrdmRlYzJfcnVuX3Bvc3RhbWJsZShz dHJ1Y3Qgcmt2ZGVjMl9jdHggKmN0eCwgc3RydWN0IHJrdmRlYzJfcnVuICpydW4pOwo+Kwo+K2V4 dGVybiBjb25zdCBzdHJ1Y3Qgcmt2ZGVjMl9jb2RlZF9mbXRfb3BzIHJrdmRlYzJfaDI2NF9mbXRf b3BzOwo+Kwo+KyNlbmRpZiAvKiBSS1ZERUNfSF8gKi8KPi0tIAo+Mi40NC4yCj4KPgo+X19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPkxpbnV4LXJvY2tjaGlw IG1haWxpbmcgbGlzdAo+TGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZwo+aHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yb2NrY2hpcAo=