From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7E28EEB8FDD for ; Wed, 6 Sep 2023 14:32:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241666AbjIFOc4 (ORCPT ); Wed, 6 Sep 2023 10:32:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55008 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241651AbjIFOcm (ORCPT ); Wed, 6 Sep 2023 10:32:42 -0400 Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2001:67c:2178:6::1d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 683BE1736; Wed, 6 Sep 2023 07:32:33 -0700 (PDT) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 1B73A1F459; Wed, 6 Sep 2023 14:32:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1694010752; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=GVX9oZcr8AuRVim0JSaNSe88Lv+Zn3xcvMq60frsXp0=; b=BA42LR54bCUMxPRws7ro6TsmU8LlANSrab76RpJ/cZhmOyNULOLIfhIz2PjjCjIQDqLqAC xqvWColuS+vmbaR0lDlYdj+hFMfaPgTbPFt3+xUGQ6Z/xZn90OobHLGKygfuQ02Q5xsV4M Ul7h5fI4fQkpGs53eXXF28AVqLioYTE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1694010752; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=GVX9oZcr8AuRVim0JSaNSe88Lv+Zn3xcvMq60frsXp0=; b=iaOg/8+ksOey44yKmxYj2xmfVhypZSgogI2wgUA4Ya5O77vU5UZnybni+PBEq2yuPIx3kY EHWZWlN9Iuo5U3Ag== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 7306D1346C; Wed, 6 Sep 2023 14:32:31 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id FGMUG3+N+GQBQgAAMHmgww (envelope-from ); Wed, 06 Sep 2023 14:32:31 +0000 Message-ID: Date: Wed, 6 Sep 2023 16:32:30 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.14.0 Subject: Re: [PATCH v1 v1 6/7] drm/vs: Add KMS crtc&plane Content-Language: en-US To: Keith Zhao , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org Cc: Krzysztof Kozlowski , Sumit Semwal , Emil Renner Berthing , Shengyang Chen , Conor Dooley , Albert Ou , Maxime Ripard , Jagan Teki , Rob Herring , Chris Morgan , Paul Walmsley , Bjorn Andersson , Changhuang Liang , Jack Zhu , Palmer Dabbelt , Shawn Guo , christian.koenig@amd.com References: <20230801101030.2040-1-keith.zhao@starfivetech.com> <20230801101030.2040-7-keith.zhao@starfivetech.com> From: Thomas Zimmermann In-Reply-To: <20230801101030.2040-7-keith.zhao@starfivetech.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------ISFZbSuFA8dNQD300wbqZTXg" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------ISFZbSuFA8dNQD300wbqZTXg Content-Type: multipart/mixed; boundary="------------3zhn2LAz3EZokvBzgFV4dWr1"; protected-headers="v1" From: Thomas Zimmermann To: Keith Zhao , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org Cc: Krzysztof Kozlowski , Sumit Semwal , Emil Renner Berthing , Shengyang Chen , Conor Dooley , Albert Ou , Maxime Ripard , Jagan Teki , Rob Herring , Chris Morgan , Paul Walmsley , Bjorn Andersson , Changhuang Liang , Jack Zhu , Palmer Dabbelt , Shawn Guo , christian.koenig@amd.com Message-ID: Subject: Re: [PATCH v1 v1 6/7] drm/vs: Add KMS crtc&plane References: <20230801101030.2040-1-keith.zhao@starfivetech.com> <20230801101030.2040-7-keith.zhao@starfivetech.com> In-Reply-To: <20230801101030.2040-7-keith.zhao@starfivetech.com> --------------3zhn2LAz3EZokvBzgFV4dWr1 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMDEuMDguMjMgdW0gMTI6MTAgc2NocmllYiBLZWl0aCBaaGFvOg0KPiBhZGQg MiBjcnRjcyBhbmQgOCBwbGFuZXMgaW4gdnMtZHJtDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBL ZWl0aCBaaGFvIDxrZWl0aC56aGFvQHN0YXJmaXZldGVjaC5jb20+DQo+IC0tLQ0KPiAgIGRy aXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19jcnRjLmMgIHwgIDM2NSArKysrKw0KPiAg IGRyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19jcnRjLmggIHwgICA1NCArDQo+ICAg ZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2RjLmMgICAgfCAxMDM2ICsrKysrKysr KysrKw0KPiAgIGRyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19kYy5oICAgIHwgICA4 NyArDQo+ICAgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2RjX2h3LmMgfCAyMDA4 ICsrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgIGRyaXZlcnMvZ3B1L2RybS92ZXJpc2ls aWNvbi92c19kY19ody5oIHwgIDQ5NiArKysrKysNCj4gICBkcml2ZXJzL2dwdS9kcm0vdmVy aXNpbGljb24vdnNfZHJ2LmMgICB8ICAgIDMgKy0NCj4gICBkcml2ZXJzL2dwdS9kcm0vdmVy aXNpbGljb24vdnNfcGxhbmUuYyB8ICA1MDIgKysrKysrDQo+ICAgZHJpdmVycy9ncHUvZHJt L3ZlcmlzaWxpY29uL3ZzX3BsYW5lLmggfCAgIDY1ICsNCj4gICBkcml2ZXJzL2dwdS9kcm0v dmVyaXNpbGljb24vdnNfdHlwZS5oICB8ICAgNzAgKw0KPiAgIDEwIGZpbGVzIGNoYW5nZWQs IDQ2ODUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiAgIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfY3J0Yy5jDQo+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19jcnRjLmgNCj4g ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2Rj LmMNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29u L3ZzX2RjLmgNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3Zlcmlz aWxpY29uL3ZzX2RjX2h3LmMNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL3ZlcmlzaWxpY29uL3ZzX2RjX2h3LmgNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX3BsYW5lLmMNCj4gICBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX3BsYW5lLmgNCj4gICBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX3R5cGUuaA0K PiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19jcnRj LmMgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfY3J0Yy5jDQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMC4uNmE1YWY4ZDhjDQo+IC0tLSAvZGV2 L251bGwNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2NydGMuYw0K PiBAQCAtMCwwICsxLDM2NSBAQA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjANCj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjMgVmVyaVNpbGljb24gSG9s ZGluZ3MgQ28uLCBMdGQuDQo+ICsgKg0KPiArICovDQo+ICsNCj4gKyNpbmNsdWRlIDxsaW51 eC9jbGsuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9kZWJ1Z2ZzLmg+DQo+ICsjaW5jbHVkZSA8 bGludXgvbWVkaWEtYnVzLWZvcm1hdC5oPg0KPiArDQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9h dG9taWNfaGVscGVyLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4NCj4gKyNp bmNsdWRlIDxkcm0vZHJtX2NydGMuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9hdG9t aWNfaGVscGVyLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV92YmxhbmsuaD4NCj4gKyNpbmNs dWRlIDxkcm0vdnNfZHJtLmg+DQo+ICsNCj4gKyNpbmNsdWRlICJ2c19jcnRjLmgiDQo+ICsj aW5jbHVkZSAidnNfZGMuaCINCj4gKyNpbmNsdWRlICJ2c19kcnYuaCINCj4gKw0KPiArc3Rh dGljIHZvaWQgdnNfY3J0Y19yZXNldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpDQo+ICt7DQo+ ICsJc3RydWN0IHZzX2NydGNfc3RhdGUgKnN0YXRlOw0KPiArDQo+ICsJaWYgKGNydGMtPnN0 YXRlKSB7DQo+ICsJCV9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlKGNy dGMtPnN0YXRlKTsNCj4gKw0KPiArCQlzdGF0ZSA9IHRvX3ZzX2NydGNfc3RhdGUoY3J0Yy0+ c3RhdGUpOw0KPiArCQlrZnJlZShzdGF0ZSk7DQo+ICsJCWNydGMtPnN0YXRlID0gTlVMTDsN Cj4gKwl9DQo+ICsNCj4gKwlzdGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCpzdGF0ZSksIEdGUF9L RVJORUwpOw0KPiArCWlmICghc3RhdGUpDQo+ICsJCXJldHVybjsNCj4gKw0KPiArCV9fZHJt X2F0b21pY19oZWxwZXJfY3J0Y19yZXNldChjcnRjLCAmc3RhdGUtPmJhc2UpOw0KDQpUaGlz IHNldHMgdGhlIENSVEMncyBzdGF0ZS4gRG8gdGhpcyBhZnRlciB5b3UndmUgZnVsbHkgaW5p dGlhbGl6ZWQgc3RhdGUuDQoNCj4gKw0KPiArCXN0YXRlLT5zeW5jX21vZGUgPSBWU19TSU5H TEVfREM7DQo+ICsJc3RhdGUtPm91dHB1dF9mbXQgPSBNRURJQV9CVVNfRk1UX1JCRzg4OF8x WDI0Ow0KDQo+ICsJc3RhdGUtPmVuY29kZXJfdHlwZSA9IERSTV9NT0RFX0VOQ09ERVJfTk9O RTsNCg0KV2hhdCBpcyB0aGlzPyBUaGUgY29kZSBiZWxvdyB0aGF0IHNldHMgc29tZSByZWdp c3RlcnMgZGVwZW5kcyBvbiB0aGlzLiANCllvdSBzaG91bGQgaW5zdGVhZCBsb29rIGF0IHRo ZSBDUlRDJ3MgZW5jb2RlcnMgdG8gcGljayB0aGUgY29ycmVjdCBvbmUuDQoNCmh0dHBzOi8v ZWxpeGlyLmJvb3RsaW4uY29tL2xpbnV4L3Y2LjUvc291cmNlL2luY2x1ZGUvZHJtL2RybV9j cnRjLmgjTDIxMg0KDQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKg0KPiArdnNfY3J0Y19hdG9taWNfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykNCj4gK3sNCj4gKwlzdHJ1Y3QgdnNfY3J0Y19zdGF0ZSAqb3JpX3N0YXRlOw0K PiArCXN0cnVjdCB2c19jcnRjX3N0YXRlICpzdGF0ZTsNCj4gKw0KPiArCWlmICghY3J0Yy0+ c3RhdGUpDQo+ICsJCXJldHVybiBOVUxMOw0KPiArDQo+ICsJb3JpX3N0YXRlID0gdG9fdnNf Y3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7DQo+ICsJc3RhdGUgPSBremFsbG9jKHNpemVvZigq c3RhdGUpLCBHRlBfS0VSTkVMKTsNCj4gKwlpZiAoIXN0YXRlKQ0KPiArCQlyZXR1cm4gTlVM TDsNCj4gKw0KPiArCV9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kdXBsaWNhdGVfc3RhdGUo Y3J0YywgJnN0YXRlLT5iYXNlKTsNCj4gKw0KPiArCXN0YXRlLT5zeW5jX21vZGUgPSBvcmlf c3RhdGUtPnN5bmNfbW9kZTsNCj4gKwlzdGF0ZS0+b3V0cHV0X2ZtdCA9IG9yaV9zdGF0ZS0+ b3V0cHV0X2ZtdDsNCj4gKwlzdGF0ZS0+ZW5jb2Rlcl90eXBlID0gb3JpX3N0YXRlLT5lbmNv ZGVyX3R5cGU7DQo+ICsJc3RhdGUtPmJnX2NvbG9yID0gb3JpX3N0YXRlLT5iZ19jb2xvcjsN Cj4gKwlzdGF0ZS0+YnBwID0gb3JpX3N0YXRlLT5icHA7DQo+ICsJc3RhdGUtPnN5bmNfZW5h YmxlID0gb3JpX3N0YXRlLT5zeW5jX2VuYWJsZTsNCj4gKwlzdGF0ZS0+ZGl0aGVyX2VuYWJs ZSA9IG9yaV9zdGF0ZS0+ZGl0aGVyX2VuYWJsZTsNCj4gKwlzdGF0ZS0+dW5kZXJmbG93ID0g b3JpX3N0YXRlLT51bmRlcmZsb3c7DQo+ICsNCj4gKwlyZXR1cm4gJnN0YXRlLT5iYXNlOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCB2c19jcnRjX2F0b21pY19kZXN0cm95X3N0YXRl KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywNCj4gKwkJCQkJIHN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqc3RhdGUpDQo+ICt7DQo+ICsJX19kcm1fYXRvbWljX2hlbHBlcl9jcnRjX2Rlc3Ryb3lf c3RhdGUoc3RhdGUpOw0KPiArCWtmcmVlKHRvX3ZzX2NydGNfc3RhdGUoc3RhdGUpKTsNCj4g K30NCj4gKw0KPiArc3RhdGljIGludCB2c19jcnRjX2F0b21pY19zZXRfcHJvcGVydHkoc3Ry dWN0IGRybV9jcnRjICpjcnRjLA0KPiArCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKnN0YXRlLA0KPiArCQkJCSAgICAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0 eSwNCj4gKwkJCQkgICAgICAgdWludDY0X3QgdmFsKQ0KPiArew0KPiArCXN0cnVjdCB2c19j cnRjICp2c19jcnRjID0gdG9fdnNfY3J0YyhjcnRjKTsNCj4gKwlzdHJ1Y3QgdnNfY3J0Y19z dGF0ZSAqdnNfY3J0Y19zdGF0ZSA9IHRvX3ZzX2NydGNfc3RhdGUoc3RhdGUpOw0KPiArDQo+ ICsJaWYgKHByb3BlcnR5ID09IHZzX2NydGMtPnN5bmNfbW9kZSkNCj4gKwkJdnNfY3J0Y19z dGF0ZS0+c3luY19tb2RlID0gdmFsOw0KPiArCWVsc2UgaWYgKHByb3BlcnR5ID09IHZzX2Ny dGMtPm1tdV9wcmVmZXRjaCkNCj4gKwkJdnNfY3J0Y19zdGF0ZS0+bW11X3ByZWZldGNoID0g dmFsOw0KPiArCWVsc2UgaWYgKHByb3BlcnR5ID09IHZzX2NydGMtPmJnX2NvbG9yKQ0KPiAr CQl2c19jcnRjX3N0YXRlLT5iZ19jb2xvciA9IHZhbDsNCj4gKwllbHNlIGlmIChwcm9wZXJ0 eSA9PSB2c19jcnRjLT5wYW5lbF9zeW5jKQ0KPiArCQl2c19jcnRjX3N0YXRlLT5zeW5jX2Vu YWJsZSA9IHZhbDsNCj4gKwllbHNlIGlmIChwcm9wZXJ0eSA9PSB2c19jcnRjLT5kaXRoZXIp DQo+ICsJCXZzX2NydGNfc3RhdGUtPmRpdGhlcl9lbmFibGUgPSB2YWw7DQo+ICsJZWxzZQ0K PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgaW50IHZzX2NydGNfYXRvbWljX2dldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsDQo+ICsJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq c3RhdGUsDQo+ICsJCQkJICAgICAgIHN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LA0K PiArCQkJCSAgICAgICB1aW50NjRfdCAqdmFsKQ0KPiArew0KPiArCXN0cnVjdCB2c19jcnRj ICp2c19jcnRjID0gdG9fdnNfY3J0YyhjcnRjKTsNCj4gKwljb25zdCBzdHJ1Y3QgdnNfY3J0 Y19zdGF0ZSAqdnNfY3J0Y19zdGF0ZSA9DQo+ICsJCWNvbnRhaW5lcl9vZihzdGF0ZSwgY29u c3Qgc3RydWN0IHZzX2NydGNfc3RhdGUsIGJhc2UpOw0KPiArDQo+ICsJaWYgKHByb3BlcnR5 ID09IHZzX2NydGMtPnN5bmNfbW9kZSkNCj4gKwkJKnZhbCA9IHZzX2NydGNfc3RhdGUtPnN5 bmNfbW9kZTsNCj4gKwllbHNlIGlmIChwcm9wZXJ0eSA9PSB2c19jcnRjLT5tbXVfcHJlZmV0 Y2gpDQo+ICsJCSp2YWwgPSB2c19jcnRjX3N0YXRlLT5tbXVfcHJlZmV0Y2g7DQo+ICsJZWxz ZSBpZiAocHJvcGVydHkgPT0gdnNfY3J0Yy0+YmdfY29sb3IpDQo+ICsJCSp2YWwgPSB2c19j cnRjX3N0YXRlLT5iZ19jb2xvcjsNCj4gKwllbHNlIGlmIChwcm9wZXJ0eSA9PSB2c19jcnRj LT5wYW5lbF9zeW5jKQ0KPiArCQkqdmFsID0gdnNfY3J0Y19zdGF0ZS0+c3luY19lbmFibGU7 DQo+ICsJZWxzZSBpZiAocHJvcGVydHkgPT0gdnNfY3J0Yy0+ZGl0aGVyKQ0KPiArCQkqdmFs ID0gdnNfY3J0Y19zdGF0ZS0+ZGl0aGVyX2VuYWJsZTsNCj4gKwllbHNlDQo+ICsJCXJldHVy biAtRUlOVkFMOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBp bnQgdnNfY3J0Y19sYXRlX3JlZ2lzdGVyKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykNCj4gK3sN Cj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCB2c19jcnRjX2VuYWJs ZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKQ0KPiArew0KPiArCXN0cnVjdCB2c19j cnRjICp2c19jcnRjID0gdG9fdnNfY3J0YyhjcnRjKTsNCj4gKw0KPiArCXZzX2RjX2VuYWJs ZV92YmxhbmsodnNfY3J0Yy0+ZGV2LCB0cnVlKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiAr fQ0KPiArDQo+ICtzdGF0aWMgdm9pZCB2c19jcnRjX2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykNCj4gK3sNCj4gKwlzdHJ1Y3QgdnNfY3J0YyAqdnNfY3J0YyA9IHRv X3ZzX2NydGMoY3J0Yyk7DQo+ICsNCj4gKwl2c19kY19lbmFibGVfdmJsYW5rKHZzX2NydGMt PmRldiwgZmFsc2UpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9j cnRjX2Z1bmNzIHZzX2NydGNfZnVuY3MgPSB7DQo+ICsJLnNldF9jb25maWcJCT0gZHJtX2F0 b21pY19oZWxwZXJfc2V0X2NvbmZpZywNCj4gKwkucGFnZV9mbGlwCQk9IGRybV9hdG9taWNf aGVscGVyX3BhZ2VfZmxpcCwNCj4gKwkucmVzZXQJCQk9IHZzX2NydGNfcmVzZXQsDQo+ICsJ LmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSB2c19jcnRjX2F0b21pY19kdXBsaWNhdGVfc3Rh dGUsDQo+ICsJLmF0b21pY19kZXN0cm95X3N0YXRlCT0gdnNfY3J0Y19hdG9taWNfZGVzdHJv eV9zdGF0ZSwNCj4gKwkuYXRvbWljX3NldF9wcm9wZXJ0eQk9IHZzX2NydGNfYXRvbWljX3Nl dF9wcm9wZXJ0eSwNCj4gKwkuYXRvbWljX2dldF9wcm9wZXJ0eQk9IHZzX2NydGNfYXRvbWlj X2dldF9wcm9wZXJ0eSwNCj4gKwkubGF0ZV9yZWdpc3RlcgkJPSB2c19jcnRjX2xhdGVfcmVn aXN0ZXIsDQo+ICsJLmVuYWJsZV92YmxhbmsJCT0gdnNfY3J0Y19lbmFibGVfdmJsYW5rLA0K PiArCS5kaXNhYmxlX3ZibGFuawkJPSB2c19jcnRjX2Rpc2FibGVfdmJsYW5rLA0KPiArfTsN Cj4gKw0KPiArc3RhdGljIHU4IGNhbF9waXhlbF9iaXRzKHUzMiBidXNfZm9ybWF0KQ0KPiAr ew0KPiArCXU4IGJwcDsNCj4gKw0KPiArCXN3aXRjaCAoYnVzX2Zvcm1hdCkgew0KPiArCWNh c2UgTUVESUFfQlVTX0ZNVF9SR0I1NjVfMVgxNjoNCj4gKwljYXNlIE1FRElBX0JVU19GTVRf VVlWWThfMVgxNjoNCj4gKwkJYnBwID0gMTY7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgTUVE SUFfQlVTX0ZNVF9SR0I2NjZfMVgxODoNCj4gKwljYXNlIE1FRElBX0JVU19GTVRfUkdCNjY2 XzFYMjRfQ1BBREhJOg0KPiArCQlicHAgPSAxODsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBN RURJQV9CVVNfRk1UX1VZVlkxMF8xWDIwOg0KPiArCQlicHAgPSAyMDsNCj4gKwkJYnJlYWs7 DQo+ICsJY2FzZSBNRURJQV9CVVNfRk1UX0JHUjg4OF8xWDI0Og0KPiArCWNhc2UgTUVESUFf QlVTX0ZNVF9VWVlWWVk4XzBfNVgyNDoNCj4gKwljYXNlIE1FRElBX0JVU19GTVRfWVVWOF8x WDI0Og0KPiArCQlicHAgPSAyNDsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBNRURJQV9CVVNf Rk1UX1JHQjEwMTAxMF8xWDMwOg0KPiArCWNhc2UgTUVESUFfQlVTX0ZNVF9VWVlWWVkxMF8w XzVYMzA6DQo+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1lVVjEwXzFYMzA6DQo+ICsJCWJwcCA9 IDMwOw0KPiArCQlicmVhazsNCj4gKwlkZWZhdWx0Og0KPiArCQlicHAgPSAyNDsNCj4gKwkJ YnJlYWs7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIGJwcDsNCj4gK30NCj4gKw0KPiArc3Rh dGljIGJvb2wgdnNfY3J0Y19tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywNCj4g KwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwNCj4gKwkJ CSAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkNCj4gK3sN Cj4gKwlzdHJ1Y3QgdnNfY3J0YyAqdnNfY3J0YyA9IHRvX3ZzX2NydGMoY3J0Yyk7DQo+ICsN Cj4gKwlyZXR1cm4gdnNfZGNfbW9kZV9maXh1cCh2c19jcnRjLT5kZXYsIG1vZGUsIGFkanVz dGVkX21vZGUpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCB2c19jcnRjX2F0b21pY19l bmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLA0KPiArCQkJCSAgc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlKQ0KPiArew0KPiArCXN0cnVjdCB2c19jcnRjICp2c19jcnRjID0g dG9fdnNfY3J0YyhjcnRjKTsNCj4gKwlzdHJ1Y3QgdnNfY3J0Y19zdGF0ZSAqdnNfY3J0Y19z dGF0ZSA9IHRvX3ZzX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOw0KPiArDQo+ICsJdnNfY3J0 Y19zdGF0ZS0+YnBwID0gY2FsX3BpeGVsX2JpdHModnNfY3J0Y19zdGF0ZS0+b3V0cHV0X2Zt dCk7DQo+ICsNCj4gKwl2c19kY19lbmFibGUodnNfY3J0Yy0+ZGV2LCBjcnRjKTsNCj4gKwlk cm1fY3J0Y192Ymxhbmtfb24oY3J0Yyk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHZz X2NydGNfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLA0KPiArCQkJCSAg IHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgdnNf Y3J0YyAqdnNfY3J0YyA9IHRvX3ZzX2NydGMoY3J0Yyk7DQo+ICsNCj4gKwlkcm1fY3J0Y192 Ymxhbmtfb2ZmKGNydGMpOw0KPiArDQo+ICsJdnNfZGNfZGlzYWJsZSh2c19jcnRjLT5kZXYs IGNydGMpOw0KPiArDQo+ICsJaWYgKGNydGMtPnN0YXRlLT5ldmVudCAmJiAhY3J0Yy0+c3Rh dGUtPmFjdGl2ZSkgew0KPiArCQlzcGluX2xvY2tfaXJxKCZjcnRjLT5kZXYtPmV2ZW50X2xv Y2spOw0KPiArCQlkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudChjcnRjLCBjcnRjLT5zdGF0 ZS0+ZXZlbnQpOw0KPiArCQlzcGluX3VubG9ja19pcnEoJmNydGMtPmRldi0+ZXZlbnRfbG9j ayk7DQo+ICsNCj4gKwkJY3J0Yy0+c3RhdGUtPmV2ZW50ID0gTlVMTDsNCj4gKwl9DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHZzX2NydGNfYXRvbWljX2JlZ2luKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywNCj4gKwkJCQkgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0K PiArew0KPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IGRybV9hdG9t aWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLA0KPiArCQkJCQkJCQkJICBjcnRjKTsNCj4g Kw0KPiArCXN0cnVjdCB2c19jcnRjICp2c19jcnRjID0gdG9fdnNfY3J0YyhjcnRjKTsNCj4g KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSB2c19jcnRjLT5kZXY7DQo+ICsJc3RydWN0IGRybV9w cm9wZXJ0eV9ibG9iICpibG9iID0gY3J0Yy0+c3RhdGUtPmdhbW1hX2x1dDsNCj4gKwlzdHJ1 Y3QgZHJtX2NvbG9yX2x1dCAqbHV0Ow0KPiArDQo+ICsJaWYgKGNydGNfc3RhdGUtPmNvbG9y X21nbXRfY2hhbmdlZCkgew0KPiArCQlpZiAoYmxvYiAmJiBibG9iLT5sZW5ndGgpIHsNCj4g KwkJCWx1dCA9IGJsb2ItPmRhdGE7DQo+ICsJCQl2c19kY19zZXRfZ2FtbWEoZGV2LCBjcnRj LCBsdXQsDQo+ICsJCQkJCWJsb2ItPmxlbmd0aCAvIHNpemVvZigqbHV0KSk7DQo+ICsJCQl2 c19kY19lbmFibGVfZ2FtbWEoZGV2LCBjcnRjLCB0cnVlKTsNCj4gKwkJfSBlbHNlIHsNCj4g KwkJCXZzX2RjX2VuYWJsZV9nYW1tYShkZXYsIGNydGMsIGZhbHNlKTsNCj4gKwkJfQ0KPiAr CX0NCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgdnNfY3J0Y19hdG9taWNfZmx1c2goc3Ry dWN0IGRybV9jcnRjICpjcnRjLA0KPiArCQkJCSBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUpDQo+ICt7DQo+ICsJc3RydWN0IHZzX2NydGMgKnZzX2NydGMgPSB0b192c19jcnRj KGNydGMpOw0KPiArCXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmV2ZW50ID0g Y3J0Yy0+c3RhdGUtPmV2ZW50Ow0KPiArDQo+ICsJdnNfZGNfY29tbWl0KHZzX2NydGMtPmRl dik7DQo+ICsNCj4gKwlpZiAoZXZlbnQpIHsNCj4gKwkJV0FSTl9PTihkcm1fY3J0Y192Ymxh bmtfZ2V0KGNydGMpICE9IDApOw0KPiArDQo+ICsJCXNwaW5fbG9ja19pcnEoJmNydGMtPmRl di0+ZXZlbnRfbG9jayk7DQo+ICsJCWRybV9jcnRjX2FybV92YmxhbmtfZXZlbnQoY3J0Yywg ZXZlbnQpOw0KPiArCQlzcGluX3VubG9ja19pcnEoJmNydGMtPmRldi0+ZXZlbnRfbG9jayk7 DQo+ICsJCWNydGMtPnN0YXRlLT5ldmVudCA9IE5VTEw7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyB2c19jcnRjX2hl bHBlcl9mdW5jcyA9IHsNCj4gKwkubW9kZV9maXh1cCA9IHZzX2NydGNfbW9kZV9maXh1cCwN Cj4gKwkuYXRvbWljX2VuYWJsZQk9IHZzX2NydGNfYXRvbWljX2VuYWJsZSwNCj4gKwkuYXRv bWljX2Rpc2FibGUgPSB2c19jcnRjX2F0b21pY19kaXNhYmxlLA0KPiArCS5hdG9taWNfYmVn aW4JPSB2c19jcnRjX2F0b21pY19iZWdpbiwNCj4gKwkuYXRvbWljX2ZsdXNoCT0gdnNfY3J0 Y19hdG9taWNfZmx1c2gsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9wcm9wX2VudW1fbGlzdCB2c19zeW5jX21vZGVfZW51bV9saXN0W10gPSB7DQo+ICsJeyBW U19TSU5HTEVfREMsCQkJCSJzaW5nbGUgZGMgbW9kZSIgfSwNCj4gKwl7IFZTX01VTFRJX0RD X1BSSU1BUlksCQkicHJpbWFyeSBkYyBmb3IgbXVsdGkgZGMgbW9kZSIgfSwNCj4gKwl7IFZT X01VTFRJX0RDX1NFQ09OREFSWSwJInNlY29uZGFyeSBkYyBmb3IgbXVsdGkgZGMgbW9kZSIg fSwNCj4gK307DQo+ICsNCj4gK3N0cnVjdCB2c19jcnRjICp2c19jcnRjX2NyZWF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZHJtX2RldiwNCj4gKwkJCSAgICAgICBzdHJ1Y3QgdnNfZGNfaW5m byAqaW5mbykNCj4gK3sNCj4gKwlzdHJ1Y3QgdnNfY3J0YyAqY3J0YzsNCj4gKwlpbnQgcmV0 Ow0KPiArDQo+ICsJaWYgKCFpbmZvKQ0KPiArCQlyZXR1cm4gTlVMTDsNCj4gKw0KPiArCWNy dGMgPSBkcm1tX2t6YWxsb2MoZHJtX2Rldiwgc2l6ZW9mKCpjcnRjKSwgR0ZQX0tFUk5FTCk7 DQo+ICsJaWYgKCFjcnRjKQ0KPiArCQlyZXR1cm4gTlVMTDsNCj4gKw0KPiArCXJldCA9IGRy bW1fY3J0Y19pbml0X3dpdGhfcGxhbmVzKGRybV9kZXYsICZjcnRjLT5iYXNlLA0KPiArCQkJ CQkgTlVMTCwgTlVMTCwgJnZzX2NydGNfZnVuY3MsDQo+ICsJCQkJCSBpbmZvLT5uYW1lID8g aW5mby0+bmFtZSA6IE5VTEwpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiBOVUxMOw0K PiArDQo+ICsJZHJtX2NydGNfaGVscGVyX2FkZCgmY3J0Yy0+YmFzZSwgJnZzX2NydGNfaGVs cGVyX2Z1bmNzKTsNCj4gKw0KPiArCS8qIFNldCB1cCB0aGUgY3J0YyBwcm9wZXJ0aWVzICov DQo+ICsJaWYgKGluZm8tPnBpcGVfc3luYykgew0KPiArCQljcnRjLT5zeW5jX21vZGUgPSBk cm1fcHJvcGVydHlfY3JlYXRlX2VudW0oZHJtX2RldiwgMCwNCj4gKwkJCQkJCQkgICAiU1lO Q19NT0RFIiwNCj4gKwkJCQkJCQkgICAgdnNfc3luY19tb2RlX2VudW1fbGlzdCwNCj4gKwkJ CQkJCQkgICAgQVJSQVlfU0laRSh2c19zeW5jX21vZGVfZW51bV9saXN0KSk7DQo+ICsNCj4g KwkJaWYgKCFjcnRjLT5zeW5jX21vZGUpDQo+ICsJCQlyZXR1cm4gTlVMTDsNCj4gKw0KPiAr CQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY3J0Yy0+YmFzZS5iYXNlLA0KPiArCQkJ CQkgICBjcnRjLT5zeW5jX21vZGUsDQo+ICsJCQkJCSAgIFZTX1NJTkdMRV9EQyk7DQo+ICsJ fQ0KPiArDQo+ICsJaWYgKGluZm8tPmdhbW1hX3NpemUpIHsNCj4gKwkJcmV0ID0gZHJtX21v ZGVfY3J0Y19zZXRfZ2FtbWFfc2l6ZSgmY3J0Yy0+YmFzZSwNCj4gKwkJCQkJCSAgIGluZm8t PmdhbW1hX3NpemUpOw0KPiArCQlpZiAocmV0KQ0KPiArCQkJcmV0dXJuIE5VTEw7DQo+ICsN Cj4gKwkJZHJtX2NydGNfZW5hYmxlX2NvbG9yX21nbXQoJmNydGMtPmJhc2UsIDAsIGZhbHNl LA0KPiArCQkJCQkgICBpbmZvLT5nYW1tYV9zaXplKTsNCj4gKwl9DQo+ICsNCj4gKwlpZiAo aW5mby0+YmFja2dyb3VuZCkgew0KPiArCQljcnRjLT5iZ19jb2xvciA9IGRybV9wcm9wZXJ0 eV9jcmVhdGVfcmFuZ2UoZHJtX2RldiwgMCwNCj4gKwkJCQkJCQkgICAiQkdfQ09MT1IiLCAw LCAweGZmZmZmZmZmKTsNCj4gKw0KPiArCQlpZiAoIWNydGMtPmJnX2NvbG9yKQ0KPiArCQkJ cmV0dXJuIE5VTEw7DQo+ICsNCj4gKwkJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJmNy dGMtPmJhc2UuYmFzZSwgY3J0Yy0+YmdfY29sb3IsIDApOw0KPiArCX0NCj4gKw0KPiArCWlm IChpbmZvLT5wYW5lbF9zeW5jKSB7DQo+ICsJCWNydGMtPnBhbmVsX3N5bmMgPSBkcm1fcHJv cGVydHlfY3JlYXRlX2Jvb2woZHJtX2RldiwgMCwgIlNZTkNfRU5BQkxFRCIpOw0KPiArDQo+ ICsJCWlmICghY3J0Yy0+cGFuZWxfc3luYykNCj4gKwkJCXJldHVybiBOVUxMOw0KPiArDQo+ ICsJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZjcnRjLT5iYXNlLmJhc2UsIGNydGMt PnBhbmVsX3N5bmMsIDApOw0KPiArCX0NCj4gKw0KPiArCWNydGMtPmRpdGhlciA9IGRybV9w cm9wZXJ0eV9jcmVhdGVfYm9vbChkcm1fZGV2LCAwLCAiRElUSEVSX0VOQUJMRUQiKTsNCj4g KwlpZiAoIWNydGMtPmRpdGhlcikNCj4gKwkJcmV0dXJuIE5VTEw7DQo+ICsNCj4gKwlkcm1f b2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY3J0Yy0+YmFzZS5iYXNlLCBjcnRjLT5kaXRoZXIs IDApOw0KPiArDQo+ICsJY3J0Yy0+bWF4X2JwYyA9IGluZm8tPm1heF9icGM7DQo+ICsJY3J0 Yy0+Y29sb3JfZm9ybWF0cyA9IGluZm8tPmNvbG9yX2Zvcm1hdHM7DQo+ICsJcmV0dXJuIGNy dGM7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24v dnNfY3J0Yy5oIGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2NydGMuaA0KPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAuLjkyZmNiY2ZjMQ0KPiAt LS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19j cnRjLmgNCj4gQEAgLTAsMCArMSw1NCBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjAgKi8NCj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjMgVmVyaVNp bGljb24gSG9sZGluZ3MgQ28uLCBMdGQuDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfX1ZT X0NSVENfSF9fDQo+ICsjZGVmaW5lIF9fVlNfQ1JUQ19IX18NCj4gKw0KPiArI2luY2x1ZGUg PGRybS9kcm1fY3J0Yy5oPg0KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4N Cj4gKw0KPiArI2luY2x1ZGUgInZzX3R5cGUuaCINCj4gKw0KPiArc3RydWN0IHZzX2NydGNf c3RhdGUgew0KPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSBiYXNlOw0KPiArDQo+ICsJdTMy IHN5bmNfbW9kZTsNCj4gKwl1MzIgb3V0cHV0X2ZtdDsNCj4gKwl1MzIgYmdfY29sb3I7DQo+ ICsJdTggZW5jb2Rlcl90eXBlOw0KPiArCXU4IG1tdV9wcmVmZXRjaDsNCj4gKwl1OCBicHA7 DQo+ICsJYm9vbCBzeW5jX2VuYWJsZTsNCj4gKwlib29sIGRpdGhlcl9lbmFibGU7DQo+ICsJ Ym9vbCB1bmRlcmZsb3c7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgdnNfY3J0YyB7DQo+ICsJ c3RydWN0IGRybV9jcnRjIGJhc2U7DQo+ICsJc3RydWN0IGRldmljZSAqZGV2Ow0KPiArCXVu c2lnbmVkIGludCBtYXhfYnBjOw0KPiArCXVuc2lnbmVkIGludCBjb2xvcl9mb3JtYXRzOw0K PiArDQo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAqc3luY19tb2RlOw0KPiArCXN0cnVjdCBk cm1fcHJvcGVydHkgKm1tdV9wcmVmZXRjaDsNCj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpi Z19jb2xvcjsNCj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwYW5lbF9zeW5jOw0KPiArCXN0 cnVjdCBkcm1fcHJvcGVydHkgKmRpdGhlcjsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCB2c19j cnRjICp2c19jcnRjX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiwNCj4gKwkJ CSAgICAgICBzdHJ1Y3QgdnNfZGNfaW5mbyAqaW5mbyk7DQo+ICsNCj4gK3N0YXRpYyBpbmxp bmUgc3RydWN0IHZzX2NydGMgKnRvX3ZzX2NydGMoc3RydWN0IGRybV9jcnRjICpjcnRjKQ0K PiArew0KPiArCXJldHVybiBjb250YWluZXJfb2YoY3J0Yywgc3RydWN0IHZzX2NydGMsIGJh c2UpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCB2c19jcnRjX3N0YXRl ICoNCj4gK3RvX3ZzX2NydGNfc3RhdGUoc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkN Cj4gK3sNCj4gKwlyZXR1cm4gY29udGFpbmVyX29mKHN0YXRlLCBzdHJ1Y3QgdnNfY3J0Y19z dGF0ZSwgYmFzZSk7DQo+ICt9DQo+ICsjZW5kaWYgLyogX19WU19DUlRDX0hfXyAqLw0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2RjLmMgYi9kcml2 ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZGMuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiBpbmRleCAwMDAwMDAwMDAuLjQ0ZDlmMGMxOA0KPiAtLS0gL2Rldi9udWxsDQo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19kYy5jDQo+IEBAIC0wLDAgKzEs MTAzNiBAQA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gKy8q DQo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjMgVmVyaVNpbGljb24gSG9sZGluZ3MgQ28uLCBM dGQuDQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPg0KPiAr I2luY2x1ZGUgPGxpbnV4L2Nsay5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+DQo+ ICsjaW5jbHVkZSA8bGludXgvbWVkaWEtYnVzLWZvcm1hdC5oPg0KPiArI2luY2x1ZGUgPGxp bnV4L21mZC9zeXNjb24uaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9vZi5oPg0KPiArI2luY2x1 ZGUgPGxpbnV4L29mX2RldmljZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUu aD4NCj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9y ZXNldC5oPg0KPiArDQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4NCj4gKyNpbmNs dWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Js ZW5kLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9mb3VyY2MuaD4NCj4gKyNpbmNsdWRlIDxk cm0vZHJtX2ZyYW1lYnVmZmVyLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV92YmxhbmsuaD4N Cj4gKyNpbmNsdWRlIDxkcm0vdnNfZHJtLmg+DQo+ICsNCj4gKyNpbmNsdWRlICJ2c19jcnRj LmgiDQo+ICsjaW5jbHVkZSAidnNfZGNfaHcuaCINCj4gKyNpbmNsdWRlICJ2c19kYy5oIg0K PiArI2luY2x1ZGUgInZzX2Rydi5oIg0KPiArI2luY2x1ZGUgInZzX3R5cGUuaCINCj4gKw0K PiArc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB2b3V0X2Nsb2Nrc1tdID0gew0KPiArCSJ2 b3V0X25vY19kaXNwIiwNCj4gKwkidm91dF9waXgwIiwNCj4gKwkidm91dF9waXgxIiwNCj4g Kwkidm91dF9heGkiLA0KPiArCSJ2b3V0X2NvcmUiLA0KPiArCSJ2b3V0X3ZvdXRfYWhiIiwN Cj4gKwkiaGRtaXR4MF9waXhlbCIsDQo+ICsJInZvdXRfZGM4MjAwIiwNCj4gKw0KPiArfTsN Cj4gKw0KPiArc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB2b3V0X3Jlc2V0c1tdID0gew0K PiArCSJ2b3V0X2F4aSIsDQo+ICsJInZvdXRfYWhiIiwNCj4gKwkidm91dF9jb3JlIiwNCj4g K307DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVfZm9ybWF0KHUzMiBmb3Jt YXQsIHU2NCBtb2QsIHN0cnVjdCBkY19od19mYiAqZmIpDQo+ICt7DQo+ICsJdTggZiA9IEZP Uk1BVF9BOFI4RzhCODsNCj4gKw0KPiArCXN3aXRjaCAoZm9ybWF0KSB7DQo+ICsJY2FzZSBE Uk1fRk9STUFUX1hSR0I0NDQ0Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9SR0JYNDQ0NDoNCj4g KwljYXNlIERSTV9GT1JNQVRfWEJHUjQ0NDQ6DQo+ICsJY2FzZSBEUk1fRk9STUFUX0JHUlg0 NDQ0Og0KPiArCQlmID0gRk9STUFUX1g0UjRHNEI0Ow0KPiArCQlicmVhazsNCj4gKwljYXNl IERSTV9GT1JNQVRfQVJHQjQ0NDQ6DQo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQkE0NDQ0Og0K PiArCWNhc2UgRFJNX0ZPUk1BVF9BQkdSNDQ0NDoNCj4gKwljYXNlIERSTV9GT1JNQVRfQkdS QTQ0NDQ6DQo+ICsJCWYgPSBGT1JNQVRfQTRSNEc0QjQ7DQo+ICsJCWJyZWFrOw0KPiArCWNh c2UgRFJNX0ZPUk1BVF9YUkdCMTU1NToNCj4gKwljYXNlIERSTV9GT1JNQVRfUkdCWDU1NTE6 DQo+ICsJY2FzZSBEUk1fRk9STUFUX1hCR1IxNTU1Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9C R1JYNTU1MToNCj4gKwkJZiA9IEZPUk1BVF9YMVI1RzVCNTsNCj4gKwkJYnJlYWs7DQo+ICsJ Y2FzZSBEUk1fRk9STUFUX0FSR0IxNTU1Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9SR0JBNTU1 MToNCj4gKwljYXNlIERSTV9GT1JNQVRfQUJHUjE1NTU6DQo+ICsJY2FzZSBEUk1fRk9STUFU X0JHUkE1NTUxOg0KPiArCQlmID0gRk9STUFUX0ExUjVHNUI1Ow0KPiArCQlicmVhazsNCj4g KwljYXNlIERSTV9GT1JNQVRfUkdCNTY1Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9CR1I1NjU6 DQo+ICsJCWYgPSBGT1JNQVRfUjVHNkI1Ow0KPiArCQlicmVhazsNCj4gKwljYXNlIERSTV9G T1JNQVRfWFJHQjg4ODg6DQo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQlg4ODg4Og0KPiArCWNh c2UgRFJNX0ZPUk1BVF9YQkdSODg4ODoNCj4gKwljYXNlIERSTV9GT1JNQVRfQkdSWDg4ODg6 DQo+ICsJCWYgPSBGT1JNQVRfWDhSOEc4Qjg7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgRFJN X0ZPUk1BVF9BUkdCODg4ODoNCj4gKwljYXNlIERSTV9GT1JNQVRfUkdCQTg4ODg6DQo+ICsJ Y2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9CR1JBODg4 ODoNCj4gKwkJZiA9IEZPUk1BVF9BOFI4RzhCODsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBE Uk1fRk9STUFUX1lVWVY6DQo+ICsJY2FzZSBEUk1fRk9STUFUX1lWWVU6DQo+ICsJCWYgPSBG T1JNQVRfWVVZMjsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBEUk1fRk9STUFUX1VZVlk6DQo+ ICsJY2FzZSBEUk1fRk9STUFUX1ZZVVk6DQo+ICsJCWYgPSBGT1JNQVRfVVlWWTsNCj4gKwkJ YnJlYWs7DQo+ICsJY2FzZSBEUk1fRk9STUFUX1lVVjQyMDoNCj4gKwljYXNlIERSTV9GT1JN QVRfWVZVNDIwOg0KPiArCQlmID0gRk9STUFUX1lWMTI7DQo+ICsJCWJyZWFrOw0KPiArCWNh c2UgRFJNX0ZPUk1BVF9OVjIxOg0KPiArCQlmID0gRk9STUFUX05WMTI7DQo+ICsJCWJyZWFr Ow0KPiArCWNhc2UgRFJNX0ZPUk1BVF9OVjE2Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9OVjYx Og0KPiArCQlmID0gRk9STUFUX05WMTY7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgRFJNX0ZP Uk1BVF9QMDEwOg0KPiArCQlmID0gRk9STUFUX1AwMTA7DQo+ICsJCWJyZWFrOw0KPiArCWNh c2UgRFJNX0ZPUk1BVF9BUkdCMjEwMTAxMDoNCj4gKwljYXNlIERSTV9GT1JNQVRfUkdCQTEw MTAxMDI6DQo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1IyMTAxMDEwOg0KPiArCWNhc2UgRFJN X0ZPUk1BVF9CR1JBMTAxMDEwMjoNCj4gKwkJZiA9IEZPUk1BVF9BMlIxMEcxMEIxMDsNCj4g KwkJYnJlYWs7DQo+ICsJY2FzZSBEUk1fRk9STUFUX05WMTI6DQo+ICsJCWlmIChmb3VyY2Nf bW9kX3ZzX2dldF90eXBlKG1vZCkgPT0NCj4gKwkJCURSTV9GT1JNQVRfTU9EX1ZTX1RZUEVf Q1VTVE9NXzEwQklUKQ0KPiArCQkJZiA9IEZPUk1BVF9OVjEyXzEwQklUOw0KPiArCQllbHNl DQo+ICsJCQlmID0gRk9STUFUX05WMTI7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgRFJNX0ZP Uk1BVF9ZVVY0NDQ6DQo+ICsJCWlmIChmb3VyY2NfbW9kX3ZzX2dldF90eXBlKG1vZCkgPT0N Cj4gKwkJCURSTV9GT1JNQVRfTU9EX1ZTX1RZUEVfQ1VTVE9NXzEwQklUKQ0KPiArCQkJZiA9 IEZPUk1BVF9ZVVY0NDRfMTBCSVQ7DQo+ICsJCWVsc2UNCj4gKwkJCWYgPSBGT1JNQVRfWVVW NDQ0Ow0KPiArCQlicmVhazsNCj4gKwlkZWZhdWx0Og0KPiArCQlicmVhazsNCj4gKwl9DQo+ ICsNCj4gKwlmYi0+Zm9ybWF0ID0gZjsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGluZSB2 b2lkIHVwZGF0ZV9zd2l6emxlKHUzMiBmb3JtYXQsIHN0cnVjdCBkY19od19mYiAqZmIpDQo+ ICt7DQo+ICsJZmItPnN3aXp6bGUgPSBTV0laWkxFX0FSR0I7DQo+ICsJZmItPnV2X3N3aXp6 bGUgPSAwOw0KPiArDQo+ICsJc3dpdGNoIChmb3JtYXQpIHsNCj4gKwljYXNlIERSTV9GT1JN QVRfUkdCWDQ0NDQ6DQo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQkE0NDQ0Og0KPiArCWNhc2Ug RFJNX0ZPUk1BVF9SR0JYNTU1MToNCj4gKwljYXNlIERSTV9GT1JNQVRfUkdCQTU1NTE6DQo+ ICsJY2FzZSBEUk1fRk9STUFUX1JHQlg4ODg4Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9SR0JB ODg4ODoNCj4gKwljYXNlIERSTV9GT1JNQVRfUkdCQTEwMTAxMDI6DQo+ICsJCWZiLT5zd2l6 emxlID0gU1dJWlpMRV9SR0JBOw0KPiArCQlicmVhazsNCj4gKwljYXNlIERSTV9GT1JNQVRf WEJHUjQ0NDQ6DQo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1I0NDQ0Og0KPiArCWNhc2UgRFJN X0ZPUk1BVF9YQkdSMTU1NToNCj4gKwljYXNlIERSTV9GT1JNQVRfQUJHUjE1NTU6DQo+ICsJ Y2FzZSBEUk1fRk9STUFUX0JHUjU2NToNCj4gKwljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6 DQo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9B QkdSMjEwMTAxMDoNCj4gKwkJZmItPnN3aXp6bGUgPSBTV0laWkxFX0FCR1I7DQo+ICsJCWJy ZWFrOw0KPiArCWNhc2UgRFJNX0ZPUk1BVF9CR1JYNDQ0NDoNCj4gKwljYXNlIERSTV9GT1JN QVRfQkdSQTQ0NDQ6DQo+ICsJY2FzZSBEUk1fRk9STUFUX0JHUlg1NTUxOg0KPiArCWNhc2Ug RFJNX0ZPUk1BVF9CR1JBNTU1MToNCj4gKwljYXNlIERSTV9GT1JNQVRfQkdSWDg4ODg6DQo+ ICsJY2FzZSBEUk1fRk9STUFUX0JHUkE4ODg4Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9CR1JB MTAxMDEwMjoNCj4gKwkJZmItPnN3aXp6bGUgPSBTV0laWkxFX0JHUkE7DQo+ICsJCWJyZWFr Ow0KPiArCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOg0KPiArCWNhc2UgRFJNX0ZPUk1BVF9WWVVZ Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9OVjIxOg0KPiArCWNhc2UgRFJNX0ZPUk1BVF9OVjYx Og0KPiArCQlmYi0+dXZfc3dpenpsZSA9IDE7DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6 DQo+ICsJCWJyZWFrOw0KPiArCX0NCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGluZSB2b2lk IHVwZGF0ZV93YXRlcm1hcmsoc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICp3YXRlcm1hcmss DQo+ICsJCQkJICAgIHN0cnVjdCBkY19od19mYiAqZmIpDQo+ICt7DQo+ICsJc3RydWN0IGRy bV92c193YXRlcm1hcmsgKmRhdGE7DQo+ICsNCj4gKwlmYi0+d2F0ZXJfbWFyayA9IDA7DQo+ ICsNCj4gKwlpZiAod2F0ZXJtYXJrKSB7DQo+ICsJCWRhdGEgPSB3YXRlcm1hcmstPmRhdGE7 DQo+ICsJCWZiLT53YXRlcl9tYXJrID0gZGF0YS0+d2F0ZXJtYXJrICYgMHhGRkZGRjsNCj4g Kwl9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdTggdG9fdnNfcm90YXRpb24odW5z aWduZWQgaW50IHJvdGF0aW9uKQ0KPiArew0KPiArCXU4IHJvdDsNCj4gKw0KPiArCXN3aXRj aCAocm90YXRpb24gJiBEUk1fTU9ERV9SRUZMRUNUX01BU0spIHsNCj4gKwljYXNlIERSTV9N T0RFX1JFRkxFQ1RfWDoNCj4gKwkJcm90ID0gRkxJUF9YOw0KPiArCQlyZXR1cm4gcm90Ow0K PiArCWNhc2UgRFJNX01PREVfUkVGTEVDVF9ZOg0KPiArCQlyb3QgPSBGTElQX1k7DQo+ICsJ CXJldHVybiByb3Q7DQo+ICsJY2FzZSBEUk1fTU9ERV9SRUZMRUNUX1ggfCBEUk1fTU9ERV9S RUZMRUNUX1k6DQo+ICsJCXJvdCA9IEZMSVBfWFk7DQo+ICsJCXJldHVybiByb3Q7DQo+ICsJ ZGVmYXVsdDoNCj4gKwkJYnJlYWs7DQo+ICsJfQ0KPiArDQo+ICsJc3dpdGNoIChyb3RhdGlv biAmIERSTV9NT0RFX1JPVEFURV9NQVNLKSB7DQo+ICsJY2FzZSBEUk1fTU9ERV9ST1RBVEVf MDoNCj4gKwkJcm90ID0gUk9UXzA7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgRFJNX01PREVf Uk9UQVRFXzkwOg0KPiArCQlyb3QgPSBST1RfOTA7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2Ug RFJNX01PREVfUk9UQVRFXzE4MDoNCj4gKwkJcm90ID0gUk9UXzE4MDsNCj4gKwkJYnJlYWs7 DQo+ICsJY2FzZSBEUk1fTU9ERV9ST1RBVEVfMjcwOg0KPiArCQlyb3QgPSBST1RfMjcwOw0K PiArCQlicmVhazsNCj4gKwlkZWZhdWx0Og0KPiArCQlyb3QgPSBST1RfMDsNCj4gKwkJYnJl YWs7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIHJvdDsNCj4gK30NCj4gKw0KPiArc3RhdGlj IGlubGluZSB1OCB0b192c195dXZfY29sb3Jfc3BhY2UodTMyIGNvbG9yX3NwYWNlKQ0KPiAr ew0KPiArCXU4IGNzOw0KPiArDQo+ICsJc3dpdGNoIChjb2xvcl9zcGFjZSkgew0KPiArCWNh c2UgRFJNX0NPTE9SX1lDQkNSX0JUNjAxOg0KPiArCQljcyA9IENPTE9SX1NQQUNFXzYwMTsN Cj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBEUk1fQ09MT1JfWUNCQ1JfQlQ3MDk6DQo+ICsJCWNz ID0gQ09MT1JfU1BBQ0VfNzA5Ow0KPiArCQlicmVhazsNCj4gKwljYXNlIERSTV9DT0xPUl9Z Q0JDUl9CVDIwMjA6DQo+ICsJCWNzID0gQ09MT1JfU1BBQ0VfMjAyMDsNCj4gKwkJYnJlYWs7 DQo+ICsJZGVmYXVsdDoNCj4gKwkJY3MgPSBDT0xPUl9TUEFDRV82MDE7DQo+ICsJCWJyZWFr Ow0KPiArCX0NCj4gKw0KPiArCXJldHVybiBjczsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlu bGluZSB1OCB0b192c190aWxlX21vZGUodTY0IG1vZGlmaWVyKQ0KPiArew0KPiArCXJldHVy biAodTgpKG1vZGlmaWVyICYgRFJNX0ZPUk1BVF9NT0RfVlNfTk9STV9NT0RFX01BU0spOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHU4IHRvX3ZzX2Rpc3BsYXlfaWQoc3RydWN0 IHZzX2RjICpkYywgc3RydWN0IGRybV9jcnRjICpjcnRjKQ0KPiArew0KPiArCXU4IHBhbmVs X251bSA9IGRjLT5ody5pbmZvLT5wYW5lbF9udW07DQo+ICsJdTMyIGluZGV4ID0gZHJtX2Ny dGNfaW5kZXgoY3J0Yyk7DQo+ICsJaW50IGk7DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwg cGFuZWxfbnVtOyBpKyspIHsNCj4gKwkJaWYgKGluZGV4ID09IGRjLT5jcnRjW2ldLT5iYXNl LmluZGV4KQ0KPiArCQkJcmV0dXJuIGk7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgcGxkYV9jbGtfcnN0X2luaXQoc3RydWN0IGRldmlj ZSAqZGV2KQ0KPiArew0KPiArCWludCByZXQgPSAwOw0KPiArCXN0cnVjdCB2c19kYyAqZGMg PSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKw0KPiArCXJldCA9IGNsa19idWxrX3ByZXBh cmVfZW5hYmxlKGRjLT5uY2xrcywgZGMtPmNsa192b3V0KTsNCj4gKwlpZiAocmV0KSB7DQo+ ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBjbG9ja3NcbiIpOw0KPiArCQly ZXR1cm4gcmV0Ow0KPiArCX0NCj4gKw0KPiArCXJldCA9IHJlc2V0X2NvbnRyb2xfYnVsa19k ZWFzc2VydChkYy0+bnJzdHMsIGRjLT5yc3Rfdm91dCk7DQo+ICsJcmV0dXJuIHJldDsNCj4g K30NCj4gKw0KPiArc3RhdGljIHZvaWQgcGxkYV9jbGtfcnN0X2RlaW5pdChzdHJ1Y3QgZGV2 aWNlICpkZXYpDQo+ICt7DQo+ICsJc3RydWN0IHZzX2RjICpkYyA9IGRldl9nZXRfZHJ2ZGF0 YShkZXYpOw0KPiArDQo+ICsJcmVzZXRfY29udHJvbF9idWxrX2Fzc2VydChkYy0+bnJzdHMs IGRjLT5yc3Rfdm91dCk7DQo+ICsJY2xrX2J1bGtfZGlzYWJsZV91bnByZXBhcmUoZGMtPm5j bGtzLCBkYy0+Y2xrX3ZvdXQpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBkY19kZWlu aXQoc3RydWN0IGRldmljZSAqZGV2KQ0KPiArew0KPiArCXN0cnVjdCB2c19kYyAqZGMgPSBk ZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKw0KPiArCWRjX2h3X2VuYWJsZV9pbnRlcnJ1cHQo JmRjLT5odywgMCk7DQo+ICsJZGNfaHdfZGVpbml0KCZkYy0+aHcpOw0KPiArCXBsZGFfY2xr X3JzdF9kZWluaXQoZGV2KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBkY19pbml0KHN0 cnVjdCBkZXZpY2UgKmRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgdnNfZGMgKmRjID0gZGV2X2dl dF9kcnZkYXRhKGRldik7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCWRjLT5maXJzdF9mcmFt ZSA9IHRydWU7DQo+ICsNCj4gKwlyZXQgPSBwbGRhX2Nsa19yc3RfaW5pdChkZXYpOw0KPiAr CWlmIChyZXQgPCAwKSB7DQo+ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGluaXQgZGMg Y2xrIHJlc2V0OiAlZFxuIiwgcmV0KTsNCj4gKwkJcmV0dXJuIHJldDsNCj4gKwl9DQo+ICsN Cj4gKwlyZXQgPSBkY19od19pbml0KCZkYy0+aHcpOw0KPiArCWlmIChyZXQpIHsNCj4gKwkJ ZGV2X2VycihkZXYsICJmYWlsZWQgdG8gaW5pdCBEQyBIV1xuIik7DQo+ICsJCXJldHVybiBy ZXQ7DQo+ICsJfQ0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICt2b2lkIHZzX2RjX2Vu YWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykNCj4gK3sN Cj4gKwlzdHJ1Y3QgdnNfZGMgKmRjID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ICsJc3Ry dWN0IHZzX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPSB0b192c19jcnRjX3N0YXRlKGNydGMt PnN0YXRlKTsNCj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZjcnRjLT5z dGF0ZS0+YWRqdXN0ZWRfbW9kZTsNCj4gKwlzdHJ1Y3QgZGNfaHdfZGlzcGxheSBkaXNwbGF5 Ow0KPiArDQo+ICsJZGlzcGxheS5idXNfZm9ybWF0ID0gY3J0Y19zdGF0ZS0+b3V0cHV0X2Zt dDsNCj4gKwlkaXNwbGF5LmhfYWN0aXZlID0gbW9kZS0+aGRpc3BsYXk7DQo+ICsJZGlzcGxh eS5oX3RvdGFsID0gbW9kZS0+aHRvdGFsOw0KPiArCWRpc3BsYXkuaF9zeW5jX3N0YXJ0ID0g bW9kZS0+aHN5bmNfc3RhcnQ7DQo+ICsJZGlzcGxheS5oX3N5bmNfZW5kID0gbW9kZS0+aHN5 bmNfZW5kOw0KPiArCWlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfUEhTWU5DKQ0K PiArCQlkaXNwbGF5Lmhfc3luY19wb2xhcml0eSA9IHRydWU7DQo+ICsJZWxzZQ0KPiArCQlk aXNwbGF5Lmhfc3luY19wb2xhcml0eSA9IGZhbHNlOw0KPiArDQo+ICsJZGlzcGxheS52X2Fj dGl2ZSA9IG1vZGUtPnZkaXNwbGF5Ow0KPiArCWRpc3BsYXkudl90b3RhbCA9IG1vZGUtPnZ0 b3RhbDsNCj4gKwlkaXNwbGF5LnZfc3luY19zdGFydCA9IG1vZGUtPnZzeW5jX3N0YXJ0Ow0K PiArCWRpc3BsYXkudl9zeW5jX2VuZCA9IG1vZGUtPnZzeW5jX2VuZDsNCj4gKw0KPiArCWlm IChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfUFZTWU5DKQ0KPiArCQlkaXNwbGF5LnZf c3luY19wb2xhcml0eSA9IHRydWU7DQo+ICsJZWxzZQ0KPiArCQlkaXNwbGF5LnZfc3luY19w b2xhcml0eSA9IGZhbHNlOw0KPiArDQo+ICsJZGlzcGxheS5zeW5jX21vZGUgPSBjcnRjX3N0 YXRlLT5zeW5jX21vZGU7DQo+ICsJZGlzcGxheS5iZ19jb2xvciA9IGNydGNfc3RhdGUtPmJn X2NvbG9yOw0KPiArDQo+ICsJZGlzcGxheS5pZCA9IHRvX3ZzX2Rpc3BsYXlfaWQoZGMsIGNy dGMpOw0KPiArCWRpc3BsYXkuc3luY19lbmFibGUgPSBjcnRjX3N0YXRlLT5zeW5jX2VuYWJs ZTsNCj4gKwlkaXNwbGF5LmRpdGhlcl9lbmFibGUgPSBjcnRjX3N0YXRlLT5kaXRoZXJfZW5h YmxlOw0KPiArDQo+ICsJZGlzcGxheS5lbmFibGUgPSB0cnVlOw0KPiArDQo+ICsJaWYgKGNy dGNfc3RhdGUtPmVuY29kZXJfdHlwZSA9PSBEUk1fTU9ERV9FTkNPREVSX0RTSSkgew0KPiAr CQlkY19od19zZXRfb3V0KCZkYy0+aHcsIE9VVF9EUEksIGRpc3BsYXkuaWQpOw0KPiArCQlj bGtfc2V0X3JhdGUoZGMtPmNsa192b3V0W0NMS19WT1VUX1NPQ19QSVhdLmNsaywgbW9kZS0+ Y2xvY2sgKiAxMDAwKTsNCj4gKwkJY2xrX3NldF9wYXJlbnQoZGMtPmNsa192b3V0W0NMS19W T1VUX1BJWDFdLmNsaywNCj4gKwkJCSAgICAgICBkYy0+Y2xrX3ZvdXRbQ0xLX1ZPVVRfU09D X1BJWF0uY2xrKTsNCj4gKwl9IGVsc2Ugew0KPiArCQlkY19od19zZXRfb3V0KCZkYy0+aHcs IE9VVF9EUCwgZGlzcGxheS5pZCk7DQo+ICsJCWNsa19zZXRfcGFyZW50KGRjLT5jbGtfdm91 dFtDTEtfVk9VVF9QSVgwXS5jbGssDQo+ICsJCQkgICAgICAgZGMtPmNsa192b3V0W0NMS19W T1VUX0hETUlfUElYXS5jbGspOw0KPiArCX0NCj4gKw0KPiArCWRjX2h3X3NldHVwX2Rpc3Bs YXkoJmRjLT5odywgJmRpc3BsYXkpOw0KPiArfQ0KPiArDQo+ICt2b2lkIHZzX2RjX2Rpc2Fi bGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpDQo+ICt7DQo+ ICsJc3RydWN0IHZzX2RjICpkYyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArCXN0cnVj dCBkY19od19kaXNwbGF5IGRpc3BsYXk7DQo+ICsNCj4gKwlkaXNwbGF5LmlkID0gdG9fdnNf ZGlzcGxheV9pZChkYywgY3J0Yyk7DQo+ICsJZGlzcGxheS5lbmFibGUgPSBmYWxzZTsNCj4g Kw0KPiArCWRjX2h3X3NldHVwX2Rpc3BsYXkoJmRjLT5odywgJmRpc3BsYXkpOw0KPiArfQ0K PiArDQo+ICtib29sIHZzX2RjX21vZGVfZml4dXAoc3RydWN0IGRldmljZSAqZGV2LA0KPiAr CQkgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwNCj4gKwkJICAg ICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpDQo+ICt7DQo+ICsJ cmV0dXJuIHRydWU7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgdnNfZGNfc2V0X2dhbW1hKHN0cnVj dCBkZXZpY2UgKmRldiwgc3RydWN0IGRybV9jcnRjICpjcnRjLA0KPiArCQkgICAgIHN0cnVj dCBkcm1fY29sb3JfbHV0ICpsdXQsIHVuc2lnbmVkIGludCBzaXplKQ0KPiArew0KPiArCXN0 cnVjdCB2c19kYyAqZGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKwl1MTYgaSwgciwg ZywgYjsNCj4gKwl1OCBiaXRzLCBpZDsNCj4gKw0KPiArCWlmIChzaXplICE9IGRjLT5ody5p bmZvLT5nYW1tYV9zaXplKSB7DQo+ICsJCWRldl9lcnIoZGV2LCAiZ2FtbWEgc2l6ZSBkb2Vz IG5vdCBtYXRjaCFcbiIpOw0KPiArCQlyZXR1cm47DQo+ICsJfQ0KPiArDQo+ICsJaWQgPSB0 b192c19kaXNwbGF5X2lkKGRjLCBjcnRjKTsNCj4gKw0KPiArCWJpdHMgPSBkYy0+aHcuaW5m by0+Z2FtbWFfYml0czsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7DQo+ICsJ CXIgPSBkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLnJlZCwgYml0cyk7DQo+ICsJCWcg PSBkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLmdyZWVuLCBiaXRzKTsNCj4gKwkJYiA9 IGRybV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0uYmx1ZSwgYml0cyk7DQo+ICsJCWRjX2h3 X3VwZGF0ZV9nYW1tYSgmZGMtPmh3LCBpZCwgaSwgciwgZywgYik7DQo+ICsJfQ0KPiArfQ0K PiArDQo+ICt2b2lkIHZzX2RjX2VuYWJsZV9nYW1tYShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywNCj4gKwkJCWJvb2wgZW5hYmxlKQ0KPiArew0KPiArCXN0 cnVjdCB2c19kYyAqZGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKwl1OCBpZDsNCj4g Kw0KPiArCWlkID0gdG9fdnNfZGlzcGxheV9pZChkYywgY3J0Yyk7DQo+ICsJZGNfaHdfZW5h YmxlX2dhbW1hKCZkYy0+aHcsIGlkLCBlbmFibGUpOw0KPiArfQ0KPiArDQo+ICt2b2lkIHZz X2RjX2VuYWJsZV92Ymxhbmsoc3RydWN0IGRldmljZSAqZGV2LCBib29sIGVuYWJsZSkNCj4g K3sNCj4gKwlzdHJ1Y3QgdnNfZGMgKmRjID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ICsN Cj4gKwlkY19od19lbmFibGVfaW50ZXJydXB0KCZkYy0+aHcsIGVuYWJsZSk7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyB1MzIgY2FsY19mYWN0b3IodTMyIHNyYywgdTMyIGRlc3QpDQo+ICt7 DQo+ICsJdTMyIGZhY3RvciA9IDEgPDwgMTY7DQo+ICsNCj4gKwlpZiAoc3JjID4gMSAmJiBk ZXN0ID4gMSkNCj4gKwkJZmFjdG9yID0gKChzcmMgLSAxKSA8PCAxNikgLyAoZGVzdCAtIDEp Ow0KPiArDQo+ICsJcmV0dXJuIGZhY3RvcjsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQg dXBkYXRlX3NjYWxlKHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlLCBzdHJ1Y3QgZGNf aHdfcm9pICpyb2ksDQo+ICsJCQkgc3RydWN0IGRjX2h3X3NjYWxlICpzY2FsZSkNCj4gK3sN Cj4gKwlpbnQgZHN0X3cgPSBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPmRzdCk7DQo+ICsJaW50 IGRzdF9oID0gZHJtX3JlY3RfaGVpZ2h0KCZzdGF0ZS0+ZHN0KTsNCj4gKwlpbnQgc3JjX3cs IHNyY19oLCB0ZW1wOw0KPiArDQo+ICsJc2NhbGUtPmVuYWJsZSA9IGZhbHNlOw0KPiArDQo+ ICsJaWYgKHJvaS0+ZW5hYmxlKSB7DQo+ICsJCXNyY193ID0gcm9pLT53aWR0aDsNCj4gKwkJ c3JjX2ggPSByb2ktPmhlaWdodDsNCj4gKwl9IGVsc2Ugew0KPiArCQlzcmNfdyA9IGRybV9y ZWN0X3dpZHRoKCZzdGF0ZS0+c3JjKSA+PiAxNjsNCj4gKwkJc3JjX2ggPSBkcm1fcmVjdF9o ZWlnaHQoJnN0YXRlLT5zcmMpID4+IDE2Ow0KPiArCX0NCj4gKw0KPiArCWlmIChkcm1fcm90 YXRpb25fOTBfb3JfMjcwKHN0YXRlLT5yb3RhdGlvbikpIHsNCj4gKwkJdGVtcCA9IHNyY193 Ow0KPiArCQlzcmNfdyA9IHNyY19oOw0KPiArCQlzcmNfaCA9IHRlbXA7DQo+ICsJfQ0KPiAr DQo+ICsJaWYgKHNyY193ICE9IGRzdF93KSB7DQo+ICsJCXNjYWxlLT5zY2FsZV9mYWN0b3Jf eCA9IGNhbGNfZmFjdG9yKHNyY193LCBkc3Rfdyk7DQo+ICsJCXNjYWxlLT5lbmFibGUgPSB0 cnVlOw0KPiArCX0gZWxzZSB7DQo+ICsJCXNjYWxlLT5zY2FsZV9mYWN0b3JfeCA9IDEgPDwg MTY7DQo+ICsJfQ0KPiArCWlmIChzcmNfaCAhPSBkc3RfaCkgew0KPiArCQlzY2FsZS0+c2Nh bGVfZmFjdG9yX3kgPSBjYWxjX2ZhY3RvcihzcmNfaCwgZHN0X2gpOw0KPiArCQlzY2FsZS0+ ZW5hYmxlID0gdHJ1ZTsNCj4gKwl9IGVsc2Ugew0KPiArCQlzY2FsZS0+c2NhbGVfZmFjdG9y X3kgPSAxIDw8IDE2Ow0KPiArCX0NCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgdXBkYXRl X2ZiKHN0cnVjdCB2c19wbGFuZSAqcGxhbmUsIHU4IGRpc3BsYXlfaWQsDQo+ICsJCSAgICAg IHN0cnVjdCBkY19od19mYiAqZmIsIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKQ0K PiArew0KPiArCXN0cnVjdCB2c19wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPSB0b192c19w bGFuZV9zdGF0ZShzdGF0ZSk7DQo+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZHJtX2Zi ID0gc3RhdGUtPmZiOw0KPiArCXN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnN0YXRlLT5zcmM7 DQo+ICsNCj4gKwlmYi0+ZGlzcGxheV9pZCA9IGRpc3BsYXlfaWQ7DQo+ICsJZmItPnlfYWRk cmVzcyA9IHBsYW5lLT5kbWFfYWRkclswXTsNCj4gKwlmYi0+eV9zdHJpZGUgPSBkcm1fZmIt PnBpdGNoZXNbMF07DQo+ICsJaWYgKGRybV9mYi0+Zm9ybWF0LT5mb3JtYXQgPT0gRFJNX0ZP Uk1BVF9ZVlU0MjApIHsNCj4gKwkJZmItPnVfYWRkcmVzcyA9IHBsYW5lLT5kbWFfYWRkclsy XTsNCj4gKwkJZmItPnZfYWRkcmVzcyA9IHBsYW5lLT5kbWFfYWRkclsxXTsNCj4gKwkJZmIt PnVfc3RyaWRlID0gZHJtX2ZiLT5waXRjaGVzWzJdOw0KPiArCQlmYi0+dl9zdHJpZGUgPSBk cm1fZmItPnBpdGNoZXNbMV07DQo+ICsJfSBlbHNlIHsNCj4gKwkJZmItPnVfYWRkcmVzcyA9 IHBsYW5lLT5kbWFfYWRkclsxXTsNCj4gKwkJZmItPnZfYWRkcmVzcyA9IHBsYW5lLT5kbWFf YWRkclsyXTsNCj4gKwkJZmItPnVfc3RyaWRlID0gZHJtX2ZiLT5waXRjaGVzWzFdOw0KPiAr CQlmYi0+dl9zdHJpZGUgPSBkcm1fZmItPnBpdGNoZXNbMl07DQo+ICsJfQ0KPiArCWZiLT53 aWR0aCA9IGRybV9yZWN0X3dpZHRoKHNyYykgPj4gMTY7DQo+ICsJZmItPmhlaWdodCA9IGRy bV9yZWN0X2hlaWdodChzcmMpID4+IDE2Ow0KPiArCWZiLT50aWxlX21vZGUgPSB0b192c190 aWxlX21vZGUoZHJtX2ZiLT5tb2RpZmllcik7DQo+ICsJZmItPnJvdGF0aW9uID0gdG9fdnNf cm90YXRpb24oc3RhdGUtPnJvdGF0aW9uKTsNCj4gKwlmYi0+eXV2X2NvbG9yX3NwYWNlID0g dG9fdnNfeXV2X2NvbG9yX3NwYWNlKHN0YXRlLT5jb2xvcl9lbmNvZGluZyk7DQo+ICsJZmIt Pnpwb3MgPSBzdGF0ZS0+enBvczsNCj4gKwlmYi0+ZW5hYmxlID0gc3RhdGUtPnZpc2libGU7 DQo+ICsJdXBkYXRlX2Zvcm1hdChkcm1fZmItPmZvcm1hdC0+Zm9ybWF0LCBkcm1fZmItPm1v ZGlmaWVyLCBmYik7DQo+ICsJdXBkYXRlX3N3aXp6bGUoZHJtX2ZiLT5mb3JtYXQtPmZvcm1h dCwgZmIpOw0KPiArCXVwZGF0ZV93YXRlcm1hcmsocGxhbmVfc3RhdGUtPndhdGVybWFyaywg ZmIpOw0KPiArCXBsYW5lX3N0YXRlLT5zdGF0dXMudGlsZV9tb2RlID0gZmItPnRpbGVfbW9k ZTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgdXBkYXRlX2RlZ2FtbWEoc3RydWN0IHZz X2RjICpkYywgc3RydWN0IHZzX3BsYW5lICpwbGFuZSwNCj4gKwkJCSAgIHN0cnVjdCB2c19w bGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpDQo+ICt7DQo+ICsJZGNfaHdfdXBkYXRlX2RlZ2Ft bWEoJmRjLT5odywgcGxhbmUtPmlkLCBwbGFuZV9zdGF0ZS0+ZGVnYW1tYSk7DQo+ICsJcGxh bmVfc3RhdGUtPmRlZ2FtbWFfY2hhbmdlZCA9IGZhbHNlOw0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgdm9pZCB1cGRhdGVfcm9pKHN0cnVjdCB2c19kYyAqZGMsIHU4IGlkLA0KPiArCQkgICAg ICAgc3RydWN0IHZzX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwNCj4gKwkJICAgICAgIHN0 cnVjdCBkY19od19yb2kgKnJvaSwNCj4gKwkJICAgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgKnN0YXRlKQ0KPiArew0KPiArCXN0cnVjdCBkcm1fdnNfcm9pICpkYXRhOw0KPiArCXN0 cnVjdCBkcm1fcmVjdCAqc3JjID0gJnN0YXRlLT5zcmM7DQo+ICsJdTE2IHNyY193ID0gZHJt X3JlY3Rfd2lkdGgoc3JjKSA+PiAxNjsNCj4gKwl1MTYgc3JjX2ggPSBkcm1fcmVjdF9oZWln aHQoc3JjKSA+PiAxNjsNCj4gKw0KPiArCWlmIChwbGFuZV9zdGF0ZS0+cm9pKSB7DQo+ICsJ CWRhdGEgPSBwbGFuZV9zdGF0ZS0+cm9pLT5kYXRhOw0KPiArDQo+ICsJCWlmIChkYXRhLT5l bmFibGUpIHsNCj4gKwkJCXJvaS0+eCA9IGRhdGEtPnJvaV94Ow0KPiArCQkJcm9pLT55ID0g ZGF0YS0+cm9pX3k7DQo+ICsJCQlyb2ktPndpZHRoID0gKGRhdGEtPnJvaV94ICsgZGF0YS0+ cm9pX3cgPiBzcmNfdykgPw0KPiArCQkJCQkJIChzcmNfdyAtIGRhdGEtPnJvaV94KSA6IGRh dGEtPnJvaV93Ow0KPiArCQkJcm9pLT5oZWlnaHQgPSAoZGF0YS0+cm9pX3kgKyBkYXRhLT5y b2lfaCA+IHNyY19oKSA/DQo+ICsJCQkJCQkgIChzcmNfaCAtIGRhdGEtPnJvaV95KSA6IGRh dGEtPnJvaV9oOw0KPiArCQkJcm9pLT5lbmFibGUgPSB0cnVlOw0KPiArCQl9IGVsc2Ugew0K PiArCQkJcm9pLT5lbmFibGUgPSBmYWxzZTsNCj4gKwkJfQ0KPiArDQo+ICsJCWRjX2h3X3Vw ZGF0ZV9yb2koJmRjLT5odywgaWQsIHJvaSk7DQo+ICsJfSBlbHNlIHsNCj4gKwkJcm9pLT5l bmFibGUgPSBmYWxzZTsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHVwZGF0 ZV9jb2xvcl9tZ210KHN0cnVjdCB2c19kYyAqZGMsIHU4IGlkLA0KPiArCQkJICAgICAgc3Ry dWN0IGRjX2h3X2ZiICpmYiwNCj4gKwkJCSAgICAgIHN0cnVjdCB2c19wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpDQo+ICt7DQo+ICsJc3RydWN0IGRybV92c19jb2xvcl9tZ210ICpkYXRh Ow0KPiArCXN0cnVjdCBkY19od19jb2xvcmtleSBjb2xvcmtleTsNCj4gKw0KPiArCWlmIChw bGFuZV9zdGF0ZS0+Y29sb3JfbWdtdCkgew0KPiArCQlkYXRhID0gcGxhbmVfc3RhdGUtPmNv bG9yX21nbXQtPmRhdGE7DQo+ICsNCj4gKwkJZmItPmNsZWFyX2VuYWJsZSA9IGRhdGEtPmNs ZWFyX2VuYWJsZTsNCj4gKwkJZmItPmNsZWFyX3ZhbHVlID0gZGF0YS0+Y2xlYXJfdmFsdWU7 DQo+ICsNCj4gKwkJaWYgKGRhdGEtPmNvbG9ya2V5ID4gZGF0YS0+Y29sb3JrZXlfaGlnaCkN Cj4gKwkJCWRhdGEtPmNvbG9ya2V5ID0gZGF0YS0+Y29sb3JrZXlfaGlnaDsNCj4gKw0KPiAr CQljb2xvcmtleS5jb2xvcmtleSA9IGRhdGEtPmNvbG9ya2V5Ow0KPiArCQljb2xvcmtleS5j b2xvcmtleV9oaWdoID0gZGF0YS0+Y29sb3JrZXlfaGlnaDsNCj4gKwkJY29sb3JrZXkudHJh bnNwYXJlbmN5ID0gKGRhdGEtPnRyYW5zcGFyZW5jeSkgPw0KPiArCQkJCURDX1RSQU5TUEFS RU5DWV9LRVkgOiBEQ19UUkFOU1BBUkVOQ1lfT1BBUVVFOw0KPiArCQlkY19od191cGRhdGVf Y29sb3JrZXkoJmRjLT5odywgaWQsICZjb2xvcmtleSk7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgdm9pZCB1cGRhdGVfcGxhbmUoc3RydWN0IHZzX2RjICpkYywgc3RydWN0IHZz X3BsYW5lICpwbGFuZSwNCj4gKwkJCSBzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsDQo+ ICsJCQkgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKmRybV9zdGF0ZSkNCj4gK3sNCj4gKwlz dHJ1Y3QgZGNfaHdfZmIgZmIgPSB7MH07DQo+ICsJc3RydWN0IGRjX2h3X3NjYWxlIHNjYWxl Ow0KPiArCXN0cnVjdCBkY19od19wb3NpdGlvbiBwb3M7DQo+ICsJc3RydWN0IGRjX2h3X2Js ZW5kIGJsZW5kOw0KPiArCXN0cnVjdCBkY19od19yb2kgcm9pOw0KPiArCXN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgKnN0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X3BsYW5lX3N0YXRlKGRy bV9zdGF0ZSwNCj4gKwkJCQkJCQkJCSAgIGRybV9wbGFuZSk7DQo+ICsJc3RydWN0IHZzX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSA9IHRvX3ZzX3BsYW5lX3N0YXRlKHN0YXRlKTsNCj4g KwlzdHJ1Y3QgZHJtX3JlY3QgKmRlc3QgPSAmc3RhdGUtPmRzdDsNCj4gKwlib29sIGRlY19l bmFibGUgPSBmYWxzZTsNCj4gKwl1OCBkaXNwbGF5X2lkID0gMDsNCj4gKw0KPiArCWRpc3Bs YXlfaWQgPSB0b192c19kaXNwbGF5X2lkKGRjLCBzdGF0ZS0+Y3J0Yyk7DQo+ICsJdXBkYXRl X2ZiKHBsYW5lLCBkaXNwbGF5X2lkLCAmZmIsIHN0YXRlKTsNCj4gKwlmYi5kZWNfZW5hYmxl ID0gZGVjX2VuYWJsZTsNCj4gKw0KPiArCXVwZGF0ZV9yb2koZGMsIHBsYW5lLT5pZCwgcGxh bmVfc3RhdGUsICZyb2ksIHN0YXRlKTsNCj4gKw0KPiArCXVwZGF0ZV9zY2FsZShzdGF0ZSwg JnJvaSwgJnNjYWxlKTsNCj4gKw0KPiArCWlmIChwbGFuZV9zdGF0ZS0+ZGVnYW1tYV9jaGFu Z2VkKQ0KPiArCQl1cGRhdGVfZGVnYW1tYShkYywgcGxhbmUsIHBsYW5lX3N0YXRlKTsNCj4g Kw0KPiArCXBvcy5zdGFydF94ID0gZGVzdC0+eDE7DQo+ICsJcG9zLnN0YXJ0X3kgPSBkZXN0 LT55MTsNCj4gKwlwb3MuZW5kX3ggPSBkZXN0LT54MjsNCj4gKwlwb3MuZW5kX3kgPSBkZXN0 LT55MjsNCj4gKw0KPiArCWJsZW5kLmFscGhhID0gKHU4KShzdGF0ZS0+YWxwaGEgPj4gOCk7 DQo+ICsJYmxlbmQuYmxlbmRfbW9kZSA9ICh1OCkoc3RhdGUtPnBpeGVsX2JsZW5kX21vZGUp Ow0KPiArDQo+ICsJdXBkYXRlX2NvbG9yX21nbXQoZGMsIHBsYW5lLT5pZCwgJmZiLCBwbGFu ZV9zdGF0ZSk7DQo+ICsNCj4gKwlkY19od191cGRhdGVfcGxhbmUoJmRjLT5odywgcGxhbmUt PmlkLCAmZmIsICZzY2FsZSwgJnBvcywgJmJsZW5kKTsNCj4gK30NCj4gKw0KPiArc3RhdGlj IHZvaWQgdXBkYXRlX3FvcyhzdHJ1Y3QgdnNfZGMgKmRjLCBzdHJ1Y3QgdnNfcGxhbmUgKnBs YW5lLA0KPiArCQkgICAgICAgc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLA0KPiArCQkg ICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKmRybV9zdGF0ZSkNCj4gK3sNCj4gKwlz dHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19wbGFu ZV9zdGF0ZShkcm1fc3RhdGUsDQo+ICsJCQkJCQkJCQkgICBkcm1fcGxhbmUpOw0KPiArCXN0 cnVjdCB2c19wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPSB0b192c19wbGFuZV9zdGF0ZShz dGF0ZSk7DQo+ICsJc3RydWN0IGRybV92c193YXRlcm1hcmsgKmRhdGE7DQo+ICsJc3RydWN0 IGRjX2h3X3FvcyBxb3M7DQo+ICsNCj4gKwlpZiAocGxhbmVfc3RhdGUtPndhdGVybWFyaykg ew0KPiArCQlkYXRhID0gcGxhbmVfc3RhdGUtPndhdGVybWFyay0+ZGF0YTsNCj4gKw0KPiAr CQlpZiAoZGF0YS0+cW9zX2hpZ2gpIHsNCj4gKwkJCWlmIChkYXRhLT5xb3NfbG93ID4gZGF0 YS0+cW9zX2hpZ2gpDQo+ICsJCQkJZGF0YS0+cW9zX2xvdyA9IGRhdGEtPnFvc19oaWdoOw0K PiArDQo+ICsJCQlxb3MubG93X3ZhbHVlID0gZGF0YS0+cW9zX2xvdyAmIDB4MEY7DQo+ICsJ CQlxb3MuaGlnaF92YWx1ZSA9IGRhdGEtPnFvc19oaWdoICYgMHgwRjsNCj4gKwkJCWRjX2h3 X3VwZGF0ZV9xb3MoJmRjLT5odywgJnFvcyk7DQo+ICsJCX0NCj4gKwl9DQo+ICt9DQo+ICsN Cj4gK3N0YXRpYyB2b2lkIHVwZGF0ZV9jdXJzb3Jfc2l6ZShzdHJ1Y3QgZHJtX3BsYW5lX3N0 YXRlICpzdGF0ZSwgc3RydWN0IGRjX2h3X2N1cnNvciAqY3Vyc29yKQ0KPiArew0KPiArCXU4 IHNpemVfdHlwZTsNCj4gKw0KPiArCXN3aXRjaCAoc3RhdGUtPmNydGNfdykgew0KPiArCWNh c2UgMzI6DQo+ICsJCXNpemVfdHlwZSA9IENVUlNPUl9TSVpFXzMyWDMyOw0KPiArCQlicmVh azsNCj4gKwljYXNlIDY0Og0KPiArCQlzaXplX3R5cGUgPSBDVVJTT1JfU0laRV82NFg2NDsN Cj4gKwkJYnJlYWs7DQo+ICsJZGVmYXVsdDoNCj4gKwkJc2l6ZV90eXBlID0gQ1VSU09SX1NJ WkVfMzJYMzI7DQo+ICsJCWJyZWFrOw0KPiArCX0NCj4gKw0KPiArCWN1cnNvci0+c2l6ZSA9 IHNpemVfdHlwZTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgdXBkYXRlX2N1cnNvcl9w bGFuZShzdHJ1Y3QgdnNfZGMgKmRjLCBzdHJ1Y3QgdnNfcGxhbmUgKnBsYW5lLA0KPiArCQkJ CXN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwNCj4gKwkJCQlzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqZHJtX3N0YXRlKQ0KPiArew0KPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUg KnN0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X3BsYW5lX3N0YXRlKGRybV9zdGF0ZSwNCj4g KwkJCQkJCQkJICAgICAgIGRybV9wbGFuZSk7DQo+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZHJtX2ZiID0gc3RhdGUtPmZiOw0KPiArCXN0cnVjdCBkY19od19jdXJzb3IgY3Vyc29y Ow0KPiArDQo+ICsJY3Vyc29yLmFkZHJlc3MgPSBwbGFuZS0+ZG1hX2FkZHJbMF07DQo+ICsJ Y3Vyc29yLnggPSBzdGF0ZS0+Y3J0Y194Ow0KPiArCWN1cnNvci55ID0gc3RhdGUtPmNydGNf eTsNCj4gKwljdXJzb3IuaG90X3ggPSBkcm1fZmItPmhvdF94Ow0KPiArCWN1cnNvci5ob3Rf eSA9IGRybV9mYi0+aG90X3k7DQo+ICsJY3Vyc29yLmRpc3BsYXlfaWQgPSB0b192c19kaXNw bGF5X2lkKGRjLCBzdGF0ZS0+Y3J0Yyk7DQo+ICsJdXBkYXRlX2N1cnNvcl9zaXplKHN0YXRl LCAmY3Vyc29yKTsNCj4gKwljdXJzb3IuZW5hYmxlID0gdHJ1ZTsNCj4gKw0KPiArCWRjX2h3 X3VwZGF0ZV9jdXJzb3IoJmRjLT5odywgY3Vyc29yLmRpc3BsYXlfaWQsICZjdXJzb3IpOw0K PiArfQ0KPiArDQo+ICt2b2lkIHZzX2RjX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZGV2aWNlICpk ZXYsIHN0cnVjdCB2c19wbGFuZSAqcGxhbmUsDQo+ICsJCQlzdHJ1Y3QgZHJtX3BsYW5lICpk cm1fcGxhbmUsDQo+ICsJCQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqZHJtX3N0YXRlKQ0K PiArew0KPiArCXN0cnVjdCB2c19kYyAqZGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4g Kw0KPiArCXVwZGF0ZV9wbGFuZShkYywgcGxhbmUsIGRybV9wbGFuZSwgZHJtX3N0YXRlKTsN Cj4gKwl1cGRhdGVfcW9zKGRjLCBwbGFuZSwgZHJtX3BsYW5lLCBkcm1fc3RhdGUpOw0KPiAr fQ0KPiArDQo+ICt2b2lkIHZzX2RjX3VwZGF0ZV9jdXJzb3JfcGxhbmUoc3RydWN0IGRldmlj ZSAqZGV2LCBzdHJ1Y3QgdnNfcGxhbmUgKnBsYW5lLA0KPiArCQkJICAgICAgIHN0cnVjdCBk cm1fcGxhbmUgKmRybV9wbGFuZSwNCj4gKwkJCSAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqZHJtX3N0YXRlKQ0KPiArew0KPiArCXN0cnVjdCB2c19kYyAqZGMgPSBkZXZfZ2V0 X2RydmRhdGEoZGV2KTsNCj4gKw0KPiArCXVwZGF0ZV9jdXJzb3JfcGxhbmUoZGMsIHBsYW5l LCBkcm1fcGxhbmUsIGRybV9zdGF0ZSk7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgdnNfZGNfZGlz YWJsZV9wbGFuZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCB2c19wbGFuZSAqcGxhbmUs DQo+ICsJCQkgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKQ0KPiArew0KPiAr CXN0cnVjdCB2c19kYyAqZGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKwlzdHJ1Y3Qg ZGNfaHdfZmIgZmIgPSB7MH07DQo+ICsNCj4gKwlmYi5lbmFibGUgPSBmYWxzZTsNCj4gKwlk Y19od191cGRhdGVfcGxhbmUoJmRjLT5odywgcGxhbmUtPmlkLCAmZmIsIE5VTEwsIE5VTEws IE5VTEwpOw0KPiArfQ0KPiArDQo+ICt2b2lkIHZzX2RjX2Rpc2FibGVfY3Vyc29yX3BsYW5l KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHZzX3BsYW5lICpwbGFuZSwNCj4gKwkJCQlz dHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpDQo+ICt7DQo+ICsJc3RydWN0IHZz X2RjICpkYyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArCXN0cnVjdCBkY19od19jdXJz b3IgY3Vyc29yID0gezB9Ow0KPiArDQo+ICsJY3Vyc29yLmVuYWJsZSA9IGZhbHNlOw0KPiAr CWN1cnNvci5kaXNwbGF5X2lkID0gdG9fdnNfZGlzcGxheV9pZChkYywgb2xkX3N0YXRlLT5j cnRjKTsNCj4gKwlkY19od191cGRhdGVfY3Vyc29yKCZkYy0+aHcsIGN1cnNvci5kaXNwbGF5 X2lkLCAmY3Vyc29yKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGJvb2wgdnNfZGNfbW9kX3N1 cHBvcnRlZChjb25zdCBzdHJ1Y3QgdnNfcGxhbmVfaW5mbyAqcGxhbmVfaW5mbywNCj4gKwkJ CQl1NjQgbW9kaWZpZXIpDQo+ICt7DQo+ICsJY29uc3QgdTY0ICptb2RzOw0KPiArDQo+ICsJ aWYgKCFwbGFuZV9pbmZvLT5tb2RpZmllcnMpDQo+ICsJCXJldHVybiBmYWxzZTsNCj4gKw0K PiArCWZvciAobW9kcyA9IHBsYW5lX2luZm8tPm1vZGlmaWVyczsgKm1vZHMgIT0gRFJNX0ZP Uk1BVF9NT0RfSU5WQUxJRDsgbW9kcysrKSB7DQo+ICsJCWlmICgqbW9kcyA9PSBtb2RpZmll cikNCj4gKwkJCXJldHVybiB0cnVlOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiBmYWxzZTsN Cj4gK30NCj4gKw0KPiAraW50IHZzX2RjX2NoZWNrX3BsYW5lKHN0cnVjdCBkZXZpY2UgKmRl diwgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsDQo+ICsJCSAgICAgIHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpu ZXdfcGxhbmVfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfcGxhbmVfc3RhdGUoc3RhdGUs DQo+ICsJCQkJCQkJCQkJIHBsYW5lKTsNCj4gKwlzdHJ1Y3QgdnNfZGMgKmRjID0gZGV2X2dl dF9kcnZkYXRhKGRldik7DQo+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBuZXdf cGxhbmVfc3RhdGUtPmZiOw0KPiArCWNvbnN0IHN0cnVjdCB2c19wbGFuZV9pbmZvICpwbGFu ZV9pbmZvOw0KPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IG5ld19wbGFuZV9zdGF0ZS0+ Y3J0YzsNCj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7DQo+ICsJc3Ry dWN0IHZzX3BsYW5lICp2c19wbGFuZSA9IHRvX3ZzX3BsYW5lKHBsYW5lKTsNCj4gKw0KPiAr CXBsYW5lX2luZm8gPSAmZGMtPmh3LmluZm8tPnBsYW5lc1t2c19wbGFuZS0+aWRdOw0KPiAr DQo+ICsJaWYgKGZiLT53aWR0aCA8IHBsYW5lX2luZm8tPm1pbl93aWR0aCB8fA0KPiArCSAg ICBmYi0+d2lkdGggPiBwbGFuZV9pbmZvLT5tYXhfd2lkdGggfHwNCj4gKwkgICAgZmItPmhl aWdodCA8IHBsYW5lX2luZm8tPm1pbl9oZWlnaHQgfHwNCj4gKwkgICAgZmItPmhlaWdodCA+ IHBsYW5lX2luZm8tPm1heF9oZWlnaHQpDQo+ICsJCWRldl9lcnJfb25jZShkZXYsICJidWZm ZXIgc2l6ZSBtYXkgbm90IHN1cHBvcnQgb24gcGxhbmUlZC5cbiIsDQo+ICsJCQkgICAgIHZz X3BsYW5lLT5pZCk7DQo+ICsNCj4gKwlpZiAoIXZzX2RjX21vZF9zdXBwb3J0ZWQocGxhbmVf aW5mbywgZmItPm1vZGlmaWVyKSkgew0KPiArCQlkZXZfZXJyKGRldiwgInVuc3VwcG9ydGVk IG1vZGlmaWVyIG9uIHBsYW5lJWQuXG4iLCB2c19wbGFuZS0+aWQpOw0KPiArCQlyZXR1cm4g LUVJTlZBTDsNCj4gKwl9DQo+ICsNCj4gKwljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRf ZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7DQo+ICsJcmV0dXJuIGRybV9hdG9t aWNfaGVscGVyX2NoZWNrX3BsYW5lX3N0YXRlKG5ld19wbGFuZV9zdGF0ZSwgY3J0Y19zdGF0 ZSwNCj4gKwkJCQkJCSAgcGxhbmVfaW5mby0+bWluX3NjYWxlLA0KPiArCQkJCQkJICBwbGFu ZV9pbmZvLT5tYXhfc2NhbGUsDQo+ICsJCQkJCQkgIHRydWUsIHRydWUpOw0KPiArfQ0KPiAr DQo+ICtpbnQgdnNfZGNfY2hlY2tfY3Vyc29yX3BsYW5lKHN0cnVjdCBkZXZpY2UgKmRldiwg c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsDQo+ICsJCQkgICAgIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpuZXdf cGxhbmVfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfcGxhbmVfc3RhdGUoc3RhdGUsDQo+ ICsJCQkJCQkJCQkgICBwbGFuZSk7DQo+ICsJc3RydWN0IHZzX2RjICpkYyA9IGRldl9nZXRf ZHJ2ZGF0YShkZXYpOw0KPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gbmV3X3Bs YW5lX3N0YXRlLT5mYjsNCj4gKwljb25zdCBzdHJ1Y3QgdnNfcGxhbmVfaW5mbyAqcGxhbmVf aW5mbzsNCj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBuZXdfcGxhbmVfc3RhdGUtPmNy dGM7DQo+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOw0KPiArCXN0cnVj dCB2c19wbGFuZSAqdnNfcGxhbmUgPSB0b192c19wbGFuZShwbGFuZSk7DQo+ICsNCj4gKwlw bGFuZV9pbmZvID0gJmRjLT5ody5pbmZvLT5wbGFuZXNbdnNfcGxhbmUtPmlkXTsNCj4gKw0K PiArCWlmIChmYi0+d2lkdGggPCBwbGFuZV9pbmZvLT5taW5fd2lkdGggfHwNCj4gKwkgICAg ZmItPndpZHRoID4gcGxhbmVfaW5mby0+bWF4X3dpZHRoIHx8DQo+ICsJICAgIGZiLT5oZWln aHQgPCBwbGFuZV9pbmZvLT5taW5faGVpZ2h0IHx8DQo+ICsJICAgIGZiLT5oZWlnaHQgPiBw bGFuZV9pbmZvLT5tYXhfaGVpZ2h0KQ0KPiArCQlkZXZfZXJyX29uY2UoZGV2LCAiYnVmZmVy IHNpemUgbWF5IG5vdCBzdXBwb3J0IG9uIHBsYW5lJWQuXG4iLCB2c19wbGFuZS0+aWQpOw0K PiArDQo+ICsJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3Rh dGUoc3RhdGUsIGNydGMpOw0KPiArCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpDQo+ICsJCXJl dHVybiAtRUlOVkFMOw0KPiArDQo+ICsJcmV0dXJuIGRybV9hdG9taWNfaGVscGVyX2NoZWNr X3BsYW5lX3N0YXRlKG5ld19wbGFuZV9zdGF0ZSwgY3J0Y19zdGF0ZSwNCj4gKwkJCQkJCXBs YW5lX2luZm8tPm1pbl9zY2FsZSwNCj4gKwkJCQkJCXBsYW5lX2luZm8tPm1heF9zY2FsZSwN Cj4gKwkJCQkJCXRydWUsIHRydWUpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCB2c19j cnRjX2hhbmRsZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjLCBib29sIHVuZGVyZmxv dykNCj4gK3sNCj4gKwlzdHJ1Y3QgdnNfY3J0Y19zdGF0ZSAqdnNfY3J0Y19zdGF0ZSA9IHRv X3ZzX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOw0KPiArDQo+ICsJZHJtX2NydGNfaGFuZGxl X3ZibGFuayhjcnRjKTsNCj4gKw0KPiArCXZzX2NydGNfc3RhdGUtPnVuZGVyZmxvdyA9IHVu ZGVyZmxvdzsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlycXJldHVybl90IGRjX2lzcihpbnQg aXJxLCB2b2lkICpkYXRhKQ0KPiArew0KPiArCXN0cnVjdCB2c19kYyAqZGMgPSBkYXRhOw0K PiArCXN0cnVjdCB2c19kY19pbmZvICpkY19pbmZvID0gZGMtPmh3LmluZm87DQo+ICsJdTMy IGksIHJldDsNCj4gKw0KPiArCXJldCA9IGRjX2h3X2dldF9pbnRlcnJ1cHQoJmRjLT5odyk7 DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgZGNfaW5mby0+cGFuZWxfbnVtOyBpKyspDQo+ ICsJCXZzX2NydGNfaGFuZGxlX3ZibGFuaygmZGMtPmNydGNbaV0tPmJhc2UsIGRjX2h3X2No ZWNrX3VuZGVyZmxvdygmZGMtPmh3KSk7DQo+ICsNCj4gKwlyZXR1cm4gSVJRX0hBTkRMRUQ7 DQo+ICt9DQo+ICsNCj4gK3ZvaWQgdnNfZGNfY29tbWl0KHN0cnVjdCBkZXZpY2UgKmRldikN Cg0KQWxsIHRoZXNlIG1hbnkgZnVuY3Rpb25zIHRoYXQgb3BlcmF0ZSBvbiBzdHJ1Y3QgdnNf ZGMgc2hvdWxkIHJlY2VpdmUgdGhlIA0KcG9pbnRlciB0byBpdCBpbnN0ZWFkIG9mIGEgc3Ry dWN0IGRldmljZS4gc3RydWN0IGRldmljZSBpcyBhbiBlbnRpcmVseSANCmluY29ycmVjdCBs ZXZlbCBvZiBhYnN0cmFjdGlvbiBoZXJlLg0KDQo+ICt7DQo+ICsJc3RydWN0IHZzX2RjICpk YyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArDQo+ICsJZGNfaHdfZW5hYmxlX3NoYWRv d19yZWdpc3RlcigmZGMtPmh3LCBmYWxzZSk7DQo+ICsNCj4gKwlkY19od19jb21taXQoJmRj LT5odyk7DQo+ICsNCj4gKwlpZiAoZGMtPmZpcnN0X2ZyYW1lKQ0KPiArCQlkYy0+Zmlyc3Rf ZnJhbWUgPSBmYWxzZTsNCj4gKw0KPiArCWRjX2h3X2VuYWJsZV9zaGFkb3dfcmVnaXN0ZXIo JmRjLT5odywgdHJ1ZSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZGNfYmluZChzdHJ1 Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkNCj4g K3sNCj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiA9IGRhdGE7DQo+ICsJc3RydWN0 IHZzX2RjICpkYyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArCXN0cnVjdCBkZXZpY2Vf bm9kZSAqcG9ydDsNCj4gKwlzdHJ1Y3QgdnNfY3J0YyAqY3J0YzsNCj4gKwlzdHJ1Y3QgdnNf ZGNfaW5mbyAqZGNfaW5mbzsNCj4gKwlzdHJ1Y3QgdnNfcGxhbmUgKnBsYW5lOw0KPiArCXN0 cnVjdCB2c19wbGFuZV9pbmZvICpwbGFuZV9pbmZvOw0KPiArCWludCBpLCByZXQ7DQo+ICsJ dTMyIGN0cmNfbWFzayA9IDA7DQo+ICsNCj4gKwlpZiAoIWRybV9kZXYgfHwgIWRjKSB7DQo+ ICsJCWRldl9lcnIoZGV2LCAiZGV2aWNlcyBhcmUgbm90IGNyZWF0ZWQuXG4iKTsNCj4gKwkJ cmV0dXJuIC1FTk9ERVY7DQo+ICsJfQ0KPiArDQo+ICsJcmV0ID0gZGNfaW5pdChkZXYpOw0K PiArCWlmIChyZXQgPCAwKSB7DQo+ICsJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGluaXRp YWxpemUgREMgaGFyZHdhcmUuXG4iKTsNCj4gKwkJcmV0dXJuIHJldDsNCj4gKwl9DQo+ICsN Cj4gKwlwb3J0ID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUoZGV2LT5vZl9ub2RlLCAicG9ydCIp Ow0KPiArCWlmICghcG9ydCkgew0KPiArCQlkZXZfZXJyKGRldiwgIm5vIHBvcnQgbm9kZSBm b3VuZFxuIik7DQo+ICsJCXJldHVybiAtRU5PREVWOw0KPiArCX0NCj4gKwlvZl9ub2RlX3B1 dChwb3J0KTsNCj4gKw0KPiArCWRjX2luZm8gPSBkYy0+aHcuaW5mbzsNCj4gKw0KPiArCWZv ciAoaSA9IDA7IGkgPCBkY19pbmZvLT5wYW5lbF9udW07IGkrKykgew0KPiArCQljcnRjID0g dnNfY3J0Y19jcmVhdGUoZHJtX2RldiwgZGNfaW5mbyk7DQo+ICsJCWlmICghY3J0Yykgew0K PiArCQkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gY3JlYXRlIENSVEMuXG4iKTsNCj4gKwkJ CXJldCA9IC1FTk9NRU07DQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiArCQl9DQo+ICsNCj4gKwkJ Y3J0Yy0+YmFzZS5wb3J0ID0gcG9ydDsNCj4gKwkJY3J0Yy0+ZGV2ID0gZGV2Ow0KPiArCQlk Yy0+Y3J0Y1tpXSA9IGNydGM7DQo+ICsJCWN0cmNfbWFzayB8PSBkcm1fY3J0Y19tYXNrKCZj cnRjLT5iYXNlKTsNCj4gKwl9DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgZGNfaW5mby0+ cGxhbmVfbnVtOyBpKyspIHsNCj4gKwkJcGxhbmVfaW5mbyA9IChzdHJ1Y3QgdnNfcGxhbmVf aW5mbyAqKSZkY19pbmZvLT5wbGFuZXNbaV07DQo+ICsNCj4gKwkJaWYgKCFzdHJjbXAocGxh bmVfaW5mby0+bmFtZSwgIlByaW1hcnkiKSB8fCAhc3RyY21wKHBsYW5lX2luZm8tPm5hbWUs ICJDdXJzb3IiKSkgew0KPiArCQkJcGxhbmUgPSB2c19wbGFuZV9jcmVhdGUoZHJtX2Rldiwg cGxhbmVfaW5mbywgZGNfaW5mby0+bGF5ZXJfbnVtLA0KPiArCQkJCQkJZHJtX2NydGNfbWFz aygmZGMtPmNydGNbMF0tPmJhc2UpKTsNCj4gKwkJfSBlbHNlIGlmICghc3RyY21wKHBsYW5l X2luZm8tPm5hbWUsICJQcmltYXJ5XzEiKSB8fA0KPiArCQkJCSAgICFzdHJjbXAocGxhbmVf aW5mby0+bmFtZSwgIkN1cnNvcl8xIikpIHsNCj4gKwkJCXBsYW5lID0gdnNfcGxhbmVfY3Jl YXRlKGRybV9kZXYsIHBsYW5lX2luZm8sIGRjX2luZm8tPmxheWVyX251bSwNCj4gKwkJCQkJ CWRybV9jcnRjX21hc2soJmRjLT5jcnRjWzFdLT5iYXNlKSk7DQo+ICsJCX0gZWxzZSB7DQo+ ICsJCQlwbGFuZSA9IHZzX3BsYW5lX2NyZWF0ZShkcm1fZGV2LCBwbGFuZV9pbmZvLA0KPiAr CQkJCQkJZGNfaW5mby0+bGF5ZXJfbnVtLCBjdHJjX21hc2spOw0KPiArCQl9DQo+ICsNCj4g KwkJaWYgKElTX0VSUihwbGFuZSkpIHsNCj4gKwkJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRv IGNvbnN0cnVjdCBwbGFuZVxuIik7DQo+ICsJCQlyZXR1cm4gUFRSX0VSUihwbGFuZSk7DQo+ ICsJCX0NCj4gKw0KPiArCQlwbGFuZS0+aWQgPSBpOw0KPiArCQlkYy0+cGxhbmVzW2ldLmlk ID0gcGxhbmVfaW5mby0+aWQ7DQo+ICsNCj4gKwkJaWYgKHBsYW5lX2luZm8tPnR5cGUgPT0g RFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkgew0KPiArCQkJaWYgKCFzdHJjbXAocGxhbmVfaW5m by0+bmFtZSwgIlByaW1hcnkiKSkNCj4gKwkJCQlkYy0+Y3J0Y1swXS0+YmFzZS5wcmltYXJ5 ID0gJnBsYW5lLT5iYXNlOw0KPiArCQkJZWxzZQ0KPiArCQkJCWRjLT5jcnRjWzFdLT5iYXNl LnByaW1hcnkgPSAmcGxhbmUtPmJhc2U7DQo+ICsJCQlkcm1fZGV2LT5tb2RlX2NvbmZpZy5t aW5fd2lkdGggPSBwbGFuZV9pbmZvLT5taW5fd2lkdGg7DQo+ICsJCQlkcm1fZGV2LT5tb2Rl X2NvbmZpZy5taW5faGVpZ2h0ID0NCj4gKwkJCQkJCQlwbGFuZV9pbmZvLT5taW5faGVpZ2h0 Ow0KPiArCQkJZHJtX2Rldi0+bW9kZV9jb25maWcubWF4X3dpZHRoID0gcGxhbmVfaW5mby0+ bWF4X3dpZHRoOw0KPiArCQkJZHJtX2Rldi0+bW9kZV9jb25maWcubWF4X2hlaWdodCA9DQo+ ICsJCQkJCQkJcGxhbmVfaW5mby0+bWF4X2hlaWdodDsNCj4gKwkJfQ0KPiArDQo+ICsJCWlm IChwbGFuZV9pbmZvLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUikgew0KPiArCQkJ aWYgKCFzdHJjbXAocGxhbmVfaW5mby0+bmFtZSwgIkN1cnNvciIpKQ0KPiArCQkJCWRjLT5j cnRjWzBdLT5iYXNlLmN1cnNvciA9ICZwbGFuZS0+YmFzZTsNCj4gKwkJCWVsc2UNCj4gKwkJ CQlkYy0+Y3J0Y1sxXS0+YmFzZS5jdXJzb3IgPSAmcGxhbmUtPmJhc2U7DQo+ICsJCQlkcm1f ZGV2LT5tb2RlX2NvbmZpZy5jdXJzb3Jfd2lkdGggPQ0KPiArCQkJCQkJCXBsYW5lX2luZm8t Pm1heF93aWR0aDsNCj4gKwkJCWRybV9kZXYtPm1vZGVfY29uZmlnLmN1cnNvcl9oZWlnaHQg PQ0KPiArCQkJCQkJCXBsYW5lX2luZm8tPm1heF9oZWlnaHQ7DQo+ICsJCX0NCj4gKwl9DQo+ ICsNCj4gKwl2c19kcm1fdXBkYXRlX3BpdGNoX2FsaWdubWVudChkcm1fZGV2LCBkY19pbmZv LT5waXRjaF9hbGlnbm1lbnQpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4g K3N0YXRpYyB2b2lkIGRjX3VuYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZp Y2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkNCj4gK3sNCj4gKwlkY19kZWluaXQoZGV2KTsNCj4g K30NCj4gKw0KPiArY29uc3Qgc3RydWN0IGNvbXBvbmVudF9vcHMgZGNfY29tcG9uZW50X29w cyA9IHsNCj4gKwkuYmluZCA9IGRjX2JpbmQsDQo+ICsJLnVuYmluZCA9IGRjX3VuYmluZCwN Cj4gK307DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGRjX2Ry aXZlcl9kdF9tYXRjaFtdID0gew0KPiArCXsgLmNvbXBhdGlibGUgPSAic3RhcmZpdmUsamg3 MTEwLWRjODIwMCIsIH0sDQo+ICsJe30sDQo+ICt9Ow0KPiArTU9EVUxFX0RFVklDRV9UQUJM RShvZiwgZGNfZHJpdmVyX2R0X21hdGNoKTsNCj4gKw0KPiArc3RhdGljIGludCBkY19wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiArew0KPiArCXN0cnVjdCBkZXZp Y2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+ICsJc3RydWN0IHZzX2RjICpkYzsNCj4gKwlpbnQg aXJxLCByZXQsIGk7DQo+ICsNCj4gKwlkYyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigq ZGMpLCBHRlBfS0VSTkVMKTsNCj4gKwlpZiAoIWRjKQ0KPiArCQlyZXR1cm4gLUVOT01FTTsN Cj4gKw0KPiArCWRjLT5ody5oaV9iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291 cmNlKHBkZXYsIDApOw0KPiArCWlmIChJU19FUlIoZGMtPmh3LmhpX2Jhc2UpKQ0KPiArCQly ZXR1cm4gUFRSX0VSUihkYy0+aHcuaGlfYmFzZSk7DQo+ICsNCj4gKwlkYy0+aHcucmVnX2Jh c2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMSk7DQo+ICsJaWYg KElTX0VSUihkYy0+aHcucmVnX2Jhc2UpKQ0KPiArCQlyZXR1cm4gUFRSX0VSUihkYy0+aHcu cmVnX2Jhc2UpOw0KPiArDQo+ICsJZGMtPmRzc19yZWcgPSBkZXZtX3BsYXRmb3JtX2lvcmVt YXBfcmVzb3VyY2UocGRldiwgMik7DQo+ICsJaWYgKElTX0VSUihkYy0+ZHNzX3JlZykpDQo+ ICsJCXJldHVybiBQVFJfRVJSKGRjLT5kc3NfcmVnKTsNCj4gKw0KPiArCWRjLT5uY2xrcyA9 IEFSUkFZX1NJWkUoZGMtPmNsa192b3V0KTsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgZGMtPm5j bGtzOyArK2kpDQo+ICsJCWRjLT5jbGtfdm91dFtpXS5pZCA9IHZvdXRfY2xvY2tzW2ldOw0K PiArCXJldCA9IGRldm1fY2xrX2J1bGtfZ2V0KGRldiwgZGMtPm5jbGtzLCBkYy0+Y2xrX3Zv dXQpOw0KPiArCWlmIChyZXQpIHsNCj4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0 IGNsayBjb250cm9sc1xuIik7DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiArDQo+ICsJ ZGMtPm5yc3RzID0gQVJSQVlfU0laRShkYy0+cnN0X3ZvdXQpOw0KPiArCWZvciAoaSA9IDA7 IGkgPCBkYy0+bnJzdHM7ICsraSkNCj4gKwkJZGMtPnJzdF92b3V0W2ldLmlkID0gdm91dF9y ZXNldHNbaV07DQo+ICsJcmV0ID0gZGV2bV9yZXNldF9jb250cm9sX2J1bGtfZ2V0X3NoYXJl ZChkZXYsIGRjLT5ucnN0cywNCj4gKwkJCQkJCSBkYy0+cnN0X3ZvdXQpOw0KPiArCWlmIChy ZXQpIHsNCj4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IHJlc2V0IGNvbnRyb2xz XG4iKTsNCj4gKwkJcmV0dXJuIHJldDsNCj4gKwl9DQo+ICsNCj4gKwlpcnEgPSBwbGF0Zm9y bV9nZXRfaXJxKHBkZXYsIDApOw0KPiArDQo+ICsJcmV0ID0gZGV2bV9yZXF1ZXN0X2lycShk ZXYsIGlycSwgZGNfaXNyLCAwLCBkZXZfbmFtZShkZXYpLCBkYyk7DQo+ICsJaWYgKHJldCA8 IDApIHsNCj4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gaW5zdGFsbCBpcnE6JXUuXG4i LCBpcnEpOw0KPiArCQlyZXR1cm4gcmV0Ow0KPiArCX0NCj4gKw0KPiArCWRldl9zZXRfZHJ2 ZGF0YShkZXYsIGRjKTsNCj4gKw0KPiArCXJldHVybiBjb21wb25lbnRfYWRkKGRldiwgJmRj X2NvbXBvbmVudF9vcHMpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGRjX3JlbW92ZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiArew0KPiArCXN0cnVjdCBkZXZpY2Ug KmRldiA9ICZwZGV2LT5kZXY7DQo+ICsNCj4gKwljb21wb25lbnRfZGVsKGRldiwgJmRjX2Nv bXBvbmVudF9vcHMpOw0KPiArDQo+ICsJZGV2X3NldF9kcnZkYXRhKGRldiwgTlVMTCk7DQo+ ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RydWN0IHBsYXRmb3JtX2RyaXZl ciBkY19wbGF0Zm9ybV9kcml2ZXIgPSB7DQo+ICsJLnByb2JlID0gZGNfcHJvYmUsDQo+ICsJ LnJlbW92ZSA9IGRjX3JlbW92ZSwNCj4gKwkuZHJpdmVyID0gew0KPiArCQkubmFtZSA9ICJ2 cy1kYyIsDQo+ICsJCS5vZl9tYXRjaF90YWJsZSA9IG9mX21hdGNoX3B0cihkY19kcml2ZXJf ZHRfbWF0Y2gpLA0KPiArCX0sDQo+ICt9Ow0KPiArDQo+ICtNT0RVTEVfQVVUSE9SKCJTdGFy Rml2ZSBDb3Jwb3JhdGlvbiIpOw0KPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJWZXJpU2lsaWNv biBEQyBEcml2ZXIiKTsNCj4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsNCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19kYy5oIGIvZHJpdmVycy9ncHUv ZHJtL3ZlcmlzaWxpY29uL3ZzX2RjLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k ZXggMDAwMDAwMDAwLi40ZDZiMWQwNDUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZGMuaA0KPiBAQCAtMCwwICsxLDg3IEBADQo+ ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KPiArLyoNCj4gKyAq IENvcHlyaWdodCAoQykgMjAyMyBWZXJpU2lsaWNvbiBIb2xkaW5ncyBDby4sIEx0ZC4NCj4g KyAqLw0KPiArDQo+ICsjaWZuZGVmIF9fVlNfRENfSF9fDQo+ICsjZGVmaW5lIF9fVlNfRENf SF9fDQo+ICsNCj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCj4gKyNpbmNsdWRlIDxsaW51 eC9tbV90eXBlcy5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+DQo+ICsjaW5jbHVk ZSA8bGludXgvdmVyc2lvbi5oPg0KPiArDQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9mb3VyY2Mu aD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX21vZGVzLmg+DQo+ICsNCj4gKyNpbmNsdWRlICJ2 c19jcnRjLmgiDQo+ICsjaW5jbHVkZSAidnNfZGNfaHcuaCINCj4gKyNpbmNsdWRlICJ2c19w bGFuZS5oIg0KPiArDQo+ICsjZGVmaW5lIGZvdXJjY19tb2RfdnNfZ2V0X3R5cGUodmFsKSBc DQo+ICsJCQkoKCh2YWwpICYgRFJNX0ZPUk1BVF9NT0RfVlNfVFlQRV9NQVNLKSA+PiA1NCkN Cj4gKw0KPiArc3RydWN0IHZzX2RjX3BsYW5lIHsNCj4gKwllbnVtIGRjX2h3X3BsYW5lX2lk IGlkOw0KPiArfTsNCj4gKw0KPiArZW51bSB2b3V0X2NsayB7DQo+ICsJQ0xLX1ZPVVRfTk9D X0RJU1AgPSAwLA0KPiArCUNMS19WT1VUX1BJWDAsDQo+ICsJQ0xLX1ZPVVRfUElYMSwNCj4g KwlDTEtfVk9VVF9BWEksDQo+ICsJQ0xLX1ZPVVRfQ09SRSwNCj4gKwlDTEtfVk9VVF9BSEIs DQo+ICsJQ0xLX1ZPVVRfSERNSV9QSVgsDQo+ICsJQ0xLX1ZPVVRfU09DX1BJWCwNCj4gKwlD TEtfVk9VVF9OVU0NCj4gK307DQo+ICsNCj4gK2VudW0gcnN0X3ZvdXQgew0KPiArCVJTVF9W T1VUX0FYSSA9IDAsDQo+ICsJUlNUX1ZPVVRfQUhCLA0KPiArCVJTVF9WT1VUX0NPUkUsDQo+ ICsJUlNUX1ZPVVRfTlVNDQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgdnNfZGMgew0KPiArCXN0 cnVjdCB2c19jcnRjCQkqY3J0Y1tEQ19ESVNQTEFZX05VTV07DQo+ICsJc3RydWN0IGRjX2h3 CQlodzsNCj4gKwl2b2lkIF9faW9tZW0JCSpkc3NfcmVnOw0KPiArCWJvb2wJCQlmaXJzdF9m cmFtZTsNCj4gKw0KPiArCXN0cnVjdCB2c19kY19wbGFuZQlwbGFuZXNbUExBTkVfTlVNXTsN Cj4gKwlzdHJ1Y3QgY2xrX2J1bGtfZGF0YQljbGtfdm91dFtDTEtfVk9VVF9OVU1dOw0KPiAr CWludAkJCW5jbGtzOw0KPiArCXN0cnVjdCByZXNldF9jb250cm9sX2J1bGtfZGF0YSByc3Rf dm91dFtSU1RfVk9VVF9OVU1dOw0KPiArCWludAkJCW5yc3RzOw0KPiArfTsNCj4gKw0KPiAr dm9pZCB2c19kY19lbmFibGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2NydGMg KmNydGMpOw0KPiArdm9pZCB2c19kY19kaXNhYmxlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3Ry dWN0IGRybV9jcnRjICpjcnRjKTsNCj4gK2Jvb2wgdnNfZGNfbW9kZV9maXh1cChzdHJ1Y3Qg ZGV2aWNlICpkZXYsDQo+ICsJCSAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICptb2RlLA0KPiArCQkgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRf bW9kZSk7DQo+ICt2b2lkIHZzX2RjX3NldF9nYW1tYShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywNCj4gKwkJICAgICBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAq bHV0LCB1bnNpZ25lZCBpbnQgc2l6ZSk7DQo+ICt2b2lkIHZzX2RjX2VuYWJsZV9nYW1tYShz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCBlbmFibGUp Ow0KPiArdm9pZCB2c19kY19lbmFibGVfdmJsYW5rKHN0cnVjdCBkZXZpY2UgKmRldiwgYm9v bCBlbmFibGUpOw0KPiArdm9pZCB2c19kY19jb21taXQoc3RydWN0IGRldmljZSAqZGV2KTsN Cj4gK3ZvaWQgdnNfZGNfdXBkYXRlX3BsYW5lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0 IHZzX3BsYW5lICpwbGFuZSwNCj4gKwkJCXN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwN Cj4gKwkJCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpkcm1fc3RhdGUpOw0KPiArdm9pZCB2 c19kY19kaXNhYmxlX3BsYW5lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHZzX3BsYW5l ICpwbGFuZSwNCj4gKwkJCSBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpOw0K PiAraW50IHZzX2RjX2NoZWNrX3BsYW5lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsDQo+ICsJCSAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSk7DQo+ICt2b2lkIHZzX2RjX3VwZGF0ZV9jdXJzb3JfcGxhbmUoc3RydWN0IGRldmlj ZSAqZGV2LCBzdHJ1Y3QgdnNfcGxhbmUgKnBsYW5lLA0KPiArCQkJICAgICAgIHN0cnVjdCBk cm1fcGxhbmUgKmRybV9wbGFuZSwNCj4gKwkJCSAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqZHJtX3N0YXRlKTsNCj4gK3ZvaWQgdnNfZGNfZGlzYWJsZV9jdXJzb3JfcGxhbmUo c3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdnNfcGxhbmUgKnBsYW5lLA0KPiArCQkJCXN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSk7DQo+ICtpbnQgdnNfZGNfY2hlY2tf Y3Vyc29yX3BsYW5lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsDQo+ICsJCQkgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7DQo+ICsN Cj4gK2V4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGRjX3BsYXRmb3JtX2RyaXZlcjsN Cj4gKw0KPiArI2VuZGlmIC8qIF9fVlNfRENfSF9fICovDQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZGNfaHcuYyBiL2RyaXZlcnMvZ3B1L2RybS92 ZXJpc2lsaWNvbi92c19kY19ody5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IDAwMDAwMDAwMC4uZDM3MGRkNDAxDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2RjX2h3LmMNCj4gQEAgLTAsMCArMSwyMDA4IEBA DQo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiArLyoNCj4gKyAq IENvcHlyaWdodCAoQykgMjAyMyBWZXJpU2lsaWNvbiBIb2xkaW5ncyBDby4sIEx0ZC4NCj4g KyAqLw0KPiArDQo+ICsjaW5jbHVkZSA8bGludXgvYml0cy5oPg0KPiArI2luY2x1ZGUgPGxp bnV4L2lvLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvbWVkaWEtYnVzLWZvcm1hdC5oPg0KPiAr I2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPg0KPiArI2luY2x1ZGUgPGRybS9k cm1fYmxlbmQuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZvdXJjYy5oPg0KPiArI2luY2x1 ZGUgPGRybS92c19kcm0uaD4NCj4gKw0KPiArI2luY2x1ZGUgInZzX2RjX2h3LmgiDQo+ICsj aW5jbHVkZSAidnNfdHlwZS5oIg0KPiArDQo+ICtzdGF0aWMgY29uc3QgdTMyIGhvcmtlcm5l bFtdID0gew0KPiArCTB4MDAwMDAwMDAsIDB4MjAwMDAwMDAsIDB4MDAwMDIwMDAsIDB4MDAw MDAwMDAsDQo+ICsJMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgyM2ZkMWMwMywgMHgwMDAw MDAwMCwNCj4gKwkweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDE4MWYwMDAwLCAweDAwMDAy N2UxLA0KPiArCTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MmI5ODE0 NjgsDQo+ICsJMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgxMGYwMDAw MCwNCj4gKwkweDAwMDAyZjEwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAw LA0KPiArCTB4MzIzOTBkYzcsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAs DQo+ICsJMHgwYWY1MDAwMCwgMHgwMDAwMzUwYiwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwN Cj4gKwkweDAwMDAwMDAwLCAweDM3ODEwODdmLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLA0K PiArCTB4MDAwMDAwMDAsIDB4MDY2NjAwMDAsIDB4MDAwMDM5OWEsIDB4MDAwMDAwMDAsDQo+ ICsJMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgzYjU5MDRhNywgMHgwMDAwMDAwMCwNCj4g KwkweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAzM2MwMDAwLCAweDAwMDAzY2M0LA0KPiAr CTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4M2RlMTAyMWYsDQo+ICsJ MHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMTQ3MDAwMCwNCj4gKwkw eDAwMDAzZWI5LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLA0KPiArCTB4 M2Y1MzAwYWQsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsDQo+ICsJMHgw MDQ4MDAwMCwgMHgwMDAwM2ZiOCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwNCj4gKwkweDAw MDAwMDAwLCAweDNmZWYwMDExLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLA0KPiArCTB4MDAw MDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDQwMDAsIDB4MDAwMDAwMDAsDQo+ICsJMHgwMDAw MDAwMCwgMHgwMDAwMDAwMCwgMHgyMDAwMjAwMCwgMHgwMDAwMDAwMCwNCj4gKwkweDAwMDAw MDAwLCAweDAwMDAwMDAwLCAweDFjMDMwMDAwLCAweDAwMDAyM2ZkLA0KPiArCTB4MDAwMDAw MDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MjdlMTE4MWYsDQo+ICsJMHgwMDAwMDAw MCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgxNDY4MDAwMCwNCj4gKwkweDAwMDAyYjk4 LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLA0KPiArCTB4MmYxMDEwZjAs IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsDQo+ICsJMHgwZGM3MDAwMCwg MHgwMDAwMzIzOSwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwNCj4gKwkweDAwMDAwMDAwLCAw eDM1MGIwYWY1LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLA0KPiArCTB4MDAwMDAwMDAsIDB4 MDg3ZjAwMDAsIDB4MDAwMDM3ODEsIDB4MDAwMDAwMDAsDQo+ICsJMHgwMDAwMDAwMCwgMHgw MDAwMDAwMCwgMHgzOTlhMDY2NiwgMHgwMDAwMDAwMCwNCj4gKwkweDAwMDAwMDAwLCAweDAw MDAwMDAwLCAweDA0YTcwMDAwLCAweDAwMDAzYjU5LA0KPiArCTB4MDAwMDAwMDAsIDB4MDAw MDAwMDAsIDB4MDAwMDAwMDAsIDB4M2NjNDAzM2MsDQo+ICsJMHgwMDAwMDAwMCwgMHgwMDAw MDAwMCwgMHgwMDAwMDAwMCwgMHgwMjFmMDAwMCwNCj4gK307DQo+ICsNCj4gKyNkZWZpbmUg SF9DT0VGX1NJWkUgKHNpemVvZihob3JrZXJuZWwpIC8gc2l6ZW9mKHUzMikpDQo+ICsNCj4g K3N0YXRpYyBjb25zdCB1MzIgdmVya2VybmVsW10gPSB7DQo+ICsJMHgwMDAwMDAwMCwgMHgy MDAwMDAwMCwgMHgwMDAwMjAwMCwgMHgwMDAwMDAwMCwNCj4gKwkweDAwMDAwMDAwLCAweDAw MDAwMDAwLCAweDIzZmQxYzAzLCAweDAwMDAwMDAwLA0KPiArCTB4MDAwMDAwMDAsIDB4MDAw MDAwMDAsIDB4MTgxZjAwMDAsIDB4MDAwMDI3ZTEsDQo+ICsJMHgwMDAwMDAwMCwgMHgwMDAw MDAwMCwgMHgwMDAwMDAwMCwgMHgyYjk4MTQ2OCwNCj4gKwkweDAwMDAwMDAwLCAweDAwMDAw MDAwLCAweDAwMDAwMDAwLCAweDEwZjAwMDAwLA0KPiArCTB4MDAwMDJmMTAsIDB4MDAwMDAw MDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsDQo+ICsJMHgzMjM5MGRjNywgMHgwMDAwMDAw MCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwNCj4gKwkweDBhZjUwMDAwLCAweDAwMDAzNTBi LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLA0KPiArCTB4MDAwMDAwMDAsIDB4Mzc4MTA4N2Ys IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsDQo+ICsJMHgwMDAwMDAwMCwgMHgwNjY2MDAwMCwg MHgwMDAwMzk5YSwgMHgwMDAwMDAwMCwNCj4gKwkweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAw eDNiNTkwNGE3LCAweDAwMDAwMDAwLA0KPiArCTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4 MDMzYzAwMDAsIDB4MDAwMDNjYzQsDQo+ICsJMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgw MDAwMDAwMCwgMHgzZGUxMDIxZiwNCj4gKwkweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAw MDAwMDAwLCAweDAxNDcwMDAwLA0KPiArCTB4MDAwMDNlYjksIDB4MDAwMDAwMDAsIDB4MDAw MDAwMDAsIDB4MDAwMDAwMDAsDQo+ICsJMHgzZjUzMDBhZCwgMHgwMDAwMDAwMCwgMHgwMDAw MDAwMCwgMHgwMDAwMDAwMCwNCj4gKwkweDAwNDgwMDAwLCAweDAwMDAzZmI4LCAweDAwMDAw MDAwLCAweDAwMDAwMDAwLA0KPiArCTB4MDAwMDAwMDAsIDB4M2ZlZjAwMTEsIDB4MDAwMDAw MDAsIDB4MDAwMDAwMDAsDQo+ICsJMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwNDAw MCwgMHgwMDAwMDAwMCwNCj4gKwkweGNkY2QwMDAwLCAweGZkZmRmZGZkLCAweGFiYWJhYmFi LCAweGFiYWJhYmFiLA0KPiArCTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4NWZmNWY0NTYs IDB4MDAwZjVmNTgsDQo+ICsJMHgwMmNjNmM3OCwgMHgwMmNjMGMyOCwgMHhmZWVlZmVlZSwg MHhmZWVlZmVlZSwNCj4gKwkweGZlZWVmZWVlLCAweGZlZWVmZWVlLCAweGZlZWVmZWVlLCAw eGZlZWVmZWVlLA0KPiArCTB4ZmVlZWZlZWUsIDB4ZmVlZWZlZWUsIDB4ZmVlZWZlZWUsIDB4 ZmVlZWZlZWUsDQo+ICsJMHhmZWVlZmVlZSwgMHhmZWVlZmVlZSwgMHhmZWVlZmVlZSwgMHhm ZWVlZmVlZSwNCj4gKwkweGZlZWVmZWVlLCAweGZlZWVmZWVlLCAweGZlZWVmZWVlLCAweGZl ZWVmZWVlLA0KPiArCTB4ZmVlZWZlZWUsIDB4ZmVlZWZlZWUsIDB4ZmVlZWZlZWUsIDB4ZmVl ZWZlZWUsDQo+ICsJMHhmZWVlZmVlZSwgMHhmZWVlZmVlZSwgMHhmZWVlZmVlZSwgMHhmZWVl ZmVlZSwNCj4gKwkweGZlZWVmZWVlLCAweGZlZWVmZWVlLCAweGZlZWVmZWVlLCAweGZlZWVm ZWVlLA0KPiArCTB4ZmVlZWZlZWUsIDB4ZmVlZWZlZWUsIDB4ZmVlZWZlZWUsIDB4ZmVlZWZl ZWUsDQo+ICsJMHhmZWVlZmVlZSwgMHhmZWVlZmVlZSwgMHhmZWVlZmVlZSwgMHhmZWVlZmVl ZSwNCj4gKwkweGZlZWVmZWVlLCAweGZlZWVmZWVlLCAweGZlZWVmZWVlLCAweGZlZWVmZWVl LA0KPiArfTsNCj4gKw0KPiArI2RlZmluZSBWX0NPRUZfU0laRSAoc2l6ZW9mKHZlcmtlcm5l bCkgLyBzaXplb2YodTMyKSkNCj4gKw0KPiArLyoNCj4gKyAqIFJHQiA3MDktPjIwMjAgY29u dmVyc2lvbiBwYXJhbWV0ZXJzDQo+ICsgKi8NCj4gK3N0YXRpYyB1MTYgUkdCMlJHQltSR0Jf VE9fUkdCX1RBQkxFX1NJWkVdID0gew0KPiArCTEwMjc5LAk1Mzk1LAk3MDksDQo+ICsJMTEz MiwJMTUwNjUsCTE4NywNCj4gKwkyNjksCTE0NDIsCTE0Njc0DQo+ICt9Ow0KPiArDQo+ICsv Kg0KPiArICogWVVWNjAxIHRvIFJHQiBjb252ZXJzaW9uIHBhcmFtZXRlcnMNCj4gKyAqIFlV VjJSR0JbMF0gIC0gWzhdIDogQzAgLSBDODsNCj4gKyAqIFlVVjJSR0JbOV0gIC0gWzExXTog RDAgLSBEMjsNCj4gKyAqIFlVVjJSR0JbMTJdIC0gWzEzXTogWSBjbGFtcCBtaW4gJiBtYXgg Y2FsdWU7DQo+ICsgKiBZVVYyUkdCWzE0XSAtIFsxNV06IFVWIGNsYW1wIG1pbiAmIG1heCBj YWx1ZTsNCj4gKyAqLw0KPiArc3RhdGljIHMzMiBZVVY2MDFfMlJHQltZVVZfVE9fUkdCX1RB QkxFX1NJWkVdID0gew0KPiArCTExOTYsCTAsCQkJMTY0MCwJMTE5NiwNCj4gKwktNDA0LAkt ODM2LAkJMTE5NiwJMjA3NiwNCj4gKwkwLAkJLTkxNjIyNCwJNTU4MzM2LAktMTIwMjk0NCwN Cj4gKwk2NCwJCSA5NDAsCQk2NCwJCTk2MA0KPiArfTsNCj4gKw0KPiArLyoNCj4gKyAqIFlV VjcwOSB0byBSR0IgY29udmVyc2lvbiBwYXJhbWV0ZXJzDQo+ICsgKiBZVVYyUkdCWzBdICAt IFs4XSA6IEMwIC0gQzg7DQo+ICsgKiBZVVYyUkdCWzldICAtIFsxMV06IEQwIC0gRDI7DQo+ ICsgKiBZVVYyUkdCWzEyXSAtIFsxM106IFkgY2xhbXAgbWluICYgbWF4IGNhbHVlOw0KPiAr ICogWVVWMlJHQlsxNF0gLSBbMTVdOiBVViBjbGFtcCBtaW4gJiBtYXggY2FsdWU7DQo+ICsg Ki8NCj4gK3N0YXRpYyBzMzIgWVVWNzA5XzJSR0JbWVVWX1RPX1JHQl9UQUJMRV9TSVpFXSA9 IHsNCj4gKwkxMTk2LAkJMCwJCTE4NDQsCTExOTYsDQo+ICsJLTIyMCwJCS01NDgsCTExOTYs CTIxNzIsDQo+ICsJMCwJCQktMTAyMDY3MiwgMzE2NjcyLCAgLTExODg2MDgsDQo+ICsJNjQs CQkJOTQwLAkJNjQsCQk5NjANCj4gK307DQo+ICsNCj4gKy8qDQo+ICsgKiBZVVYyMDIwIHRv IFJHQiBjb252ZXJzaW9uIHBhcmFtZXRlcnMNCj4gKyAqIFlVVjJSR0JbMF0gIC0gWzhdIDog QzAgLSBDODsNCj4gKyAqIFlVVjJSR0JbOV0gIC0gWzExXTogRDAgLSBEMjsNCj4gKyAqIFlV VjJSR0JbMTJdIC0gWzEzXTogWSBjbGFtcCBtaW4gJiBtYXggY2FsdWU7DQo+ICsgKiBZVVYy UkdCWzE0XSAtIFsxNV06IFVWIGNsYW1wIG1pbiAmIG1heCBjYWx1ZTsNCj4gKyAqLw0KPiAr c3RhdGljIHMzMiBZVVYyMDIwXzJSR0JbWVVWX1RPX1JHQl9UQUJMRV9TSVpFXSA9IHsNCj4g KwkxMTk2LCAwLCAxNzI0LCAxMTk2LA0KPiArCS0xOTIsIC02NjgsIDExOTYsIDIyMDAsDQo+ ICsJMCwgLTk1OTIzMiwgMzYzNzc2LCAtMTIwMjk0NCwNCj4gKwk2NCwgOTQwLCA2NCwgOTYw DQo+ICt9Ow0KPiArDQo+ICsvKg0KPiArICogUkdCIHRvIFlVVjIwMjAgY29udmVyc2lvbiBw YXJhbWV0ZXJzDQo+ICsgKiBSR0IyWVVWWzBdIC0gWzhdIDogQzAgLSBDODsNCj4gKyAqIFJH QjJZVVZbOV0gLSBbMTFdOiBEMCAtIEQyOw0KPiArICovDQo+ICtzdGF0aWMgczE2IFJHQjJZ VVZbUkdCX1RPX1lVVl9UQUJMRV9TSVpFXSA9IHsNCj4gKwkyMzAsCTU5NCwJNTIsDQo+ICsJ LTEyNSwgIC0zMjMsCTQ0OCwNCj4gKwk0NDgsICAgLTQxMiwgICAtMzYsDQo+ICsJNjQsCQk1 MTIsCTUxMg0KPiArfTsNCj4gKw0KPiArLyoNCj4gKyAqIERlZ2FtbWEgdGFibGUgZm9yIDcw OSBjb2xvciBzcGFjZSBkYXRhLg0KPiArICovDQo+ICtzdGF0aWMgdTE2IERFR0FNTUFfNzA5 W0RFR0FNTUFfU0laRV0gPSB7DQo+ICsJMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAw LCAweDAwMDEsIDB4MDAwMiwgMHgwMDA0LCAweDAwMDUsDQo+ICsJMHgwMDA3LCAweDAwMGEs IDB4MDAwZCwgMHgwMDExLCAweDAwMTUsIDB4MDAxOSwgMHgwMDFlLCAweDAwMjQsDQo+ICsJ MHgwMDJhLCAweDAwMzAsIDB4MDAzOCwgMHgwMDNmLCAweDAwNDgsIDB4MDA1MSwgMHgwMDVh LCAweDAwNjQsDQo+ICsJMHgwMDZmLCAweDAwN2IsIDB4MDA4NywgMHgwMDk0LCAweDAwYTEs IDB4MDBhZiwgMHgwMGJlLCAweDAwY2UsDQo+ICsJMHgwMGRlLCAweDAwZWYsIDB4MDEwMSwg MHgwMTE0LCAweDAxMjcsIDB4MDEzYiwgMHgwMTUwLCAweDAxNjYsDQo+ICsJMHgwMTdjLCAw eDAxOTMsIDB4MDFhYywgMHgwMWM0LCAweDAxZGUsIDB4MDFmOSwgMHgwMjE0LCAweDAyMzAs DQo+ICsJMHgwMjRkLCAweDAyNmIsIDB4MDI4YSwgMHgwMmFhLCAweDAyY2EsIDB4MDJlYywg MHgwMzBlLCAweDAzMzEsDQo+ICsJMHgwMzU1LCAweDAzN2EsIDB4MDNhMCwgMHgwM2M3LCAw eDAzZWYsIDB4MDQxOCwgMHgwNDQxLCAweDA0NmMsDQo+ICsJMHgwNDk4LCAweDA0YzQsIDB4 MDRmMiwgMHgwNTIwLCAweDA1NTAsIDB4MDU4MSwgMHgwNWIyLCAweDA1ZTUsDQo+ICsJMHgw NjE4LCAweDA2NGQsIDB4MDY4MiwgMHgwNmI5LCAweDA2ZjAsIDB4MDcyOSwgMHgwNzYzLCAw eDA3OWQsDQo+ICsJMHgwN2Q5LCAweDA4MTYsIDB4MDg1NCwgMHgwODkzLCAweDA4ZDMsIDB4 MDkxNCwgMHgwOTU2LCAweDA5OTksDQo+ICsJMHgwOWRkLCAweDBhMjMsIDB4MGE2OSwgMHgw YWIxLCAweDBhZmEsIDB4MGI0NCwgMHgwYjhmLCAweDBiZGIsDQo+ICsJMHgwYzI4LCAweDBj NzYsIDB4MGNjNiwgMHgwZDE3LCAweDBkNjksIDB4MGRiYiwgMHgwZTEwLCAweDBlNjUsDQo+ ICsJMHgwZWJiLCAweDBmMTMsIDB4MGY2YywgMHgwZmM2LCAweDEwMjEsIDB4MTA3ZCwgMHgx MGRiLCAweDExM2EsDQo+ICsJMHgxMTlhLCAweDExZmIsIDB4MTI1ZCwgMHgxMmMxLCAweDEz MjUsIDB4MTM4YywgMHgxM2YzLCAweDE0NWIsDQo+ICsJMHgxNGM1LCAweDE1MzAsIDB4MTU5 YywgMHgxNjBhLCAweDE2NzgsIDB4MTZlOCwgMHgxNzVhLCAweDE3Y2MsDQo+ICsJMHgxODQw LCAweDE4YjUsIDB4MTkyYiwgMHgxOWEzLCAweDFhMWMsIDB4MWE5NiwgMHgxYjExLCAweDFi OGUsDQo+ICsJMHgxYzBjLCAweDFjOGMsIDB4MWQwYywgMHgxZDhlLCAweDFlMTIsIDB4MWU5 NiwgMHgxZjFjLCAweDFmYTMsDQo+ICsJMHgyMDJjLCAweDIwYjYsIDB4MjE0MSwgMHgyMWNl LCAweDIyNWMsIDB4MjJlYiwgMHgyMzdjLCAweDI0MGUsDQo+ICsJMHgyNGExLCAweDI1MzYs IDB4MjVjYywgMHgyNjY0LCAweDI2ZmMsIDB4Mjc5NywgMHgyODMyLCAweDI4Y2YsDQo+ICsJ MHgyOTZlLCAweDJhMGUsIDB4MmFhZiwgMHgyYjUxLCAweDJiZjUsIDB4MmM5YiwgMHgyZDQx LCAweDJkZWEsDQo+ICsJMHgyZTkzLCAweDJmM2UsIDB4MmZlYiwgMHgzMDk5LCAweDMxNDgs IDB4MzFmOSwgMHgzMmFiLCAweDMzNWYsDQo+ICsJMHgzNDE0LCAweDM0Y2EsIDB4MzU4Miwg MHgzNjNjLCAweDM2ZjcsIDB4MzdiMywgMHgzODcxLCAweDM5MzAsDQo+ICsJMHgzOWYxLCAw eDNhYjMsIDB4M2I3NywgMHgzYzNjLCAweDNkMDIsIDB4M2RjYiwgMHgzZTk0LCAweDNmNWYs DQo+ICsJMHg0MDJjLCAweDQwZmEsIDB4NDFjYSwgMHg0MjliLCAweDQzNmQsIDB4NDQ0Miwg MHg0NTE3LCAweDQ1ZWUsDQo+ICsJMHg0NmM3LCAweDQ3YTEsIDB4NDg3ZCwgMHg0OTVhLCAw eDRhMzksIDB4NGIxOSwgMHg0YmZiLCAweDRjZGUsDQo+ICsJMHg0ZGMzLCAweDRlYWEsIDB4 NGY5MiwgMHg1MDdjLCAweDUxNjcsIDB4NTI1MywgMHg1MzQyLCAweDU0MzEsDQo+ICsJMHg1 NTIzLCAweDU2MTYsIDB4NTcwYSwgMHg1ODAwLCAweDU4ZjgsIDB4NTlmMSwgMHg1YWVjLCAw eDViZTksDQo+ICsJMHg1Y2U3LCAweDVkZTYsIDB4NWVlNywgMHg1ZmVhLCAweDYwZWYsIDB4 NjFmNSwgMHg2MmZjLCAweDY0MDYsDQo+ICsJMHg2NTEwLCAweDY2MWQsIDB4NjcyYiwgMHg2 ODNiLCAweDY5NGMsIDB4NmE1ZiwgMHg2YjczLCAweDZjOGEsDQo+ICsJMHg2ZGEyLCAweDZl YmIsIDB4NmZkNiwgMHg3MGYzLCAweDcyMTEsIDB4NzMzMSwgMHg3NDUzLCAweDc1NzYsDQo+ ICsJMHg3NjliLCAweDc3YzIsIDB4NzhlYSwgMHg3YTE0LCAweDdiNDAsIDB4N2M2ZCwgMHg3 ZDljLCAweDdlY2QsDQo+ICsJMHgzZjY1LCAweDNmOGMsIDB4M2ZiMiwgMHgzZmQ4DQo+ICt9 Ow0KPiArDQo+ICsvKg0KPiArICogRGVnYW1tYSB0YWJsZSBmb3IgMjAyMCBjb2xvciBzcGFj ZSBkYXRhLg0KPiArICovDQo+ICtzdGF0aWMgdTE2IERFR0FNTUFfMjAyMFtERUdBTU1BX1NJ WkVdID0gew0KPiArCTB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAw eDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KPiArCTB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4 MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KPiArCTB4MDAwMCwgMHgw MDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0K PiArCTB4MDAwMCwgMHgwMDAxLCAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLCAweDAwMDEsIDB4 MDAwMSwgMHgwMDAxLA0KPiArCTB4MDAwMSwgMHgwMDAyLCAweDAwMDIsIDB4MDAwMiwgMHgw MDAyLCAweDAwMDIsIDB4MDAwMywgMHgwMDAzLA0KPiArCTB4MDAwMywgMHgwMDAzLCAweDAw MDQsIDB4MDAwNCwgMHgwMDA0LCAweDAwMDUsIDB4MDAwNSwgMHgwMDA2LA0KPiArCTB4MDAw NiwgMHgwMDA2LCAweDAwMDcsIDB4MDAwNywgMHgwMDA4LCAweDAwMDgsIDB4MDAwOSwgMHgw MDBhLA0KPiArCTB4MDAwYSwgMHgwMDBiLCAweDAwMGMsIDB4MDAwYywgMHgwMDBkLCAweDAw MGUsIDB4MDAwZiwgMHgwMDBmLA0KPiArCTB4MDAxMCwgMHgwMDExLCAweDAwMTIsIDB4MDAx MywgMHgwMDE0LCAweDAwMTYsIDB4MDAxNywgMHgwMDE4LA0KPiArCTB4MDAxOSwgMHgwMDFi LCAweDAwMWMsIDB4MDAxZSwgMHgwMDFmLCAweDAwMjEsIDB4MDAyMiwgMHgwMDI0LA0KPiAr CTB4MDAyNiwgMHgwMDI4LCAweDAwMmEsIDB4MDAyYywgMHgwMDJlLCAweDAwMzAsIDB4MDAz MywgMHgwMDM1LA0KPiArCTB4MDAzOCwgMHgwMDNhLCAweDAwM2QsIDB4MDA0MCwgMHgwMDQz LCAweDAwNDYsIDB4MDA0OSwgMHgwMDRkLA0KPiArCTB4MDA1MCwgMHgwMDU0LCAweDAwNTcs IDB4MDA1YiwgMHgwMDVmLCAweDAwNjQsIDB4MDA2OCwgMHgwMDZkLA0KPiArCTB4MDA3MSwg MHgwMDc2LCAweDAwN2MsIDB4MDA4MSwgMHgwMDg2LCAweDAwOGMsIDB4MDA5MiwgMHgwMDk4 LA0KPiArCTB4MDA5ZiwgMHgwMGE1LCAweDAwYWMsIDB4MDBiNCwgMHgwMGJiLCAweDAwYzMs IDB4MDBjYiwgMHgwMGQzLA0KPiArCTB4MDBkYywgMHgwMGU1LCAweDAwZWUsIDB4MDBmOCwg MHgwMTAyLCAweDAxMGMsIDB4MDExNywgMHgwMTIzLA0KPiArCTB4MDEyZSwgMHgwMTNhLCAw eDAxNDcsIDB4MDE1NCwgMHgwMTYxLCAweDAxNmYsIDB4MDE3ZSwgMHgwMThkLA0KPiArCTB4 MDE5YywgMHgwMWFjLCAweDAxYmQsIDB4MDFjZSwgMHgwMWUwLCAweDAxZjMsIDB4MDIwNiwg MHgwMjFhLA0KPiArCTB4MDIyZiwgMHgwMjQ0LCAweDAyNWEsIDB4MDI3MiwgMHgwMjg5LCAw eDAyYTIsIDB4MDJiYywgMHgwMmQ2LA0KPiArCTB4MDJmMiwgMHgwMzBmLCAweDAzMmMsIDB4 MDM0YiwgMHgwMzZiLCAweDAzOGIsIDB4MDNhZSwgMHgwM2QxLA0KPiArCTB4MDNmNSwgMHgw NDFiLCAweDA0NDMsIDB4MDQ2YiwgMHgwNDk1LCAweDA0YzEsIDB4MDRlZSwgMHgwNTFkLA0K PiArCTB4MDU0ZSwgMHgwNTgwLCAweDA1YjQsIDB4MDVlYSwgMHgwNjIyLCAweDA2NWMsIDB4 MDY5OCwgMHgwNmQ2LA0KPiArCTB4MDcxNywgMHgwNzVhLCAweDA3OWYsIDB4MDdlNywgMHgw ODMxLCAweDA4N2UsIDB4MDhjZCwgMHgwOTIwLA0KPiArCTB4MDk3NiwgMHgwOWNlLCAweDBh MmEsIDB4MGE4OSwgMHgwYWVjLCAweDBiNTIsIDB4MGJiYywgMHgwYzJhLA0KPiArCTB4MGM5 YiwgMHgwZDExLCAweDBkOGIsIDB4MGUwYSwgMHgwZThkLCAweDBmMTUsIDB4MGZhMSwgMHgx MDMzLA0KPiArCTB4MTBjYSwgMHgxMTY3LCAweDEyMGEsIDB4MTJiMiwgMHgxMzYwLCAweDE0 MTUsIDB4MTRkMSwgMHgxNTkzLA0KPiArCTB4MTY1ZCwgMHgxNzJlLCAweDE4MDYsIDB4MThl NywgMHgxOWQwLCAweDFhYzEsIDB4MWJiYiwgMHgxY2JmLA0KPiArCTB4MWRjYywgMHgxZWUz LCAweDIwMDUsIDB4MjEzMSwgMHgyMjY4LCAweDIzYWIsIDB4MjRmYSwgMHgyNjU2LA0KPiAr CTB4MjdiZSwgMHgyOTM0LCAweDJhYjgsIDB4MmM0YSwgMHgyZGVjLCAweDJmOWQsIDB4MzE1 ZiwgMHgzMzMyLA0KPiArCTB4MzUxNiwgMHgzNzBkLCAweDM5MTYsIDB4M2IzNCwgMHgzZDY2 LCAweDNmYWQsIDB4NDIwYiwgMHg0NDgwLA0KPiArCTB4NDcwZCwgMHg0OWIzLCAweDRjNzMs IDB4NGY0ZSwgMHg1MjQ2LCAweDU1NWEsIDB4NTg4ZSwgMHg1YmUxLA0KPiArCTB4NWY1NSwg MHg2MmViLCAweDY2YTYsIDB4NmE4NiwgMHg2ZThjLCAweDcyYmIsIDB4NzcxNCwgMHg3Yjk5 LA0KPiArCTB4M2RjYiwgMHgzZTYwLCAweDNlZjUsIDB4M2Y4Yw0KPiArfTsNCj4gKw0KPiAr Lyogb25lIGlzIGZvciBwcmltYXJ5IHBsYW5lIGFuZCB0aGUgb3RoZXIgaXMgZm9yIGFsbCBv dmVybGF5IHBsYW5lcyAqLw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkY19od19wbGFuZV9y ZWcgZGNfcGxhbmVfcmVnW10gPSB7DQo+ICsJew0KPiArCS55X2FkZHJlc3MJCT0gRENfRlJB TUVCVUZGRVJfQUREUkVTUywNCj4gKwkudV9hZGRyZXNzCQk9IERDX0ZSQU1FQlVGRkVSX1Vf QUREUkVTUywNCj4gKwkudl9hZGRyZXNzCQk9IERDX0ZSQU1FQlVGRkVSX1ZfQUREUkVTUywN Cj4gKwkueV9zdHJpZGUJCT0gRENfRlJBTUVCVUZGRVJfU1RSSURFLA0KPiArCS51X3N0cmlk ZQkJPSBEQ19GUkFNRUJVRkZFUl9VX1NUUklERSwNCj4gKwkudl9zdHJpZGUJCT0gRENfRlJB TUVCVUZGRVJfVl9TVFJJREUsDQo+ICsJLnNpemUJCQk9IERDX0ZSQU1FQlVGRkVSX1NJWkUs DQo+ICsJLnRvcF9sZWZ0CQk9IERDX0ZSQU1FQlVGRkVSX1RPUF9MRUZULA0KPiArCS5ib3R0 b21fcmlnaHQJPSBEQ19GUkFNRUJVRkZFUl9CT1RUT01fUklHSFQsDQo+ICsJLnNjYWxlX2Zh Y3Rvcl94CQkJPSBEQ19GUkFNRUJVRkZFUl9TQ0FMRV9GQUNUT1JfWCwNCj4gKwkuc2NhbGVf ZmFjdG9yX3kJCQk9IERDX0ZSQU1FQlVGRkVSX1NDQUxFX0ZBQ1RPUl9ZLA0KPiArCS5oX2Zp bHRlcl9jb2VmX2luZGV4CT0gRENfRlJBTUVCVUZGRVJfSF9GSUxURVJfQ09FRl9JTkRFWCwN Cj4gKwkuaF9maWx0ZXJfY29lZl9kYXRhCQk9IERDX0ZSQU1FQlVGRkVSX0hfRklMVEVSX0NP RUZfREFUQSwNCj4gKwkudl9maWx0ZXJfY29lZl9pbmRleAk9IERDX0ZSQU1FQlVGRkVSX1Zf RklMVEVSX0NPRUZfSU5ERVgsDQo+ICsJLnZfZmlsdGVyX2NvZWZfZGF0YQkJPSBEQ19GUkFN RUJVRkZFUl9WX0ZJTFRFUl9DT0VGX0RBVEEsDQo+ICsJLmluaXRfb2Zmc2V0CQkJPSBEQ19G UkFNRUJVRkZFUl9JTklUX09GRlNFVCwNCj4gKwkuY29sb3Jfa2V5CQkJCT0gRENfRlJBTUVC VUZGRVJfQ09MT1JfS0VZLA0KPiArCS5jb2xvcl9rZXlfaGlnaAkJCT0gRENfRlJBTUVCVUZG RVJfQ09MT1JfS0VZX0hJR0gsDQo+ICsJLmNsZWFyX3ZhbHVlCQkJPSBEQ19GUkFNRUJVRkZF Ul9DTEVBUl9WQUxVRSwNCj4gKwkuY29sb3JfdGFibGVfaW5kZXgJCT0gRENfRlJBTUVCVUZG RVJfQ09MT1JfVEFCTEVfSU5ERVgsDQo+ICsJLmNvbG9yX3RhYmxlX2RhdGEJCT0gRENfRlJB TUVCVUZGRVJfQ09MT1JfVEFCTEVfREFUQSwNCj4gKwkuc2NhbGVfY29uZmlnCQkJPSBEQ19G UkFNRUJVRkZFUl9TQ0FMRV9DT05GSUcsDQo+ICsJLndhdGVyX21hcmsJCQkJPSBEQ19GUkFN RUJVRkZFUl9XQVRFUl9NQVJLLA0KPiArCS5kZWdhbW1hX2luZGV4CQkJPSBEQ19GUkFNRUJV RkZFUl9ERUdBTU1BX0lOREVYLA0KPiArCS5kZWdhbW1hX2RhdGEJCQk9IERDX0ZSQU1FQlVG RkVSX0RFR0FNTUFfREFUQSwNCj4gKwkuZGVnYW1tYV9leF9kYXRhCQk9IERDX0ZSQU1FQlVG RkVSX0RFR0FNTUFfRVhfREFUQSwNCj4gKwkuc3JjX2dsb2JhbF9jb2xvcgkJPSBEQ19GUkFN RUJVRkZFUl9TUkNfR0xPQkFMX0NPTE9SLA0KPiArCS5kc3RfZ2xvYmFsX2NvbG9yCQk9IERD X0ZSQU1FQlVGRkVSX0RTVF9HTE9CQUxfQ09MT1IsDQo+ICsJLmJsZW5kX2NvbmZpZwkJCT0g RENfRlJBTUVCVUZGRVJfQkxFTkRfQ09ORklHLA0KPiArCS5yb2lfb3JpZ2luCQkJCT0gRENf RlJBTUVCVUZGRVJfUk9JX09SSUdJTiwNCj4gKwkucm9pX3NpemUJCQkJPSBEQ19GUkFNRUJV RkZFUl9ST0lfU0laRSwNCj4gKwkueXV2X3RvX3JnYl9jb2VmMAkJCT0gRENfRlJBTUVCVUZG RVJfWVVWVE9SR0JfQ09FRjAsDQo+ICsJLnl1dl90b19yZ2JfY29lZjEJCQk9IERDX0ZSQU1F QlVGRkVSX1lVVlRPUkdCX0NPRUYxLA0KPiArCS55dXZfdG9fcmdiX2NvZWYyCQkJPSBEQ19G UkFNRUJVRkZFUl9ZVVZUT1JHQl9DT0VGMiwNCj4gKwkueXV2X3RvX3JnYl9jb2VmMwkJCT0g RENfRlJBTUVCVUZGRVJfWVVWVE9SR0JfQ09FRjMsDQo+ICsJLnl1dl90b19yZ2JfY29lZjQJ CQk9IERDX0ZSQU1FQlVGRkVSX1lVVlRPUkdCX0NPRUY0LA0KPiArCS55dXZfdG9fcmdiX2Nv ZWZkMAkJCT0gRENfRlJBTUVCVUZGRVJfWVVWVE9SR0JfQ09FRkQwLA0KPiArCS55dXZfdG9f cmdiX2NvZWZkMQkJCT0gRENfRlJBTUVCVUZGRVJfWVVWVE9SR0JfQ09FRkQxLA0KPiArCS55 dXZfdG9fcmdiX2NvZWZkMgkJCT0gRENfRlJBTUVCVUZGRVJfWVVWVE9SR0JfQ09FRkQyLA0K PiArCS55X2NsYW1wX2JvdW5kCQkJCT0gRENfRlJBTUVCVUZGRVJfWV9DTEFNUF9CT1VORCwN Cj4gKwkudXZfY2xhbXBfYm91bmQJCQkJPSBEQ19GUkFNRUJVRkZFUl9VVl9DTEFNUF9CT1VO RCwNCj4gKwkucmdiX3RvX3JnYl9jb2VmMAkJCT0gRENfRlJBTUVCVUZGRVJfUkdCVE9SR0Jf Q09FRjAsDQo+ICsJLnJnYl90b19yZ2JfY29lZjEJCQk9IERDX0ZSQU1FQlVGRkVSX1JHQlRP UkdCX0NPRUYxLA0KPiArCS5yZ2JfdG9fcmdiX2NvZWYyCQkJPSBEQ19GUkFNRUJVRkZFUl9S R0JUT1JHQl9DT0VGMiwNCj4gKwkucmdiX3RvX3JnYl9jb2VmMwkJCT0gRENfRlJBTUVCVUZG RVJfUkdCVE9SR0JfQ09FRjMsDQo+ICsJLnJnYl90b19yZ2JfY29lZjQJCQk9IERDX0ZSQU1F QlVGRkVSX1JHQlRPUkdCX0NPRUY0LA0KPiArCX0sDQo+ICsJew0KPiArCS55X2FkZHJlc3MJ CT0gRENfT1ZFUkxBWV9BRERSRVNTLA0KPiArCS51X2FkZHJlc3MJCT0gRENfT1ZFUkxBWV9V X0FERFJFU1MsDQo+ICsJLnZfYWRkcmVzcwkJPSBEQ19PVkVSTEFZX1ZfQUREUkVTUywNCj4g KwkueV9zdHJpZGUJCT0gRENfT1ZFUkxBWV9TVFJJREUsDQo+ICsJLnVfc3RyaWRlCQk9IERD X09WRVJMQVlfVV9TVFJJREUsDQo+ICsJLnZfc3RyaWRlCQk9IERDX09WRVJMQVlfVl9TVFJJ REUsDQo+ICsJLnNpemUJCQk9IERDX09WRVJMQVlfU0laRSwNCj4gKwkudG9wX2xlZnQJCT0g RENfT1ZFUkxBWV9UT1BfTEVGVCwNCj4gKwkuYm90dG9tX3JpZ2h0CT0gRENfT1ZFUkxBWV9C T1RUT01fUklHSFQsDQo+ICsJLnNjYWxlX2ZhY3Rvcl94CT0gRENfT1ZFUkxBWV9TQ0FMRV9G QUNUT1JfWCwNCj4gKwkuc2NhbGVfZmFjdG9yX3kJPSBEQ19PVkVSTEFZX1NDQUxFX0ZBQ1RP Ul9ZLA0KPiArCS5oX2ZpbHRlcl9jb2VmX2luZGV4ID0gRENfT1ZFUkxBWV9IX0ZJTFRFUl9D T0VGX0lOREVYLA0KPiArCS5oX2ZpbHRlcl9jb2VmX2RhdGEgID0gRENfT1ZFUkxBWV9IX0ZJ TFRFUl9DT0VGX0RBVEEsDQo+ICsJLnZfZmlsdGVyX2NvZWZfaW5kZXggPSBEQ19PVkVSTEFZ X1ZfRklMVEVSX0NPRUZfSU5ERVgsDQo+ICsJLnZfZmlsdGVyX2NvZWZfZGF0YSAgPSBEQ19P VkVSTEFZX1ZfRklMVEVSX0NPRUZfREFUQSwNCj4gKwkuaW5pdF9vZmZzZXQJCSA9IERDX09W RVJMQVlfSU5JVF9PRkZTRVQsDQo+ICsJLmNvbG9yX2tleQkJCSA9IERDX09WRVJMQVlfQ09M T1JfS0VZLA0KPiArCS5jb2xvcl9rZXlfaGlnaAkJCT0gRENfT1ZFUkxBWV9DT0xPUl9LRVlf SElHSCwNCj4gKwkuY2xlYXJfdmFsdWUJCSA9IERDX09WRVJMQVlfQ0xFQVJfVkFMVUUsDQo+ ICsJLmNvbG9yX3RhYmxlX2luZGV4CSA9IERDX09WRVJMQVlfQ09MT1JfVEFCTEVfSU5ERVgs DQo+ICsJLmNvbG9yX3RhYmxlX2RhdGEJID0gRENfT1ZFUkxBWV9DT0xPUl9UQUJMRV9EQVRB LA0KPiArCS5zY2FsZV9jb25maWcJCSA9IERDX09WRVJMQVlfU0NBTEVfQ09ORklHLA0KPiAr CS53YXRlcl9tYXJrCQkJCT0gRENfT1ZFUkxBWV9XQVRFUl9NQVJLLA0KPiArCS5kZWdhbW1h X2luZGV4CQkgPSBEQ19PVkVSTEFZX0RFR0FNTUFfSU5ERVgsDQo+ICsJLmRlZ2FtbWFfZGF0 YQkJID0gRENfT1ZFUkxBWV9ERUdBTU1BX0RBVEEsDQo+ICsJLmRlZ2FtbWFfZXhfZGF0YQkg PSBEQ19PVkVSTEFZX0RFR0FNTUFfRVhfREFUQSwNCj4gKwkuc3JjX2dsb2JhbF9jb2xvcgkg PSBEQ19PVkVSTEFZX1NSQ19HTE9CQUxfQ09MT1IsDQo+ICsJLmRzdF9nbG9iYWxfY29sb3IJ ID0gRENfT1ZFUkxBWV9EU1RfR0xPQkFMX0NPTE9SLA0KPiArCS5ibGVuZF9jb25maWcJCSA9 IERDX09WRVJMQVlfQkxFTkRfQ09ORklHLA0KPiArCS5yb2lfb3JpZ2luCQkJCT0gRENfT1ZF UkxBWV9ST0lfT1JJR0lOLA0KPiArCS5yb2lfc2l6ZQkJCQk9IERDX09WRVJMQVlfUk9JX1NJ WkUsDQo+ICsJLnl1dl90b19yZ2JfY29lZjAJCSA9IERDX09WRVJMQVlfWVVWVE9SR0JfQ09F RjAsDQo+ICsJLnl1dl90b19yZ2JfY29lZjEJCSA9IERDX09WRVJMQVlfWVVWVE9SR0JfQ09F RjEsDQo+ICsJLnl1dl90b19yZ2JfY29lZjIJCSA9IERDX09WRVJMQVlfWVVWVE9SR0JfQ09F RjIsDQo+ICsJLnl1dl90b19yZ2JfY29lZjMJCSA9IERDX09WRVJMQVlfWVVWVE9SR0JfQ09F RjMsDQo+ICsJLnl1dl90b19yZ2JfY29lZjQJCQk9IERDX09WRVJMQVlfWVVWVE9SR0JfQ09F RjQsDQo+ICsJLnl1dl90b19yZ2JfY29lZmQwCQkJPSBEQ19PVkVSTEFZX1lVVlRPUkdCX0NP RUZEMCwNCj4gKwkueXV2X3RvX3JnYl9jb2VmZDEJCQk9IERDX09WRVJMQVlfWVVWVE9SR0Jf Q09FRkQxLA0KPiArCS55dXZfdG9fcmdiX2NvZWZkMgkJCT0gRENfT1ZFUkxBWV9ZVVZUT1JH Ql9DT0VGRDIsDQo+ICsJLnlfY2xhbXBfYm91bmQJCSA9IERDX09WRVJMQVlfWV9DTEFNUF9C T1VORCwNCj4gKwkudXZfY2xhbXBfYm91bmQJCSA9IERDX09WRVJMQVlfVVZfQ0xBTVBfQk9V TkQsDQo+ICsJLnJnYl90b19yZ2JfY29lZjAJCSA9IERDX09WRVJMQVlfUkdCVE9SR0JfQ09F RjAsDQo+ICsJLnJnYl90b19yZ2JfY29lZjEJCSA9IERDX09WRVJMQVlfUkdCVE9SR0JfQ09F RjEsDQo+ICsJLnJnYl90b19yZ2JfY29lZjIJCSA9IERDX09WRVJMQVlfUkdCVE9SR0JfQ09F RjIsDQo+ICsJLnJnYl90b19yZ2JfY29lZjMJCSA9IERDX09WRVJMQVlfUkdCVE9SR0JfQ09F RjMsDQo+ICsJLnJnYl90b19yZ2JfY29lZjQJCSA9IERDX09WRVJMQVlfUkdCVE9SR0JfQ09F RjQsDQo+ICsJfSwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBjb25zdCB1MzIgcHJpbWFyeV9v dmVybGF5X2Zvcm1hdDBbXSA9IHsNCj4gKwlEUk1fRk9STUFUX1hSR0I0NDQ0LA0KPiArCURS TV9GT1JNQVRfWEJHUjQ0NDQsDQo+ICsJRFJNX0ZPUk1BVF9SR0JYNDQ0NCwNCj4gKwlEUk1f Rk9STUFUX0JHUlg0NDQ0LA0KPiArCURSTV9GT1JNQVRfQVJHQjQ0NDQsDQo+ICsJRFJNX0ZP Uk1BVF9BQkdSNDQ0NCwNCj4gKwlEUk1fRk9STUFUX1JHQkE0NDQ0LA0KPiArCURSTV9GT1JN QVRfQkdSQTQ0NDQsDQo+ICsJRFJNX0ZPUk1BVF9YUkdCMTU1NSwNCj4gKwlEUk1fRk9STUFU X1hCR1IxNTU1LA0KPiArCURSTV9GT1JNQVRfUkdCWDU1NTEsDQo+ICsJRFJNX0ZPUk1BVF9C R1JYNTU1MSwNCj4gKwlEUk1fRk9STUFUX0FSR0IxNTU1LA0KPiArCURSTV9GT1JNQVRfQUJH UjE1NTUsDQo+ICsJRFJNX0ZPUk1BVF9SR0JBNTU1MSwNCj4gKwlEUk1fRk9STUFUX0JHUkE1 NTUxLA0KPiArCURSTV9GT1JNQVRfUkdCNTY1LA0KPiArCURSTV9GT1JNQVRfQkdSNTY1LA0K PiArCURSTV9GT1JNQVRfWFJHQjg4ODgsDQo+ICsJRFJNX0ZPUk1BVF9YQkdSODg4OCwNCj4g KwlEUk1fRk9STUFUX1JHQlg4ODg4LA0KPiArCURSTV9GT1JNQVRfQkdSWDg4ODgsDQo+ICsJ RFJNX0ZPUk1BVF9BUkdCODg4OCwNCj4gKwlEUk1fRk9STUFUX0FCR1I4ODg4LA0KPiArCURS TV9GT1JNQVRfUkdCQTg4ODgsDQo+ICsJRFJNX0ZPUk1BVF9CR1JBODg4OCwNCj4gKwlEUk1f Rk9STUFUX0FSR0IyMTAxMDEwLA0KPiArCURSTV9GT1JNQVRfQUJHUjIxMDEwMTAsDQo+ICsJ RFJNX0ZPUk1BVF9SR0JBMTAxMDEwMiwNCj4gKwlEUk1fRk9STUFUX0JHUkExMDEwMTAyLA0K PiArCURSTV9GT1JNQVRfWVVZViwNCj4gKwlEUk1fRk9STUFUX1lWWVUsDQo+ICsJRFJNX0ZP Uk1BVF9VWVZZLA0KPiArCURSTV9GT1JNQVRfVllVWSwNCj4gKwlEUk1fRk9STUFUX1lWVTQy MCwNCj4gKwlEUk1fRk9STUFUX1lVVjQyMCwNCj4gKwlEUk1fRk9STUFUX05WMTIsDQo+ICsJ RFJNX0ZPUk1BVF9OVjIxLA0KPiArCURSTV9GT1JNQVRfTlYxNiwNCj4gKwlEUk1fRk9STUFU X05WNjEsDQo+ICsJRFJNX0ZPUk1BVF9QMDEwLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNv bnN0IHUzMiBwcmltYXJ5X292ZXJsYXlfZm9ybWF0MVtdID0gew0KPiArCURSTV9GT1JNQVRf WFJHQjg4ODgsDQo+ICsJRFJNX0ZPUk1BVF9YQkdSODg4OCwNCj4gKwlEUk1fRk9STUFUX1JH Qlg4ODg4LA0KPiArCURSTV9GT1JNQVRfQkdSWDg4ODgsDQo+ICsJRFJNX0ZPUk1BVF9BUkdC ODg4OCwNCj4gKwlEUk1fRk9STUFUX0FCR1I4ODg4LA0KPiArCURSTV9GT1JNQVRfUkdCQTg4 ODgsDQo+ICsJRFJNX0ZPUk1BVF9CR1JBODg4OCwNCj4gKwlEUk1fRk9STUFUX0FSR0IyMTAx MDEwLA0KPiArCURSTV9GT1JNQVRfQUJHUjIxMDEwMTAsDQo+ICsJRFJNX0ZPUk1BVF9SR0JB MTAxMDEwMiwNCj4gKwlEUk1fRk9STUFUX0JHUkExMDEwMTAyLA0KPiArCURSTV9GT1JNQVRf TlYxMiwNCj4gKwlEUk1fRk9STUFUX05WMjEsDQo+ICsJRFJNX0ZPUk1BVF9ZVVY0NDQsDQo+ ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29uc3QgdTMyIGN1cnNvcl9mb3JtYXRzW10gPSB7DQo+ ICsJRFJNX0ZPUk1BVF9BUkdCODg4OA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHU2 NCBmb3JtYXRfbW9kaWZpZXIwW10gPSB7DQo+ICsJRFJNX0ZPUk1BVF9NT0RfTElORUFSLA0K PiArCWZvdXJjY19tb2RfdnNfbm9ybV9jb2RlKERSTV9GT1JNQVRfTU9EX1ZTX0xJTkVBUiks DQo+ICsJZm91cmNjX21vZF92c19ub3JtX2NvZGUoRFJNX0ZPUk1BVF9NT0RfVlNfU1VQRVJf VElMRURfWE1BSk9SKSwNCj4gKwlmb3VyY2NfbW9kX3ZzX25vcm1fY29kZShEUk1fRk9STUFU X01PRF9WU19TVVBFUl9USUxFRF9ZTUFKT1IpLA0KPiArCWZvdXJjY19tb2RfdnNfbm9ybV9j b2RlKERSTV9GT1JNQVRfTU9EX1ZTX1RJTEVfOFg4KSwNCj4gKwlmb3VyY2NfbW9kX3ZzX25v cm1fY29kZShEUk1fRk9STUFUX01PRF9WU19USUxFXzhYNCksDQo+ICsJZm91cmNjX21vZF92 c19ub3JtX2NvZGUoRFJNX0ZPUk1BVF9NT0RfVlNfU1VQRVJfVElMRURfWE1BSk9SXzhYNCks DQo+ICsJZm91cmNjX21vZF92c19ub3JtX2NvZGUoRFJNX0ZPUk1BVF9NT0RfVlNfU1VQRVJf VElMRURfWU1BSk9SXzRYOCksDQo+ICsJRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRA0KPiArfTsN Cj4gKw0KPiArc3RhdGljIGNvbnN0IHU2NCBmb3JtYXRfbW9kaWZpZXIxW10gPSB7DQo+ICsJ RFJNX0ZPUk1BVF9NT0RfTElORUFSLA0KPiArCWZvdXJjY19tb2RfdnNfbm9ybV9jb2RlKERS TV9GT1JNQVRfTU9EX1ZTX0xJTkVBUiksDQo+ICsJZm91cmNjX21vZF92c19ub3JtX2NvZGUo RFJNX0ZPUk1BVF9NT0RfVlNfU1VQRVJfVElMRURfWE1BSk9SKSwNCj4gKwlmb3VyY2NfbW9k X3ZzX25vcm1fY29kZShEUk1fRk9STUFUX01PRF9WU19TVVBFUl9USUxFRF9ZTUFKT1IpLA0K PiArCWZvdXJjY19tb2RfdnNfbm9ybV9jb2RlKERSTV9GT1JNQVRfTU9EX1ZTX1RJTEVfOFg4 KSwNCj4gKwlmb3VyY2NfbW9kX3ZzX25vcm1fY29kZShEUk1fRk9STUFUX01PRF9WU19USUxF XzhYNCksDQo+ICsJZm91cmNjX21vZF92c19ub3JtX2NvZGUoRFJNX0ZPUk1BVF9NT0RfVlNf U1VQRVJfVElMRURfWE1BSk9SXzhYNCksDQo+ICsJZm91cmNjX21vZF92c19ub3JtX2NvZGUo RFJNX0ZPUk1BVF9NT0RfVlNfU1VQRVJfVElMRURfWU1BSk9SXzRYOCksDQo+ICsJZm91cmNj X21vZF92c19ub3JtX2NvZGUoRFJNX0ZPUk1BVF9NT0RfVlNfVElMRV9NT0RFNFg0KSwNCj4g Kwlmb3VyY2NfbW9kX3ZzX2N1c3RvbV9jb2RlKERSTV9GT1JNQVRfTU9EX1ZTX1RJTEVfTU9E RTRYNCksDQo+ICsJRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRA0KPiArfTsNCj4gKw0KPiArc3Rh dGljIGNvbnN0IHU2NCBzZWNvbmRhcnlfZm9ybWF0X21vZGlmaWVyc1tdID0gew0KPiArCURS TV9GT1JNQVRfTU9EX0xJTkVBUiwNCj4gKwlEUk1fRk9STUFUX01PRF9JTlZBTElEDQo+ICt9 Ow0KPiArDQo+ICsjZGVmaW5lIEZSQUNfMTZfMTYobXVsdCwgZGl2KQkgKCgobXVsdCkgPDwg MTYpIC8gKGRpdikpDQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdnNfcGxhbmVfaW5m byBkY19od19wbGFuZXNbXVtQTEFORV9OVU1dID0gew0KPiArCXsNCj4gKwkJLyogRENfUkVW XzAgKi8NCj4gKwkJew0KPiArCQkubmFtZQkJCT0gIlByaW1hcnkiLA0KPiArCQkuaWQJCQkJ PSBQUklNQVJZX1BMQU5FXzAsDQo+ICsJCS50eXBlCQkJPSBEUk1fUExBTkVfVFlQRV9QUklN QVJZLA0KPiArCQkubnVtX2Zvcm1hdHMJPSBBUlJBWV9TSVpFKHByaW1hcnlfb3ZlcmxheV9m b3JtYXQwKSwNCj4gKwkJLmZvcm1hdHMJCT0gcHJpbWFyeV9vdmVybGF5X2Zvcm1hdDAsDQo+ ICsJCS5udW1fbW9kaWZpZXJzCT0gQVJSQVlfU0laRShmb3JtYXRfbW9kaWZpZXIwKSwNCj4g KwkJLm1vZGlmaWVycwkJPSBmb3JtYXRfbW9kaWZpZXIwLA0KPiArCQkubWluX3dpZHRoCQk9 IDAsDQo+ICsJCS5taW5faGVpZ2h0CQk9IDAsDQo+ICsJCS5tYXhfd2lkdGgJCT0gNDA5NiwN Cj4gKwkJLm1heF9oZWlnaHQJCT0gNDA5NiwNCj4gKwkJLnJvdGF0aW9uCQk9IERSTV9NT0RF X1JPVEFURV8wIHwNCj4gKwkJCQkJCQlEUk1fTU9ERV9ST1RBVEVfOTAgfA0KPiArCQkJCQkJ CURSTV9NT0RFX1JPVEFURV8xODAgfA0KPiArCQkJCQkJCURSTV9NT0RFX1JPVEFURV8yNzAg fA0KPiArCQkJCQkJCURSTV9NT0RFX1JFRkxFQ1RfWCB8DQo+ICsJCQkJCQkJRFJNX01PREVf UkVGTEVDVF9ZLA0KPiArCQkuYmxlbmRfbW9kZQkJPSBCSVQoRFJNX01PREVfQkxFTkRfUElY RUxfTk9ORSkgfA0KPiArCQkJCQkJCUJJVChEUk1fTU9ERV9CTEVORF9QUkVNVUxUSSkgfA0K PiArCQkJCQkJCUJJVChEUk1fTU9ERV9CTEVORF9DT1ZFUkFHRSksDQo+ICsJCS5jb2xvcl9l bmNvZGluZyA9IEJJVChEUk1fQ09MT1JfWUNCQ1JfQlQ3MDkpIHwNCj4gKwkJCQkJCSAgQklU KERSTV9DT0xPUl9ZQ0JDUl9CVDIwMjApLA0KPiArCQkuZGVnYW1tYV9zaXplCT0gREVHQU1N QV9TSVpFLA0KPiArCQkubWluX3NjYWxlCSA9IEZSQUNfMTZfMTYoMSwgMyksDQo+ICsJCS5t YXhfc2NhbGUJID0gRlJBQ18xNl8xNigxMCwgMSksDQo+ICsJCS56cG9zCQkgPSAwLA0KPiAr CQkud2F0ZXJtYXJrCSA9IHRydWUsDQo+ICsJCS5jb2xvcl9tZ210ICA9IHRydWUsDQo+ICsJ CS5yb2kJCSA9IHRydWUsDQo+ICsJCX0sDQo+ICsJCXsNCj4gKwkJLm5hbWUJCQk9ICJPdmVy bGF5IiwNCj4gKwkJLmlkCQkJCT0gT1ZFUkxBWV9QTEFORV8wLA0KPiArCQkudHlwZQkJCT0g RFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSwNCj4gKwkJLm51bV9mb3JtYXRzCT0gQVJSQVlfU0la RShwcmltYXJ5X292ZXJsYXlfZm9ybWF0MCksDQo+ICsJCS5mb3JtYXRzCQk9IHByaW1hcnlf b3ZlcmxheV9mb3JtYXQwLA0KPiArCQkubnVtX21vZGlmaWVycwk9IEFSUkFZX1NJWkUoZm9y bWF0X21vZGlmaWVyMCksDQo+ICsJCS5tb2RpZmllcnMJCT0gZm9ybWF0X21vZGlmaWVyMCwN Cj4gKwkJLm1pbl93aWR0aAkJPSAwLA0KPiArCQkubWluX2hlaWdodAkJPSAwLA0KPiArCQku bWF4X3dpZHRoCQk9IDQwOTYsDQo+ICsJCS5tYXhfaGVpZ2h0CQk9IDQwOTYsDQo+ICsJCS5y b3RhdGlvbgkgPSBEUk1fTU9ERV9ST1RBVEVfMCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JP VEFURV85MCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JPVEFURV8xODAgfA0KPiArCQkJCQkg ICBEUk1fTU9ERV9ST1RBVEVfMjcwIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUkVGTEVDVF9Y IHwNCj4gKwkJCQkJICAgRFJNX01PREVfUkVGTEVDVF9ZLA0KPiArCQkuYmxlbmRfbW9kZSAg PSBCSVQoRFJNX01PREVfQkxFTkRfUElYRUxfTk9ORSkgfA0KPiArCQkJCQkgICBCSVQoRFJN X01PREVfQkxFTkRfUFJFTVVMVEkpIHwNCj4gKwkJCQkJICAgQklUKERSTV9NT0RFX0JMRU5E X0NPVkVSQUdFKSwNCj4gKwkJLmNvbG9yX2VuY29kaW5nID0gQklUKERSTV9DT0xPUl9ZQ0JD Ul9CVDcwOSkgfA0KPiArCQkJCQkJICBCSVQoRFJNX0NPTE9SX1lDQkNSX0JUMjAyMCksDQo+ ICsJCS5kZWdhbW1hX3NpemUJPSBERUdBTU1BX1NJWkUsDQo+ICsJCS5taW5fc2NhbGUJID0g RlJBQ18xNl8xNigxLCAzKSwNCj4gKwkJLm1heF9zY2FsZQkgPSBGUkFDXzE2XzE2KDEwLCAx KSwNCj4gKwkJLnpwb3MJCSA9IDEsDQo+ICsJCS53YXRlcm1hcmsJID0gdHJ1ZSwNCj4gKwkJ LmNvbG9yX21nbXQgID0gdHJ1ZSwNCj4gKwkJLnJvaQkJID0gdHJ1ZSwNCj4gKwkJfSwNCj4g KwkJew0KPiArCQkubmFtZQkJCT0gIk92ZXJsYXlfMSIsDQo+ICsJCS5pZAkJCQk9IE9WRVJM QVlfUExBTkVfMSwNCj4gKwkJLnR5cGUJCQk9IERSTV9QTEFORV9UWVBFX09WRVJMQVksDQo+ ICsJCS5udW1fZm9ybWF0cwk9IEFSUkFZX1NJWkUocHJpbWFyeV9vdmVybGF5X2Zvcm1hdDAp LA0KPiArCQkuZm9ybWF0cwkJPSBwcmltYXJ5X292ZXJsYXlfZm9ybWF0MCwNCj4gKwkJLm51 bV9tb2RpZmllcnMJPSBBUlJBWV9TSVpFKHNlY29uZGFyeV9mb3JtYXRfbW9kaWZpZXJzKSwN Cj4gKwkJLm1vZGlmaWVycwkJPSBzZWNvbmRhcnlfZm9ybWF0X21vZGlmaWVycywNCj4gKwkJ Lm1pbl93aWR0aAkJPSAwLA0KPiArCQkubWluX2hlaWdodAkJPSAwLA0KPiArCQkubWF4X3dp ZHRoCQk9IDQwOTYsDQo+ICsJCS5tYXhfaGVpZ2h0CQk9IDQwOTYsDQo+ICsJCS5yb3RhdGlv bgkJPSAwLA0KPiArCQkuYmxlbmRfbW9kZQkJPSBCSVQoRFJNX01PREVfQkxFTkRfUElYRUxf Tk9ORSkgfA0KPiArCQkJCQkJCUJJVChEUk1fTU9ERV9CTEVORF9QUkVNVUxUSSkgfA0KPiAr CQkJCQkJCUJJVChEUk1fTU9ERV9CTEVORF9DT1ZFUkFHRSksDQo+ICsJCS5jb2xvcl9lbmNv ZGluZyA9IEJJVChEUk1fQ09MT1JfWUNCQ1JfQlQ3MDkpIHwNCj4gKwkJCQkJCSAgQklUKERS TV9DT0xPUl9ZQ0JDUl9CVDIwMjApLA0KPiArCQkuZGVnYW1tYV9zaXplCT0gREVHQU1NQV9T SVpFLA0KPiArCQkubWluX3NjYWxlCSA9IERSTV9QTEFORV9OT19TQ0FMSU5HLA0KPiArCQku bWF4X3NjYWxlCSA9IERSTV9QTEFORV9OT19TQ0FMSU5HLA0KPiArCQkuenBvcwkJID0gMiwN Cj4gKwkJLndhdGVybWFyawkgPSB0cnVlLA0KPiArCQkuY29sb3JfbWdtdCAgPSB0cnVlLA0K PiArCQkucm9pCQkgPSB0cnVlLA0KPiArCQl9LA0KPiArCQl7DQo+ICsJCS5uYW1lCQkgPSAi UHJpbWFyeV8xIiwNCj4gKwkJLmlkCQkJCT0gUFJJTUFSWV9QTEFORV8xLA0KPiArCQkudHlw ZQkJID0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSwNCj4gKwkJLm51bV9mb3JtYXRzID0gQVJS QVlfU0laRShwcmltYXJ5X292ZXJsYXlfZm9ybWF0MCksDQo+ICsJCS5mb3JtYXRzCSA9IHBy aW1hcnlfb3ZlcmxheV9mb3JtYXQwLA0KPiArCQkubnVtX21vZGlmaWVycyA9IEFSUkFZX1NJ WkUoZm9ybWF0X21vZGlmaWVyMCksDQo+ICsJCS5tb2RpZmllcnMJID0gZm9ybWF0X21vZGlm aWVyMCwNCj4gKwkJLm1pbl93aWR0aAkgPSAwLA0KPiArCQkubWluX2hlaWdodCAgPSAwLA0K PiArCQkubWF4X3dpZHRoCSA9IDQwOTYsDQo+ICsJCS5tYXhfaGVpZ2h0ICA9IDQwOTYsDQo+ ICsJCS5yb3RhdGlvbgkgPSBEUk1fTU9ERV9ST1RBVEVfMCB8DQo+ICsJCQkJCSAgIERSTV9N T0RFX1JPVEFURV85MCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JPVEFURV8xODAgfA0KPiAr CQkJCQkgICBEUk1fTU9ERV9ST1RBVEVfMjcwIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUkVG TEVDVF9YIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUkVGTEVDVF9ZLA0KPiArCQkuYmxlbmRf bW9kZSAgPSBCSVQoRFJNX01PREVfQkxFTkRfUElYRUxfTk9ORSkgfA0KPiArCQkJCQkgICBC SVQoRFJNX01PREVfQkxFTkRfUFJFTVVMVEkpIHwNCj4gKwkJCQkJICAgQklUKERSTV9NT0RF X0JMRU5EX0NPVkVSQUdFKSwNCj4gKwkJLmNvbG9yX2VuY29kaW5nID0gQklUKERSTV9DT0xP Ul9ZQ0JDUl9CVDcwOSkgfA0KPiArCQkJCQkJICBCSVQoRFJNX0NPTE9SX1lDQkNSX0JUMjAy MCksDQo+ICsJCS5kZWdhbW1hX3NpemUJPSBERUdBTU1BX1NJWkUsDQo+ICsJCS5taW5fc2Nh bGUJID0gRlJBQ18xNl8xNigxLCAzKSwNCj4gKwkJLm1heF9zY2FsZQkgPSBGUkFDXzE2XzE2 KDEwLCAxKSwNCj4gKwkJLnpwb3MJCSA9IDMsDQo+ICsJCS53YXRlcm1hcmsJID0gdHJ1ZSwN Cj4gKwkJLmNvbG9yX21nbXQgID0gdHJ1ZSwNCj4gKwkJLnJvaQkJID0gdHJ1ZSwNCj4gKwkJ fSwNCj4gKwkJew0KPiArCQkubmFtZQkJID0gIk92ZXJsYXlfMiIsDQo+ICsJCS5pZAkJCQk9 IE9WRVJMQVlfUExBTkVfMiwNCj4gKwkJLnR5cGUJCSA9IERSTV9QTEFORV9UWVBFX09WRVJM QVksDQo+ICsJCS5udW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUocHJpbWFyeV9vdmVybGF5X2Zv cm1hdDApLA0KPiArCQkuZm9ybWF0cwkgPSBwcmltYXJ5X292ZXJsYXlfZm9ybWF0MCwNCj4g KwkJLm51bV9tb2RpZmllcnMgPSBBUlJBWV9TSVpFKGZvcm1hdF9tb2RpZmllcjApLA0KPiAr CQkubW9kaWZpZXJzCSA9IGZvcm1hdF9tb2RpZmllcjAsDQo+ICsJCS5taW5fd2lkdGgJID0g MCwNCj4gKwkJLm1pbl9oZWlnaHQgID0gMCwNCj4gKwkJLm1heF93aWR0aAkgPSA0MDk2LA0K PiArCQkubWF4X2hlaWdodCAgPSA0MDk2LA0KPiArCQkucm90YXRpb24JID0gRFJNX01PREVf Uk9UQVRFXzAgfA0KPiArCQkJCQkgICBEUk1fTU9ERV9ST1RBVEVfOTAgfA0KPiArCQkJCQkg ICBEUk1fTU9ERV9ST1RBVEVfMTgwIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUk9UQVRFXzI3 MCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JFRkxFQ1RfWCB8DQo+ICsJCQkJCSAgIERSTV9N T0RFX1JFRkxFQ1RfWSwNCj4gKwkJLmJsZW5kX21vZGUgID0gQklUKERSTV9NT0RFX0JMRU5E X1BJWEVMX05PTkUpIHwNCj4gKwkJCQkJICAgQklUKERSTV9NT0RFX0JMRU5EX1BSRU1VTFRJ KSB8DQo+ICsJCQkJCSAgIEJJVChEUk1fTU9ERV9CTEVORF9DT1ZFUkFHRSksDQo+ICsJCS5j b2xvcl9lbmNvZGluZyA9IEJJVChEUk1fQ09MT1JfWUNCQ1JfQlQ3MDkpIHwNCj4gKwkJCQkJ CSAgQklUKERSTV9DT0xPUl9ZQ0JDUl9CVDIwMjApLA0KPiArCQkuZGVnYW1tYV9zaXplCT0g REVHQU1NQV9TSVpFLA0KPiArCQkubWluX3NjYWxlCSA9IEZSQUNfMTZfMTYoMSwgMyksDQo+ ICsJCS5tYXhfc2NhbGUJID0gRlJBQ18xNl8xNigxMCwgMSksDQo+ICsJCS56cG9zCQkgPSA0 LA0KPiArCQkud2F0ZXJtYXJrCSA9IHRydWUsDQo+ICsJCS5jb2xvcl9tZ210ICA9IHRydWUs DQo+ICsJCS5yb2kJCSA9IHRydWUsDQo+ICsJCX0sDQo+ICsJCXsNCj4gKwkJLm5hbWUJCSA9 ICJPdmVybGF5XzMiLA0KPiArCQkuaWQJCQk9IE9WRVJMQVlfUExBTkVfMywNCj4gKwkJLnR5 cGUJCSA9IERSTV9QTEFORV9UWVBFX09WRVJMQVksDQo+ICsJCS5udW1fZm9ybWF0cyA9IEFS UkFZX1NJWkUocHJpbWFyeV9vdmVybGF5X2Zvcm1hdDApLA0KPiArCQkuZm9ybWF0cwkgPSBw cmltYXJ5X292ZXJsYXlfZm9ybWF0MCwNCj4gKwkJLm51bV9tb2RpZmllcnMgPSBBUlJBWV9T SVpFKHNlY29uZGFyeV9mb3JtYXRfbW9kaWZpZXJzKSwNCj4gKwkJLm1vZGlmaWVycwkgPSBz ZWNvbmRhcnlfZm9ybWF0X21vZGlmaWVycywNCj4gKwkJLm1pbl93aWR0aAkgPSAwLA0KPiAr CQkubWluX2hlaWdodCAgPSAwLA0KPiArCQkubWF4X3dpZHRoCSA9IDQwOTYsDQo+ICsJCS5t YXhfaGVpZ2h0ICA9IDQwOTYsDQo+ICsJCS5yb3RhdGlvbgkgPSAwLA0KPiArCQkuYmxlbmRf bW9kZSAgPSBCSVQoRFJNX01PREVfQkxFTkRfUElYRUxfTk9ORSkgfA0KPiArCQkJCQkgICBC SVQoRFJNX01PREVfQkxFTkRfUFJFTVVMVEkpIHwNCj4gKwkJCQkJICAgQklUKERSTV9NT0RF X0JMRU5EX0NPVkVSQUdFKSwNCj4gKwkJLmNvbG9yX2VuY29kaW5nID0gQklUKERSTV9DT0xP Ul9ZQ0JDUl9CVDcwOSkgfA0KPiArCQkJCQkJICBCSVQoRFJNX0NPTE9SX1lDQkNSX0JUMjAy MCksDQo+ICsJCS5kZWdhbW1hX3NpemUJPSBERUdBTU1BX1NJWkUsDQo+ICsJCS5taW5fc2Nh bGUJID0gRFJNX1BMQU5FX05PX1NDQUxJTkcsDQo+ICsJCS5tYXhfc2NhbGUJID0gRFJNX1BM QU5FX05PX1NDQUxJTkcsDQo+ICsJCS56cG9zCQkgPSA1LA0KPiArCQkud2F0ZXJtYXJrCSA9 IHRydWUsDQo+ICsJCS5jb2xvcl9tZ210ICA9IHRydWUsDQo+ICsJCS5yb2kJCSA9IHRydWUs DQo+ICsJCX0sDQo+ICsJCXsNCj4gKwkJLm5hbWUJCSA9ICJDdXJzb3IiLA0KPiArCQkuaWQJ CQkJPSBDVVJTT1JfUExBTkVfMCwNCj4gKwkJLnR5cGUJCSA9IERSTV9QTEFORV9UWVBFX0NV UlNPUiwNCj4gKwkJLm51bV9mb3JtYXRzID0gQVJSQVlfU0laRShjdXJzb3JfZm9ybWF0cyks DQo+ICsJCS5mb3JtYXRzCSA9IGN1cnNvcl9mb3JtYXRzLA0KPiArCQkubnVtX21vZGlmaWVy cyA9IDAsDQo+ICsJCS5tb2RpZmllcnMJID0gTlVMTCwNCj4gKwkJLm1pbl93aWR0aAkgPSAz MiwNCj4gKwkJLm1pbl9oZWlnaHQgID0gMzIsDQo+ICsJCS5tYXhfd2lkdGgJID0gNjQsDQo+ ICsJCS5tYXhfaGVpZ2h0ICA9IDY0LA0KPiArCQkucm90YXRpb24JID0gMCwNCj4gKwkJLmRl Z2FtbWFfc2l6ZSA9IDAsDQo+ICsJCS5taW5fc2NhbGUJID0gRFJNX1BMQU5FX05PX1NDQUxJ TkcsDQo+ICsJCS5tYXhfc2NhbGUJID0gRFJNX1BMQU5FX05PX1NDQUxJTkcsDQo+ICsJCS56 cG9zCQkgPSAyNTUsDQo+ICsJCS53YXRlcm1hcmsJID0gZmFsc2UsDQo+ICsJCS5jb2xvcl9t Z210ICA9IGZhbHNlLA0KPiArCQkucm9pCQkgPSBmYWxzZSwNCj4gKwkJfSwNCj4gKwkJew0K PiArCQkubmFtZQkJID0gIkN1cnNvcl8xIiwNCj4gKwkJLmlkCQkJCT0gQ1VSU09SX1BMQU5F XzEsDQo+ICsJCS50eXBlCQkgPSBEUk1fUExBTkVfVFlQRV9DVVJTT1IsDQo+ICsJCS5udW1f Zm9ybWF0cyA9IEFSUkFZX1NJWkUoY3Vyc29yX2Zvcm1hdHMpLA0KPiArCQkuZm9ybWF0cwkg PSBjdXJzb3JfZm9ybWF0cywNCj4gKwkJLm51bV9tb2RpZmllcnMgPSAwLA0KPiArCQkubW9k aWZpZXJzCSA9IE5VTEwsDQo+ICsJCS5taW5fd2lkdGgJID0gMzIsDQo+ICsJCS5taW5faGVp Z2h0ICA9IDMyLA0KPiArCQkubWF4X3dpZHRoCSA9IDY0LA0KPiArCQkubWF4X2hlaWdodCAg PSA2NCwNCj4gKwkJLnJvdGF0aW9uCSA9IDAsDQo+ICsJCS5kZWdhbW1hX3NpemUgPSAwLA0K PiArCQkubWluX3NjYWxlCSA9IERSTV9QTEFORV9OT19TQ0FMSU5HLA0KPiArCQkubWF4X3Nj YWxlCSA9IERSTV9QTEFORV9OT19TQ0FMSU5HLA0KPiArCQkuenBvcwkJID0gMjU1LA0KPiAr CQkud2F0ZXJtYXJrCSA9IGZhbHNlLA0KPiArCQkuY29sb3JfbWdtdCAgPSBmYWxzZSwNCj4g KwkJLnJvaQkJID0gZmFsc2UsDQo+ICsJCX0sDQo+ICsJfSwNCj4gKwl7DQo+ICsJCS8qIERD X1JFVl8xICovDQo+ICsJCXsNCj4gKwkJLm5hbWUJCSA9ICJQcmltYXJ5IiwNCj4gKwkJLmlk CQkJCT0gUFJJTUFSWV9QTEFORV8wLA0KPiArCQkudHlwZQkJID0gRFJNX1BMQU5FX1RZUEVf UFJJTUFSWSwNCj4gKwkJLm51bV9mb3JtYXRzID0gQVJSQVlfU0laRShwcmltYXJ5X292ZXJs YXlfZm9ybWF0MCksDQo+ICsJCS5mb3JtYXRzCSA9IHByaW1hcnlfb3ZlcmxheV9mb3JtYXQw LA0KPiArCQkubnVtX21vZGlmaWVycyA9IEFSUkFZX1NJWkUoZm9ybWF0X21vZGlmaWVyMCks DQo+ICsJCS5tb2RpZmllcnMJID0gZm9ybWF0X21vZGlmaWVyMCwNCj4gKwkJLm1pbl93aWR0 aAkgPSAwLA0KPiArCQkubWluX2hlaWdodCAgPSAwLA0KPiArCQkubWF4X3dpZHRoCSA9IDQw OTYsDQo+ICsJCS5tYXhfaGVpZ2h0ICA9IDQwOTYsDQo+ICsJCS5yb3RhdGlvbgkgPSBEUk1f TU9ERV9ST1RBVEVfMCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JPVEFURV85MCB8DQo+ICsJ CQkJCSAgIERSTV9NT0RFX1JPVEFURV8xODAgfA0KPiArCQkJCQkgICBEUk1fTU9ERV9ST1RB VEVfMjcwIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUkVGTEVDVF9YIHwNCj4gKwkJCQkJICAg RFJNX01PREVfUkVGTEVDVF9ZLA0KPiArCQkuYmxlbmRfbW9kZSAgPSBCSVQoRFJNX01PREVf QkxFTkRfUElYRUxfTk9ORSkgfA0KPiArCQkJCQkgICBCSVQoRFJNX01PREVfQkxFTkRfUFJF TVVMVEkpIHwNCj4gKwkJCQkJICAgQklUKERSTV9NT0RFX0JMRU5EX0NPVkVSQUdFKSwNCj4g KwkJLmNvbG9yX2VuY29kaW5nID0gQklUKERSTV9DT0xPUl9ZQ0JDUl9CVDcwOSkgfA0KPiAr CQkJCQkJICBCSVQoRFJNX0NPTE9SX1lDQkNSX0JUMjAyMCksDQo+ICsJCS5kZWdhbW1hX3Np emUJPSBERUdBTU1BX1NJWkUsDQo+ICsJCS5taW5fc2NhbGUJID0gRlJBQ18xNl8xNigxLCAz KSwNCj4gKwkJLm1heF9zY2FsZQkgPSBGUkFDXzE2XzE2KDEwLCAxKSwNCj4gKwkJLnpwb3MJ CSA9IDAsDQo+ICsJCS53YXRlcm1hcmsJID0gdHJ1ZSwNCj4gKwkJLmNvbG9yX21nbXQgID0g dHJ1ZSwNCj4gKwkJLnJvaQkJID0gdHJ1ZSwNCj4gKwkJfSwNCj4gKwkJew0KPiArCQkubmFt ZQkJID0gIk92ZXJsYXkiLA0KPiArCQkuaWQJCQkJPSBPVkVSTEFZX1BMQU5FXzAsDQo+ICsJ CS50eXBlCQkgPSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZLA0KPiArCQkubnVtX2Zvcm1hdHMg PSBBUlJBWV9TSVpFKHByaW1hcnlfb3ZlcmxheV9mb3JtYXQwKSwNCj4gKwkJLmZvcm1hdHMJ ID0gcHJpbWFyeV9vdmVybGF5X2Zvcm1hdDAsDQo+ICsJCS5udW1fbW9kaWZpZXJzID0gQVJS QVlfU0laRShmb3JtYXRfbW9kaWZpZXIwKSwNCj4gKwkJLm1vZGlmaWVycwkgPSBmb3JtYXRf bW9kaWZpZXIwLA0KPiArCQkubWluX3dpZHRoCSA9IDAsDQo+ICsJCS5taW5faGVpZ2h0ICA9 IDAsDQo+ICsJCS5tYXhfd2lkdGgJID0gNDA5NiwNCj4gKwkJLm1heF9oZWlnaHQgID0gNDA5 NiwNCj4gKwkJLnJvdGF0aW9uCSA9IERSTV9NT0RFX1JPVEFURV8wIHwNCj4gKwkJCQkJICAg RFJNX01PREVfUk9UQVRFXzkwIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUk9UQVRFXzE4MCB8 DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JPVEFURV8yNzAgfA0KPiArCQkJCQkgICBEUk1fTU9E RV9SRUZMRUNUX1ggfA0KPiArCQkJCQkgICBEUk1fTU9ERV9SRUZMRUNUX1ksDQo+ICsJCS5i bGVuZF9tb2RlICA9IEJJVChEUk1fTU9ERV9CTEVORF9QSVhFTF9OT05FKSB8DQo+ICsJCQkJ CSAgIEJJVChEUk1fTU9ERV9CTEVORF9QUkVNVUxUSSkgfA0KPiArCQkJCQkgICBCSVQoRFJN X01PREVfQkxFTkRfQ09WRVJBR0UpLA0KPiArCQkuY29sb3JfZW5jb2RpbmcgPSBCSVQoRFJN X0NPTE9SX1lDQkNSX0JUNzA5KSB8DQo+ICsJCQkJCQkgIEJJVChEUk1fQ09MT1JfWUNCQ1Jf QlQyMDIwKSwNCj4gKwkJLmRlZ2FtbWFfc2l6ZQk9IERFR0FNTUFfU0laRSwNCj4gKwkJLm1p bl9zY2FsZQkgPSBGUkFDXzE2XzE2KDEsIDMpLA0KPiArCQkubWF4X3NjYWxlCSA9IEZSQUNf MTZfMTYoMTAsIDEpLA0KPiArCQkuenBvcwkJID0gMSwNCj4gKwkJLndhdGVybWFyawkgPSB0 cnVlLA0KPiArCQkuY29sb3JfbWdtdCAgPSB0cnVlLA0KPiArCQkucm9pCQkgPSB0cnVlLA0K PiArCQl9LA0KPiArCQl7DQo+ICsJCS5uYW1lCQkgPSAiUHJpbWFyeV8xIiwNCj4gKwkJLmlk CQkJCT0gUFJJTUFSWV9QTEFORV8xLA0KPiArCQkudHlwZQkJID0gRFJNX1BMQU5FX1RZUEVf UFJJTUFSWSwNCj4gKwkJLm51bV9mb3JtYXRzID0gQVJSQVlfU0laRShwcmltYXJ5X292ZXJs YXlfZm9ybWF0MCksDQo+ICsJCS5mb3JtYXRzCSA9IHByaW1hcnlfb3ZlcmxheV9mb3JtYXQw LA0KPiArCQkubnVtX21vZGlmaWVycyA9IEFSUkFZX1NJWkUoZm9ybWF0X21vZGlmaWVyMCks DQo+ICsJCS5tb2RpZmllcnMJID0gZm9ybWF0X21vZGlmaWVyMCwNCj4gKwkJLm1pbl93aWR0 aAkgPSAwLA0KPiArCQkubWluX2hlaWdodCAgPSAwLA0KPiArCQkubWF4X3dpZHRoCSA9IDQw OTYsDQo+ICsJCS5tYXhfaGVpZ2h0ICA9IDQwOTYsDQo+ICsJCS5yb3RhdGlvbgkgPSBEUk1f TU9ERV9ST1RBVEVfMCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JPVEFURV85MCB8DQo+ICsJ CQkJCSAgIERSTV9NT0RFX1JPVEFURV8xODAgfA0KPiArCQkJCQkgICBEUk1fTU9ERV9ST1RB VEVfMjcwIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUkVGTEVDVF9YIHwNCj4gKwkJCQkJICAg RFJNX01PREVfUkVGTEVDVF9ZLA0KPiArCQkuYmxlbmRfbW9kZSAgPSBCSVQoRFJNX01PREVf QkxFTkRfUElYRUxfTk9ORSkgfA0KPiArCQkJCQkgICBCSVQoRFJNX01PREVfQkxFTkRfUFJF TVVMVEkpIHwNCj4gKwkJCQkJICAgQklUKERSTV9NT0RFX0JMRU5EX0NPVkVSQUdFKSwNCj4g KwkJLmNvbG9yX2VuY29kaW5nID0gQklUKERSTV9DT0xPUl9ZQ0JDUl9CVDcwOSkgfA0KPiAr CQkJCQkJICBCSVQoRFJNX0NPTE9SX1lDQkNSX0JUMjAyMCksDQo+ICsJCS5kZWdhbW1hX3Np emUJPSBERUdBTU1BX1NJWkUsDQo+ICsJCS5taW5fc2NhbGUJID0gRlJBQ18xNl8xNigxLCAz KSwNCj4gKwkJLm1heF9zY2FsZQkgPSBGUkFDXzE2XzE2KDEwLCAxKSwNCj4gKwkJLnpwb3MJ CSA9IDIsDQo+ICsJCS53YXRlcm1hcmsJID0gdHJ1ZSwNCj4gKwkJLmNvbG9yX21nbXQgID0g dHJ1ZSwNCj4gKwkJLnJvaQkJID0gdHJ1ZSwNCj4gKwkJfSwNCj4gKwkJew0KPiArCQkubmFt ZQkJID0gIk92ZXJsYXlfMiIsDQo+ICsJCS5pZAkJCQk9IE9WRVJMQVlfUExBTkVfMiwNCj4g KwkJLnR5cGUJCSA9IERSTV9QTEFORV9UWVBFX09WRVJMQVksDQo+ICsJCS5udW1fZm9ybWF0 cyA9IEFSUkFZX1NJWkUocHJpbWFyeV9vdmVybGF5X2Zvcm1hdDApLA0KPiArCQkuZm9ybWF0 cwkgPSBwcmltYXJ5X292ZXJsYXlfZm9ybWF0MCwNCj4gKwkJLm51bV9tb2RpZmllcnMgPSBB UlJBWV9TSVpFKGZvcm1hdF9tb2RpZmllcjApLA0KPiArCQkubW9kaWZpZXJzCSA9IGZvcm1h dF9tb2RpZmllcjAsDQo+ICsJCS5taW5fd2lkdGgJID0gMCwNCj4gKwkJLm1pbl9oZWlnaHQg ID0gMCwNCj4gKwkJLm1heF93aWR0aAkgPSA0MDk2LA0KPiArCQkubWF4X2hlaWdodCAgPSA0 MDk2LA0KPiArCQkucm90YXRpb24JID0gRFJNX01PREVfUk9UQVRFXzAgfA0KPiArCQkJCQkg ICBEUk1fTU9ERV9ST1RBVEVfOTAgfA0KPiArCQkJCQkgICBEUk1fTU9ERV9ST1RBVEVfMTgw IHwNCj4gKwkJCQkJICAgRFJNX01PREVfUk9UQVRFXzI3MCB8DQo+ICsJCQkJCSAgIERSTV9N T0RFX1JFRkxFQ1RfWCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JFRkxFQ1RfWSwNCj4gKwkJ LmJsZW5kX21vZGUgID0gQklUKERSTV9NT0RFX0JMRU5EX1BJWEVMX05PTkUpIHwNCj4gKwkJ CQkJICAgQklUKERSTV9NT0RFX0JMRU5EX1BSRU1VTFRJKSB8DQo+ICsJCQkJCSAgIEJJVChE Uk1fTU9ERV9CTEVORF9DT1ZFUkFHRSksDQo+ICsJCS5jb2xvcl9lbmNvZGluZyA9IEJJVChE Uk1fQ09MT1JfWUNCQ1JfQlQ3MDkpIHwNCj4gKwkJCQkJCSAgQklUKERSTV9DT0xPUl9ZQ0JD Ul9CVDIwMjApLA0KPiArCQkuZGVnYW1tYV9zaXplCT0gREVHQU1NQV9TSVpFLA0KPiArCQku bWluX3NjYWxlCSA9IEZSQUNfMTZfMTYoMSwgMyksDQo+ICsJCS5tYXhfc2NhbGUJID0gRlJB Q18xNl8xNigxMCwgMSksDQo+ICsJCS56cG9zCQkgPSAzLA0KPiArCQkud2F0ZXJtYXJrCSA9 IHRydWUsDQo+ICsJCS5jb2xvcl9tZ210ICA9IHRydWUsDQo+ICsJCS5yb2kJCSA9IHRydWUs DQo+ICsJCX0sDQo+ICsJCXsNCj4gKwkJLm5hbWUJCSA9ICJDdXJzb3IiLA0KPiArCQkuaWQJ CQkJPSBDVVJTT1JfUExBTkVfMCwNCj4gKwkJLnR5cGUJCSA9IERSTV9QTEFORV9UWVBFX0NV UlNPUiwNCj4gKwkJLm51bV9mb3JtYXRzID0gQVJSQVlfU0laRShjdXJzb3JfZm9ybWF0cyks DQo+ICsJCS5mb3JtYXRzCSA9IGN1cnNvcl9mb3JtYXRzLA0KPiArCQkubnVtX21vZGlmaWVy cyA9IDAsDQo+ICsJCS5tb2RpZmllcnMJID0gTlVMTCwNCj4gKwkJLm1pbl93aWR0aAkgPSAz MiwNCj4gKwkJLm1pbl9oZWlnaHQgID0gMzIsDQo+ICsJCS5tYXhfd2lkdGgJID0gNjQsDQo+ ICsJCS5tYXhfaGVpZ2h0ICA9IDY0LA0KPiArCQkucm90YXRpb24JID0gMCwNCj4gKwkJLmRl Z2FtbWFfc2l6ZSA9IDAsDQo+ICsJCS5taW5fc2NhbGUJID0gRFJNX1BMQU5FX05PX1NDQUxJ TkcsDQo+ICsJCS5tYXhfc2NhbGUJID0gRFJNX1BMQU5FX05PX1NDQUxJTkcsDQo+ICsJCS56 cG9zCQkgPSAyNTUsDQo+ICsJCS53YXRlcm1hcmsJID0gZmFsc2UsDQo+ICsJCS5jb2xvcl9t Z210ICA9IGZhbHNlLA0KPiArCQkucm9pCQkgPSBmYWxzZSwNCj4gKwkJfSwNCj4gKwkJew0K PiArCQkubmFtZQkJID0gIkN1cnNvcl8xIiwNCj4gKwkJLmlkCQkJCT0gQ1VSU09SX1BMQU5F XzEsDQo+ICsJCS50eXBlCQkgPSBEUk1fUExBTkVfVFlQRV9DVVJTT1IsDQo+ICsJCS5udW1f Zm9ybWF0cyA9IEFSUkFZX1NJWkUoY3Vyc29yX2Zvcm1hdHMpLA0KPiArCQkuZm9ybWF0cwkg PSBjdXJzb3JfZm9ybWF0cywNCj4gKwkJLm51bV9tb2RpZmllcnMgPSAwLA0KPiArCQkubW9k aWZpZXJzCSA9IE5VTEwsDQo+ICsJCS5taW5fd2lkdGgJID0gMzIsDQo+ICsJCS5taW5faGVp Z2h0ICA9IDMyLA0KPiArCQkubWF4X3dpZHRoCSA9IDY0LA0KPiArCQkubWF4X2hlaWdodCAg PSA2NCwNCj4gKwkJLnJvdGF0aW9uCSA9IDAsDQo+ICsJCS5kZWdhbW1hX3NpemUgPSAwLA0K PiArCQkubWluX3NjYWxlCSA9IERSTV9QTEFORV9OT19TQ0FMSU5HLA0KPiArCQkubWF4X3Nj YWxlCSA9IERSTV9QTEFORV9OT19TQ0FMSU5HLA0KPiArCQkuenBvcwkJID0gMjU1LA0KPiAr CQkud2F0ZXJtYXJrCSA9IGZhbHNlLA0KPiArCQkuY29sb3JfbWdtdCAgPSBmYWxzZSwNCj4g KwkJLnJvaQkJID0gZmFsc2UsDQo+ICsJCX0sDQo+ICsJfSwNCj4gKwl7DQo+ICsJCS8qIERD X1JFVl8yICovDQo+ICsJCXsNCj4gKwkJLm5hbWUJCSA9ICJQcmltYXJ5IiwNCj4gKwkJLmlk CQkJCT0gUFJJTUFSWV9QTEFORV8wLA0KPiArCQkudHlwZQkJID0gRFJNX1BMQU5FX1RZUEVf UFJJTUFSWSwNCj4gKwkJLm51bV9mb3JtYXRzID0gQVJSQVlfU0laRShwcmltYXJ5X292ZXJs YXlfZm9ybWF0MSksDQo+ICsJCS5mb3JtYXRzCSA9IHByaW1hcnlfb3ZlcmxheV9mb3JtYXQx LA0KPiArCQkubnVtX21vZGlmaWVycyA9IEFSUkFZX1NJWkUoZm9ybWF0X21vZGlmaWVyMSks DQo+ICsJCS5tb2RpZmllcnMJID0gZm9ybWF0X21vZGlmaWVyMSwNCj4gKwkJLm1pbl93aWR0 aAkgPSAwLA0KPiArCQkubWluX2hlaWdodCAgPSAwLA0KPiArCQkubWF4X3dpZHRoCSA9IDQw OTYsDQo+ICsJCS5tYXhfaGVpZ2h0ICA9IDQwOTYsDQo+ICsJCS5yb3RhdGlvbgkgPSBEUk1f TU9ERV9ST1RBVEVfMCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JPVEFURV85MCB8DQo+ICsJ CQkJCSAgIERSTV9NT0RFX1JPVEFURV8xODAgfA0KPiArCQkJCQkgICBEUk1fTU9ERV9ST1RB VEVfMjcwIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUkVGTEVDVF9YIHwNCj4gKwkJCQkJICAg RFJNX01PREVfUkVGTEVDVF9ZLA0KPiArCQkuYmxlbmRfbW9kZSAgPSBCSVQoRFJNX01PREVf QkxFTkRfUElYRUxfTk9ORSkgfA0KPiArCQkJCQkgICBCSVQoRFJNX01PREVfQkxFTkRfUFJF TVVMVEkpIHwNCj4gKwkJCQkJICAgQklUKERSTV9NT0RFX0JMRU5EX0NPVkVSQUdFKSwNCj4g KwkJLmNvbG9yX2VuY29kaW5nID0gQklUKERSTV9DT0xPUl9ZQ0JDUl9CVDcwOSkgfA0KPiAr CQkJCQkJICBCSVQoRFJNX0NPTE9SX1lDQkNSX0JUMjAyMCksDQo+ICsJCS5kZWdhbW1hX3Np emUJPSBERUdBTU1BX1NJWkUsDQo+ICsJCS5taW5fc2NhbGUJID0gRlJBQ18xNl8xNigxLCAz KSwNCj4gKwkJLm1heF9zY2FsZQkgPSBGUkFDXzE2XzE2KDEwLCAxKSwNCj4gKwkJLnpwb3MJ CSA9IDAsDQo+ICsJCS53YXRlcm1hcmsJID0gdHJ1ZSwNCj4gKwkJLmNvbG9yX21nbXQgID0g dHJ1ZSwNCj4gKwkJLnJvaQkJID0gdHJ1ZSwNCj4gKwkJfSwNCj4gKwkJew0KPiArCQkubmFt ZQkJID0gIk92ZXJsYXkiLA0KPiArCQkuaWQJCQkJPSBPVkVSTEFZX1BMQU5FXzAsDQo+ICsJ CS50eXBlCQkgPSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZLA0KPiArCQkubnVtX2Zvcm1hdHMg PSBBUlJBWV9TSVpFKHByaW1hcnlfb3ZlcmxheV9mb3JtYXQxKSwNCj4gKwkJLmZvcm1hdHMJ ID0gcHJpbWFyeV9vdmVybGF5X2Zvcm1hdDEsDQo+ICsJCS5udW1fbW9kaWZpZXJzID0gQVJS QVlfU0laRShmb3JtYXRfbW9kaWZpZXIxKSwNCj4gKwkJLm1vZGlmaWVycwkgPSBmb3JtYXRf bW9kaWZpZXIxLA0KPiArCQkubWluX3dpZHRoCSA9IDAsDQo+ICsJCS5taW5faGVpZ2h0ICA9 IDAsDQo+ICsJCS5tYXhfd2lkdGgJID0gNDA5NiwNCj4gKwkJLm1heF9oZWlnaHQgID0gNDA5 NiwNCj4gKwkJLnJvdGF0aW9uCSA9IERSTV9NT0RFX1JPVEFURV8wIHwNCj4gKwkJCQkJICAg RFJNX01PREVfUk9UQVRFXzkwIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUk9UQVRFXzE4MCB8 DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JPVEFURV8yNzAgfA0KPiArCQkJCQkgICBEUk1fTU9E RV9SRUZMRUNUX1ggfA0KPiArCQkJCQkgICBEUk1fTU9ERV9SRUZMRUNUX1ksDQo+ICsJCS5i bGVuZF9tb2RlICA9IEJJVChEUk1fTU9ERV9CTEVORF9QSVhFTF9OT05FKSB8DQo+ICsJCQkJ CSAgIEJJVChEUk1fTU9ERV9CTEVORF9QUkVNVUxUSSkgfA0KPiArCQkJCQkgICBCSVQoRFJN X01PREVfQkxFTkRfQ09WRVJBR0UpLA0KPiArCQkuY29sb3JfZW5jb2RpbmcgPSBCSVQoRFJN X0NPTE9SX1lDQkNSX0JUNzA5KSB8DQo+ICsJCQkJCQkgIEJJVChEUk1fQ09MT1JfWUNCQ1Jf QlQyMDIwKSwNCj4gKwkJLmRlZ2FtbWFfc2l6ZQk9IERFR0FNTUFfU0laRSwNCj4gKwkJLm1p bl9zY2FsZQkgPSBGUkFDXzE2XzE2KDEsIDMpLA0KPiArCQkubWF4X3NjYWxlCSA9IEZSQUNf MTZfMTYoMTAsIDEpLA0KPiArCQkuenBvcwkJID0gMSwNCj4gKwkJLndhdGVybWFyawkgPSB0 cnVlLA0KPiArCQkuY29sb3JfbWdtdCAgPSB0cnVlLA0KPiArCQkucm9pCQkgPSB0cnVlLA0K PiArCQl9LA0KPiArCQl7DQo+ICsJCS5uYW1lCQkgPSAiT3ZlcmxheV8xIiwNCj4gKwkJLmlk CQkJCT0gT1ZFUkxBWV9QTEFORV8xLA0KPiArCQkudHlwZQkJID0gRFJNX1BMQU5FX1RZUEVf T1ZFUkxBWSwNCj4gKwkJLm51bV9mb3JtYXRzID0gQVJSQVlfU0laRShwcmltYXJ5X292ZXJs YXlfZm9ybWF0MSksDQo+ICsJCS5mb3JtYXRzCSA9IHByaW1hcnlfb3ZlcmxheV9mb3JtYXQx LA0KPiArCQkubnVtX21vZGlmaWVycyA9IEFSUkFZX1NJWkUoc2Vjb25kYXJ5X2Zvcm1hdF9t b2RpZmllcnMpLA0KPiArCQkubW9kaWZpZXJzCSA9IHNlY29uZGFyeV9mb3JtYXRfbW9kaWZp ZXJzLA0KPiArCQkubWluX3dpZHRoCSA9IDAsDQo+ICsJCS5taW5faGVpZ2h0ICA9IDAsDQo+ ICsJCS5tYXhfd2lkdGgJID0gNDA5NiwNCj4gKwkJLm1heF9oZWlnaHQgID0gNDA5NiwNCj4g KwkJLnJvdGF0aW9uCSA9IDAsDQo+ICsJCS5ibGVuZF9tb2RlICA9IEJJVChEUk1fTU9ERV9C TEVORF9QSVhFTF9OT05FKSB8DQo+ICsJCQkJCSAgIEJJVChEUk1fTU9ERV9CTEVORF9QUkVN VUxUSSkgfA0KPiArCQkJCQkgICBCSVQoRFJNX01PREVfQkxFTkRfQ09WRVJBR0UpLA0KPiAr CQkuY29sb3JfZW5jb2RpbmcgPSBCSVQoRFJNX0NPTE9SX1lDQkNSX0JUNzA5KSB8DQo+ICsJ CQkJCQkgIEJJVChEUk1fQ09MT1JfWUNCQ1JfQlQyMDIwKSwNCj4gKwkJLmRlZ2FtbWFfc2l6 ZQk9IERFR0FNTUFfU0laRSwNCj4gKwkJLm1pbl9zY2FsZQkgPSBEUk1fUExBTkVfTk9fU0NB TElORywNCj4gKwkJLm1heF9zY2FsZQkgPSBEUk1fUExBTkVfTk9fU0NBTElORywNCj4gKwkJ Lnpwb3MJCSA9IDIsDQo+ICsJCS53YXRlcm1hcmsJID0gdHJ1ZSwNCj4gKwkJLmNvbG9yX21n bXQgID0gdHJ1ZSwNCj4gKwkJLnJvaQkJID0gdHJ1ZSwNCj4gKwkJfSwNCj4gKwkJew0KPiAr CQkubmFtZQkJID0gIlByaW1hcnlfMSIsDQo+ICsJCS5pZAkJCQk9IFBSSU1BUllfUExBTkVf MSwNCj4gKwkJLnR5cGUJCSA9IERSTV9QTEFORV9UWVBFX1BSSU1BUlksDQo+ICsJCS5udW1f Zm9ybWF0cyA9IEFSUkFZX1NJWkUocHJpbWFyeV9vdmVybGF5X2Zvcm1hdDEpLA0KPiArCQku Zm9ybWF0cwkgPSBwcmltYXJ5X292ZXJsYXlfZm9ybWF0MSwNCj4gKwkJLm51bV9tb2RpZmll cnMgPSBBUlJBWV9TSVpFKGZvcm1hdF9tb2RpZmllcjEpLA0KPiArCQkubW9kaWZpZXJzCSA9 IGZvcm1hdF9tb2RpZmllcjEsDQo+ICsJCS5taW5fd2lkdGgJID0gMCwNCj4gKwkJLm1pbl9o ZWlnaHQgID0gMCwNCj4gKwkJLm1heF93aWR0aAkgPSA0MDk2LA0KPiArCQkubWF4X2hlaWdo dCAgPSA0MDk2LA0KPiArCQkucm90YXRpb24JID0gRFJNX01PREVfUk9UQVRFXzAgfA0KPiAr CQkJCQkgICBEUk1fTU9ERV9ST1RBVEVfOTAgfA0KPiArCQkJCQkgICBEUk1fTU9ERV9ST1RB VEVfMTgwIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUk9UQVRFXzI3MCB8DQo+ICsJCQkJCSAg IERSTV9NT0RFX1JFRkxFQ1RfWCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JFRkxFQ1RfWSwN Cj4gKwkJLmJsZW5kX21vZGUgID0gQklUKERSTV9NT0RFX0JMRU5EX1BJWEVMX05PTkUpIHwN Cj4gKwkJCQkJICAgQklUKERSTV9NT0RFX0JMRU5EX1BSRU1VTFRJKSB8DQo+ICsJCQkJCSAg IEJJVChEUk1fTU9ERV9CTEVORF9DT1ZFUkFHRSksDQo+ICsJCS5jb2xvcl9lbmNvZGluZyA9 IEJJVChEUk1fQ09MT1JfWUNCQ1JfQlQ3MDkpIHwNCj4gKwkJCQkJCSAgQklUKERSTV9DT0xP Ul9ZQ0JDUl9CVDIwMjApLA0KPiArCQkuZGVnYW1tYV9zaXplCT0gREVHQU1NQV9TSVpFLA0K PiArCQkubWluX3NjYWxlCSA9IEZSQUNfMTZfMTYoMSwgMyksDQo+ICsJCS5tYXhfc2NhbGUJ ID0gRlJBQ18xNl8xNigxMCwgMSksDQo+ICsJCS56cG9zCQkgPSAzLA0KPiArCQkud2F0ZXJt YXJrCSA9IHRydWUsDQo+ICsJCS5jb2xvcl9tZ210ICA9IHRydWUsDQo+ICsJCS5yb2kJCSA9 IHRydWUsDQo+ICsJCX0sDQo+ICsJCXsNCj4gKwkJLm5hbWUJCSA9ICJPdmVybGF5XzIiLA0K PiArCQkuaWQJCQkJPSBPVkVSTEFZX1BMQU5FXzIsDQo+ICsJCS50eXBlCQkgPSBEUk1fUExB TkVfVFlQRV9PVkVSTEFZLA0KPiArCQkubnVtX2Zvcm1hdHMgPSBBUlJBWV9TSVpFKHByaW1h cnlfb3ZlcmxheV9mb3JtYXQxKSwNCj4gKwkJLmZvcm1hdHMJID0gcHJpbWFyeV9vdmVybGF5 X2Zvcm1hdDEsDQo+ICsJCS5udW1fbW9kaWZpZXJzID0gQVJSQVlfU0laRShmb3JtYXRfbW9k aWZpZXIxKSwNCj4gKwkJLm1vZGlmaWVycwkgPSBmb3JtYXRfbW9kaWZpZXIxLA0KPiArCQku bWluX3dpZHRoCSA9IDAsDQo+ICsJCS5taW5faGVpZ2h0ICA9IDAsDQo+ICsJCS5tYXhfd2lk dGgJID0gNDA5NiwNCj4gKwkJLm1heF9oZWlnaHQgID0gNDA5NiwNCj4gKwkJLnJvdGF0aW9u CSA9IERSTV9NT0RFX1JPVEFURV8wIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUk9UQVRFXzkw IHwNCj4gKwkJCQkJICAgRFJNX01PREVfUk9UQVRFXzE4MCB8DQo+ICsJCQkJCSAgIERSTV9N T0RFX1JPVEFURV8yNzAgfA0KPiArCQkJCQkgICBEUk1fTU9ERV9SRUZMRUNUX1ggfA0KPiAr CQkJCQkgICBEUk1fTU9ERV9SRUZMRUNUX1ksDQo+ICsJCS5ibGVuZF9tb2RlICA9IEJJVChE Uk1fTU9ERV9CTEVORF9QSVhFTF9OT05FKSB8DQo+ICsJCQkJCSAgIEJJVChEUk1fTU9ERV9C TEVORF9QUkVNVUxUSSkgfA0KPiArCQkJCQkgICBCSVQoRFJNX01PREVfQkxFTkRfQ09WRVJB R0UpLA0KPiArCQkuY29sb3JfZW5jb2RpbmcgPSBCSVQoRFJNX0NPTE9SX1lDQkNSX0JUNzA5 KSB8DQo+ICsJCQkJCQkgIEJJVChEUk1fQ09MT1JfWUNCQ1JfQlQyMDIwKSwNCj4gKwkJLmRl Z2FtbWFfc2l6ZQk9IERFR0FNTUFfU0laRSwNCj4gKwkJLm1pbl9zY2FsZQkgPSBGUkFDXzE2 XzE2KDEsIDMpLA0KPiArCQkubWF4X3NjYWxlCSA9IEZSQUNfMTZfMTYoMTAsIDEpLA0KPiAr CQkuenBvcwkJID0gNCwNCj4gKwkJLndhdGVybWFyawkgPSB0cnVlLA0KPiArCQkuY29sb3Jf bWdtdCAgPSB0cnVlLA0KPiArCQkucm9pCQkgPSB0cnVlLA0KPiArCQl9LA0KPiArCQl7DQo+ ICsJCS5uYW1lCQkgPSAiT3ZlcmxheV8zIiwNCj4gKwkJLmlkCQkJCT0gT1ZFUkxBWV9QTEFO RV8zLA0KPiArCQkudHlwZQkJID0gRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSwNCj4gKwkJLm51 bV9mb3JtYXRzID0gQVJSQVlfU0laRShwcmltYXJ5X292ZXJsYXlfZm9ybWF0MSksDQo+ICsJ CS5mb3JtYXRzCSA9IHByaW1hcnlfb3ZlcmxheV9mb3JtYXQxLA0KPiArCQkubnVtX21vZGlm aWVycyA9IEFSUkFZX1NJWkUoc2Vjb25kYXJ5X2Zvcm1hdF9tb2RpZmllcnMpLA0KPiArCQku bW9kaWZpZXJzCSA9IHNlY29uZGFyeV9mb3JtYXRfbW9kaWZpZXJzLA0KPiArCQkubWluX3dp ZHRoCSA9IDAsDQo+ICsJCS5taW5faGVpZ2h0ICA9IDAsDQo+ICsJCS5tYXhfd2lkdGgJID0g NDA5NiwNCj4gKwkJLm1heF9oZWlnaHQgID0gNDA5NiwNCj4gKwkJLnJvdGF0aW9uCSA9IDAs DQo+ICsJCS5ibGVuZF9tb2RlICA9IEJJVChEUk1fTU9ERV9CTEVORF9QSVhFTF9OT05FKSB8 DQo+ICsJCQkJCSAgIEJJVChEUk1fTU9ERV9CTEVORF9QUkVNVUxUSSkgfA0KPiArCQkJCQkg ICBCSVQoRFJNX01PREVfQkxFTkRfQ09WRVJBR0UpLA0KPiArCQkuY29sb3JfZW5jb2Rpbmcg PSBCSVQoRFJNX0NPTE9SX1lDQkNSX0JUNzA5KSB8DQo+ICsJCQkJCQkgIEJJVChEUk1fQ09M T1JfWUNCQ1JfQlQyMDIwKSwNCj4gKwkJLmRlZ2FtbWFfc2l6ZQk9IERFR0FNTUFfU0laRSwN Cj4gKwkJLm1pbl9zY2FsZQkgPSBEUk1fUExBTkVfTk9fU0NBTElORywNCj4gKwkJLm1heF9z Y2FsZQkgPSBEUk1fUExBTkVfTk9fU0NBTElORywNCj4gKwkJLnpwb3MJCSA9IDUsDQo+ICsJ CS53YXRlcm1hcmsJID0gdHJ1ZSwNCj4gKwkJLmNvbG9yX21nbXQgID0gdHJ1ZSwNCj4gKwkJ LnJvaQkJID0gdHJ1ZSwNCj4gKwkJfSwNCj4gKwkJew0KPiArCQkubmFtZQkJID0gIkN1cnNv ciIsDQo+ICsJCS5pZAkJCQk9IENVUlNPUl9QTEFORV8wLA0KPiArCQkudHlwZQkJID0gRFJN X1BMQU5FX1RZUEVfQ1VSU09SLA0KPiArCQkubnVtX2Zvcm1hdHMgPSBBUlJBWV9TSVpFKGN1 cnNvcl9mb3JtYXRzKSwNCj4gKwkJLmZvcm1hdHMJID0gY3Vyc29yX2Zvcm1hdHMsDQo+ICsJ CS5udW1fbW9kaWZpZXJzID0gMCwNCj4gKwkJLm1vZGlmaWVycwkgPSBOVUxMLA0KPiArCQku bWluX3dpZHRoCSA9IDMyLA0KPiArCQkubWluX2hlaWdodCAgPSAzMiwNCj4gKwkJLm1heF93 aWR0aAkgPSA2NCwNCj4gKwkJLm1heF9oZWlnaHQgID0gNjQsDQo+ICsJCS5yb3RhdGlvbgkg PSAwLA0KPiArCQkuZGVnYW1tYV9zaXplID0gMCwNCj4gKwkJLm1pbl9zY2FsZQkgPSBEUk1f UExBTkVfTk9fU0NBTElORywNCj4gKwkJLm1heF9zY2FsZQkgPSBEUk1fUExBTkVfTk9fU0NB TElORywNCj4gKwkJLnpwb3MJCSA9IDI1NSwNCj4gKwkJLndhdGVybWFyawkgPSBmYWxzZSwN Cj4gKwkJLmNvbG9yX21nbXQgID0gZmFsc2UsDQo+ICsJCS5yb2kJCSA9IGZhbHNlLA0KPiAr CQl9LA0KPiArCQl7DQo+ICsJCS5uYW1lCQkgPSAiQ3Vyc29yXzEiLA0KPiArCQkuaWQJCQkJ PSBDVVJTT1JfUExBTkVfMSwNCj4gKwkJLnR5cGUJCSA9IERSTV9QTEFORV9UWVBFX0NVUlNP UiwNCj4gKwkJLm51bV9mb3JtYXRzID0gQVJSQVlfU0laRShjdXJzb3JfZm9ybWF0cyksDQo+ ICsJCS5mb3JtYXRzCSA9IGN1cnNvcl9mb3JtYXRzLA0KPiArCQkubnVtX21vZGlmaWVycyA9 IDAsDQo+ICsJCS5tb2RpZmllcnMJID0gTlVMTCwNCj4gKwkJLm1pbl93aWR0aAkgPSAzMiwN Cj4gKwkJLm1pbl9oZWlnaHQgID0gMzIsDQo+ICsJCS5tYXhfd2lkdGgJID0gNjQsDQo+ICsJ CS5tYXhfaGVpZ2h0ICA9IDY0LA0KPiArCQkucm90YXRpb24JID0gMCwNCj4gKwkJLmRlZ2Ft bWFfc2l6ZSA9IDAsDQo+ICsJCS5taW5fc2NhbGUJID0gRFJNX1BMQU5FX05PX1NDQUxJTkcs DQo+ICsJCS5tYXhfc2NhbGUJID0gRFJNX1BMQU5FX05PX1NDQUxJTkcsDQo+ICsJCS56cG9z CQkgPSAyNTUsDQo+ICsJCS53YXRlcm1hcmsJID0gZmFsc2UsDQo+ICsJCS5jb2xvcl9tZ210 ICA9IGZhbHNlLA0KPiArCQkucm9pCQkgPSBmYWxzZSwNCj4gKwkJfSwNCj4gKwl9LA0KPiAr fTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCB2c19kY19pbmZvIGRjX2luZm9bXSA9 IHsNCj4gKwl7DQo+ICsJCS8qIERDX1JFVl8wICovDQo+ICsJCS5uYW1lCQkJPSAiREM4MjAw IiwNCj4gKwkJLnBhbmVsX251bQkJPSAyLA0KPiArCQkucGxhbmVfbnVtCQk9IDgsDQo+ICsJ CS5wbGFuZXMJCQk9IGRjX2h3X3BsYW5lc1tEQ19SRVZfMF0sDQo+ICsJCS5sYXllcl9udW0J CT0gNiwNCj4gKwkJLm1heF9icGMJCT0gMTAsDQo+ICsJCS5jb2xvcl9mb3JtYXRzCT0gRFJN X0NPTE9SX0ZPUk1BVF9SR0I0NDQgfA0KPiArCQkJCQkJICBEUk1fQ09MT1JfRk9STUFUX1lD QkNSNDQ0IHwNCj4gKwkJCQkJCSAgRFJNX0NPTE9SX0ZPUk1BVF9ZQ0JDUjQyMiB8DQo+ICsJ CQkJCQkgIERSTV9DT0xPUl9GT1JNQVRfWUNCQ1I0MjAsDQo+ICsJCS5nYW1tYV9zaXplCQk9 IEdBTU1BX0VYX1NJWkUsDQo+ICsJCS5nYW1tYV9iaXRzCQk9IDEyLA0KPiArCQkucGl0Y2hf YWxpZ25tZW50CT0gMTI4LA0KPiArCQkucGlwZV9zeW5jCQk9IGZhbHNlLA0KPiArCQkubW11 X3ByZWZldGNoCT0gZmFsc2UsDQo+ICsJCS5iYWNrZ3JvdW5kCQk9IHRydWUsDQo+ICsJCS5w YW5lbF9zeW5jCQk9IHRydWUsDQo+ICsJCS5jYXBfZGVjCQk9IHRydWUsDQo+ICsJfSwNCj4g Kwl7DQo+ICsJCS8qIERDX1JFVl8xICovDQo+ICsJCS5uYW1lCQkJPSAiREM4MjAwIiwNCj4g KwkJLnBhbmVsX251bQkJPSAyLA0KPiArCQkucGxhbmVfbnVtCQk9IDYsDQo+ICsJCS5wbGFu ZXMJCQk9IGRjX2h3X3BsYW5lc1tEQ19SRVZfMV0sDQo+ICsJCS5sYXllcl9udW0JCT0gNCwN Cj4gKwkJLm1heF9icGMJCT0gMTAsDQo+ICsJCS5jb2xvcl9mb3JtYXRzCT0gRFJNX0NPTE9S X0ZPUk1BVF9SR0I0NDQgfA0KPiArCQkJCQkJICBEUk1fQ09MT1JfRk9STUFUX1lDQkNSNDQ0 IHwNCj4gKwkJCQkJCSAgRFJNX0NPTE9SX0ZPUk1BVF9ZQ0JDUjQyMiB8DQo+ICsJCQkJCQkg IERSTV9DT0xPUl9GT1JNQVRfWUNCQ1I0MjAsDQo+ICsJCS5nYW1tYV9zaXplCQk9IEdBTU1B X0VYX1NJWkUsDQo+ICsJCS5nYW1tYV9iaXRzCQk9IDEyLA0KPiArCQkucGl0Y2hfYWxpZ25t ZW50CT0gMTI4LA0KPiArCQkucGlwZV9zeW5jCQk9IGZhbHNlLA0KPiArCQkubW11X3ByZWZl dGNoCT0gZmFsc2UsDQo+ICsJCS5iYWNrZ3JvdW5kCQk9IHRydWUsDQo+ICsJCS5wYW5lbF9z eW5jCQk9IHRydWUsDQo+ICsJCS5jYXBfZGVjCQk9IHRydWUsDQo+ICsJfSwNCj4gKwl7DQo+ ICsJCS8qIERDX1JFVl8yICovDQo+ICsJCS5uYW1lCQkJPSAiREM4MjAwIiwNCj4gKwkJLnBh bmVsX251bQkJPSAyLA0KPiArCQkucGxhbmVfbnVtCQk9IDgsDQo+ICsJCS5wbGFuZXMJCQk9 IGRjX2h3X3BsYW5lc1tEQ19SRVZfMl0sDQo+ICsJCS5sYXllcl9udW0JCT0gNiwNCj4gKwkJ Lm1heF9icGMJCT0gMTAsDQo+ICsJCS5jb2xvcl9mb3JtYXRzCT0gRFJNX0NPTE9SX0ZPUk1B VF9SR0I0NDQgfA0KPiArCQkJCQkJICBEUk1fQ09MT1JfRk9STUFUX1lDQkNSNDQ0IHwNCj4g KwkJCQkJCSAgRFJNX0NPTE9SX0ZPUk1BVF9ZQ0JDUjQyMiB8DQo+ICsJCQkJCQkgIERSTV9D T0xPUl9GT1JNQVRfWUNCQ1I0MjAsDQo+ICsJCS5nYW1tYV9zaXplCQk9IEdBTU1BX0VYX1NJ WkUsDQo+ICsJCS5nYW1tYV9iaXRzCQk9IDEyLA0KPiArCQkucGl0Y2hfYWxpZ25tZW50CT0g MTI4LA0KPiArCQkucGlwZV9zeW5jCQk9IGZhbHNlLA0KPiArCQkubW11X3ByZWZldGNoCT0g ZmFsc2UsDQo+ICsJCS5iYWNrZ3JvdW5kCQk9IHRydWUsDQo+ICsJCS5wYW5lbF9zeW5jCQk9 IHRydWUsDQo+ICsJCS5jYXBfZGVjCQk9IGZhbHNlLA0KPiArCX0sDQo+ICt9Ow0KPiArDQo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRjX2h3X2Z1bmNzIGh3X2Z1bmM7DQo+ICsNCj4gK3N0 YXRpYyBpbmxpbmUgdTMyIGhpX3JlYWQoc3RydWN0IGRjX2h3ICpodywgdTMyIHJlZykNCj4g K3sNCj4gKwlyZXR1cm4gcmVhZGwoaHctPmhpX2Jhc2UgKyByZWcpOw0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgaW5saW5lIHZvaWQgaGlfd3JpdGUoc3RydWN0IGRjX2h3ICpodywgdTMyIHJl ZywgdTMyIHZhbHVlKQ0KPiArew0KPiArCXdyaXRlbCh2YWx1ZSwgaHctPmhpX2Jhc2UgKyBy ZWcpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgZGNfd3JpdGUoc3RydWN0 IGRjX2h3ICpodywgdTMyIHJlZywgdTMyIHZhbHVlKQ0KPiArew0KPiArCXdyaXRlbCh2YWx1 ZSwgaHctPnJlZ19iYXNlICsgcmVnIC0gRENfUkVHX0JBU0UpOw0KPiArfQ0KPiArDQo+ICtz dGF0aWMgaW5saW5lIHUzMiBkY19yZWFkKHN0cnVjdCBkY19odyAqaHcsIHUzMiByZWcpDQo+ ICt7DQo+ICsJdTMyIHZhbHVlID0gcmVhZGwoaHctPnJlZ19iYXNlICsgcmVnIC0gRENfUkVH X0JBU0UpOw0KPiArDQo+ICsJcmV0dXJuIHZhbHVlOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMg aW5saW5lIHZvaWQgZGNfc2V0X2NsZWFyKHN0cnVjdCBkY19odyAqaHcsIHUzMiByZWcsIHUz MiBzZXQsIHUzMiBjbGVhcikNCj4gK3sNCj4gKwl1MzIgdmFsdWUgPSBkY19yZWFkKGh3LCBy ZWcpOw0KPiArDQo+ICsJdmFsdWUgJj0gfmNsZWFyOw0KPiArCXZhbHVlIHw9IHNldDsNCj4g KwlkY193cml0ZShodywgcmVnLCB2YWx1ZSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lk IGxvYWRfZGVmYXVsdF9maWx0ZXIoc3RydWN0IGRjX2h3ICpodywNCj4gKwkJCQljb25zdCBz dHJ1Y3QgZGNfaHdfcGxhbmVfcmVnICpyZWcsIHUzMiBvZmZzZXQpDQo+ICt7DQo+ICsJdTgg aTsNCj4gKw0KPiArCWRjX3dyaXRlKGh3LCByZWctPnNjYWxlX2NvbmZpZyArIG9mZnNldCwg MHgzMyk7DQo+ICsJZGNfd3JpdGUoaHcsIHJlZy0+aW5pdF9vZmZzZXQgKyBvZmZzZXQsIDB4 ODAwMDgwMDApOw0KPiArCWRjX3dyaXRlKGh3LCByZWctPmhfZmlsdGVyX2NvZWZfaW5kZXgg KyBvZmZzZXQsIDB4MDApOw0KPiArCWZvciAoaSA9IDA7IGkgPCBIX0NPRUZfU0laRTsgaSsr KQ0KPiArCQlkY193cml0ZShodywgcmVnLT5oX2ZpbHRlcl9jb2VmX2RhdGEgKyBvZmZzZXQs IGhvcmtlcm5lbFtpXSk7DQo+ICsNCj4gKwlkY193cml0ZShodywgcmVnLT52X2ZpbHRlcl9j b2VmX2luZGV4ICsgb2Zmc2V0LCAweDAwKTsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgVl9DT0VG X1NJWkU7IGkrKykNCj4gKwkJZGNfd3JpdGUoaHcsIHJlZy0+dl9maWx0ZXJfY29lZl9kYXRh ICsgb2Zmc2V0LCB2ZXJrZXJuZWxbaV0pOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBs b2FkX3JnYl90b19yZ2Ioc3RydWN0IGRjX2h3ICpodywgY29uc3Qgc3RydWN0IGRjX2h3X3Bs YW5lX3JlZyAqcmVnLA0KPiArCQkJICAgIHUzMiBvZmZzZXQsIHUxNiAqdGFibGUpDQo+ICt7 DQo+ICsJZGNfd3JpdGUoaHcsIHJlZy0+cmdiX3RvX3JnYl9jb2VmMCArIG9mZnNldCwgdGFi bGVbMF0gfCAodGFibGVbMV0gPDwgMTYpKTsNCj4gKwlkY193cml0ZShodywgcmVnLT5yZ2Jf dG9fcmdiX2NvZWYxICsgb2Zmc2V0LCB0YWJsZVsyXSB8ICh0YWJsZVszXSA8PCAxNikpOw0K PiArCWRjX3dyaXRlKGh3LCByZWctPnJnYl90b19yZ2JfY29lZjIgKyBvZmZzZXQsIHRhYmxl WzRdIHwgKHRhYmxlWzVdIDw8IDE2KSk7DQo+ICsJZGNfd3JpdGUoaHcsIHJlZy0+cmdiX3Rv X3JnYl9jb2VmMyArIG9mZnNldCwgdGFibGVbNl0gfCAodGFibGVbN10gPDwgMTYpKTsNCj4g KwlkY193cml0ZShodywgcmVnLT5yZ2JfdG9fcmdiX2NvZWY0ICsgb2Zmc2V0LCB0YWJsZVs4 XSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGxvYWRfeXV2X3RvX3JnYihzdHJ1Y3Qg ZGNfaHcgKmh3LCBjb25zdCBzdHJ1Y3QgZGNfaHdfcGxhbmVfcmVnICpyZWcsDQo+ICsJCQkg ICAgdTMyIG9mZnNldCwgczMyICp0YWJsZSkNCj4gK3sNCj4gKwlkY193cml0ZShodywgcmVn LT55dXZfdG9fcmdiX2NvZWYwICsgb2Zmc2V0LA0KPiArCQkgKDB4RkZGRiAmIHRhYmxlWzBd KSB8ICh0YWJsZVsxXSA8PCAxNikpOw0KPiArCWRjX3dyaXRlKGh3LCByZWctPnl1dl90b19y Z2JfY29lZjEgKyBvZmZzZXQsDQo+ICsJCSAoMHhGRkZGICYgdGFibGVbMl0pIHwgKHRhYmxl WzNdIDw8IDE2KSk7DQo+ICsJZGNfd3JpdGUoaHcsIHJlZy0+eXV2X3RvX3JnYl9jb2VmMiAr IG9mZnNldCwNCj4gKwkJICgweEZGRkYgJiB0YWJsZVs0XSkgfCAodGFibGVbNV0gPDwgMTYp KTsNCj4gKwlkY193cml0ZShodywgcmVnLT55dXZfdG9fcmdiX2NvZWYzICsgb2Zmc2V0LA0K PiArCQkgKDB4RkZGRiAmIHRhYmxlWzZdKSB8ICh0YWJsZVs3XSA8PCAxNikpOw0KPiArCWRj X3dyaXRlKGh3LCByZWctPnl1dl90b19yZ2JfY29lZjQgKyBvZmZzZXQsIHRhYmxlWzhdKTsN Cj4gKwlkY193cml0ZShodywgcmVnLT55dXZfdG9fcmdiX2NvZWZkMCArIG9mZnNldCwgdGFi bGVbOV0pOw0KPiArCWRjX3dyaXRlKGh3LCByZWctPnl1dl90b19yZ2JfY29lZmQxICsgb2Zm c2V0LCB0YWJsZVsxMF0pOw0KPiArCWRjX3dyaXRlKGh3LCByZWctPnl1dl90b19yZ2JfY29l ZmQyICsgb2Zmc2V0LCB0YWJsZVsxMV0pOw0KPiArCWRjX3dyaXRlKGh3LCByZWctPnlfY2xh bXBfYm91bmQgKyBvZmZzZXQsIHRhYmxlWzEyXSB8ICh0YWJsZVsxM10gPDwgMTYpKTsNCj4g KwlkY193cml0ZShodywgcmVnLT51dl9jbGFtcF9ib3VuZCArIG9mZnNldCwgdGFibGVbMTRd IHwgKHRhYmxlWzE1XSA8PCAxNikpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBsb2Fk X3JnYl90b195dXYoc3RydWN0IGRjX2h3ICpodywgdTMyIG9mZnNldCwgczE2ICp0YWJsZSkN Cj4gK3sNCj4gKwlkY193cml0ZShodywgRENfRElTUExBWV9SR0JUT1lVVl9DT0VGMCArIG9m ZnNldCwNCj4gKwkJIHRhYmxlWzBdIHwgKHRhYmxlWzFdIDw8IDE2KSk7DQo+ICsJZGNfd3Jp dGUoaHcsIERDX0RJU1BMQVlfUkdCVE9ZVVZfQ09FRjEgKyBvZmZzZXQsDQo+ICsJCSB0YWJs ZVsyXSB8ICh0YWJsZVszXSA8PCAxNikpOw0KPiArCWRjX3dyaXRlKGh3LCBEQ19ESVNQTEFZ X1JHQlRPWVVWX0NPRUYyICsgb2Zmc2V0LA0KPiArCQkgdGFibGVbNF0gfCAodGFibGVbNV0g PDwgMTYpKTsNCj4gKwlkY193cml0ZShodywgRENfRElTUExBWV9SR0JUT1lVVl9DT0VGMyAr IG9mZnNldCwNCj4gKwkJIHRhYmxlWzZdIHwgKHRhYmxlWzddIDw8IDE2KSk7DQo+ICsJZGNf d3JpdGUoaHcsIERDX0RJU1BMQVlfUkdCVE9ZVVZfQ09FRjQgKyBvZmZzZXQsIHRhYmxlWzhd KTsNCj4gKwlkY193cml0ZShodywgRENfRElTUExBWV9SR0JUT1lVVl9DT0VGRDAgKyBvZmZz ZXQsIHRhYmxlWzldKTsNCj4gKwlkY193cml0ZShodywgRENfRElTUExBWV9SR0JUT1lVVl9D T0VGRDEgKyBvZmZzZXQsIHRhYmxlWzEwXSk7DQo+ICsJZGNfd3JpdGUoaHcsIERDX0RJU1BM QVlfUkdCVE9ZVVZfQ09FRkQyICsgb2Zmc2V0LCB0YWJsZVsxMV0pOw0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgYm9vbCBpc19yZ2IoZW51bSBkY19od19jb2xvcl9mb3JtYXQgZm9ybWF0KQ0K PiArew0KPiArCXN3aXRjaCAoZm9ybWF0KSB7DQo+ICsJY2FzZSBGT1JNQVRfWDRSNEc0QjQ6 DQo+ICsJY2FzZSBGT1JNQVRfQTRSNEc0QjQ6DQo+ICsJY2FzZSBGT1JNQVRfWDFSNUc1QjU6 DQo+ICsJY2FzZSBGT1JNQVRfQTFSNUc1QjU6DQo+ICsJY2FzZSBGT1JNQVRfUjVHNkI1Og0K PiArCWNhc2UgRk9STUFUX1g4UjhHOEI4Og0KPiArCWNhc2UgRk9STUFUX0E4UjhHOEI4Og0K PiArCWNhc2UgRk9STUFUX0EyUjEwRzEwQjEwOg0KPiArCQlyZXR1cm4gdHJ1ZTsNCj4gKwlk ZWZhdWx0Og0KPiArCQlyZXR1cm4gZmFsc2U7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgdm9pZCBsb2FkX2RlZ2FtbWFfdGFibGUoc3RydWN0IGRjX2h3ICpodywNCj4gKwkJCSAg ICAgICBjb25zdCBzdHJ1Y3QgZGNfaHdfcGxhbmVfcmVnICpyZWcsDQo+ICsJCQkgICAgICAg dTMyIG9mZnNldCwgdTE2ICp0YWJsZSkNCj4gK3sNCj4gKwl1MTYgaTsNCj4gKwl1MzIgdmFs dWU7DQo+ICsNCj4gKwlkY193cml0ZShodywgcmVnLT5kZWdhbW1hX2luZGV4ICsgb2Zmc2V0 LCAwKTsNCj4gKw0KPiArCWZvciAoaSA9IDA7IGkgPCBERUdBTU1BX1NJWkU7IGkrKykgew0K PiArCQl2YWx1ZSA9IHRhYmxlW2ldIHwgKHRhYmxlW2ldIDw8IDE2KTsNCj4gKwkJZGNfd3Jp dGUoaHcsIHJlZy0+ZGVnYW1tYV9kYXRhICsgb2Zmc2V0LCB2YWx1ZSk7DQo+ICsJCWRjX3dy aXRlKGh3LCByZWctPmRlZ2FtbWFfZXhfZGF0YSArIG9mZnNldCwgdGFibGVbaV0pOw0KPiAr CX0NCj4gK30NCj4gKw0KPiArc3RhdGljIHUzMiBnZXRfYWRkcl9vZmZzZXQodTMyIGlkKQ0K PiArew0KPiArCXUzMiBvZmZzZXQgPSAwOw0KPiArDQo+ICsJc3dpdGNoIChpZCkgew0KPiAr CWNhc2UgUFJJTUFSWV9QTEFORV8xOg0KPiArCWNhc2UgT1ZFUkxBWV9QTEFORV8xOg0KPiAr CQlvZmZzZXQgPSAweDA0Ow0KPiArCQlicmVhazsNCj4gKwljYXNlIE9WRVJMQVlfUExBTkVf MjoNCj4gKwkJb2Zmc2V0ID0gMHgwODsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBPVkVSTEFZ X1BMQU5FXzM6DQo+ICsJCW9mZnNldCA9IDB4MEM7DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1 bHQ6DQo+ICsJCWJyZWFrOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiBvZmZzZXQ7DQo+ICt9 DQo+ICsNCj4gK2ludCBkY19od19pbml0KHN0cnVjdCBkY19odyAqaHcpDQo+ICt7DQo+ICsJ dTggaSwgaWQsIHBhbmVsX251bSwgbGF5ZXJfbnVtOw0KPiArCXUzMiBvZmZzZXQ7DQo+ICsJ dTMyIHJldmlzaW9uID0gaGlfcmVhZChodywgRENfSFdfUkVWSVNJT04pOw0KPiArCXUzMiBj aWQgPSBoaV9yZWFkKGh3LCBEQ19IV19DSElQX0NJRCk7DQo+ICsJY29uc3Qgc3RydWN0IGRj X2h3X3BsYW5lX3JlZyAqcmVnOw0KPiArDQo+ICsJc3dpdGNoIChyZXZpc2lvbikgew0KPiAr CWNhc2UgMHg1NzIwOg0KPiArCQlody0+cmV2ID0gRENfUkVWXzA7DQo+ICsJCWJyZWFrOw0K PiArCWNhc2UgMHg1NzIxOg0KPiArCQlzd2l0Y2ggKGNpZCkgew0KPiArCQljYXNlIDB4MzBC Og0KPiArCQkJaHctPnJldiA9IERDX1JFVl8xOw0KPiArCQkJYnJlYWs7DQo+ICsJCWNhc2Ug MHgzMTA6DQo+ICsJCQlody0+cmV2ID0gRENfUkVWXzI7DQo+ICsJCQlicmVhazsNCj4gKwkJ ZGVmYXVsdDoNCj4gKwkJCWh3LT5yZXYgPSBEQ19SRVZfMDsNCj4gKwkJCWJyZWFrOw0KPiAr CQl9DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCXJldHVybiAtRU5YSU87DQo+ ICsJfQ0KPiArDQo+ICsJaHctPmluZm8gPSAoc3RydWN0IHZzX2RjX2luZm8gKikmZGNfaW5m b1tody0+cmV2XTsNCj4gKwlody0+ZnVuYyA9IChzdHJ1Y3QgZGNfaHdfZnVuY3MgKikmaHdf ZnVuYzsNCj4gKw0KPiArCWxheWVyX251bSA9IGh3LT5pbmZvLT5sYXllcl9udW07DQo+ICsJ Zm9yIChpID0gMDsgaSA8IGxheWVyX251bTsgaSsrKSB7DQo+ICsJCWlkID0gaHctPmluZm8t PnBsYW5lc1tpXS5pZDsNCj4gKwkJb2Zmc2V0ID0gZ2V0X2FkZHJfb2Zmc2V0KGlkKTsNCj4g KwkJaWYgKGlkID09IFBSSU1BUllfUExBTkVfMCB8fCBpZCA9PSBQUklNQVJZX1BMQU5FXzEp DQo+ICsJCQlyZWcgPSAmZGNfcGxhbmVfcmVnWzBdOw0KPiArCQllbHNlDQo+ICsJCQlyZWcg PSAmZGNfcGxhbmVfcmVnWzFdOw0KPiArDQo+ICsJCWxvYWRfZGVmYXVsdF9maWx0ZXIoaHcs IHJlZywgb2Zmc2V0KTsNCj4gKwkJbG9hZF9yZ2JfdG9fcmdiKGh3LCByZWcsIG9mZnNldCwg UkdCMlJHQik7DQo+ICsJfQ0KPiArDQo+ICsJcGFuZWxfbnVtID0gaHctPmluZm8tPnBhbmVs X251bTsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgcGFuZWxfbnVtOyBpKyspIHsNCj4gKwkJb2Zm c2V0ID0gaSA8PCAyOw0KPiArDQo+ICsJCWxvYWRfcmdiX3RvX3l1dihodywgb2Zmc2V0LCBS R0IyWVVWKTsNCj4gKwkJZGNfd3JpdGUoaHcsIERDX0RJU1BMQVlfUEFORUxfQ09ORklHICsg b2Zmc2V0LCAweDExMSk7DQo+ICsNCj4gKwkJb2Zmc2V0ID0gaSA/IERDX0NVUlNPUl9PRkZT RVQgOiAwOw0KPiArCQlkY193cml0ZShodywgRENfQ1VSU09SX0JBQ0tHUk9VTkQgKyBvZmZz ZXQsIDB4MDBGRkZGRkYpOw0KPiArCQlkY193cml0ZShodywgRENfQ1VSU09SX0ZPUkVHUk9V TkQgKyBvZmZzZXQsIDB4MDBBQUFBQUEpOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiAwOw0K PiArfQ0KPiArDQo+ICt2b2lkIGRjX2h3X2RlaW5pdChzdHJ1Y3QgZGNfaHcgKmh3KQ0KPiAr ew0KPiArCS8qIE5vdGhpbmcgdG8gZG8gKi8NCj4gK30NCj4gKw0KPiArdm9pZCBkY19od191 cGRhdGVfcGxhbmUoc3RydWN0IGRjX2h3ICpodywgdTggaWQsDQo+ICsJCQlzdHJ1Y3QgZGNf aHdfZmIgKmZiLCBzdHJ1Y3QgZGNfaHdfc2NhbGUgKnNjYWxlLA0KPiArCQkJc3RydWN0IGRj X2h3X3Bvc2l0aW9uICpwb3MsIHN0cnVjdCBkY19od19ibGVuZCAqYmxlbmQpDQo+ICt7DQo+ ICsJc3RydWN0IGRjX2h3X3BsYW5lICpwbGFuZSA9ICZody0+cGxhbmVbaWRdOw0KPiArDQo+ ICsJaWYgKHBsYW5lKSB7DQo+ICsJCWlmIChmYikgew0KPiArCQkJaWYgKCFmYi0+ZW5hYmxl KQ0KPiArCQkJCXBsYW5lLT5mYi5lbmFibGUgPSBmYWxzZTsNCj4gKwkJCWVsc2UNCj4gKwkJ CQltZW1jcHkoJnBsYW5lLT5mYiwgZmIsDQo+ICsJCQkJICAgICAgIHNpemVvZigqZmIpIC0g c2l6ZW9mKGZiLT5kaXJ0eSkpOw0KPiArCQkJcGxhbmUtPmZiLmRpcnR5ID0gdHJ1ZTsNCj4g KwkJfQ0KPiArCQlpZiAoc2NhbGUpIHsNCj4gKwkJCW1lbWNweSgmcGxhbmUtPnNjYWxlLCBz Y2FsZSwNCj4gKwkJCSAgICAgICBzaXplb2YoKnNjYWxlKSAtIHNpemVvZihzY2FsZS0+ZGly dHkpKTsNCj4gKwkJCXBsYW5lLT5zY2FsZS5kaXJ0eSA9IHRydWU7DQo+ICsJCX0NCj4gKwkJ aWYgKHBvcykgew0KPiArCQkJbWVtY3B5KCZwbGFuZS0+cG9zLCBwb3MsDQo+ICsJCQkgICAg ICAgc2l6ZW9mKCpwb3MpIC0gc2l6ZW9mKHBvcy0+ZGlydHkpKTsNCj4gKwkJCXBsYW5lLT5w b3MuZGlydHkgPSB0cnVlOw0KPiArCQl9DQo+ICsJCWlmIChibGVuZCkgew0KPiArCQkJbWVt Y3B5KCZwbGFuZS0+YmxlbmQsIGJsZW5kLA0KPiArCQkJICAgICAgIHNpemVvZigqYmxlbmQp IC0gc2l6ZW9mKGJsZW5kLT5kaXJ0eSkpOw0KPiArCQkJcGxhbmUtPmJsZW5kLmRpcnR5ID0g dHJ1ZTsNCj4gKwkJfQ0KPiArCX0NCj4gK30NCj4gKw0KPiArdm9pZCBkY19od191cGRhdGVf ZGVnYW1tYShzdHJ1Y3QgZGNfaHcgKmh3LCB1OCBpZCwgdTMyIG1vZGUpDQo+ICt7DQo+ICsJ c3RydWN0IGRjX2h3X3BsYW5lICpwbGFuZSA9ICZody0+cGxhbmVbaWRdOw0KPiArDQo+ICsJ aWYgKHBsYW5lKSB7DQo+ICsJCWlmIChody0+aW5mby0+cGxhbmVzW2lkXS5kZWdhbW1hX3Np emUpIHsNCj4gKwkJCXBsYW5lLT5kZWdhbW1hLm1vZGUgPSBtb2RlOw0KPiArCQkJcGxhbmUt PmRlZ2FtbWEuZGlydHkgPSB0cnVlOw0KPiArCQl9IGVsc2Ugew0KPiArCQkJcGxhbmUtPmRl Z2FtbWEuZGlydHkgPSBmYWxzZTsNCj4gKwkJfQ0KPiArCX0NCj4gK30NCj4gKw0KPiArdm9p ZCBkY19od191cGRhdGVfcm9pKHN0cnVjdCBkY19odyAqaHcsIHU4IGlkLCBzdHJ1Y3QgZGNf aHdfcm9pICpyb2kpDQo+ICt7DQo+ICsJc3RydWN0IGRjX2h3X3BsYW5lICpwbGFuZSA9ICZo dy0+cGxhbmVbaWRdOw0KPiArDQo+ICsJaWYgKHBsYW5lKSB7DQo+ICsJCW1lbWNweSgmcGxh bmUtPnJvaSwgcm9pLCBzaXplb2YoKnJvaSkgLSBzaXplb2Yocm9pLT5kaXJ0eSkpOw0KPiAr CQlwbGFuZS0+cm9pLmRpcnR5ID0gdHJ1ZTsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3ZvaWQg ZGNfaHdfdXBkYXRlX2NvbG9ya2V5KHN0cnVjdCBkY19odyAqaHcsIHU4IGlkLA0KPiArCQkJ ICAgc3RydWN0IGRjX2h3X2NvbG9ya2V5ICpjb2xvcmtleSkNCj4gK3sNCj4gKwlzdHJ1Y3Qg ZGNfaHdfcGxhbmUgKnBsYW5lID0gJmh3LT5wbGFuZVtpZF07DQo+ICsNCj4gKwlpZiAocGxh bmUpIHsNCj4gKwkJbWVtY3B5KCZwbGFuZS0+Y29sb3JrZXksIGNvbG9ya2V5LA0KPiArCQkg ICAgICAgc2l6ZW9mKCpjb2xvcmtleSkgLSBzaXplb2YoY29sb3JrZXktPmRpcnR5KSk7DQo+ ICsJCXBsYW5lLT5jb2xvcmtleS5kaXJ0eSA9IHRydWU7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ ICt2b2lkIGRjX2h3X3VwZGF0ZV9xb3Moc3RydWN0IGRjX2h3ICpodywgc3RydWN0IGRjX2h3 X3FvcyAqcW9zKQ0KPiArew0KPiArCW1lbWNweSgmaHctPnFvcywgcW9zLCBzaXplb2YoKnFv cykgLSBzaXplb2YocW9zLT5kaXJ0eSkpOw0KPiArCWh3LT5xb3MuZGlydHkgPSB0cnVlOw0K PiArfQ0KPiArDQo+ICt2b2lkIGRjX2h3X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGRjX2h3ICpo dywgdTggaWQsIHN0cnVjdCBkY19od19jdXJzb3IgKmN1cnNvcikNCj4gK3sNCj4gKwltZW1j cHkoJmh3LT5jdXJzb3JbaWRdLCBjdXJzb3IsIHNpemVvZigqY3Vyc29yKSAtIHNpemVvZihj dXJzb3ItPmRpcnR5KSk7DQo+ICsJaHctPmN1cnNvcltpZF0uZGlydHkgPSB0cnVlOw0KPiAr fQ0KPiArDQo+ICt2b2lkIGRjX2h3X3VwZGF0ZV9nYW1tYShzdHJ1Y3QgZGNfaHcgKmh3LCB1 OCBpZCwgdTE2IGluZGV4LA0KPiArCQkJdTE2IHIsIHUxNiBnLCB1MTYgYikNCj4gK3sNCj4g KwlpZiAoaW5kZXggPj0gaHctPmluZm8tPmdhbW1hX3NpemUpDQo+ICsJCXJldHVybjsNCj4g Kw0KPiArCWh3LT5nYW1tYVtpZF0uZ2FtbWFbaW5kZXhdWzBdID0gcjsNCj4gKwlody0+Z2Ft bWFbaWRdLmdhbW1hW2luZGV4XVsxXSA9IGc7DQo+ICsJaHctPmdhbW1hW2lkXS5nYW1tYVtp bmRleF1bMl0gPSBiOw0KPiArCWh3LT5nYW1tYVtpZF0uZGlydHkgPSB0cnVlOw0KPiArfQ0K PiArDQo+ICt2b2lkIGRjX2h3X2VuYWJsZV9nYW1tYShzdHJ1Y3QgZGNfaHcgKmh3LCB1OCBp ZCwgYm9vbCBlbmFibGUpDQo+ICt7DQo+ICsJaHctPmdhbW1hW2lkXS5lbmFibGUgPSBlbmFi bGU7DQo+ICsJaHctPmdhbW1hW2lkXS5kaXJ0eSA9IHRydWU7DQo+ICt9DQo+ICsNCj4gK3Zv aWQgZGNfaHdfc2V0dXBfZGlzcGxheShzdHJ1Y3QgZGNfaHcgKmh3LCBzdHJ1Y3QgZGNfaHdf ZGlzcGxheSAqZGlzcGxheSkNCj4gK3sNCj4gKwl1OCBpZCA9IGRpc3BsYXktPmlkOw0KPiAr DQo+ICsJbWVtY3B5KCZody0+ZGlzcGxheVtpZF0sIGRpc3BsYXksIHNpemVvZigqZGlzcGxh eSkpOw0KPiArDQo+ICsJaHctPmZ1bmMtPmRpc3BsYXkoaHcsIGRpc3BsYXkpOw0KPiArfQ0K PiArDQo+ICt2b2lkIGRjX2h3X2VuYWJsZV9pbnRlcnJ1cHQoc3RydWN0IGRjX2h3ICpodywg Ym9vbCBlbmFibGUpDQo+ICt7DQo+ICsJaWYgKGVuYWJsZSkNCj4gKwkJaGlfd3JpdGUoaHcs IEFRX0lOVFJfRU5CTCwgMHhGRkZGRkZGRik7DQo+ICsJZWxzZQ0KPiArCQloaV93cml0ZSho dywgQVFfSU5UUl9FTkJMLCAwKTsNCj4gK30NCj4gKw0KPiArdTMyIGRjX2h3X2dldF9pbnRl cnJ1cHQoc3RydWN0IGRjX2h3ICpodykNCj4gK3sNCj4gKwlyZXR1cm4gaGlfcmVhZChodywg QVFfSU5UUl9BQ0tOT1dMRURHRSk7DQo+ICt9DQo+ICsNCj4gK2Jvb2wgZGNfaHdfY2hlY2tf dW5kZXJmbG93KHN0cnVjdCBkY19odyAqaHcpDQo+ICt7DQo+ICsJcmV0dXJuIGRjX3JlYWQo aHcsIERDX0ZSQU1FQlVGRkVSX0NPTkZJRykgJiBCSVQoNSk7DQo+ICt9DQo+ICsNCj4gK3Zv aWQgZGNfaHdfZW5hYmxlX3NoYWRvd19yZWdpc3RlcihzdHJ1Y3QgZGNfaHcgKmh3LCBib29s IGVuYWJsZSkNCj4gK3sNCj4gKwl1MzIgaSwgb2Zmc2V0Ow0KPiArCXU4IGlkLCBsYXllcl9u dW0gPSBody0+aW5mby0+bGF5ZXJfbnVtOw0KPiArCXU4IHBhbmVsX251bSA9IGh3LT5pbmZv LT5wYW5lbF9udW07DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgbGF5ZXJfbnVtOyBpKysp IHsNCj4gKwkJaWQgPSBody0+aW5mby0+cGxhbmVzW2ldLmlkOw0KPiArCQlvZmZzZXQgPSBn ZXRfYWRkcl9vZmZzZXQoaWQpOw0KPiArCQlpZiAoZW5hYmxlKSB7DQo+ICsJCQlpZiAoaWQg PT0gUFJJTUFSWV9QTEFORV8wIHx8IGlkID09IFBSSU1BUllfUExBTkVfMSkNCj4gKwkJCQlk Y19zZXRfY2xlYXIoaHcsIERDX0ZSQU1FQlVGRkVSX0NPTkZJR19FWCArIG9mZnNldCwgQklU KDEyKSwgMCk7DQo+ICsJCQllbHNlDQo+ICsJCQkJZGNfc2V0X2NsZWFyKGh3LCBEQ19PVkVS TEFZX0NPTkZJRyArIG9mZnNldCwgQklUKDMxKSwgMCk7DQo+ICsJCX0gZWxzZSB7DQo+ICsJ CQlpZiAoaWQgPT0gUFJJTUFSWV9QTEFORV8wIHx8IGlkID09IFBSSU1BUllfUExBTkVfMSkN Cj4gKwkJCQlkY19zZXRfY2xlYXIoaHcsIERDX0ZSQU1FQlVGRkVSX0NPTkZJR19FWCArIG9m ZnNldCwgMCwgQklUKDEyKSk7DQo+ICsJCQllbHNlDQo+ICsJCQkJZGNfc2V0X2NsZWFyKGh3 LCBEQ19PVkVSTEFZX0NPTkZJRyArIG9mZnNldCwgMCwgQklUKDMxKSk7DQo+ICsJCX0NCj4g Kwl9DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgcGFuZWxfbnVtOyBpKyspIHsNCj4gKwkJ b2Zmc2V0ID0gaSA8PCAyOw0KPiArCQlpZiAoZW5hYmxlKQ0KPiArCQkJZGNfc2V0X2NsZWFy KGh3LCBEQ19ESVNQTEFZX1BBTkVMX0NPTkZJR19FWCArIG9mZnNldCwgMCwgQklUKDApKTsN Cj4gKwkJZWxzZQ0KPiArCQkJZGNfc2V0X2NsZWFyKGh3LCBEQ19ESVNQTEFZX1BBTkVMX0NP TkZJR19FWCArIG9mZnNldCwgQklUKDApLCAwKTsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3Zv aWQgZGNfaHdfc2V0X291dChzdHJ1Y3QgZGNfaHcgKmh3LCBlbnVtIGRjX2h3X291dCBvdXQs IHU4IGlkKQ0KPiArew0KPiArCWlmIChvdXQgPD0gT1VUX0RQKQ0KPiArCQlody0+b3V0W2lk XSA9IG91dDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgZ2FtbWFfZXhfY29tbWl0KHN0 cnVjdCBkY19odyAqaHcpDQo+ICt7DQo+ICsJdTggcGFuZWxfbnVtID0gaHctPmluZm8tPnBh bmVsX251bTsNCj4gKwl1MTYgaSwgajsNCj4gKwl1MzIgdmFsdWU7DQo+ICsNCj4gKwlmb3Ig KGogPSAwOyBqIDwgcGFuZWxfbnVtOyBqKyspIHsNCj4gKwkJaWYgKGh3LT5nYW1tYVtqXS5k aXJ0eSkgew0KPiArCQkJaWYgKGh3LT5nYW1tYVtqXS5lbmFibGUpIHsNCj4gKwkJCQlkY193 cml0ZShodywgRENfRElTUExBWV9HQU1NQV9FWF9JTkRFWCArIChqIDw8IDIpLCAweDAwKTsN Cj4gKwkJCQlmb3IgKGkgPSAwOyBpIDwgR0FNTUFfRVhfU0laRTsgaSsrKSB7DQo+ICsJCQkJ CXZhbHVlID0gaHctPmdhbW1hW2pdLmdhbW1hW2ldWzJdIHwNCj4gKwkJCQkJCShody0+Z2Ft bWFbal0uZ2FtbWFbaV1bMV0gPDwgMTIpOw0KPiArCQkJCQlkY193cml0ZShodywgRENfRElT UExBWV9HQU1NQV9FWF9EQVRBICsgKGogPDwgMiksIHZhbHVlKTsNCj4gKwkJCQkJZGNfd3Jp dGUoaHcsIERDX0RJU1BMQVlfR0FNTUFfRVhfT05FX0RBVEEgKyAoaiA8PCAyKSwNCj4gKwkJ CQkJCSBody0+Z2FtbWFbal0uZ2FtbWFbaV1bMF0pOw0KPiArCQkJCX0NCj4gKwkJCQlkY19z ZXRfY2xlYXIoaHcsIERDX0RJU1BMQVlfUEFORUxfQ09ORklHICsgKGogPDwgMiksDQo+ICsJ CQkJCSAgICAgQklUKDEzKSwgMCk7DQo+ICsJCQl9IGVsc2Ugew0KPiArCQkJCWRjX3NldF9j bGVhcihodywgRENfRElTUExBWV9QQU5FTF9DT05GSUcgKyAoaiA8PCAyKSwNCj4gKwkJCQkJ ICAgICAwLCBCSVQoMTMpKTsNCj4gKwkJCX0NCj4gKwkJCWh3LT5nYW1tYVtqXS5kaXJ0eSA9 IGZhbHNlOw0KPiArCQl9DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBwbGFu ZV9jb21taXQoc3RydWN0IGRjX2h3ICpodykNCj4gK3sNCj4gKwlzdHJ1Y3QgZGNfaHdfcGxh bmUgKnBsYW5lOw0KPiArCWNvbnN0IHN0cnVjdCBkY19od19wbGFuZV9yZWcgKnJlZzsNCj4g Kwlib29sIHByaW1hcnkgPSBmYWxzZTsNCj4gKwl1OCBpZCwgbGF5ZXJfbnVtID0gaHctPmlu Zm8tPmxheWVyX251bTsNCj4gKwl1MzIgaSwgb2Zmc2V0Ow0KPiArDQo+ICsJZm9yIChpID0g MDsgaSA8IGxheWVyX251bTsgaSsrKSB7DQo+ICsJCXBsYW5lID0gJmh3LT5wbGFuZVtpXTsN Cj4gKwkJaWQgPSBody0+aW5mby0+cGxhbmVzW2ldLmlkOw0KPiArCQlvZmZzZXQgPSBnZXRf YWRkcl9vZmZzZXQoaWQpOw0KPiArCQlpZiAoaWQgPT0gUFJJTUFSWV9QTEFORV8wIHx8IGlk ID09IFBSSU1BUllfUExBTkVfMSkgew0KPiArCQkJcmVnID0gJmRjX3BsYW5lX3JlZ1swXTsN Cj4gKwkJCXByaW1hcnkgPSB0cnVlOw0KPiArCQl9IGVsc2Ugew0KPiArCQkJcmVnID0gJmRj X3BsYW5lX3JlZ1sxXTsNCj4gKwkJCXByaW1hcnkgPSBmYWxzZTsNCj4gKwkJfQ0KPiArDQo+ ICsJCWlmIChwbGFuZS0+ZmIuZGlydHkpIHsNCj4gKwkJCWlmIChwbGFuZS0+ZmIuZW5hYmxl KSB7DQo+ICsJCQkJZGNfd3JpdGUoaHcsIHJlZy0+eV9hZGRyZXNzICsgb2Zmc2V0LA0KPiAr CQkJCQkgcGxhbmUtPmZiLnlfYWRkcmVzcyk7DQo+ICsJCQkJZGNfd3JpdGUoaHcsIHJlZy0+ dV9hZGRyZXNzICsgb2Zmc2V0LA0KPiArCQkJCQkgcGxhbmUtPmZiLnVfYWRkcmVzcyk7DQo+ ICsJCQkJZGNfd3JpdGUoaHcsIHJlZy0+dl9hZGRyZXNzICsgb2Zmc2V0LA0KPiArCQkJCQkg cGxhbmUtPmZiLnZfYWRkcmVzcyk7DQo+ICsJCQkJZGNfd3JpdGUoaHcsIHJlZy0+eV9zdHJp ZGUgKyBvZmZzZXQsDQo+ICsJCQkJCSBwbGFuZS0+ZmIueV9zdHJpZGUpOw0KPiArCQkJCWRj X3dyaXRlKGh3LCByZWctPnVfc3RyaWRlICsgb2Zmc2V0LA0KPiArCQkJCQkgcGxhbmUtPmZi LnVfc3RyaWRlKTsNCj4gKwkJCQlkY193cml0ZShodywgcmVnLT52X3N0cmlkZSArIG9mZnNl dCwNCj4gKwkJCQkJIHBsYW5lLT5mYi52X3N0cmlkZSk7DQo+ICsJCQkJZGNfd3JpdGUoaHcs IHJlZy0+c2l6ZSArIG9mZnNldCwNCj4gKwkJCQkJIHBsYW5lLT5mYi53aWR0aCB8DQo+ICsJ CQkJCSAocGxhbmUtPmZiLmhlaWdodCA8PCAxNSkpOw0KPiArCQkJCWRjX3dyaXRlKGh3LCBy ZWctPndhdGVyX21hcmsgKyBvZmZzZXQsDQo+ICsJCQkJCSBwbGFuZS0+ZmIud2F0ZXJfbWFy ayk7DQo+ICsNCj4gKwkJCQlpZiAocGxhbmUtPmZiLmNsZWFyX2VuYWJsZSkNCj4gKwkJCQkJ ZGNfd3JpdGUoaHcsIHJlZy0+Y2xlYXJfdmFsdWUgKyBvZmZzZXQsDQo+ICsJCQkJCQkgcGxh bmUtPmZiLmNsZWFyX3ZhbHVlKTsNCj4gKwkJCX0NCj4gKw0KPiArCQkJaWYgKHByaW1hcnkp IHsNCj4gKwkJCQlkY19zZXRfY2xlYXIoaHcsIERDX0ZSQU1FQlVGRkVSX0NPTkZJRyArIG9m ZnNldCwNCj4gKwkJCQkJICAgICAocGxhbmUtPmZiLmZvcm1hdCA8PCAyNikgfA0KPiArCQkJ CQkgICAgIChwbGFuZS0+ZmIudXZfc3dpenpsZSA8PCAyNSkgfA0KPiArCQkJCQkgICAgIChw bGFuZS0+ZmIuc3dpenpsZSA8PCAyMykgfA0KPiArCQkJCQkgICAgIChwbGFuZS0+ZmIudGls ZV9tb2RlIDw8IDE3KSB8DQo+ICsJCQkJCSAgICAgKHBsYW5lLT5mYi55dXZfY29sb3Jfc3Bh Y2UgPDwgMTQpIHwNCj4gKwkJCQkJICAgICAocGxhbmUtPmZiLnJvdGF0aW9uIDw8IDExKSB8 DQo+ICsJCQkJCSAgICAgKHBsYW5lLT5mYi5jbGVhcl9lbmFibGUgPDwgOCksDQo+ICsJCQkJ CSAgICAgKDB4MUYgPDwgMjYpIHwNCj4gKwkJCQkJICAgICBCSVQoMjUpIHwNCj4gKwkJCQkJ ICAgICAoMHgwMyA8PCAyMykgfA0KPiArCQkJCQkgICAgICgweDFGIDw8IDE3KSB8DQo+ICsJ CQkJCSAgICAgKDB4MDcgPDwgMTQpIHwNCj4gKwkJCQkJICAgICAoMHgwNyA8PCAxMSkgfA0K PiArCQkJCQkgICAgIEJJVCg4KSk7DQo+ICsJCQkJZGNfc2V0X2NsZWFyKGh3LCBEQ19GUkFN RUJVRkZFUl9DT05GSUdfRVggKyBvZmZzZXQsDQo+ICsJCQkJCSAgICAgKHBsYW5lLT5mYi5k ZWNfZW5hYmxlIDw8IDEpIHwNCj4gKwkJCQkJICAgICAocGxhbmUtPmZiLmVuYWJsZSA8PCAx MykgfA0KPiArCQkJCQkgICAgIChwbGFuZS0+ZmIuenBvcyA8PCAxNikgfA0KPiArCQkJCQkg ICAgIChwbGFuZS0+ZmIuZGlzcGxheV9pZCA8PCAxOSksDQo+ICsJCQkJCSAgICAgQklUKDEp IHwgQklUKDEzKSB8ICgweDA3IDw8IDE2KSB8IEJJVCgxOSkpOw0KPiArCQkJfSBlbHNlIHsN Cj4gKwkJCQlkY19zZXRfY2xlYXIoaHcsIERDX09WRVJMQVlfQ09ORklHICsgb2Zmc2V0LA0K PiArCQkJCQkgICAgIChwbGFuZS0+ZmIuZGVjX2VuYWJsZSA8PCAyNykgfA0KPiArCQkJCQkg ICAgIChwbGFuZS0+ZmIuY2xlYXJfZW5hYmxlIDw8IDI1KSB8DQo+ICsJCQkJCSAgICAgKHBs YW5lLT5mYi5lbmFibGUgPDwgMjQpIHwNCj4gKwkJCQkJICAgICAocGxhbmUtPmZiLmZvcm1h dCA8PCAxNikgfA0KPiArCQkJCQkgICAgIChwbGFuZS0+ZmIudXZfc3dpenpsZSA8PCAxNSkg fA0KPiArCQkJCQkgICAgIChwbGFuZS0+ZmIuc3dpenpsZSA8PCAxMykgfA0KPiArCQkJCQkg ICAgIChwbGFuZS0+ZmIudGlsZV9tb2RlIDw8IDgpIHwNCj4gKwkJCQkJICAgICAocGxhbmUt PmZiLnl1dl9jb2xvcl9zcGFjZSA8PCA1KSB8DQo+ICsJCQkJCSAgICAgKHBsYW5lLT5mYi5y b3RhdGlvbiA8PCAyKSwNCj4gKwkJCQkJICAgICBCSVQoMjcpIHwNCj4gKwkJCQkJICAgICBC SVQoMjUpIHwNCj4gKwkJCQkJICAgICBCSVQoMjQpIHwNCj4gKwkJCQkJICAgICAoMHgxRiA8 PCAxNikgfA0KPiArCQkJCQkgICAgIEJJVCgxNSkgfA0KPiArCQkJCQkgICAgICgweDAzIDw8 IDEzKSB8DQo+ICsJCQkJCSAgICAgKDB4MUYgPDwgOCkgfA0KPiArCQkJCQkgICAgICgweDA3 IDw8IDUpIHwNCj4gKwkJCQkJICAgICAoMHgwNyA8PCAyKSk7DQo+ICsJCQkJZGNfc2V0X2Ns ZWFyKGh3LCBEQ19PVkVSTEFZX0NPTkZJR19FWCArIG9mZnNldCwNCj4gKwkJCQkJICAgICBw bGFuZS0+ZmIuenBvcyB8IChwbGFuZS0+ZmIuZGlzcGxheV9pZCA8PCAzKSwNCj4gKwkJCQkJ ICAgICAweDA3IHwgQklUKDMpKTsNCj4gKwkJCX0NCj4gKwkJCXBsYW5lLT5mYi5kaXJ0eSA9 IGZhbHNlOw0KPiArCQl9DQo+ICsNCj4gKwkJaWYgKHBsYW5lLT5zY2FsZS5kaXJ0eSkgew0K PiArCQkJaWYgKHBsYW5lLT5zY2FsZS5lbmFibGUpIHsNCj4gKwkJCQlkY193cml0ZShodywg cmVnLT5zY2FsZV9mYWN0b3JfeCArIG9mZnNldCwNCj4gKwkJCQkJIHBsYW5lLT5zY2FsZS5z Y2FsZV9mYWN0b3JfeCk7DQo+ICsJCQkJZGNfd3JpdGUoaHcsIHJlZy0+c2NhbGVfZmFjdG9y X3kgKyBvZmZzZXQsDQo+ICsJCQkJCSBwbGFuZS0+c2NhbGUuc2NhbGVfZmFjdG9yX3kpOw0K PiArCQkJCWlmIChwcmltYXJ5KQ0KPiArCQkJCQlkY19zZXRfY2xlYXIoaHcsDQo+ICsJCQkJ CQkgICAgIERDX0ZSQU1FQlVGRkVSX0NPTkZJRyArIG9mZnNldCwNCj4gKwkJCQkJCSAgICAg QklUKDIyKSwgMCk7DQo+ICsJCQkJZWxzZQ0KPiArCQkJCQlkY19zZXRfY2xlYXIoaHcsDQo+ ICsJCQkJCQkgICAgIERDX09WRVJMQVlfU0NBTEVfQ09ORklHICsgb2Zmc2V0LA0KPiArCQkJ CQkJICAgICBCSVQoOCksIDApOw0KPiArCQkJfSBlbHNlIHsNCj4gKwkJCQlpZiAocHJpbWFy eSkNCj4gKwkJCQkJZGNfc2V0X2NsZWFyKGh3LA0KPiArCQkJCQkJICAgICBEQ19GUkFNRUJV RkZFUl9DT05GSUcgKyBvZmZzZXQsDQo+ICsJCQkJCQkgICAgIDAsIEJJVCgyMikpOw0KPiAr CQkJCWVsc2UNCj4gKwkJCQkJZGNfc2V0X2NsZWFyKGh3LA0KPiArCQkJCQkJICAgICBEQ19P VkVSTEFZX1NDQUxFX0NPTkZJRyArIG9mZnNldCwNCj4gKwkJCQkJCSAgICAgMCwgQklUKDgp KTsNCj4gKwkJCX0NCj4gKwkJCXBsYW5lLT5zY2FsZS5kaXJ0eSA9IGZhbHNlOw0KPiArCQl9 DQo+ICsNCj4gKwkJaWYgKHBsYW5lLT5wb3MuZGlydHkpIHsNCj4gKwkJCWRjX3dyaXRlKGh3 LCByZWctPnRvcF9sZWZ0ICsgb2Zmc2V0LA0KPiArCQkJCSBwbGFuZS0+cG9zLnN0YXJ0X3gg fA0KPiArCQkJCSAocGxhbmUtPnBvcy5zdGFydF95IDw8IDE1KSk7DQo+ICsJCQlkY193cml0 ZShodywgcmVnLT5ib3R0b21fcmlnaHQgKyBvZmZzZXQsDQo+ICsJCQkJIHBsYW5lLT5wb3Mu ZW5kX3ggfA0KPiArCQkJCSAocGxhbmUtPnBvcy5lbmRfeSA8PCAxNSkpOw0KPiArCQkJcGxh bmUtPnBvcy5kaXJ0eSA9IGZhbHNlOw0KPiArCQl9DQo+ICsNCj4gKwkJaWYgKHBsYW5lLT5i bGVuZC5kaXJ0eSkgew0KPiArCQkJZGNfd3JpdGUoaHcsIHJlZy0+c3JjX2dsb2JhbF9jb2xv ciArIG9mZnNldCwNCj4gKwkJCQkgcGxhbmUtPmJsZW5kLmFscGhhIDw8IDI0KTsNCj4gKwkJ CWRjX3dyaXRlKGh3LCByZWctPmRzdF9nbG9iYWxfY29sb3IgKyBvZmZzZXQsDQo+ICsJCQkJ IHBsYW5lLT5ibGVuZC5hbHBoYSA8PCAyNCk7DQo+ICsJCQlzd2l0Y2ggKHBsYW5lLT5ibGVu ZC5ibGVuZF9tb2RlKSB7DQo+ICsJCQljYXNlIEJMRU5EX1BSRU1VTFRJOg0KPiArCQkJCWRj X3dyaXRlKGh3LCByZWctPmJsZW5kX2NvbmZpZyArIG9mZnNldCwgMHgzNDUwKTsNCj4gKwkJ CQlicmVhazsNCj4gKwkJCWNhc2UgQkxFTkRfQ09WRVJBR0U6DQo+ICsJCQkJZGNfd3JpdGUo aHcsIHJlZy0+YmxlbmRfY29uZmlnICsgb2Zmc2V0LCAweDM5NTApOw0KPiArCQkJCWJyZWFr Ow0KPiArCQkJY2FzZSBCTEVORF9QSVhFTF9OT05FOg0KPiArCQkJCWRjX3dyaXRlKGh3LCBy ZWctPmJsZW5kX2NvbmZpZyArIG9mZnNldCwgMHgzNTQ4KTsNCj4gKwkJCQlicmVhazsNCj4g KwkJCWRlZmF1bHQ6DQo+ICsJCQkJYnJlYWs7DQo+ICsJCQl9DQo+ICsJCQlwbGFuZS0+Ymxl bmQuZGlydHkgPSBmYWxzZTsNCj4gKwkJfQ0KPiArDQo+ICsJCWlmIChwbGFuZS0+Y29sb3Jr ZXkuZGlydHkpIHsNCj4gKwkJCWRjX3dyaXRlKGh3LCByZWctPmNvbG9yX2tleSArIG9mZnNl dCwgcGxhbmUtPmNvbG9ya2V5LmNvbG9ya2V5KTsNCj4gKwkJCWRjX3dyaXRlKGh3LCByZWct PmNvbG9yX2tleV9oaWdoICsgb2Zmc2V0LA0KPiArCQkJCSBwbGFuZS0+Y29sb3JrZXkuY29s b3JrZXlfaGlnaCk7DQo+ICsNCj4gKwkJCWlmIChwcmltYXJ5KQ0KPiArCQkJCWRjX3NldF9j bGVhcihodywgRENfRlJBTUVCVUZGRVJfQ09ORklHICsgb2Zmc2V0LA0KPiArCQkJCQkgICAg IHBsYW5lLT5jb2xvcmtleS50cmFuc3BhcmVuY3kgPDwgOSwgMHgwMyA8PCA5KTsNCj4gKwkJ CWVsc2UNCj4gKwkJCQlkY19zZXRfY2xlYXIoaHcsIERDX09WRVJMQVlfQ09ORklHICsgb2Zm c2V0LA0KPiArCQkJCQkgICAgIHBsYW5lLT5jb2xvcmtleS50cmFuc3BhcmVuY3ksIDB4MDMp Ow0KPiArDQo+ICsJCQlwbGFuZS0+Y29sb3JrZXkuZGlydHkgPSBmYWxzZTsNCj4gKwkJfQ0K PiArDQo+ICsJCWlmIChwbGFuZS0+cm9pLmRpcnR5KSB7DQo+ICsJCQlpZiAocGxhbmUtPnJv aS5lbmFibGUpIHsNCj4gKwkJCQlkY193cml0ZShodywgcmVnLT5yb2lfb3JpZ2luICsgb2Zm c2V0LA0KPiArCQkJCQkgcGxhbmUtPnJvaS54IHwgKHBsYW5lLT5yb2kueSA8PCAxNikpOw0K PiArCQkJCWRjX3dyaXRlKGh3LCByZWctPnJvaV9zaXplICsgb2Zmc2V0LA0KPiArCQkJCQkg cGxhbmUtPnJvaS53aWR0aCB8IChwbGFuZS0+cm9pLmhlaWdodCA8PCAxNikpOw0KPiArCQkJ CWlmIChwcmltYXJ5KQ0KPiArCQkJCQlkY19zZXRfY2xlYXIoaHcsIERDX0ZSQU1FQlVGRkVS X0NPTkZJR19FWCArIG9mZnNldCwNCj4gKwkJCQkJCSAgICAgQklUKDApLCAwKTsNCj4gKwkJ CQllbHNlDQo+ICsJCQkJCWRjX3NldF9jbGVhcihodywgRENfT1ZFUkxBWV9DT05GSUcgKyBv ZmZzZXQsDQo+ICsJCQkJCQkgICAgIEJJVCgyMiksIDApOw0KPiArCQkJfSBlbHNlIHsNCj4g KwkJCQlpZiAocHJpbWFyeSkNCj4gKwkJCQkJZGNfc2V0X2NsZWFyKGh3LCBEQ19GUkFNRUJV RkZFUl9DT05GSUdfRVggKyBvZmZzZXQsDQo+ICsJCQkJCQkgICAgIDAsIEJJVCgwKSk7DQo+ ICsJCQkJZWxzZQ0KPiArCQkJCQlkY19zZXRfY2xlYXIoaHcsIERDX09WRVJMQVlfQ09ORklH ICsgb2Zmc2V0LA0KPiArCQkJCQkJICAgICAwLCBCSVQoMjIpKTsNCj4gKwkJCX0NCj4gKwkJ CXBsYW5lLT5yb2kuZGlydHkgPSBmYWxzZTsNCj4gKwkJfQ0KPiArCX0NCj4gK30NCj4gKw0K PiArc3RhdGljIHZvaWQgcGxhbmVfZXhfY29tbWl0KHN0cnVjdCBkY19odyAqaHcpDQo+ICt7 DQo+ICsJc3RydWN0IGRjX2h3X3BsYW5lICpwbGFuZTsNCj4gKwljb25zdCBzdHJ1Y3QgZGNf aHdfcGxhbmVfcmVnICpyZWc7DQo+ICsJYm9vbCBwcmltYXJ5ID0gZmFsc2U7DQo+ICsJdTgg aWQsIGxheWVyX251bSA9IGh3LT5pbmZvLT5sYXllcl9udW07DQo+ICsJdTMyIGksIG9mZnNl dDsNCj4gKw0KPiArCWZvciAoaSA9IDA7IGkgPCBsYXllcl9udW07IGkrKykgew0KPiArCQlw bGFuZSA9ICZody0+cGxhbmVbaV07DQo+ICsJCWlkID0gaHctPmluZm8tPnBsYW5lc1tpXS5p ZDsNCj4gKwkJb2Zmc2V0ID0gZ2V0X2FkZHJfb2Zmc2V0KGlkKTsNCj4gKwkJaWYgKGlkID09 IFBSSU1BUllfUExBTkVfMCB8fCBpZCA9PSBQUklNQVJZX1BMQU5FXzEpIHsNCj4gKwkJCXJl ZyA9ICZkY19wbGFuZV9yZWdbMF07DQo+ICsJCQlwcmltYXJ5ID0gdHJ1ZTsNCj4gKwkJfSBl bHNlIHsNCj4gKwkJCXJlZyA9ICZkY19wbGFuZV9yZWdbMV07DQo+ICsJCQlwcmltYXJ5ID0g ZmFsc2U7DQo+ICsJCX0NCj4gKw0KPiArCQlpZiAocGxhbmUtPmZiLmRpcnR5KSB7DQo+ICsJ CQlpZiAoaXNfcmdiKHBsYW5lLT5mYi5mb3JtYXQpKSB7DQo+ICsJCQkJaWYgKHByaW1hcnkp DQo+ICsJCQkJCWRjX3NldF9jbGVhcihodywNCj4gKwkJCQkJCSAgICAgRENfRlJBTUVCVUZG RVJfQ09ORklHX0VYICsgb2Zmc2V0LA0KPiArCQkJCQkJICAgICBCSVQoNiksIEJJVCg4KSk7 DQo+ICsJCQkJZWxzZQ0KPiArCQkJCQlkY19zZXRfY2xlYXIoaHcsDQo+ICsJCQkJCQkgICAg IERDX09WRVJMQVlfQ09ORklHICsgb2Zmc2V0LA0KPiArCQkJCQkJICAgICBCSVQoMjkpLCBC SVQoMzApKTsNCj4gKwkJCX0gZWxzZSB7DQo+ICsJCQkJaWYgKHByaW1hcnkpDQo+ICsJCQkJ CWRjX3NldF9jbGVhcihodywNCj4gKwkJCQkJCSAgICAgRENfRlJBTUVCVUZGRVJfQ09ORklH X0VYICsgb2Zmc2V0LA0KPiArCQkJCQkJICAgICBCSVQoOCksIEJJVCg2KSk7DQo+ICsJCQkJ ZWxzZQ0KPiArCQkJCQlkY19zZXRfY2xlYXIoaHcsDQo+ICsJCQkJCQkgICAgIERDX09WRVJM QVlfQ09ORklHICsgb2Zmc2V0LA0KPiArCQkJCQkJICAgICBCSVQoMzApLCBCSVQoMjkpKTsN Cj4gKwkJCQlzd2l0Y2ggKHBsYW5lLT5mYi55dXZfY29sb3Jfc3BhY2UpIHsNCj4gKwkJCQlj YXNlIENPTE9SX1NQQUNFXzYwMToNCj4gKwkJCQkJbG9hZF95dXZfdG9fcmdiKGh3LCByZWcs IG9mZnNldCwgWVVWNjAxXzJSR0IpOw0KPiArCQkJCQlicmVhazsNCj4gKwkJCQljYXNlIENP TE9SX1NQQUNFXzcwOToNCj4gKwkJCQkJbG9hZF95dXZfdG9fcmdiKGh3LCByZWcsIG9mZnNl dCwgWVVWNzA5XzJSR0IpOw0KPiArCQkJCQlicmVhazsNCj4gKwkJCQljYXNlIENPTE9SX1NQ QUNFXzIwMjA6DQo+ICsJCQkJCWxvYWRfeXV2X3RvX3JnYihodywgcmVnLCBvZmZzZXQsIFlV VjIwMjBfMlJHQik7DQo+ICsJCQkJCWJyZWFrOw0KPiArCQkJCWRlZmF1bHQ6DQo+ICsJCQkJ CWJyZWFrOw0KPiArCQkJCX0NCj4gKwkJCX0NCj4gKwkJfQ0KPiArCQlpZiAocGxhbmUtPmRl Z2FtbWEuZGlydHkpIHsNCj4gKwkJCXN3aXRjaCAocGxhbmUtPmRlZ2FtbWEubW9kZSkgew0K PiArCQkJY2FzZSBWU19ERUdBTU1BX0RJU0FCTEU6DQo+ICsJCQkJaWYgKHByaW1hcnkpDQo+ ICsJCQkJCWRjX3NldF9jbGVhcihodywNCj4gKwkJCQkJCSAgICAgRENfRlJBTUVCVUZGRVJf Q09ORklHX0VYICsgb2Zmc2V0LA0KPiArCQkJCQkJICAgICAwLCBCSVQoNSkpOw0KPiArCQkJ CWVsc2UNCj4gKwkJCQkJZGNfc2V0X2NsZWFyKGh3LA0KPiArCQkJCQkJICAgICBEQ19PVkVS TEFZX0NPTkZJRyArIG9mZnNldCwNCj4gKwkJCQkJCSAgICAgMCwgQklUKDI4KSk7DQo+ICsJ CQkJYnJlYWs7DQo+ICsJCQljYXNlIFZTX0RFR0FNTUFfQlQ3MDk6DQo+ICsJCQkJbG9hZF9k ZWdhbW1hX3RhYmxlKGh3LCByZWcsIG9mZnNldCwgREVHQU1NQV83MDkpOw0KPiArCQkJCWlm IChwcmltYXJ5KQ0KPiArCQkJCQlkY19zZXRfY2xlYXIoaHcsDQo+ICsJCQkJCQkgICAgIERD X0ZSQU1FQlVGRkVSX0NPTkZJR19FWCArIG9mZnNldCwNCj4gKwkJCQkJCSAgICAgQklUKDUp LCAwKTsNCj4gKwkJCQllbHNlDQo+ICsJCQkJCWRjX3NldF9jbGVhcihodywNCj4gKwkJCQkJ CSAgICAgRENfT1ZFUkxBWV9DT05GSUcgKyBvZmZzZXQsDQo+ICsJCQkJCQkgICAgIEJJVCgy OCksIDApOw0KPiArCQkJCWJyZWFrOw0KPiArCQkJY2FzZSBWU19ERUdBTU1BX0JUMjAyMDoN Cj4gKwkJCQlsb2FkX2RlZ2FtbWFfdGFibGUoaHcsIHJlZywgb2Zmc2V0LCBERUdBTU1BXzIw MjApOw0KPiArCQkJCWlmIChwcmltYXJ5KQ0KPiArCQkJCQlkY19zZXRfY2xlYXIoaHcsDQo+ ICsJCQkJCQkgICAgIERDX0ZSQU1FQlVGRkVSX0NPTkZJR19FWCArIG9mZnNldCwNCj4gKwkJ CQkJCSAgICAgQklUKDUpLCAwKTsNCj4gKwkJCQllbHNlDQo+ICsJCQkJCWRjX3NldF9jbGVh cihodywNCj4gKwkJCQkJCSAgICAgRENfT1ZFUkxBWV9DT05GSUcgKyBvZmZzZXQsDQo+ICsJ CQkJCQkgICAgIEJJVCgyOCksIDApOw0KPiArCQkJCWJyZWFrOw0KPiArCQkJZGVmYXVsdDoN Cj4gKwkJCQlicmVhazsNCj4gKwkJCX0NCj4gKwkJCXBsYW5lLT5kZWdhbW1hLmRpcnR5ID0g ZmFsc2U7DQo+ICsJCX0NCj4gKwl9DQo+ICsJcGxhbmVfY29tbWl0KGh3KTsNCj4gK30NCj4g Kw0KPiArc3RhdGljIHZvaWQgc2V0dXBfZGlzcGxheShzdHJ1Y3QgZGNfaHcgKmh3LCBzdHJ1 Y3QgZGNfaHdfZGlzcGxheSAqZGlzcGxheSkNCj4gK3sNCj4gKwl1OCBpZCA9IGRpc3BsYXkt PmlkOw0KPiArCXUzMiBkcGlfY2ZnLCBvZmZzZXQgPSBpZCA8PCAyOw0KPiArDQo+ICsJaWYg KGh3LT5kaXNwbGF5W2lkXS5lbmFibGUpIHsNCj4gKwkJc3dpdGNoIChkaXNwbGF5LT5idXNf Zm9ybWF0KSB7DQo+ICsJCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0I1NjVfMVgxNjoNCj4gKwkJ CWRwaV9jZmcgPSAwOw0KPiArCQkJYnJlYWs7DQo+ICsJCWNhc2UgTUVESUFfQlVTX0ZNVF9S R0I2NjZfMVgxODoNCj4gKwkJCWRwaV9jZmcgPSAzOw0KPiArCQkJYnJlYWs7DQo+ICsJCWNh c2UgTUVESUFfQlVTX0ZNVF9SR0I2NjZfMVgyNF9DUEFESEk6DQo+ICsJCQlkcGlfY2ZnID0g NDsNCj4gKwkJCWJyZWFrOw0KPiArCQljYXNlIE1FRElBX0JVU19GTVRfUkdCODg4XzFYMjQ6 DQo+ICsJCQlkcGlfY2ZnID0gNTsNCj4gKwkJCWJyZWFrOw0KPiArCQljYXNlIE1FRElBX0JV U19GTVRfUkdCMTAxMDEwXzFYMzA6DQo+ICsJCQlkcGlfY2ZnID0gNjsNCj4gKwkJCWJyZWFr Ow0KPiArCQlkZWZhdWx0Og0KPiArCQkJZHBpX2NmZyA9IDU7DQo+ICsJCQlicmVhazsNCj4g KwkJfQ0KPiArCQlkY193cml0ZShodywgRENfRElTUExBWV9EUElfQ09ORklHICsgb2Zmc2V0 LCBkcGlfY2ZnKTsNCj4gKw0KPiArCQlpZiAoaWQgPT0gMCkNCj4gKwkJCWRjX3NldF9jbGVh cihodywgRENfRElTUExBWV9QQU5FTF9TVEFSVCwgMCwgQklUKDApIHwgQklUKDIpKTsNCj4g KwkJZWxzZQ0KPiArCQkJZGNfc2V0X2NsZWFyKGh3LCBEQ19ESVNQTEFZX1BBTkVMX1NUQVJU LCAwLCBCSVQoMSkgfCBCSVQoMikpOw0KPiArDQo+ICsJCWRjX3dyaXRlKGh3LCBEQ19ESVNQ TEFZX0ggKyBvZmZzZXQsIGh3LT5kaXNwbGF5W2lkXS5oX2FjdGl2ZSB8DQo+ICsJCQkgKGh3 LT5kaXNwbGF5W2lkXS5oX3RvdGFsIDw8IDE2KSk7DQo+ICsJCWRjX3dyaXRlKGh3LCBEQ19E SVNQTEFZX0hfU1lOQyArIG9mZnNldCwNCj4gKwkJCSBody0+ZGlzcGxheVtpZF0uaF9zeW5j X3N0YXJ0IHwNCj4gKwkJCSAoaHctPmRpc3BsYXlbaWRdLmhfc3luY19lbmQgPDwgMTUpIHwN Cj4gKwkJCSAoaHctPmRpc3BsYXlbaWRdLmhfc3luY19wb2xhcml0eSA/IDAgOiBCSVQoMzEp KSB8DQo+ICsJCQkgQklUKDMwKSk7DQo+ICsJCWRjX3dyaXRlKGh3LCBEQ19ESVNQTEFZX1Yg KyBvZmZzZXQsIGh3LT5kaXNwbGF5W2lkXS52X2FjdGl2ZSB8DQo+ICsJCQkJKGh3LT5kaXNw bGF5W2lkXS52X3RvdGFsIDw8IDE2KSk7DQo+ICsJCWRjX3dyaXRlKGh3LCBEQ19ESVNQTEFZ X1ZfU1lOQyArIG9mZnNldCwNCj4gKwkJCSBody0+ZGlzcGxheVtpZF0udl9zeW5jX3N0YXJ0 IHwNCj4gKwkJCSAoaHctPmRpc3BsYXlbaWRdLnZfc3luY19lbmQgPDwgMTUpIHwNCj4gKwkJ CSAoaHctPmRpc3BsYXlbaWRdLnZfc3luY19wb2xhcml0eSA/IDAgOiBCSVQoMzEpKSB8DQo+ ICsJCQkgQklUKDMwKSk7DQo+ICsNCj4gKwkJaWYgKGh3LT5pbmZvLT5waXBlX3N5bmMpIHsN Cj4gKwkJCXN3aXRjaCAoZGlzcGxheS0+c3luY19tb2RlKSB7DQo+ICsJCQljYXNlIFZTX1NJ TkdMRV9EQzoNCj4gKwkJCQlkY19zZXRfY2xlYXIoaHcsIERDX0ZSQU1FQlVGRkVSX0NPTkZJ R19FWCwNCj4gKwkJCQkJICAgICAwLCBCSVQoMykgfCBCSVQoNCkpOw0KPiArCQkJCWJyZWFr Ow0KPiArCQkJY2FzZSBWU19NVUxUSV9EQ19QUklNQVJZOg0KPiArCQkJCWRjX3NldF9jbGVh cihodywgRENfRlJBTUVCVUZGRVJfQ09ORklHX0VYLA0KPiArCQkJCQkgICAgIEJJVCgzKSB8 IEJJVCg0KSwgMCk7DQo+ICsJCQkJYnJlYWs7DQo+ICsJCQljYXNlIFZTX01VTFRJX0RDX1NF Q09OREFSWToNCj4gKwkJCQlkY19zZXRfY2xlYXIoaHcsIERDX0ZSQU1FQlVGRkVSX0NPTkZJ R19FWCwNCj4gKwkJCQkJICAgICBCSVQoMyksIEJJVCg0KSk7DQo+ICsJCQkJYnJlYWs7DQo+ ICsJCQlkZWZhdWx0Og0KPiArCQkJCWJyZWFrOw0KPiArCQkJfQ0KPiArCQl9DQo+ICsNCj4g KwkJaWYgKGh3LT5pbmZvLT5iYWNrZ3JvdW5kKQ0KPiArCQkJZGNfd3JpdGUoaHcsIERDX0ZS QU1FQlVGRkVSX0JHX0NPTE9SICsgb2Zmc2V0LA0KPiArCQkJCSBody0+ZGlzcGxheVtpZF0u YmdfY29sb3IpOw0KPiArDQo+ICsJCWlmIChody0+ZGlzcGxheVtpZF0uZGl0aGVyX2VuYWJs ZSkgew0KPiArCQkJZGNfd3JpdGUoaHcsIERDX0RJU1BMQVlfRElUSEVSX1RBQkxFX0xPVyAr IG9mZnNldCwNCj4gKwkJCQkgRENfRElTUExBWV9ESVRIRVJUQUJMRV9MT1cpOw0KPiArCQkJ ZGNfd3JpdGUoaHcsIERDX0RJU1BMQVlfRElUSEVSX1RBQkxFX0hJR0ggKyBvZmZzZXQsDQo+ ICsJCQkJIERDX0RJU1BMQVlfRElUSEVSVEFCTEVfSElHSCk7DQo+ICsJCQlkY193cml0ZSho dywgRENfRElTUExBWV9ESVRIRVJfQ09ORklHICsgb2Zmc2V0LCBCSVQoMzEpKTsNCj4gKwkJ fSBlbHNlIHsNCj4gKwkJCWRjX3dyaXRlKGh3LCBEQ19ESVNQTEFZX0RJVEhFUl9DT05GSUcg KyBvZmZzZXQsIDApOw0KPiArCQl9DQo+ICsNCj4gKwkJZGNfc2V0X2NsZWFyKGh3LCBEQ19E SVNQTEFZX1BBTkVMX0NPTkZJRyArIG9mZnNldCwgQklUKDEyKSwgMCk7DQo+ICsJCWlmICho dy0+ZGlzcGxheVtpZF0uc3luY19lbmFibGUpDQo+ICsJCQlkY19zZXRfY2xlYXIoaHcsIERD X0RJU1BMQVlfUEFORUxfU1RBUlQsIEJJVCgyKSB8IEJJVCgzKSwgMCk7DQo+ICsJCWVsc2Ug aWYgKGlkID09IDApDQo+ICsJCQlkY19zZXRfY2xlYXIoaHcsIERDX0RJU1BMQVlfUEFORUxf U1RBUlQsIEJJVCgwKSwgQklUKDMpKTsNCj4gKwkJZWxzZQ0KPiArCQkJZGNfc2V0X2NsZWFy KGh3LCBEQ19ESVNQTEFZX1BBTkVMX1NUQVJULCBCSVQoMSksIEJJVCgzKSk7DQo+ICsJfSBl bHNlIHsNCj4gKwkJZGNfc2V0X2NsZWFyKGh3LCBEQ19ESVNQTEFZX1BBTkVMX0NPTkZJRyAr IG9mZnNldCwgMCwgQklUKDEyKSk7DQo+ICsJCWlmIChpZCA9PSAwKQ0KPiArCQkJZGNfc2V0 X2NsZWFyKGh3LCBEQ19ESVNQTEFZX1BBTkVMX1NUQVJULCAwLCBCSVQoMCkgfCBCSVQoMikp Ow0KPiArCQllbHNlDQo+ICsJCQlkY19zZXRfY2xlYXIoaHcsIERDX0RJU1BMQVlfUEFORUxf U1RBUlQsIDAsIEJJVCgxKSB8IEJJVCgyKSk7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgdm9pZCBzZXR1cF9kaXNwbGF5X2V4KHN0cnVjdCBkY19odyAqaHcsIHN0cnVjdCBkY19o d19kaXNwbGF5ICpkaXNwbGF5KQ0KPiArew0KPiArCXU4IGlkID0gZGlzcGxheS0+aWQ7DQo+ ICsJdTMyIGRwX2NmZywgb2Zmc2V0ID0gaWQgPDwgMjsNCj4gKwlib29sIGlzX3l1diA9IGZh bHNlOw0KPiArDQo+ICsJaWYgKGh3LT5kaXNwbGF5W2lkXS5lbmFibGUgJiYgaHctPm91dFtp ZF0gPT0gT1VUX0RQKSB7DQo+ICsJCXN3aXRjaCAoZGlzcGxheS0+YnVzX2Zvcm1hdCkgew0K PiArCQljYXNlIE1FRElBX0JVU19GTVRfUkdCNTY1XzFYMTY6DQo+ICsJCQlkcF9jZmcgPSAw Ow0KPiArCQkJYnJlYWs7DQo+ICsJCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0I2NjZfMVgxODoN Cj4gKwkJCWRwX2NmZyA9IDE7DQo+ICsJCQlicmVhazsNCj4gKwkJY2FzZSBNRURJQV9CVVNf Rk1UX1JHQjg4OF8xWDI0Og0KPiArCQkJZHBfY2ZnID0gMjsNCj4gKwkJCWJyZWFrOw0KPiAr CQljYXNlIE1FRElBX0JVU19GTVRfUkdCMTAxMDEwXzFYMzA6DQo+ICsJCQlkcF9jZmcgPSAz Ow0KPiArCQkJYnJlYWs7DQo+ICsJCWNhc2UgTUVESUFfQlVTX0ZNVF9VWVZZOF8xWDE2Og0K PiArCQkJZHBfY2ZnID0gMiA8PCA0Ow0KPiArCQkJaXNfeXV2ID0gdHJ1ZTsNCj4gKwkJCWJy ZWFrOw0KPiArCQljYXNlIE1FRElBX0JVU19GTVRfWVVWOF8xWDI0Og0KPiArCQkJZHBfY2Zn ID0gNCA8PCA0Ow0KPiArCQkJaXNfeXV2ID0gdHJ1ZTsNCj4gKwkJCWJyZWFrOw0KPiArCQlj YXNlIE1FRElBX0JVU19GTVRfVVlWWTEwXzFYMjA6DQo+ICsJCQlkcF9jZmcgPSA4IDw8IDQ7 DQo+ICsJCQlpc195dXYgPSB0cnVlOw0KPiArCQkJYnJlYWs7DQo+ICsJCWNhc2UgTUVESUFf QlVTX0ZNVF9ZVVYxMF8xWDMwOg0KPiArCQkJZHBfY2ZnID0gMTAgPDwgNDsNCj4gKwkJCWlz X3l1diA9IHRydWU7DQo+ICsJCQlicmVhazsNCj4gKwkJY2FzZSBNRURJQV9CVVNfRk1UX1VZ WVZZWThfMF81WDI0Og0KPiArCQkJZHBfY2ZnID0gMTIgPDwgNDsNCj4gKwkJCWlzX3l1diA9 IHRydWU7DQo+ICsJCQlicmVhazsNCj4gKwkJY2FzZSBNRURJQV9CVVNfRk1UX1VZWVZZWTEw XzBfNVgzMDoNCj4gKwkJCWRwX2NmZyA9IDEzIDw8IDQ7DQo+ICsJCQlpc195dXYgPSB0cnVl Ow0KPiArCQkJYnJlYWs7DQo+ICsJCWRlZmF1bHQ6DQo+ICsJCQlkcF9jZmcgPSAyOw0KPiAr CQkJYnJlYWs7DQo+ICsJCX0NCj4gKwkJaWYgKGlzX3l1dikNCj4gKwkJCWRjX3NldF9jbGVh cihodywgRENfRElTUExBWV9QQU5FTF9DT05GSUcgKyBvZmZzZXQsIEJJVCgxNiksIDApOw0K PiArCQllbHNlDQo+ICsJCQlkY19zZXRfY2xlYXIoaHcsIERDX0RJU1BMQVlfUEFORUxfQ09O RklHICsgb2Zmc2V0LCAwLCBCSVQoMTYpKTsNCj4gKwkJZGNfd3JpdGUoaHcsIERDX0RJU1BM QVlfRFBfQ09ORklHICsgb2Zmc2V0LCBkcF9jZmcgfCBCSVQoMykpOw0KPiArCX0NCj4gKw0K PiArCWlmIChody0+b3V0W2lkXSA9PSBPVVRfRFBJKQ0KPiArCQlkY19zZXRfY2xlYXIoaHcs IERDX0RJU1BMQVlfRFBfQ09ORklHICsgb2Zmc2V0LCAwLCBCSVQoMykpOw0KPiArDQo+ICsJ c2V0dXBfZGlzcGxheShodywgZGlzcGxheSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZGNfaHdfZnVuY3MgaHdfZnVuYyA9IHsNCj4gKwkuZ2FtbWEgPSAmZ2FtbWFf ZXhfY29tbWl0LA0KPiArCS5wbGFuZSA9ICZwbGFuZV9leF9jb21taXQsDQo+ICsJLmRpc3Bs YXkgPSBzZXR1cF9kaXNwbGF5X2V4LA0KPiArfTsNCj4gKw0KPiArdm9pZCBkY19od19jb21t aXQoc3RydWN0IGRjX2h3ICpodykNCj4gK3sNCj4gKwl1MzIgaSwgb2Zmc2V0ID0gMDsNCj4g Kwl1OCBwbGFuZV9udW0gPSBody0+aW5mby0+cGxhbmVfbnVtOw0KPiArCXU4IGxheWVyX251 bSA9IGh3LT5pbmZvLT5sYXllcl9udW07DQo+ICsJdTggY3Vyc29yX251bSA9IHBsYW5lX251 bSAtIGxheWVyX251bTsNCj4gKw0KPiArCWh3LT5mdW5jLT5nYW1tYShodyk7DQo+ICsJaHct PmZ1bmMtPnBsYW5lKGh3KTsNCj4gKw0KPiArCWZvciAoaSA9IDA7IGkgPCBjdXJzb3JfbnVt OyBpKyspIHsNCj4gKwkJaWYgKGh3LT5jdXJzb3JbaV0uZGlydHkpIHsNCj4gKwkJCW9mZnNl dCA9IGh3LT5jdXJzb3JbaV0uZGlzcGxheV9pZCA/IERDX0NVUlNPUl9PRkZTRVQgOiAwOw0K PiArCQkJaWYgKGh3LT5jdXJzb3JbaV0uZW5hYmxlKSB7DQo+ICsJCQkJZGNfd3JpdGUoaHcs IERDX0NVUlNPUl9BRERSRVNTICsgb2Zmc2V0LA0KPiArCQkJCQkgaHctPmN1cnNvcltpXS5h ZGRyZXNzKTsNCj4gKwkJCQlkY193cml0ZShodywgRENfQ1VSU09SX0xPQ0FUSU9OICsgb2Zm c2V0LCBody0+Y3Vyc29yW2ldLnggfA0KPiArCQkJCQkgKGh3LT5jdXJzb3JbaV0ueSA8PCAx NikpOw0KPiArCQkJCWRjX3NldF9jbGVhcihodywgRENfQ1VSU09SX0NPTkZJRyArIG9mZnNl dCwNCj4gKwkJCQkJICAgICAoaHctPmN1cnNvcltpXS5ob3RfeCA8PCAxNikgfA0KPiArCQkJ CQkgICAgIChody0+Y3Vyc29yW2ldLmhvdF95IDw8IDgpIHwNCj4gKwkJCQkJICAgICAoaHct PmN1cnNvcltpXS5zaXplIDw8IDUpIHwNCj4gKwkJCQkJICAgICBCSVQoMykgfCBCSVQoMikg fCAweDAyLA0KPiArCQkJCQkgICAgICgweEZGIDw8IDE2KSB8DQo+ICsJCQkJCSAgICAgKDB4 RkYgPDwgOCkgfA0KPiArCQkJCQkgICAgICgweDA3IDw8IDUpIHwgMHgxRik7DQo+ICsJCQl9 IGVsc2Ugew0KPiArCQkJCWRjX3NldF9jbGVhcihodywgRENfQ1VSU09SX0NPTkZJRyArIG9m ZnNldCwgQklUKDMpLCAweDAzKTsNCj4gKwkJCX0NCj4gKwkJCWh3LT5jdXJzb3JbaV0uZGly dHkgPSBmYWxzZTsNCj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCWlmIChody0+cW9zLmRpcnR5 KSB7DQo+ICsJCWRjX3NldF9jbGVhcihodywgRENfUU9TX0NPTkZJRywgKGh3LT5xb3MuaGln aF92YWx1ZSA8PCA0KSB8DQo+ICsJCQkJCSBody0+cW9zLmxvd192YWx1ZSwgMHhGRik7DQo+ ICsJCWh3LT5xb3MuZGlydHkgPSBmYWxzZTsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19kY19ody5oIGIvZHJpdmVy cy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2RjX2h3LmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gaW5kZXggMDAwMDAwMDAwLi44MWU1MjJhYjcNCj4gLS0tIC9kZXYvbnVsbA0KPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZGNfaHcuaA0KPiBAQCAtMCww ICsxLDQ5NiBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8N Cj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjMgVmVyaVNpbGljb24gSG9sZGluZ3Mg Q28uLCBMdGQuDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfX1ZTX0RDX0hXX0hfXw0KPiAr I2RlZmluZSBfX1ZTX0RDX0hXX0hfXw0KPiArDQo+ICsjaW5jbHVkZSA8bGludXgvdmVyc2lv bi5oPg0KPiArDQo+ICsjZGVmaW5lIEFRX0lOVFJfQUNLTk9XTEVER0UJCQkJMHgwMDEwDQo+ ICsjZGVmaW5lIEFRX0lOVFJfRU5CTAkJCQkJMHgwMDE0DQo+ICsjZGVmaW5lIERDX0hXX1JF VklTSU9OCQkJCQkweDAwMjQNCj4gKyNkZWZpbmUgRENfSFdfQ0hJUF9DSUQJCQkJCTB4MDAz MA0KPiArDQo+ICsjZGVmaW5lIERDX1JFR19CQVNFCQkJCQkJMHgwODAwDQo+ICsjZGVmaW5l IERDX1JFR19SQU5HRQkJCQkJMHgyMDAwDQo+ICsjZGVmaW5lIERDX1NFQ19SRUdfT0ZGU0VU CQkJCTB4MTAwMDAwDQo+ICsNCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfQ09ORklHCQkJ MHgxNTE4DQo+ICsjZGVmaW5lIERDX0ZSQU1FQlVGRkVSX0NPTkZJR19FWAkJMHgxQ0MwDQo+ ICsjZGVmaW5lIERDX0ZSQU1FQlVGRkVSX1NDQUxFX0NPTkZJRwkJMHgxNTIwDQo+ICsjZGVm aW5lIERDX0ZSQU1FQlVGRkVSX1RPUF9MRUZUCQkJMHgyNEQ4DQo+ICsjZGVmaW5lIERDX0ZS QU1FQlVGRkVSX0JPVFRPTV9SSUdIVAkJMHgyNEUwDQo+ICsjZGVmaW5lIERDX0ZSQU1FQlVG RkVSX0FERFJFU1MJCQkweDE0MDANCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfVV9BRERS RVNTCQkweDE1MzANCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfVl9BRERSRVNTCQkweDE1 MzgNCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfU1RSSURFCQkJMHgxNDA4DQo+ICsjZGVm aW5lIERDX0ZSQU1FQlVGRkVSX1VfU1RSSURFCQkJMHgxODAwDQo+ICsjZGVmaW5lIERDX0ZS QU1FQlVGRkVSX1ZfU1RSSURFCQkJMHgxODA4DQo+ICsjZGVmaW5lIERDX0ZSQU1FQlVGRkVS X1NJWkUJCQkJMHgxODEwDQo+ICsjZGVmaW5lIERDX0ZSQU1FQlVGRkVSX1NDQUxFX0ZBQ1RP Ul9YCQkweDE4MjgNCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfU0NBTEVfRkFDVE9SX1kJ CTB4MTgzMA0KPiArI2RlZmluZSBEQ19GUkFNRUJVRkZFUl9IX0ZJTFRFUl9DT0VGX0lOREVY CTB4MTgzOA0KPiArI2RlZmluZSBEQ19GUkFNRUJVRkZFUl9IX0ZJTFRFUl9DT0VGX0RBVEEJ MHgxQTAwDQo+ICsjZGVmaW5lIERDX0ZSQU1FQlVGRkVSX1ZfRklMVEVSX0NPRUZfSU5ERVgJ MHgxQTA4DQo+ICsjZGVmaW5lIERDX0ZSQU1FQlVGRkVSX1ZfRklMVEVSX0NPRUZfREFUQQkw eDFBMTANCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfSU5JVF9PRkZTRVQJCQkweDFBMjAN Cj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfQ09MT1JfS0VZCQkJMHgxNTA4DQo+ICsjZGVm aW5lIERDX0ZSQU1FQlVGRkVSX0NPTE9SX0tFWV9ISUdICQkweDE1MTANCj4gKyNkZWZpbmUg RENfRlJBTUVCVUZGRVJfQ0xFQVJfVkFMVUUJCQkweDFBMTgNCj4gKyNkZWZpbmUgRENfRlJB TUVCVUZGRVJfQ09MT1JfVEFCTEVfSU5ERVgJMHgxODE4DQo+ICsjZGVmaW5lIERDX0ZSQU1F QlVGRkVSX0NPTE9SX1RBQkxFX0RBVEEJCTB4MTgyMA0KPiArI2RlZmluZSBEQ19GUkFNRUJV RkZFUl9CR19DT0xPUgkJCQkweDE1MjgNCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfUk9J X09SSUdJTgkJCTB4MUNCMA0KPiArI2RlZmluZSBEQ19GUkFNRUJVRkZFUl9ST0lfU0laRQkJ CQkweDFDQjgNCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfV0FURVJfTUFSSwkJCTB4MUNF OA0KPiArI2RlZmluZSBEQ19GUkFNRUJVRkZFUl9ERUdBTU1BX0lOREVYCQkweDFEODgNCj4g KyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfREVHQU1NQV9EQVRBCQkJMHgxRDkwDQo+ICsjZGVm aW5lIERDX0ZSQU1FQlVGRkVSX0RFR0FNTUFfRVhfREFUQQkJMHgxRDk4DQo+ICsjZGVmaW5l IERDX0ZSQU1FQlVGRkVSX1lVVlRPUkdCX0NPRUYwCQkweDFEQTANCj4gKyNkZWZpbmUgRENf RlJBTUVCVUZGRVJfWVVWVE9SR0JfQ09FRjEJCTB4MURBOA0KPiArI2RlZmluZSBEQ19GUkFN RUJVRkZFUl9ZVVZUT1JHQl9DT0VGMgkJMHgxREIwDQo+ICsjZGVmaW5lIERDX0ZSQU1FQlVG RkVSX1lVVlRPUkdCX0NPRUYzCQkweDFEQjgNCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJf WVVWVE9SR0JfQ09FRjQJCTB4MUUwMA0KPiArI2RlZmluZSBEQ19GUkFNRUJVRkZFUl9ZVVZU T1JHQl9DT0VGRDAJCTB4MUUwOA0KPiArI2RlZmluZSBEQ19GUkFNRUJVRkZFUl9ZVVZUT1JH Ql9DT0VGRDEJCTB4MUUxMA0KPiArI2RlZmluZSBEQ19GUkFNRUJVRkZFUl9ZVVZUT1JHQl9D T0VGRDIJCTB4MUUxOA0KPiArI2RlZmluZSBEQ19GUkFNRUJVRkZFUl9ZX0NMQU1QX0JPVU5E CQkweDFFODgNCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfVVZfQ0xBTVBfQk9VTkQJCTB4 MUU5MA0KPiArI2RlZmluZSBEQ19GUkFNRUJVRkZFUl9SR0JUT1JHQl9DT0VGMAkJMHgxRTIw DQo+ICsjZGVmaW5lIERDX0ZSQU1FQlVGRkVSX1JHQlRPUkdCX0NPRUYxCQkweDFFMjgNCj4g KyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfUkdCVE9SR0JfQ09FRjIJCTB4MUUzMA0KPiArI2Rl ZmluZSBEQ19GUkFNRUJVRkZFUl9SR0JUT1JHQl9DT0VGMwkJMHgxRTM4DQo+ICsjZGVmaW5l IERDX0ZSQU1FQlVGRkVSX1JHQlRPUkdCX0NPRUY0CQkweDFFNDANCj4gKyNkZWZpbmUgRENf RlJBTUVCVUZGRVJfQkxFTkRfQ09ORklHCQkJMHgyNTEwDQo+ICsjZGVmaW5lIERDX0ZSQU1F QlVGRkVSX1NSQ19HTE9CQUxfQ09MT1IJCTB4MjUwMA0KPiArI2RlZmluZSBEQ19GUkFNRUJV RkZFUl9EU1RfR0xPQkFMX0NPTE9SCQkweDI1MDgNCj4gKw0KPiArI2RlZmluZSBEQ19PVkVS TEFZX0NPTkZJRwkJCQkJMHgxNTQwDQo+ICsjZGVmaW5lIERDX09WRVJMQVlfQ09ORklHX0VY CQkJCTB4MjU0MA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX1NDQUxFX0NPTkZJRwkJCQkweDFD MDANCj4gKyNkZWZpbmUgRENfT1ZFUkxBWV9CTEVORF9DT05GSUcJCQkJMHgxNTgwDQo+ICsj ZGVmaW5lIERDX09WRVJMQVlfVE9QX0xFRlQJCQkJCTB4MTY0MA0KPiArI2RlZmluZSBEQ19P VkVSTEFZX0JPVFRPTV9SSUdIVAkJCQkweDE2ODANCj4gKyNkZWZpbmUgRENfT1ZFUkxBWV9B RERSRVNTCQkJCQkweDE1QzANCj4gKyNkZWZpbmUgRENfT1ZFUkxBWV9VX0FERFJFU1MJCQkJ MHgxODQwDQo+ICsjZGVmaW5lIERDX09WRVJMQVlfVl9BRERSRVNTCQkJCTB4MTg4MA0KPiAr I2RlZmluZSBEQ19PVkVSTEFZX1NUUklERQkJCQkJMHgxNjAwDQo+ICsjZGVmaW5lIERDX09W RVJMQVlfVV9TVFJJREUJCQkJCTB4MThDMA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX1ZfU1RS SURFCQkJCQkweDE5MDANCj4gKyNkZWZpbmUgRENfT1ZFUkxBWV9TSVpFCQkJCQkJMHgxN0Mw DQo+ICsjZGVmaW5lIERDX09WRVJMQVlfU0NBTEVfRkFDVE9SX1gJCQkweDFBNDANCj4gKyNk ZWZpbmUgRENfT1ZFUkxBWV9TQ0FMRV9GQUNUT1JfWQkJCTB4MUE4MA0KPiArI2RlZmluZSBE Q19PVkVSTEFZX0hfRklMVEVSX0NPRUZfSU5ERVgJCTB4MUFDMA0KPiArI2RlZmluZSBEQ19P VkVSTEFZX0hfRklMVEVSX0NPRUZfREFUQQkJMHgxQjAwDQo+ICsjZGVmaW5lIERDX09WRVJM QVlfVl9GSUxURVJfQ09FRl9JTkRFWAkJMHgxQjQwDQo+ICsjZGVmaW5lIERDX09WRVJMQVlf Vl9GSUxURVJfQ09FRl9EQVRBCQkweDFCODANCj4gKyNkZWZpbmUgRENfT1ZFUkxBWV9JTklU X09GRlNFVAkJCQkweDFCQzANCj4gKyNkZWZpbmUgRENfT1ZFUkxBWV9DT0xPUl9LRVkJCQkJ MHgxNzQwDQo+ICsjZGVmaW5lIERDX09WRVJMQVlfQ09MT1JfS0VZX0hJR0gJCQkweDE3ODAN Cj4gKyNkZWZpbmUgRENfT1ZFUkxBWV9DTEVBUl9WQUxVRQkJCQkweDE5NDANCj4gKyNkZWZp bmUgRENfT1ZFUkxBWV9DT0xPUl9UQUJMRV9JTkRFWAkJMHgxOTgwDQo+ICsjZGVmaW5lIERD X09WRVJMQVlfQ09MT1JfVEFCTEVfREFUQQkJCTB4MTlDMA0KPiArI2RlZmluZSBEQ19PVkVS TEFZX1NSQ19HTE9CQUxfQ09MT1IJCQkweDE2QzANCj4gKyNkZWZpbmUgRENfT1ZFUkxBWV9E U1RfR0xPQkFMX0NPTE9SCQkJMHgxNzAwDQo+ICsjZGVmaW5lIERDX09WRVJMQVlfUk9JX09S SUdJTgkJCQkweDFEMDANCj4gKyNkZWZpbmUgRENfT1ZFUkxBWV9ST0lfU0laRQkJCQkJMHgx RDQwDQo+ICsjZGVmaW5lIERDX09WRVJMQVlfV0FURVJfTUFSSwkJCQkweDFEQzANCj4gKyNk ZWZpbmUgRENfT1ZFUkxBWV9ERUdBTU1BX0lOREVYCQkJMHgyMjAwDQo+ICsjZGVmaW5lIERD X09WRVJMQVlfREVHQU1NQV9EQVRBCQkJCTB4MjI0MA0KPiArI2RlZmluZSBEQ19PVkVSTEFZ X0RFR0FNTUFfRVhfREFUQQkJCTB4MjI4MA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX1lVVlRP UkdCX0NPRUYwCQkJMHgxRUMwDQo+ICsjZGVmaW5lIERDX09WRVJMQVlfWVVWVE9SR0JfQ09F RjEJCQkweDFGMDANCj4gKyNkZWZpbmUgRENfT1ZFUkxBWV9ZVVZUT1JHQl9DT0VGMgkJCTB4 MUY0MA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX1lVVlRPUkdCX0NPRUYzCQkJMHgxRjgwDQo+ ICsjZGVmaW5lIERDX09WRVJMQVlfWVVWVE9SR0JfQ09FRjQJCQkweDFGQzANCj4gKyNkZWZp bmUgRENfT1ZFUkxBWV9ZVVZUT1JHQl9DT0VGRDAJCQkweDIwMDANCj4gKyNkZWZpbmUgRENf T1ZFUkxBWV9ZVVZUT1JHQl9DT0VGRDEJCQkweDIwNDANCj4gKyNkZWZpbmUgRENfT1ZFUkxB WV9ZVVZUT1JHQl9DT0VGRDIJCQkweDIwODANCj4gKyNkZWZpbmUgRENfT1ZFUkxBWV9ZX0NM QU1QX0JPVU5ECQkJMHgyMkMwDQo+ICsjZGVmaW5lIERDX09WRVJMQVlfVVZfQ0xBTVBfQk9V TkQJCQkweDIzMDANCj4gKyNkZWZpbmUgRENfT1ZFUkxBWV9SR0JUT1JHQl9DT0VGMAkJCTB4 MjBDMA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX1JHQlRPUkdCX0NPRUYxCQkJMHgyMTAwDQo+ ICsjZGVmaW5lIERDX09WRVJMQVlfUkdCVE9SR0JfQ09FRjIJCQkweDIxNDANCj4gKyNkZWZp bmUgRENfT1ZFUkxBWV9SR0JUT1JHQl9DT0VGMwkJCTB4MjE4MA0KPiArI2RlZmluZSBEQ19P VkVSTEFZX1JHQlRPUkdCX0NPRUY0CQkJMHgyMUMwDQo+ICsNCj4gKyNkZWZpbmUgRENfQ1VS U09SX0NPTkZJRwkJCQkJMHgxNDY4DQo+ICsjZGVmaW5lIERDX0NVUlNPUl9BRERSRVNTCQkJ CQkweDE0NkMNCj4gKyNkZWZpbmUgRENfQ1VSU09SX0xPQ0FUSU9OCQkJCQkweDE0NzANCj4g KyNkZWZpbmUgRENfQ1VSU09SX0JBQ0tHUk9VTkQJCQkJMHgxNDc0DQo+ICsjZGVmaW5lIERD X0NVUlNPUl9GT1JFR1JPVU5ECQkJCTB4MTQ3OA0KPiArI2RlZmluZSBEQ19DVVJTT1JfQ0xL X0dBVElORwkJCQkweDE0ODQNCj4gKyNkZWZpbmUgRENfQ1VSU09SX0NPTkZJR19FWAkJCQkJ MHgyNEU4DQo+ICsjZGVmaW5lIERDX0NVUlNPUl9PRkZTRVQJCQkJCTB4MTA4MA0KPiArDQo+ ICsjZGVmaW5lIERDX0RJU1BMQVlfRElUSEVSX0NPTkZJRwkJMHgxNDEwDQo+ICsjZGVmaW5l IERDX0RJU1BMQVlfUEFORUxfQ09ORklHCQkJMHgxNDE4DQo+ICsjZGVmaW5lIERDX0RJU1BM QVlfUEFORUxfQ09ORklHX0VYCQkweDI1MTgNCj4gKyNkZWZpbmUgRENfRElTUExBWV9ESVRI RVJfVEFCTEVfTE9XCQkweDE0MjANCj4gKyNkZWZpbmUgRENfRElTUExBWV9ESVRIRVJfVEFC TEVfSElHSAkweDE0MjgNCj4gKyNkZWZpbmUgRENfRElTUExBWV9ICQkJCQkweDE0MzANCj4g KyNkZWZpbmUgRENfRElTUExBWV9IX1NZTkMJCQkJMHgxNDM4DQo+ICsjZGVmaW5lIERDX0RJ U1BMQVlfVgkJCQkJMHgxNDQwDQo+ICsjZGVmaW5lIERDX0RJU1BMQVlfVl9TWU5DCQkJCTB4 MTQ0OA0KPiArI2RlZmluZSBEQ19ESVNQTEFZX0NVUlJFTlRfTE9DQVRJT04JCTB4MTQ1MA0K PiArI2RlZmluZSBEQ19ESVNQTEFZX0dBTU1BX0lOREVYCQkJMHgxNDU4DQo+ICsjZGVmaW5l IERDX0RJU1BMQVlfR0FNTUFfREFUQQkJCTB4MTQ2MA0KPiArI2RlZmluZSBEQ19ESVNQTEFZ X0lOVAkJCQkJMHgxNDdDDQo+ICsjZGVmaW5lIERDX0RJU1BMQVlfSU5UX0VOQUJMRQkJCTB4 MTQ4MA0KPiArI2RlZmluZSBEQ19ESVNQTEFZX0RCSV9DT05GSUcJCQkweDE0ODgNCj4gKyNk ZWZpbmUgRENfRElTUExBWV9HRU5FUkFMX0NPTkZJRwkJMHgxNEIwDQo+ICsjZGVmaW5lIERD X0RJU1BMQVlfRFBJX0NPTkZJRwkJCTB4MTRCOA0KPiArI2RlZmluZSBEQ19ESVNQTEFZX1BB TkVMX1NUQVJUCQkJMHgxQ0NDDQo+ICsjZGVmaW5lIERDX0RJU1BMQVlfREVCVUdfQ09VTlRF Ul9TRUxFQ1QJCTB4MTREMA0KPiArI2RlZmluZSBEQ19ESVNQTEFZX0RFQlVHX0NPVU5URVJf VkFMVUUJCTB4MTREOA0KPiArI2RlZmluZSBEQ19ESVNQTEFZX0RQX0NPTkZJRwkJCQkweDFD RDANCj4gKyNkZWZpbmUgRENfRElTUExBWV9HQU1NQV9FWF9JTkRFWAkJCTB4MUNGMA0KPiAr I2RlZmluZSBEQ19ESVNQTEFZX0dBTU1BX0VYX0RBVEEJCQkweDFDRjgNCj4gKyNkZWZpbmUg RENfRElTUExBWV9HQU1NQV9FWF9PTkVfREFUQQkJMHgxRDgwDQo+ICsjZGVmaW5lIERDX0RJ U1BMQVlfUkdCVE9ZVVZfQ09FRjAJCQkweDFFNDgNCj4gKyNkZWZpbmUgRENfRElTUExBWV9S R0JUT1lVVl9DT0VGMQkJCTB4MUU1MA0KPiArI2RlZmluZSBEQ19ESVNQTEFZX1JHQlRPWVVW X0NPRUYyCQkJMHgxRTU4DQo+ICsjZGVmaW5lIERDX0RJU1BMQVlfUkdCVE9ZVVZfQ09FRjMJ CQkweDFFNjANCj4gKyNkZWZpbmUgRENfRElTUExBWV9SR0JUT1lVVl9DT0VGNAkJCTB4MUU2 OA0KPiArI2RlZmluZSBEQ19ESVNQTEFZX1JHQlRPWVVWX0NPRUZEMAkJCTB4MUU3MA0KPiAr I2RlZmluZSBEQ19ESVNQTEFZX1JHQlRPWVVWX0NPRUZEMQkJCTB4MUU3OA0KPiArI2RlZmlu ZSBEQ19ESVNQTEFZX1JHQlRPWVVWX0NPRUZEMgkJCTB4MUU4MA0KPiArDQo+ICsjZGVmaW5l IERDX0NMS19HQVRUSU5HCQkJCQkweDFBMjgNCj4gKyNkZWZpbmUgRENfUU9TX0NPTkZJRwkJ CQkJMHgxQTM4DQo+ICsNCj4gKyNkZWZpbmUgRENfVFJBTlNQQVJFTkNZX09QQVFVRQkJCTB4 MDANCj4gKyNkZWZpbmUgRENfVFJBTlNQQVJFTkNZX0tFWQkJCQkweDAyDQo+ICsjZGVmaW5l IERDX0RJU1BMQVlfRElUSEVSVEFCTEVfTE9XCQkweDdCNDhGM0MwDQo+ICsjZGVmaW5lIERD X0RJU1BMQVlfRElUSEVSVEFCTEVfSElHSAkJMHg1OTZBRDFFMg0KPiArDQo+ICsjZGVmaW5l IEdBTU1BX1NJWkUJCQkJCQkyNTYNCj4gKyNkZWZpbmUgR0FNTUFfRVhfU0laRQkJCQkJMzAw DQo+ICsjZGVmaW5lIERFR0FNTUFfU0laRQkJCQkJMjYwDQo+ICsNCj4gKyNkZWZpbmUgUkdC X1RPX1JHQl9UQUJMRV9TSVpFCQkJOQ0KPiArI2RlZmluZSBZVVZfVE9fUkdCX1RBQkxFX1NJ WkUJCQkxNg0KPiArI2RlZmluZSBSR0JfVE9fWVVWX1RBQkxFX1NJWkUJCQkxMg0KPiArDQo+ ICsjZGVmaW5lIERDX0xBWUVSX05VTQk2DQo+ICsjZGVmaW5lIERDX0RJU1BMQVlfTlVNCTIN Cj4gKyNkZWZpbmUgRENfQ1VSU09SX05VTQkyDQo+ICsNCj4gK2VudW0gZGNfY2hpcF9yZXYg ew0KPiArCURDX1JFVl8wLC8qIEZvciBIV19SRVZfNTcyMCxIV19SRVZfNTcyMV8zMTEgKi8N Cj4gKwlEQ19SRVZfMSwvKiBGb3IgSFdfUkVWXzU3MjFfMzBCICovDQo+ICsJRENfUkVWXzIs LyogRm9yIEhXX1JFVl81NzIxXzMxMCAqLw0KPiArfTsNCj4gKw0KPiArZW51bSBkY19od19w bGFuZV9pZCB7DQo+ICsJUFJJTUFSWV9QTEFORV8wLA0KPiArCU9WRVJMQVlfUExBTkVfMCwN Cj4gKwlPVkVSTEFZX1BMQU5FXzEsDQo+ICsJUFJJTUFSWV9QTEFORV8xLA0KPiArCU9WRVJM QVlfUExBTkVfMiwNCj4gKwlPVkVSTEFZX1BMQU5FXzMsDQo+ICsJQ1VSU09SX1BMQU5FXzAs DQo+ICsJQ1VSU09SX1BMQU5FXzEsDQo+ICsJUExBTkVfTlVNDQo+ICt9Ow0KPiArDQo+ICtl bnVtIGRjX2h3X2NvbG9yX2Zvcm1hdCB7DQo+ICsJRk9STUFUX1g0UjRHNEI0LC8vMA0KPiAr CUZPUk1BVF9BNFI0RzRCNCwvLzENCj4gKwlGT1JNQVRfWDFSNUc1QjUsLy8yDQo+ICsJRk9S TUFUX0ExUjVHNUI1LC8vMw0KPiArCUZPUk1BVF9SNUc2QjUsLy80DQo+ICsJRk9STUFUX1g4 UjhHOEI4LC8vNQ0KPiArCUZPUk1BVF9BOFI4RzhCOCwvLzYNCj4gKwlGT1JNQVRfWVVZMiwv LzcNCj4gKwlGT1JNQVRfVVlWWSwvLzgNCj4gKwlGT1JNQVRfSU5ERVg4LC8vOQ0KPiArCUZP Uk1BVF9NT05PQ0hST01FLC8vMTANCj4gKwlGT1JNQVRfWVYxMiA9IDB4ZiwNCj4gKwlGT1JN QVRfQTgsLy8xNg0KPiArCUZPUk1BVF9OVjEyLC8vMTcNCj4gKwlGT1JNQVRfTlYxNiwvLzE4 DQo+ICsJRk9STUFUX1JHMTYsLy8xOQ0KPiArCUZPUk1BVF9SOCwvLzIwDQo+ICsJRk9STUFU X05WMTJfMTBCSVQsLy8yMQ0KPiArCUZPUk1BVF9BMlIxMEcxMEIxMCwvLzIyDQo+ICsJRk9S TUFUX05WMTZfMTBCSVQsLy8yMw0KPiArCUZPUk1BVF9JTkRFWDEsLy8yNA0KPiArCUZPUk1B VF9JTkRFWDIsLy8yNQ0KPiArCUZPUk1BVF9JTkRFWDQsLy8yNg0KPiArCUZPUk1BVF9QMDEw LC8vMjcNCj4gKwlGT1JNQVRfWVVWNDQ0LC8vMjgNCj4gKwlGT1JNQVRfWVVWNDQ0XzEwQklU LC8vMjkNCj4gK307DQo+ICsNCj4gK2VudW0gZGNfaHdfeXV2X2NvbG9yX3NwYWNlIHsNCj4g KwlDT0xPUl9TUEFDRV82MDEgPSAwLA0KPiArCUNPTE9SX1NQQUNFXzcwOSA9IDEsDQo+ICsJ Q09MT1JfU1BBQ0VfMjAyMCA9IDMsDQo+ICt9Ow0KPiArDQo+ICtlbnVtIGRjX2h3X3JvdGF0 aW9uIHsNCj4gKwlST1RfMCA9IDAsDQo+ICsJUk9UXzkwID0gNCwNCj4gKwlST1RfMTgwID0g NSwNCj4gKwlST1RfMjcwID0gNiwNCj4gKwlGTElQX1ggPSAxLA0KPiArCUZMSVBfWSA9IDIs DQo+ICsJRkxJUF9YWSA9IDMsDQo+ICt9Ow0KPiArDQo+ICtlbnVtIGRjX2h3X3N3aXp6bGUg ew0KPiArCVNXSVpaTEVfQVJHQiA9IDAsDQo+ICsJU1dJWlpMRV9SR0JBLA0KPiArCVNXSVpa TEVfQUJHUiwNCj4gKwlTV0laWkxFX0JHUkEsDQo+ICt9Ow0KPiArDQo+ICtlbnVtIGRjX2h3 X291dCB7DQo+ICsJT1VUX0RQSSwNCj4gKwlPVVRfRFAsDQo+ICt9Ow0KPiArDQo+ICtlbnVt IGRjX2h3X2N1cnNvcl9zaXplIHsNCj4gKwlDVVJTT1JfU0laRV8zMlgzMiA9IDAsDQo+ICsJ Q1VSU09SX1NJWkVfNjRYNjQsDQo+ICt9Ow0KPiArDQo+ICtlbnVtIGRjX2h3X2JsZW5kX21v ZGUgew0KPiArCS8qIG91dC5yZ2IgPSBwbGFuZV9hbHBoYSAqIGZnLnJnYiArDQo+ICsJICoJ CSgxIC0gKHBsYW5lX2FscGhhICogZmcuYWxwaGEpKSAqIGJnLnJnYg0KPiArCSAqLw0KPiAr CUJMRU5EX1BSRU1VTFRJLA0KPiArCS8qIG91dC5yZ2IgPSBwbGFuZV9hbHBoYSAqIGZnLmFs cGhhICogZmcucmdiICsNCj4gKwkgKgkJKDEgLSAocGxhbmVfYWxwaGEgKiBmZy5hbHBoYSkp ICogYmcucmdiDQo+ICsJICovDQo+ICsJQkxFTkRfQ09WRVJBR0UsDQo+ICsJLyogb3V0LnJn YiA9IHBsYW5lX2FscGhhICogZmcucmdiICsNCj4gKwkgKgkJKDEgLSBwbGFuZV9hbHBoYSkg KiBiZy5yZ2INCj4gKwkgKi8NCj4gKwlCTEVORF9QSVhFTF9OT05FLA0KPiArfTsNCj4gKw0K PiArc3RydWN0IGRjX2h3X3BsYW5lX3JlZyB7DQo+ICsJdTMyIHlfYWRkcmVzczsNCj4gKwl1 MzIgdV9hZGRyZXNzOw0KPiArCXUzMiB2X2FkZHJlc3M7DQo+ICsJdTMyIHlfc3RyaWRlOw0K PiArCXUzMiB1X3N0cmlkZTsNCj4gKwl1MzIgdl9zdHJpZGU7DQo+ICsJdTMyIHNpemU7DQo+ ICsJdTMyIHRvcF9sZWZ0Ow0KPiArCXUzMiBib3R0b21fcmlnaHQ7DQo+ICsJdTMyIHNjYWxl X2ZhY3Rvcl94Ow0KPiArCXUzMiBzY2FsZV9mYWN0b3JfeTsNCj4gKwl1MzIgaF9maWx0ZXJf Y29lZl9pbmRleDsNCj4gKwl1MzIgaF9maWx0ZXJfY29lZl9kYXRhOw0KPiArCXUzMiB2X2Zp bHRlcl9jb2VmX2luZGV4Ow0KPiArCXUzMiB2X2ZpbHRlcl9jb2VmX2RhdGE7DQo+ICsJdTMy IGluaXRfb2Zmc2V0Ow0KPiArCXUzMiBjb2xvcl9rZXk7DQo+ICsJdTMyIGNvbG9yX2tleV9o aWdoOw0KPiArCXUzMiBjbGVhcl92YWx1ZTsNCj4gKwl1MzIgY29sb3JfdGFibGVfaW5kZXg7 DQo+ICsJdTMyIGNvbG9yX3RhYmxlX2RhdGE7DQo+ICsJdTMyIHNjYWxlX2NvbmZpZzsNCj4g Kwl1MzIgd2F0ZXJfbWFyazsNCj4gKwl1MzIgZGVnYW1tYV9pbmRleDsNCj4gKwl1MzIgZGVn YW1tYV9kYXRhOw0KPiArCXUzMiBkZWdhbW1hX2V4X2RhdGE7DQo+ICsJdTMyIHNyY19nbG9i YWxfY29sb3I7DQo+ICsJdTMyIGRzdF9nbG9iYWxfY29sb3I7DQo+ICsJdTMyIGJsZW5kX2Nv bmZpZzsNCj4gKwl1MzIgcm9pX29yaWdpbjsNCj4gKwl1MzIgcm9pX3NpemU7DQo+ICsJdTMy IHl1dl90b19yZ2JfY29lZjA7DQo+ICsJdTMyIHl1dl90b19yZ2JfY29lZjE7DQo+ICsJdTMy IHl1dl90b19yZ2JfY29lZjI7DQo+ICsJdTMyIHl1dl90b19yZ2JfY29lZjM7DQo+ICsJdTMy IHl1dl90b19yZ2JfY29lZjQ7DQo+ICsJdTMyIHl1dl90b19yZ2JfY29lZmQwOw0KPiArCXUz MiB5dXZfdG9fcmdiX2NvZWZkMTsNCj4gKwl1MzIgeXV2X3RvX3JnYl9jb2VmZDI7DQo+ICsJ dTMyIHlfY2xhbXBfYm91bmQ7DQo+ICsJdTMyIHV2X2NsYW1wX2JvdW5kOw0KPiArCXUzMiBy Z2JfdG9fcmdiX2NvZWYwOw0KPiArCXUzMiByZ2JfdG9fcmdiX2NvZWYxOw0KPiArCXUzMiBy Z2JfdG9fcmdiX2NvZWYyOw0KPiArCXUzMiByZ2JfdG9fcmdiX2NvZWYzOw0KPiArCXUzMiBy Z2JfdG9fcmdiX2NvZWY0Ow0KPiArfTsNCj4gKw0KPiArc3RydWN0IGRjX2h3X2ZiIHsNCj4g Kwl1MzIgeV9hZGRyZXNzOw0KPiArCXUzMiB1X2FkZHJlc3M7DQo+ICsJdTMyIHZfYWRkcmVz czsNCj4gKwl1MzIgY2xlYXJfdmFsdWU7DQo+ICsJdTMyIHdhdGVyX21hcms7DQo+ICsJdTE2 IHlfc3RyaWRlOw0KPiArCXUxNiB1X3N0cmlkZTsNCj4gKwl1MTYgdl9zdHJpZGU7DQo+ICsJ dTE2IHdpZHRoOw0KPiArCXUxNiBoZWlnaHQ7DQo+ICsJdTgJZm9ybWF0Ow0KPiArCXU4CXRp bGVfbW9kZTsNCj4gKwl1OAlyb3RhdGlvbjsNCj4gKwl1OAl5dXZfY29sb3Jfc3BhY2U7DQo+ ICsJdTgJc3dpenpsZTsNCj4gKwl1OAl1dl9zd2l6emxlOw0KPiArCXU4CXpwb3M7DQo+ICsJ dTgJZGlzcGxheV9pZDsNCj4gKwlib29sCWNsZWFyX2VuYWJsZTsNCj4gKwlib29sCWRlY19l bmFibGU7DQo+ICsJYm9vbAllbmFibGU7DQo+ICsJYm9vbAlkaXJ0eTsNCj4gK307DQo+ICsN Cj4gK3N0cnVjdCBkY19od19zY2FsZSB7DQo+ICsJdTMyIHNjYWxlX2ZhY3Rvcl94Ow0KPiAr CXUzMiBzY2FsZV9mYWN0b3JfeTsNCj4gKwlib29sCWVuYWJsZTsNCj4gKwlib29sCWRpcnR5 Ow0KPiArfTsNCj4gKw0KPiArc3RydWN0IGRjX2h3X3Bvc2l0aW9uIHsNCj4gKwl1MTYgc3Rh cnRfeDsNCj4gKwl1MTYgc3RhcnRfeTsNCj4gKwl1MTYgZW5kX3g7DQo+ICsJdTE2IGVuZF95 Ow0KPiArCWJvb2wJZGlydHk7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgZGNfaHdfYmxlbmQg ew0KPiArCXU4CWFscGhhOw0KPiArCXU4CWJsZW5kX21vZGU7DQo+ICsJYm9vbAlkaXJ0eTsN Cj4gK307DQo+ICsNCj4gK3N0cnVjdCBkY19od19jb2xvcmtleSB7DQo+ICsJdTMyIGNvbG9y a2V5Ow0KPiArCXUzMiBjb2xvcmtleV9oaWdoOw0KPiArCXU4CXRyYW5zcGFyZW5jeTsNCj4g Kwlib29sIGRpcnR5Ow0KPiArfTsNCj4gKw0KPiArc3RydWN0IGRjX2h3X3JvaSB7DQo+ICsJ dTE2IHg7DQo+ICsJdTE2IHk7DQo+ICsJdTE2IHdpZHRoOw0KPiArCXUxNiBoZWlnaHQ7DQo+ ICsJYm9vbCBlbmFibGU7DQo+ICsJYm9vbCBkaXJ0eTsNCj4gK307DQo+ICsNCj4gK3N0cnVj dCBkY19od19jdXJzb3Igew0KPiArCXUzMiBhZGRyZXNzOw0KPiArCXUxNiB4Ow0KPiArCXUx NiB5Ow0KPiArCXUxNiBob3RfeDsNCj4gKwl1MTYgaG90X3k7DQo+ICsJdTgJc2l6ZTsNCj4g Kwl1OAlkaXNwbGF5X2lkOw0KPiArCWJvb2wJZW5hYmxlOw0KPiArCWJvb2wJZGlydHk7DQo+ ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgZGNfaHdfZGlzcGxheSB7DQo+ICsJdTMyIGJ1c19mb3Jt YXQ7DQo+ICsJdTE2IGhfYWN0aXZlOw0KPiArCXUxNiBoX3RvdGFsOw0KPiArCXUxNiBoX3N5 bmNfc3RhcnQ7DQo+ICsJdTE2IGhfc3luY19lbmQ7DQo+ICsJdTE2IHZfYWN0aXZlOw0KPiAr CXUxNiB2X3RvdGFsOw0KPiArCXUxNiB2X3N5bmNfc3RhcnQ7DQo+ICsJdTE2IHZfc3luY19l bmQ7DQo+ICsJdTE2IHN5bmNfbW9kZTsNCj4gKwl1MzIgYmdfY29sb3I7DQo+ICsJdTgJaWQ7 DQo+ICsJYm9vbAloX3N5bmNfcG9sYXJpdHk7DQo+ICsJYm9vbAl2X3N5bmNfcG9sYXJpdHk7 DQo+ICsJYm9vbAllbmFibGU7DQo+ICsJYm9vbAlzeW5jX2VuYWJsZTsNCj4gKwlib29sCWRp dGhlcl9lbmFibGU7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgZGNfaHdfZ2FtbWEgew0KPiAr CXUxNiBnYW1tYVtHQU1NQV9FWF9TSVpFXVszXTsNCj4gKwlib29sCWVuYWJsZTsNCj4gKwli b29sCWRpcnR5Ow0KPiArfTsNCj4gKw0KPiArc3RydWN0IGRjX2h3X2RlZ2FtbWEgew0KPiAr CXUxNiBkZWdhbW1hW0RFR0FNTUFfU0laRV1bM107DQo+ICsJdTMyIG1vZGU7DQo+ICsJYm9v bAlkaXJ0eTsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBkY19od19wbGFuZSB7DQo+ICsJc3Ry dWN0IGRjX2h3X2ZiCQkJZmI7DQo+ICsJc3RydWN0IGRjX2h3X3Bvc2l0aW9uCXBvczsNCj4g KwlzdHJ1Y3QgZGNfaHdfc2NhbGUJCXNjYWxlOw0KPiArCXN0cnVjdCBkY19od19ibGVuZAkJ YmxlbmQ7DQo+ICsJc3RydWN0IGRjX2h3X3JvaQkJcm9pOw0KPiArCXN0cnVjdCBkY19od19j b2xvcmtleQljb2xvcmtleTsNCj4gKwlzdHJ1Y3QgZGNfaHdfZGVnYW1tYQlkZWdhbW1hOw0K PiArfTsNCj4gKw0KPiArc3RydWN0IGRjX2h3X3FvcyB7DQo+ICsJdTgJICBsb3dfdmFsdWU7 DQo+ICsJdTgJICBoaWdoX3ZhbHVlOw0KPiArCWJvb2wgIGRpcnR5Ow0KPiArfTsNCj4gKw0K PiArc3RydWN0IGRjX2h3X3JlYWQgew0KPiArCXUzMgkJCXJlZzsNCj4gKwl1MzIJCQl2YWx1 ZTsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBkY19odzsNCj4gK3N0cnVjdCBkY19od19mdW5j cyB7DQo+ICsJdm9pZCAoKmdhbW1hKShzdHJ1Y3QgZGNfaHcgKmh3KTsNCj4gKwl2b2lkICgq cGxhbmUpKHN0cnVjdCBkY19odyAqaHcpOw0KPiArCXZvaWQgKCpkaXNwbGF5KShzdHJ1Y3Qg ZGNfaHcgKmh3LCBzdHJ1Y3QgZGNfaHdfZGlzcGxheSAqZGlzcGxheSk7DQo+ICt9Ow0KPiAr DQo+ICtzdHJ1Y3QgZGNfaHcgew0KPiArCWVudW0gZGNfY2hpcF9yZXYgcmV2Ow0KPiArCWVu dW0gZGNfaHdfb3V0CQlvdXRbRENfRElTUExBWV9OVU1dOw0KPiArCXZvaWQJCQkqaGlfYmFz ZTsNCj4gKwl2b2lkCQkJKnJlZ19iYXNlOw0KPiArDQo+ICsJc3RydWN0IGRjX2h3X2Rpc3Bs YXkgZGlzcGxheVtEQ19ESVNQTEFZX05VTV07DQo+ICsJc3RydWN0IGRjX2h3X2dhbW1hCSBn YW1tYVtEQ19ESVNQTEFZX05VTV07DQo+ICsJc3RydWN0IGRjX2h3X3BsYW5lCSBwbGFuZVtE Q19MQVlFUl9OVU1dOw0KPiArCXN0cnVjdCBkY19od19jdXJzb3IgIGN1cnNvcltEQ19DVVJT T1JfTlVNXTsNCj4gKwlzdHJ1Y3QgZGNfaHdfcW9zCSBxb3M7DQo+ICsJc3RydWN0IGRjX2h3 X2Z1bmNzCSAqZnVuYzsNCj4gKwlzdHJ1Y3QgdnNfZGNfaW5mbwkgKmluZm87DQo+ICt9Ow0K PiArDQo+ICtpbnQgZGNfaHdfaW5pdChzdHJ1Y3QgZGNfaHcgKmh3KTsNCj4gK3ZvaWQgZGNf aHdfZGVpbml0KHN0cnVjdCBkY19odyAqaHcpOw0KPiArdm9pZCBkY19od191cGRhdGVfcGxh bmUoc3RydWN0IGRjX2h3ICpodywgdTggaWQsDQo+ICsJCQlzdHJ1Y3QgZGNfaHdfZmIgKmZi LCBzdHJ1Y3QgZGNfaHdfc2NhbGUgKnNjYWxlLA0KPiArCQkJc3RydWN0IGRjX2h3X3Bvc2l0 aW9uICpwb3MsIHN0cnVjdCBkY19od19ibGVuZCAqYmxlbmQpOw0KPiArdm9pZCBkY19od191 cGRhdGVfZGVnYW1tYShzdHJ1Y3QgZGNfaHcgKmh3LCB1OCBpZCwgdTMyIG1vZGUpOw0KPiAr dm9pZCBkY19od191cGRhdGVfcm9pKHN0cnVjdCBkY19odyAqaHcsIHU4IGlkLCBzdHJ1Y3Qg ZGNfaHdfcm9pICpyb2kpOw0KPiArdm9pZCBkY19od191cGRhdGVfY29sb3JrZXkoc3RydWN0 IGRjX2h3ICpodywgdTggaWQsDQo+ICsJCQkgICBzdHJ1Y3QgZGNfaHdfY29sb3JrZXkgKmNv bG9ya2V5KTsNCj4gK3ZvaWQgZGNfaHdfdXBkYXRlX3FvcyhzdHJ1Y3QgZGNfaHcgKmh3LCBz dHJ1Y3QgZGNfaHdfcW9zICpxb3MpOw0KPiArdm9pZCBkY19od191cGRhdGVfY3Vyc29yKHN0 cnVjdCBkY19odyAqaHcsIHU4IGlkLCBzdHJ1Y3QgZGNfaHdfY3Vyc29yICpjdXJzb3IpOw0K PiArdm9pZCBkY19od191cGRhdGVfZ2FtbWEoc3RydWN0IGRjX2h3ICpodywgdTggaWQsIHUx NiBpbmRleCwNCj4gKwkJCXUxNiByLCB1MTYgZywgdTE2IGIpOw0KPiArdm9pZCBkY19od19l bmFibGVfZ2FtbWEoc3RydWN0IGRjX2h3ICpodywgdTggaWQsIGJvb2wgZW5hYmxlKTsNCj4g K3ZvaWQgZGNfaHdfc2V0dXBfZGlzcGxheShzdHJ1Y3QgZGNfaHcgKmh3LCBzdHJ1Y3QgZGNf aHdfZGlzcGxheSAqZGlzcGxheSk7DQo+ICt2b2lkIGRjX2h3X2VuYWJsZV9pbnRlcnJ1cHQo c3RydWN0IGRjX2h3ICpodywgYm9vbCBlbmFibGUpOw0KPiArdTMyIGRjX2h3X2dldF9pbnRl cnJ1cHQoc3RydWN0IGRjX2h3ICpodyk7DQo+ICtib29sIGRjX2h3X2NoZWNrX3VuZGVyZmxv dyhzdHJ1Y3QgZGNfaHcgKmh3KTsNCj4gK3ZvaWQgZGNfaHdfZW5hYmxlX3NoYWRvd19yZWdp c3RlcihzdHJ1Y3QgZGNfaHcgKmh3LCBib29sIGVuYWJsZSk7DQo+ICt2b2lkIGRjX2h3X3Nl dF9vdXQoc3RydWN0IGRjX2h3ICpodywgZW51bSBkY19od19vdXQgb3V0LCB1OCBpZCk7DQo+ ICt2b2lkIGRjX2h3X2NvbW1pdChzdHJ1Y3QgZGNfaHcgKmh3KTsNCj4gKw0KPiArI2VuZGlm IC8qIF9fVlNfRENfSFdfSF9fICovDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dmVyaXNpbGljb24vdnNfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNf ZHJ2LmMNCj4gaW5kZXggNjk1OTFlNjQwLi5kZGVjOTI5MTAgMTAwNjQ0DQo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19kcnYuYw0KPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vdmVyaXNpbGljb24vdnNfZHJ2LmMNCj4gQEAgLTMzLDYgKzMzLDcgQEANCj4gICAj aW5jbHVkZSAidnNfZHJ2LmgiDQo+ICAgI2luY2x1ZGUgInZzX21vZGVzZXQuaCINCj4gICAj aW5jbHVkZSAidnNfZ2VtLmgiDQo+ICsjaW5jbHVkZSAidnNfZGMuaCINCj4gICANCj4gICAj ZGVmaW5lIERSVl9OQU1FCSJzdGFyZml2ZSINCj4gICAjZGVmaW5lIERSVl9ERVNDCSJTdGFy Zml2ZSBEUk0gZHJpdmVyIg0KPiBAQCAtMTU1LDcgKzE1Niw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgY29tcG9uZW50X21hc3Rlcl9vcHMgdnNfZHJtX29wcyA9IHsNCj4gICB9Ow0KPiAg IA0KPiAgIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyICpkcm1fc3ViX2RyaXZlcnNb XSA9IHsNCj4gLQ0KPiArCSZkY19wbGF0Zm9ybV9kcml2ZXIsDQo+ICAgDQo+ICAgCS8qIGNv bm5lY3RvciArIGVuY29kZXIqLw0KPiAgICNpZmRlZiBDT05GSUdfU1RBUkZJVkVfSERNSQ0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX3BsYW5lLmMg Yi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfcGxhbmUuYw0KPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAuLjYxNjQ4ZDdiMQ0KPiAtLS0gL2Rldi9u dWxsDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19wbGFuZS5jDQo+ IEBAIC0wLDAgKzEsNTAyIEBADQo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMA0KPiArLyoNCj4gKyAqIENvcHlyaWdodCAoQykgMjAyMyBWZXJpU2lsaWNvbiBIb2xk aW5ncyBDby4sIEx0ZC4NCj4gKyAqLw0KPiArDQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9t aWMuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4NCj4gKyNpbmNs dWRlIDxkcm0vZHJtX2JsZW5kLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1fZG1hX2hl bHBlci5oPg0KPiArI2luY2x1ZGUgPGRybS9kcm1fZmJfZG1hX2hlbHBlci5oPg0KPiArI2lu Y2x1ZGUgPGRybS9kcm1fZnJhbWVidWZmZXIuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX3Bs YW5lLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4NCj4gKw0KPiAr I2luY2x1ZGUgPGRybS92c19kcm0uaD4NCj4gKw0KPiArI2luY2x1ZGUgInZzX2NydGMuaCIN Cj4gKyNpbmNsdWRlICJ2c19tb2Rlc2V0LmgiDQo+ICsjaW5jbHVkZSAidnNfZ2VtLmgiDQo+ ICsjaW5jbHVkZSAidnNfcGxhbmUuaCINCj4gKyNpbmNsdWRlICJ2c190eXBlLmgiDQo+ICsj aW5jbHVkZSAidnNfZHJ2LmgiDQo+ICsjaW5jbHVkZSAidnNfZGMuaCINCj4gKw0KPiArc3Rh dGljIHZvaWQgdnNfcGxhbmVfcmVzZXQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpDQo+ICt7 DQo+ICsJc3RydWN0IHZzX3BsYW5lX3N0YXRlICpzdGF0ZTsNCj4gKwlzdHJ1Y3QgdnNfcGxh bmUgKnZzX3BsYW5lID0gdG9fdnNfcGxhbmUocGxhbmUpOw0KPiArDQo+ICsJaWYgKHBsYW5l LT5zdGF0ZSkgew0KPiArCQlfX2RybV9hdG9taWNfaGVscGVyX3BsYW5lX2Rlc3Ryb3lfc3Rh dGUocGxhbmUtPnN0YXRlKTsNCj4gKw0KPiArCQlzdGF0ZSA9IHRvX3ZzX3BsYW5lX3N0YXRl KHBsYW5lLT5zdGF0ZSk7DQo+ICsJCWtmcmVlKHN0YXRlKTsNCj4gKwkJcGxhbmUtPnN0YXRl ID0gTlVMTDsNCj4gKwl9DQo+ICsNCj4gKwlzdGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCpzdGF0 ZSksIEdGUF9LRVJORUwpOw0KPiArCWlmICghc3RhdGUpDQo+ICsJCXJldHVybjsNCj4gKw0K PiArCV9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfcmVzZXQocGxhbmUsICZzdGF0ZS0+YmFz ZSk7DQoNCkNhbGwgdGhpcyBhZnRlciBmdWxseSBpbml0aWFsaXppbmcgdGhlIHN0YXRlLg0K DQo+ICsNCj4gKwlzdGF0ZS0+ZGVnYW1tYSA9IFZTX0RFR0FNTUFfRElTQUJMRTsNCj4gKwlz dGF0ZS0+ZGVnYW1tYV9jaGFuZ2VkID0gZmFsc2U7DQo+ICsJc3RhdGUtPmJhc2UuenBvcyA9 IHZzX3BsYW5lLT5pZDsNCj4gKw0KPiArCW1lbXNldCgmc3RhdGUtPnN0YXR1cywgMCwgc2l6 ZW9mKHN0YXRlLT5zdGF0dXMpKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgX3ZzX3Bs YW5lX2R1cGxpY2F0ZV9ibG9iKHN0cnVjdCB2c19wbGFuZV9zdGF0ZSAqc3RhdGUsDQo+ICsJ CQkJICAgICBzdHJ1Y3QgdnNfcGxhbmVfc3RhdGUgKm9yaV9zdGF0ZSkNCj4gK3sNCj4gKwlz dGF0ZS0+d2F0ZXJtYXJrID0gb3JpX3N0YXRlLT53YXRlcm1hcms7DQo+ICsJc3RhdGUtPmNv bG9yX21nbXQgPSBvcmlfc3RhdGUtPmNvbG9yX21nbXQ7DQo+ICsJc3RhdGUtPnJvaSA9IG9y aV9zdGF0ZS0+cm9pOw0KPiArDQo+ICsJaWYgKHN0YXRlLT53YXRlcm1hcmspDQo+ICsJCWRy bV9wcm9wZXJ0eV9ibG9iX2dldChzdGF0ZS0+d2F0ZXJtYXJrKTsNCj4gKwlpZiAoc3RhdGUt PmNvbG9yX21nbXQpDQo+ICsJCWRybV9wcm9wZXJ0eV9ibG9iX2dldChzdGF0ZS0+Y29sb3Jf bWdtdCk7DQo+ICsJaWYgKHN0YXRlLT5yb2kpDQo+ICsJCWRybV9wcm9wZXJ0eV9ibG9iX2dl dChzdGF0ZS0+cm9pKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludA0KPiArX3ZzX3BsYW5l X3NldF9wcm9wZXJ0eV9ibG9iX2Zyb21faWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwNCj4g KwkJCQkgICAgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICoqYmxvYiwNCj4gKwkJCQkgICAg dTY0IGJsb2JfaWQsDQo+ICsJCQkJICAgIHNpemVfdCBleHBlY3RlZF9zaXplKQ0KPiArew0K PiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqbmV3X2Jsb2IgPSBOVUxMOw0KPiArDQo+ ICsJaWYgKGJsb2JfaWQpIHsNCj4gKwkJbmV3X2Jsb2IgPSBkcm1fcHJvcGVydHlfbG9va3Vw X2Jsb2IoZGV2LCBibG9iX2lkKTsNCj4gKwkJaWYgKCFuZXdfYmxvYikNCj4gKwkJCXJldHVy biAtRUlOVkFMOw0KPiArDQo+ICsJCWlmIChuZXdfYmxvYi0+bGVuZ3RoICE9IGV4cGVjdGVk X3NpemUpIHsNCj4gKwkJCWRybV9wcm9wZXJ0eV9ibG9iX3B1dChuZXdfYmxvYik7DQo+ICsJ CQlyZXR1cm4gLUVJTlZBTDsNCj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCWRybV9wcm9wZXJ0 eV9yZXBsYWNlX2Jsb2IoYmxvYiwgbmV3X2Jsb2IpOw0KPiArCWRybV9wcm9wZXJ0eV9ibG9i X3B1dChuZXdfYmxvYik7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3Rh dGljIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKg0KPiArdnNfcGxhbmVfYXRvbWljX2R1cGxp Y2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkNCj4gK3sNCj4gKwlzdHJ1Y3Qg dnNfcGxhbmVfc3RhdGUgKm9yaV9zdGF0ZTsNCj4gKwlzdHJ1Y3QgdnNfcGxhbmVfc3RhdGUg KnN0YXRlOw0KPiArDQo+ICsJaWYgKFdBUk5fT04oIXBsYW5lLT5zdGF0ZSkpDQo+ICsJCXJl dHVybiBOVUxMOw0KPiArDQo+ICsJb3JpX3N0YXRlID0gdG9fdnNfcGxhbmVfc3RhdGUocGxh bmUtPnN0YXRlKTsNCj4gKwlzdGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCpzdGF0ZSksIEdGUF9L RVJORUwpOw0KPiArCWlmICghc3RhdGUpDQo+ICsJCXJldHVybiBOVUxMOw0KPiArDQo+ICsJ X19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUocGxhbmUsICZzdGF0 ZS0+YmFzZSk7DQo+ICsNCj4gKwlzdGF0ZS0+ZGVnYW1tYSA9IG9yaV9zdGF0ZS0+ZGVnYW1t YTsNCj4gKwlzdGF0ZS0+ZGVnYW1tYV9jaGFuZ2VkID0gb3JpX3N0YXRlLT5kZWdhbW1hX2No YW5nZWQ7DQo+ICsNCj4gKwlfdnNfcGxhbmVfZHVwbGljYXRlX2Jsb2Ioc3RhdGUsIG9yaV9z dGF0ZSk7DQo+ICsJbWVtY3B5KCZzdGF0ZS0+c3RhdHVzLCAmb3JpX3N0YXRlLT5zdGF0dXMs IHNpemVvZihvcmlfc3RhdGUtPnN0YXR1cykpOw0KPiArDQo+ICsJcmV0dXJuICZzdGF0ZS0+ YmFzZTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgdnNfcGxhbmVfYXRvbWljX2Rlc3Ry b3lfc3RhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsDQo+ICsJCQkJCSAgc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqc3RhdGUpDQo+ICt7DQo+ICsJc3RydWN0IHZzX3BsYW5lX3N0YXRl ICp2c19wbGFuZV9zdGF0ZSA9IHRvX3ZzX3BsYW5lX3N0YXRlKHN0YXRlKTsNCj4gKw0KPiAr CV9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9zdGF0ZShzdGF0ZSk7DQo+ICsN Cj4gKwlkcm1fcHJvcGVydHlfYmxvYl9wdXQodnNfcGxhbmVfc3RhdGUtPndhdGVybWFyayk7 DQo+ICsJZHJtX3Byb3BlcnR5X2Jsb2JfcHV0KHZzX3BsYW5lX3N0YXRlLT5jb2xvcl9tZ210 KTsNCj4gKwlkcm1fcHJvcGVydHlfYmxvYl9wdXQodnNfcGxhbmVfc3RhdGUtPnJvaSk7DQo+ ICsJa2ZyZWUodnNfcGxhbmVfc3RhdGUpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHZz X3BsYW5lX2F0b21pY19zZXRfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsDQo+ ICsJCQkJCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlLA0KPiArCQkJCQlzdHJ1Y3Qg ZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwNCj4gKwkJCQkJdWludDY0X3QgdmFsKQ0KPiArew0K PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2Ow0KPiArCXN0cnVjdCB2 c19wbGFuZSAqdnNfcGxhbmUgPSB0b192c19wbGFuZShwbGFuZSk7DQo+ICsJc3RydWN0IHZz X3BsYW5lX3N0YXRlICp2c19wbGFuZV9zdGF0ZSA9IHRvX3ZzX3BsYW5lX3N0YXRlKHN0YXRl KTsNCj4gKwlpbnQgcmV0ID0gMDsNCj4gKw0KPiArCWlmIChwcm9wZXJ0eSA9PSB2c19wbGFu ZS0+ZGVnYW1tYV9tb2RlKSB7DQo+ICsJCWlmICh2c19wbGFuZV9zdGF0ZS0+ZGVnYW1tYSAh PSB2YWwpIHsNCj4gKwkJCXZzX3BsYW5lX3N0YXRlLT5kZWdhbW1hID0gdmFsOw0KPiArCQkJ dnNfcGxhbmVfc3RhdGUtPmRlZ2FtbWFfY2hhbmdlZCA9IHRydWU7DQo+ICsJCX0gZWxzZSB7 DQo+ICsJCQl2c19wbGFuZV9zdGF0ZS0+ZGVnYW1tYV9jaGFuZ2VkID0gZmFsc2U7DQo+ICsJ CX0NCj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHZzX3BsYW5lLT53YXRlcm1hcmtfcHJv cCkgew0KPiArCQlyZXQgPSBfdnNfcGxhbmVfc2V0X3Byb3BlcnR5X2Jsb2JfZnJvbV9pZChk ZXYsDQo+ICsJCQkJCQkJICAmdnNfcGxhbmVfc3RhdGUtPndhdGVybWFyaywNCj4gKwkJCQkJ CQkgIHZhbCwNCj4gKwkJCQkJCQkgIHNpemVvZihzdHJ1Y3QgZHJtX3ZzX3dhdGVybWFyaykp Ow0KPiArCQlyZXR1cm4gcmV0Ow0KPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gdnNfcGxh bmUtPmNvbG9yX21nbXRfcHJvcCkgew0KPiArCQlyZXQgPSBfdnNfcGxhbmVfc2V0X3Byb3Bl cnR5X2Jsb2JfZnJvbV9pZChkZXYsDQo+ICsJCQkJCQkJICAmdnNfcGxhbmVfc3RhdGUtPmNv bG9yX21nbXQsDQo+ICsJCQkJCQkJICB2YWwsDQo+ICsJCQkJCQkJICBzaXplb2Yoc3RydWN0 IGRybV92c19jb2xvcl9tZ210KSk7DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfSBlbHNlIGlm IChwcm9wZXJ0eSA9PSB2c19wbGFuZS0+cm9pX3Byb3ApIHsNCj4gKwkJcmV0ID0gX3ZzX3Bs YW5lX3NldF9wcm9wZXJ0eV9ibG9iX2Zyb21faWQoZGV2LA0KPiArCQkJCQkJCSAgJnZzX3Bs YW5lX3N0YXRlLT5yb2ksDQo+ICsJCQkJCQkJICB2YWwsDQo+ICsJCQkJCQkJICBzaXplb2Yo c3RydWN0IGRybV92c19yb2kpKTsNCj4gKwkJcmV0dXJuIHJldDsNCj4gKwl9IGVsc2Ugew0K PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30N Cj4gKw0KPiArc3RhdGljIGludCB2c19wbGFuZV9hdG9taWNfZ2V0X3Byb3BlcnR5KHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLA0KPiArCQkJCQljb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0 YXRlICpzdGF0ZSwNCj4gKwkJCQkJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHksDQo+ ICsJCQkJCXVpbnQ2NF90ICp2YWwpDQo+ICt7DQo+ICsJc3RydWN0IHZzX3BsYW5lICp2c19w bGFuZSA9IHRvX3ZzX3BsYW5lKHBsYW5lKTsNCj4gKwljb25zdCBzdHJ1Y3QgdnNfcGxhbmVf c3RhdGUgKnZzX3BsYW5lX3N0YXRlID0NCj4gKwkJY29udGFpbmVyX29mKHN0YXRlLCBjb25z dCBzdHJ1Y3QgdnNfcGxhbmVfc3RhdGUsIGJhc2UpOw0KPiArDQo+ICsJaWYgKHByb3BlcnR5 ID09IHZzX3BsYW5lLT5kZWdhbW1hX21vZGUpDQo+ICsJCSp2YWwgPSB2c19wbGFuZV9zdGF0 ZS0+ZGVnYW1tYTsNCj4gKwllbHNlIGlmIChwcm9wZXJ0eSA9PSB2c19wbGFuZS0+d2F0ZXJt YXJrX3Byb3ApDQo+ICsJCSp2YWwgPSAodnNfcGxhbmVfc3RhdGUtPndhdGVybWFyaykgPw0K PiArCQkJCQl2c19wbGFuZV9zdGF0ZS0+d2F0ZXJtYXJrLT5iYXNlLmlkIDogMDsNCj4gKwll bHNlIGlmIChwcm9wZXJ0eSA9PSB2c19wbGFuZS0+Y29sb3JfbWdtdF9wcm9wKQ0KPiArCQkq dmFsID0gKHZzX3BsYW5lX3N0YXRlLT5jb2xvcl9tZ210KSA/DQo+ICsJCQkJCXZzX3BsYW5l X3N0YXRlLT5jb2xvcl9tZ210LT5iYXNlLmlkIDogMDsNCj4gKwllbHNlIGlmIChwcm9wZXJ0 eSA9PSB2c19wbGFuZS0+cm9pX3Byb3ApDQo+ICsJCSp2YWwgPSAodnNfcGxhbmVfc3RhdGUt PnJvaSkgPw0KPiArCQkJCQl2c19wbGFuZV9zdGF0ZS0+cm9pLT5iYXNlLmlkIDogMDsNCj4g KwllbHNlDQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyBib29sIHZzX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLA0KPiArCQkJCSAgICB1MzIgZm9ybWF0LA0KPiArCQkJCSAgICB1 NjQgbW9kaWZpZXIpDQo+ICt7DQo+ICsJaW50IGk7DQo+ICsNCj4gKwkvKiBXZSBhbHdheXMg aGF2ZSB0byBhbGxvdyB0aGVzZSBtb2RpZmllcnM6DQo+ICsJICogMS4gQ29yZSBEUk0gY2hl Y2tzIGZvciBMSU5FQVIgc3VwcG9ydCBpZiB1c2Vyc3BhY2UgZG9lcyBub3QgcHJvdmlkZSBt b2RpZmllcnMuDQo+ICsJICogMi4gTm90IHBhc3NpbmcgYW55IG1vZGlmaWVycyBpcyB0aGUg c2FtZSBhcyBleHBsaWNpdGx5IHBhc3NpbmcgSU5WQUxJRC4NCj4gKwkgKi8NCj4gKwlpZiAo bW9kaWZpZXIgPT0gRFJNX0ZPUk1BVF9NT0RfTElORUFSKQ0KPiArCQlyZXR1cm4gdHJ1ZTsN Cj4gKw0KPiArCS8qIENoZWNrIHRoYXQgdGhlIG1vZGlmaWVyIGlzIG9uIHRoZSBsaXN0IG9m IHRoZSBwbGFuZSdzIHN1cHBvcnRlZCBtb2RpZmllcnMuICovDQo+ICsJZm9yIChpID0gMDsg aSA8IHBsYW5lLT5tb2RpZmllcl9jb3VudDsgaSsrKSB7DQo+ICsJCWlmIChtb2RpZmllciA9 PSBwbGFuZS0+bW9kaWZpZXJzW2ldKQ0KPiArCQkJYnJlYWs7DQo+ICsJfQ0KPiArDQo+ICsJ aWYgKGkgPT0gcGxhbmUtPm1vZGlmaWVyX2NvdW50KQ0KPiArCQlyZXR1cm4gZmFsc2U7DQo+ ICsNCj4gKwlyZXR1cm4gdHJ1ZTsNCj4gK30NCj4gKw0KPiArY29uc3Qgc3RydWN0IGRybV9w bGFuZV9mdW5jcyB2c19wbGFuZV9mdW5jcyA9IHsNCj4gKwkudXBkYXRlX3BsYW5lCQk9IGRy bV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZSwNCj4gKwkuZGlzYWJsZV9wbGFuZQkJPSBk cm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lLA0KPiArCS5yZXNldAkJCT0gdnNfcGxh bmVfcmVzZXQsDQo+ICsJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSB2c19wbGFuZV9hdG9t aWNfZHVwbGljYXRlX3N0YXRlLA0KPiArCS5hdG9taWNfZGVzdHJveV9zdGF0ZQk9IHZzX3Bs YW5lX2F0b21pY19kZXN0cm95X3N0YXRlLA0KPiArCS5hdG9taWNfc2V0X3Byb3BlcnR5CT0g dnNfcGxhbmVfYXRvbWljX3NldF9wcm9wZXJ0eSwNCj4gKwkuYXRvbWljX2dldF9wcm9wZXJ0 eQk9IHZzX3BsYW5lX2F0b21pY19nZXRfcHJvcGVydHksDQo+ICsJLmZvcm1hdF9tb2Rfc3Vw cG9ydGVkCT0gdnNfZm9ybWF0X21vZF9zdXBwb3J0ZWQsDQo+ICt9Ow0KPiArDQo+ICtzdGF0 aWMgdW5zaWduZWQgY2hhciB2c19nZXRfcGxhbmVfbnVtYmVyKHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiKQ0KPiArew0KPiArCWNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmlu Zm87DQo+ICsNCj4gKwlpZiAoIWZiKQ0KPiArCQlyZXR1cm4gMDsNCj4gKw0KPiArCWluZm8g PSBkcm1fZm9ybWF0X2luZm8oZmItPmZvcm1hdC0+Zm9ybWF0KTsNCj4gKwlpZiAoIWluZm8g fHwgaW5mby0+bnVtX3BsYW5lcyA+IERSTV9GT1JNQVRfTUFYX1BMQU5FUykNCj4gKwkJcmV0 dXJuIDA7DQo+ICsNCj4gKwlyZXR1cm4gaW5mby0+bnVtX3BsYW5lczsNCj4gK30NCj4gKw0K PiArc3RhdGljIGludCB2c19wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsDQo+ICsJCQkJIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkNCj4gK3sN Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGUgPSBkcm1fYXRv bWljX2dldF9uZXdfcGxhbmVfc3RhdGUoc3RhdGUsDQo+ICsJCQkJCQkJCQkJIHBsYW5lKTsN Cj4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IG5ld19wbGFuZV9zdGF0ZS0+ZmI7 DQo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gbmV3X3BsYW5lX3N0YXRlLT5jcnRjOw0K PiArCXN0cnVjdCB2c19jcnRjICp2c19jcnRjID0gdG9fdnNfY3J0YyhjcnRjKTsNCj4gKw0K PiArCWlmICghY3J0YyB8fCAhZmIpDQo+ICsJCXJldHVybiAwOw0KPiArDQo+ICsJcmV0dXJu IHZzX2RjX2NoZWNrX3BsYW5lKHZzX2NydGMtPmRldiwgcGxhbmUsIHN0YXRlKTsNCj4gK30N Cj4gKw0KPiArc3RhdGljIGludCB2c19jdXJzb3JfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLA0KPiArCQkJCQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUpDQo+ICt7DQo+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3BsYW5lX3N0 YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X3BsYW5lX3N0YXRlKHN0YXRlLA0KPiArCQkJCQkJ CQkJICBwbGFuZSk7DQo+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBuZXdfcGxh bmVfc3RhdGUtPmZiOw0KPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IG5ld19wbGFuZV9z dGF0ZS0+Y3J0YzsNCj4gKwlzdHJ1Y3QgdnNfY3J0YyAqdnNfY3J0YyA9IHRvX3ZzX2NydGMo Y3J0Yyk7DQo+ICsNCj4gKwlpZiAoIWNydGMgfHwgIWZiKQ0KPiArCQlyZXR1cm4gMDsNCj4g Kw0KPiArCXJldHVybiB2c19kY19jaGVja19jdXJzb3JfcGxhbmUodnNfY3J0Yy0+ZGV2LCBw bGFuZSwgc3RhdGUpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCB2c19wbGFuZV9hdG9t aWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLA0KPiArCQkJCSAgIHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0 YXRlICpuZXdfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfcGxhbmVfc3RhdGUoc3RhdGUs DQo+ICsJCQkJCQkJCQkgICBwbGFuZSk7DQo+ICsJdW5zaWduZWQgY2hhciBpLCBudW1fcGxh bmVzOw0KPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOw0KPiArCXN0cnVjdCB2c19w bGFuZSAqdnNfcGxhbmUgPSB0b192c19wbGFuZShwbGFuZSk7DQo+ICsJc3RydWN0IHZzX2Ny dGMgKnZzX2NydGMgPSB0b192c19jcnRjKG5ld19zdGF0ZS0+Y3J0Yyk7DQo+ICsJc3RydWN0 IHZzX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSA9IHRvX3ZzX3BsYW5lX3N0YXRlKG5ld19z dGF0ZSk7DQo+ICsNCj4gKwlpZiAoIW5ld19zdGF0ZS0+ZmIgfHwgIW5ld19zdGF0ZS0+Y3J0 YykNCj4gKwkJcmV0dXJuOw0KPiArDQo+ICsJZmIgPSBuZXdfc3RhdGUtPmZiOw0KPiArDQo+ ICsJbnVtX3BsYW5lcyA9IHZzX2dldF9wbGFuZV9udW1iZXIoZmIpOw0KPiArDQo+ICsJZm9y IChpID0gMDsgaSA8IG51bV9wbGFuZXM7IGkrKykgew0KPiArCQlzdHJ1Y3QgdnNfZ2VtX29i amVjdCAqdnNfb2JqOw0KPiArDQo+ICsJCXZzX29iaiA9IHZzX2ZiX2dldF9nZW1fb2JqKGZi LCBpKTsNCj4gKwkJdnNfcGxhbmUtPmRtYV9hZGRyW2ldID0gdnNfb2JqLT5pb3ZhICsgZmIt Pm9mZnNldHNbaV07DQo+ICsJfQ0KPiArDQo+ICsJcGxhbmVfc3RhdGUtPnN0YXR1cy5zcmMg PSBkcm1fcGxhbmVfc3RhdGVfc3JjKG5ld19zdGF0ZSk7DQo+ICsJcGxhbmVfc3RhdGUtPnN0 YXR1cy5kZXN0ID0gZHJtX3BsYW5lX3N0YXRlX2Rlc3QobmV3X3N0YXRlKTsNCj4gKw0KPiAr CXZzX2RjX3VwZGF0ZV9wbGFuZSh2c19jcnRjLT5kZXYsIHZzX3BsYW5lLCBwbGFuZSwgc3Rh dGUpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCB2c19jdXJzb3JfcGxhbmVfYXRvbWlj X3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwNCj4gKwkJCQkJICBzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+ICt7DQo+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSAqbmV3X3N0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X3BsYW5lX3N0YXRlKHN0YXRlLA0K PiArCQkJCQkJCQkJICBwbGFuZSk7DQo+ICsJdW5zaWduZWQgY2hhciBpLCBudW1fcGxhbmVz Ow0KPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOw0KPiArCXN0cnVjdCB2c19wbGFu ZSAqdnNfcGxhbmUgPSB0b192c19wbGFuZShwbGFuZSk7DQo+ICsJc3RydWN0IHZzX2NydGMg KnZzX2NydGMgPSB0b192c19jcnRjKG5ld19zdGF0ZS0+Y3J0Yyk7DQo+ICsJc3RydWN0IHZz X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSA9IHRvX3ZzX3BsYW5lX3N0YXRlKG5ld19zdGF0 ZSk7DQo+ICsNCj4gKwlpZiAoIW5ld19zdGF0ZS0+ZmIgfHwgIW5ld19zdGF0ZS0+Y3J0YykN Cj4gKwkJcmV0dXJuOw0KPiArDQo+ICsJZmIgPSBuZXdfc3RhdGUtPmZiOw0KPiArDQo+ICsJ bnVtX3BsYW5lcyA9IHZzX2dldF9wbGFuZV9udW1iZXIoZmIpOw0KPiArDQo+ICsJZm9yIChp ID0gMDsgaSA8IG51bV9wbGFuZXM7IGkrKykgew0KPiArCQlzdHJ1Y3QgdnNfZ2VtX29iamVj dCAqdnNfb2JqOw0KPiArDQo+ICsJCXZzX29iaiA9IHZzX2ZiX2dldF9nZW1fb2JqKGZiLCBp KTsNCj4gKwkJdnNfcGxhbmUtPmRtYV9hZGRyW2ldID0gdnNfb2JqLT5pb3ZhICsgZmItPm9m ZnNldHNbaV07DQo+ICsJfQ0KPiArDQo+ICsJcGxhbmVfc3RhdGUtPnN0YXR1cy5zcmMgPSBk cm1fcGxhbmVfc3RhdGVfc3JjKG5ld19zdGF0ZSk7DQo+ICsJcGxhbmVfc3RhdGUtPnN0YXR1 cy5kZXN0ID0gZHJtX3BsYW5lX3N0YXRlX2Rlc3QobmV3X3N0YXRlKTsNCj4gKw0KPiArCXZz X2RjX3VwZGF0ZV9jdXJzb3JfcGxhbmUodnNfY3J0Yy0+ZGV2LCB2c19wbGFuZSwgcGxhbmUs IHN0YXRlKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgdnNfcGxhbmVfYXRvbWljX2Rp c2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsDQo+ICsJCQkJICAgIHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl ICpvbGRfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9vbGRfcGxhbmVfc3RhdGUoc3RhdGUsDQo+ ICsJCQkJCQkJCQkJICAgcGxhbmUpOw0KPiArCXN0cnVjdCB2c19wbGFuZSAqdnNfcGxhbmUg PSB0b192c19wbGFuZShwbGFuZSk7DQo+ICsJc3RydWN0IHZzX2NydGMgKnZzX2NydGMgPSB0 b192c19jcnRjKG9sZF9zdGF0ZS0+Y3J0Yyk7DQo+ICsNCj4gKwl2c19kY19kaXNhYmxlX3Bs YW5lKHZzX2NydGMtPmRldiwgdnNfcGxhbmUsIG9sZF9zdGF0ZSk7DQo+ICt9DQo+ICsNCj4g K3N0YXRpYyB2b2lkIHZzX2N1cnNvcl9wbGFuZV9hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwNCj4gKwkJCQkJICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKQ0KPiArew0KPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSA9IGRy bV9hdG9taWNfZ2V0X29sZF9wbGFuZV9zdGF0ZShzdGF0ZSwNCj4gKwkJCQkJCQkJCQkgICBw bGFuZSk7DQo+ICsJc3RydWN0IHZzX3BsYW5lICp2c19wbGFuZSA9IHRvX3ZzX3BsYW5lKHBs YW5lKTsNCj4gKwlzdHJ1Y3QgdnNfY3J0YyAqdnNfY3J0YyA9IHRvX3ZzX2NydGMob2xkX3N0 YXRlLT5jcnRjKTsNCj4gKw0KPiArCXZzX2RjX2Rpc2FibGVfY3Vyc29yX3BsYW5lKHZzX2Ny dGMtPmRldiwgdnNfcGxhbmUsIG9sZF9zdGF0ZSk7DQo+ICt9DQo+ICsNCj4gK2NvbnN0IHN0 cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIHByaW1hcnlfcGxhbmVfaGVscGVycyA9IHsN Cj4gKwkuYXRvbWljX2NoZWNrCT0gdnNfcGxhbmVfYXRvbWljX2NoZWNrLA0KPiArCS5hdG9t aWNfdXBkYXRlCT0gdnNfcGxhbmVfYXRvbWljX3VwZGF0ZSwNCj4gKwkuYXRvbWljX2Rpc2Fi bGUgPSB2c19wbGFuZV9hdG9taWNfZGlzYWJsZSwNCj4gK307DQo+ICsNCj4gK2NvbnN0IHN0 cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIG92ZXJsYXlfcGxhbmVfaGVscGVycyA9IHsN Cj4gKwkuYXRvbWljX2NoZWNrCT0gdnNfcGxhbmVfYXRvbWljX2NoZWNrLA0KPiArCS5hdG9t aWNfdXBkYXRlCT0gdnNfcGxhbmVfYXRvbWljX3VwZGF0ZSwNCj4gKwkuYXRvbWljX2Rpc2Fi bGUgPSB2c19wbGFuZV9hdG9taWNfZGlzYWJsZSwNCj4gK307DQo+ICsNCj4gK2NvbnN0IHN0 cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIGN1cnNvcl9wbGFuZV9oZWxwZXJzID0gew0K PiArCS5hdG9taWNfY2hlY2sJPSB2c19jdXJzb3JfcGxhbmVfYXRvbWljX2NoZWNrLA0KPiAr CS5hdG9taWNfdXBkYXRlCT0gdnNfY3Vyc29yX3BsYW5lX2F0b21pY191cGRhdGUsDQo+ICsJ LmF0b21pY19kaXNhYmxlID0gdnNfY3Vyc29yX3BsYW5lX2F0b21pY19kaXNhYmxlLA0KPiAr fTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcHJvcF9lbnVtX2xpc3QgdnNf ZGVnYW1tYV9tb2RlX2VudW1fbGlzdFtdID0gew0KPiArCXsgVlNfREVHQU1NQV9ESVNBQkxF LAkiZGlzYWJsZWQiIH0sDQo+ICsJeyBWU19ERUdBTU1BX0JUNzA5LAkJInByZXNldCBkZWdh bW1hIGZvciBCVDcwOSIgfSwNCj4gKwl7IFZTX0RFR0FNTUFfQlQyMDIwLAkicHJlc2V0IGRl Z2FtbWEgZm9yIEJUMjAyMCIgfSwNCj4gK307DQo+ICsNCj4gK3N0cnVjdCB2c19wbGFuZSAq dnNfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LA0KPiArCQkJCSBz dHJ1Y3QgdnNfcGxhbmVfaW5mbyAqaW5mbywNCj4gKwkJCQkgdW5zaWduZWQgaW50IGxheWVy X251bSwNCj4gKwkJCQkgdW5zaWduZWQgaW50IHBvc3NpYmxlX2NydGNzKQ0KPiArew0KPiAr CXN0cnVjdCB2c19wbGFuZSAqcGxhbmU7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCWlmICgh aW5mbykNCj4gKwkJcmV0dXJuIE5VTEw7DQo+ICsNCj4gKwlwbGFuZSA9IGRybW1fa3phbGxv Yyhkcm1fZGV2LCBzaXplb2YoKnBsYW5lKSwgR0ZQX0tFUk5FTCk7DQo+ICsJaWYgKCFwbGFu ZSkNCj4gKwkJcmV0dXJuIE5VTEw7DQoNClRoaXMgYWxsb2NhdGlvbiBpcyBub3QgbmVjZXNz YXJ5Lg0KDQo+ICsNCj4gKwlwbGFuZSA9IGRybW1fdW5pdmVyc2FsX3BsYW5lX2FsbG9jKGRy bV9kZXYsIHN0cnVjdCB2c19wbGFuZSwgYmFzZSwNCj4gKwkJCQkJICAgcG9zc2libGVfY3J0 Y3MsDQo+ICsJCQkJCSAgICZ2c19wbGFuZV9mdW5jcywNCj4gKwkJCQkJICAgaW5mby0+Zm9y bWF0cywgaW5mby0+bnVtX2Zvcm1hdHMsDQo+ICsJCQkJCSAgIGluZm8tPm1vZGlmaWVycywg aW5mby0+dHlwZSwNCj4gKwkJCQkJICAgaW5mby0+bmFtZSA/IGluZm8tPm5hbWUgOiBOVUxM KTsNCj4gKwlpZiAoSVNfRVJSKHBsYW5lKSkNCj4gKwkJcmV0dXJuIEVSUl9DQVNUKHBsYW5l KTsNCj4gKw0KPiArCWlmICghc3RyY21wKGluZm8tPm5hbWUsICJQcmltYXJ5IikgfHwNCj4g KwkgICAgIXN0cmNtcChpbmZvLT5uYW1lLCAiUHJpbWFyeV8xIikpIHsNCj4gKwkJZHJtX3Bs YW5lX2hlbHBlcl9hZGQoJnBsYW5lLT5iYXNlLCAmcHJpbWFyeV9wbGFuZV9oZWxwZXJzKTsN Cj4gKwl9IGVsc2UgaWYgKCFzdHJjbXAoaW5mby0+bmFtZSwgIkN1cnNvcl8xIikgfHwNCj4g KwkJCSAgICFzdHJjbXAoaW5mby0+bmFtZSwgIkN1cnNvciIpKSB7DQo+ICsJCWRybV9wbGFu ZV9oZWxwZXJfYWRkKCZwbGFuZS0+YmFzZSwgJmN1cnNvcl9wbGFuZV9oZWxwZXJzKTsNCj4g Kwl9IGVsc2Ugew0KPiArCQlkcm1fcGxhbmVfaGVscGVyX2FkZCgmcGxhbmUtPmJhc2UsICZv dmVybGF5X3BsYW5lX2hlbHBlcnMpOw0KPiArCX0NCg0KUmF0aGVyIGxvb2sgYXQgdGhlIGlu Zm8tPnR5cGUgaGVyZSB0aGFuIGF0IHRoZSBuYW1lLg0KDQo+ICsNCj4gKwkvKiBTZXQgdXAg dGhlIHBsYW5lIHByb3BlcnRpZXMgKi8NCj4gKwlpZiAoaW5mby0+ZGVnYW1tYV9zaXplKSB7 DQo+ICsJCXBsYW5lLT5kZWdhbW1hX21vZGUgPQ0KPiArCQlkcm1fcHJvcGVydHlfY3JlYXRl X2VudW0oZHJtX2RldiwgMCwNCj4gKwkJCQkJICJERUdBTU1BX01PREUiLA0KPiArCQkJCQkg dnNfZGVnYW1tYV9tb2RlX2VudW1fbGlzdCwNCj4gKwkJCQkJIEFSUkFZX1NJWkUodnNfZGVn YW1tYV9tb2RlX2VudW1fbGlzdCkpOw0KPiArDQo+ICsJCWlmICghcGxhbmUtPmRlZ2FtbWFf bW9kZSkNCj4gKwkJCXJldHVybiBOVUxMOw0KPiArDQo+ICsJCWRybV9vYmplY3RfYXR0YWNo X3Byb3BlcnR5KCZwbGFuZS0+YmFzZS5iYXNlLA0KPiArCQkJCQkgICBwbGFuZS0+ZGVnYW1t YV9tb2RlLA0KPiArCQkJCQkgICBWU19ERUdBTU1BX0RJU0FCTEUpOw0KPiArCX0NCj4gKw0K PiArCWlmIChpbmZvLT5yb3RhdGlvbikgew0KPiArCQlyZXQgPSBkcm1fcGxhbmVfY3JlYXRl X3JvdGF0aW9uX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwNCj4gKwkJCQkJCQkgRFJNX01PREVf Uk9UQVRFXzAsDQo+ICsJCQkJCQkJIGluZm8tPnJvdGF0aW9uKTsNCj4gKwkJaWYgKHJldCkN Cj4gKwkJCXJldHVybiBOVUxMOw0KPiArCX0NCj4gKw0KPiArCWlmIChpbmZvLT5ibGVuZF9t b2RlKSB7DQo+ICsJCXJldCA9IGRybV9wbGFuZV9jcmVhdGVfYmxlbmRfbW9kZV9wcm9wZXJ0 eSgmcGxhbmUtPmJhc2UsDQo+ICsJCQkJCQkJICAgaW5mby0+YmxlbmRfbW9kZSk7DQo+ICsJ CWlmIChyZXQpDQo+ICsJCQlyZXR1cm4gTlVMTDsNCj4gKwkJcmV0ID0gZHJtX3BsYW5lX2Ny ZWF0ZV9hbHBoYV9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UpOw0KPiArCQlpZiAocmV0KQ0KPiAr CQkJcmV0dXJuIE5VTEw7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKGluZm8tPmNvbG9yX2VuY29k aW5nKSB7DQo+ICsJCXJldCA9IGRybV9wbGFuZV9jcmVhdGVfY29sb3JfcHJvcGVydGllcygm cGxhbmUtPmJhc2UsDQo+ICsJCQkJCQkJaW5mby0+Y29sb3JfZW5jb2RpbmcsDQo+ICsJCQkJ CQkJQklUKERSTV9DT0xPUl9ZQ0JDUl9MSU1JVEVEX1JBTkdFKSwNCj4gKwkJCQkJCQlEUk1f Q09MT1JfWUNCQ1JfQlQ3MDksDQo+ICsJCQkJCQkJRFJNX0NPTE9SX1lDQkNSX0xJTUlURURf UkFOR0UpOw0KPiArCQlpZiAocmV0KQ0KPiArCQkJcmV0dXJuIE5VTEw7DQo+ICsJfQ0KPiAr DQo+ICsJaWYgKGluZm8tPnpwb3MgIT0gMjU1KSB7DQo+ICsJCXJldCA9IGRybV9wbGFuZV9j cmVhdGVfenBvc19wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIGluZm8tPnpwb3MsIDAsDQo+ICsJ CQkJCQkgICAgIGxheWVyX251bSAtIDEpOw0KPiArCQlpZiAocmV0KQ0KPiArCQkJcmV0dXJu IE5VTEw7DQo+ICsJfSBlbHNlIHsNCj4gKwkJcmV0ID0gZHJtX3BsYW5lX2NyZWF0ZV96cG9z X2ltbXV0YWJsZV9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsDQo+ICsJCQkJCQkJICAgICAgIGlu Zm8tPnpwb3MpOw0KPiArCQlpZiAocmV0KQ0KPiArCQkJcmV0dXJuIE5VTEw7DQo+ICsJfQ0K PiArDQo+ICsJaWYgKGluZm8tPndhdGVybWFyaykgew0KPiArCQlwbGFuZS0+d2F0ZXJtYXJr X3Byb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlKGRybV9kZXYsIERSTV9NT0RFX1BST1BfQkxP QiwNCj4gKwkJCQkJCQkgICAgIldBVEVSTUFSSyIsIDApOw0KPiArCQlpZiAoIXBsYW5lLT53 YXRlcm1hcmtfcHJvcCkNCj4gKwkJCXJldHVybiBOVUxMOw0KPiArCQlkcm1fb2JqZWN0X2F0 dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UuYmFzZSwgcGxhbmUtPndhdGVybWFya19wcm9w LCAwKTsNCj4gKwl9DQo+ICsNCj4gKwlpZiAoaW5mby0+Y29sb3JfbWdtdCkgew0KPiArCQlw bGFuZS0+Y29sb3JfbWdtdF9wcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZShkcm1fZGV2LCBE Uk1fTU9ERV9QUk9QX0JMT0IsDQo+ICsJCQkJCQkJICAgICAiQ09MT1JfQ09ORklHIiwgMCk7 DQo+ICsJCWlmICghcGxhbmUtPmNvbG9yX21nbXRfcHJvcCkNCj4gKwkJCXJldHVybiBOVUxM Ow0KPiArDQo+ICsJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZS5i YXNlLCBwbGFuZS0+Y29sb3JfbWdtdF9wcm9wLCAwKTsNCj4gKwl9DQo+ICsNCj4gKwlpZiAo aW5mby0+cm9pKSB7DQo+ICsJCXBsYW5lLT5yb2lfcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVh dGUoZHJtX2RldiwgRFJNX01PREVfUFJPUF9CTE9CLA0KPiArCQkJCQkJICAgICAgIlJPSSIs IDApOw0KPiArCQlpZiAoIXBsYW5lLT5yb2lfcHJvcCkNCj4gKwkJCXJldHVybiBOVUxMOw0K PiArDQo+ICsJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZS5iYXNl LCBwbGFuZS0+cm9pX3Byb3AsIDApOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiBwbGFuZTsN Cj4gK30NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19w bGFuZS5oIGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX3BsYW5lLmgNCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwLi5kODRiMWFiZDkNCj4gLS0t IC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfcGxh bmUuaA0KPiBAQCAtMCwwICsxLDY1IEBADQo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMCAqLw0KPiArLyoNCj4gKyAqIENvcHlyaWdodCAoQykgMjAyMyBWZXJpU2ls aWNvbiBIb2xkaW5ncyBDby4sIEx0ZC4NCj4gKyAqLw0KPiArDQo+ICsjaWZuZGVmIF9fVlNf UExBTkVfSF9fDQo+ICsjZGVmaW5lIF9fVlNfUExBTkVfSF9fDQo+ICsNCj4gKyNpbmNsdWRl IDxkcm0vZHJtX2ZvdXJjYy5oPg0KPiArI2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVy Lmg+DQo+ICsNCj4gKyNpbmNsdWRlICJ2c19tb2Rlc2V0LmgiDQo+ICsjaW5jbHVkZSAidnNf dHlwZS5oIg0KPiArDQo+ICtzdHJ1Y3QgdnNfcGxhbmU7DQo+ICsNCj4gK3N0cnVjdCB2c19w bGFuZV9zdGF0dXMgew0KPiArCXUzMiB0aWxlX21vZGU7DQo+ICsJc3RydWN0IGRybV9yZWN0 IHNyYzsNCj4gKwlzdHJ1Y3QgZHJtX3JlY3QgZGVzdDsNCj4gK307DQo+ICsNCj4gK3N0cnVj dCB2c19wbGFuZV9zdGF0ZSB7DQo+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBiYXNlOw0K PiArCXN0cnVjdCB2c19wbGFuZV9zdGF0dXMgc3RhdHVzOyAvKiBmb3IgZGVidWdmcyAqLw0K PiArDQo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICp3YXRlcm1hcms7DQo+ICsJc3Ry dWN0IGRybV9wcm9wZXJ0eV9ibG9iICpjb2xvcl9tZ210Ow0KPiArCXN0cnVjdCBkcm1fcHJv cGVydHlfYmxvYiAqcm9pOw0KPiArDQo+ICsJdTMyIGRlZ2FtbWE7DQo+ICsJYm9vbCBkZWdh bW1hX2NoYW5nZWQ7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgdnNfcGxhbmUgew0KPiArCXN0 cnVjdCBkcm1fcGxhbmUgYmFzZTsNCj4gKwl1OCBpZDsNCj4gKwlkbWFfYWRkcl90IGRtYV9h ZGRyW0RSTV9GT1JNQVRfTUFYX1BMQU5FU107DQoNClRoaXMgY2hhbmdlcyB3aXRoIGVhY2gg cGxhbmUgdXBkYXRlLCBzbyBpdCBiZWxvbmdzIGludG8gdGhlIA0KdnNfcGxhbmVfc3RhdGUu IFlvdSBzZXQgaXQgaW4gdGhlIHBsYW5lJ3MgYXRvbWljX2NoZWNrIGFuZCBsYXRlciB1c2Ug aXQgDQppbiBhdG9taWNfdXBkYXRlLg0KDQo+ICsNCj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5 ICpkZWdhbW1hX21vZGU7DQo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAqd2F0ZXJtYXJrX3By b3A7DQo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAqY29sb3JfbWdtdF9wcm9wOw0KPiArCXN0 cnVjdCBkcm1fcHJvcGVydHkgKnJvaV9wcm9wOw0KPiArDQo+ICsJY29uc3Qgc3RydWN0IHZz X3BsYW5lX2Z1bmNzICpmdW5jczsNCg0KVGhpcyB0eXBlIGRvZXMgbm90IGV4aXN0IGFueSBs b25nZXIuDQoNCj4gK307DQo+ICsNCj4gK3ZvaWQgdnNfcGxhbmVfZGVzdG9yeShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSk7DQoNCidkZXN0b3J5Jw0KDQpJdCBhcHBlYXJzIHRvIGJlIHVu dXNlZC4NCg0KQmVzdCByZWdhcmRzDQpUaG9tYXMNCg0KPiArDQo+ICtzdHJ1Y3QgdnNfcGxh bmUgKnZzX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiwNCj4gKwkJ CQkgc3RydWN0IHZzX3BsYW5lX2luZm8gKmluZm8sDQo+ICsJCQkJIHVuc2lnbmVkIGludCBs YXllcl9udW0sDQo+ICsJCQkJIHVuc2lnbmVkIGludCBwb3NzaWJsZV9jcnRjcyk7DQo+ICsN Cj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHZzX3BsYW5lICp0b192c19wbGFuZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSkNCj4gK3sNCj4gKwlyZXR1cm4gY29udGFpbmVyX29mKHBsYW5l LCBzdHJ1Y3QgdnNfcGxhbmUsIGJhc2UpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5l IHN0cnVjdCB2c19wbGFuZV9zdGF0ZSAqDQo+ICt0b192c19wbGFuZV9zdGF0ZShzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkNCj4gK3sNCj4gKwlyZXR1cm4gY29udGFpbmVyX29m KHN0YXRlLCBzdHJ1Y3QgdnNfcGxhbmVfc3RhdGUsIGJhc2UpOw0KPiArfQ0KPiArI2VuZGlm IC8qIF9fVlNfUExBTkVfSF9fICovDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dmVyaXNpbGljb24vdnNfdHlwZS5oIGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3Zz X3R5cGUuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAuLjgw NDA4Y2RiOA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92ZXJp c2lsaWNvbi92c190eXBlLmgNCj4gQEAgLTAsMCArMSw3MCBAQA0KPiArLyogU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8NCj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgKEMp IDIwMjMgVmVyaVNpbGljb24gSG9sZGluZ3MgQ28uLCBMdGQuDQo+ICsgKi8NCj4gKw0KPiAr I2lmbmRlZiBfX1ZTX1RZUEVfSF9fDQo+ICsjZGVmaW5lIF9fVlNfVFlQRV9IX18NCj4gKw0K PiArI2luY2x1ZGUgPGRybS9kcm1fcGxhbmUuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX3Bs YW5lX2hlbHBlci5oPg0KPiArDQo+ICtzdHJ1Y3QgdnNfcGxhbmVfaW5mbyB7DQo+ICsJY29u c3QgY2hhciAqbmFtZTsNCj4gKwl1OCBpZDsNCj4gKwllbnVtIGRybV9wbGFuZV90eXBlIHR5 cGU7DQo+ICsJdW5zaWduZWQgaW50IG51bV9mb3JtYXRzOw0KPiArCWNvbnN0IHUzMiAqZm9y bWF0czsNCj4gKwl1OCBudW1fbW9kaWZpZXJzOw0KPiArCWNvbnN0IHU2NCAqbW9kaWZpZXJz Ow0KPiArCXVuc2lnbmVkIGludCBtaW5fd2lkdGg7DQo+ICsJdW5zaWduZWQgaW50IG1pbl9o ZWlnaHQ7DQo+ICsJdW5zaWduZWQgaW50IG1heF93aWR0aDsNCj4gKwl1bnNpZ25lZCBpbnQg bWF4X2hlaWdodDsNCj4gKwl1bnNpZ25lZCBpbnQgcm90YXRpb247DQo+ICsJdW5zaWduZWQg aW50IGJsZW5kX21vZGU7DQo+ICsJdW5zaWduZWQgaW50IGNvbG9yX2VuY29kaW5nOw0KPiAr DQo+ICsJLyogMCBtZWFucyBubyBkZS1nYW1tYSBMVVQgKi8NCj4gKwl1bnNpZ25lZCBpbnQg ZGVnYW1tYV9zaXplOw0KPiArDQo+ICsJaW50IG1pbl9zY2FsZTsgLyogMTYuMTYgZml4ZWQg cG9pbnQgKi8NCj4gKwlpbnQgbWF4X3NjYWxlOyAvKiAxNi4xNiBmaXhlZCBwb2ludCAqLw0K PiArDQo+ICsJLyogZGVmYXVsdCB6b3JkZXIgdmFsdWUsDQo+ICsJICogYW5kIDI1NSBtZWFu cyB1bnN1cHBvcnRlZCB6b3JkZXIgY2FwYWJpbGl0eQ0KPiArCSAqLw0KPiArCXU4CSB6cG9z Ow0KPiArDQo+ICsJYm9vbCB3YXRlcm1hcms7DQo+ICsJYm9vbCBjb2xvcl9tZ210Ow0KPiAr CWJvb2wgcm9pOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IHZzX2RjX2luZm8gew0KPiArCWNv bnN0IGNoYXIgKm5hbWU7DQo+ICsNCj4gKwl1OCBwYW5lbF9udW07DQo+ICsNCj4gKwkvKiBw bGFuZXMgKi8NCj4gKwl1OCBwbGFuZV9udW07DQo+ICsJY29uc3Qgc3RydWN0IHZzX3BsYW5l X2luZm8gKnBsYW5lczsNCj4gKw0KPiArCXU4IGxheWVyX251bTsNCj4gKwl1bnNpZ25lZCBp bnQgbWF4X2JwYzsNCj4gKwl1bnNpZ25lZCBpbnQgY29sb3JfZm9ybWF0czsNCj4gKw0KPiAr CS8qIDAgbWVhbnMgbm8gZ2FtbWEgTFVUICovDQo+ICsJdTE2IGdhbW1hX3NpemU7DQo+ICsJ dTggZ2FtbWFfYml0czsNCj4gKw0KPiArCXUxNiBwaXRjaF9hbGlnbm1lbnQ7DQo+ICsNCj4g Kwlib29sIHBpcGVfc3luYzsNCj4gKwlib29sIG1tdV9wcmVmZXRjaDsNCj4gKwlib29sIGJh Y2tncm91bmQ7DQo+ICsJYm9vbCBwYW5lbF9zeW5jOw0KPiArCWJvb2wgY2FwX2RlYzsNCj4g K307DQo+ICsNCj4gKyNlbmRpZiAvKiBfX1ZTX1RZUEVfSF9fICovDQoNCi0tIA0KVGhvbWFz IFppbW1lcm1hbm4NCkdyYXBoaWNzIERyaXZlciBEZXZlbG9wZXINClNVU0UgU29mdHdhcmUg U29sdXRpb25zIEdlcm1hbnkgR21iSA0KRnJhbmtlbnN0cmFzc2UgMTQ2LCA5MDQ2MSBOdWVy bmJlcmcsIEdlcm1hbnkNCkdGOiBJdm8gVG90ZXYsIEFuZHJldyBNeWVycywgQW5kcmV3IE1j RG9uYWxkLCBCb3VkaWVuIE1vZXJtYW4NCkhSQiAzNjgwOSAoQUcgTnVlcm5iZXJnKQ0K --------------3zhn2LAz3EZokvBzgFV4dWr1-- --------------ISFZbSuFA8dNQD300wbqZTXg Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEExndm/fpuMUdwYFFolh/E3EQov+AFAmT4jX4FAwAAAAAACgkQlh/E3EQov+Br 8BAAnX0BBaS4T7u7073ImfR5/+neWkmbAJrN6N2VPxYiQizumG1GNkKQO2ZsNhfpFRXqQ7Jx5sp4 GjWU2KyM3vmLcKLUzYM3eqmvxaNq8wGKVuxe00ZP06y2Leejv+uGiNIPZYrXNdJeQOer/viQMEYD q7NIaBUgqAbIxmYFjHaAXLSHWzA/qyroiEw99uAaR6DWm+MEuXCzNtzgGW91/k4t3fLkaYEkGo95 j2OCB32IyYFjCKtI+pdABBBCXPk4n23czhQs9MGTBZEr11N2fIwTiC4AD0oaJSSUgQG6ei7CFp2u WwpUy8/ASTZ0FAbRVNSaWXmN7A4uNP2yIOyVGtc6+BoDy4pZ3sZEJAokWHi5mP0vYjJ64nUbE3qr 7u3O6+E+F4V4FIuoHSYduPdp5JKrqdAjFH/GT0i94jGT8NTGVVB3shKwkNkxHgAaJcL5iDNc4oDw JI/YBlwTl+f6F4fvwcF1rk+OrxshuJZ4YiLIShEw4QrMjYTqRvrObTgbKHOifu2Z1uGWu/+pBGS+ Jn5V97h71zR48q/FbbHqbgzUQIIfnJEhTY7jNdkJZtpH3bRh5sY2cutuyYNz/rXkpfz+vd0z0dm+ EZNpZJECA+JjhikICePV6yhsLtivgCA+oJ+IX/SUo+dWXgvGxzCOqWJB7ibqiRiZ4bOgvDO5CtXq OKk= =urRj -----END PGP SIGNATURE----- --------------ISFZbSuFA8dNQD300wbqZTXg--