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 08228EB64DA for ; Fri, 30 Jun 2023 12:36:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232068AbjF3Mgs (ORCPT ); Fri, 30 Jun 2023 08:36:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34064 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230506AbjF3Mgr (ORCPT ); Fri, 30 Jun 2023 08:36:47 -0400 Received: from smtp-out1.suse.de (smtp-out1.suse.de [IPv6:2001:67c:2178:6::1c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A980F3A98; Fri, 30 Jun 2023 05:36:40 -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-out1.suse.de (Postfix) with ESMTPS id 336022189B; Fri, 30 Jun 2023 12:36:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1688128599; 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=/tcfpfIxxZRocL08ZvFlxaVtUPGIzKgLbNZQf9ElPS4=; b=kPUnClN2KLzSOvnzjsQU8Y43cXZe3dx3/K8tEL3UmqdiF7AKXMVG2eRfJcg60APqkwQm3k sAQSK7xh/r+rM+Dbyebo2pXwKSfWq+hyKnsUf+DEvqIViN45C7+IviD71n3f5am2dSIzTJ U8ASIVx+OIlrGAhyGf+aJAMfIdnLVMs= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1688128599; 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=/tcfpfIxxZRocL08ZvFlxaVtUPGIzKgLbNZQf9ElPS4=; b=QCDhY2hw8PV+VtHuBnaon7eQXG9W7It/6GfvYFYm1xy3F4UG9EENLjxr4wMvFMgnqVMzix wt8edxoTePRklGCg== 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 7CBB113915; Fri, 30 Jun 2023 12:36:38 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id dottHVbMnmR/TQAAMHmgww (envelope-from ); Fri, 30 Jun 2023 12:36:38 +0000 Message-ID: <3d8d5e16-a824-5e64-9ade-70f1e165c8c3@suse.de> Date: Fri, 30 Jun 2023 14:36:37 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: [PATCH 8/9] drm/verisilicon: Add verisilicon dc controller driver 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: David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Palmer Dabbelt , Albert Ou , Maarten Lankhorst , Maxime Ripard , Philipp Zabel , Sumit Semwal , christian.koenig@amd.com, Bjorn Andersson , Heiko Stuebner , Shawn Guo , Jagan Teki , Chris Morgan , Jack Zhu , Shengyang Chen , Changhuang Liang References: <20230602074043.33872-1-keith.zhao@starfivetech.com> <20230602074043.33872-9-keith.zhao@starfivetech.com> From: Thomas Zimmermann In-Reply-To: <20230602074043.33872-9-keith.zhao@starfivetech.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------SE18W9M4SEQEye607HhI3HOu" Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------SE18W9M4SEQEye607HhI3HOu Content-Type: multipart/mixed; boundary="------------dQYkcu7bU4aAU3eO5xIjN0JF"; 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: David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Palmer Dabbelt , Albert Ou , Maarten Lankhorst , Maxime Ripard , Philipp Zabel , Sumit Semwal , christian.koenig@amd.com, Bjorn Andersson , Heiko Stuebner , Shawn Guo , Jagan Teki , Chris Morgan , Jack Zhu , Shengyang Chen , Changhuang Liang Message-ID: <3d8d5e16-a824-5e64-9ade-70f1e165c8c3@suse.de> Subject: Re: [PATCH 8/9] drm/verisilicon: Add verisilicon dc controller driver References: <20230602074043.33872-1-keith.zhao@starfivetech.com> <20230602074043.33872-9-keith.zhao@starfivetech.com> In-Reply-To: <20230602074043.33872-9-keith.zhao@starfivetech.com> --------------dQYkcu7bU4aAU3eO5xIjN0JF Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 DQoNCkFtIDAyLjA2LjIzIHVtIDA5OjQwIHNjaHJpZWIgS2VpdGggWmhhbzoNCj4gQWRkIERD ODIwMCBkaXNwbGF5IGNvbnRyb2xsZXIgZHJpdmVyIGZvciBTdGFyRml2ZSBKSDcxMTAgU29D Lg0KPiANCj4gU2lnbmVkLW9mZi1ieTogS2VpdGggWmhhbyA8a2VpdGguemhhb0BzdGFyZml2 ZXRlY2guY29tPg0KPiAtLS0NCj4gICBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vTWFr ZWZpbGUgICB8ICAgIDQgKy0NCj4gICBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNf ZGMuYyAgICB8IDEwNDAgKysrKysrKysrKysrDQo+ICAgZHJpdmVycy9ncHUvZHJtL3Zlcmlz aWxpY29uL3ZzX2RjLmggICAgfCAgIDYyICsNCj4gICBkcml2ZXJzL2dwdS9kcm0vdmVyaXNp bGljb24vdnNfZGNfaHcuYyB8IDIwMDggKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICAg ZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2RjX2h3LmggfCAgNDk2ICsrKysrKw0K PiAgIGRyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19kcnYuYyAgIHwgICAgMiArDQo+ ICAgNiBmaWxlcyBjaGFuZ2VkLCAzNjExIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkN Cj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3Zz X2RjLmMNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxp Y29uL3ZzX2RjLmgNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3Zl cmlzaWxpY29uL3ZzX2RjX2h3LmMNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2RjX2h3LmgNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vdmVy aXNpbGljb24vTWFrZWZpbGUNCj4gaW5kZXggZDk2YWQ5Mzk5ZmM3Li4wZWQyNWI1ZTMwNjIg MTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi9NYWtlZmlsZQ0K PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vTWFrZWZpbGUNCj4gQEAgLTEs NyArMSw5IEBADQo+ICAgIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiAg IA0KPiAtdnNfZHJtLW9ianMgOj0gdnNfZHJ2Lm8gXA0KPiArdnNfZHJtLW9ianMgOj0gdnNf ZGNfaHcubyBcDQo+ICsJCXZzX2RjLm8gXA0KPiAgIAkJdnNfY3J0Yy5vIFwNCj4gKwkJdnNf ZHJ2Lm8gXA0KPiAgIAkJdnNfZmIubyBcDQo+ICAgCQl2c19nZW0ubyBcDQo+ICAgCQl2c19w bGFuZS5vDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNf ZGMuYyBiL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19kYy5jDQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYTUxMmFhYTU3ZjJmDQo+IC0t LSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2Rj LmMNCj4gQEAgLTAsMCArMSwxMDQwIEBADQo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMA0KPiArLyoNCj4gKyAqIENvcHlyaWdodCAoQykgMjAyMyBWZXJpU2lsaWNv biBIb2xkaW5ncyBDby4sIEx0ZC4NCj4gKyAqLw0KPiArDQo+ICsjaW5jbHVkZSA8bGludXgv Y29tcG9uZW50Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+DQo+ICsjaW5jbHVkZSA8 bGludXgvZGVsYXkuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9tZWRpYS1idXMtZm9ybWF0Lmg+ DQo+ICsjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPg0KPiArI2luY2x1ZGUgPGxpbnV4 L29mLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+DQo+ICsjaW5jbHVkZSA8 bGludXgvcG1fcnVudGltZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPg0KPiAr I2luY2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+DQo+ICsNCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0 b21pYy5oPg0KPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPg0KPiArI2lu Y2x1ZGUgPGRybS9kcm1fYmxlbmQuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZvdXJjYy5o Pg0KPiArI2luY2x1ZGUgPGRybS9kcm1fZnJhbWVidWZmZXIuaD4NCj4gKyNpbmNsdWRlIDxk cm0vZHJtX3ZibGFuay5oPg0KPiArI2luY2x1ZGUgPGRybS92c19kcm0uaD4NCj4gKw0KPiAr I2luY2x1ZGUgInZzX2NydGMuaCINCj4gKyNpbmNsdWRlICJ2c19kY19ody5oIg0KPiArI2lu Y2x1ZGUgInZzX2RjLmgiDQo+ICsjaW5jbHVkZSAidnNfZHJ2LmgiDQo+ICsjaW5jbHVkZSAi dnNfdHlwZS5oIg0KPiArDQo+ICtzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHZvdXRfY2xv Y2tzW10gPSB7DQo+ICsJImNsa192b3V0X25vY19kaXNwIiwNCj4gKwkiY2xrX3ZvdXRfcGl4 MCIsDQo+ICsJImNsa192b3V0X3BpeDEiLA0KPiArCSJjbGtfdm91dF9heGkiLA0KPiArCSJj bGtfdm91dF9jb3JlIiwNCj4gKwkiY2xrX3ZvdXRfdm91dF9haGIiLA0KPiArCSJoZG1pdHgw X3BpeGVsIiwNCj4gKwkiY2xrX3ZvdXRfZGM4MjAwIiwNCj4gKw0KPiArfTsNCj4gKw0KPiAr c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB2b3V0X3Jlc2V0c1tdID0gew0KPiArCSJyc3Rf dm91dF9heGkiLA0KPiArCSJyc3Rfdm91dF9haGIiLA0KPiArCSJyc3Rfdm91dF9jb3JlIiwN Cj4gK307DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVfZm9ybWF0KHUzMiBm b3JtYXQsIHU2NCBtb2QsIHN0cnVjdCBkY19od19mYiAqZmIpDQo+ICt7DQo+ICsJdTggZiA9 IEZPUk1BVF9BOFI4RzhCODsNCj4gKw0KPiArCXN3aXRjaCAoZm9ybWF0KSB7DQo+ICsJY2Fz ZSBEUk1fRk9STUFUX1hSR0I0NDQ0Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9SR0JYNDQ0NDoN Cj4gKwljYXNlIERSTV9GT1JNQVRfWEJHUjQ0NDQ6DQo+ICsJY2FzZSBEUk1fRk9STUFUX0JH Ulg0NDQ0Og0KPiArCQlmID0gRk9STUFUX1g0UjRHNEI0Ow0KPiArCQlicmVhazsNCj4gKwlj YXNlIERSTV9GT1JNQVRfQVJHQjQ0NDQ6DQo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQkE0NDQ0 Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9BQkdSNDQ0NDoNCj4gKwljYXNlIERSTV9GT1JNQVRf QkdSQTQ0NDQ6DQo+ICsJCWYgPSBGT1JNQVRfQTRSNEc0QjQ7DQo+ICsJCWJyZWFrOw0KPiAr CWNhc2UgRFJNX0ZPUk1BVF9YUkdCMTU1NToNCj4gKwljYXNlIERSTV9GT1JNQVRfUkdCWDU1 NTE6DQo+ICsJY2FzZSBEUk1fRk9STUFUX1hCR1IxNTU1Og0KPiArCWNhc2UgRFJNX0ZPUk1B VF9CR1JYNTU1MToNCj4gKwkJZiA9IEZPUk1BVF9YMVI1RzVCNTsNCj4gKwkJYnJlYWs7DQo+ ICsJY2FzZSBEUk1fRk9STUFUX0FSR0IxNTU1Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9SR0JB NTU1MToNCj4gKwljYXNlIERSTV9GT1JNQVRfQUJHUjE1NTU6DQo+ICsJY2FzZSBEUk1fRk9S TUFUX0JHUkE1NTUxOg0KPiArCQlmID0gRk9STUFUX0ExUjVHNUI1Ow0KPiArCQlicmVhazsN Cj4gKwljYXNlIERSTV9GT1JNQVRfUkdCNTY1Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9CR1I1 NjU6DQo+ICsJCWYgPSBGT1JNQVRfUjVHNkI1Ow0KPiArCQlicmVhazsNCj4gKwljYXNlIERS TV9GT1JNQVRfWFJHQjg4ODg6DQo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQlg4ODg4Og0KPiAr CWNhc2UgRFJNX0ZPUk1BVF9YQkdSODg4ODoNCj4gKwljYXNlIERSTV9GT1JNQVRfQkdSWDg4 ODg6DQo+ICsJCWYgPSBGT1JNQVRfWDhSOEc4Qjg7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2Ug RFJNX0ZPUk1BVF9BUkdCODg4ODoNCj4gKwljYXNlIERSTV9GT1JNQVRfUkdCQTg4ODg6DQo+ ICsJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9CR1JB ODg4ODoNCj4gKwkJZiA9IEZPUk1BVF9BOFI4RzhCODsNCj4gKwkJYnJlYWs7DQo+ICsJY2Fz ZSBEUk1fRk9STUFUX1lVWVY6DQo+ICsJY2FzZSBEUk1fRk9STUFUX1lWWVU6DQo+ICsJCWYg PSBGT1JNQVRfWVVZMjsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBEUk1fRk9STUFUX1VZVlk6 DQo+ICsJY2FzZSBEUk1fRk9STUFUX1ZZVVk6DQo+ICsJCWYgPSBGT1JNQVRfVVlWWTsNCj4g KwkJYnJlYWs7DQo+ICsJY2FzZSBEUk1fRk9STUFUX1lVVjQyMDoNCj4gKwljYXNlIERSTV9G T1JNQVRfWVZVNDIwOg0KPiArCQlmID0gRk9STUFUX1lWMTI7DQo+ICsJCWJyZWFrOw0KPiAr CWNhc2UgRFJNX0ZPUk1BVF9OVjIxOg0KPiArCQlmID0gRk9STUFUX05WMTI7DQo+ICsJCWJy ZWFrOw0KPiArCWNhc2UgRFJNX0ZPUk1BVF9OVjE2Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9O VjYxOg0KPiArCQlmID0gRk9STUFUX05WMTY7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgRFJN X0ZPUk1BVF9QMDEwOg0KPiArCQlmID0gRk9STUFUX1AwMTA7DQo+ICsJCWJyZWFrOw0KPiAr CWNhc2UgRFJNX0ZPUk1BVF9BUkdCMjEwMTAxMDoNCj4gKwljYXNlIERSTV9GT1JNQVRfUkdC QTEwMTAxMDI6DQo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1IyMTAxMDEwOg0KPiArCWNhc2Ug RFJNX0ZPUk1BVF9CR1JBMTAxMDEwMjoNCj4gKwkJZiA9IEZPUk1BVF9BMlIxMEcxMEIxMDsN Cj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBEUk1fRk9STUFUX05WMTI6DQo+ICsJCWlmIChmb3Vy Y2NfbW9kX3ZzX2dldF90eXBlKG1vZCkgPT0NCj4gKwkJCURSTV9GT1JNQVRfTU9EX1ZTX1RZ UEVfQ1VTVE9NXzEwQklUKQ0KPiArCQkJZiA9IEZPUk1BVF9OVjEyXzEwQklUOw0KPiArCQll bHNlDQo+ICsJCQlmID0gRk9STUFUX05WMTI7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgRFJN X0ZPUk1BVF9ZVVY0NDQ6DQo+ICsJCWlmIChmb3VyY2NfbW9kX3ZzX2dldF90eXBlKG1vZCkg PT0NCj4gKwkJCURSTV9GT1JNQVRfTU9EX1ZTX1RZUEVfQ1VTVE9NXzEwQklUKQ0KPiArCQkJ ZiA9IEZPUk1BVF9ZVVY0NDRfMTBCSVQ7DQo+ICsJCWVsc2UNCj4gKwkJCWYgPSBGT1JNQVRf WVVWNDQ0Ow0KPiArCQlicmVhazsNCj4gKwlkZWZhdWx0Og0KPiArCQlicmVhazsNCj4gKwl9 DQo+ICsNCj4gKwlmYi0+Zm9ybWF0ID0gZjsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGlu ZSB2b2lkIHVwZGF0ZV9zd2l6emxlKHUzMiBmb3JtYXQsIHN0cnVjdCBkY19od19mYiAqZmIp DQo+ICt7DQo+ICsJZmItPnN3aXp6bGUgPSBTV0laWkxFX0FSR0I7DQo+ICsJZmItPnV2X3N3 aXp6bGUgPSAwOw0KPiArDQo+ICsJc3dpdGNoIChmb3JtYXQpIHsNCj4gKwljYXNlIERSTV9G T1JNQVRfUkdCWDQ0NDQ6DQo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQkE0NDQ0Og0KPiArCWNh c2UgRFJNX0ZPUk1BVF9SR0JYNTU1MToNCj4gKwljYXNlIERSTV9GT1JNQVRfUkdCQTU1NTE6 DQo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQlg4ODg4Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9S R0JBODg4ODoNCj4gKwljYXNlIERSTV9GT1JNQVRfUkdCQTEwMTAxMDI6DQo+ICsJCWZiLT5z d2l6emxlID0gU1dJWlpMRV9SR0JBOw0KPiArCQlicmVhazsNCj4gKwljYXNlIERSTV9GT1JN QVRfWEJHUjQ0NDQ6DQo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1I0NDQ0Og0KPiArCWNhc2Ug RFJNX0ZPUk1BVF9YQkdSMTU1NToNCj4gKwljYXNlIERSTV9GT1JNQVRfQUJHUjE1NTU6DQo+ ICsJY2FzZSBEUk1fRk9STUFUX0JHUjU2NToNCj4gKwljYXNlIERSTV9GT1JNQVRfWEJHUjg4 ODg6DQo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Og0KPiArCWNhc2UgRFJNX0ZPUk1B VF9BQkdSMjEwMTAxMDoNCj4gKwkJZmItPnN3aXp6bGUgPSBTV0laWkxFX0FCR1I7DQo+ICsJ CWJyZWFrOw0KPiArCWNhc2UgRFJNX0ZPUk1BVF9CR1JYNDQ0NDoNCj4gKwljYXNlIERSTV9G T1JNQVRfQkdSQTQ0NDQ6DQo+ICsJY2FzZSBEUk1fRk9STUFUX0JHUlg1NTUxOg0KPiArCWNh c2UgRFJNX0ZPUk1BVF9CR1JBNTU1MToNCj4gKwljYXNlIERSTV9GT1JNQVRfQkdSWDg4ODg6 DQo+ICsJY2FzZSBEUk1fRk9STUFUX0JHUkE4ODg4Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9C R1JBMTAxMDEwMjoNCj4gKwkJZmItPnN3aXp6bGUgPSBTV0laWkxFX0JHUkE7DQo+ICsJCWJy ZWFrOw0KPiArCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOg0KPiArCWNhc2UgRFJNX0ZPUk1BVF9W WVVZOg0KPiArCWNhc2UgRFJNX0ZPUk1BVF9OVjIxOg0KPiArCWNhc2UgRFJNX0ZPUk1BVF9O VjYxOg0KPiArCQlmYi0+dXZfc3dpenpsZSA9IDE7DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1 bHQ6DQo+ICsJCWJyZWFrOw0KPiArCX0NCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGluZSB2 b2lkIHVwZGF0ZV93YXRlcm1hcmsoc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICp3YXRlcm1h cmssDQo+ICsJCQkJICAgIHN0cnVjdCBkY19od19mYiAqZmIpDQo+ICt7DQo+ICsJc3RydWN0 IGRybV92c193YXRlcm1hcmsgKmRhdGE7DQo+ICsNCj4gKwlmYi0+d2F0ZXJfbWFyayA9IDA7 DQo+ICsNCj4gKwlpZiAod2F0ZXJtYXJrKSB7DQo+ICsJCWRhdGEgPSB3YXRlcm1hcmstPmRh dGE7DQo+ICsJCWZiLT53YXRlcl9tYXJrID0gZGF0YS0+d2F0ZXJtYXJrICYgMHhGRkZGRjsN Cj4gKwl9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdTggdG9fdnNfcm90YXRpb24o dW5zaWduZWQgaW50IHJvdGF0aW9uKQ0KPiArew0KPiArCXU4IHJvdDsNCj4gKw0KPiArCXN3 aXRjaCAocm90YXRpb24gJiBEUk1fTU9ERV9SRUZMRUNUX01BU0spIHsNCj4gKwljYXNlIERS TV9NT0RFX1JFRkxFQ1RfWDoNCj4gKwkJcm90ID0gRkxJUF9YOw0KPiArCQlyZXR1cm4gcm90 Ow0KPiArCWNhc2UgRFJNX01PREVfUkVGTEVDVF9ZOg0KPiArCQlyb3QgPSBGTElQX1k7DQo+ ICsJCXJldHVybiByb3Q7DQo+ICsJY2FzZSBEUk1fTU9ERV9SRUZMRUNUX1ggfCBEUk1fTU9E RV9SRUZMRUNUX1k6DQo+ICsJCXJvdCA9IEZMSVBfWFk7DQo+ICsJCXJldHVybiByb3Q7DQo+ ICsJZGVmYXVsdDoNCj4gKwkJYnJlYWs7DQo+ICsJfQ0KPiArDQo+ICsJc3dpdGNoIChyb3Rh dGlvbiAmIERSTV9NT0RFX1JPVEFURV9NQVNLKSB7DQo+ICsJY2FzZSBEUk1fTU9ERV9ST1RB VEVfMDoNCj4gKwkJcm90ID0gUk9UXzA7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgRFJNX01P REVfUk9UQVRFXzkwOg0KPiArCQlyb3QgPSBST1RfOTA7DQo+ICsJCWJyZWFrOw0KPiArCWNh c2UgRFJNX01PREVfUk9UQVRFXzE4MDoNCj4gKwkJcm90ID0gUk9UXzE4MDsNCj4gKwkJYnJl YWs7DQo+ICsJY2FzZSBEUk1fTU9ERV9ST1RBVEVfMjcwOg0KPiArCQlyb3QgPSBST1RfMjcw Ow0KPiArCQlicmVhazsNCj4gKwlkZWZhdWx0Og0KPiArCQlyb3QgPSBST1RfMDsNCj4gKwkJ YnJlYWs7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIHJvdDsNCj4gK30NCj4gKw0KPiArc3Rh dGljIGlubGluZSB1OCB0b192c195dXZfY29sb3Jfc3BhY2UodTMyIGNvbG9yX3NwYWNlKQ0K PiArew0KPiArCXU4IGNzOw0KPiArDQo+ICsJc3dpdGNoIChjb2xvcl9zcGFjZSkgew0KPiAr CWNhc2UgRFJNX0NPTE9SX1lDQkNSX0JUNjAxOg0KPiArCQljcyA9IENPTE9SX1NQQUNFXzYw MTsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBEUk1fQ09MT1JfWUNCQ1JfQlQ3MDk6DQo+ICsJ CWNzID0gQ09MT1JfU1BBQ0VfNzA5Ow0KPiArCQlicmVhazsNCj4gKwljYXNlIERSTV9DT0xP Ul9ZQ0JDUl9CVDIwMjA6DQo+ICsJCWNzID0gQ09MT1JfU1BBQ0VfMjAyMDsNCj4gKwkJYnJl YWs7DQo+ICsJZGVmYXVsdDoNCj4gKwkJY3MgPSBDT0xPUl9TUEFDRV82MDE7DQo+ICsJCWJy ZWFrOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiBjczsNCj4gK30NCj4gKw0KPiArc3RhdGlj IGlubGluZSB1OCB0b192c190aWxlX21vZGUodTY0IG1vZGlmaWVyKQ0KPiArew0KPiArCXJl dHVybiAodTgpKG1vZGlmaWVyICYgRFJNX0ZPUk1BVF9NT0RfVlNfTk9STV9NT0RFX01BU0sp Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHU4IHRvX3ZzX2Rpc3BsYXlfaWQoc3Ry dWN0IHZzX2RjICpkYywgc3RydWN0IGRybV9jcnRjICpjcnRjKQ0KPiArew0KPiArCXU4IHBh bmVsX251bSA9IGRjLT5ody5pbmZvLT5wYW5lbF9udW07DQo+ICsJdTMyIGluZGV4ID0gZHJt X2NydGNfaW5kZXgoY3J0Yyk7DQo+ICsJaW50IGk7DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBp IDwgcGFuZWxfbnVtOyBpKyspIHsNCj4gKwkJaWYgKGluZGV4ID09IGRjLT5jcnRjW2ldLT5i YXNlLmluZGV4KQ0KPiArCQkJcmV0dXJuIGk7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgcGxkYV9jbGtfcnN0X2luaXQoc3RydWN0IGRl dmljZSAqZGV2KQ0KPiArew0KPiArCWludCByZXQgPSAwOw0KPiArCXN0cnVjdCB2c19kYyAq ZGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKw0KPiArCXJldCA9IGNsa19idWxrX3By ZXBhcmVfZW5hYmxlKGRjLT5uY2xrcywgZGMtPmNsa192b3V0KTsNCj4gKwlpZiAocmV0KSB7 DQo+ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBjbG9ja3NcbiIpOw0KPiAr CQlyZXR1cm4gcmV0Ow0KPiArCX0NCj4gKw0KPiArCXJldCA9IHJlc2V0X2NvbnRyb2xfYnVs a19kZWFzc2VydChkYy0+bnJzdHMsIGRjLT5yc3Rfdm91dCk7DQo+ICsJcmV0dXJuIHJldDsN Cj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgcGxkYV9jbGtfcnN0X2RlaW5pdChzdHJ1Y3Qg ZGV2aWNlICpkZXYpDQo+ICt7DQo+ICsJc3RydWN0IHZzX2RjICpkYyA9IGRldl9nZXRfZHJ2 ZGF0YShkZXYpOw0KPiArDQo+ICsJcmVzZXRfY29udHJvbF9idWxrX2Fzc2VydChkYy0+bnJz dHMsIGRjLT5yc3Rfdm91dCk7DQo+ICsJY2xrX2J1bGtfZGlzYWJsZV91bnByZXBhcmUoZGMt Pm5jbGtzLCBkYy0+Y2xrX3ZvdXQpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBkY19k ZWluaXQoc3RydWN0IGRldmljZSAqZGV2KQ0KPiArew0KPiArCXN0cnVjdCB2c19kYyAqZGMg PSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKw0KPiArCWRjX2h3X2VuYWJsZV9pbnRlcnJ1 cHQoJmRjLT5odywgMCk7DQo+ICsJZGNfaHdfZGVpbml0KCZkYy0+aHcpOw0KPiArCXBsZGFf Y2xrX3JzdF9kZWluaXQoZGV2KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBkY19pbml0 KHN0cnVjdCBkZXZpY2UgKmRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgdnNfZGMgKmRjID0gZGV2 X2dldF9kcnZkYXRhKGRldik7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCWRjLT5maXJzdF9m cmFtZSA9IHRydWU7DQo+ICsNCj4gKwlyZXQgPSBwbGRhX2Nsa19yc3RfaW5pdChkZXYpOw0K PiArCWlmIChyZXQgPCAwKSB7DQo+ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGluaXQg ZGMgY2xrIHJlc2V0OiAlZFxuIiwgcmV0KTsNCj4gKwkJcmV0dXJuIHJldDsNCj4gKwl9DQo+ ICsNCj4gKwlyZXQgPSBkY19od19pbml0KCZkYy0+aHcpOw0KPiArCWlmIChyZXQpIHsNCj4g KwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gaW5pdCBEQyBIV1xuIik7DQo+ICsJCXJldHVy biByZXQ7DQo+ICsJfQ0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9p ZCB2c19kY19lbmFibGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpDQo+ICt7DQo+ICsJc3RydWN0IHZzX2RjICpkYyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYp Ow0KPiArCXN0cnVjdCB2c19jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0gdG9fdnNfY3J0Y19z dGF0ZShjcnRjLT5zdGF0ZSk7DQo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUg PSAmY3J0Yy0+c3RhdGUtPmFkanVzdGVkX21vZGU7DQo+ICsJc3RydWN0IGRjX2h3X2Rpc3Bs YXkgZGlzcGxheTsNCj4gKw0KPiArCWRpc3BsYXkuYnVzX2Zvcm1hdCA9IGNydGNfc3RhdGUt Pm91dHB1dF9mbXQ7DQo+ICsJZGlzcGxheS5oX2FjdGl2ZSA9IG1vZGUtPmhkaXNwbGF5Ow0K PiArCWRpc3BsYXkuaF90b3RhbCA9IG1vZGUtPmh0b3RhbDsNCj4gKwlkaXNwbGF5Lmhfc3lu Y19zdGFydCA9IG1vZGUtPmhzeW5jX3N0YXJ0Ow0KPiArCWRpc3BsYXkuaF9zeW5jX2VuZCA9 IG1vZGUtPmhzeW5jX2VuZDsNCj4gKwlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFH X1BIU1lOQykNCj4gKwkJZGlzcGxheS5oX3N5bmNfcG9sYXJpdHkgPSB0cnVlOw0KPiArCWVs c2UNCj4gKwkJZGlzcGxheS5oX3N5bmNfcG9sYXJpdHkgPSBmYWxzZTsNCj4gKw0KPiArCWRp c3BsYXkudl9hY3RpdmUgPSBtb2RlLT52ZGlzcGxheTsNCj4gKwlkaXNwbGF5LnZfdG90YWwg PSBtb2RlLT52dG90YWw7DQo+ICsJZGlzcGxheS52X3N5bmNfc3RhcnQgPSBtb2RlLT52c3lu Y19zdGFydDsNCj4gKwlkaXNwbGF5LnZfc3luY19lbmQgPSBtb2RlLT52c3luY19lbmQ7DQo+ ICsNCj4gKwlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX1BWU1lOQykNCj4gKwkJ ZGlzcGxheS52X3N5bmNfcG9sYXJpdHkgPSB0cnVlOw0KPiArCWVsc2UNCj4gKwkJZGlzcGxh eS52X3N5bmNfcG9sYXJpdHkgPSBmYWxzZTsNCj4gKw0KPiArCWRpc3BsYXkuc3luY19tb2Rl ID0gY3J0Y19zdGF0ZS0+c3luY19tb2RlOw0KPiArCWRpc3BsYXkuYmdfY29sb3IgPSBjcnRj X3N0YXRlLT5iZ19jb2xvcjsNCj4gKw0KPiArCWRpc3BsYXkuaWQgPSB0b192c19kaXNwbGF5 X2lkKGRjLCBjcnRjKTsNCj4gKwlkaXNwbGF5LnN5bmNfZW5hYmxlID0gY3J0Y19zdGF0ZS0+ c3luY19lbmFibGU7DQo+ICsJZGlzcGxheS5kaXRoZXJfZW5hYmxlID0gY3J0Y19zdGF0ZS0+ ZGl0aGVyX2VuYWJsZTsNCj4gKw0KPiArCWRpc3BsYXkuZW5hYmxlID0gdHJ1ZTsNCj4gKw0K PiArCWlmIChjcnRjX3N0YXRlLT5lbmNvZGVyX3R5cGUgPT0gRFJNX01PREVfRU5DT0RFUl9E U0kpIHsNCj4gKwkJZGNfaHdfc2V0X291dCgmZGMtPmh3LCBPVVRfRFBJLCBkaXNwbGF5Lmlk KTsNCj4gKwkJY2xrX3NldF9yYXRlKGRjLT5jbGtfdm91dFtDTEtfVk9VVF9TT0NfUElYXS5j bGssIG1vZGUtPmNsb2NrICogMTAwMCk7DQo+ICsJCWNsa19zZXRfcGFyZW50KGRjLT5jbGtf dm91dFtDTEtfVk9VVF9QSVgxXS5jbGssDQo+ICsJCQkgICAgICAgZGMtPmNsa192b3V0W0NM S19WT1VUX1NPQ19QSVhdLmNsayk7DQo+ICsJfSBlbHNlIHsNCj4gKwkJZGNfaHdfc2V0X291 dCgmZGMtPmh3LCBPVVRfRFAsIGRpc3BsYXkuaWQpOw0KPiArCQljbGtfc2V0X3BhcmVudChk Yy0+Y2xrX3ZvdXRbQ0xLX1ZPVVRfUElYMF0uY2xrLA0KPiArCQkJICAgICAgIGRjLT5jbGtf dm91dFtDTEtfVk9VVF9IRE1JX1BJWF0uY2xrKTsNCj4gKwl9DQo+ICsNCj4gKwlkY19od19z ZXR1cF9kaXNwbGF5KCZkYy0+aHcsICZkaXNwbGF5KTsNCj4gK30NCj4gKw0KPiArc3RhdGlj IHZvaWQgdnNfZGNfZGlzYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykNCj4gK3sNCj4gKwlzdHJ1Y3QgdnNfZGMgKmRjID0gZGV2X2dldF9kcnZkYXRh KGRldik7DQo+ICsJc3RydWN0IGRjX2h3X2Rpc3BsYXkgZGlzcGxheTsNCj4gKw0KPiArCWRp c3BsYXkuaWQgPSB0b192c19kaXNwbGF5X2lkKGRjLCBjcnRjKTsNCj4gKwlkaXNwbGF5LmVu YWJsZSA9IGZhbHNlOw0KPiArDQo+ICsJZGNfaHdfc2V0dXBfZGlzcGxheSgmZGMtPmh3LCAm ZGlzcGxheSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBib29sIHZzX2RjX21vZGVfZml4dXAo c3RydWN0IGRldmljZSAqZGV2LA0KPiArCQkJICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqbW9kZSwNCj4gKwkJCSAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFk anVzdGVkX21vZGUpDQo+ICt7DQo+ICsJcmV0dXJuIHRydWU7DQo+ICt9DQo+ICsNCj4gK3N0 YXRpYyB2b2lkIHZzX2RjX3NldF9nYW1tYShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBk cm1fY3J0YyAqY3J0YywNCj4gKwkJCSAgICBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0LCB1 bnNpZ25lZCBpbnQgc2l6ZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgdnNfZGMgKmRjID0gZGV2X2dl dF9kcnZkYXRhKGRldik7DQo+ICsJdTE2IGksIHIsIGcsIGI7DQo+ICsJdTggYml0cywgaWQ7 DQo+ICsNCj4gKwlpZiAoc2l6ZSAhPSBkYy0+aHcuaW5mby0+Z2FtbWFfc2l6ZSkgew0KPiAr CQlkZXZfZXJyKGRldiwgImdhbW1hIHNpemUgZG9lcyBub3QgbWF0Y2ghXG4iKTsNCj4gKwkJ cmV0dXJuOw0KPiArCX0NCj4gKw0KPiArCWlkID0gdG9fdnNfZGlzcGxheV9pZChkYywgY3J0 Yyk7DQo+ICsNCj4gKwliaXRzID0gZGMtPmh3LmluZm8tPmdhbW1hX2JpdHM7DQo+ICsJZm9y IChpID0gMDsgaSA8IHNpemU7IGkrKykgew0KPiArCQlyID0gZHJtX2NvbG9yX2x1dF9leHRy YWN0KGx1dFtpXS5yZWQsIGJpdHMpOw0KPiArCQlnID0gZHJtX2NvbG9yX2x1dF9leHRyYWN0 KGx1dFtpXS5ncmVlbiwgYml0cyk7DQo+ICsJCWIgPSBkcm1fY29sb3JfbHV0X2V4dHJhY3Qo bHV0W2ldLmJsdWUsIGJpdHMpOw0KPiArCQlkY19od191cGRhdGVfZ2FtbWEoJmRjLT5odywg aWQsIGksIHIsIGcsIGIpOw0KPiArCX0NCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgdnNf ZGNfZW5hYmxlX2dhbW1hKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRybV9jcnRjICpj cnRjLA0KPiArCQkJICAgICAgIGJvb2wgZW5hYmxlKQ0KPiArew0KPiArCXN0cnVjdCB2c19k YyAqZGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKwl1OCBpZDsNCj4gKw0KPiArCWlk ID0gdG9fdnNfZGlzcGxheV9pZChkYywgY3J0Yyk7DQo+ICsJZGNfaHdfZW5hYmxlX2dhbW1h KCZkYy0+aHcsIGlkLCBlbmFibGUpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCB2c19k Y19lbmFibGVfdmJsYW5rKHN0cnVjdCBkZXZpY2UgKmRldiwgYm9vbCBlbmFibGUpDQo+ICt7 DQo+ICsJc3RydWN0IHZzX2RjICpkYyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArDQo+ ICsJZGNfaHdfZW5hYmxlX2ludGVycnVwdCgmZGMtPmh3LCBlbmFibGUpOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgdTMyIGNhbGNfZmFjdG9yKHUzMiBzcmMsIHUzMiBkZXN0KQ0KPiArew0K PiArCXUzMiBmYWN0b3IgPSAxIDw8IDE2Ow0KPiArDQo+ICsJaWYgKHNyYyA+IDEgJiYgZGVz dCA+IDEpDQo+ICsJCWZhY3RvciA9ICgoc3JjIC0gMSkgPDwgMTYpIC8gKGRlc3QgLSAxKTsN Cj4gKw0KPiArCXJldHVybiBmYWN0b3I7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHVw ZGF0ZV9zY2FsZShzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSwgc3RydWN0IGRjX2h3 X3JvaSAqcm9pLA0KPiArCQkJIHN0cnVjdCBkY19od19zY2FsZSAqc2NhbGUpDQo+ICt7DQo+ ICsJaW50IGRzdF93ID0gZHJtX3JlY3Rfd2lkdGgoJnN0YXRlLT5kc3QpOw0KPiArCWludCBk c3RfaCA9IGRybV9yZWN0X2hlaWdodCgmc3RhdGUtPmRzdCk7DQo+ICsJaW50IHNyY193LCBz cmNfaCwgdGVtcDsNCj4gKw0KPiArCXNjYWxlLT5lbmFibGUgPSBmYWxzZTsNCj4gKw0KPiAr CWlmIChyb2ktPmVuYWJsZSkgew0KPiArCQlzcmNfdyA9IHJvaS0+d2lkdGg7DQo+ICsJCXNy Y19oID0gcm9pLT5oZWlnaHQ7DQo+ICsJfSBlbHNlIHsNCj4gKwkJc3JjX3cgPSBkcm1fcmVj dF93aWR0aCgmc3RhdGUtPnNyYykgPj4gMTY7DQo+ICsJCXNyY19oID0gZHJtX3JlY3RfaGVp Z2h0KCZzdGF0ZS0+c3JjKSA+PiAxNjsNCj4gKwl9DQo+ICsNCj4gKwlpZiAoZHJtX3JvdGF0 aW9uXzkwX29yXzI3MChzdGF0ZS0+cm90YXRpb24pKSB7DQo+ICsJCXRlbXAgPSBzcmNfdzsN Cj4gKwkJc3JjX3cgPSBzcmNfaDsNCj4gKwkJc3JjX2ggPSB0ZW1wOw0KPiArCX0NCj4gKw0K PiArCWlmIChzcmNfdyAhPSBkc3Rfdykgew0KPiArCQlzY2FsZS0+c2NhbGVfZmFjdG9yX3gg PSBjYWxjX2ZhY3RvcihzcmNfdywgZHN0X3cpOw0KPiArCQlzY2FsZS0+ZW5hYmxlID0gdHJ1 ZTsNCj4gKwl9IGVsc2Ugew0KPiArCQlzY2FsZS0+c2NhbGVfZmFjdG9yX3ggPSAxIDw8IDE2 Ow0KPiArCX0NCj4gKwlpZiAoc3JjX2ggIT0gZHN0X2gpIHsNCj4gKwkJc2NhbGUtPnNjYWxl X2ZhY3Rvcl95ID0gY2FsY19mYWN0b3Ioc3JjX2gsIGRzdF9oKTsNCj4gKwkJc2NhbGUtPmVu YWJsZSA9IHRydWU7DQo+ICsJfSBlbHNlIHsNCj4gKwkJc2NhbGUtPnNjYWxlX2ZhY3Rvcl95 ID0gMSA8PCAxNjsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHVwZGF0ZV9m YihzdHJ1Y3QgdnNfcGxhbmUgKnBsYW5lLCB1OCBkaXNwbGF5X2lkLA0KPiArCQkgICAgICBz dHJ1Y3QgZGNfaHdfZmIgKmZiLCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkNCj4g K3sNCj4gKwlzdHJ1Y3QgdnNfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0gdG9fdnNfcGxh bmVfc3RhdGUoc3RhdGUpOw0KPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmRybV9mYiA9 IHN0YXRlLT5mYjsNCj4gKwlzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9ICZzdGF0ZS0+c3JjOw0K PiArDQo+ICsJZmItPmRpc3BsYXlfaWQgPSBkaXNwbGF5X2lkOw0KPiArCWZiLT55X2FkZHJl c3MgPSBwbGFuZS0+ZG1hX2FkZHJbMF07DQo+ICsJZmItPnlfc3RyaWRlID0gZHJtX2ZiLT5w aXRjaGVzWzBdOw0KPiArCWlmIChkcm1fZmItPmZvcm1hdC0+Zm9ybWF0ID09IERSTV9GT1JN QVRfWVZVNDIwKSB7DQo+ICsJCWZiLT51X2FkZHJlc3MgPSBwbGFuZS0+ZG1hX2FkZHJbMl07 DQo+ICsJCWZiLT52X2FkZHJlc3MgPSBwbGFuZS0+ZG1hX2FkZHJbMV07DQo+ICsJCWZiLT51 X3N0cmlkZSA9IGRybV9mYi0+cGl0Y2hlc1syXTsNCj4gKwkJZmItPnZfc3RyaWRlID0gZHJt X2ZiLT5waXRjaGVzWzFdOw0KPiArCX0gZWxzZSB7DQo+ICsJCWZiLT51X2FkZHJlc3MgPSBw bGFuZS0+ZG1hX2FkZHJbMV07DQo+ICsJCWZiLT52X2FkZHJlc3MgPSBwbGFuZS0+ZG1hX2Fk ZHJbMl07DQo+ICsJCWZiLT51X3N0cmlkZSA9IGRybV9mYi0+cGl0Y2hlc1sxXTsNCj4gKwkJ ZmItPnZfc3RyaWRlID0gZHJtX2ZiLT5waXRjaGVzWzJdOw0KPiArCX0NCj4gKwlmYi0+d2lk dGggPSBkcm1fcmVjdF93aWR0aChzcmMpID4+IDE2Ow0KPiArCWZiLT5oZWlnaHQgPSBkcm1f cmVjdF9oZWlnaHQoc3JjKSA+PiAxNjsNCj4gKwlmYi0+dGlsZV9tb2RlID0gdG9fdnNfdGls ZV9tb2RlKGRybV9mYi0+bW9kaWZpZXIpOw0KPiArCWZiLT5yb3RhdGlvbiA9IHRvX3ZzX3Jv dGF0aW9uKHN0YXRlLT5yb3RhdGlvbik7DQo+ICsJZmItPnl1dl9jb2xvcl9zcGFjZSA9IHRv X3ZzX3l1dl9jb2xvcl9zcGFjZShzdGF0ZS0+Y29sb3JfZW5jb2RpbmcpOw0KPiArCWZiLT56 cG9zID0gc3RhdGUtPnpwb3M7DQo+ICsJZmItPmVuYWJsZSA9IHN0YXRlLT52aXNpYmxlOw0K PiArCXVwZGF0ZV9mb3JtYXQoZHJtX2ZiLT5mb3JtYXQtPmZvcm1hdCwgZHJtX2ZiLT5tb2Rp ZmllciwgZmIpOw0KPiArCXVwZGF0ZV9zd2l6emxlKGRybV9mYi0+Zm9ybWF0LT5mb3JtYXQs IGZiKTsNCj4gKwl1cGRhdGVfd2F0ZXJtYXJrKHBsYW5lX3N0YXRlLT53YXRlcm1hcmssIGZi KTsNCj4gKwlwbGFuZV9zdGF0ZS0+c3RhdHVzLnRpbGVfbW9kZSA9IGZiLT50aWxlX21vZGU7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHVwZGF0ZV9kZWdhbW1hKHN0cnVjdCB2c19k YyAqZGMsIHN0cnVjdCB2c19wbGFuZSAqcGxhbmUsDQo+ICsJCQkgICBzdHJ1Y3QgdnNfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKQ0KPiArew0KPiArCWRjX2h3X3VwZGF0ZV9kZWdhbW1h KCZkYy0+aHcsIHBsYW5lLT5pZCwgcGxhbmVfc3RhdGUtPmRlZ2FtbWEpOw0KPiArCXBsYW5l X3N0YXRlLT5kZWdhbW1hX2NoYW5nZWQgPSBmYWxzZTsNCj4gK30NCj4gKw0KPiArc3RhdGlj IHZvaWQgdXBkYXRlX3JvaShzdHJ1Y3QgdnNfZGMgKmRjLCB1OCBpZCwNCj4gKwkJICAgICAg IHN0cnVjdCB2c19wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsDQo+ICsJCSAgICAgICBzdHJ1 Y3QgZGNfaHdfcm9pICpyb2ksDQo+ICsJCSAgICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl ICpzdGF0ZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX3ZzX3JvaSAqZGF0YTsNCj4gKwlzdHJ1 Y3QgZHJtX3JlY3QgKnNyYyA9ICZzdGF0ZS0+c3JjOw0KPiArCXUxNiBzcmNfdyA9IGRybV9y ZWN0X3dpZHRoKHNyYykgPj4gMTY7DQo+ICsJdTE2IHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0 KHNyYykgPj4gMTY7DQo+ICsNCj4gKwlpZiAocGxhbmVfc3RhdGUtPnJvaSkgew0KPiArCQlk YXRhID0gcGxhbmVfc3RhdGUtPnJvaS0+ZGF0YTsNCj4gKw0KPiArCQlpZiAoZGF0YS0+ZW5h YmxlKSB7DQo+ICsJCQlyb2ktPnggPSBkYXRhLT5yb2lfeDsNCj4gKwkJCXJvaS0+eSA9IGRh dGEtPnJvaV95Ow0KPiArCQkJcm9pLT53aWR0aCA9IChkYXRhLT5yb2lfeCArIGRhdGEtPnJv aV93ID4gc3JjX3cpID8NCj4gKwkJCQkJCSAoc3JjX3cgLSBkYXRhLT5yb2lfeCkgOiBkYXRh LT5yb2lfdzsNCj4gKwkJCXJvaS0+aGVpZ2h0ID0gKGRhdGEtPnJvaV95ICsgZGF0YS0+cm9p X2ggPiBzcmNfaCkgPw0KPiArCQkJCQkJICAoc3JjX2ggLSBkYXRhLT5yb2lfeSkgOiBkYXRh LT5yb2lfaDsNCj4gKwkJCXJvaS0+ZW5hYmxlID0gdHJ1ZTsNCj4gKwkJfSBlbHNlIHsNCj4g KwkJCXJvaS0+ZW5hYmxlID0gZmFsc2U7DQo+ICsJCX0NCj4gKw0KPiArCQlkY19od191cGRh dGVfcm9pKCZkYy0+aHcsIGlkLCByb2kpOw0KPiArCX0gZWxzZSB7DQo+ICsJCXJvaS0+ZW5h YmxlID0gZmFsc2U7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCB1cGRhdGVf Y29sb3JfbWdtdChzdHJ1Y3QgdnNfZGMgKmRjLCB1OCBpZCwNCj4gKwkJCSAgICAgIHN0cnVj dCBkY19od19mYiAqZmIsDQo+ICsJCQkgICAgICBzdHJ1Y3QgdnNfcGxhbmVfc3RhdGUgKnBs YW5lX3N0YXRlKQ0KPiArew0KPiArCXN0cnVjdCBkcm1fdnNfY29sb3JfbWdtdCAqZGF0YTsN Cj4gKwlzdHJ1Y3QgZGNfaHdfY29sb3JrZXkgY29sb3JrZXk7DQo+ICsNCj4gKwlpZiAocGxh bmVfc3RhdGUtPmNvbG9yX21nbXQpIHsNCj4gKwkJZGF0YSA9IHBsYW5lX3N0YXRlLT5jb2xv cl9tZ210LT5kYXRhOw0KPiArDQo+ICsJCWZiLT5jbGVhcl9lbmFibGUgPSBkYXRhLT5jbGVh cl9lbmFibGU7DQo+ICsJCWZiLT5jbGVhcl92YWx1ZSA9IGRhdGEtPmNsZWFyX3ZhbHVlOw0K PiArDQo+ICsJCWlmIChkYXRhLT5jb2xvcmtleSA+IGRhdGEtPmNvbG9ya2V5X2hpZ2gpDQo+ ICsJCQlkYXRhLT5jb2xvcmtleSA9IGRhdGEtPmNvbG9ya2V5X2hpZ2g7DQo+ICsNCj4gKwkJ Y29sb3JrZXkuY29sb3JrZXkgPSBkYXRhLT5jb2xvcmtleTsNCj4gKwkJY29sb3JrZXkuY29s b3JrZXlfaGlnaCA9IGRhdGEtPmNvbG9ya2V5X2hpZ2g7DQo+ICsJCWNvbG9ya2V5LnRyYW5z cGFyZW5jeSA9IChkYXRhLT50cmFuc3BhcmVuY3kpID8NCj4gKwkJCQlEQ19UUkFOU1BBUkVO Q1lfS0VZIDogRENfVFJBTlNQQVJFTkNZX09QQVFVRTsNCj4gKwkJZGNfaHdfdXBkYXRlX2Nv bG9ya2V5KCZkYy0+aHcsIGlkLCAmY29sb3JrZXkpOw0KPiArCX0NCj4gK30NCj4gKw0KPiAr c3RhdGljIHZvaWQgdXBkYXRlX3BsYW5lKHN0cnVjdCB2c19kYyAqZGMsIHN0cnVjdCB2c19w bGFuZSAqcGxhbmUsDQo+ICsJCQkgc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLA0KPiAr CQkJIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpkcm1fc3RhdGUpDQo+ICt7DQo+ICsJc3Ry dWN0IGRjX2h3X2ZiIGZiID0gezB9Ow0KPiArCXN0cnVjdCBkY19od19zY2FsZSBzY2FsZTsN Cj4gKwlzdHJ1Y3QgZGNfaHdfcG9zaXRpb24gcG9zOw0KPiArCXN0cnVjdCBkY19od19ibGVu ZCBibGVuZDsNCj4gKwlzdHJ1Y3QgZGNfaHdfcm9pIHJvaTsNCj4gKwlzdHJ1Y3QgZHJtX3Bs YW5lX3N0YXRlICpzdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19wbGFuZV9zdGF0ZShkcm1f c3RhdGUsDQo+ICsJCQkJCQkJCQkgICBkcm1fcGxhbmUpOw0KPiArCXN0cnVjdCB2c19wbGFu ZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPSB0b192c19wbGFuZV9zdGF0ZShzdGF0ZSk7DQo+ICsJ c3RydWN0IGRybV9yZWN0ICpkZXN0ID0gJnN0YXRlLT5kc3Q7DQo+ICsJYm9vbCBkZWNfZW5h YmxlID0gZmFsc2U7DQo+ICsJdTggZGlzcGxheV9pZCA9IDA7DQo+ICsNCj4gKwlkaXNwbGF5 X2lkID0gdG9fdnNfZGlzcGxheV9pZChkYywgc3RhdGUtPmNydGMpOw0KPiArCXVwZGF0ZV9m YihwbGFuZSwgZGlzcGxheV9pZCwgJmZiLCBzdGF0ZSk7DQo+ICsJZmIuZGVjX2VuYWJsZSA9 IGRlY19lbmFibGU7DQo+ICsNCj4gKwl1cGRhdGVfcm9pKGRjLCBwbGFuZS0+aWQsIHBsYW5l X3N0YXRlLCAmcm9pLCBzdGF0ZSk7DQo+ICsNCj4gKwl1cGRhdGVfc2NhbGUoc3RhdGUsICZy b2ksICZzY2FsZSk7DQo+ICsNCj4gKwlpZiAocGxhbmVfc3RhdGUtPmRlZ2FtbWFfY2hhbmdl ZCkNCj4gKwkJdXBkYXRlX2RlZ2FtbWEoZGMsIHBsYW5lLCBwbGFuZV9zdGF0ZSk7DQo+ICsN Cj4gKwlwb3Muc3RhcnRfeCA9IGRlc3QtPngxOw0KPiArCXBvcy5zdGFydF95ID0gZGVzdC0+ eTE7DQo+ICsJcG9zLmVuZF94ID0gZGVzdC0+eDI7DQo+ICsJcG9zLmVuZF95ID0gZGVzdC0+ eTI7DQo+ICsNCj4gKwlibGVuZC5hbHBoYSA9ICh1OCkoc3RhdGUtPmFscGhhID4+IDgpOw0K PiArCWJsZW5kLmJsZW5kX21vZGUgPSAodTgpKHN0YXRlLT5waXhlbF9ibGVuZF9tb2RlKTsN Cj4gKw0KPiArCXVwZGF0ZV9jb2xvcl9tZ210KGRjLCBwbGFuZS0+aWQsICZmYiwgcGxhbmVf c3RhdGUpOw0KPiArDQo+ICsJZGNfaHdfdXBkYXRlX3BsYW5lKCZkYy0+aHcsIHBsYW5lLT5p ZCwgJmZiLCAmc2NhbGUsICZwb3MsICZibGVuZCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2 b2lkIHVwZGF0ZV9xb3Moc3RydWN0IHZzX2RjICpkYywgc3RydWN0IHZzX3BsYW5lICpwbGFu ZSwNCj4gKwkJICAgICAgIHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwNCj4gKwkJICAg ICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpkcm1fc3RhdGUpDQo+ICt7DQo+ICsJc3Ry dWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfcGxhbmVf c3RhdGUoZHJtX3N0YXRlLA0KPiArCQkJCQkJCQkJICAgZHJtX3BsYW5lKTsNCj4gKwlzdHJ1 Y3QgdnNfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0gdG9fdnNfcGxhbmVfc3RhdGUoc3Rh dGUpOw0KPiArCXN0cnVjdCBkcm1fdnNfd2F0ZXJtYXJrICpkYXRhOw0KPiArCXN0cnVjdCBk Y19od19xb3MgcW9zOw0KPiArDQo+ICsJaWYgKHBsYW5lX3N0YXRlLT53YXRlcm1hcmspIHsN Cj4gKwkJZGF0YSA9IHBsYW5lX3N0YXRlLT53YXRlcm1hcmstPmRhdGE7DQo+ICsNCj4gKwkJ aWYgKGRhdGEtPnFvc19oaWdoKSB7DQo+ICsJCQlpZiAoZGF0YS0+cW9zX2xvdyA+IGRhdGEt PnFvc19oaWdoKQ0KPiArCQkJCWRhdGEtPnFvc19sb3cgPSBkYXRhLT5xb3NfaGlnaDsNCj4g Kw0KPiArCQkJcW9zLmxvd192YWx1ZSA9IGRhdGEtPnFvc19sb3cgJiAweDBGOw0KPiArCQkJ cW9zLmhpZ2hfdmFsdWUgPSBkYXRhLT5xb3NfaGlnaCAmIDB4MEY7DQo+ICsJCQlkY19od191 cGRhdGVfcW9zKCZkYy0+aHcsICZxb3MpOw0KPiArCQl9DQo+ICsJfQ0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgdm9pZCB1cGRhdGVfY3Vyc29yX3NpemUoc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSAqc3RhdGUsIHN0cnVjdCBkY19od19jdXJzb3IgKmN1cnNvcikNCj4gK3sNCj4gKwl1OCBz aXplX3R5cGU7DQo+ICsNCj4gKwlzd2l0Y2ggKHN0YXRlLT5jcnRjX3cpIHsNCj4gKwljYXNl IDMyOg0KPiArCQlzaXplX3R5cGUgPSBDVVJTT1JfU0laRV8zMlgzMjsNCj4gKwkJYnJlYWs7 DQo+ICsJY2FzZSA2NDoNCj4gKwkJc2l6ZV90eXBlID0gQ1VSU09SX1NJWkVfNjRYNjQ7DQo+ ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCXNpemVfdHlwZSA9IENVUlNPUl9TSVpF XzMyWDMyOw0KPiArCQlicmVhazsNCj4gKwl9DQo+ICsNCj4gKwljdXJzb3ItPnNpemUgPSBz aXplX3R5cGU7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHVwZGF0ZV9jdXJzb3JfcGxh bmUoc3RydWN0IHZzX2RjICpkYywgc3RydWN0IHZzX3BsYW5lICpwbGFuZSwNCj4gKwkJCQlz dHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsDQo+ICsJCQkJc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKmRybV9zdGF0ZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpz dGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19wbGFuZV9zdGF0ZShkcm1fc3RhdGUsDQo+ICsJ CQkJCQkJCSAgICAgICBkcm1fcGxhbmUpOw0KPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmRybV9mYiA9IHN0YXRlLT5mYjsNCj4gKwlzdHJ1Y3QgZGNfaHdfY3Vyc29yIGN1cnNvcjsN Cj4gKw0KPiArCWN1cnNvci5hZGRyZXNzID0gcGxhbmUtPmRtYV9hZGRyWzBdOw0KPiArCWN1 cnNvci54ID0gc3RhdGUtPmNydGNfeDsNCj4gKwljdXJzb3IueSA9IHN0YXRlLT5jcnRjX3k7 DQo+ICsJY3Vyc29yLmhvdF94ID0gZHJtX2ZiLT5ob3RfeDsNCj4gKwljdXJzb3IuaG90X3kg PSBkcm1fZmItPmhvdF95Ow0KPiArCWN1cnNvci5kaXNwbGF5X2lkID0gdG9fdnNfZGlzcGxh eV9pZChkYywgc3RhdGUtPmNydGMpOw0KPiArCXVwZGF0ZV9jdXJzb3Jfc2l6ZShzdGF0ZSwg JmN1cnNvcik7DQo+ICsJY3Vyc29yLmVuYWJsZSA9IHRydWU7DQo+ICsNCj4gKwlkY19od191 cGRhdGVfY3Vyc29yKCZkYy0+aHcsIGN1cnNvci5kaXNwbGF5X2lkLCAmY3Vyc29yKTsNCj4g K30NCj4gKw0KPiArc3RhdGljIHZvaWQgdnNfZGNfdXBkYXRlX3BsYW5lKHN0cnVjdCBkZXZp Y2UgKmRldiwgc3RydWN0IHZzX3BsYW5lICpwbGFuZSwNCj4gKwkJCSAgICAgICBzdHJ1Y3Qg ZHJtX3BsYW5lICpkcm1fcGxhbmUsDQo+ICsJCQkgICAgICAgc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKmRybV9zdGF0ZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgdnNfZGMgKmRjID0gZGV2X2dl dF9kcnZkYXRhKGRldik7DQo+ICsJZW51bSBkcm1fcGxhbmVfdHlwZSB0eXBlID0gcGxhbmUt PmJhc2UudHlwZTsNCj4gKw0KPiArCXN3aXRjaCAodHlwZSkgew0KPiArCWNhc2UgRFJNX1BM QU5FX1RZUEVfUFJJTUFSWToNCj4gKwljYXNlIERSTV9QTEFORV9UWVBFX09WRVJMQVk6DQo+ ICsJCXVwZGF0ZV9wbGFuZShkYywgcGxhbmUsIGRybV9wbGFuZSwgZHJtX3N0YXRlKTsNCj4g KwkJdXBkYXRlX3FvcyhkYywgcGxhbmUsIGRybV9wbGFuZSwgZHJtX3N0YXRlKTsNCj4gKwkJ YnJlYWs7DQo+ICsJY2FzZSBEUk1fUExBTkVfVFlQRV9DVVJTT1I6DQo+ICsJCXVwZGF0ZV9j dXJzb3JfcGxhbmUoZGMsIHBsYW5lLCBkcm1fcGxhbmUsIGRybV9zdGF0ZSk7DQo+ICsJCWJy ZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCWJyZWFrOw0KPiArCX0NCg0KVGhpcyBzd2l0Y2gg c3RhdGVtZW50LCBhbmQgYWxsIHRoZSBzaW1pbGFyIGNvZGUgYmVsb3csIGlzIGFub3RoZXIg DQppbnN0YW5jZSBvZiB0aGUgaW50ZXJuYWwtQVBJIHByb2JsZW0uDQoNCllvdSBoYXZlIG9u ZSBtdWx0aXBsZXhlciBmdW5jdGlvbiB0aGF0IHN3aXRjaGVzIGFtb25nIHByaW1hcnksIG92 ZXJsYXkgDQphbmQgY3Vyc29yIHBsYW5lcy4gWW91J3ZlIHJlcGxpY2F0ZWQgdGhlIGZ1bmN0 aW9uYWxpdHkgb2YgdGhlIERSTSBjb3JlIA0KYW5kIGhlbHBlcnMgaW4geW91ciBkcml2ZXIu DQoNCkl0IGlzIG11Y2ggYmV0dGVyIHRvIGltcGxlbWVudCBhIGZ1bmN0aW9uIGZvciBlYWNo IHR5cGUgb2YgcGxhbmU6IA0KdnNfZGNfdXBkYXRlX3ByaW1hcnlfcGxhbmUoKSwgdnNfZGNf dXBkYXRlX292ZXJsYXlfcGxhbmUoKSwgDQp2c19kY191cGRhdGVfY3Vyc29yX3BsYW5lKCku IFRoZW4gbWFrZSBhbiBpbnN0YW5jZSBvZiANCmRybV9wbGFuZV9oZWxwZXJfZnVuYyBmb3Ig ZWFjaCB0eXBlIG9mIHBsYW5lOg0KDQpzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyBw cmltYXJ5X3BsYW5lX2hlbHBlcnMgPSB7DQogICAgIHZzX2RjX3VwZGF0ZV9wcmltYXJ5X3Bs YW5lDQp9Ow0KDQpzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyBvdmVybGF5X3BsYW5l X2hlbHBlcnMgPSB7DQogICAgIHZzX2RjX3VwZGF0ZV9vdmVybGF5X3BsYW5lDQp9Ow0KDQpz dHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyBjdXJzb3JfcGxhbmVfaGVscGVycyA9IHsN CiAgICAgdnNfZGNfdXBkYXRlX2N1cnNvcl9wbGFuZQ0KfTsNCg0KRWFjaCBvZiB0aGVzZSBo ZWxwZXJfZnVuY3MgaW5zdGFuY2VzIGhhbmRsZSBleGFjdGx5IHRoZWlyIG93biB0eXBlIG9m IA0KcGxhbmUuIFdoZW4geW91IGNyZWF0ZSB5b3VyIG1vZGVzZXR0aW5nIHBpcGVsaW5lLCBq dXN0IHVzZSB0aGUgY29ycmVjdCANCmhlbHBlcnMgZm9yIGVhY2ggaW5zdGFuY2lhdGVkIHBs YW5lLiAgWW91J2xsIGhhdmUgbGVzcyBib2lsZXIgcGxhdGUgDQpjb2RlLCBsZXNzIGluZGly ZWN0aW9uLCBhbmQgYWRkaW5nIG5ldyBhbmQgZGlmZmVyZW50IHBsYW5lcyBpcyByZWFsbHkg ZWFzeS4NCg0KDQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHZzX2RjX2Rpc2FibGVfcGxh bmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdnNfcGxhbmUgKnBsYW5lLA0KPiArCQkJ CXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkNCj4gK3sNCj4gKwlzdHJ1Y3Qg dnNfZGMgKmRjID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ICsJZW51bSBkcm1fcGxhbmVf dHlwZSB0eXBlID0gcGxhbmUtPmJhc2UudHlwZTsNCj4gKwlzdHJ1Y3QgZGNfaHdfZmIgZmIg PSB7MH07DQo+ICsJc3RydWN0IGRjX2h3X2N1cnNvciBjdXJzb3IgPSB7MH07DQo+ICsNCj4g Kwlzd2l0Y2ggKHR5cGUpIHsNCj4gKwljYXNlIERSTV9QTEFORV9UWVBFX1BSSU1BUlk6DQo+ ICsJY2FzZSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZOg0KPiArCQlmYi5lbmFibGUgPSBmYWxz ZTsNCj4gKwkJZGNfaHdfdXBkYXRlX3BsYW5lKCZkYy0+aHcsIHBsYW5lLT5pZCwgJmZiLCBO VUxMLCBOVUxMLCBOVUxMKTsNCj4gKwkJYnJlYWs7DQo+ICsNCj4gKwljYXNlIERSTV9QTEFO RV9UWVBFX0NVUlNPUjoNCj4gKwkJY3Vyc29yLmVuYWJsZSA9IGZhbHNlOw0KPiArCQljdXJz b3IuZGlzcGxheV9pZCA9IHRvX3ZzX2Rpc3BsYXlfaWQoZGMsIG9sZF9zdGF0ZS0+Y3J0Yyk7 DQo+ICsJCWRjX2h3X3VwZGF0ZV9jdXJzb3IoJmRjLT5odywgY3Vyc29yLmRpc3BsYXlfaWQs ICZjdXJzb3IpOw0KPiArCQlicmVhazsNCj4gKwlkZWZhdWx0Og0KPiArCQlicmVhazsNCj4g Kwl9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBib29sIHZzX2RjX21vZF9zdXBwb3J0ZWQoY29u c3Qgc3RydWN0IHZzX3BsYW5lX2luZm8gKnBsYW5lX2luZm8sDQo+ICsJCQkJdTY0IG1vZGlm aWVyKQ0KPiArew0KPiArCWNvbnN0IHU2NCAqbW9kczsNCj4gKw0KPiArCWlmICghcGxhbmVf aW5mby0+bW9kaWZpZXJzKQ0KPiArCQlyZXR1cm4gZmFsc2U7DQo+ICsNCj4gKwlmb3IgKG1v ZHMgPSBwbGFuZV9pbmZvLT5tb2RpZmllcnM7ICptb2RzICE9IERSTV9GT1JNQVRfTU9EX0lO VkFMSUQ7IG1vZHMrKykgew0KPiArCQlpZiAoKm1vZHMgPT0gbW9kaWZpZXIpDQo+ICsJCQly ZXR1cm4gdHJ1ZTsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gZmFsc2U7DQo+ICt9DQo+ICsN Cj4gK3N0YXRpYyBpbnQgdnNfZGNfY2hlY2tfcGxhbmUoc3RydWN0IGRldmljZSAqZGV2LCBz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwNCj4gKwkJCSAgICAgc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQ0KPiArew0KPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19w bGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19wbGFuZV9zdGF0ZShzdGF0ZSwNCj4g KwkJCQkJCQkJCQkgcGxhbmUpOw0KPiArCXN0cnVjdCB2c19kYyAqZGMgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsNCj4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IG5ld19wbGFu ZV9zdGF0ZS0+ZmI7DQo+ICsJY29uc3Qgc3RydWN0IHZzX3BsYW5lX2luZm8gKnBsYW5lX2lu Zm87DQo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gbmV3X3BsYW5lX3N0YXRlLT5jcnRj Ow0KPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsNCj4gKwlzdHJ1Y3Qg dnNfcGxhbmUgKnZzX3BsYW5lID0gdG9fdnNfcGxhbmUocGxhbmUpOw0KPiArDQo+ICsJcGxh bmVfaW5mbyA9ICZkYy0+aHcuaW5mby0+cGxhbmVzW3ZzX3BsYW5lLT5pZF07DQo+ICsJaWYg KCFwbGFuZV9pbmZvKQ0KDQpJJ2Qgc2F5IHRoaXMgY2Fubm90IGJlIE5VTEwuDQoNCj4gKwkJ cmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKwlpZiAoZmItPndpZHRoIDwgcGxhbmVfaW5mby0+ bWluX3dpZHRoIHx8DQo+ICsJICAgIGZiLT53aWR0aCA+IHBsYW5lX2luZm8tPm1heF93aWR0 aCB8fA0KPiArCSAgICBmYi0+aGVpZ2h0IDwgcGxhbmVfaW5mby0+bWluX2hlaWdodCB8fA0K PiArCSAgICBmYi0+aGVpZ2h0ID4gcGxhbmVfaW5mby0+bWF4X2hlaWdodCkNCj4gKwkJZGV2 X2Vycl9vbmNlKGRldiwgImJ1ZmZlciBzaXplIG1heSBub3Qgc3VwcG9ydCBvbiBwbGFuZSVk LlxuIiwNCj4gKwkJCSAgICAgdnNfcGxhbmUtPmlkKTsNCj4gKw0KPiArCWlmICh2c19wbGFu ZS0+YmFzZS50eXBlICE9IERSTV9QTEFORV9UWVBFX0NVUlNPUiAmJg0KDQpJbnRlcm5hbC1B UEkgcHJvYmxlbTogdGhlcmUgc2hvdWxkIGJlIGEgc2VwYXJhdGUgY2hlY2sgZnVuY3Rpb24g Zm9yIGN1cnNvcnMuDQoNCj4gKwkgICAgKCF2c19kY19tb2Rfc3VwcG9ydGVkKHBsYW5lX2lu Zm8sIGZiLT5tb2RpZmllcikpKSB7DQo+ICsJCWRldl9lcnIoZGV2LCAidW5zdXBwb3J0ZWQg bW9kaWZpZXIgb24gcGxhbmUlZC5cbiIsIHZzX3BsYW5lLT5pZCk7DQo+ICsJCXJldHVybiAt RUlOVkFMOw0KPiArCX0NCj4gKw0KPiArCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9l eGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsNCj4gKwlpZiAoSVNfRVJSKGNydGNf c3RhdGUpKQ0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCg0KVGhpcyBjYW5ub3QgZmFpbC4NCg0K QmVzdCByZWdhcmRzDQpUaG9tYXMNCg0KPiArDQo+ICsJcmV0dXJuIGRybV9hdG9taWNfaGVs cGVyX2NoZWNrX3BsYW5lX3N0YXRlKG5ld19wbGFuZV9zdGF0ZSwgY3J0Y19zdGF0ZSwNCj4g KwkJCQkJCSAgcGxhbmVfaW5mby0+bWluX3NjYWxlLA0KPiArCQkJCQkJICBwbGFuZV9pbmZv LT5tYXhfc2NhbGUsDQo+ICsJCQkJCQkgIHRydWUsIHRydWUpOw0KPiArfQ0KPiArDQo+ICtz dGF0aWMgaXJxcmV0dXJuX3QgZGNfaXNyKGludCBpcnEsIHZvaWQgKmRhdGEpDQo+ICt7DQo+ ICsJc3RydWN0IHZzX2RjICpkYyA9IGRhdGE7DQo+ICsJc3RydWN0IHZzX2RjX2luZm8gKmRj X2luZm8gPSBkYy0+aHcuaW5mbzsNCj4gKwl1MzIgaSwgcmV0Ow0KPiArDQo+ICsJcmV0ID0g ZGNfaHdfZ2V0X2ludGVycnVwdCgmZGMtPmh3KTsNCj4gKw0KPiArCWZvciAoaSA9IDA7IGkg PCBkY19pbmZvLT5wYW5lbF9udW07IGkrKykNCj4gKwkJdnNfY3J0Y19oYW5kbGVfdmJsYW5r KCZkYy0+Y3J0Y1tpXS0+YmFzZSwgZGNfaHdfY2hlY2tfdW5kZXJmbG93KCZkYy0+aHcpKTsN Cj4gKw0KPiArCXJldHVybiBJUlFfSEFORExFRDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZv aWQgdnNfZGNfY29tbWl0KHN0cnVjdCBkZXZpY2UgKmRldikNCj4gK3sNCj4gKwlzdHJ1Y3Qg dnNfZGMgKmRjID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ICsNCj4gKwlkY19od19lbmFi bGVfc2hhZG93X3JlZ2lzdGVyKCZkYy0+aHcsIGZhbHNlKTsNCj4gKw0KPiArCWRjX2h3X2Nv bW1pdCgmZGMtPmh3KTsNCj4gKw0KPiArCWlmIChkYy0+Zmlyc3RfZnJhbWUpDQo+ICsJCWRj LT5maXJzdF9mcmFtZSA9IGZhbHNlOw0KPiArDQo+ICsJZGNfaHdfZW5hYmxlX3NoYWRvd19y ZWdpc3RlcigmZGMtPmh3LCB0cnVlKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0 cnVjdCB2c19jcnRjX2Z1bmNzIGRjX2NydGNfZnVuY3MgPSB7DQo+ICsJLmVuYWJsZQkJCT0g dnNfZGNfZW5hYmxlLA0KPiArCS5kaXNhYmxlCQk9IHZzX2RjX2Rpc2FibGUsDQo+ICsJLm1v ZGVfZml4dXAJCT0gdnNfZGNfbW9kZV9maXh1cCwNCj4gKwkuc2V0X2dhbW1hCQk9IHZzX2Rj X3NldF9nYW1tYSwNCj4gKwkuZW5hYmxlX2dhbW1hCT0gdnNfZGNfZW5hYmxlX2dhbW1hLA0K PiArCS5lbmFibGVfdmJsYW5rCT0gdnNfZGNfZW5hYmxlX3ZibGFuaywNCj4gKwkuY29tbWl0 CQkJPSB2c19kY19jb21taXQsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IHZzX3BsYW5lX2Z1bmNzIGRjX3BsYW5lX2Z1bmNzID0gew0KPiArCS51cGRhdGUJCQk9IHZz X2RjX3VwZGF0ZV9wbGFuZSwNCj4gKwkuZGlzYWJsZQkJPSB2c19kY19kaXNhYmxlX3BsYW5l LA0KPiArCS5jaGVjawkJCT0gdnNfZGNfY2hlY2tfcGxhbmUsDQo+ICt9Ow0KPiArDQo+ICtz dGF0aWMgaW50IGRjX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICpt YXN0ZXIsIHZvaWQgKmRhdGEpDQo+ICt7DQo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRybV9k ZXYgPSBkYXRhOw0KPiArCXN0cnVjdCB2c19kYyAqZGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2 KTsNCj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnQ7DQo+ICsJc3RydWN0IHZzX2NydGMg KmNydGM7DQo+ICsJc3RydWN0IGRybV9jcnRjICpkcm1fY3J0YzsNCj4gKwlzdHJ1Y3QgdnNf ZGNfaW5mbyAqZGNfaW5mbzsNCj4gKwlzdHJ1Y3QgdnNfcGxhbmUgKnBsYW5lOw0KPiArCXN0 cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwgKnRtcDsNCj4gKwlzdHJ1Y3QgdnNfcGxhbmVf aW5mbyAqcGxhbmVfaW5mbzsNCj4gKwlpbnQgaSwgcmV0Ow0KPiArCXUzMiBjdHJjX21hc2sg PSAwOw0KPiArDQo+ICsJaWYgKCFkcm1fZGV2IHx8ICFkYykgew0KPiArCQlkZXZfZXJyKGRl diwgImRldmljZXMgYXJlIG5vdCBjcmVhdGVkLlxuIik7DQo+ICsJCXJldHVybiAtRU5PREVW Ow0KPiArCX0NCj4gKw0KPiArCXJldCA9IGRjX2luaXQoZGV2KTsNCj4gKwlpZiAocmV0IDwg MCkgew0KPiArCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBpbml0aWFsaXplIERDIGhhcmR3 YXJlLlxuIik7DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiArDQo+ICsJcG9ydCA9IG9m X2dldF9jaGlsZF9ieV9uYW1lKGRldi0+b2Zfbm9kZSwgInBvcnQiKTsNCj4gKwlpZiAoIXBv cnQpIHsNCj4gKwkJZGV2X2VycihkZXYsICJubyBwb3J0IG5vZGUgZm91bmRcbiIpOw0KPiAr CQlyZXR1cm4gLUVOT0RFVjsNCj4gKwl9DQo+ICsJb2Zfbm9kZV9wdXQocG9ydCk7DQo+ICsN Cj4gKwlkY19pbmZvID0gZGMtPmh3LmluZm87DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwg ZGNfaW5mby0+cGFuZWxfbnVtOyBpKyspIHsNCj4gKwkJY3J0YyA9IHZzX2NydGNfY3JlYXRl KGRybV9kZXYsIGRjX2luZm8pOw0KPiArCQlpZiAoIWNydGMpIHsNCj4gKwkJCWRldl9lcnIo ZGV2LCAiRmFpbGVkIHRvIGNyZWF0ZSBDUlRDLlxuIik7DQo+ICsJCQlyZXQgPSAtRU5PTUVN Ow0KPiArCQkJcmV0dXJuIHJldDsNCj4gKwkJfQ0KPiArDQo+ICsJCWNydGMtPmJhc2UucG9y dCA9IHBvcnQ7DQo+ICsJCWNydGMtPmRldiA9IGRldjsNCj4gKwkJY3J0Yy0+ZnVuY3MgPSAm ZGNfY3J0Y19mdW5jczsNCj4gKwkJZGMtPmNydGNbaV0gPSBjcnRjOw0KPiArCQljdHJjX21h c2sgfD0gZHJtX2NydGNfbWFzaygmY3J0Yy0+YmFzZSk7DQo+ICsJfQ0KPiArDQo+ICsJZm9y IChpID0gMDsgaSA8IGRjX2luZm8tPnBsYW5lX251bTsgaSsrKSB7DQo+ICsJCXBsYW5lX2lu Zm8gPSAoc3RydWN0IHZzX3BsYW5lX2luZm8gKikmZGNfaW5mby0+cGxhbmVzW2ldOw0KPiAr DQo+ICsJCWlmICghc3RyY21wKHBsYW5lX2luZm8tPm5hbWUsICJQcmltYXJ5IikgfHwgIXN0 cmNtcChwbGFuZV9pbmZvLT5uYW1lLCAiQ3Vyc29yIikpIHsNCj4gKwkJCXBsYW5lID0gdnNf cGxhbmVfY3JlYXRlKGRybV9kZXYsIHBsYW5lX2luZm8sIGRjX2luZm8tPmxheWVyX251bSwN Cj4gKwkJCQkJCWRybV9jcnRjX21hc2soJmRjLT5jcnRjWzBdLT5iYXNlKSk7DQo+ICsJCX0g ZWxzZSBpZiAoIXN0cmNtcChwbGFuZV9pbmZvLT5uYW1lLCAiUHJpbWFyeV8xIikgfHwNCj4g KwkJCQkgICAhc3RyY21wKHBsYW5lX2luZm8tPm5hbWUsICJDdXJzb3JfMSIpKSB7DQo+ICsJ CQlwbGFuZSA9IHZzX3BsYW5lX2NyZWF0ZShkcm1fZGV2LCBwbGFuZV9pbmZvLCBkY19pbmZv LT5sYXllcl9udW0sDQo+ICsJCQkJCQlkcm1fY3J0Y19tYXNrKCZkYy0+Y3J0Y1sxXS0+YmFz ZSkpOw0KPiArCQl9IGVsc2Ugew0KPiArCQkJcGxhbmUgPSB2c19wbGFuZV9jcmVhdGUoZHJt X2RldiwgcGxhbmVfaW5mbywNCj4gKwkJCQkJCWRjX2luZm8tPmxheWVyX251bSwgY3RyY19t YXNrKTsNCj4gKwkJfQ0KPiArDQo+ICsJCWlmICghcGxhbmUpDQo+ICsJCQlnb3RvIGVycl9j bGVhbnVwX3BsYW5lczsNCj4gKw0KPiArCQlwbGFuZS0+aWQgPSBpOw0KPiArCQlkYy0+cGxh bmVzW2ldLmlkID0gcGxhbmVfaW5mby0+aWQ7DQo+ICsNCj4gKwkJcGxhbmUtPmZ1bmNzID0g JmRjX3BsYW5lX2Z1bmNzOw0KPiArDQo+ICsJCWlmIChwbGFuZV9pbmZvLT50eXBlID09IERS TV9QTEFORV9UWVBFX1BSSU1BUlkpIHsNCj4gKwkJCWlmICghc3RyY21wKHBsYW5lX2luZm8t Pm5hbWUsICJQcmltYXJ5IikpDQo+ICsJCQkJZGMtPmNydGNbMF0tPmJhc2UucHJpbWFyeSA9 ICZwbGFuZS0+YmFzZTsNCj4gKwkJCWVsc2UNCj4gKwkJCQlkYy0+Y3J0Y1sxXS0+YmFzZS5w cmltYXJ5ID0gJnBsYW5lLT5iYXNlOw0KPiArCQkJZHJtX2Rldi0+bW9kZV9jb25maWcubWlu X3dpZHRoID0gcGxhbmVfaW5mby0+bWluX3dpZHRoOw0KPiArCQkJZHJtX2Rldi0+bW9kZV9j b25maWcubWluX2hlaWdodCA9DQo+ICsJCQkJCQkJcGxhbmVfaW5mby0+bWluX2hlaWdodDsN Cj4gKwkJCWRybV9kZXYtPm1vZGVfY29uZmlnLm1heF93aWR0aCA9IHBsYW5lX2luZm8tPm1h eF93aWR0aDsNCj4gKwkJCWRybV9kZXYtPm1vZGVfY29uZmlnLm1heF9oZWlnaHQgPQ0KPiAr CQkJCQkJCXBsYW5lX2luZm8tPm1heF9oZWlnaHQ7DQo+ICsJCX0NCj4gKw0KPiArCQlpZiAo cGxhbmVfaW5mby0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpIHsNCj4gKwkJCWlm ICghc3RyY21wKHBsYW5lX2luZm8tPm5hbWUsICJDdXJzb3IiKSkNCj4gKwkJCQlkYy0+Y3J0 Y1swXS0+YmFzZS5jdXJzb3IgPSAmcGxhbmUtPmJhc2U7DQo+ICsJCQllbHNlDQo+ICsJCQkJ ZGMtPmNydGNbMV0tPmJhc2UuY3Vyc29yID0gJnBsYW5lLT5iYXNlOw0KPiArCQkJZHJtX2Rl di0+bW9kZV9jb25maWcuY3Vyc29yX3dpZHRoID0NCj4gKwkJCQkJCQlwbGFuZV9pbmZvLT5t YXhfd2lkdGg7DQo+ICsJCQlkcm1fZGV2LT5tb2RlX2NvbmZpZy5jdXJzb3JfaGVpZ2h0ID0N Cj4gKwkJCQkJCQlwbGFuZV9pbmZvLT5tYXhfaGVpZ2h0Ow0KPiArCQl9DQo+ICsJfQ0KPiAr DQo+ICsJdnNfZHJtX3VwZGF0ZV9waXRjaF9hbGlnbm1lbnQoZHJtX2RldiwgZGNfaW5mby0+ cGl0Y2hfYWxpZ25tZW50KTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArDQo+ICtlcnJfY2xl YW51cF9wbGFuZXM6DQo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGRybV9wbGFuZSwg dG1wLA0KPiArCQkJCSAmZHJtX2Rldi0+bW9kZV9jb25maWcucGxhbmVfbGlzdCwgaGVhZCkN Cj4gKwkJaWYgKGRybV9wbGFuZS0+cG9zc2libGVfY3J0Y3MgJiBjdHJjX21hc2spDQo+ICsJ CQl2c19wbGFuZV9kZXN0b3J5KGRybV9wbGFuZSk7DQo+ICsNCj4gKwlkcm1fZm9yX2VhY2hf Y3J0Yyhkcm1fY3J0YywgZHJtX2RldikNCj4gKwkJdnNfY3J0Y19kZXN0cm95KGRybV9jcnRj KTsNCj4gKw0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGRj X3VuYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9p ZCAqZGF0YSkNCj4gK3sNCj4gKwlkY19kZWluaXQoZGV2KTsNCj4gK30NCj4gKw0KPiArY29u c3Qgc3RydWN0IGNvbXBvbmVudF9vcHMgZGNfY29tcG9uZW50X29wcyA9IHsNCj4gKwkuYmlu ZCA9IGRjX2JpbmQsDQo+ICsJLnVuYmluZCA9IGRjX3VuYmluZCwNCj4gK307DQo+ICsNCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGRjX2RyaXZlcl9kdF9tYXRjaFtd ID0gew0KPiArCXsgLmNvbXBhdGlibGUgPSAidmVyaXNpbGljb24sZGM4MjAwIiwgfSwNCj4g Kwl7fSwNCj4gK307DQo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkY19kcml2ZXJfZHRf bWF0Y2gpOw0KPiArDQo+ICtzdGF0aWMgaW50IGRjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpDQo+ICt7DQo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRl djsNCj4gKwlzdHJ1Y3QgdnNfZGMgKmRjOw0KPiArCWludCBpcnEsIHJldCwgaTsNCj4gKw0K PiArCWRjID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpkYyksIEdGUF9LRVJORUwpOw0K PiArCWlmICghZGMpDQo+ICsJCXJldHVybiAtRU5PTUVNOw0KPiArDQo+ICsJZGMtPmh3Lmhp X2Jhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCk7DQo+ICsJ aWYgKElTX0VSUihkYy0+aHcuaGlfYmFzZSkpDQo+ICsJCXJldHVybiBQVFJfRVJSKGRjLT5o dy5oaV9iYXNlKTsNCj4gKw0KPiArCWRjLT5ody5yZWdfYmFzZSA9IGRldm1fcGxhdGZvcm1f aW9yZW1hcF9yZXNvdXJjZShwZGV2LCAxKTsNCj4gKwlpZiAoSVNfRVJSKGRjLT5ody5yZWdf YmFzZSkpDQo+ICsJCXJldHVybiBQVFJfRVJSKGRjLT5ody5yZWdfYmFzZSk7DQo+ICsNCj4g KwlkYy0+ZHNzX3JlZyA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAy KTsNCj4gKwlpZiAoSVNfRVJSKGRjLT5kc3NfcmVnKSkNCj4gKwkJcmV0dXJuIFBUUl9FUlIo ZGMtPmRzc19yZWcpOw0KPiArDQo+ICsJZGMtPm5jbGtzID0gQVJSQVlfU0laRShkYy0+Y2xr X3ZvdXQpOw0KPiArCWZvciAoaSA9IDA7IGkgPCBkYy0+bmNsa3M7ICsraSkNCj4gKwkJZGMt PmNsa192b3V0W2ldLmlkID0gdm91dF9jbG9ja3NbaV07DQo+ICsJcmV0ID0gZGV2bV9jbGtf YnVsa19nZXQoZGV2LCBkYy0+bmNsa3MsIGRjLT5jbGtfdm91dCk7DQo+ICsJaWYgKHJldCkg ew0KPiArCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBnZXQgY2xrIGNvbnRyb2xzXG4iKTsN Cj4gKwkJcmV0dXJuIHJldDsNCj4gKwl9DQo+ICsNCj4gKwlkYy0+bnJzdHMgPSBBUlJBWV9T SVpFKGRjLT5yc3Rfdm91dCk7DQo+ICsJZm9yIChpID0gMDsgaSA8IGRjLT5ucnN0czsgKytp KQ0KPiArCQlkYy0+cnN0X3ZvdXRbaV0uaWQgPSB2b3V0X3Jlc2V0c1tpXTsNCj4gKwlyZXQg PSBkZXZtX3Jlc2V0X2NvbnRyb2xfYnVsa19nZXRfc2hhcmVkKGRldiwgZGMtPm5yc3RzLA0K PiArCQkJCQkJIGRjLT5yc3Rfdm91dCk7DQo+ICsJaWYgKHJldCkgew0KPiArCQlkZXZfZXJy KGRldiwgIkZhaWxlZCB0byBnZXQgcmVzZXQgY29udHJvbHNcbiIpOw0KPiArCQlyZXR1cm4g cmV0Ow0KPiArCX0NCj4gKw0KPiArCWlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7 DQo+ICsNCj4gKwlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgaXJxLCBkY19pc3IsIDAs IGRldl9uYW1lKGRldiksIGRjKTsNCj4gKwlpZiAocmV0IDwgMCkgew0KPiArCQlkZXZfZXJy KGRldiwgIkZhaWxlZCB0byBpbnN0YWxsIGlycToldS5cbiIsIGlycSk7DQo+ICsJCXJldHVy biByZXQ7DQo+ICsJfQ0KPiArDQo+ICsJZGV2X3NldF9kcnZkYXRhKGRldiwgZGMpOw0KPiAr DQo+ICsJcmV0dXJuIGNvbXBvbmVudF9hZGQoZGV2LCAmZGNfY29tcG9uZW50X29wcyk7DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZGNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpDQo+ICt7DQo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsN Cj4gKw0KPiArCWNvbXBvbmVudF9kZWwoZGV2LCAmZGNfY29tcG9uZW50X29wcyk7DQo+ICsN Cj4gKwlkZXZfc2V0X2RydmRhdGEoZGV2LCBOVUxMKTsNCj4gKw0KPiArCXJldHVybiAwOw0K PiArfQ0KPiArDQo+ICtzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGRjX3BsYXRmb3JtX2RyaXZl ciA9IHsNCj4gKwkucHJvYmUgPSBkY19wcm9iZSwNCj4gKwkucmVtb3ZlID0gZGNfcmVtb3Zl LA0KPiArCS5kcml2ZXIgPSB7DQo+ICsJCS5uYW1lID0gInZzLWRjIiwNCj4gKwkJLm9mX21h dGNoX3RhYmxlID0gb2ZfbWF0Y2hfcHRyKGRjX2RyaXZlcl9kdF9tYXRjaCksDQo+ICsJfSwN Cj4gK307DQo+ICsNCj4gK01PRFVMRV9BVVRIT1IoIlN0YXJGaXZlIENvcnBvcmF0aW9uIik7 DQo+ICtNT0RVTEVfQVVUSE9SKCJWZXJpc2lsaWNvbiBDb3Jwb3JhdGlvbiIpOw0KPiArTU9E VUxFX0RFU0NSSVBUSU9OKCJWZXJpU2lsaWNvbiBEQyBEcml2ZXIiKTsNCj4gK01PRFVMRV9M SUNFTlNFKCJHUEwiKTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2ls aWNvbi92c19kYy5oIGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2RjLmgNCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi5hYjc2YWMxZTk5 NDMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGlj b24vdnNfZGMuaA0KPiBAQCAtMCwwICsxLDYyIEBADQo+ICsvKiBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMCAqLw0KPiArLyoNCj4gKyAqIENvcHlyaWdodCAoQykgMjAyMyBW ZXJpU2lsaWNvbiBIb2xkaW5ncyBDby4sIEx0ZC4NCj4gKyAqLw0KPiArDQo+ICsjaWZuZGVm IF9fVlNfRENfSF9fDQo+ICsjZGVmaW5lIF9fVlNfRENfSF9fDQo+ICsNCj4gKyNpbmNsdWRl IDxsaW51eC9jbGsuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9tbV90eXBlcy5oPg0KPiArI2lu Y2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPg0K PiArDQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9mb3VyY2MuaD4NCj4gKyNpbmNsdWRlIDxkcm0v ZHJtX21vZGVzLmg+DQo+ICsNCj4gKyNpbmNsdWRlICJ2c19jcnRjLmgiDQo+ICsjaW5jbHVk ZSAidnNfZGNfaHcuaCINCj4gKyNpbmNsdWRlICJ2c19wbGFuZS5oIg0KPiArDQo+ICsjZGVm aW5lIGZvdXJjY19tb2RfdnNfZ2V0X3R5cGUodmFsKSBcDQo+ICsJCQkoKCh2YWwpICYgRFJN X0ZPUk1BVF9NT0RfVlNfVFlQRV9NQVNLKSA+PiA1NCkNCj4gKw0KPiArc3RydWN0IHZzX2Rj X3BsYW5lIHsNCj4gKwllbnVtIGRjX2h3X3BsYW5lX2lkIGlkOw0KPiArfTsNCj4gKw0KPiAr ZW51bSB2b3V0X2NsayB7DQo+ICsJQ0xLX1ZPVVRfTk9DX0RJU1AgPSAwLA0KPiArCUNMS19W T1VUX1BJWDAsDQo+ICsJQ0xLX1ZPVVRfUElYMSwNCj4gKwlDTEtfVk9VVF9BWEksDQo+ICsJ Q0xLX1ZPVVRfQ09SRSwNCj4gKwlDTEtfVk9VVF9BSEIsDQo+ICsJQ0xLX1ZPVVRfSERNSV9Q SVgsDQo+ICsJQ0xLX1ZPVVRfU09DX1BJWCwNCj4gKwlDTEtfVk9VVF9OVU0NCj4gK307DQo+ ICsNCj4gK2VudW0gcnN0X3ZvdXQgew0KPiArCVJTVF9WT1VUX0FYSSA9IDAsDQo+ICsJUlNU X1ZPVVRfQUhCLA0KPiArCVJTVF9WT1VUX0NPUkUsDQo+ICsJUlNUX1ZPVVRfTlVNDQo+ICt9 Ow0KPiArDQo+ICtzdHJ1Y3QgdnNfZGMgew0KPiArCXN0cnVjdCB2c19jcnRjCQkqY3J0Y1tE Q19ESVNQTEFZX05VTV07DQo+ICsJc3RydWN0IGRjX2h3CQlodzsNCj4gKwl2b2lkIF9faW9t ZW0gICAgICAgICpkc3NfcmVnOw0KPiArCWJvb2wJCQkgICAgZmlyc3RfZnJhbWU7DQo+ICsN Cj4gKwlzdHJ1Y3QgdnNfZGNfcGxhbmUgIHBsYW5lc1tQTEFORV9OVU1dOw0KPiArCXN0cnVj dCBjbGtfYnVsa19kYXRhIGNsa192b3V0W0NMS19WT1VUX05VTV07DQo+ICsJaW50IG5jbGtz Ow0KPiArCXN0cnVjdCByZXNldF9jb250cm9sX2J1bGtfZGF0YSByc3Rfdm91dFtSU1RfVk9V VF9OVU1dOw0KPiArCWludCBucnN0czsNCj4gK307DQo+ICsNCj4gK2V4dGVybiBzdHJ1Y3Qg cGxhdGZvcm1fZHJpdmVyIGRjX3BsYXRmb3JtX2RyaXZlcjsNCj4gKw0KPiArI2VuZGlmIC8q IF9fVlNfRENfSF9fICovDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmVyaXNp bGljb24vdnNfZGNfaHcuYyBiL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19kY19o dy5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uZDM3 MGRkNDAxMDg0DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zl cmlzaWxpY29uL3ZzX2RjX2h3LmMNCj4gQEAgLTAsMCArMSwyMDA4IEBADQo+ICsvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiArLyoNCj4gKyAqIENvcHlyaWdodCAo QykgMjAyMyBWZXJpU2lsaWNvbiBIb2xkaW5ncyBDby4sIEx0ZC4NCj4gKyAqLw0KPiArDQo+ ICsjaW5jbHVkZSA8bGludXgvYml0cy5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+DQo+ ICsjaW5jbHVkZSA8bGludXgvbWVkaWEtYnVzLWZvcm1hdC5oPg0KPiArI2luY2x1ZGUgPGRy bS9kcm1fYXRvbWljX2hlbHBlci5oPg0KPiArI2luY2x1ZGUgPGRybS9kcm1fYmxlbmQuaD4N Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZvdXJjYy5oPg0KPiArI2luY2x1ZGUgPGRybS92c19k cm0uaD4NCj4gKw0KPiArI2luY2x1ZGUgInZzX2RjX2h3LmgiDQo+ICsjaW5jbHVkZSAidnNf dHlwZS5oIg0KPiArDQo+ICtzdGF0aWMgY29uc3QgdTMyIGhvcmtlcm5lbFtdID0gew0KPiAr CTB4MDAwMDAwMDAsIDB4MjAwMDAwMDAsIDB4MDAwMDIwMDAsIDB4MDAwMDAwMDAsDQo+ICsJ MHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgyM2ZkMWMwMywgMHgwMDAwMDAwMCwNCj4gKwkw eDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDE4MWYwMDAwLCAweDAwMDAyN2UxLA0KPiArCTB4 MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MmI5ODE0NjgsDQo+ICsJMHgw MDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgxMGYwMDAwMCwNCj4gKwkweDAw MDAyZjEwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLA0KPiArCTB4MzIz OTBkYzcsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsDQo+ICsJMHgwYWY1 MDAwMCwgMHgwMDAwMzUwYiwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwNCj4gKwkweDAwMDAw MDAwLCAweDM3ODEwODdmLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLA0KPiArCTB4MDAwMDAw MDAsIDB4MDY2NjAwMDAsIDB4MDAwMDM5OWEsIDB4MDAwMDAwMDAsDQo+ICsJMHgwMDAwMDAw MCwgMHgwMDAwMDAwMCwgMHgzYjU5MDRhNywgMHgwMDAwMDAwMCwNCj4gKwkweDAwMDAwMDAw LCAweDAwMDAwMDAwLCAweDAzM2MwMDAwLCAweDAwMDAzY2M0LA0KPiArCTB4MDAwMDAwMDAs IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4M2RlMTAyMWYsDQo+ICsJMHgwMDAwMDAwMCwg MHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMTQ3MDAwMCwNCj4gKwkweDAwMDAzZWI5LCAw eDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLA0KPiArCTB4M2Y1MzAwYWQsIDB4 MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsDQo+ICsJMHgwMDQ4MDAwMCwgMHgw MDAwM2ZiOCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwNCj4gKwkweDAwMDAwMDAwLCAweDNm ZWYwMDExLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLA0KPiArCTB4MDAwMDAwMDAsIDB4MDAw MDAwMDAsIDB4MDAwMDQwMDAsIDB4MDAwMDAwMDAsDQo+ICsJMHgwMDAwMDAwMCwgMHgwMDAw MDAwMCwgMHgyMDAwMjAwMCwgMHgwMDAwMDAwMCwNCj4gKwkweDAwMDAwMDAwLCAweDAwMDAw MDAwLCAweDFjMDMwMDAwLCAweDAwMDAyM2ZkLA0KPiArCTB4MDAwMDAwMDAsIDB4MDAwMDAw MDAsIDB4MDAwMDAwMDAsIDB4MjdlMTE4MWYsDQo+ICsJMHgwMDAwMDAwMCwgMHgwMDAwMDAw MCwgMHgwMDAwMDAwMCwgMHgxNDY4MDAwMCwNCj4gKwkweDAwMDAyYjk4LCAweDAwMDAwMDAw LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLA0KPiArCTB4MmYxMDEwZjAsIDB4MDAwMDAwMDAs IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsDQo+ICsJMHgwZGM3MDAwMCwgMHgwMDAwMzIzOSwg MHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwNCj4gKwkweDAwMDAwMDAwLCAweDM1MGIwYWY1LCAw eDAwMDAwMDAwLCAweDAwMDAwMDAwLA0KPiArCTB4MDAwMDAwMDAsIDB4MDg3ZjAwMDAsIDB4 MDAwMDM3ODEsIDB4MDAwMDAwMDAsDQo+ICsJMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgz OTlhMDY2NiwgMHgwMDAwMDAwMCwNCj4gKwkweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDA0 YTcwMDAwLCAweDAwMDAzYjU5LA0KPiArCTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAw MDAwMDAsIDB4M2NjNDAzM2MsDQo+ICsJMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAw MDAwMCwgMHgwMjFmMDAwMCwNCj4gK307DQo+ICsNCj4gKyNkZWZpbmUgSF9DT0VGX1NJWkUg KHNpemVvZihob3JrZXJuZWwpIC8gc2l6ZW9mKHUzMikpDQo+ICsNCj4gK3N0YXRpYyBjb25z dCB1MzIgdmVya2VybmVsW10gPSB7DQo+ICsJMHgwMDAwMDAwMCwgMHgyMDAwMDAwMCwgMHgw MDAwMjAwMCwgMHgwMDAwMDAwMCwNCj4gKwkweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDIz ZmQxYzAzLCAweDAwMDAwMDAwLA0KPiArCTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MTgx ZjAwMDAsIDB4MDAwMDI3ZTEsDQo+ICsJMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAw MDAwMCwgMHgyYjk4MTQ2OCwNCj4gKwkweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAw MDAwLCAweDEwZjAwMDAwLA0KPiArCTB4MDAwMDJmMTAsIDB4MDAwMDAwMDAsIDB4MDAwMDAw MDAsIDB4MDAwMDAwMDAsDQo+ICsJMHgzMjM5MGRjNywgMHgwMDAwMDAwMCwgMHgwMDAwMDAw MCwgMHgwMDAwMDAwMCwNCj4gKwkweDBhZjUwMDAwLCAweDAwMDAzNTBiLCAweDAwMDAwMDAw LCAweDAwMDAwMDAwLA0KPiArCTB4MDAwMDAwMDAsIDB4Mzc4MTA4N2YsIDB4MDAwMDAwMDAs IDB4MDAwMDAwMDAsDQo+ICsJMHgwMDAwMDAwMCwgMHgwNjY2MDAwMCwgMHgwMDAwMzk5YSwg MHgwMDAwMDAwMCwNCj4gKwkweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDNiNTkwNGE3LCAw eDAwMDAwMDAwLA0KPiArCTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDMzYzAwMDAsIDB4 MDAwMDNjYzQsDQo+ICsJMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgz ZGUxMDIxZiwNCj4gKwkweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAx NDcwMDAwLA0KPiArCTB4MDAwMDNlYjksIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAw MDAwMDAsDQo+ICsJMHgzZjUzMDBhZCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAw MDAwMCwNCj4gKwkweDAwNDgwMDAwLCAweDAwMDAzZmI4LCAweDAwMDAwMDAwLCAweDAwMDAw MDAwLA0KPiArCTB4MDAwMDAwMDAsIDB4M2ZlZjAwMTEsIDB4MDAwMDAwMDAsIDB4MDAwMDAw MDAsDQo+ICsJMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwNDAwMCwgMHgwMDAwMDAw MCwNCj4gKwkweGNkY2QwMDAwLCAweGZkZmRmZGZkLCAweGFiYWJhYmFiLCAweGFiYWJhYmFi LA0KPiArCTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4NWZmNWY0NTYsIDB4MDAwZjVmNTgs DQo+ICsJMHgwMmNjNmM3OCwgMHgwMmNjMGMyOCwgMHhmZWVlZmVlZSwgMHhmZWVlZmVlZSwN Cj4gKwkweGZlZWVmZWVlLCAweGZlZWVmZWVlLCAweGZlZWVmZWVlLCAweGZlZWVmZWVlLA0K PiArCTB4ZmVlZWZlZWUsIDB4ZmVlZWZlZWUsIDB4ZmVlZWZlZWUsIDB4ZmVlZWZlZWUsDQo+ ICsJMHhmZWVlZmVlZSwgMHhmZWVlZmVlZSwgMHhmZWVlZmVlZSwgMHhmZWVlZmVlZSwNCj4g KwkweGZlZWVmZWVlLCAweGZlZWVmZWVlLCAweGZlZWVmZWVlLCAweGZlZWVmZWVlLA0KPiAr CTB4ZmVlZWZlZWUsIDB4ZmVlZWZlZWUsIDB4ZmVlZWZlZWUsIDB4ZmVlZWZlZWUsDQo+ICsJ MHhmZWVlZmVlZSwgMHhmZWVlZmVlZSwgMHhmZWVlZmVlZSwgMHhmZWVlZmVlZSwNCj4gKwkw eGZlZWVmZWVlLCAweGZlZWVmZWVlLCAweGZlZWVmZWVlLCAweGZlZWVmZWVlLA0KPiArCTB4 ZmVlZWZlZWUsIDB4ZmVlZWZlZWUsIDB4ZmVlZWZlZWUsIDB4ZmVlZWZlZWUsDQo+ICsJMHhm ZWVlZmVlZSwgMHhmZWVlZmVlZSwgMHhmZWVlZmVlZSwgMHhmZWVlZmVlZSwNCj4gKwkweGZl ZWVmZWVlLCAweGZlZWVmZWVlLCAweGZlZWVmZWVlLCAweGZlZWVmZWVlLA0KPiArfTsNCj4g Kw0KPiArI2RlZmluZSBWX0NPRUZfU0laRSAoc2l6ZW9mKHZlcmtlcm5lbCkgLyBzaXplb2Yo dTMyKSkNCj4gKw0KPiArLyoNCj4gKyAqIFJHQiA3MDktPjIwMjAgY29udmVyc2lvbiBwYXJh bWV0ZXJzDQo+ICsgKi8NCj4gK3N0YXRpYyB1MTYgUkdCMlJHQltSR0JfVE9fUkdCX1RBQkxF X1NJWkVdID0gew0KPiArCTEwMjc5LAk1Mzk1LAk3MDksDQo+ICsJMTEzMiwJMTUwNjUsCTE4 NywNCj4gKwkyNjksCTE0NDIsCTE0Njc0DQo+ICt9Ow0KPiArDQo+ICsvKg0KPiArICogWVVW NjAxIHRvIFJHQiBjb252ZXJzaW9uIHBhcmFtZXRlcnMNCj4gKyAqIFlVVjJSR0JbMF0gIC0g WzhdIDogQzAgLSBDODsNCj4gKyAqIFlVVjJSR0JbOV0gIC0gWzExXTogRDAgLSBEMjsNCj4g KyAqIFlVVjJSR0JbMTJdIC0gWzEzXTogWSBjbGFtcCBtaW4gJiBtYXggY2FsdWU7DQo+ICsg KiBZVVYyUkdCWzE0XSAtIFsxNV06IFVWIGNsYW1wIG1pbiAmIG1heCBjYWx1ZTsNCj4gKyAq Lw0KPiArc3RhdGljIHMzMiBZVVY2MDFfMlJHQltZVVZfVE9fUkdCX1RBQkxFX1NJWkVdID0g ew0KPiArCTExOTYsCTAsCQkJMTY0MCwJMTE5NiwNCj4gKwktNDA0LAktODM2LAkJMTE5NiwJ MjA3NiwNCj4gKwkwLAkJLTkxNjIyNCwJNTU4MzM2LAktMTIwMjk0NCwNCj4gKwk2NCwJCSA5 NDAsCQk2NCwJCTk2MA0KPiArfTsNCj4gKw0KPiArLyoNCj4gKyAqIFlVVjcwOSB0byBSR0Ig Y29udmVyc2lvbiBwYXJhbWV0ZXJzDQo+ICsgKiBZVVYyUkdCWzBdICAtIFs4XSA6IEMwIC0g Qzg7DQo+ICsgKiBZVVYyUkdCWzldICAtIFsxMV06IEQwIC0gRDI7DQo+ICsgKiBZVVYyUkdC WzEyXSAtIFsxM106IFkgY2xhbXAgbWluICYgbWF4IGNhbHVlOw0KPiArICogWVVWMlJHQlsx NF0gLSBbMTVdOiBVViBjbGFtcCBtaW4gJiBtYXggY2FsdWU7DQo+ICsgKi8NCj4gK3N0YXRp YyBzMzIgWVVWNzA5XzJSR0JbWVVWX1RPX1JHQl9UQUJMRV9TSVpFXSA9IHsNCj4gKwkxMTk2 LAkJMCwJCTE4NDQsCTExOTYsDQo+ICsJLTIyMCwJCS01NDgsCTExOTYsCTIxNzIsDQo+ICsJ MCwJCQktMTAyMDY3MiwgMzE2NjcyLCAgLTExODg2MDgsDQo+ICsJNjQsCQkJOTQwLAkJNjQs CQk5NjANCj4gK307DQo+ICsNCj4gKy8qDQo+ICsgKiBZVVYyMDIwIHRvIFJHQiBjb252ZXJz aW9uIHBhcmFtZXRlcnMNCj4gKyAqIFlVVjJSR0JbMF0gIC0gWzhdIDogQzAgLSBDODsNCj4g KyAqIFlVVjJSR0JbOV0gIC0gWzExXTogRDAgLSBEMjsNCj4gKyAqIFlVVjJSR0JbMTJdIC0g WzEzXTogWSBjbGFtcCBtaW4gJiBtYXggY2FsdWU7DQo+ICsgKiBZVVYyUkdCWzE0XSAtIFsx NV06IFVWIGNsYW1wIG1pbiAmIG1heCBjYWx1ZTsNCj4gKyAqLw0KPiArc3RhdGljIHMzMiBZ VVYyMDIwXzJSR0JbWVVWX1RPX1JHQl9UQUJMRV9TSVpFXSA9IHsNCj4gKwkxMTk2LCAwLCAx NzI0LCAxMTk2LA0KPiArCS0xOTIsIC02NjgsIDExOTYsIDIyMDAsDQo+ICsJMCwgLTk1OTIz MiwgMzYzNzc2LCAtMTIwMjk0NCwNCj4gKwk2NCwgOTQwLCA2NCwgOTYwDQo+ICt9Ow0KPiAr DQo+ICsvKg0KPiArICogUkdCIHRvIFlVVjIwMjAgY29udmVyc2lvbiBwYXJhbWV0ZXJzDQo+ ICsgKiBSR0IyWVVWWzBdIC0gWzhdIDogQzAgLSBDODsNCj4gKyAqIFJHQjJZVVZbOV0gLSBb MTFdOiBEMCAtIEQyOw0KPiArICovDQo+ICtzdGF0aWMgczE2IFJHQjJZVVZbUkdCX1RPX1lV Vl9UQUJMRV9TSVpFXSA9IHsNCj4gKwkyMzAsCTU5NCwJNTIsDQo+ICsJLTEyNSwgIC0zMjMs CTQ0OCwNCj4gKwk0NDgsICAgLTQxMiwgICAtMzYsDQo+ICsJNjQsCQk1MTIsCTUxMg0KPiAr fTsNCj4gKw0KPiArLyoNCj4gKyAqIERlZ2FtbWEgdGFibGUgZm9yIDcwOSBjb2xvciBzcGFj ZSBkYXRhLg0KPiArICovDQo+ICtzdGF0aWMgdTE2IERFR0FNTUFfNzA5W0RFR0FNTUFfU0la RV0gPSB7DQo+ICsJMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDEsIDB4 MDAwMiwgMHgwMDA0LCAweDAwMDUsDQo+ICsJMHgwMDA3LCAweDAwMGEsIDB4MDAwZCwgMHgw MDExLCAweDAwMTUsIDB4MDAxOSwgMHgwMDFlLCAweDAwMjQsDQo+ICsJMHgwMDJhLCAweDAw MzAsIDB4MDAzOCwgMHgwMDNmLCAweDAwNDgsIDB4MDA1MSwgMHgwMDVhLCAweDAwNjQsDQo+ ICsJMHgwMDZmLCAweDAwN2IsIDB4MDA4NywgMHgwMDk0LCAweDAwYTEsIDB4MDBhZiwgMHgw MGJlLCAweDAwY2UsDQo+ICsJMHgwMGRlLCAweDAwZWYsIDB4MDEwMSwgMHgwMTE0LCAweDAx MjcsIDB4MDEzYiwgMHgwMTUwLCAweDAxNjYsDQo+ICsJMHgwMTdjLCAweDAxOTMsIDB4MDFh YywgMHgwMWM0LCAweDAxZGUsIDB4MDFmOSwgMHgwMjE0LCAweDAyMzAsDQo+ICsJMHgwMjRk LCAweDAyNmIsIDB4MDI4YSwgMHgwMmFhLCAweDAyY2EsIDB4MDJlYywgMHgwMzBlLCAweDAz MzEsDQo+ICsJMHgwMzU1LCAweDAzN2EsIDB4MDNhMCwgMHgwM2M3LCAweDAzZWYsIDB4MDQx OCwgMHgwNDQxLCAweDA0NmMsDQo+ICsJMHgwNDk4LCAweDA0YzQsIDB4MDRmMiwgMHgwNTIw LCAweDA1NTAsIDB4MDU4MSwgMHgwNWIyLCAweDA1ZTUsDQo+ICsJMHgwNjE4LCAweDA2NGQs IDB4MDY4MiwgMHgwNmI5LCAweDA2ZjAsIDB4MDcyOSwgMHgwNzYzLCAweDA3OWQsDQo+ICsJ MHgwN2Q5LCAweDA4MTYsIDB4MDg1NCwgMHgwODkzLCAweDA4ZDMsIDB4MDkxNCwgMHgwOTU2 LCAweDA5OTksDQo+ICsJMHgwOWRkLCAweDBhMjMsIDB4MGE2OSwgMHgwYWIxLCAweDBhZmEs IDB4MGI0NCwgMHgwYjhmLCAweDBiZGIsDQo+ICsJMHgwYzI4LCAweDBjNzYsIDB4MGNjNiwg MHgwZDE3LCAweDBkNjksIDB4MGRiYiwgMHgwZTEwLCAweDBlNjUsDQo+ICsJMHgwZWJiLCAw eDBmMTMsIDB4MGY2YywgMHgwZmM2LCAweDEwMjEsIDB4MTA3ZCwgMHgxMGRiLCAweDExM2Es DQo+ICsJMHgxMTlhLCAweDExZmIsIDB4MTI1ZCwgMHgxMmMxLCAweDEzMjUsIDB4MTM4Yywg MHgxM2YzLCAweDE0NWIsDQo+ICsJMHgxNGM1LCAweDE1MzAsIDB4MTU5YywgMHgxNjBhLCAw eDE2NzgsIDB4MTZlOCwgMHgxNzVhLCAweDE3Y2MsDQo+ICsJMHgxODQwLCAweDE4YjUsIDB4 MTkyYiwgMHgxOWEzLCAweDFhMWMsIDB4MWE5NiwgMHgxYjExLCAweDFiOGUsDQo+ICsJMHgx YzBjLCAweDFjOGMsIDB4MWQwYywgMHgxZDhlLCAweDFlMTIsIDB4MWU5NiwgMHgxZjFjLCAw eDFmYTMsDQo+ICsJMHgyMDJjLCAweDIwYjYsIDB4MjE0MSwgMHgyMWNlLCAweDIyNWMsIDB4 MjJlYiwgMHgyMzdjLCAweDI0MGUsDQo+ICsJMHgyNGExLCAweDI1MzYsIDB4MjVjYywgMHgy NjY0LCAweDI2ZmMsIDB4Mjc5NywgMHgyODMyLCAweDI4Y2YsDQo+ICsJMHgyOTZlLCAweDJh MGUsIDB4MmFhZiwgMHgyYjUxLCAweDJiZjUsIDB4MmM5YiwgMHgyZDQxLCAweDJkZWEsDQo+ ICsJMHgyZTkzLCAweDJmM2UsIDB4MmZlYiwgMHgzMDk5LCAweDMxNDgsIDB4MzFmOSwgMHgz MmFiLCAweDMzNWYsDQo+ICsJMHgzNDE0LCAweDM0Y2EsIDB4MzU4MiwgMHgzNjNjLCAweDM2 ZjcsIDB4MzdiMywgMHgzODcxLCAweDM5MzAsDQo+ICsJMHgzOWYxLCAweDNhYjMsIDB4M2I3 NywgMHgzYzNjLCAweDNkMDIsIDB4M2RjYiwgMHgzZTk0LCAweDNmNWYsDQo+ICsJMHg0MDJj LCAweDQwZmEsIDB4NDFjYSwgMHg0MjliLCAweDQzNmQsIDB4NDQ0MiwgMHg0NTE3LCAweDQ1 ZWUsDQo+ICsJMHg0NmM3LCAweDQ3YTEsIDB4NDg3ZCwgMHg0OTVhLCAweDRhMzksIDB4NGIx OSwgMHg0YmZiLCAweDRjZGUsDQo+ICsJMHg0ZGMzLCAweDRlYWEsIDB4NGY5MiwgMHg1MDdj LCAweDUxNjcsIDB4NTI1MywgMHg1MzQyLCAweDU0MzEsDQo+ICsJMHg1NTIzLCAweDU2MTYs IDB4NTcwYSwgMHg1ODAwLCAweDU4ZjgsIDB4NTlmMSwgMHg1YWVjLCAweDViZTksDQo+ICsJ MHg1Y2U3LCAweDVkZTYsIDB4NWVlNywgMHg1ZmVhLCAweDYwZWYsIDB4NjFmNSwgMHg2MmZj LCAweDY0MDYsDQo+ICsJMHg2NTEwLCAweDY2MWQsIDB4NjcyYiwgMHg2ODNiLCAweDY5NGMs IDB4NmE1ZiwgMHg2YjczLCAweDZjOGEsDQo+ICsJMHg2ZGEyLCAweDZlYmIsIDB4NmZkNiwg MHg3MGYzLCAweDcyMTEsIDB4NzMzMSwgMHg3NDUzLCAweDc1NzYsDQo+ICsJMHg3NjliLCAw eDc3YzIsIDB4NzhlYSwgMHg3YTE0LCAweDdiNDAsIDB4N2M2ZCwgMHg3ZDljLCAweDdlY2Qs DQo+ICsJMHgzZjY1LCAweDNmOGMsIDB4M2ZiMiwgMHgzZmQ4DQo+ICt9Ow0KPiArDQo+ICsv Kg0KPiArICogRGVnYW1tYSB0YWJsZSBmb3IgMjAyMCBjb2xvciBzcGFjZSBkYXRhLg0KPiAr ICovDQo+ICtzdGF0aWMgdTE2IERFR0FNTUFfMjAyMFtERUdBTU1BX1NJWkVdID0gew0KPiAr CTB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAw MCwgMHgwMDAwLA0KPiArCTB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAw LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KPiArCTB4MDAwMCwgMHgwMDAwLCAweDAwMDAs IDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KPiArCTB4MDAwMCwg MHgwMDAxLCAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLCAweDAwMDEsIDB4MDAwMSwgMHgwMDAx LA0KPiArCTB4MDAwMSwgMHgwMDAyLCAweDAwMDIsIDB4MDAwMiwgMHgwMDAyLCAweDAwMDIs IDB4MDAwMywgMHgwMDAzLA0KPiArCTB4MDAwMywgMHgwMDAzLCAweDAwMDQsIDB4MDAwNCwg MHgwMDA0LCAweDAwMDUsIDB4MDAwNSwgMHgwMDA2LA0KPiArCTB4MDAwNiwgMHgwMDA2LCAw eDAwMDcsIDB4MDAwNywgMHgwMDA4LCAweDAwMDgsIDB4MDAwOSwgMHgwMDBhLA0KPiArCTB4 MDAwYSwgMHgwMDBiLCAweDAwMGMsIDB4MDAwYywgMHgwMDBkLCAweDAwMGUsIDB4MDAwZiwg MHgwMDBmLA0KPiArCTB4MDAxMCwgMHgwMDExLCAweDAwMTIsIDB4MDAxMywgMHgwMDE0LCAw eDAwMTYsIDB4MDAxNywgMHgwMDE4LA0KPiArCTB4MDAxOSwgMHgwMDFiLCAweDAwMWMsIDB4 MDAxZSwgMHgwMDFmLCAweDAwMjEsIDB4MDAyMiwgMHgwMDI0LA0KPiArCTB4MDAyNiwgMHgw MDI4LCAweDAwMmEsIDB4MDAyYywgMHgwMDJlLCAweDAwMzAsIDB4MDAzMywgMHgwMDM1LA0K PiArCTB4MDAzOCwgMHgwMDNhLCAweDAwM2QsIDB4MDA0MCwgMHgwMDQzLCAweDAwNDYsIDB4 MDA0OSwgMHgwMDRkLA0KPiArCTB4MDA1MCwgMHgwMDU0LCAweDAwNTcsIDB4MDA1YiwgMHgw MDVmLCAweDAwNjQsIDB4MDA2OCwgMHgwMDZkLA0KPiArCTB4MDA3MSwgMHgwMDc2LCAweDAw N2MsIDB4MDA4MSwgMHgwMDg2LCAweDAwOGMsIDB4MDA5MiwgMHgwMDk4LA0KPiArCTB4MDA5 ZiwgMHgwMGE1LCAweDAwYWMsIDB4MDBiNCwgMHgwMGJiLCAweDAwYzMsIDB4MDBjYiwgMHgw MGQzLA0KPiArCTB4MDBkYywgMHgwMGU1LCAweDAwZWUsIDB4MDBmOCwgMHgwMTAyLCAweDAx MGMsIDB4MDExNywgMHgwMTIzLA0KPiArCTB4MDEyZSwgMHgwMTNhLCAweDAxNDcsIDB4MDE1 NCwgMHgwMTYxLCAweDAxNmYsIDB4MDE3ZSwgMHgwMThkLA0KPiArCTB4MDE5YywgMHgwMWFj LCAweDAxYmQsIDB4MDFjZSwgMHgwMWUwLCAweDAxZjMsIDB4MDIwNiwgMHgwMjFhLA0KPiAr CTB4MDIyZiwgMHgwMjQ0LCAweDAyNWEsIDB4MDI3MiwgMHgwMjg5LCAweDAyYTIsIDB4MDJi YywgMHgwMmQ2LA0KPiArCTB4MDJmMiwgMHgwMzBmLCAweDAzMmMsIDB4MDM0YiwgMHgwMzZi LCAweDAzOGIsIDB4MDNhZSwgMHgwM2QxLA0KPiArCTB4MDNmNSwgMHgwNDFiLCAweDA0NDMs IDB4MDQ2YiwgMHgwNDk1LCAweDA0YzEsIDB4MDRlZSwgMHgwNTFkLA0KPiArCTB4MDU0ZSwg MHgwNTgwLCAweDA1YjQsIDB4MDVlYSwgMHgwNjIyLCAweDA2NWMsIDB4MDY5OCwgMHgwNmQ2 LA0KPiArCTB4MDcxNywgMHgwNzVhLCAweDA3OWYsIDB4MDdlNywgMHgwODMxLCAweDA4N2Us IDB4MDhjZCwgMHgwOTIwLA0KPiArCTB4MDk3NiwgMHgwOWNlLCAweDBhMmEsIDB4MGE4OSwg MHgwYWVjLCAweDBiNTIsIDB4MGJiYywgMHgwYzJhLA0KPiArCTB4MGM5YiwgMHgwZDExLCAw eDBkOGIsIDB4MGUwYSwgMHgwZThkLCAweDBmMTUsIDB4MGZhMSwgMHgxMDMzLA0KPiArCTB4 MTBjYSwgMHgxMTY3LCAweDEyMGEsIDB4MTJiMiwgMHgxMzYwLCAweDE0MTUsIDB4MTRkMSwg MHgxNTkzLA0KPiArCTB4MTY1ZCwgMHgxNzJlLCAweDE4MDYsIDB4MThlNywgMHgxOWQwLCAw eDFhYzEsIDB4MWJiYiwgMHgxY2JmLA0KPiArCTB4MWRjYywgMHgxZWUzLCAweDIwMDUsIDB4 MjEzMSwgMHgyMjY4LCAweDIzYWIsIDB4MjRmYSwgMHgyNjU2LA0KPiArCTB4MjdiZSwgMHgy OTM0LCAweDJhYjgsIDB4MmM0YSwgMHgyZGVjLCAweDJmOWQsIDB4MzE1ZiwgMHgzMzMyLA0K PiArCTB4MzUxNiwgMHgzNzBkLCAweDM5MTYsIDB4M2IzNCwgMHgzZDY2LCAweDNmYWQsIDB4 NDIwYiwgMHg0NDgwLA0KPiArCTB4NDcwZCwgMHg0OWIzLCAweDRjNzMsIDB4NGY0ZSwgMHg1 MjQ2LCAweDU1NWEsIDB4NTg4ZSwgMHg1YmUxLA0KPiArCTB4NWY1NSwgMHg2MmViLCAweDY2 YTYsIDB4NmE4NiwgMHg2ZThjLCAweDcyYmIsIDB4NzcxNCwgMHg3Yjk5LA0KPiArCTB4M2Rj YiwgMHgzZTYwLCAweDNlZjUsIDB4M2Y4Yw0KPiArfTsNCj4gKw0KPiArLyogb25lIGlzIGZv ciBwcmltYXJ5IHBsYW5lIGFuZCB0aGUgb3RoZXIgaXMgZm9yIGFsbCBvdmVybGF5IHBsYW5l cyAqLw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkY19od19wbGFuZV9yZWcgZGNfcGxhbmVf cmVnW10gPSB7DQo+ICsJew0KPiArCS55X2FkZHJlc3MJCT0gRENfRlJBTUVCVUZGRVJfQURE UkVTUywNCj4gKwkudV9hZGRyZXNzCQk9IERDX0ZSQU1FQlVGRkVSX1VfQUREUkVTUywNCj4g Kwkudl9hZGRyZXNzCQk9IERDX0ZSQU1FQlVGRkVSX1ZfQUREUkVTUywNCj4gKwkueV9zdHJp ZGUJCT0gRENfRlJBTUVCVUZGRVJfU1RSSURFLA0KPiArCS51X3N0cmlkZQkJPSBEQ19GUkFN RUJVRkZFUl9VX1NUUklERSwNCj4gKwkudl9zdHJpZGUJCT0gRENfRlJBTUVCVUZGRVJfVl9T VFJJREUsDQo+ICsJLnNpemUJCQk9IERDX0ZSQU1FQlVGRkVSX1NJWkUsDQo+ICsJLnRvcF9s ZWZ0CQk9IERDX0ZSQU1FQlVGRkVSX1RPUF9MRUZULA0KPiArCS5ib3R0b21fcmlnaHQJPSBE Q19GUkFNRUJVRkZFUl9CT1RUT01fUklHSFQsDQo+ICsJLnNjYWxlX2ZhY3Rvcl94CQkJPSBE Q19GUkFNRUJVRkZFUl9TQ0FMRV9GQUNUT1JfWCwNCj4gKwkuc2NhbGVfZmFjdG9yX3kJCQk9 IERDX0ZSQU1FQlVGRkVSX1NDQUxFX0ZBQ1RPUl9ZLA0KPiArCS5oX2ZpbHRlcl9jb2VmX2lu ZGV4CT0gRENfRlJBTUVCVUZGRVJfSF9GSUxURVJfQ09FRl9JTkRFWCwNCj4gKwkuaF9maWx0 ZXJfY29lZl9kYXRhCQk9IERDX0ZSQU1FQlVGRkVSX0hfRklMVEVSX0NPRUZfREFUQSwNCj4g Kwkudl9maWx0ZXJfY29lZl9pbmRleAk9IERDX0ZSQU1FQlVGRkVSX1ZfRklMVEVSX0NPRUZf SU5ERVgsDQo+ICsJLnZfZmlsdGVyX2NvZWZfZGF0YQkJPSBEQ19GUkFNRUJVRkZFUl9WX0ZJ TFRFUl9DT0VGX0RBVEEsDQo+ICsJLmluaXRfb2Zmc2V0CQkJPSBEQ19GUkFNRUJVRkZFUl9J TklUX09GRlNFVCwNCj4gKwkuY29sb3Jfa2V5CQkJCT0gRENfRlJBTUVCVUZGRVJfQ09MT1Jf S0VZLA0KPiArCS5jb2xvcl9rZXlfaGlnaAkJCT0gRENfRlJBTUVCVUZGRVJfQ09MT1JfS0VZ X0hJR0gsDQo+ICsJLmNsZWFyX3ZhbHVlCQkJPSBEQ19GUkFNRUJVRkZFUl9DTEVBUl9WQUxV RSwNCj4gKwkuY29sb3JfdGFibGVfaW5kZXgJCT0gRENfRlJBTUVCVUZGRVJfQ09MT1JfVEFC TEVfSU5ERVgsDQo+ICsJLmNvbG9yX3RhYmxlX2RhdGEJCT0gRENfRlJBTUVCVUZGRVJfQ09M T1JfVEFCTEVfREFUQSwNCj4gKwkuc2NhbGVfY29uZmlnCQkJPSBEQ19GUkFNRUJVRkZFUl9T Q0FMRV9DT05GSUcsDQo+ICsJLndhdGVyX21hcmsJCQkJPSBEQ19GUkFNRUJVRkZFUl9XQVRF Ul9NQVJLLA0KPiArCS5kZWdhbW1hX2luZGV4CQkJPSBEQ19GUkFNRUJVRkZFUl9ERUdBTU1B X0lOREVYLA0KPiArCS5kZWdhbW1hX2RhdGEJCQk9IERDX0ZSQU1FQlVGRkVSX0RFR0FNTUFf REFUQSwNCj4gKwkuZGVnYW1tYV9leF9kYXRhCQk9IERDX0ZSQU1FQlVGRkVSX0RFR0FNTUFf RVhfREFUQSwNCj4gKwkuc3JjX2dsb2JhbF9jb2xvcgkJPSBEQ19GUkFNRUJVRkZFUl9TUkNf R0xPQkFMX0NPTE9SLA0KPiArCS5kc3RfZ2xvYmFsX2NvbG9yCQk9IERDX0ZSQU1FQlVGRkVS X0RTVF9HTE9CQUxfQ09MT1IsDQo+ICsJLmJsZW5kX2NvbmZpZwkJCT0gRENfRlJBTUVCVUZG RVJfQkxFTkRfQ09ORklHLA0KPiArCS5yb2lfb3JpZ2luCQkJCT0gRENfRlJBTUVCVUZGRVJf Uk9JX09SSUdJTiwNCj4gKwkucm9pX3NpemUJCQkJPSBEQ19GUkFNRUJVRkZFUl9ST0lfU0la RSwNCj4gKwkueXV2X3RvX3JnYl9jb2VmMAkJCT0gRENfRlJBTUVCVUZGRVJfWVVWVE9SR0Jf Q09FRjAsDQo+ICsJLnl1dl90b19yZ2JfY29lZjEJCQk9IERDX0ZSQU1FQlVGRkVSX1lVVlRP UkdCX0NPRUYxLA0KPiArCS55dXZfdG9fcmdiX2NvZWYyCQkJPSBEQ19GUkFNRUJVRkZFUl9Z VVZUT1JHQl9DT0VGMiwNCj4gKwkueXV2X3RvX3JnYl9jb2VmMwkJCT0gRENfRlJBTUVCVUZG RVJfWVVWVE9SR0JfQ09FRjMsDQo+ICsJLnl1dl90b19yZ2JfY29lZjQJCQk9IERDX0ZSQU1F QlVGRkVSX1lVVlRPUkdCX0NPRUY0LA0KPiArCS55dXZfdG9fcmdiX2NvZWZkMAkJCT0gRENf RlJBTUVCVUZGRVJfWVVWVE9SR0JfQ09FRkQwLA0KPiArCS55dXZfdG9fcmdiX2NvZWZkMQkJ CT0gRENfRlJBTUVCVUZGRVJfWVVWVE9SR0JfQ09FRkQxLA0KPiArCS55dXZfdG9fcmdiX2Nv ZWZkMgkJCT0gRENfRlJBTUVCVUZGRVJfWVVWVE9SR0JfQ09FRkQyLA0KPiArCS55X2NsYW1w X2JvdW5kCQkJCT0gRENfRlJBTUVCVUZGRVJfWV9DTEFNUF9CT1VORCwNCj4gKwkudXZfY2xh bXBfYm91bmQJCQkJPSBEQ19GUkFNRUJVRkZFUl9VVl9DTEFNUF9CT1VORCwNCj4gKwkucmdi X3RvX3JnYl9jb2VmMAkJCT0gRENfRlJBTUVCVUZGRVJfUkdCVE9SR0JfQ09FRjAsDQo+ICsJ LnJnYl90b19yZ2JfY29lZjEJCQk9IERDX0ZSQU1FQlVGRkVSX1JHQlRPUkdCX0NPRUYxLA0K PiArCS5yZ2JfdG9fcmdiX2NvZWYyCQkJPSBEQ19GUkFNRUJVRkZFUl9SR0JUT1JHQl9DT0VG MiwNCj4gKwkucmdiX3RvX3JnYl9jb2VmMwkJCT0gRENfRlJBTUVCVUZGRVJfUkdCVE9SR0Jf Q09FRjMsDQo+ICsJLnJnYl90b19yZ2JfY29lZjQJCQk9IERDX0ZSQU1FQlVGRkVSX1JHQlRP UkdCX0NPRUY0LA0KPiArCX0sDQo+ICsJew0KPiArCS55X2FkZHJlc3MJCT0gRENfT1ZFUkxB WV9BRERSRVNTLA0KPiArCS51X2FkZHJlc3MJCT0gRENfT1ZFUkxBWV9VX0FERFJFU1MsDQo+ ICsJLnZfYWRkcmVzcwkJPSBEQ19PVkVSTEFZX1ZfQUREUkVTUywNCj4gKwkueV9zdHJpZGUJ CT0gRENfT1ZFUkxBWV9TVFJJREUsDQo+ICsJLnVfc3RyaWRlCQk9IERDX09WRVJMQVlfVV9T VFJJREUsDQo+ICsJLnZfc3RyaWRlCQk9IERDX09WRVJMQVlfVl9TVFJJREUsDQo+ICsJLnNp emUJCQk9IERDX09WRVJMQVlfU0laRSwNCj4gKwkudG9wX2xlZnQJCT0gRENfT1ZFUkxBWV9U T1BfTEVGVCwNCj4gKwkuYm90dG9tX3JpZ2h0CT0gRENfT1ZFUkxBWV9CT1RUT01fUklHSFQs DQo+ICsJLnNjYWxlX2ZhY3Rvcl94CT0gRENfT1ZFUkxBWV9TQ0FMRV9GQUNUT1JfWCwNCj4g Kwkuc2NhbGVfZmFjdG9yX3kJPSBEQ19PVkVSTEFZX1NDQUxFX0ZBQ1RPUl9ZLA0KPiArCS5o X2ZpbHRlcl9jb2VmX2luZGV4ID0gRENfT1ZFUkxBWV9IX0ZJTFRFUl9DT0VGX0lOREVYLA0K PiArCS5oX2ZpbHRlcl9jb2VmX2RhdGEgID0gRENfT1ZFUkxBWV9IX0ZJTFRFUl9DT0VGX0RB VEEsDQo+ICsJLnZfZmlsdGVyX2NvZWZfaW5kZXggPSBEQ19PVkVSTEFZX1ZfRklMVEVSX0NP RUZfSU5ERVgsDQo+ICsJLnZfZmlsdGVyX2NvZWZfZGF0YSAgPSBEQ19PVkVSTEFZX1ZfRklM VEVSX0NPRUZfREFUQSwNCj4gKwkuaW5pdF9vZmZzZXQJCSA9IERDX09WRVJMQVlfSU5JVF9P RkZTRVQsDQo+ICsJLmNvbG9yX2tleQkJCSA9IERDX09WRVJMQVlfQ09MT1JfS0VZLA0KPiAr CS5jb2xvcl9rZXlfaGlnaAkJCT0gRENfT1ZFUkxBWV9DT0xPUl9LRVlfSElHSCwNCj4gKwku Y2xlYXJfdmFsdWUJCSA9IERDX09WRVJMQVlfQ0xFQVJfVkFMVUUsDQo+ICsJLmNvbG9yX3Rh YmxlX2luZGV4CSA9IERDX09WRVJMQVlfQ09MT1JfVEFCTEVfSU5ERVgsDQo+ICsJLmNvbG9y X3RhYmxlX2RhdGEJID0gRENfT1ZFUkxBWV9DT0xPUl9UQUJMRV9EQVRBLA0KPiArCS5zY2Fs ZV9jb25maWcJCSA9IERDX09WRVJMQVlfU0NBTEVfQ09ORklHLA0KPiArCS53YXRlcl9tYXJr CQkJCT0gRENfT1ZFUkxBWV9XQVRFUl9NQVJLLA0KPiArCS5kZWdhbW1hX2luZGV4CQkgPSBE Q19PVkVSTEFZX0RFR0FNTUFfSU5ERVgsDQo+ICsJLmRlZ2FtbWFfZGF0YQkJID0gRENfT1ZF UkxBWV9ERUdBTU1BX0RBVEEsDQo+ICsJLmRlZ2FtbWFfZXhfZGF0YQkgPSBEQ19PVkVSTEFZ X0RFR0FNTUFfRVhfREFUQSwNCj4gKwkuc3JjX2dsb2JhbF9jb2xvcgkgPSBEQ19PVkVSTEFZ X1NSQ19HTE9CQUxfQ09MT1IsDQo+ICsJLmRzdF9nbG9iYWxfY29sb3IJID0gRENfT1ZFUkxB WV9EU1RfR0xPQkFMX0NPTE9SLA0KPiArCS5ibGVuZF9jb25maWcJCSA9IERDX09WRVJMQVlf QkxFTkRfQ09ORklHLA0KPiArCS5yb2lfb3JpZ2luCQkJCT0gRENfT1ZFUkxBWV9ST0lfT1JJ R0lOLA0KPiArCS5yb2lfc2l6ZQkJCQk9IERDX09WRVJMQVlfUk9JX1NJWkUsDQo+ICsJLnl1 dl90b19yZ2JfY29lZjAJCSA9IERDX09WRVJMQVlfWVVWVE9SR0JfQ09FRjAsDQo+ICsJLnl1 dl90b19yZ2JfY29lZjEJCSA9IERDX09WRVJMQVlfWVVWVE9SR0JfQ09FRjEsDQo+ICsJLnl1 dl90b19yZ2JfY29lZjIJCSA9IERDX09WRVJMQVlfWVVWVE9SR0JfQ09FRjIsDQo+ICsJLnl1 dl90b19yZ2JfY29lZjMJCSA9IERDX09WRVJMQVlfWVVWVE9SR0JfQ09FRjMsDQo+ICsJLnl1 dl90b19yZ2JfY29lZjQJCQk9IERDX09WRVJMQVlfWVVWVE9SR0JfQ09FRjQsDQo+ICsJLnl1 dl90b19yZ2JfY29lZmQwCQkJPSBEQ19PVkVSTEFZX1lVVlRPUkdCX0NPRUZEMCwNCj4gKwku eXV2X3RvX3JnYl9jb2VmZDEJCQk9IERDX09WRVJMQVlfWVVWVE9SR0JfQ09FRkQxLA0KPiAr CS55dXZfdG9fcmdiX2NvZWZkMgkJCT0gRENfT1ZFUkxBWV9ZVVZUT1JHQl9DT0VGRDIsDQo+ ICsJLnlfY2xhbXBfYm91bmQJCSA9IERDX09WRVJMQVlfWV9DTEFNUF9CT1VORCwNCj4gKwku dXZfY2xhbXBfYm91bmQJCSA9IERDX09WRVJMQVlfVVZfQ0xBTVBfQk9VTkQsDQo+ICsJLnJn Yl90b19yZ2JfY29lZjAJCSA9IERDX09WRVJMQVlfUkdCVE9SR0JfQ09FRjAsDQo+ICsJLnJn Yl90b19yZ2JfY29lZjEJCSA9IERDX09WRVJMQVlfUkdCVE9SR0JfQ09FRjEsDQo+ICsJLnJn Yl90b19yZ2JfY29lZjIJCSA9IERDX09WRVJMQVlfUkdCVE9SR0JfQ09FRjIsDQo+ICsJLnJn Yl90b19yZ2JfY29lZjMJCSA9IERDX09WRVJMQVlfUkdCVE9SR0JfQ09FRjMsDQo+ICsJLnJn Yl90b19yZ2JfY29lZjQJCSA9IERDX09WRVJMQVlfUkdCVE9SR0JfQ09FRjQsDQo+ICsJfSwN Cj4gK307DQo+ICsNCj4gK3N0YXRpYyBjb25zdCB1MzIgcHJpbWFyeV9vdmVybGF5X2Zvcm1h dDBbXSA9IHsNCj4gKwlEUk1fRk9STUFUX1hSR0I0NDQ0LA0KPiArCURSTV9GT1JNQVRfWEJH UjQ0NDQsDQo+ICsJRFJNX0ZPUk1BVF9SR0JYNDQ0NCwNCj4gKwlEUk1fRk9STUFUX0JHUlg0 NDQ0LA0KPiArCURSTV9GT1JNQVRfQVJHQjQ0NDQsDQo+ICsJRFJNX0ZPUk1BVF9BQkdSNDQ0 NCwNCj4gKwlEUk1fRk9STUFUX1JHQkE0NDQ0LA0KPiArCURSTV9GT1JNQVRfQkdSQTQ0NDQs DQo+ICsJRFJNX0ZPUk1BVF9YUkdCMTU1NSwNCj4gKwlEUk1fRk9STUFUX1hCR1IxNTU1LA0K PiArCURSTV9GT1JNQVRfUkdCWDU1NTEsDQo+ICsJRFJNX0ZPUk1BVF9CR1JYNTU1MSwNCj4g KwlEUk1fRk9STUFUX0FSR0IxNTU1LA0KPiArCURSTV9GT1JNQVRfQUJHUjE1NTUsDQo+ICsJ RFJNX0ZPUk1BVF9SR0JBNTU1MSwNCj4gKwlEUk1fRk9STUFUX0JHUkE1NTUxLA0KPiArCURS TV9GT1JNQVRfUkdCNTY1LA0KPiArCURSTV9GT1JNQVRfQkdSNTY1LA0KPiArCURSTV9GT1JN QVRfWFJHQjg4ODgsDQo+ICsJRFJNX0ZPUk1BVF9YQkdSODg4OCwNCj4gKwlEUk1fRk9STUFU X1JHQlg4ODg4LA0KPiArCURSTV9GT1JNQVRfQkdSWDg4ODgsDQo+ICsJRFJNX0ZPUk1BVF9B UkdCODg4OCwNCj4gKwlEUk1fRk9STUFUX0FCR1I4ODg4LA0KPiArCURSTV9GT1JNQVRfUkdC QTg4ODgsDQo+ICsJRFJNX0ZPUk1BVF9CR1JBODg4OCwNCj4gKwlEUk1fRk9STUFUX0FSR0Iy MTAxMDEwLA0KPiArCURSTV9GT1JNQVRfQUJHUjIxMDEwMTAsDQo+ICsJRFJNX0ZPUk1BVF9S R0JBMTAxMDEwMiwNCj4gKwlEUk1fRk9STUFUX0JHUkExMDEwMTAyLA0KPiArCURSTV9GT1JN QVRfWVVZViwNCj4gKwlEUk1fRk9STUFUX1lWWVUsDQo+ICsJRFJNX0ZPUk1BVF9VWVZZLA0K PiArCURSTV9GT1JNQVRfVllVWSwNCj4gKwlEUk1fRk9STUFUX1lWVTQyMCwNCj4gKwlEUk1f Rk9STUFUX1lVVjQyMCwNCj4gKwlEUk1fRk9STUFUX05WMTIsDQo+ICsJRFJNX0ZPUk1BVF9O VjIxLA0KPiArCURSTV9GT1JNQVRfTlYxNiwNCj4gKwlEUk1fRk9STUFUX05WNjEsDQo+ICsJ RFJNX0ZPUk1BVF9QMDEwLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHUzMiBwcmlt YXJ5X292ZXJsYXlfZm9ybWF0MVtdID0gew0KPiArCURSTV9GT1JNQVRfWFJHQjg4ODgsDQo+ ICsJRFJNX0ZPUk1BVF9YQkdSODg4OCwNCj4gKwlEUk1fRk9STUFUX1JHQlg4ODg4LA0KPiAr CURSTV9GT1JNQVRfQkdSWDg4ODgsDQo+ICsJRFJNX0ZPUk1BVF9BUkdCODg4OCwNCj4gKwlE Uk1fRk9STUFUX0FCR1I4ODg4LA0KPiArCURSTV9GT1JNQVRfUkdCQTg4ODgsDQo+ICsJRFJN X0ZPUk1BVF9CR1JBODg4OCwNCj4gKwlEUk1fRk9STUFUX0FSR0IyMTAxMDEwLA0KPiArCURS TV9GT1JNQVRfQUJHUjIxMDEwMTAsDQo+ICsJRFJNX0ZPUk1BVF9SR0JBMTAxMDEwMiwNCj4g KwlEUk1fRk9STUFUX0JHUkExMDEwMTAyLA0KPiArCURSTV9GT1JNQVRfTlYxMiwNCj4gKwlE Uk1fRk9STUFUX05WMjEsDQo+ICsJRFJNX0ZPUk1BVF9ZVVY0NDQsDQo+ICt9Ow0KPiArDQo+ ICtzdGF0aWMgY29uc3QgdTMyIGN1cnNvcl9mb3JtYXRzW10gPSB7DQo+ICsJRFJNX0ZPUk1B VF9BUkdCODg4OA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHU2NCBmb3JtYXRfbW9k aWZpZXIwW10gPSB7DQo+ICsJRFJNX0ZPUk1BVF9NT0RfTElORUFSLA0KPiArCWZvdXJjY19t b2RfdnNfbm9ybV9jb2RlKERSTV9GT1JNQVRfTU9EX1ZTX0xJTkVBUiksDQo+ICsJZm91cmNj X21vZF92c19ub3JtX2NvZGUoRFJNX0ZPUk1BVF9NT0RfVlNfU1VQRVJfVElMRURfWE1BSk9S KSwNCj4gKwlmb3VyY2NfbW9kX3ZzX25vcm1fY29kZShEUk1fRk9STUFUX01PRF9WU19TVVBF Ul9USUxFRF9ZTUFKT1IpLA0KPiArCWZvdXJjY19tb2RfdnNfbm9ybV9jb2RlKERSTV9GT1JN QVRfTU9EX1ZTX1RJTEVfOFg4KSwNCj4gKwlmb3VyY2NfbW9kX3ZzX25vcm1fY29kZShEUk1f Rk9STUFUX01PRF9WU19USUxFXzhYNCksDQo+ICsJZm91cmNjX21vZF92c19ub3JtX2NvZGUo RFJNX0ZPUk1BVF9NT0RfVlNfU1VQRVJfVElMRURfWE1BSk9SXzhYNCksDQo+ICsJZm91cmNj X21vZF92c19ub3JtX2NvZGUoRFJNX0ZPUk1BVF9NT0RfVlNfU1VQRVJfVElMRURfWU1BSk9S XzRYOCksDQo+ICsJRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRA0KPiArfTsNCj4gKw0KPiArc3Rh dGljIGNvbnN0IHU2NCBmb3JtYXRfbW9kaWZpZXIxW10gPSB7DQo+ICsJRFJNX0ZPUk1BVF9N T0RfTElORUFSLA0KPiArCWZvdXJjY19tb2RfdnNfbm9ybV9jb2RlKERSTV9GT1JNQVRfTU9E X1ZTX0xJTkVBUiksDQo+ICsJZm91cmNjX21vZF92c19ub3JtX2NvZGUoRFJNX0ZPUk1BVF9N T0RfVlNfU1VQRVJfVElMRURfWE1BSk9SKSwNCj4gKwlmb3VyY2NfbW9kX3ZzX25vcm1fY29k ZShEUk1fRk9STUFUX01PRF9WU19TVVBFUl9USUxFRF9ZTUFKT1IpLA0KPiArCWZvdXJjY19t b2RfdnNfbm9ybV9jb2RlKERSTV9GT1JNQVRfTU9EX1ZTX1RJTEVfOFg4KSwNCj4gKwlmb3Vy Y2NfbW9kX3ZzX25vcm1fY29kZShEUk1fRk9STUFUX01PRF9WU19USUxFXzhYNCksDQo+ICsJ Zm91cmNjX21vZF92c19ub3JtX2NvZGUoRFJNX0ZPUk1BVF9NT0RfVlNfU1VQRVJfVElMRURf WE1BSk9SXzhYNCksDQo+ICsJZm91cmNjX21vZF92c19ub3JtX2NvZGUoRFJNX0ZPUk1BVF9N T0RfVlNfU1VQRVJfVElMRURfWU1BSk9SXzRYOCksDQo+ICsJZm91cmNjX21vZF92c19ub3Jt X2NvZGUoRFJNX0ZPUk1BVF9NT0RfVlNfVElMRV9NT0RFNFg0KSwNCj4gKwlmb3VyY2NfbW9k X3ZzX2N1c3RvbV9jb2RlKERSTV9GT1JNQVRfTU9EX1ZTX1RJTEVfTU9ERTRYNCksDQo+ICsJ RFJNX0ZPUk1BVF9NT0RfSU5WQUxJRA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHU2 NCBzZWNvbmRhcnlfZm9ybWF0X21vZGlmaWVyc1tdID0gew0KPiArCURSTV9GT1JNQVRfTU9E X0xJTkVBUiwNCj4gKwlEUk1fRk9STUFUX01PRF9JTlZBTElEDQo+ICt9Ow0KPiArDQo+ICsj ZGVmaW5lIEZSQUNfMTZfMTYobXVsdCwgZGl2KQkgKCgobXVsdCkgPDwgMTYpIC8gKGRpdikp DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdnNfcGxhbmVfaW5mbyBkY19od19wbGFu ZXNbXVtQTEFORV9OVU1dID0gew0KPiArCXsNCj4gKwkJLyogRENfUkVWXzAgKi8NCj4gKwkJ ew0KPiArCQkubmFtZQkJCT0gIlByaW1hcnkiLA0KPiArCQkuaWQJCQkJPSBQUklNQVJZX1BM QU5FXzAsDQo+ICsJCS50eXBlCQkJPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZLA0KPiArCQku bnVtX2Zvcm1hdHMJPSBBUlJBWV9TSVpFKHByaW1hcnlfb3ZlcmxheV9mb3JtYXQwKSwNCj4g KwkJLmZvcm1hdHMJCT0gcHJpbWFyeV9vdmVybGF5X2Zvcm1hdDAsDQo+ICsJCS5udW1fbW9k aWZpZXJzCT0gQVJSQVlfU0laRShmb3JtYXRfbW9kaWZpZXIwKSwNCj4gKwkJLm1vZGlmaWVy cwkJPSBmb3JtYXRfbW9kaWZpZXIwLA0KPiArCQkubWluX3dpZHRoCQk9IDAsDQo+ICsJCS5t aW5faGVpZ2h0CQk9IDAsDQo+ICsJCS5tYXhfd2lkdGgJCT0gNDA5NiwNCj4gKwkJLm1heF9o ZWlnaHQJCT0gNDA5NiwNCj4gKwkJLnJvdGF0aW9uCQk9IERSTV9NT0RFX1JPVEFURV8wIHwN Cj4gKwkJCQkJCQlEUk1fTU9ERV9ST1RBVEVfOTAgfA0KPiArCQkJCQkJCURSTV9NT0RFX1JP VEFURV8xODAgfA0KPiArCQkJCQkJCURSTV9NT0RFX1JPVEFURV8yNzAgfA0KPiArCQkJCQkJ CURSTV9NT0RFX1JFRkxFQ1RfWCB8DQo+ICsJCQkJCQkJRFJNX01PREVfUkVGTEVDVF9ZLA0K PiArCQkuYmxlbmRfbW9kZQkJPSBCSVQoRFJNX01PREVfQkxFTkRfUElYRUxfTk9ORSkgfA0K PiArCQkJCQkJCUJJVChEUk1fTU9ERV9CTEVORF9QUkVNVUxUSSkgfA0KPiArCQkJCQkJCUJJ VChEUk1fTU9ERV9CTEVORF9DT1ZFUkFHRSksDQo+ICsJCS5jb2xvcl9lbmNvZGluZyA9IEJJ VChEUk1fQ09MT1JfWUNCQ1JfQlQ3MDkpIHwNCj4gKwkJCQkJCSAgQklUKERSTV9DT0xPUl9Z Q0JDUl9CVDIwMjApLA0KPiArCQkuZGVnYW1tYV9zaXplCT0gREVHQU1NQV9TSVpFLA0KPiAr CQkubWluX3NjYWxlCSA9IEZSQUNfMTZfMTYoMSwgMyksDQo+ICsJCS5tYXhfc2NhbGUJID0g RlJBQ18xNl8xNigxMCwgMSksDQo+ICsJCS56cG9zCQkgPSAwLA0KPiArCQkud2F0ZXJtYXJr CSA9IHRydWUsDQo+ICsJCS5jb2xvcl9tZ210ICA9IHRydWUsDQo+ICsJCS5yb2kJCSA9IHRy dWUsDQo+ICsJCX0sDQo+ICsJCXsNCj4gKwkJLm5hbWUJCQk9ICJPdmVybGF5IiwNCj4gKwkJ LmlkCQkJCT0gT1ZFUkxBWV9QTEFORV8wLA0KPiArCQkudHlwZQkJCT0gRFJNX1BMQU5FX1RZ UEVfT1ZFUkxBWSwNCj4gKwkJLm51bV9mb3JtYXRzCT0gQVJSQVlfU0laRShwcmltYXJ5X292 ZXJsYXlfZm9ybWF0MCksDQo+ICsJCS5mb3JtYXRzCQk9IHByaW1hcnlfb3ZlcmxheV9mb3Jt YXQwLA0KPiArCQkubnVtX21vZGlmaWVycwk9IEFSUkFZX1NJWkUoZm9ybWF0X21vZGlmaWVy MCksDQo+ICsJCS5tb2RpZmllcnMJCT0gZm9ybWF0X21vZGlmaWVyMCwNCj4gKwkJLm1pbl93 aWR0aAkJPSAwLA0KPiArCQkubWluX2hlaWdodAkJPSAwLA0KPiArCQkubWF4X3dpZHRoCQk9 IDQwOTYsDQo+ICsJCS5tYXhfaGVpZ2h0CQk9IDQwOTYsDQo+ICsJCS5yb3RhdGlvbgkgPSBE Uk1fTU9ERV9ST1RBVEVfMCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JPVEFURV85MCB8DQo+ ICsJCQkJCSAgIERSTV9NT0RFX1JPVEFURV8xODAgfA0KPiArCQkJCQkgICBEUk1fTU9ERV9S T1RBVEVfMjcwIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUkVGTEVDVF9YIHwNCj4gKwkJCQkJ ICAgRFJNX01PREVfUkVGTEVDVF9ZLA0KPiArCQkuYmxlbmRfbW9kZSAgPSBCSVQoRFJNX01P REVfQkxFTkRfUElYRUxfTk9ORSkgfA0KPiArCQkJCQkgICBCSVQoRFJNX01PREVfQkxFTkRf UFJFTVVMVEkpIHwNCj4gKwkJCQkJICAgQklUKERSTV9NT0RFX0JMRU5EX0NPVkVSQUdFKSwN Cj4gKwkJLmNvbG9yX2VuY29kaW5nID0gQklUKERSTV9DT0xPUl9ZQ0JDUl9CVDcwOSkgfA0K PiArCQkJCQkJICBCSVQoRFJNX0NPTE9SX1lDQkNSX0JUMjAyMCksDQo+ICsJCS5kZWdhbW1h X3NpemUJPSBERUdBTU1BX1NJWkUsDQo+ICsJCS5taW5fc2NhbGUJID0gRlJBQ18xNl8xNigx LCAzKSwNCj4gKwkJLm1heF9zY2FsZQkgPSBGUkFDXzE2XzE2KDEwLCAxKSwNCj4gKwkJLnpw b3MJCSA9IDEsDQo+ICsJCS53YXRlcm1hcmsJID0gdHJ1ZSwNCj4gKwkJLmNvbG9yX21nbXQg ID0gdHJ1ZSwNCj4gKwkJLnJvaQkJID0gdHJ1ZSwNCj4gKwkJfSwNCj4gKwkJew0KPiArCQku bmFtZQkJCT0gIk92ZXJsYXlfMSIsDQo+ICsJCS5pZAkJCQk9IE9WRVJMQVlfUExBTkVfMSwN Cj4gKwkJLnR5cGUJCQk9IERSTV9QTEFORV9UWVBFX09WRVJMQVksDQo+ICsJCS5udW1fZm9y bWF0cwk9IEFSUkFZX1NJWkUocHJpbWFyeV9vdmVybGF5X2Zvcm1hdDApLA0KPiArCQkuZm9y bWF0cwkJPSBwcmltYXJ5X292ZXJsYXlfZm9ybWF0MCwNCj4gKwkJLm51bV9tb2RpZmllcnMJ PSBBUlJBWV9TSVpFKHNlY29uZGFyeV9mb3JtYXRfbW9kaWZpZXJzKSwNCj4gKwkJLm1vZGlm aWVycwkJPSBzZWNvbmRhcnlfZm9ybWF0X21vZGlmaWVycywNCj4gKwkJLm1pbl93aWR0aAkJ PSAwLA0KPiArCQkubWluX2hlaWdodAkJPSAwLA0KPiArCQkubWF4X3dpZHRoCQk9IDQwOTYs DQo+ICsJCS5tYXhfaGVpZ2h0CQk9IDQwOTYsDQo+ICsJCS5yb3RhdGlvbgkJPSAwLA0KPiAr CQkuYmxlbmRfbW9kZQkJPSBCSVQoRFJNX01PREVfQkxFTkRfUElYRUxfTk9ORSkgfA0KPiAr CQkJCQkJCUJJVChEUk1fTU9ERV9CTEVORF9QUkVNVUxUSSkgfA0KPiArCQkJCQkJCUJJVChE Uk1fTU9ERV9CTEVORF9DT1ZFUkFHRSksDQo+ICsJCS5jb2xvcl9lbmNvZGluZyA9IEJJVChE Uk1fQ09MT1JfWUNCQ1JfQlQ3MDkpIHwNCj4gKwkJCQkJCSAgQklUKERSTV9DT0xPUl9ZQ0JD Ul9CVDIwMjApLA0KPiArCQkuZGVnYW1tYV9zaXplCT0gREVHQU1NQV9TSVpFLA0KPiArCQku bWluX3NjYWxlCSA9IERSTV9QTEFORV9OT19TQ0FMSU5HLA0KPiArCQkubWF4X3NjYWxlCSA9 IERSTV9QTEFORV9OT19TQ0FMSU5HLA0KPiArCQkuenBvcwkJID0gMiwNCj4gKwkJLndhdGVy bWFyawkgPSB0cnVlLA0KPiArCQkuY29sb3JfbWdtdCAgPSB0cnVlLA0KPiArCQkucm9pCQkg PSB0cnVlLA0KPiArCQl9LA0KPiArCQl7DQo+ICsJCS5uYW1lCQkgPSAiUHJpbWFyeV8xIiwN Cj4gKwkJLmlkCQkJCT0gUFJJTUFSWV9QTEFORV8xLA0KPiArCQkudHlwZQkJID0gRFJNX1BM QU5FX1RZUEVfUFJJTUFSWSwNCj4gKwkJLm51bV9mb3JtYXRzID0gQVJSQVlfU0laRShwcmlt YXJ5X292ZXJsYXlfZm9ybWF0MCksDQo+ICsJCS5mb3JtYXRzCSA9IHByaW1hcnlfb3Zlcmxh eV9mb3JtYXQwLA0KPiArCQkubnVtX21vZGlmaWVycyA9IEFSUkFZX1NJWkUoZm9ybWF0X21v ZGlmaWVyMCksDQo+ICsJCS5tb2RpZmllcnMJID0gZm9ybWF0X21vZGlmaWVyMCwNCj4gKwkJ Lm1pbl93aWR0aAkgPSAwLA0KPiArCQkubWluX2hlaWdodCAgPSAwLA0KPiArCQkubWF4X3dp ZHRoCSA9IDQwOTYsDQo+ICsJCS5tYXhfaGVpZ2h0ICA9IDQwOTYsDQo+ICsJCS5yb3RhdGlv bgkgPSBEUk1fTU9ERV9ST1RBVEVfMCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JPVEFURV85 MCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JPVEFURV8xODAgfA0KPiArCQkJCQkgICBEUk1f TU9ERV9ST1RBVEVfMjcwIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUkVGTEVDVF9YIHwNCj4g KwkJCQkJICAgRFJNX01PREVfUkVGTEVDVF9ZLA0KPiArCQkuYmxlbmRfbW9kZSAgPSBCSVQo RFJNX01PREVfQkxFTkRfUElYRUxfTk9ORSkgfA0KPiArCQkJCQkgICBCSVQoRFJNX01PREVf QkxFTkRfUFJFTVVMVEkpIHwNCj4gKwkJCQkJICAgQklUKERSTV9NT0RFX0JMRU5EX0NPVkVS QUdFKSwNCj4gKwkJLmNvbG9yX2VuY29kaW5nID0gQklUKERSTV9DT0xPUl9ZQ0JDUl9CVDcw OSkgfA0KPiArCQkJCQkJICBCSVQoRFJNX0NPTE9SX1lDQkNSX0JUMjAyMCksDQo+ICsJCS5k ZWdhbW1hX3NpemUJPSBERUdBTU1BX1NJWkUsDQo+ICsJCS5taW5fc2NhbGUJID0gRlJBQ18x Nl8xNigxLCAzKSwNCj4gKwkJLm1heF9zY2FsZQkgPSBGUkFDXzE2XzE2KDEwLCAxKSwNCj4g KwkJLnpwb3MJCSA9IDMsDQo+ICsJCS53YXRlcm1hcmsJID0gdHJ1ZSwNCj4gKwkJLmNvbG9y X21nbXQgID0gdHJ1ZSwNCj4gKwkJLnJvaQkJID0gdHJ1ZSwNCj4gKwkJfSwNCj4gKwkJew0K PiArCQkubmFtZQkJID0gIk92ZXJsYXlfMiIsDQo+ICsJCS5pZAkJCQk9IE9WRVJMQVlfUExB TkVfMiwNCj4gKwkJLnR5cGUJCSA9IERSTV9QTEFORV9UWVBFX09WRVJMQVksDQo+ICsJCS5u dW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUocHJpbWFyeV9vdmVybGF5X2Zvcm1hdDApLA0KPiAr CQkuZm9ybWF0cwkgPSBwcmltYXJ5X292ZXJsYXlfZm9ybWF0MCwNCj4gKwkJLm51bV9tb2Rp ZmllcnMgPSBBUlJBWV9TSVpFKGZvcm1hdF9tb2RpZmllcjApLA0KPiArCQkubW9kaWZpZXJz CSA9IGZvcm1hdF9tb2RpZmllcjAsDQo+ICsJCS5taW5fd2lkdGgJID0gMCwNCj4gKwkJLm1p bl9oZWlnaHQgID0gMCwNCj4gKwkJLm1heF93aWR0aAkgPSA0MDk2LA0KPiArCQkubWF4X2hl aWdodCAgPSA0MDk2LA0KPiArCQkucm90YXRpb24JID0gRFJNX01PREVfUk9UQVRFXzAgfA0K PiArCQkJCQkgICBEUk1fTU9ERV9ST1RBVEVfOTAgfA0KPiArCQkJCQkgICBEUk1fTU9ERV9S T1RBVEVfMTgwIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUk9UQVRFXzI3MCB8DQo+ICsJCQkJ CSAgIERSTV9NT0RFX1JFRkxFQ1RfWCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JFRkxFQ1Rf WSwNCj4gKwkJLmJsZW5kX21vZGUgID0gQklUKERSTV9NT0RFX0JMRU5EX1BJWEVMX05PTkUp IHwNCj4gKwkJCQkJICAgQklUKERSTV9NT0RFX0JMRU5EX1BSRU1VTFRJKSB8DQo+ICsJCQkJ CSAgIEJJVChEUk1fTU9ERV9CTEVORF9DT1ZFUkFHRSksDQo+ICsJCS5jb2xvcl9lbmNvZGlu ZyA9IEJJVChEUk1fQ09MT1JfWUNCQ1JfQlQ3MDkpIHwNCj4gKwkJCQkJCSAgQklUKERSTV9D T0xPUl9ZQ0JDUl9CVDIwMjApLA0KPiArCQkuZGVnYW1tYV9zaXplCT0gREVHQU1NQV9TSVpF LA0KPiArCQkubWluX3NjYWxlCSA9IEZSQUNfMTZfMTYoMSwgMyksDQo+ICsJCS5tYXhfc2Nh bGUJID0gRlJBQ18xNl8xNigxMCwgMSksDQo+ICsJCS56cG9zCQkgPSA0LA0KPiArCQkud2F0 ZXJtYXJrCSA9IHRydWUsDQo+ICsJCS5jb2xvcl9tZ210ICA9IHRydWUsDQo+ICsJCS5yb2kJ CSA9IHRydWUsDQo+ICsJCX0sDQo+ICsJCXsNCj4gKwkJLm5hbWUJCSA9ICJPdmVybGF5XzMi LA0KPiArCQkuaWQJCQk9IE9WRVJMQVlfUExBTkVfMywNCj4gKwkJLnR5cGUJCSA9IERSTV9Q TEFORV9UWVBFX09WRVJMQVksDQo+ICsJCS5udW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUocHJp bWFyeV9vdmVybGF5X2Zvcm1hdDApLA0KPiArCQkuZm9ybWF0cwkgPSBwcmltYXJ5X292ZXJs YXlfZm9ybWF0MCwNCj4gKwkJLm51bV9tb2RpZmllcnMgPSBBUlJBWV9TSVpFKHNlY29uZGFy eV9mb3JtYXRfbW9kaWZpZXJzKSwNCj4gKwkJLm1vZGlmaWVycwkgPSBzZWNvbmRhcnlfZm9y bWF0X21vZGlmaWVycywNCj4gKwkJLm1pbl93aWR0aAkgPSAwLA0KPiArCQkubWluX2hlaWdo dCAgPSAwLA0KPiArCQkubWF4X3dpZHRoCSA9IDQwOTYsDQo+ICsJCS5tYXhfaGVpZ2h0ICA9 IDQwOTYsDQo+ICsJCS5yb3RhdGlvbgkgPSAwLA0KPiArCQkuYmxlbmRfbW9kZSAgPSBCSVQo RFJNX01PREVfQkxFTkRfUElYRUxfTk9ORSkgfA0KPiArCQkJCQkgICBCSVQoRFJNX01PREVf QkxFTkRfUFJFTVVMVEkpIHwNCj4gKwkJCQkJICAgQklUKERSTV9NT0RFX0JMRU5EX0NPVkVS QUdFKSwNCj4gKwkJLmNvbG9yX2VuY29kaW5nID0gQklUKERSTV9DT0xPUl9ZQ0JDUl9CVDcw OSkgfA0KPiArCQkJCQkJICBCSVQoRFJNX0NPTE9SX1lDQkNSX0JUMjAyMCksDQo+ICsJCS5k ZWdhbW1hX3NpemUJPSBERUdBTU1BX1NJWkUsDQo+ICsJCS5taW5fc2NhbGUJID0gRFJNX1BM QU5FX05PX1NDQUxJTkcsDQo+ICsJCS5tYXhfc2NhbGUJID0gRFJNX1BMQU5FX05PX1NDQUxJ TkcsDQo+ICsJCS56cG9zCQkgPSA1LA0KPiArCQkud2F0ZXJtYXJrCSA9IHRydWUsDQo+ICsJ CS5jb2xvcl9tZ210ICA9IHRydWUsDQo+ICsJCS5yb2kJCSA9IHRydWUsDQo+ICsJCX0sDQo+ ICsJCXsNCj4gKwkJLm5hbWUJCSA9ICJDdXJzb3IiLA0KPiArCQkuaWQJCQkJPSBDVVJTT1Jf UExBTkVfMCwNCj4gKwkJLnR5cGUJCSA9IERSTV9QTEFORV9UWVBFX0NVUlNPUiwNCj4gKwkJ Lm51bV9mb3JtYXRzID0gQVJSQVlfU0laRShjdXJzb3JfZm9ybWF0cyksDQo+ICsJCS5mb3Jt YXRzCSA9IGN1cnNvcl9mb3JtYXRzLA0KPiArCQkubnVtX21vZGlmaWVycyA9IDAsDQo+ICsJ CS5tb2RpZmllcnMJID0gTlVMTCwNCj4gKwkJLm1pbl93aWR0aAkgPSAzMiwNCj4gKwkJLm1p bl9oZWlnaHQgID0gMzIsDQo+ICsJCS5tYXhfd2lkdGgJID0gNjQsDQo+ICsJCS5tYXhfaGVp Z2h0ICA9IDY0LA0KPiArCQkucm90YXRpb24JID0gMCwNCj4gKwkJLmRlZ2FtbWFfc2l6ZSA9 IDAsDQo+ICsJCS5taW5fc2NhbGUJID0gRFJNX1BMQU5FX05PX1NDQUxJTkcsDQo+ICsJCS5t YXhfc2NhbGUJID0gRFJNX1BMQU5FX05PX1NDQUxJTkcsDQo+ICsJCS56cG9zCQkgPSAyNTUs DQo+ICsJCS53YXRlcm1hcmsJID0gZmFsc2UsDQo+ICsJCS5jb2xvcl9tZ210ICA9IGZhbHNl LA0KPiArCQkucm9pCQkgPSBmYWxzZSwNCj4gKwkJfSwNCj4gKwkJew0KPiArCQkubmFtZQkJ ID0gIkN1cnNvcl8xIiwNCj4gKwkJLmlkCQkJCT0gQ1VSU09SX1BMQU5FXzEsDQo+ICsJCS50 eXBlCQkgPSBEUk1fUExBTkVfVFlQRV9DVVJTT1IsDQo+ICsJCS5udW1fZm9ybWF0cyA9IEFS UkFZX1NJWkUoY3Vyc29yX2Zvcm1hdHMpLA0KPiArCQkuZm9ybWF0cwkgPSBjdXJzb3JfZm9y bWF0cywNCj4gKwkJLm51bV9tb2RpZmllcnMgPSAwLA0KPiArCQkubW9kaWZpZXJzCSA9IE5V TEwsDQo+ICsJCS5taW5fd2lkdGgJID0gMzIsDQo+ICsJCS5taW5faGVpZ2h0ICA9IDMyLA0K PiArCQkubWF4X3dpZHRoCSA9IDY0LA0KPiArCQkubWF4X2hlaWdodCAgPSA2NCwNCj4gKwkJ LnJvdGF0aW9uCSA9IDAsDQo+ICsJCS5kZWdhbW1hX3NpemUgPSAwLA0KPiArCQkubWluX3Nj YWxlCSA9IERSTV9QTEFORV9OT19TQ0FMSU5HLA0KPiArCQkubWF4X3NjYWxlCSA9IERSTV9Q TEFORV9OT19TQ0FMSU5HLA0KPiArCQkuenBvcwkJID0gMjU1LA0KPiArCQkud2F0ZXJtYXJr CSA9IGZhbHNlLA0KPiArCQkuY29sb3JfbWdtdCAgPSBmYWxzZSwNCj4gKwkJLnJvaQkJID0g ZmFsc2UsDQo+ICsJCX0sDQo+ICsJfSwNCj4gKwl7DQo+ICsJCS8qIERDX1JFVl8xICovDQo+ ICsJCXsNCj4gKwkJLm5hbWUJCSA9ICJQcmltYXJ5IiwNCj4gKwkJLmlkCQkJCT0gUFJJTUFS WV9QTEFORV8wLA0KPiArCQkudHlwZQkJID0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSwNCj4g KwkJLm51bV9mb3JtYXRzID0gQVJSQVlfU0laRShwcmltYXJ5X292ZXJsYXlfZm9ybWF0MCks DQo+ICsJCS5mb3JtYXRzCSA9IHByaW1hcnlfb3ZlcmxheV9mb3JtYXQwLA0KPiArCQkubnVt X21vZGlmaWVycyA9IEFSUkFZX1NJWkUoZm9ybWF0X21vZGlmaWVyMCksDQo+ICsJCS5tb2Rp ZmllcnMJID0gZm9ybWF0X21vZGlmaWVyMCwNCj4gKwkJLm1pbl93aWR0aAkgPSAwLA0KPiAr CQkubWluX2hlaWdodCAgPSAwLA0KPiArCQkubWF4X3dpZHRoCSA9IDQwOTYsDQo+ICsJCS5t YXhfaGVpZ2h0ICA9IDQwOTYsDQo+ICsJCS5yb3RhdGlvbgkgPSBEUk1fTU9ERV9ST1RBVEVf MCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JPVEFURV85MCB8DQo+ICsJCQkJCSAgIERSTV9N T0RFX1JPVEFURV8xODAgfA0KPiArCQkJCQkgICBEUk1fTU9ERV9ST1RBVEVfMjcwIHwNCj4g KwkJCQkJICAgRFJNX01PREVfUkVGTEVDVF9YIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUkVG TEVDVF9ZLA0KPiArCQkuYmxlbmRfbW9kZSAgPSBCSVQoRFJNX01PREVfQkxFTkRfUElYRUxf Tk9ORSkgfA0KPiArCQkJCQkgICBCSVQoRFJNX01PREVfQkxFTkRfUFJFTVVMVEkpIHwNCj4g KwkJCQkJICAgQklUKERSTV9NT0RFX0JMRU5EX0NPVkVSQUdFKSwNCj4gKwkJLmNvbG9yX2Vu Y29kaW5nID0gQklUKERSTV9DT0xPUl9ZQ0JDUl9CVDcwOSkgfA0KPiArCQkJCQkJICBCSVQo RFJNX0NPTE9SX1lDQkNSX0JUMjAyMCksDQo+ICsJCS5kZWdhbW1hX3NpemUJPSBERUdBTU1B X1NJWkUsDQo+ICsJCS5taW5fc2NhbGUJID0gRlJBQ18xNl8xNigxLCAzKSwNCj4gKwkJLm1h eF9zY2FsZQkgPSBGUkFDXzE2XzE2KDEwLCAxKSwNCj4gKwkJLnpwb3MJCSA9IDAsDQo+ICsJ CS53YXRlcm1hcmsJID0gdHJ1ZSwNCj4gKwkJLmNvbG9yX21nbXQgID0gdHJ1ZSwNCj4gKwkJ LnJvaQkJID0gdHJ1ZSwNCj4gKwkJfSwNCj4gKwkJew0KPiArCQkubmFtZQkJID0gIk92ZXJs YXkiLA0KPiArCQkuaWQJCQkJPSBPVkVSTEFZX1BMQU5FXzAsDQo+ICsJCS50eXBlCQkgPSBE Uk1fUExBTkVfVFlQRV9PVkVSTEFZLA0KPiArCQkubnVtX2Zvcm1hdHMgPSBBUlJBWV9TSVpF KHByaW1hcnlfb3ZlcmxheV9mb3JtYXQwKSwNCj4gKwkJLmZvcm1hdHMJID0gcHJpbWFyeV9v dmVybGF5X2Zvcm1hdDAsDQo+ICsJCS5udW1fbW9kaWZpZXJzID0gQVJSQVlfU0laRShmb3Jt YXRfbW9kaWZpZXIwKSwNCj4gKwkJLm1vZGlmaWVycwkgPSBmb3JtYXRfbW9kaWZpZXIwLA0K PiArCQkubWluX3dpZHRoCSA9IDAsDQo+ICsJCS5taW5faGVpZ2h0ICA9IDAsDQo+ICsJCS5t YXhfd2lkdGgJID0gNDA5NiwNCj4gKwkJLm1heF9oZWlnaHQgID0gNDA5NiwNCj4gKwkJLnJv dGF0aW9uCSA9IERSTV9NT0RFX1JPVEFURV8wIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUk9U QVRFXzkwIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUk9UQVRFXzE4MCB8DQo+ICsJCQkJCSAg IERSTV9NT0RFX1JPVEFURV8yNzAgfA0KPiArCQkJCQkgICBEUk1fTU9ERV9SRUZMRUNUX1gg fA0KPiArCQkJCQkgICBEUk1fTU9ERV9SRUZMRUNUX1ksDQo+ICsJCS5ibGVuZF9tb2RlICA9 IEJJVChEUk1fTU9ERV9CTEVORF9QSVhFTF9OT05FKSB8DQo+ICsJCQkJCSAgIEJJVChEUk1f TU9ERV9CTEVORF9QUkVNVUxUSSkgfA0KPiArCQkJCQkgICBCSVQoRFJNX01PREVfQkxFTkRf Q09WRVJBR0UpLA0KPiArCQkuY29sb3JfZW5jb2RpbmcgPSBCSVQoRFJNX0NPTE9SX1lDQkNS X0JUNzA5KSB8DQo+ICsJCQkJCQkgIEJJVChEUk1fQ09MT1JfWUNCQ1JfQlQyMDIwKSwNCj4g KwkJLmRlZ2FtbWFfc2l6ZQk9IERFR0FNTUFfU0laRSwNCj4gKwkJLm1pbl9zY2FsZQkgPSBG UkFDXzE2XzE2KDEsIDMpLA0KPiArCQkubWF4X3NjYWxlCSA9IEZSQUNfMTZfMTYoMTAsIDEp LA0KPiArCQkuenBvcwkJID0gMSwNCj4gKwkJLndhdGVybWFyawkgPSB0cnVlLA0KPiArCQku Y29sb3JfbWdtdCAgPSB0cnVlLA0KPiArCQkucm9pCQkgPSB0cnVlLA0KPiArCQl9LA0KPiAr CQl7DQo+ICsJCS5uYW1lCQkgPSAiUHJpbWFyeV8xIiwNCj4gKwkJLmlkCQkJCT0gUFJJTUFS WV9QTEFORV8xLA0KPiArCQkudHlwZQkJID0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSwNCj4g KwkJLm51bV9mb3JtYXRzID0gQVJSQVlfU0laRShwcmltYXJ5X292ZXJsYXlfZm9ybWF0MCks DQo+ICsJCS5mb3JtYXRzCSA9IHByaW1hcnlfb3ZlcmxheV9mb3JtYXQwLA0KPiArCQkubnVt X21vZGlmaWVycyA9IEFSUkFZX1NJWkUoZm9ybWF0X21vZGlmaWVyMCksDQo+ICsJCS5tb2Rp ZmllcnMJID0gZm9ybWF0X21vZGlmaWVyMCwNCj4gKwkJLm1pbl93aWR0aAkgPSAwLA0KPiAr CQkubWluX2hlaWdodCAgPSAwLA0KPiArCQkubWF4X3dpZHRoCSA9IDQwOTYsDQo+ICsJCS5t YXhfaGVpZ2h0ICA9IDQwOTYsDQo+ICsJCS5yb3RhdGlvbgkgPSBEUk1fTU9ERV9ST1RBVEVf MCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JPVEFURV85MCB8DQo+ICsJCQkJCSAgIERSTV9N T0RFX1JPVEFURV8xODAgfA0KPiArCQkJCQkgICBEUk1fTU9ERV9ST1RBVEVfMjcwIHwNCj4g KwkJCQkJICAgRFJNX01PREVfUkVGTEVDVF9YIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUkVG TEVDVF9ZLA0KPiArCQkuYmxlbmRfbW9kZSAgPSBCSVQoRFJNX01PREVfQkxFTkRfUElYRUxf Tk9ORSkgfA0KPiArCQkJCQkgICBCSVQoRFJNX01PREVfQkxFTkRfUFJFTVVMVEkpIHwNCj4g KwkJCQkJICAgQklUKERSTV9NT0RFX0JMRU5EX0NPVkVSQUdFKSwNCj4gKwkJLmNvbG9yX2Vu Y29kaW5nID0gQklUKERSTV9DT0xPUl9ZQ0JDUl9CVDcwOSkgfA0KPiArCQkJCQkJICBCSVQo RFJNX0NPTE9SX1lDQkNSX0JUMjAyMCksDQo+ICsJCS5kZWdhbW1hX3NpemUJPSBERUdBTU1B X1NJWkUsDQo+ICsJCS5taW5fc2NhbGUJID0gRlJBQ18xNl8xNigxLCAzKSwNCj4gKwkJLm1h eF9zY2FsZQkgPSBGUkFDXzE2XzE2KDEwLCAxKSwNCj4gKwkJLnpwb3MJCSA9IDIsDQo+ICsJ CS53YXRlcm1hcmsJID0gdHJ1ZSwNCj4gKwkJLmNvbG9yX21nbXQgID0gdHJ1ZSwNCj4gKwkJ LnJvaQkJID0gdHJ1ZSwNCj4gKwkJfSwNCj4gKwkJew0KPiArCQkubmFtZQkJID0gIk92ZXJs YXlfMiIsDQo+ICsJCS5pZAkJCQk9IE9WRVJMQVlfUExBTkVfMiwNCj4gKwkJLnR5cGUJCSA9 IERSTV9QTEFORV9UWVBFX09WRVJMQVksDQo+ICsJCS5udW1fZm9ybWF0cyA9IEFSUkFZX1NJ WkUocHJpbWFyeV9vdmVybGF5X2Zvcm1hdDApLA0KPiArCQkuZm9ybWF0cwkgPSBwcmltYXJ5 X292ZXJsYXlfZm9ybWF0MCwNCj4gKwkJLm51bV9tb2RpZmllcnMgPSBBUlJBWV9TSVpFKGZv cm1hdF9tb2RpZmllcjApLA0KPiArCQkubW9kaWZpZXJzCSA9IGZvcm1hdF9tb2RpZmllcjAs DQo+ICsJCS5taW5fd2lkdGgJID0gMCwNCj4gKwkJLm1pbl9oZWlnaHQgID0gMCwNCj4gKwkJ Lm1heF93aWR0aAkgPSA0MDk2LA0KPiArCQkubWF4X2hlaWdodCAgPSA0MDk2LA0KPiArCQku cm90YXRpb24JID0gRFJNX01PREVfUk9UQVRFXzAgfA0KPiArCQkJCQkgICBEUk1fTU9ERV9S T1RBVEVfOTAgfA0KPiArCQkJCQkgICBEUk1fTU9ERV9ST1RBVEVfMTgwIHwNCj4gKwkJCQkJ ICAgRFJNX01PREVfUk9UQVRFXzI3MCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JFRkxFQ1Rf WCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JFRkxFQ1RfWSwNCj4gKwkJLmJsZW5kX21vZGUg ID0gQklUKERSTV9NT0RFX0JMRU5EX1BJWEVMX05PTkUpIHwNCj4gKwkJCQkJICAgQklUKERS TV9NT0RFX0JMRU5EX1BSRU1VTFRJKSB8DQo+ICsJCQkJCSAgIEJJVChEUk1fTU9ERV9CTEVO RF9DT1ZFUkFHRSksDQo+ICsJCS5jb2xvcl9lbmNvZGluZyA9IEJJVChEUk1fQ09MT1JfWUNC Q1JfQlQ3MDkpIHwNCj4gKwkJCQkJCSAgQklUKERSTV9DT0xPUl9ZQ0JDUl9CVDIwMjApLA0K PiArCQkuZGVnYW1tYV9zaXplCT0gREVHQU1NQV9TSVpFLA0KPiArCQkubWluX3NjYWxlCSA9 IEZSQUNfMTZfMTYoMSwgMyksDQo+ICsJCS5tYXhfc2NhbGUJID0gRlJBQ18xNl8xNigxMCwg MSksDQo+ICsJCS56cG9zCQkgPSAzLA0KPiArCQkud2F0ZXJtYXJrCSA9IHRydWUsDQo+ICsJ CS5jb2xvcl9tZ210ICA9IHRydWUsDQo+ICsJCS5yb2kJCSA9IHRydWUsDQo+ICsJCX0sDQo+ ICsJCXsNCj4gKwkJLm5hbWUJCSA9ICJDdXJzb3IiLA0KPiArCQkuaWQJCQkJPSBDVVJTT1Jf UExBTkVfMCwNCj4gKwkJLnR5cGUJCSA9IERSTV9QTEFORV9UWVBFX0NVUlNPUiwNCj4gKwkJ Lm51bV9mb3JtYXRzID0gQVJSQVlfU0laRShjdXJzb3JfZm9ybWF0cyksDQo+ICsJCS5mb3Jt YXRzCSA9IGN1cnNvcl9mb3JtYXRzLA0KPiArCQkubnVtX21vZGlmaWVycyA9IDAsDQo+ICsJ CS5tb2RpZmllcnMJID0gTlVMTCwNCj4gKwkJLm1pbl93aWR0aAkgPSAzMiwNCj4gKwkJLm1p bl9oZWlnaHQgID0gMzIsDQo+ICsJCS5tYXhfd2lkdGgJID0gNjQsDQo+ICsJCS5tYXhfaGVp Z2h0ICA9IDY0LA0KPiArCQkucm90YXRpb24JID0gMCwNCj4gKwkJLmRlZ2FtbWFfc2l6ZSA9 IDAsDQo+ICsJCS5taW5fc2NhbGUJID0gRFJNX1BMQU5FX05PX1NDQUxJTkcsDQo+ICsJCS5t YXhfc2NhbGUJID0gRFJNX1BMQU5FX05PX1NDQUxJTkcsDQo+ICsJCS56cG9zCQkgPSAyNTUs DQo+ICsJCS53YXRlcm1hcmsJID0gZmFsc2UsDQo+ICsJCS5jb2xvcl9tZ210ICA9IGZhbHNl LA0KPiArCQkucm9pCQkgPSBmYWxzZSwNCj4gKwkJfSwNCj4gKwkJew0KPiArCQkubmFtZQkJ ID0gIkN1cnNvcl8xIiwNCj4gKwkJLmlkCQkJCT0gQ1VSU09SX1BMQU5FXzEsDQo+ICsJCS50 eXBlCQkgPSBEUk1fUExBTkVfVFlQRV9DVVJTT1IsDQo+ICsJCS5udW1fZm9ybWF0cyA9IEFS UkFZX1NJWkUoY3Vyc29yX2Zvcm1hdHMpLA0KPiArCQkuZm9ybWF0cwkgPSBjdXJzb3JfZm9y bWF0cywNCj4gKwkJLm51bV9tb2RpZmllcnMgPSAwLA0KPiArCQkubW9kaWZpZXJzCSA9IE5V TEwsDQo+ICsJCS5taW5fd2lkdGgJID0gMzIsDQo+ICsJCS5taW5faGVpZ2h0ICA9IDMyLA0K PiArCQkubWF4X3dpZHRoCSA9IDY0LA0KPiArCQkubWF4X2hlaWdodCAgPSA2NCwNCj4gKwkJ LnJvdGF0aW9uCSA9IDAsDQo+ICsJCS5kZWdhbW1hX3NpemUgPSAwLA0KPiArCQkubWluX3Nj YWxlCSA9IERSTV9QTEFORV9OT19TQ0FMSU5HLA0KPiArCQkubWF4X3NjYWxlCSA9IERSTV9Q TEFORV9OT19TQ0FMSU5HLA0KPiArCQkuenBvcwkJID0gMjU1LA0KPiArCQkud2F0ZXJtYXJr CSA9IGZhbHNlLA0KPiArCQkuY29sb3JfbWdtdCAgPSBmYWxzZSwNCj4gKwkJLnJvaQkJID0g ZmFsc2UsDQo+ICsJCX0sDQo+ICsJfSwNCj4gKwl7DQo+ICsJCS8qIERDX1JFVl8yICovDQo+ ICsJCXsNCj4gKwkJLm5hbWUJCSA9ICJQcmltYXJ5IiwNCj4gKwkJLmlkCQkJCT0gUFJJTUFS WV9QTEFORV8wLA0KPiArCQkudHlwZQkJID0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSwNCj4g KwkJLm51bV9mb3JtYXRzID0gQVJSQVlfU0laRShwcmltYXJ5X292ZXJsYXlfZm9ybWF0MSks DQo+ICsJCS5mb3JtYXRzCSA9IHByaW1hcnlfb3ZlcmxheV9mb3JtYXQxLA0KPiArCQkubnVt X21vZGlmaWVycyA9IEFSUkFZX1NJWkUoZm9ybWF0X21vZGlmaWVyMSksDQo+ICsJCS5tb2Rp ZmllcnMJID0gZm9ybWF0X21vZGlmaWVyMSwNCj4gKwkJLm1pbl93aWR0aAkgPSAwLA0KPiAr CQkubWluX2hlaWdodCAgPSAwLA0KPiArCQkubWF4X3dpZHRoCSA9IDQwOTYsDQo+ICsJCS5t YXhfaGVpZ2h0ICA9IDQwOTYsDQo+ICsJCS5yb3RhdGlvbgkgPSBEUk1fTU9ERV9ST1RBVEVf MCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JPVEFURV85MCB8DQo+ICsJCQkJCSAgIERSTV9N T0RFX1JPVEFURV8xODAgfA0KPiArCQkJCQkgICBEUk1fTU9ERV9ST1RBVEVfMjcwIHwNCj4g KwkJCQkJICAgRFJNX01PREVfUkVGTEVDVF9YIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUkVG TEVDVF9ZLA0KPiArCQkuYmxlbmRfbW9kZSAgPSBCSVQoRFJNX01PREVfQkxFTkRfUElYRUxf Tk9ORSkgfA0KPiArCQkJCQkgICBCSVQoRFJNX01PREVfQkxFTkRfUFJFTVVMVEkpIHwNCj4g KwkJCQkJICAgQklUKERSTV9NT0RFX0JMRU5EX0NPVkVSQUdFKSwNCj4gKwkJLmNvbG9yX2Vu Y29kaW5nID0gQklUKERSTV9DT0xPUl9ZQ0JDUl9CVDcwOSkgfA0KPiArCQkJCQkJICBCSVQo RFJNX0NPTE9SX1lDQkNSX0JUMjAyMCksDQo+ICsJCS5kZWdhbW1hX3NpemUJPSBERUdBTU1B X1NJWkUsDQo+ICsJCS5taW5fc2NhbGUJID0gRlJBQ18xNl8xNigxLCAzKSwNCj4gKwkJLm1h eF9zY2FsZQkgPSBGUkFDXzE2XzE2KDEwLCAxKSwNCj4gKwkJLnpwb3MJCSA9IDAsDQo+ICsJ CS53YXRlcm1hcmsJID0gdHJ1ZSwNCj4gKwkJLmNvbG9yX21nbXQgID0gdHJ1ZSwNCj4gKwkJ LnJvaQkJID0gdHJ1ZSwNCj4gKwkJfSwNCj4gKwkJew0KPiArCQkubmFtZQkJID0gIk92ZXJs YXkiLA0KPiArCQkuaWQJCQkJPSBPVkVSTEFZX1BMQU5FXzAsDQo+ICsJCS50eXBlCQkgPSBE Uk1fUExBTkVfVFlQRV9PVkVSTEFZLA0KPiArCQkubnVtX2Zvcm1hdHMgPSBBUlJBWV9TSVpF KHByaW1hcnlfb3ZlcmxheV9mb3JtYXQxKSwNCj4gKwkJLmZvcm1hdHMJID0gcHJpbWFyeV9v dmVybGF5X2Zvcm1hdDEsDQo+ICsJCS5udW1fbW9kaWZpZXJzID0gQVJSQVlfU0laRShmb3Jt YXRfbW9kaWZpZXIxKSwNCj4gKwkJLm1vZGlmaWVycwkgPSBmb3JtYXRfbW9kaWZpZXIxLA0K PiArCQkubWluX3dpZHRoCSA9IDAsDQo+ICsJCS5taW5faGVpZ2h0ICA9IDAsDQo+ICsJCS5t YXhfd2lkdGgJID0gNDA5NiwNCj4gKwkJLm1heF9oZWlnaHQgID0gNDA5NiwNCj4gKwkJLnJv dGF0aW9uCSA9IERSTV9NT0RFX1JPVEFURV8wIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUk9U QVRFXzkwIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUk9UQVRFXzE4MCB8DQo+ICsJCQkJCSAg IERSTV9NT0RFX1JPVEFURV8yNzAgfA0KPiArCQkJCQkgICBEUk1fTU9ERV9SRUZMRUNUX1gg fA0KPiArCQkJCQkgICBEUk1fTU9ERV9SRUZMRUNUX1ksDQo+ICsJCS5ibGVuZF9tb2RlICA9 IEJJVChEUk1fTU9ERV9CTEVORF9QSVhFTF9OT05FKSB8DQo+ICsJCQkJCSAgIEJJVChEUk1f TU9ERV9CTEVORF9QUkVNVUxUSSkgfA0KPiArCQkJCQkgICBCSVQoRFJNX01PREVfQkxFTkRf Q09WRVJBR0UpLA0KPiArCQkuY29sb3JfZW5jb2RpbmcgPSBCSVQoRFJNX0NPTE9SX1lDQkNS X0JUNzA5KSB8DQo+ICsJCQkJCQkgIEJJVChEUk1fQ09MT1JfWUNCQ1JfQlQyMDIwKSwNCj4g KwkJLmRlZ2FtbWFfc2l6ZQk9IERFR0FNTUFfU0laRSwNCj4gKwkJLm1pbl9zY2FsZQkgPSBG UkFDXzE2XzE2KDEsIDMpLA0KPiArCQkubWF4X3NjYWxlCSA9IEZSQUNfMTZfMTYoMTAsIDEp LA0KPiArCQkuenBvcwkJID0gMSwNCj4gKwkJLndhdGVybWFyawkgPSB0cnVlLA0KPiArCQku Y29sb3JfbWdtdCAgPSB0cnVlLA0KPiArCQkucm9pCQkgPSB0cnVlLA0KPiArCQl9LA0KPiAr CQl7DQo+ICsJCS5uYW1lCQkgPSAiT3ZlcmxheV8xIiwNCj4gKwkJLmlkCQkJCT0gT1ZFUkxB WV9QTEFORV8xLA0KPiArCQkudHlwZQkJID0gRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSwNCj4g KwkJLm51bV9mb3JtYXRzID0gQVJSQVlfU0laRShwcmltYXJ5X292ZXJsYXlfZm9ybWF0MSks DQo+ICsJCS5mb3JtYXRzCSA9IHByaW1hcnlfb3ZlcmxheV9mb3JtYXQxLA0KPiArCQkubnVt X21vZGlmaWVycyA9IEFSUkFZX1NJWkUoc2Vjb25kYXJ5X2Zvcm1hdF9tb2RpZmllcnMpLA0K PiArCQkubW9kaWZpZXJzCSA9IHNlY29uZGFyeV9mb3JtYXRfbW9kaWZpZXJzLA0KPiArCQku bWluX3dpZHRoCSA9IDAsDQo+ICsJCS5taW5faGVpZ2h0ICA9IDAsDQo+ICsJCS5tYXhfd2lk dGgJID0gNDA5NiwNCj4gKwkJLm1heF9oZWlnaHQgID0gNDA5NiwNCj4gKwkJLnJvdGF0aW9u CSA9IDAsDQo+ICsJCS5ibGVuZF9tb2RlICA9IEJJVChEUk1fTU9ERV9CTEVORF9QSVhFTF9O T05FKSB8DQo+ICsJCQkJCSAgIEJJVChEUk1fTU9ERV9CTEVORF9QUkVNVUxUSSkgfA0KPiAr CQkJCQkgICBCSVQoRFJNX01PREVfQkxFTkRfQ09WRVJBR0UpLA0KPiArCQkuY29sb3JfZW5j b2RpbmcgPSBCSVQoRFJNX0NPTE9SX1lDQkNSX0JUNzA5KSB8DQo+ICsJCQkJCQkgIEJJVChE Uk1fQ09MT1JfWUNCQ1JfQlQyMDIwKSwNCj4gKwkJLmRlZ2FtbWFfc2l6ZQk9IERFR0FNTUFf U0laRSwNCj4gKwkJLm1pbl9zY2FsZQkgPSBEUk1fUExBTkVfTk9fU0NBTElORywNCj4gKwkJ Lm1heF9zY2FsZQkgPSBEUk1fUExBTkVfTk9fU0NBTElORywNCj4gKwkJLnpwb3MJCSA9IDIs DQo+ICsJCS53YXRlcm1hcmsJID0gdHJ1ZSwNCj4gKwkJLmNvbG9yX21nbXQgID0gdHJ1ZSwN Cj4gKwkJLnJvaQkJID0gdHJ1ZSwNCj4gKwkJfSwNCj4gKwkJew0KPiArCQkubmFtZQkJID0g IlByaW1hcnlfMSIsDQo+ICsJCS5pZAkJCQk9IFBSSU1BUllfUExBTkVfMSwNCj4gKwkJLnR5 cGUJCSA9IERSTV9QTEFORV9UWVBFX1BSSU1BUlksDQo+ICsJCS5udW1fZm9ybWF0cyA9IEFS UkFZX1NJWkUocHJpbWFyeV9vdmVybGF5X2Zvcm1hdDEpLA0KPiArCQkuZm9ybWF0cwkgPSBw cmltYXJ5X292ZXJsYXlfZm9ybWF0MSwNCj4gKwkJLm51bV9tb2RpZmllcnMgPSBBUlJBWV9T SVpFKGZvcm1hdF9tb2RpZmllcjEpLA0KPiArCQkubW9kaWZpZXJzCSA9IGZvcm1hdF9tb2Rp ZmllcjEsDQo+ICsJCS5taW5fd2lkdGgJID0gMCwNCj4gKwkJLm1pbl9oZWlnaHQgID0gMCwN Cj4gKwkJLm1heF93aWR0aAkgPSA0MDk2LA0KPiArCQkubWF4X2hlaWdodCAgPSA0MDk2LA0K PiArCQkucm90YXRpb24JID0gRFJNX01PREVfUk9UQVRFXzAgfA0KPiArCQkJCQkgICBEUk1f TU9ERV9ST1RBVEVfOTAgfA0KPiArCQkJCQkgICBEUk1fTU9ERV9ST1RBVEVfMTgwIHwNCj4g KwkJCQkJICAgRFJNX01PREVfUk9UQVRFXzI3MCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JF RkxFQ1RfWCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JFRkxFQ1RfWSwNCj4gKwkJLmJsZW5k X21vZGUgID0gQklUKERSTV9NT0RFX0JMRU5EX1BJWEVMX05PTkUpIHwNCj4gKwkJCQkJICAg QklUKERSTV9NT0RFX0JMRU5EX1BSRU1VTFRJKSB8DQo+ICsJCQkJCSAgIEJJVChEUk1fTU9E RV9CTEVORF9DT1ZFUkFHRSksDQo+ICsJCS5jb2xvcl9lbmNvZGluZyA9IEJJVChEUk1fQ09M T1JfWUNCQ1JfQlQ3MDkpIHwNCj4gKwkJCQkJCSAgQklUKERSTV9DT0xPUl9ZQ0JDUl9CVDIw MjApLA0KPiArCQkuZGVnYW1tYV9zaXplCT0gREVHQU1NQV9TSVpFLA0KPiArCQkubWluX3Nj YWxlCSA9IEZSQUNfMTZfMTYoMSwgMyksDQo+ICsJCS5tYXhfc2NhbGUJID0gRlJBQ18xNl8x NigxMCwgMSksDQo+ICsJCS56cG9zCQkgPSAzLA0KPiArCQkud2F0ZXJtYXJrCSA9IHRydWUs DQo+ICsJCS5jb2xvcl9tZ210ICA9IHRydWUsDQo+ICsJCS5yb2kJCSA9IHRydWUsDQo+ICsJ CX0sDQo+ICsJCXsNCj4gKwkJLm5hbWUJCSA9ICJPdmVybGF5XzIiLA0KPiArCQkuaWQJCQkJ PSBPVkVSTEFZX1BMQU5FXzIsDQo+ICsJCS50eXBlCQkgPSBEUk1fUExBTkVfVFlQRV9PVkVS TEFZLA0KPiArCQkubnVtX2Zvcm1hdHMgPSBBUlJBWV9TSVpFKHByaW1hcnlfb3ZlcmxheV9m b3JtYXQxKSwNCj4gKwkJLmZvcm1hdHMJID0gcHJpbWFyeV9vdmVybGF5X2Zvcm1hdDEsDQo+ ICsJCS5udW1fbW9kaWZpZXJzID0gQVJSQVlfU0laRShmb3JtYXRfbW9kaWZpZXIxKSwNCj4g KwkJLm1vZGlmaWVycwkgPSBmb3JtYXRfbW9kaWZpZXIxLA0KPiArCQkubWluX3dpZHRoCSA9 IDAsDQo+ICsJCS5taW5faGVpZ2h0ICA9IDAsDQo+ICsJCS5tYXhfd2lkdGgJID0gNDA5NiwN Cj4gKwkJLm1heF9oZWlnaHQgID0gNDA5NiwNCj4gKwkJLnJvdGF0aW9uCSA9IERSTV9NT0RF X1JPVEFURV8wIHwNCj4gKwkJCQkJICAgRFJNX01PREVfUk9UQVRFXzkwIHwNCj4gKwkJCQkJ ICAgRFJNX01PREVfUk9UQVRFXzE4MCB8DQo+ICsJCQkJCSAgIERSTV9NT0RFX1JPVEFURV8y NzAgfA0KPiArCQkJCQkgICBEUk1fTU9ERV9SRUZMRUNUX1ggfA0KPiArCQkJCQkgICBEUk1f TU9ERV9SRUZMRUNUX1ksDQo+ICsJCS5ibGVuZF9tb2RlICA9IEJJVChEUk1fTU9ERV9CTEVO RF9QSVhFTF9OT05FKSB8DQo+ICsJCQkJCSAgIEJJVChEUk1fTU9ERV9CTEVORF9QUkVNVUxU SSkgfA0KPiArCQkJCQkgICBCSVQoRFJNX01PREVfQkxFTkRfQ09WRVJBR0UpLA0KPiArCQku Y29sb3JfZW5jb2RpbmcgPSBCSVQoRFJNX0NPTE9SX1lDQkNSX0JUNzA5KSB8DQo+ICsJCQkJ CQkgIEJJVChEUk1fQ09MT1JfWUNCQ1JfQlQyMDIwKSwNCj4gKwkJLmRlZ2FtbWFfc2l6ZQk9 IERFR0FNTUFfU0laRSwNCj4gKwkJLm1pbl9zY2FsZQkgPSBGUkFDXzE2XzE2KDEsIDMpLA0K PiArCQkubWF4X3NjYWxlCSA9IEZSQUNfMTZfMTYoMTAsIDEpLA0KPiArCQkuenBvcwkJID0g NCwNCj4gKwkJLndhdGVybWFyawkgPSB0cnVlLA0KPiArCQkuY29sb3JfbWdtdCAgPSB0cnVl LA0KPiArCQkucm9pCQkgPSB0cnVlLA0KPiArCQl9LA0KPiArCQl7DQo+ICsJCS5uYW1lCQkg PSAiT3ZlcmxheV8zIiwNCj4gKwkJLmlkCQkJCT0gT1ZFUkxBWV9QTEFORV8zLA0KPiArCQku dHlwZQkJID0gRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSwNCj4gKwkJLm51bV9mb3JtYXRzID0g QVJSQVlfU0laRShwcmltYXJ5X292ZXJsYXlfZm9ybWF0MSksDQo+ICsJCS5mb3JtYXRzCSA9 IHByaW1hcnlfb3ZlcmxheV9mb3JtYXQxLA0KPiArCQkubnVtX21vZGlmaWVycyA9IEFSUkFZ X1NJWkUoc2Vjb25kYXJ5X2Zvcm1hdF9tb2RpZmllcnMpLA0KPiArCQkubW9kaWZpZXJzCSA9 IHNlY29uZGFyeV9mb3JtYXRfbW9kaWZpZXJzLA0KPiArCQkubWluX3dpZHRoCSA9IDAsDQo+ ICsJCS5taW5faGVpZ2h0ICA9IDAsDQo+ICsJCS5tYXhfd2lkdGgJID0gNDA5NiwNCj4gKwkJ Lm1heF9oZWlnaHQgID0gNDA5NiwNCj4gKwkJLnJvdGF0aW9uCSA9IDAsDQo+ICsJCS5ibGVu ZF9tb2RlICA9IEJJVChEUk1fTU9ERV9CTEVORF9QSVhFTF9OT05FKSB8DQo+ICsJCQkJCSAg IEJJVChEUk1fTU9ERV9CTEVORF9QUkVNVUxUSSkgfA0KPiArCQkJCQkgICBCSVQoRFJNX01P REVfQkxFTkRfQ09WRVJBR0UpLA0KPiArCQkuY29sb3JfZW5jb2RpbmcgPSBCSVQoRFJNX0NP TE9SX1lDQkNSX0JUNzA5KSB8DQo+ICsJCQkJCQkgIEJJVChEUk1fQ09MT1JfWUNCQ1JfQlQy MDIwKSwNCj4gKwkJLmRlZ2FtbWFfc2l6ZQk9IERFR0FNTUFfU0laRSwNCj4gKwkJLm1pbl9z Y2FsZQkgPSBEUk1fUExBTkVfTk9fU0NBTElORywNCj4gKwkJLm1heF9zY2FsZQkgPSBEUk1f UExBTkVfTk9fU0NBTElORywNCj4gKwkJLnpwb3MJCSA9IDUsDQo+ICsJCS53YXRlcm1hcmsJ ID0gdHJ1ZSwNCj4gKwkJLmNvbG9yX21nbXQgID0gdHJ1ZSwNCj4gKwkJLnJvaQkJID0gdHJ1 ZSwNCj4gKwkJfSwNCj4gKwkJew0KPiArCQkubmFtZQkJID0gIkN1cnNvciIsDQo+ICsJCS5p ZAkJCQk9IENVUlNPUl9QTEFORV8wLA0KPiArCQkudHlwZQkJID0gRFJNX1BMQU5FX1RZUEVf Q1VSU09SLA0KPiArCQkubnVtX2Zvcm1hdHMgPSBBUlJBWV9TSVpFKGN1cnNvcl9mb3JtYXRz KSwNCj4gKwkJLmZvcm1hdHMJID0gY3Vyc29yX2Zvcm1hdHMsDQo+ICsJCS5udW1fbW9kaWZp ZXJzID0gMCwNCj4gKwkJLm1vZGlmaWVycwkgPSBOVUxMLA0KPiArCQkubWluX3dpZHRoCSA9 IDMyLA0KPiArCQkubWluX2hlaWdodCAgPSAzMiwNCj4gKwkJLm1heF93aWR0aAkgPSA2NCwN Cj4gKwkJLm1heF9oZWlnaHQgID0gNjQsDQo+ICsJCS5yb3RhdGlvbgkgPSAwLA0KPiArCQku ZGVnYW1tYV9zaXplID0gMCwNCj4gKwkJLm1pbl9zY2FsZQkgPSBEUk1fUExBTkVfTk9fU0NB TElORywNCj4gKwkJLm1heF9zY2FsZQkgPSBEUk1fUExBTkVfTk9fU0NBTElORywNCj4gKwkJ Lnpwb3MJCSA9IDI1NSwNCj4gKwkJLndhdGVybWFyawkgPSBmYWxzZSwNCj4gKwkJLmNvbG9y X21nbXQgID0gZmFsc2UsDQo+ICsJCS5yb2kJCSA9IGZhbHNlLA0KPiArCQl9LA0KPiArCQl7 DQo+ICsJCS5uYW1lCQkgPSAiQ3Vyc29yXzEiLA0KPiArCQkuaWQJCQkJPSBDVVJTT1JfUExB TkVfMSwNCj4gKwkJLnR5cGUJCSA9IERSTV9QTEFORV9UWVBFX0NVUlNPUiwNCj4gKwkJLm51 bV9mb3JtYXRzID0gQVJSQVlfU0laRShjdXJzb3JfZm9ybWF0cyksDQo+ICsJCS5mb3JtYXRz CSA9IGN1cnNvcl9mb3JtYXRzLA0KPiArCQkubnVtX21vZGlmaWVycyA9IDAsDQo+ICsJCS5t b2RpZmllcnMJID0gTlVMTCwNCj4gKwkJLm1pbl93aWR0aAkgPSAzMiwNCj4gKwkJLm1pbl9o ZWlnaHQgID0gMzIsDQo+ICsJCS5tYXhfd2lkdGgJID0gNjQsDQo+ICsJCS5tYXhfaGVpZ2h0 ICA9IDY0LA0KPiArCQkucm90YXRpb24JID0gMCwNCj4gKwkJLmRlZ2FtbWFfc2l6ZSA9IDAs DQo+ICsJCS5taW5fc2NhbGUJID0gRFJNX1BMQU5FX05PX1NDQUxJTkcsDQo+ICsJCS5tYXhf c2NhbGUJID0gRFJNX1BMQU5FX05PX1NDQUxJTkcsDQo+ICsJCS56cG9zCQkgPSAyNTUsDQo+ ICsJCS53YXRlcm1hcmsJID0gZmFsc2UsDQo+ICsJCS5jb2xvcl9tZ210ICA9IGZhbHNlLA0K PiArCQkucm9pCQkgPSBmYWxzZSwNCj4gKwkJfSwNCj4gKwl9LA0KPiArfTsNCj4gKw0KPiAr c3RhdGljIGNvbnN0IHN0cnVjdCB2c19kY19pbmZvIGRjX2luZm9bXSA9IHsNCj4gKwl7DQo+ ICsJCS8qIERDX1JFVl8wICovDQo+ICsJCS5uYW1lCQkJPSAiREM4MjAwIiwNCj4gKwkJLnBh bmVsX251bQkJPSAyLA0KPiArCQkucGxhbmVfbnVtCQk9IDgsDQo+ICsJCS5wbGFuZXMJCQk9 IGRjX2h3X3BsYW5lc1tEQ19SRVZfMF0sDQo+ICsJCS5sYXllcl9udW0JCT0gNiwNCj4gKwkJ Lm1heF9icGMJCT0gMTAsDQo+ICsJCS5jb2xvcl9mb3JtYXRzCT0gRFJNX0NPTE9SX0ZPUk1B VF9SR0I0NDQgfA0KPiArCQkJCQkJICBEUk1fQ09MT1JfRk9STUFUX1lDQkNSNDQ0IHwNCj4g KwkJCQkJCSAgRFJNX0NPTE9SX0ZPUk1BVF9ZQ0JDUjQyMiB8DQo+ICsJCQkJCQkgIERSTV9D T0xPUl9GT1JNQVRfWUNCQ1I0MjAsDQo+ICsJCS5nYW1tYV9zaXplCQk9IEdBTU1BX0VYX1NJ WkUsDQo+ICsJCS5nYW1tYV9iaXRzCQk9IDEyLA0KPiArCQkucGl0Y2hfYWxpZ25tZW50CT0g MTI4LA0KPiArCQkucGlwZV9zeW5jCQk9IGZhbHNlLA0KPiArCQkubW11X3ByZWZldGNoCT0g ZmFsc2UsDQo+ICsJCS5iYWNrZ3JvdW5kCQk9IHRydWUsDQo+ICsJCS5wYW5lbF9zeW5jCQk9 IHRydWUsDQo+ICsJCS5jYXBfZGVjCQk9IHRydWUsDQo+ICsJfSwNCj4gKwl7DQo+ICsJCS8q IERDX1JFVl8xICovDQo+ICsJCS5uYW1lCQkJPSAiREM4MjAwIiwNCj4gKwkJLnBhbmVsX251 bQkJPSAyLA0KPiArCQkucGxhbmVfbnVtCQk9IDYsDQo+ICsJCS5wbGFuZXMJCQk9IGRjX2h3 X3BsYW5lc1tEQ19SRVZfMV0sDQo+ICsJCS5sYXllcl9udW0JCT0gNCwNCj4gKwkJLm1heF9i cGMJCT0gMTAsDQo+ICsJCS5jb2xvcl9mb3JtYXRzCT0gRFJNX0NPTE9SX0ZPUk1BVF9SR0I0 NDQgfA0KPiArCQkJCQkJICBEUk1fQ09MT1JfRk9STUFUX1lDQkNSNDQ0IHwNCj4gKwkJCQkJ CSAgRFJNX0NPTE9SX0ZPUk1BVF9ZQ0JDUjQyMiB8DQo+ICsJCQkJCQkgIERSTV9DT0xPUl9G T1JNQVRfWUNCQ1I0MjAsDQo+ICsJCS5nYW1tYV9zaXplCQk9IEdBTU1BX0VYX1NJWkUsDQo+ ICsJCS5nYW1tYV9iaXRzCQk9IDEyLA0KPiArCQkucGl0Y2hfYWxpZ25tZW50CT0gMTI4LA0K PiArCQkucGlwZV9zeW5jCQk9IGZhbHNlLA0KPiArCQkubW11X3ByZWZldGNoCT0gZmFsc2Us DQo+ICsJCS5iYWNrZ3JvdW5kCQk9IHRydWUsDQo+ICsJCS5wYW5lbF9zeW5jCQk9IHRydWUs DQo+ICsJCS5jYXBfZGVjCQk9IHRydWUsDQo+ICsJfSwNCj4gKwl7DQo+ICsJCS8qIERDX1JF Vl8yICovDQo+ICsJCS5uYW1lCQkJPSAiREM4MjAwIiwNCj4gKwkJLnBhbmVsX251bQkJPSAy LA0KPiArCQkucGxhbmVfbnVtCQk9IDgsDQo+ICsJCS5wbGFuZXMJCQk9IGRjX2h3X3BsYW5l c1tEQ19SRVZfMl0sDQo+ICsJCS5sYXllcl9udW0JCT0gNiwNCj4gKwkJLm1heF9icGMJCT0g MTAsDQo+ICsJCS5jb2xvcl9mb3JtYXRzCT0gRFJNX0NPTE9SX0ZPUk1BVF9SR0I0NDQgfA0K PiArCQkJCQkJICBEUk1fQ09MT1JfRk9STUFUX1lDQkNSNDQ0IHwNCj4gKwkJCQkJCSAgRFJN X0NPTE9SX0ZPUk1BVF9ZQ0JDUjQyMiB8DQo+ICsJCQkJCQkgIERSTV9DT0xPUl9GT1JNQVRf WUNCQ1I0MjAsDQo+ICsJCS5nYW1tYV9zaXplCQk9IEdBTU1BX0VYX1NJWkUsDQo+ICsJCS5n YW1tYV9iaXRzCQk9IDEyLA0KPiArCQkucGl0Y2hfYWxpZ25tZW50CT0gMTI4LA0KPiArCQku cGlwZV9zeW5jCQk9IGZhbHNlLA0KPiArCQkubW11X3ByZWZldGNoCT0gZmFsc2UsDQo+ICsJ CS5iYWNrZ3JvdW5kCQk9IHRydWUsDQo+ICsJCS5wYW5lbF9zeW5jCQk9IHRydWUsDQo+ICsJ CS5jYXBfZGVjCQk9IGZhbHNlLA0KPiArCX0sDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGRjX2h3X2Z1bmNzIGh3X2Z1bmM7DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUg dTMyIGhpX3JlYWQoc3RydWN0IGRjX2h3ICpodywgdTMyIHJlZykNCj4gK3sNCj4gKwlyZXR1 cm4gcmVhZGwoaHctPmhpX2Jhc2UgKyByZWcpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5s aW5lIHZvaWQgaGlfd3JpdGUoc3RydWN0IGRjX2h3ICpodywgdTMyIHJlZywgdTMyIHZhbHVl KQ0KPiArew0KPiArCXdyaXRlbCh2YWx1ZSwgaHctPmhpX2Jhc2UgKyByZWcpOw0KPiArfQ0K PiArDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgZGNfd3JpdGUoc3RydWN0IGRjX2h3ICpodywg dTMyIHJlZywgdTMyIHZhbHVlKQ0KPiArew0KPiArCXdyaXRlbCh2YWx1ZSwgaHctPnJlZ19i YXNlICsgcmVnIC0gRENfUkVHX0JBU0UpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5l IHUzMiBkY19yZWFkKHN0cnVjdCBkY19odyAqaHcsIHUzMiByZWcpDQo+ICt7DQo+ICsJdTMy IHZhbHVlID0gcmVhZGwoaHctPnJlZ19iYXNlICsgcmVnIC0gRENfUkVHX0JBU0UpOw0KPiAr DQo+ICsJcmV0dXJuIHZhbHVlOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQg ZGNfc2V0X2NsZWFyKHN0cnVjdCBkY19odyAqaHcsIHUzMiByZWcsIHUzMiBzZXQsIHUzMiBj bGVhcikNCj4gK3sNCj4gKwl1MzIgdmFsdWUgPSBkY19yZWFkKGh3LCByZWcpOw0KPiArDQo+ ICsJdmFsdWUgJj0gfmNsZWFyOw0KPiArCXZhbHVlIHw9IHNldDsNCj4gKwlkY193cml0ZSho dywgcmVnLCB2YWx1ZSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGxvYWRfZGVmYXVs dF9maWx0ZXIoc3RydWN0IGRjX2h3ICpodywNCj4gKwkJCQljb25zdCBzdHJ1Y3QgZGNfaHdf cGxhbmVfcmVnICpyZWcsIHUzMiBvZmZzZXQpDQo+ICt7DQo+ICsJdTggaTsNCj4gKw0KPiAr CWRjX3dyaXRlKGh3LCByZWctPnNjYWxlX2NvbmZpZyArIG9mZnNldCwgMHgzMyk7DQo+ICsJ ZGNfd3JpdGUoaHcsIHJlZy0+aW5pdF9vZmZzZXQgKyBvZmZzZXQsIDB4ODAwMDgwMDApOw0K PiArCWRjX3dyaXRlKGh3LCByZWctPmhfZmlsdGVyX2NvZWZfaW5kZXggKyBvZmZzZXQsIDB4 MDApOw0KPiArCWZvciAoaSA9IDA7IGkgPCBIX0NPRUZfU0laRTsgaSsrKQ0KPiArCQlkY193 cml0ZShodywgcmVnLT5oX2ZpbHRlcl9jb2VmX2RhdGEgKyBvZmZzZXQsIGhvcmtlcm5lbFtp XSk7DQo+ICsNCj4gKwlkY193cml0ZShodywgcmVnLT52X2ZpbHRlcl9jb2VmX2luZGV4ICsg b2Zmc2V0LCAweDAwKTsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgVl9DT0VGX1NJWkU7IGkrKykN Cj4gKwkJZGNfd3JpdGUoaHcsIHJlZy0+dl9maWx0ZXJfY29lZl9kYXRhICsgb2Zmc2V0LCB2 ZXJrZXJuZWxbaV0pOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBsb2FkX3JnYl90b19y Z2Ioc3RydWN0IGRjX2h3ICpodywgY29uc3Qgc3RydWN0IGRjX2h3X3BsYW5lX3JlZyAqcmVn LA0KPiArCQkJICAgIHUzMiBvZmZzZXQsIHUxNiAqdGFibGUpDQo+ICt7DQo+ICsJZGNfd3Jp dGUoaHcsIHJlZy0+cmdiX3RvX3JnYl9jb2VmMCArIG9mZnNldCwgdGFibGVbMF0gfCAodGFi bGVbMV0gPDwgMTYpKTsNCj4gKwlkY193cml0ZShodywgcmVnLT5yZ2JfdG9fcmdiX2NvZWYx ICsgb2Zmc2V0LCB0YWJsZVsyXSB8ICh0YWJsZVszXSA8PCAxNikpOw0KPiArCWRjX3dyaXRl KGh3LCByZWctPnJnYl90b19yZ2JfY29lZjIgKyBvZmZzZXQsIHRhYmxlWzRdIHwgKHRhYmxl WzVdIDw8IDE2KSk7DQo+ICsJZGNfd3JpdGUoaHcsIHJlZy0+cmdiX3RvX3JnYl9jb2VmMyAr IG9mZnNldCwgdGFibGVbNl0gfCAodGFibGVbN10gPDwgMTYpKTsNCj4gKwlkY193cml0ZSho dywgcmVnLT5yZ2JfdG9fcmdiX2NvZWY0ICsgb2Zmc2V0LCB0YWJsZVs4XSk7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyB2b2lkIGxvYWRfeXV2X3RvX3JnYihzdHJ1Y3QgZGNfaHcgKmh3LCBj b25zdCBzdHJ1Y3QgZGNfaHdfcGxhbmVfcmVnICpyZWcsDQo+ICsJCQkgICAgdTMyIG9mZnNl dCwgczMyICp0YWJsZSkNCj4gK3sNCj4gKwlkY193cml0ZShodywgcmVnLT55dXZfdG9fcmdi X2NvZWYwICsgb2Zmc2V0LA0KPiArCQkgKDB4RkZGRiAmIHRhYmxlWzBdKSB8ICh0YWJsZVsx XSA8PCAxNikpOw0KPiArCWRjX3dyaXRlKGh3LCByZWctPnl1dl90b19yZ2JfY29lZjEgKyBv ZmZzZXQsDQo+ICsJCSAoMHhGRkZGICYgdGFibGVbMl0pIHwgKHRhYmxlWzNdIDw8IDE2KSk7 DQo+ICsJZGNfd3JpdGUoaHcsIHJlZy0+eXV2X3RvX3JnYl9jb2VmMiArIG9mZnNldCwNCj4g KwkJICgweEZGRkYgJiB0YWJsZVs0XSkgfCAodGFibGVbNV0gPDwgMTYpKTsNCj4gKwlkY193 cml0ZShodywgcmVnLT55dXZfdG9fcmdiX2NvZWYzICsgb2Zmc2V0LA0KPiArCQkgKDB4RkZG RiAmIHRhYmxlWzZdKSB8ICh0YWJsZVs3XSA8PCAxNikpOw0KPiArCWRjX3dyaXRlKGh3LCBy ZWctPnl1dl90b19yZ2JfY29lZjQgKyBvZmZzZXQsIHRhYmxlWzhdKTsNCj4gKwlkY193cml0 ZShodywgcmVnLT55dXZfdG9fcmdiX2NvZWZkMCArIG9mZnNldCwgdGFibGVbOV0pOw0KPiAr CWRjX3dyaXRlKGh3LCByZWctPnl1dl90b19yZ2JfY29lZmQxICsgb2Zmc2V0LCB0YWJsZVsx MF0pOw0KPiArCWRjX3dyaXRlKGh3LCByZWctPnl1dl90b19yZ2JfY29lZmQyICsgb2Zmc2V0 LCB0YWJsZVsxMV0pOw0KPiArCWRjX3dyaXRlKGh3LCByZWctPnlfY2xhbXBfYm91bmQgKyBv ZmZzZXQsIHRhYmxlWzEyXSB8ICh0YWJsZVsxM10gPDwgMTYpKTsNCj4gKwlkY193cml0ZSho dywgcmVnLT51dl9jbGFtcF9ib3VuZCArIG9mZnNldCwgdGFibGVbMTRdIHwgKHRhYmxlWzE1 XSA8PCAxNikpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBsb2FkX3JnYl90b195dXYo c3RydWN0IGRjX2h3ICpodywgdTMyIG9mZnNldCwgczE2ICp0YWJsZSkNCj4gK3sNCj4gKwlk Y193cml0ZShodywgRENfRElTUExBWV9SR0JUT1lVVl9DT0VGMCArIG9mZnNldCwNCj4gKwkJ IHRhYmxlWzBdIHwgKHRhYmxlWzFdIDw8IDE2KSk7DQo+ICsJZGNfd3JpdGUoaHcsIERDX0RJ U1BMQVlfUkdCVE9ZVVZfQ09FRjEgKyBvZmZzZXQsDQo+ICsJCSB0YWJsZVsyXSB8ICh0YWJs ZVszXSA8PCAxNikpOw0KPiArCWRjX3dyaXRlKGh3LCBEQ19ESVNQTEFZX1JHQlRPWVVWX0NP RUYyICsgb2Zmc2V0LA0KPiArCQkgdGFibGVbNF0gfCAodGFibGVbNV0gPDwgMTYpKTsNCj4g KwlkY193cml0ZShodywgRENfRElTUExBWV9SR0JUT1lVVl9DT0VGMyArIG9mZnNldCwNCj4g KwkJIHRhYmxlWzZdIHwgKHRhYmxlWzddIDw8IDE2KSk7DQo+ICsJZGNfd3JpdGUoaHcsIERD X0RJU1BMQVlfUkdCVE9ZVVZfQ09FRjQgKyBvZmZzZXQsIHRhYmxlWzhdKTsNCj4gKwlkY193 cml0ZShodywgRENfRElTUExBWV9SR0JUT1lVVl9DT0VGRDAgKyBvZmZzZXQsIHRhYmxlWzld KTsNCj4gKwlkY193cml0ZShodywgRENfRElTUExBWV9SR0JUT1lVVl9DT0VGRDEgKyBvZmZz ZXQsIHRhYmxlWzEwXSk7DQo+ICsJZGNfd3JpdGUoaHcsIERDX0RJU1BMQVlfUkdCVE9ZVVZf Q09FRkQyICsgb2Zmc2V0LCB0YWJsZVsxMV0pOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgYm9v bCBpc19yZ2IoZW51bSBkY19od19jb2xvcl9mb3JtYXQgZm9ybWF0KQ0KPiArew0KPiArCXN3 aXRjaCAoZm9ybWF0KSB7DQo+ICsJY2FzZSBGT1JNQVRfWDRSNEc0QjQ6DQo+ICsJY2FzZSBG T1JNQVRfQTRSNEc0QjQ6DQo+ICsJY2FzZSBGT1JNQVRfWDFSNUc1QjU6DQo+ICsJY2FzZSBG T1JNQVRfQTFSNUc1QjU6DQo+ICsJY2FzZSBGT1JNQVRfUjVHNkI1Og0KPiArCWNhc2UgRk9S TUFUX1g4UjhHOEI4Og0KPiArCWNhc2UgRk9STUFUX0E4UjhHOEI4Og0KPiArCWNhc2UgRk9S TUFUX0EyUjEwRzEwQjEwOg0KPiArCQlyZXR1cm4gdHJ1ZTsNCj4gKwlkZWZhdWx0Og0KPiAr CQlyZXR1cm4gZmFsc2U7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBsb2Fk X2RlZ2FtbWFfdGFibGUoc3RydWN0IGRjX2h3ICpodywNCj4gKwkJCSAgICAgICBjb25zdCBz dHJ1Y3QgZGNfaHdfcGxhbmVfcmVnICpyZWcsDQo+ICsJCQkgICAgICAgdTMyIG9mZnNldCwg dTE2ICp0YWJsZSkNCj4gK3sNCj4gKwl1MTYgaTsNCj4gKwl1MzIgdmFsdWU7DQo+ICsNCj4g KwlkY193cml0ZShodywgcmVnLT5kZWdhbW1hX2luZGV4ICsgb2Zmc2V0LCAwKTsNCj4gKw0K PiArCWZvciAoaSA9IDA7IGkgPCBERUdBTU1BX1NJWkU7IGkrKykgew0KPiArCQl2YWx1ZSA9 IHRhYmxlW2ldIHwgKHRhYmxlW2ldIDw8IDE2KTsNCj4gKwkJZGNfd3JpdGUoaHcsIHJlZy0+ ZGVnYW1tYV9kYXRhICsgb2Zmc2V0LCB2YWx1ZSk7DQo+ICsJCWRjX3dyaXRlKGh3LCByZWct PmRlZ2FtbWFfZXhfZGF0YSArIG9mZnNldCwgdGFibGVbaV0pOw0KPiArCX0NCj4gK30NCj4g Kw0KPiArc3RhdGljIHUzMiBnZXRfYWRkcl9vZmZzZXQodTMyIGlkKQ0KPiArew0KPiArCXUz MiBvZmZzZXQgPSAwOw0KPiArDQo+ICsJc3dpdGNoIChpZCkgew0KPiArCWNhc2UgUFJJTUFS WV9QTEFORV8xOg0KPiArCWNhc2UgT1ZFUkxBWV9QTEFORV8xOg0KPiArCQlvZmZzZXQgPSAw eDA0Ow0KPiArCQlicmVhazsNCj4gKwljYXNlIE9WRVJMQVlfUExBTkVfMjoNCj4gKwkJb2Zm c2V0ID0gMHgwODsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBPVkVSTEFZX1BMQU5FXzM6DQo+ ICsJCW9mZnNldCA9IDB4MEM7DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCWJy ZWFrOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiBvZmZzZXQ7DQo+ICt9DQo+ICsNCj4gK2lu dCBkY19od19pbml0KHN0cnVjdCBkY19odyAqaHcpDQo+ICt7DQo+ICsJdTggaSwgaWQsIHBh bmVsX251bSwgbGF5ZXJfbnVtOw0KPiArCXUzMiBvZmZzZXQ7DQo+ICsJdTMyIHJldmlzaW9u ID0gaGlfcmVhZChodywgRENfSFdfUkVWSVNJT04pOw0KPiArCXUzMiBjaWQgPSBoaV9yZWFk KGh3LCBEQ19IV19DSElQX0NJRCk7DQo+ICsJY29uc3Qgc3RydWN0IGRjX2h3X3BsYW5lX3Jl ZyAqcmVnOw0KPiArDQo+ICsJc3dpdGNoIChyZXZpc2lvbikgew0KPiArCWNhc2UgMHg1NzIw Og0KPiArCQlody0+cmV2ID0gRENfUkVWXzA7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgMHg1 NzIxOg0KPiArCQlzd2l0Y2ggKGNpZCkgew0KPiArCQljYXNlIDB4MzBCOg0KPiArCQkJaHct PnJldiA9IERDX1JFVl8xOw0KPiArCQkJYnJlYWs7DQo+ICsJCWNhc2UgMHgzMTA6DQo+ICsJ CQlody0+cmV2ID0gRENfUkVWXzI7DQo+ICsJCQlicmVhazsNCj4gKwkJZGVmYXVsdDoNCj4g KwkJCWh3LT5yZXYgPSBEQ19SRVZfMDsNCj4gKwkJCWJyZWFrOw0KPiArCQl9DQo+ICsJCWJy ZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCXJldHVybiAtRU5YSU87DQo+ICsJfQ0KPiArDQo+ ICsJaHctPmluZm8gPSAoc3RydWN0IHZzX2RjX2luZm8gKikmZGNfaW5mb1tody0+cmV2XTsN Cj4gKwlody0+ZnVuYyA9IChzdHJ1Y3QgZGNfaHdfZnVuY3MgKikmaHdfZnVuYzsNCj4gKw0K PiArCWxheWVyX251bSA9IGh3LT5pbmZvLT5sYXllcl9udW07DQo+ICsJZm9yIChpID0gMDsg aSA8IGxheWVyX251bTsgaSsrKSB7DQo+ICsJCWlkID0gaHctPmluZm8tPnBsYW5lc1tpXS5p ZDsNCj4gKwkJb2Zmc2V0ID0gZ2V0X2FkZHJfb2Zmc2V0KGlkKTsNCj4gKwkJaWYgKGlkID09 IFBSSU1BUllfUExBTkVfMCB8fCBpZCA9PSBQUklNQVJZX1BMQU5FXzEpDQo+ICsJCQlyZWcg PSAmZGNfcGxhbmVfcmVnWzBdOw0KPiArCQllbHNlDQo+ICsJCQlyZWcgPSAmZGNfcGxhbmVf cmVnWzFdOw0KPiArDQo+ICsJCWxvYWRfZGVmYXVsdF9maWx0ZXIoaHcsIHJlZywgb2Zmc2V0 KTsNCj4gKwkJbG9hZF9yZ2JfdG9fcmdiKGh3LCByZWcsIG9mZnNldCwgUkdCMlJHQik7DQo+ ICsJfQ0KPiArDQo+ICsJcGFuZWxfbnVtID0gaHctPmluZm8tPnBhbmVsX251bTsNCj4gKwlm b3IgKGkgPSAwOyBpIDwgcGFuZWxfbnVtOyBpKyspIHsNCj4gKwkJb2Zmc2V0ID0gaSA8PCAy Ow0KPiArDQo+ICsJCWxvYWRfcmdiX3RvX3l1dihodywgb2Zmc2V0LCBSR0IyWVVWKTsNCj4g KwkJZGNfd3JpdGUoaHcsIERDX0RJU1BMQVlfUEFORUxfQ09ORklHICsgb2Zmc2V0LCAweDEx MSk7DQo+ICsNCj4gKwkJb2Zmc2V0ID0gaSA/IERDX0NVUlNPUl9PRkZTRVQgOiAwOw0KPiAr CQlkY193cml0ZShodywgRENfQ1VSU09SX0JBQ0tHUk9VTkQgKyBvZmZzZXQsIDB4MDBGRkZG RkYpOw0KPiArCQlkY193cml0ZShodywgRENfQ1VSU09SX0ZPUkVHUk9VTkQgKyBvZmZzZXQs IDB4MDBBQUFBQUEpOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ ICt2b2lkIGRjX2h3X2RlaW5pdChzdHJ1Y3QgZGNfaHcgKmh3KQ0KPiArew0KPiArCS8qIE5v dGhpbmcgdG8gZG8gKi8NCj4gK30NCj4gKw0KPiArdm9pZCBkY19od191cGRhdGVfcGxhbmUo c3RydWN0IGRjX2h3ICpodywgdTggaWQsDQo+ICsJCQlzdHJ1Y3QgZGNfaHdfZmIgKmZiLCBz dHJ1Y3QgZGNfaHdfc2NhbGUgKnNjYWxlLA0KPiArCQkJc3RydWN0IGRjX2h3X3Bvc2l0aW9u ICpwb3MsIHN0cnVjdCBkY19od19ibGVuZCAqYmxlbmQpDQo+ICt7DQo+ICsJc3RydWN0IGRj X2h3X3BsYW5lICpwbGFuZSA9ICZody0+cGxhbmVbaWRdOw0KPiArDQo+ICsJaWYgKHBsYW5l KSB7DQo+ICsJCWlmIChmYikgew0KPiArCQkJaWYgKCFmYi0+ZW5hYmxlKQ0KPiArCQkJCXBs YW5lLT5mYi5lbmFibGUgPSBmYWxzZTsNCj4gKwkJCWVsc2UNCj4gKwkJCQltZW1jcHkoJnBs YW5lLT5mYiwgZmIsDQo+ICsJCQkJICAgICAgIHNpemVvZigqZmIpIC0gc2l6ZW9mKGZiLT5k aXJ0eSkpOw0KPiArCQkJcGxhbmUtPmZiLmRpcnR5ID0gdHJ1ZTsNCj4gKwkJfQ0KPiArCQlp ZiAoc2NhbGUpIHsNCj4gKwkJCW1lbWNweSgmcGxhbmUtPnNjYWxlLCBzY2FsZSwNCj4gKwkJ CSAgICAgICBzaXplb2YoKnNjYWxlKSAtIHNpemVvZihzY2FsZS0+ZGlydHkpKTsNCj4gKwkJ CXBsYW5lLT5zY2FsZS5kaXJ0eSA9IHRydWU7DQo+ICsJCX0NCj4gKwkJaWYgKHBvcykgew0K PiArCQkJbWVtY3B5KCZwbGFuZS0+cG9zLCBwb3MsDQo+ICsJCQkgICAgICAgc2l6ZW9mKCpw b3MpIC0gc2l6ZW9mKHBvcy0+ZGlydHkpKTsNCj4gKwkJCXBsYW5lLT5wb3MuZGlydHkgPSB0 cnVlOw0KPiArCQl9DQo+ICsJCWlmIChibGVuZCkgew0KPiArCQkJbWVtY3B5KCZwbGFuZS0+ YmxlbmQsIGJsZW5kLA0KPiArCQkJICAgICAgIHNpemVvZigqYmxlbmQpIC0gc2l6ZW9mKGJs ZW5kLT5kaXJ0eSkpOw0KPiArCQkJcGxhbmUtPmJsZW5kLmRpcnR5ID0gdHJ1ZTsNCj4gKwkJ fQ0KPiArCX0NCj4gK30NCj4gKw0KPiArdm9pZCBkY19od191cGRhdGVfZGVnYW1tYShzdHJ1 Y3QgZGNfaHcgKmh3LCB1OCBpZCwgdTMyIG1vZGUpDQo+ICt7DQo+ICsJc3RydWN0IGRjX2h3 X3BsYW5lICpwbGFuZSA9ICZody0+cGxhbmVbaWRdOw0KPiArDQo+ICsJaWYgKHBsYW5lKSB7 DQo+ICsJCWlmIChody0+aW5mby0+cGxhbmVzW2lkXS5kZWdhbW1hX3NpemUpIHsNCj4gKwkJ CXBsYW5lLT5kZWdhbW1hLm1vZGUgPSBtb2RlOw0KPiArCQkJcGxhbmUtPmRlZ2FtbWEuZGly dHkgPSB0cnVlOw0KPiArCQl9IGVsc2Ugew0KPiArCQkJcGxhbmUtPmRlZ2FtbWEuZGlydHkg PSBmYWxzZTsNCj4gKwkJfQ0KPiArCX0NCj4gK30NCj4gKw0KPiArdm9pZCBkY19od191cGRh dGVfcm9pKHN0cnVjdCBkY19odyAqaHcsIHU4IGlkLCBzdHJ1Y3QgZGNfaHdfcm9pICpyb2kp DQo+ICt7DQo+ICsJc3RydWN0IGRjX2h3X3BsYW5lICpwbGFuZSA9ICZody0+cGxhbmVbaWRd Ow0KPiArDQo+ICsJaWYgKHBsYW5lKSB7DQo+ICsJCW1lbWNweSgmcGxhbmUtPnJvaSwgcm9p LCBzaXplb2YoKnJvaSkgLSBzaXplb2Yocm9pLT5kaXJ0eSkpOw0KPiArCQlwbGFuZS0+cm9p LmRpcnR5ID0gdHJ1ZTsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3ZvaWQgZGNfaHdfdXBkYXRl X2NvbG9ya2V5KHN0cnVjdCBkY19odyAqaHcsIHU4IGlkLA0KPiArCQkJICAgc3RydWN0IGRj X2h3X2NvbG9ya2V5ICpjb2xvcmtleSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZGNfaHdfcGxhbmUg KnBsYW5lID0gJmh3LT5wbGFuZVtpZF07DQo+ICsNCj4gKwlpZiAocGxhbmUpIHsNCj4gKwkJ bWVtY3B5KCZwbGFuZS0+Y29sb3JrZXksIGNvbG9ya2V5LA0KPiArCQkgICAgICAgc2l6ZW9m KCpjb2xvcmtleSkgLSBzaXplb2YoY29sb3JrZXktPmRpcnR5KSk7DQo+ICsJCXBsYW5lLT5j b2xvcmtleS5kaXJ0eSA9IHRydWU7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICt2b2lkIGRjX2h3 X3VwZGF0ZV9xb3Moc3RydWN0IGRjX2h3ICpodywgc3RydWN0IGRjX2h3X3FvcyAqcW9zKQ0K PiArew0KPiArCW1lbWNweSgmaHctPnFvcywgcW9zLCBzaXplb2YoKnFvcykgLSBzaXplb2Yo cW9zLT5kaXJ0eSkpOw0KPiArCWh3LT5xb3MuZGlydHkgPSB0cnVlOw0KPiArfQ0KPiArDQo+ ICt2b2lkIGRjX2h3X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGRjX2h3ICpodywgdTggaWQsIHN0 cnVjdCBkY19od19jdXJzb3IgKmN1cnNvcikNCj4gK3sNCj4gKwltZW1jcHkoJmh3LT5jdXJz b3JbaWRdLCBjdXJzb3IsIHNpemVvZigqY3Vyc29yKSAtIHNpemVvZihjdXJzb3ItPmRpcnR5 KSk7DQo+ICsJaHctPmN1cnNvcltpZF0uZGlydHkgPSB0cnVlOw0KPiArfQ0KPiArDQo+ICt2 b2lkIGRjX2h3X3VwZGF0ZV9nYW1tYShzdHJ1Y3QgZGNfaHcgKmh3LCB1OCBpZCwgdTE2IGlu ZGV4LA0KPiArCQkJdTE2IHIsIHUxNiBnLCB1MTYgYikNCj4gK3sNCj4gKwlpZiAoaW5kZXgg Pj0gaHctPmluZm8tPmdhbW1hX3NpemUpDQo+ICsJCXJldHVybjsNCj4gKw0KPiArCWh3LT5n YW1tYVtpZF0uZ2FtbWFbaW5kZXhdWzBdID0gcjsNCj4gKwlody0+Z2FtbWFbaWRdLmdhbW1h W2luZGV4XVsxXSA9IGc7DQo+ICsJaHctPmdhbW1hW2lkXS5nYW1tYVtpbmRleF1bMl0gPSBi Ow0KPiArCWh3LT5nYW1tYVtpZF0uZGlydHkgPSB0cnVlOw0KPiArfQ0KPiArDQo+ICt2b2lk IGRjX2h3X2VuYWJsZV9nYW1tYShzdHJ1Y3QgZGNfaHcgKmh3LCB1OCBpZCwgYm9vbCBlbmFi bGUpDQo+ICt7DQo+ICsJaHctPmdhbW1hW2lkXS5lbmFibGUgPSBlbmFibGU7DQo+ICsJaHct PmdhbW1hW2lkXS5kaXJ0eSA9IHRydWU7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgZGNfaHdfc2V0 dXBfZGlzcGxheShzdHJ1Y3QgZGNfaHcgKmh3LCBzdHJ1Y3QgZGNfaHdfZGlzcGxheSAqZGlz cGxheSkNCj4gK3sNCj4gKwl1OCBpZCA9IGRpc3BsYXktPmlkOw0KPiArDQo+ICsJbWVtY3B5 KCZody0+ZGlzcGxheVtpZF0sIGRpc3BsYXksIHNpemVvZigqZGlzcGxheSkpOw0KPiArDQo+ ICsJaHctPmZ1bmMtPmRpc3BsYXkoaHcsIGRpc3BsYXkpOw0KPiArfQ0KPiArDQo+ICt2b2lk IGRjX2h3X2VuYWJsZV9pbnRlcnJ1cHQoc3RydWN0IGRjX2h3ICpodywgYm9vbCBlbmFibGUp DQo+ICt7DQo+ICsJaWYgKGVuYWJsZSkNCj4gKwkJaGlfd3JpdGUoaHcsIEFRX0lOVFJfRU5C TCwgMHhGRkZGRkZGRik7DQo+ICsJZWxzZQ0KPiArCQloaV93cml0ZShodywgQVFfSU5UUl9F TkJMLCAwKTsNCj4gK30NCj4gKw0KPiArdTMyIGRjX2h3X2dldF9pbnRlcnJ1cHQoc3RydWN0 IGRjX2h3ICpodykNCj4gK3sNCj4gKwlyZXR1cm4gaGlfcmVhZChodywgQVFfSU5UUl9BQ0tO T1dMRURHRSk7DQo+ICt9DQo+ICsNCj4gK2Jvb2wgZGNfaHdfY2hlY2tfdW5kZXJmbG93KHN0 cnVjdCBkY19odyAqaHcpDQo+ICt7DQo+ICsJcmV0dXJuIGRjX3JlYWQoaHcsIERDX0ZSQU1F QlVGRkVSX0NPTkZJRykgJiBCSVQoNSk7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgZGNfaHdfZW5h YmxlX3NoYWRvd19yZWdpc3RlcihzdHJ1Y3QgZGNfaHcgKmh3LCBib29sIGVuYWJsZSkNCj4g K3sNCj4gKwl1MzIgaSwgb2Zmc2V0Ow0KPiArCXU4IGlkLCBsYXllcl9udW0gPSBody0+aW5m by0+bGF5ZXJfbnVtOw0KPiArCXU4IHBhbmVsX251bSA9IGh3LT5pbmZvLT5wYW5lbF9udW07 DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgbGF5ZXJfbnVtOyBpKyspIHsNCj4gKwkJaWQg PSBody0+aW5mby0+cGxhbmVzW2ldLmlkOw0KPiArCQlvZmZzZXQgPSBnZXRfYWRkcl9vZmZz ZXQoaWQpOw0KPiArCQlpZiAoZW5hYmxlKSB7DQo+ICsJCQlpZiAoaWQgPT0gUFJJTUFSWV9Q TEFORV8wIHx8IGlkID09IFBSSU1BUllfUExBTkVfMSkNCj4gKwkJCQlkY19zZXRfY2xlYXIo aHcsIERDX0ZSQU1FQlVGRkVSX0NPTkZJR19FWCArIG9mZnNldCwgQklUKDEyKSwgMCk7DQo+ ICsJCQllbHNlDQo+ICsJCQkJZGNfc2V0X2NsZWFyKGh3LCBEQ19PVkVSTEFZX0NPTkZJRyAr IG9mZnNldCwgQklUKDMxKSwgMCk7DQo+ICsJCX0gZWxzZSB7DQo+ICsJCQlpZiAoaWQgPT0g UFJJTUFSWV9QTEFORV8wIHx8IGlkID09IFBSSU1BUllfUExBTkVfMSkNCj4gKwkJCQlkY19z ZXRfY2xlYXIoaHcsIERDX0ZSQU1FQlVGRkVSX0NPTkZJR19FWCArIG9mZnNldCwgMCwgQklU KDEyKSk7DQo+ICsJCQllbHNlDQo+ICsJCQkJZGNfc2V0X2NsZWFyKGh3LCBEQ19PVkVSTEFZ X0NPTkZJRyArIG9mZnNldCwgMCwgQklUKDMxKSk7DQo+ICsJCX0NCj4gKwl9DQo+ICsNCj4g Kwlmb3IgKGkgPSAwOyBpIDwgcGFuZWxfbnVtOyBpKyspIHsNCj4gKwkJb2Zmc2V0ID0gaSA8 PCAyOw0KPiArCQlpZiAoZW5hYmxlKQ0KPiArCQkJZGNfc2V0X2NsZWFyKGh3LCBEQ19ESVNQ TEFZX1BBTkVMX0NPTkZJR19FWCArIG9mZnNldCwgMCwgQklUKDApKTsNCj4gKwkJZWxzZQ0K PiArCQkJZGNfc2V0X2NsZWFyKGh3LCBEQ19ESVNQTEFZX1BBTkVMX0NPTkZJR19FWCArIG9m ZnNldCwgQklUKDApLCAwKTsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3ZvaWQgZGNfaHdfc2V0 X291dChzdHJ1Y3QgZGNfaHcgKmh3LCBlbnVtIGRjX2h3X291dCBvdXQsIHU4IGlkKQ0KPiAr ew0KPiArCWlmIChvdXQgPD0gT1VUX0RQKQ0KPiArCQlody0+b3V0W2lkXSA9IG91dDsNCj4g K30NCj4gKw0KPiArc3RhdGljIHZvaWQgZ2FtbWFfZXhfY29tbWl0KHN0cnVjdCBkY19odyAq aHcpDQo+ICt7DQo+ICsJdTggcGFuZWxfbnVtID0gaHctPmluZm8tPnBhbmVsX251bTsNCj4g Kwl1MTYgaSwgajsNCj4gKwl1MzIgdmFsdWU7DQo+ICsNCj4gKwlmb3IgKGogPSAwOyBqIDwg cGFuZWxfbnVtOyBqKyspIHsNCj4gKwkJaWYgKGh3LT5nYW1tYVtqXS5kaXJ0eSkgew0KPiAr CQkJaWYgKGh3LT5nYW1tYVtqXS5lbmFibGUpIHsNCj4gKwkJCQlkY193cml0ZShodywgRENf RElTUExBWV9HQU1NQV9FWF9JTkRFWCArIChqIDw8IDIpLCAweDAwKTsNCj4gKwkJCQlmb3Ig KGkgPSAwOyBpIDwgR0FNTUFfRVhfU0laRTsgaSsrKSB7DQo+ICsJCQkJCXZhbHVlID0gaHct PmdhbW1hW2pdLmdhbW1hW2ldWzJdIHwNCj4gKwkJCQkJCShody0+Z2FtbWFbal0uZ2FtbWFb aV1bMV0gPDwgMTIpOw0KPiArCQkJCQlkY193cml0ZShodywgRENfRElTUExBWV9HQU1NQV9F WF9EQVRBICsgKGogPDwgMiksIHZhbHVlKTsNCj4gKwkJCQkJZGNfd3JpdGUoaHcsIERDX0RJ U1BMQVlfR0FNTUFfRVhfT05FX0RBVEEgKyAoaiA8PCAyKSwNCj4gKwkJCQkJCSBody0+Z2Ft bWFbal0uZ2FtbWFbaV1bMF0pOw0KPiArCQkJCX0NCj4gKwkJCQlkY19zZXRfY2xlYXIoaHcs IERDX0RJU1BMQVlfUEFORUxfQ09ORklHICsgKGogPDwgMiksDQo+ICsJCQkJCSAgICAgQklU KDEzKSwgMCk7DQo+ICsJCQl9IGVsc2Ugew0KPiArCQkJCWRjX3NldF9jbGVhcihodywgRENf RElTUExBWV9QQU5FTF9DT05GSUcgKyAoaiA8PCAyKSwNCj4gKwkJCQkJICAgICAwLCBCSVQo MTMpKTsNCj4gKwkJCX0NCj4gKwkJCWh3LT5nYW1tYVtqXS5kaXJ0eSA9IGZhbHNlOw0KPiAr CQl9DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBwbGFuZV9jb21taXQoc3Ry dWN0IGRjX2h3ICpodykNCj4gK3sNCj4gKwlzdHJ1Y3QgZGNfaHdfcGxhbmUgKnBsYW5lOw0K PiArCWNvbnN0IHN0cnVjdCBkY19od19wbGFuZV9yZWcgKnJlZzsNCj4gKwlib29sIHByaW1h cnkgPSBmYWxzZTsNCj4gKwl1OCBpZCwgbGF5ZXJfbnVtID0gaHctPmluZm8tPmxheWVyX251 bTsNCj4gKwl1MzIgaSwgb2Zmc2V0Ow0KPiArDQo+ICsJZm9yIChpID0gMDsgaSA8IGxheWVy X251bTsgaSsrKSB7DQo+ICsJCXBsYW5lID0gJmh3LT5wbGFuZVtpXTsNCj4gKwkJaWQgPSBo dy0+aW5mby0+cGxhbmVzW2ldLmlkOw0KPiArCQlvZmZzZXQgPSBnZXRfYWRkcl9vZmZzZXQo aWQpOw0KPiArCQlpZiAoaWQgPT0gUFJJTUFSWV9QTEFORV8wIHx8IGlkID09IFBSSU1BUllf UExBTkVfMSkgew0KPiArCQkJcmVnID0gJmRjX3BsYW5lX3JlZ1swXTsNCj4gKwkJCXByaW1h cnkgPSB0cnVlOw0KPiArCQl9IGVsc2Ugew0KPiArCQkJcmVnID0gJmRjX3BsYW5lX3JlZ1sx XTsNCj4gKwkJCXByaW1hcnkgPSBmYWxzZTsNCj4gKwkJfQ0KPiArDQo+ICsJCWlmIChwbGFu ZS0+ZmIuZGlydHkpIHsNCj4gKwkJCWlmIChwbGFuZS0+ZmIuZW5hYmxlKSB7DQo+ICsJCQkJ ZGNfd3JpdGUoaHcsIHJlZy0+eV9hZGRyZXNzICsgb2Zmc2V0LA0KPiArCQkJCQkgcGxhbmUt PmZiLnlfYWRkcmVzcyk7DQo+ICsJCQkJZGNfd3JpdGUoaHcsIHJlZy0+dV9hZGRyZXNzICsg b2Zmc2V0LA0KPiArCQkJCQkgcGxhbmUtPmZiLnVfYWRkcmVzcyk7DQo+ICsJCQkJZGNfd3Jp dGUoaHcsIHJlZy0+dl9hZGRyZXNzICsgb2Zmc2V0LA0KPiArCQkJCQkgcGxhbmUtPmZiLnZf YWRkcmVzcyk7DQo+ICsJCQkJZGNfd3JpdGUoaHcsIHJlZy0+eV9zdHJpZGUgKyBvZmZzZXQs DQo+ICsJCQkJCSBwbGFuZS0+ZmIueV9zdHJpZGUpOw0KPiArCQkJCWRjX3dyaXRlKGh3LCBy ZWctPnVfc3RyaWRlICsgb2Zmc2V0LA0KPiArCQkJCQkgcGxhbmUtPmZiLnVfc3RyaWRlKTsN Cj4gKwkJCQlkY193cml0ZShodywgcmVnLT52X3N0cmlkZSArIG9mZnNldCwNCj4gKwkJCQkJ IHBsYW5lLT5mYi52X3N0cmlkZSk7DQo+ICsJCQkJZGNfd3JpdGUoaHcsIHJlZy0+c2l6ZSAr IG9mZnNldCwNCj4gKwkJCQkJIHBsYW5lLT5mYi53aWR0aCB8DQo+ICsJCQkJCSAocGxhbmUt PmZiLmhlaWdodCA8PCAxNSkpOw0KPiArCQkJCWRjX3dyaXRlKGh3LCByZWctPndhdGVyX21h cmsgKyBvZmZzZXQsDQo+ICsJCQkJCSBwbGFuZS0+ZmIud2F0ZXJfbWFyayk7DQo+ICsNCj4g KwkJCQlpZiAocGxhbmUtPmZiLmNsZWFyX2VuYWJsZSkNCj4gKwkJCQkJZGNfd3JpdGUoaHcs IHJlZy0+Y2xlYXJfdmFsdWUgKyBvZmZzZXQsDQo+ICsJCQkJCQkgcGxhbmUtPmZiLmNsZWFy X3ZhbHVlKTsNCj4gKwkJCX0NCj4gKw0KPiArCQkJaWYgKHByaW1hcnkpIHsNCj4gKwkJCQlk Y19zZXRfY2xlYXIoaHcsIERDX0ZSQU1FQlVGRkVSX0NPTkZJRyArIG9mZnNldCwNCj4gKwkJ CQkJICAgICAocGxhbmUtPmZiLmZvcm1hdCA8PCAyNikgfA0KPiArCQkJCQkgICAgIChwbGFu ZS0+ZmIudXZfc3dpenpsZSA8PCAyNSkgfA0KPiArCQkJCQkgICAgIChwbGFuZS0+ZmIuc3dp enpsZSA8PCAyMykgfA0KPiArCQkJCQkgICAgIChwbGFuZS0+ZmIudGlsZV9tb2RlIDw8IDE3 KSB8DQo+ICsJCQkJCSAgICAgKHBsYW5lLT5mYi55dXZfY29sb3Jfc3BhY2UgPDwgMTQpIHwN Cj4gKwkJCQkJICAgICAocGxhbmUtPmZiLnJvdGF0aW9uIDw8IDExKSB8DQo+ICsJCQkJCSAg ICAgKHBsYW5lLT5mYi5jbGVhcl9lbmFibGUgPDwgOCksDQo+ICsJCQkJCSAgICAgKDB4MUYg PDwgMjYpIHwNCj4gKwkJCQkJICAgICBCSVQoMjUpIHwNCj4gKwkJCQkJICAgICAoMHgwMyA8 PCAyMykgfA0KPiArCQkJCQkgICAgICgweDFGIDw8IDE3KSB8DQo+ICsJCQkJCSAgICAgKDB4 MDcgPDwgMTQpIHwNCj4gKwkJCQkJICAgICAoMHgwNyA8PCAxMSkgfA0KPiArCQkJCQkgICAg IEJJVCg4KSk7DQo+ICsJCQkJZGNfc2V0X2NsZWFyKGh3LCBEQ19GUkFNRUJVRkZFUl9DT05G SUdfRVggKyBvZmZzZXQsDQo+ICsJCQkJCSAgICAgKHBsYW5lLT5mYi5kZWNfZW5hYmxlIDw8 IDEpIHwNCj4gKwkJCQkJICAgICAocGxhbmUtPmZiLmVuYWJsZSA8PCAxMykgfA0KPiArCQkJ CQkgICAgIChwbGFuZS0+ZmIuenBvcyA8PCAxNikgfA0KPiArCQkJCQkgICAgIChwbGFuZS0+ ZmIuZGlzcGxheV9pZCA8PCAxOSksDQo+ICsJCQkJCSAgICAgQklUKDEpIHwgQklUKDEzKSB8 ICgweDA3IDw8IDE2KSB8IEJJVCgxOSkpOw0KPiArCQkJfSBlbHNlIHsNCj4gKwkJCQlkY19z ZXRfY2xlYXIoaHcsIERDX09WRVJMQVlfQ09ORklHICsgb2Zmc2V0LA0KPiArCQkJCQkgICAg IChwbGFuZS0+ZmIuZGVjX2VuYWJsZSA8PCAyNykgfA0KPiArCQkJCQkgICAgIChwbGFuZS0+ ZmIuY2xlYXJfZW5hYmxlIDw8IDI1KSB8DQo+ICsJCQkJCSAgICAgKHBsYW5lLT5mYi5lbmFi bGUgPDwgMjQpIHwNCj4gKwkJCQkJICAgICAocGxhbmUtPmZiLmZvcm1hdCA8PCAxNikgfA0K PiArCQkJCQkgICAgIChwbGFuZS0+ZmIudXZfc3dpenpsZSA8PCAxNSkgfA0KPiArCQkJCQkg ICAgIChwbGFuZS0+ZmIuc3dpenpsZSA8PCAxMykgfA0KPiArCQkJCQkgICAgIChwbGFuZS0+ ZmIudGlsZV9tb2RlIDw8IDgpIHwNCj4gKwkJCQkJICAgICAocGxhbmUtPmZiLnl1dl9jb2xv cl9zcGFjZSA8PCA1KSB8DQo+ICsJCQkJCSAgICAgKHBsYW5lLT5mYi5yb3RhdGlvbiA8PCAy KSwNCj4gKwkJCQkJICAgICBCSVQoMjcpIHwNCj4gKwkJCQkJICAgICBCSVQoMjUpIHwNCj4g KwkJCQkJICAgICBCSVQoMjQpIHwNCj4gKwkJCQkJICAgICAoMHgxRiA8PCAxNikgfA0KPiAr CQkJCQkgICAgIEJJVCgxNSkgfA0KPiArCQkJCQkgICAgICgweDAzIDw8IDEzKSB8DQo+ICsJ CQkJCSAgICAgKDB4MUYgPDwgOCkgfA0KPiArCQkJCQkgICAgICgweDA3IDw8IDUpIHwNCj4g KwkJCQkJICAgICAoMHgwNyA8PCAyKSk7DQo+ICsJCQkJZGNfc2V0X2NsZWFyKGh3LCBEQ19P VkVSTEFZX0NPTkZJR19FWCArIG9mZnNldCwNCj4gKwkJCQkJICAgICBwbGFuZS0+ZmIuenBv cyB8IChwbGFuZS0+ZmIuZGlzcGxheV9pZCA8PCAzKSwNCj4gKwkJCQkJICAgICAweDA3IHwg QklUKDMpKTsNCj4gKwkJCX0NCj4gKwkJCXBsYW5lLT5mYi5kaXJ0eSA9IGZhbHNlOw0KPiAr CQl9DQo+ICsNCj4gKwkJaWYgKHBsYW5lLT5zY2FsZS5kaXJ0eSkgew0KPiArCQkJaWYgKHBs YW5lLT5zY2FsZS5lbmFibGUpIHsNCj4gKwkJCQlkY193cml0ZShodywgcmVnLT5zY2FsZV9m YWN0b3JfeCArIG9mZnNldCwNCj4gKwkJCQkJIHBsYW5lLT5zY2FsZS5zY2FsZV9mYWN0b3Jf eCk7DQo+ICsJCQkJZGNfd3JpdGUoaHcsIHJlZy0+c2NhbGVfZmFjdG9yX3kgKyBvZmZzZXQs DQo+ICsJCQkJCSBwbGFuZS0+c2NhbGUuc2NhbGVfZmFjdG9yX3kpOw0KPiArCQkJCWlmIChw cmltYXJ5KQ0KPiArCQkJCQlkY19zZXRfY2xlYXIoaHcsDQo+ICsJCQkJCQkgICAgIERDX0ZS QU1FQlVGRkVSX0NPTkZJRyArIG9mZnNldCwNCj4gKwkJCQkJCSAgICAgQklUKDIyKSwgMCk7 DQo+ICsJCQkJZWxzZQ0KPiArCQkJCQlkY19zZXRfY2xlYXIoaHcsDQo+ICsJCQkJCQkgICAg IERDX09WRVJMQVlfU0NBTEVfQ09ORklHICsgb2Zmc2V0LA0KPiArCQkJCQkJICAgICBCSVQo OCksIDApOw0KPiArCQkJfSBlbHNlIHsNCj4gKwkJCQlpZiAocHJpbWFyeSkNCj4gKwkJCQkJ ZGNfc2V0X2NsZWFyKGh3LA0KPiArCQkJCQkJICAgICBEQ19GUkFNRUJVRkZFUl9DT05GSUcg KyBvZmZzZXQsDQo+ICsJCQkJCQkgICAgIDAsIEJJVCgyMikpOw0KPiArCQkJCWVsc2UNCj4g KwkJCQkJZGNfc2V0X2NsZWFyKGh3LA0KPiArCQkJCQkJICAgICBEQ19PVkVSTEFZX1NDQUxF X0NPTkZJRyArIG9mZnNldCwNCj4gKwkJCQkJCSAgICAgMCwgQklUKDgpKTsNCj4gKwkJCX0N Cj4gKwkJCXBsYW5lLT5zY2FsZS5kaXJ0eSA9IGZhbHNlOw0KPiArCQl9DQo+ICsNCj4gKwkJ aWYgKHBsYW5lLT5wb3MuZGlydHkpIHsNCj4gKwkJCWRjX3dyaXRlKGh3LCByZWctPnRvcF9s ZWZ0ICsgb2Zmc2V0LA0KPiArCQkJCSBwbGFuZS0+cG9zLnN0YXJ0X3ggfA0KPiArCQkJCSAo cGxhbmUtPnBvcy5zdGFydF95IDw8IDE1KSk7DQo+ICsJCQlkY193cml0ZShodywgcmVnLT5i b3R0b21fcmlnaHQgKyBvZmZzZXQsDQo+ICsJCQkJIHBsYW5lLT5wb3MuZW5kX3ggfA0KPiAr CQkJCSAocGxhbmUtPnBvcy5lbmRfeSA8PCAxNSkpOw0KPiArCQkJcGxhbmUtPnBvcy5kaXJ0 eSA9IGZhbHNlOw0KPiArCQl9DQo+ICsNCj4gKwkJaWYgKHBsYW5lLT5ibGVuZC5kaXJ0eSkg ew0KPiArCQkJZGNfd3JpdGUoaHcsIHJlZy0+c3JjX2dsb2JhbF9jb2xvciArIG9mZnNldCwN Cj4gKwkJCQkgcGxhbmUtPmJsZW5kLmFscGhhIDw8IDI0KTsNCj4gKwkJCWRjX3dyaXRlKGh3 LCByZWctPmRzdF9nbG9iYWxfY29sb3IgKyBvZmZzZXQsDQo+ICsJCQkJIHBsYW5lLT5ibGVu ZC5hbHBoYSA8PCAyNCk7DQo+ICsJCQlzd2l0Y2ggKHBsYW5lLT5ibGVuZC5ibGVuZF9tb2Rl KSB7DQo+ICsJCQljYXNlIEJMRU5EX1BSRU1VTFRJOg0KPiArCQkJCWRjX3dyaXRlKGh3LCBy ZWctPmJsZW5kX2NvbmZpZyArIG9mZnNldCwgMHgzNDUwKTsNCj4gKwkJCQlicmVhazsNCj4g KwkJCWNhc2UgQkxFTkRfQ09WRVJBR0U6DQo+ICsJCQkJZGNfd3JpdGUoaHcsIHJlZy0+Ymxl bmRfY29uZmlnICsgb2Zmc2V0LCAweDM5NTApOw0KPiArCQkJCWJyZWFrOw0KPiArCQkJY2Fz ZSBCTEVORF9QSVhFTF9OT05FOg0KPiArCQkJCWRjX3dyaXRlKGh3LCByZWctPmJsZW5kX2Nv bmZpZyArIG9mZnNldCwgMHgzNTQ4KTsNCj4gKwkJCQlicmVhazsNCj4gKwkJCWRlZmF1bHQ6 DQo+ICsJCQkJYnJlYWs7DQo+ICsJCQl9DQo+ICsJCQlwbGFuZS0+YmxlbmQuZGlydHkgPSBm YWxzZTsNCj4gKwkJfQ0KPiArDQo+ICsJCWlmIChwbGFuZS0+Y29sb3JrZXkuZGlydHkpIHsN Cj4gKwkJCWRjX3dyaXRlKGh3LCByZWctPmNvbG9yX2tleSArIG9mZnNldCwgcGxhbmUtPmNv bG9ya2V5LmNvbG9ya2V5KTsNCj4gKwkJCWRjX3dyaXRlKGh3LCByZWctPmNvbG9yX2tleV9o aWdoICsgb2Zmc2V0LA0KPiArCQkJCSBwbGFuZS0+Y29sb3JrZXkuY29sb3JrZXlfaGlnaCk7 DQo+ICsNCj4gKwkJCWlmIChwcmltYXJ5KQ0KPiArCQkJCWRjX3NldF9jbGVhcihodywgRENf RlJBTUVCVUZGRVJfQ09ORklHICsgb2Zmc2V0LA0KPiArCQkJCQkgICAgIHBsYW5lLT5jb2xv cmtleS50cmFuc3BhcmVuY3kgPDwgOSwgMHgwMyA8PCA5KTsNCj4gKwkJCWVsc2UNCj4gKwkJ CQlkY19zZXRfY2xlYXIoaHcsIERDX09WRVJMQVlfQ09ORklHICsgb2Zmc2V0LA0KPiArCQkJ CQkgICAgIHBsYW5lLT5jb2xvcmtleS50cmFuc3BhcmVuY3ksIDB4MDMpOw0KPiArDQo+ICsJ CQlwbGFuZS0+Y29sb3JrZXkuZGlydHkgPSBmYWxzZTsNCj4gKwkJfQ0KPiArDQo+ICsJCWlm IChwbGFuZS0+cm9pLmRpcnR5KSB7DQo+ICsJCQlpZiAocGxhbmUtPnJvaS5lbmFibGUpIHsN Cj4gKwkJCQlkY193cml0ZShodywgcmVnLT5yb2lfb3JpZ2luICsgb2Zmc2V0LA0KPiArCQkJ CQkgcGxhbmUtPnJvaS54IHwgKHBsYW5lLT5yb2kueSA8PCAxNikpOw0KPiArCQkJCWRjX3dy aXRlKGh3LCByZWctPnJvaV9zaXplICsgb2Zmc2V0LA0KPiArCQkJCQkgcGxhbmUtPnJvaS53 aWR0aCB8IChwbGFuZS0+cm9pLmhlaWdodCA8PCAxNikpOw0KPiArCQkJCWlmIChwcmltYXJ5 KQ0KPiArCQkJCQlkY19zZXRfY2xlYXIoaHcsIERDX0ZSQU1FQlVGRkVSX0NPTkZJR19FWCAr IG9mZnNldCwNCj4gKwkJCQkJCSAgICAgQklUKDApLCAwKTsNCj4gKwkJCQllbHNlDQo+ICsJ CQkJCWRjX3NldF9jbGVhcihodywgRENfT1ZFUkxBWV9DT05GSUcgKyBvZmZzZXQsDQo+ICsJ CQkJCQkgICAgIEJJVCgyMiksIDApOw0KPiArCQkJfSBlbHNlIHsNCj4gKwkJCQlpZiAocHJp bWFyeSkNCj4gKwkJCQkJZGNfc2V0X2NsZWFyKGh3LCBEQ19GUkFNRUJVRkZFUl9DT05GSUdf RVggKyBvZmZzZXQsDQo+ICsJCQkJCQkgICAgIDAsIEJJVCgwKSk7DQo+ICsJCQkJZWxzZQ0K PiArCQkJCQlkY19zZXRfY2xlYXIoaHcsIERDX09WRVJMQVlfQ09ORklHICsgb2Zmc2V0LA0K PiArCQkJCQkJICAgICAwLCBCSVQoMjIpKTsNCj4gKwkJCX0NCj4gKwkJCXBsYW5lLT5yb2ku ZGlydHkgPSBmYWxzZTsNCj4gKwkJfQ0KPiArCX0NCj4gK30NCj4gKw0KPiArc3RhdGljIHZv aWQgcGxhbmVfZXhfY29tbWl0KHN0cnVjdCBkY19odyAqaHcpDQo+ICt7DQo+ICsJc3RydWN0 IGRjX2h3X3BsYW5lICpwbGFuZTsNCj4gKwljb25zdCBzdHJ1Y3QgZGNfaHdfcGxhbmVfcmVn ICpyZWc7DQo+ICsJYm9vbCBwcmltYXJ5ID0gZmFsc2U7DQo+ICsJdTggaWQsIGxheWVyX251 bSA9IGh3LT5pbmZvLT5sYXllcl9udW07DQo+ICsJdTMyIGksIG9mZnNldDsNCj4gKw0KPiAr CWZvciAoaSA9IDA7IGkgPCBsYXllcl9udW07IGkrKykgew0KPiArCQlwbGFuZSA9ICZody0+ cGxhbmVbaV07DQo+ICsJCWlkID0gaHctPmluZm8tPnBsYW5lc1tpXS5pZDsNCj4gKwkJb2Zm c2V0ID0gZ2V0X2FkZHJfb2Zmc2V0KGlkKTsNCj4gKwkJaWYgKGlkID09IFBSSU1BUllfUExB TkVfMCB8fCBpZCA9PSBQUklNQVJZX1BMQU5FXzEpIHsNCj4gKwkJCXJlZyA9ICZkY19wbGFu ZV9yZWdbMF07DQo+ICsJCQlwcmltYXJ5ID0gdHJ1ZTsNCj4gKwkJfSBlbHNlIHsNCj4gKwkJ CXJlZyA9ICZkY19wbGFuZV9yZWdbMV07DQo+ICsJCQlwcmltYXJ5ID0gZmFsc2U7DQo+ICsJ CX0NCj4gKw0KPiArCQlpZiAocGxhbmUtPmZiLmRpcnR5KSB7DQo+ICsJCQlpZiAoaXNfcmdi KHBsYW5lLT5mYi5mb3JtYXQpKSB7DQo+ICsJCQkJaWYgKHByaW1hcnkpDQo+ICsJCQkJCWRj X3NldF9jbGVhcihodywNCj4gKwkJCQkJCSAgICAgRENfRlJBTUVCVUZGRVJfQ09ORklHX0VY ICsgb2Zmc2V0LA0KPiArCQkJCQkJICAgICBCSVQoNiksIEJJVCg4KSk7DQo+ICsJCQkJZWxz ZQ0KPiArCQkJCQlkY19zZXRfY2xlYXIoaHcsDQo+ICsJCQkJCQkgICAgIERDX09WRVJMQVlf Q09ORklHICsgb2Zmc2V0LA0KPiArCQkJCQkJICAgICBCSVQoMjkpLCBCSVQoMzApKTsNCj4g KwkJCX0gZWxzZSB7DQo+ICsJCQkJaWYgKHByaW1hcnkpDQo+ICsJCQkJCWRjX3NldF9jbGVh cihodywNCj4gKwkJCQkJCSAgICAgRENfRlJBTUVCVUZGRVJfQ09ORklHX0VYICsgb2Zmc2V0 LA0KPiArCQkJCQkJICAgICBCSVQoOCksIEJJVCg2KSk7DQo+ICsJCQkJZWxzZQ0KPiArCQkJ CQlkY19zZXRfY2xlYXIoaHcsDQo+ICsJCQkJCQkgICAgIERDX09WRVJMQVlfQ09ORklHICsg b2Zmc2V0LA0KPiArCQkJCQkJICAgICBCSVQoMzApLCBCSVQoMjkpKTsNCj4gKwkJCQlzd2l0 Y2ggKHBsYW5lLT5mYi55dXZfY29sb3Jfc3BhY2UpIHsNCj4gKwkJCQljYXNlIENPTE9SX1NQ QUNFXzYwMToNCj4gKwkJCQkJbG9hZF95dXZfdG9fcmdiKGh3LCByZWcsIG9mZnNldCwgWVVW NjAxXzJSR0IpOw0KPiArCQkJCQlicmVhazsNCj4gKwkJCQljYXNlIENPTE9SX1NQQUNFXzcw OToNCj4gKwkJCQkJbG9hZF95dXZfdG9fcmdiKGh3LCByZWcsIG9mZnNldCwgWVVWNzA5XzJS R0IpOw0KPiArCQkJCQlicmVhazsNCj4gKwkJCQljYXNlIENPTE9SX1NQQUNFXzIwMjA6DQo+ ICsJCQkJCWxvYWRfeXV2X3RvX3JnYihodywgcmVnLCBvZmZzZXQsIFlVVjIwMjBfMlJHQik7 DQo+ICsJCQkJCWJyZWFrOw0KPiArCQkJCWRlZmF1bHQ6DQo+ICsJCQkJCWJyZWFrOw0KPiAr CQkJCX0NCj4gKwkJCX0NCj4gKwkJfQ0KPiArCQlpZiAocGxhbmUtPmRlZ2FtbWEuZGlydHkp IHsNCj4gKwkJCXN3aXRjaCAocGxhbmUtPmRlZ2FtbWEubW9kZSkgew0KPiArCQkJY2FzZSBW U19ERUdBTU1BX0RJU0FCTEU6DQo+ICsJCQkJaWYgKHByaW1hcnkpDQo+ICsJCQkJCWRjX3Nl dF9jbGVhcihodywNCj4gKwkJCQkJCSAgICAgRENfRlJBTUVCVUZGRVJfQ09ORklHX0VYICsg b2Zmc2V0LA0KPiArCQkJCQkJICAgICAwLCBCSVQoNSkpOw0KPiArCQkJCWVsc2UNCj4gKwkJ CQkJZGNfc2V0X2NsZWFyKGh3LA0KPiArCQkJCQkJICAgICBEQ19PVkVSTEFZX0NPTkZJRyAr IG9mZnNldCwNCj4gKwkJCQkJCSAgICAgMCwgQklUKDI4KSk7DQo+ICsJCQkJYnJlYWs7DQo+ ICsJCQljYXNlIFZTX0RFR0FNTUFfQlQ3MDk6DQo+ICsJCQkJbG9hZF9kZWdhbW1hX3RhYmxl KGh3LCByZWcsIG9mZnNldCwgREVHQU1NQV83MDkpOw0KPiArCQkJCWlmIChwcmltYXJ5KQ0K PiArCQkJCQlkY19zZXRfY2xlYXIoaHcsDQo+ICsJCQkJCQkgICAgIERDX0ZSQU1FQlVGRkVS X0NPTkZJR19FWCArIG9mZnNldCwNCj4gKwkJCQkJCSAgICAgQklUKDUpLCAwKTsNCj4gKwkJ CQllbHNlDQo+ICsJCQkJCWRjX3NldF9jbGVhcihodywNCj4gKwkJCQkJCSAgICAgRENfT1ZF UkxBWV9DT05GSUcgKyBvZmZzZXQsDQo+ICsJCQkJCQkgICAgIEJJVCgyOCksIDApOw0KPiAr CQkJCWJyZWFrOw0KPiArCQkJY2FzZSBWU19ERUdBTU1BX0JUMjAyMDoNCj4gKwkJCQlsb2Fk X2RlZ2FtbWFfdGFibGUoaHcsIHJlZywgb2Zmc2V0LCBERUdBTU1BXzIwMjApOw0KPiArCQkJ CWlmIChwcmltYXJ5KQ0KPiArCQkJCQlkY19zZXRfY2xlYXIoaHcsDQo+ICsJCQkJCQkgICAg IERDX0ZSQU1FQlVGRkVSX0NPTkZJR19FWCArIG9mZnNldCwNCj4gKwkJCQkJCSAgICAgQklU KDUpLCAwKTsNCj4gKwkJCQllbHNlDQo+ICsJCQkJCWRjX3NldF9jbGVhcihodywNCj4gKwkJ CQkJCSAgICAgRENfT1ZFUkxBWV9DT05GSUcgKyBvZmZzZXQsDQo+ICsJCQkJCQkgICAgIEJJ VCgyOCksIDApOw0KPiArCQkJCWJyZWFrOw0KPiArCQkJZGVmYXVsdDoNCj4gKwkJCQlicmVh azsNCj4gKwkJCX0NCj4gKwkJCXBsYW5lLT5kZWdhbW1hLmRpcnR5ID0gZmFsc2U7DQo+ICsJ CX0NCj4gKwl9DQo+ICsJcGxhbmVfY29tbWl0KGh3KTsNCj4gK30NCj4gKw0KPiArc3RhdGlj IHZvaWQgc2V0dXBfZGlzcGxheShzdHJ1Y3QgZGNfaHcgKmh3LCBzdHJ1Y3QgZGNfaHdfZGlz cGxheSAqZGlzcGxheSkNCj4gK3sNCj4gKwl1OCBpZCA9IGRpc3BsYXktPmlkOw0KPiArCXUz MiBkcGlfY2ZnLCBvZmZzZXQgPSBpZCA8PCAyOw0KPiArDQo+ICsJaWYgKGh3LT5kaXNwbGF5 W2lkXS5lbmFibGUpIHsNCj4gKwkJc3dpdGNoIChkaXNwbGF5LT5idXNfZm9ybWF0KSB7DQo+ ICsJCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0I1NjVfMVgxNjoNCj4gKwkJCWRwaV9jZmcgPSAw Ow0KPiArCQkJYnJlYWs7DQo+ICsJCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0I2NjZfMVgxODoN Cj4gKwkJCWRwaV9jZmcgPSAzOw0KPiArCQkJYnJlYWs7DQo+ICsJCWNhc2UgTUVESUFfQlVT X0ZNVF9SR0I2NjZfMVgyNF9DUEFESEk6DQo+ICsJCQlkcGlfY2ZnID0gNDsNCj4gKwkJCWJy ZWFrOw0KPiArCQljYXNlIE1FRElBX0JVU19GTVRfUkdCODg4XzFYMjQ6DQo+ICsJCQlkcGlf Y2ZnID0gNTsNCj4gKwkJCWJyZWFrOw0KPiArCQljYXNlIE1FRElBX0JVU19GTVRfUkdCMTAx MDEwXzFYMzA6DQo+ICsJCQlkcGlfY2ZnID0gNjsNCj4gKwkJCWJyZWFrOw0KPiArCQlkZWZh dWx0Og0KPiArCQkJZHBpX2NmZyA9IDU7DQo+ICsJCQlicmVhazsNCj4gKwkJfQ0KPiArCQlk Y193cml0ZShodywgRENfRElTUExBWV9EUElfQ09ORklHICsgb2Zmc2V0LCBkcGlfY2ZnKTsN Cj4gKw0KPiArCQlpZiAoaWQgPT0gMCkNCj4gKwkJCWRjX3NldF9jbGVhcihodywgRENfRElT UExBWV9QQU5FTF9TVEFSVCwgMCwgQklUKDApIHwgQklUKDIpKTsNCj4gKwkJZWxzZQ0KPiAr CQkJZGNfc2V0X2NsZWFyKGh3LCBEQ19ESVNQTEFZX1BBTkVMX1NUQVJULCAwLCBCSVQoMSkg fCBCSVQoMikpOw0KPiArDQo+ICsJCWRjX3dyaXRlKGh3LCBEQ19ESVNQTEFZX0ggKyBvZmZz ZXQsIGh3LT5kaXNwbGF5W2lkXS5oX2FjdGl2ZSB8DQo+ICsJCQkgKGh3LT5kaXNwbGF5W2lk XS5oX3RvdGFsIDw8IDE2KSk7DQo+ICsJCWRjX3dyaXRlKGh3LCBEQ19ESVNQTEFZX0hfU1lO QyArIG9mZnNldCwNCj4gKwkJCSBody0+ZGlzcGxheVtpZF0uaF9zeW5jX3N0YXJ0IHwNCj4g KwkJCSAoaHctPmRpc3BsYXlbaWRdLmhfc3luY19lbmQgPDwgMTUpIHwNCj4gKwkJCSAoaHct PmRpc3BsYXlbaWRdLmhfc3luY19wb2xhcml0eSA/IDAgOiBCSVQoMzEpKSB8DQo+ICsJCQkg QklUKDMwKSk7DQo+ICsJCWRjX3dyaXRlKGh3LCBEQ19ESVNQTEFZX1YgKyBvZmZzZXQsIGh3 LT5kaXNwbGF5W2lkXS52X2FjdGl2ZSB8DQo+ICsJCQkJKGh3LT5kaXNwbGF5W2lkXS52X3Rv dGFsIDw8IDE2KSk7DQo+ICsJCWRjX3dyaXRlKGh3LCBEQ19ESVNQTEFZX1ZfU1lOQyArIG9m ZnNldCwNCj4gKwkJCSBody0+ZGlzcGxheVtpZF0udl9zeW5jX3N0YXJ0IHwNCj4gKwkJCSAo aHctPmRpc3BsYXlbaWRdLnZfc3luY19lbmQgPDwgMTUpIHwNCj4gKwkJCSAoaHctPmRpc3Bs YXlbaWRdLnZfc3luY19wb2xhcml0eSA/IDAgOiBCSVQoMzEpKSB8DQo+ICsJCQkgQklUKDMw KSk7DQo+ICsNCj4gKwkJaWYgKGh3LT5pbmZvLT5waXBlX3N5bmMpIHsNCj4gKwkJCXN3aXRj aCAoZGlzcGxheS0+c3luY19tb2RlKSB7DQo+ICsJCQljYXNlIFZTX1NJTkdMRV9EQzoNCj4g KwkJCQlkY19zZXRfY2xlYXIoaHcsIERDX0ZSQU1FQlVGRkVSX0NPTkZJR19FWCwNCj4gKwkJ CQkJICAgICAwLCBCSVQoMykgfCBCSVQoNCkpOw0KPiArCQkJCWJyZWFrOw0KPiArCQkJY2Fz ZSBWU19NVUxUSV9EQ19QUklNQVJZOg0KPiArCQkJCWRjX3NldF9jbGVhcihodywgRENfRlJB TUVCVUZGRVJfQ09ORklHX0VYLA0KPiArCQkJCQkgICAgIEJJVCgzKSB8IEJJVCg0KSwgMCk7 DQo+ICsJCQkJYnJlYWs7DQo+ICsJCQljYXNlIFZTX01VTFRJX0RDX1NFQ09OREFSWToNCj4g KwkJCQlkY19zZXRfY2xlYXIoaHcsIERDX0ZSQU1FQlVGRkVSX0NPTkZJR19FWCwNCj4gKwkJ CQkJICAgICBCSVQoMyksIEJJVCg0KSk7DQo+ICsJCQkJYnJlYWs7DQo+ICsJCQlkZWZhdWx0 Og0KPiArCQkJCWJyZWFrOw0KPiArCQkJfQ0KPiArCQl9DQo+ICsNCj4gKwkJaWYgKGh3LT5p bmZvLT5iYWNrZ3JvdW5kKQ0KPiArCQkJZGNfd3JpdGUoaHcsIERDX0ZSQU1FQlVGRkVSX0JH X0NPTE9SICsgb2Zmc2V0LA0KPiArCQkJCSBody0+ZGlzcGxheVtpZF0uYmdfY29sb3IpOw0K PiArDQo+ICsJCWlmIChody0+ZGlzcGxheVtpZF0uZGl0aGVyX2VuYWJsZSkgew0KPiArCQkJ ZGNfd3JpdGUoaHcsIERDX0RJU1BMQVlfRElUSEVSX1RBQkxFX0xPVyArIG9mZnNldCwNCj4g KwkJCQkgRENfRElTUExBWV9ESVRIRVJUQUJMRV9MT1cpOw0KPiArCQkJZGNfd3JpdGUoaHcs IERDX0RJU1BMQVlfRElUSEVSX1RBQkxFX0hJR0ggKyBvZmZzZXQsDQo+ICsJCQkJIERDX0RJ U1BMQVlfRElUSEVSVEFCTEVfSElHSCk7DQo+ICsJCQlkY193cml0ZShodywgRENfRElTUExB WV9ESVRIRVJfQ09ORklHICsgb2Zmc2V0LCBCSVQoMzEpKTsNCj4gKwkJfSBlbHNlIHsNCj4g KwkJCWRjX3dyaXRlKGh3LCBEQ19ESVNQTEFZX0RJVEhFUl9DT05GSUcgKyBvZmZzZXQsIDAp Ow0KPiArCQl9DQo+ICsNCj4gKwkJZGNfc2V0X2NsZWFyKGh3LCBEQ19ESVNQTEFZX1BBTkVM X0NPTkZJRyArIG9mZnNldCwgQklUKDEyKSwgMCk7DQo+ICsJCWlmIChody0+ZGlzcGxheVtp ZF0uc3luY19lbmFibGUpDQo+ICsJCQlkY19zZXRfY2xlYXIoaHcsIERDX0RJU1BMQVlfUEFO RUxfU1RBUlQsIEJJVCgyKSB8IEJJVCgzKSwgMCk7DQo+ICsJCWVsc2UgaWYgKGlkID09IDAp DQo+ICsJCQlkY19zZXRfY2xlYXIoaHcsIERDX0RJU1BMQVlfUEFORUxfU1RBUlQsIEJJVCgw KSwgQklUKDMpKTsNCj4gKwkJZWxzZQ0KPiArCQkJZGNfc2V0X2NsZWFyKGh3LCBEQ19ESVNQ TEFZX1BBTkVMX1NUQVJULCBCSVQoMSksIEJJVCgzKSk7DQo+ICsJfSBlbHNlIHsNCj4gKwkJ ZGNfc2V0X2NsZWFyKGh3LCBEQ19ESVNQTEFZX1BBTkVMX0NPTkZJRyArIG9mZnNldCwgMCwg QklUKDEyKSk7DQo+ICsJCWlmIChpZCA9PSAwKQ0KPiArCQkJZGNfc2V0X2NsZWFyKGh3LCBE Q19ESVNQTEFZX1BBTkVMX1NUQVJULCAwLCBCSVQoMCkgfCBCSVQoMikpOw0KPiArCQllbHNl DQo+ICsJCQlkY19zZXRfY2xlYXIoaHcsIERDX0RJU1BMQVlfUEFORUxfU1RBUlQsIDAsIEJJ VCgxKSB8IEJJVCgyKSk7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBzZXR1 cF9kaXNwbGF5X2V4KHN0cnVjdCBkY19odyAqaHcsIHN0cnVjdCBkY19od19kaXNwbGF5ICpk aXNwbGF5KQ0KPiArew0KPiArCXU4IGlkID0gZGlzcGxheS0+aWQ7DQo+ICsJdTMyIGRwX2Nm Zywgb2Zmc2V0ID0gaWQgPDwgMjsNCj4gKwlib29sIGlzX3l1diA9IGZhbHNlOw0KPiArDQo+ ICsJaWYgKGh3LT5kaXNwbGF5W2lkXS5lbmFibGUgJiYgaHctPm91dFtpZF0gPT0gT1VUX0RQ KSB7DQo+ICsJCXN3aXRjaCAoZGlzcGxheS0+YnVzX2Zvcm1hdCkgew0KPiArCQljYXNlIE1F RElBX0JVU19GTVRfUkdCNTY1XzFYMTY6DQo+ICsJCQlkcF9jZmcgPSAwOw0KPiArCQkJYnJl YWs7DQo+ICsJCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0I2NjZfMVgxODoNCj4gKwkJCWRwX2Nm ZyA9IDE7DQo+ICsJCQlicmVhazsNCj4gKwkJY2FzZSBNRURJQV9CVVNfRk1UX1JHQjg4OF8x WDI0Og0KPiArCQkJZHBfY2ZnID0gMjsNCj4gKwkJCWJyZWFrOw0KPiArCQljYXNlIE1FRElB X0JVU19GTVRfUkdCMTAxMDEwXzFYMzA6DQo+ICsJCQlkcF9jZmcgPSAzOw0KPiArCQkJYnJl YWs7DQo+ICsJCWNhc2UgTUVESUFfQlVTX0ZNVF9VWVZZOF8xWDE2Og0KPiArCQkJZHBfY2Zn ID0gMiA8PCA0Ow0KPiArCQkJaXNfeXV2ID0gdHJ1ZTsNCj4gKwkJCWJyZWFrOw0KPiArCQlj YXNlIE1FRElBX0JVU19GTVRfWVVWOF8xWDI0Og0KPiArCQkJZHBfY2ZnID0gNCA8PCA0Ow0K PiArCQkJaXNfeXV2ID0gdHJ1ZTsNCj4gKwkJCWJyZWFrOw0KPiArCQljYXNlIE1FRElBX0JV U19GTVRfVVlWWTEwXzFYMjA6DQo+ICsJCQlkcF9jZmcgPSA4IDw8IDQ7DQo+ICsJCQlpc195 dXYgPSB0cnVlOw0KPiArCQkJYnJlYWs7DQo+ICsJCWNhc2UgTUVESUFfQlVTX0ZNVF9ZVVYx MF8xWDMwOg0KPiArCQkJZHBfY2ZnID0gMTAgPDwgNDsNCj4gKwkJCWlzX3l1diA9IHRydWU7 DQo+ICsJCQlicmVhazsNCj4gKwkJY2FzZSBNRURJQV9CVVNfRk1UX1VZWVZZWThfMF81WDI0 Og0KPiArCQkJZHBfY2ZnID0gMTIgPDwgNDsNCj4gKwkJCWlzX3l1diA9IHRydWU7DQo+ICsJ CQlicmVhazsNCj4gKwkJY2FzZSBNRURJQV9CVVNfRk1UX1VZWVZZWTEwXzBfNVgzMDoNCj4g KwkJCWRwX2NmZyA9IDEzIDw8IDQ7DQo+ICsJCQlpc195dXYgPSB0cnVlOw0KPiArCQkJYnJl YWs7DQo+ICsJCWRlZmF1bHQ6DQo+ICsJCQlkcF9jZmcgPSAyOw0KPiArCQkJYnJlYWs7DQo+ ICsJCX0NCj4gKwkJaWYgKGlzX3l1dikNCj4gKwkJCWRjX3NldF9jbGVhcihodywgRENfRElT UExBWV9QQU5FTF9DT05GSUcgKyBvZmZzZXQsIEJJVCgxNiksIDApOw0KPiArCQllbHNlDQo+ ICsJCQlkY19zZXRfY2xlYXIoaHcsIERDX0RJU1BMQVlfUEFORUxfQ09ORklHICsgb2Zmc2V0 LCAwLCBCSVQoMTYpKTsNCj4gKwkJZGNfd3JpdGUoaHcsIERDX0RJU1BMQVlfRFBfQ09ORklH ICsgb2Zmc2V0LCBkcF9jZmcgfCBCSVQoMykpOw0KPiArCX0NCj4gKw0KPiArCWlmIChody0+ b3V0W2lkXSA9PSBPVVRfRFBJKQ0KPiArCQlkY19zZXRfY2xlYXIoaHcsIERDX0RJU1BMQVlf RFBfQ09ORklHICsgb2Zmc2V0LCAwLCBCSVQoMykpOw0KPiArDQo+ICsJc2V0dXBfZGlzcGxh eShodywgZGlzcGxheSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGNf aHdfZnVuY3MgaHdfZnVuYyA9IHsNCj4gKwkuZ2FtbWEgPSAmZ2FtbWFfZXhfY29tbWl0LA0K PiArCS5wbGFuZSA9ICZwbGFuZV9leF9jb21taXQsDQo+ICsJLmRpc3BsYXkgPSBzZXR1cF9k aXNwbGF5X2V4LA0KPiArfTsNCj4gKw0KPiArdm9pZCBkY19od19jb21taXQoc3RydWN0IGRj X2h3ICpodykNCj4gK3sNCj4gKwl1MzIgaSwgb2Zmc2V0ID0gMDsNCj4gKwl1OCBwbGFuZV9u dW0gPSBody0+aW5mby0+cGxhbmVfbnVtOw0KPiArCXU4IGxheWVyX251bSA9IGh3LT5pbmZv LT5sYXllcl9udW07DQo+ICsJdTggY3Vyc29yX251bSA9IHBsYW5lX251bSAtIGxheWVyX251 bTsNCj4gKw0KPiArCWh3LT5mdW5jLT5nYW1tYShodyk7DQo+ICsJaHctPmZ1bmMtPnBsYW5l KGh3KTsNCj4gKw0KPiArCWZvciAoaSA9IDA7IGkgPCBjdXJzb3JfbnVtOyBpKyspIHsNCj4g KwkJaWYgKGh3LT5jdXJzb3JbaV0uZGlydHkpIHsNCj4gKwkJCW9mZnNldCA9IGh3LT5jdXJz b3JbaV0uZGlzcGxheV9pZCA/IERDX0NVUlNPUl9PRkZTRVQgOiAwOw0KPiArCQkJaWYgKGh3 LT5jdXJzb3JbaV0uZW5hYmxlKSB7DQo+ICsJCQkJZGNfd3JpdGUoaHcsIERDX0NVUlNPUl9B RERSRVNTICsgb2Zmc2V0LA0KPiArCQkJCQkgaHctPmN1cnNvcltpXS5hZGRyZXNzKTsNCj4g KwkJCQlkY193cml0ZShodywgRENfQ1VSU09SX0xPQ0FUSU9OICsgb2Zmc2V0LCBody0+Y3Vy c29yW2ldLnggfA0KPiArCQkJCQkgKGh3LT5jdXJzb3JbaV0ueSA8PCAxNikpOw0KPiArCQkJ CWRjX3NldF9jbGVhcihodywgRENfQ1VSU09SX0NPTkZJRyArIG9mZnNldCwNCj4gKwkJCQkJ ICAgICAoaHctPmN1cnNvcltpXS5ob3RfeCA8PCAxNikgfA0KPiArCQkJCQkgICAgIChody0+ Y3Vyc29yW2ldLmhvdF95IDw8IDgpIHwNCj4gKwkJCQkJICAgICAoaHctPmN1cnNvcltpXS5z aXplIDw8IDUpIHwNCj4gKwkJCQkJICAgICBCSVQoMykgfCBCSVQoMikgfCAweDAyLA0KPiAr CQkJCQkgICAgICgweEZGIDw8IDE2KSB8DQo+ICsJCQkJCSAgICAgKDB4RkYgPDwgOCkgfA0K PiArCQkJCQkgICAgICgweDA3IDw8IDUpIHwgMHgxRik7DQo+ICsJCQl9IGVsc2Ugew0KPiAr CQkJCWRjX3NldF9jbGVhcihodywgRENfQ1VSU09SX0NPTkZJRyArIG9mZnNldCwgQklUKDMp LCAweDAzKTsNCj4gKwkJCX0NCj4gKwkJCWh3LT5jdXJzb3JbaV0uZGlydHkgPSBmYWxzZTsN Cj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCWlmIChody0+cW9zLmRpcnR5KSB7DQo+ICsJCWRj X3NldF9jbGVhcihodywgRENfUU9TX0NPTkZJRywgKGh3LT5xb3MuaGlnaF92YWx1ZSA8PCA0 KSB8DQo+ICsJCQkJCSBody0+cW9zLmxvd192YWx1ZSwgMHhGRik7DQo+ICsJCWh3LT5xb3Mu ZGlydHkgPSBmYWxzZTsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19kY19ody5oIGIvZHJpdmVycy9ncHUvZHJtL3Zl cmlzaWxpY29uL3ZzX2RjX2h3LmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgg MDAwMDAwMDAwMDAwLi5jZDAzNzcxOGVjZDUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZGNfaHcuaA0KPiBAQCAtMCwwICsxLDQ5 NiBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8NCj4gKy8q DQo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjMgVmVyaVNpbGljb24gSG9sZGluZ3MgQ28uLCBM dGQuDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfX1ZTX0RDX0hXX0hfXw0KPiArI2RlZmlu ZSBfX1ZTX0RDX0hXX0hfXw0KPiArDQo+ICsjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPg0K PiArDQo+ICsjZGVmaW5lIEFRX0lOVFJfQUNLTk9XTEVER0UJCQkJMHgwMDEwDQo+ICsjZGVm aW5lIEFRX0lOVFJfRU5CTAkJCQkJMHgwMDE0DQo+ICsjZGVmaW5lIERDX0hXX1JFVklTSU9O CQkJCQkweDAwMjQNCj4gKyNkZWZpbmUgRENfSFdfQ0hJUF9DSUQJCQkJCTB4MDAzMA0KPiAr DQo+ICsjZGVmaW5lIERDX1JFR19CQVNFCQkJCQkweDA4MDANCj4gKyNkZWZpbmUgRENfUkVH X1JBTkdFCQkJCQkweDIwMDANCj4gKyNkZWZpbmUgRENfU0VDX1JFR19PRkZTRVQJCQkJMHgx MDAwMDANCj4gKw0KPiArI2RlZmluZSBEQ19GUkFNRUJVRkZFUl9DT05GSUcJCQkJMHgxNTE4 DQo+ICsjZGVmaW5lIERDX0ZSQU1FQlVGRkVSX0NPTkZJR19FWAkJCTB4MWNjMA0KPiArI2Rl ZmluZSBEQ19GUkFNRUJVRkZFUl9TQ0FMRV9DT05GSUcJCQkweDE1MjANCj4gKyNkZWZpbmUg RENfRlJBTUVCVUZGRVJfVE9QX0xFRlQJCQkJMHgyNGQ4DQo+ICsjZGVmaW5lIERDX0ZSQU1F QlVGRkVSX0JPVFRPTV9SSUdIVAkJCTB4MjRlMA0KPiArI2RlZmluZSBEQ19GUkFNRUJVRkZF Ul9BRERSRVNTCQkJCTB4MTQwMA0KPiArI2RlZmluZSBEQ19GUkFNRUJVRkZFUl9VX0FERFJF U1MJCQkweDE1MzANCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfVl9BRERSRVNTCQkJMHgx NTM4DQo+ICsjZGVmaW5lIERDX0ZSQU1FQlVGRkVSX1NUUklERQkJCQkweDE0MDgNCj4gKyNk ZWZpbmUgRENfRlJBTUVCVUZGRVJfVV9TVFJJREUJCQkJMHgxODAwDQo+ICsjZGVmaW5lIERD X0ZSQU1FQlVGRkVSX1ZfU1RSSURFCQkJCTB4MTgwOA0KPiArI2RlZmluZSBEQ19GUkFNRUJV RkZFUl9TSVpFCQkJCTB4MTgxMA0KPiArI2RlZmluZSBEQ19GUkFNRUJVRkZFUl9TQ0FMRV9G QUNUT1JfWAkJCTB4MTgyOA0KPiArI2RlZmluZSBEQ19GUkFNRUJVRkZFUl9TQ0FMRV9GQUNU T1JfWQkJCTB4MTgzMA0KPiArI2RlZmluZSBEQ19GUkFNRUJVRkZFUl9IX0ZJTFRFUl9DT0VG X0lOREVYCQkweDE4MzgNCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfSF9GSUxURVJfQ09F Rl9EQVRBCQkweDFhMDANCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfVl9GSUxURVJfQ09F Rl9JTkRFWAkJMHgxYTA4DQo+ICsjZGVmaW5lIERDX0ZSQU1FQlVGRkVSX1ZfRklMVEVSX0NP RUZfREFUQQkJMHgxYTEwDQo+ICsjZGVmaW5lIERDX0ZSQU1FQlVGRkVSX0lOSVRfT0ZGU0VU CQkJMHgxYTIwDQo+ICsjZGVmaW5lIERDX0ZSQU1FQlVGRkVSX0NPTE9SX0tFWQkJCTB4MTUw OA0KPiArI2RlZmluZSBEQ19GUkFNRUJVRkZFUl9DT0xPUl9LRVlfSElHSAkJCTB4MTUxMA0K PiArI2RlZmluZSBEQ19GUkFNRUJVRkZFUl9DTEVBUl9WQUxVRQkJCTB4MWExOA0KPiArI2Rl ZmluZSBEQ19GUkFNRUJVRkZFUl9DT0xPUl9UQUJMRV9JTkRFWAkJMHgxODE4DQo+ICsjZGVm aW5lIERDX0ZSQU1FQlVGRkVSX0NPTE9SX1RBQkxFX0RBVEEJCQkweDE4MjANCj4gKyNkZWZp bmUgRENfRlJBTUVCVUZGRVJfQkdfQ09MT1IJCQkJMHgxNTI4DQo+ICsjZGVmaW5lIERDX0ZS QU1FQlVGRkVSX1JPSV9PUklHSU4JCQkweDFjYjANCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZG RVJfUk9JX1NJWkUJCQkJMHgxY2I4DQo+ICsjZGVmaW5lIERDX0ZSQU1FQlVGRkVSX1dBVEVS X01BUksJCQkweDFjZTgNCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfREVHQU1NQV9JTkRF WAkJCTB4MWQ4OA0KPiArI2RlZmluZSBEQ19GUkFNRUJVRkZFUl9ERUdBTU1BX0RBVEEJCQkw eDFkOTANCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfREVHQU1NQV9FWF9EQVRBCQkJMHgx ZDk4DQo+ICsjZGVmaW5lIERDX0ZSQU1FQlVGRkVSX1lVVlRPUkdCX0NPRUYwCQkJMHgxZGEw DQo+ICsjZGVmaW5lIERDX0ZSQU1FQlVGRkVSX1lVVlRPUkdCX0NPRUYxCQkJMHgxZGE4DQo+ ICsjZGVmaW5lIERDX0ZSQU1FQlVGRkVSX1lVVlRPUkdCX0NPRUYyCQkJMHgxZGIwDQo+ICsj ZGVmaW5lIERDX0ZSQU1FQlVGRkVSX1lVVlRPUkdCX0NPRUYzCQkJMHgxZGI4DQo+ICsjZGVm aW5lIERDX0ZSQU1FQlVGRkVSX1lVVlRPUkdCX0NPRUY0CQkJMHgxZTAwDQo+ICsjZGVmaW5l IERDX0ZSQU1FQlVGRkVSX1lVVlRPUkdCX0NPRUZEMAkJCTB4MWUwOA0KPiArI2RlZmluZSBE Q19GUkFNRUJVRkZFUl9ZVVZUT1JHQl9DT0VGRDEJCQkweDFlMTANCj4gKyNkZWZpbmUgRENf RlJBTUVCVUZGRVJfWVVWVE9SR0JfQ09FRkQyCQkJMHgxZTE4DQo+ICsjZGVmaW5lIERDX0ZS QU1FQlVGRkVSX1lfQ0xBTVBfQk9VTkQJCQkweDFlODgNCj4gKyNkZWZpbmUgRENfRlJBTUVC VUZGRVJfVVZfQ0xBTVBfQk9VTkQJCQkweDFlOTANCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZG RVJfUkdCVE9SR0JfQ09FRjAJCQkweDFlMjANCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJf UkdCVE9SR0JfQ09FRjEJCQkweDFlMjgNCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfUkdC VE9SR0JfQ09FRjIJCQkweDFlMzANCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfUkdCVE9S R0JfQ09FRjMJCQkweDFlMzgNCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfUkdCVE9SR0Jf Q09FRjQJCQkweDFlNDANCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfQkxFTkRfQ09ORklH CQkJMHgyNTEwDQo+ICsjZGVmaW5lIERDX0ZSQU1FQlVGRkVSX1NSQ19HTE9CQUxfQ09MT1IJ CQkweDI1MDANCj4gKyNkZWZpbmUgRENfRlJBTUVCVUZGRVJfRFNUX0dMT0JBTF9DT0xPUgkJ CTB4MjUwOA0KPiArDQo+ICsjZGVmaW5lIERDX09WRVJMQVlfQ09ORklHCQkJCTB4MTU0MA0K PiArI2RlZmluZSBEQ19PVkVSTEFZX0NPTkZJR19FWAkJCQkweDI1NDANCj4gKyNkZWZpbmUg RENfT1ZFUkxBWV9TQ0FMRV9DT05GSUcJCQkJMHgxYzAwDQo+ICsjZGVmaW5lIERDX09WRVJM QVlfQkxFTkRfQ09ORklHCQkJCTB4MTU4MA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX1RPUF9M RUZUCQkJCTB4MTY0MA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX0JPVFRPTV9SSUdIVAkJCQkw eDE2ODANCj4gKyNkZWZpbmUgRENfT1ZFUkxBWV9BRERSRVNTCQkJCTB4MTVjMA0KPiArI2Rl ZmluZSBEQ19PVkVSTEFZX1VfQUREUkVTUwkJCQkweDE4NDANCj4gKyNkZWZpbmUgRENfT1ZF UkxBWV9WX0FERFJFU1MJCQkJMHgxODgwDQo+ICsjZGVmaW5lIERDX09WRVJMQVlfU1RSSURF CQkJCTB4MTYwMA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX1VfU1RSSURFCQkJCTB4MThjMA0K PiArI2RlZmluZSBEQ19PVkVSTEFZX1ZfU1RSSURFCQkJCTB4MTkwMA0KPiArI2RlZmluZSBE Q19PVkVSTEFZX1NJWkUJCQkJCTB4MTdjMA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX1NDQUxF X0ZBQ1RPUl9YCQkJMHgxYTQwDQo+ICsjZGVmaW5lIERDX09WRVJMQVlfU0NBTEVfRkFDVE9S X1kJCQkweDFhODANCj4gKyNkZWZpbmUgRENfT1ZFUkxBWV9IX0ZJTFRFUl9DT0VGX0lOREVY CQkJMHgxYUMwDQo+ICsjZGVmaW5lIERDX09WRVJMQVlfSF9GSUxURVJfQ09FRl9EQVRBCQkJ MHgxYjAwDQo+ICsjZGVmaW5lIERDX09WRVJMQVlfVl9GSUxURVJfQ09FRl9JTkRFWAkJCTB4 MWI0MA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX1ZfRklMVEVSX0NPRUZfREFUQQkJCTB4MWI4 MA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX0lOSVRfT0ZGU0VUCQkJCTB4MWJDMA0KPiArI2Rl ZmluZSBEQ19PVkVSTEFZX0NPTE9SX0tFWQkJCQkweDE3NDANCj4gKyNkZWZpbmUgRENfT1ZF UkxBWV9DT0xPUl9LRVlfSElHSAkJCTB4MTc4MA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX0NM RUFSX1ZBTFVFCQkJCTB4MTk0MA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX0NPTE9SX1RBQkxF X0lOREVYCQkJMHgxOTgwDQo+ICsjZGVmaW5lIERDX09WRVJMQVlfQ09MT1JfVEFCTEVfREFU QQkJCTB4MTljMA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX1NSQ19HTE9CQUxfQ09MT1IJCQkw eDE2YzANCj4gKyNkZWZpbmUgRENfT1ZFUkxBWV9EU1RfR0xPQkFMX0NPTE9SCQkJMHgxNzAw DQo+ICsjZGVmaW5lIERDX09WRVJMQVlfUk9JX09SSUdJTgkJCQkweDFkMDANCj4gKyNkZWZp bmUgRENfT1ZFUkxBWV9ST0lfU0laRQkJCQkweDFkNDANCj4gKyNkZWZpbmUgRENfT1ZFUkxB WV9XQVRFUl9NQVJLCQkJCTB4MWRjMA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX0RFR0FNTUFf SU5ERVgJCQkweDIyMDANCj4gKyNkZWZpbmUgRENfT1ZFUkxBWV9ERUdBTU1BX0RBVEEJCQkJ MHgyMjQwDQo+ICsjZGVmaW5lIERDX09WRVJMQVlfREVHQU1NQV9FWF9EQVRBCQkJMHgyMjgw DQo+ICsjZGVmaW5lIERDX09WRVJMQVlfWVVWVE9SR0JfQ09FRjAJCQkweDFlYzANCj4gKyNk ZWZpbmUgRENfT1ZFUkxBWV9ZVVZUT1JHQl9DT0VGMQkJCTB4MWYwMA0KPiArI2RlZmluZSBE Q19PVkVSTEFZX1lVVlRPUkdCX0NPRUYyCQkJMHgxZjQwDQo+ICsjZGVmaW5lIERDX09WRVJM QVlfWVVWVE9SR0JfQ09FRjMJCQkweDFmODANCj4gKyNkZWZpbmUgRENfT1ZFUkxBWV9ZVVZU T1JHQl9DT0VGNAkJCTB4MWZjMA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX1lVVlRPUkdCX0NP RUZEMAkJCTB4MjAwMA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX1lVVlRPUkdCX0NPRUZEMQkJ CTB4MjA0MA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX1lVVlRPUkdCX0NPRUZEMgkJCTB4MjA4 MA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX1lfQ0xBTVBfQk9VTkQJCQkweDIyYzANCj4gKyNk ZWZpbmUgRENfT1ZFUkxBWV9VVl9DTEFNUF9CT1VORAkJCTB4MjMwMA0KPiArI2RlZmluZSBE Q19PVkVSTEFZX1JHQlRPUkdCX0NPRUYwCQkJMHgyMGMwDQo+ICsjZGVmaW5lIERDX09WRVJM QVlfUkdCVE9SR0JfQ09FRjEJCQkweDIxMDANCj4gKyNkZWZpbmUgRENfT1ZFUkxBWV9SR0JU T1JHQl9DT0VGMgkJCTB4MjE0MA0KPiArI2RlZmluZSBEQ19PVkVSTEFZX1JHQlRPUkdCX0NP RUYzCQkJMHgyMTgwDQo+ICsjZGVmaW5lIERDX09WRVJMQVlfUkdCVE9SR0JfQ09FRjQJCQkw eDIxYzANCj4gKw0KPiArI2RlZmluZSBEQ19DVVJTT1JfQ09ORklHCQkJCTB4MTQ2OA0KPiAr I2RlZmluZSBEQ19DVVJTT1JfQUREUkVTUwkJCQkweDE0NmMNCj4gKyNkZWZpbmUgRENfQ1VS U09SX0xPQ0FUSU9OCQkJCTB4MTQ3MA0KPiArI2RlZmluZSBEQ19DVVJTT1JfQkFDS0dST1VO RAkJCQkweDE0NzQNCj4gKyNkZWZpbmUgRENfQ1VSU09SX0ZPUkVHUk9VTkQJCQkJMHgxNDc4 DQo+ICsjZGVmaW5lIERDX0NVUlNPUl9DTEtfR0FUSU5HCQkJCTB4MTQ4NA0KPiArI2RlZmlu ZSBEQ19DVVJTT1JfQ09ORklHX0VYCQkJCTB4MjRlOA0KPiArI2RlZmluZSBEQ19DVVJTT1Jf T0ZGU0VUCQkJCTB4MTA4MA0KPiArDQo+ICsjZGVmaW5lIERDX0RJU1BMQVlfRElUSEVSX0NP TkZJRwkJCTB4MTQxMA0KPiArI2RlZmluZSBEQ19ESVNQTEFZX1BBTkVMX0NPTkZJRwkJCQkw eDE0MTgNCj4gKyNkZWZpbmUgRENfRElTUExBWV9QQU5FTF9DT05GSUdfRVgJCQkweDI1MTgN Cj4gKyNkZWZpbmUgRENfRElTUExBWV9ESVRIRVJfVEFCTEVfTE9XCQkJMHgxNDIwDQo+ICsj ZGVmaW5lIERDX0RJU1BMQVlfRElUSEVSX1RBQkxFX0hJR0gJCQkweDE0MjgNCj4gKyNkZWZp bmUgRENfRElTUExBWV9ICQkJCQkweDE0MzANCj4gKyNkZWZpbmUgRENfRElTUExBWV9IX1NZ TkMJCQkJMHgxNDM4DQo+ICsjZGVmaW5lIERDX0RJU1BMQVlfVgkJCQkJMHgxNDQwDQo+ICsj ZGVmaW5lIERDX0RJU1BMQVlfVl9TWU5DCQkJCTB4MTQ0OA0KPiArI2RlZmluZSBEQ19ESVNQ TEFZX0NVUlJFTlRfTE9DQVRJT04JCQkweDE0NTANCj4gKyNkZWZpbmUgRENfRElTUExBWV9H QU1NQV9JTkRFWAkJCQkweDE0NTgNCj4gKyNkZWZpbmUgRENfRElTUExBWV9HQU1NQV9EQVRB CQkJCTB4MTQ2MA0KPiArI2RlZmluZSBEQ19ESVNQTEFZX0lOVAkJCQkJMHgxNDdjDQo+ICsj ZGVmaW5lIERDX0RJU1BMQVlfSU5UX0VOQUJMRQkJCQkweDE0ODANCj4gKyNkZWZpbmUgRENf RElTUExBWV9EQklfQ09ORklHCQkJCTB4MTQ4OA0KPiArI2RlZmluZSBEQ19ESVNQTEFZX0dF TkVSQUxfQ09ORklHCQkJMHgxNGIwDQo+ICsjZGVmaW5lIERDX0RJU1BMQVlfRFBJX0NPTkZJ RwkJCQkweDE0YjgNCj4gKyNkZWZpbmUgRENfRElTUExBWV9QQU5FTF9TVEFSVAkJCQkweDFj Y2MNCj4gKyNkZWZpbmUgRENfRElTUExBWV9ERUJVR19DT1VOVEVSX1NFTEVDVAkJCTB4MTRk MA0KPiArI2RlZmluZSBEQ19ESVNQTEFZX0RFQlVHX0NPVU5URVJfVkFMVUUJCQkweDE0ZDgN Cj4gKyNkZWZpbmUgRENfRElTUExBWV9EUF9DT05GSUcJCQkJMHgxY2QwDQo+ICsjZGVmaW5l IERDX0RJU1BMQVlfR0FNTUFfRVhfSU5ERVgJCQkweDFjZjANCj4gKyNkZWZpbmUgRENfRElT UExBWV9HQU1NQV9FWF9EQVRBCQkJMHgxY2Y4DQo+ICsjZGVmaW5lIERDX0RJU1BMQVlfR0FN TUFfRVhfT05FX0RBVEEJCQkweDFkODANCj4gKyNkZWZpbmUgRENfRElTUExBWV9SR0JUT1lV Vl9DT0VGMAkJCTB4MWU0OA0KPiArI2RlZmluZSBEQ19ESVNQTEFZX1JHQlRPWVVWX0NPRUYx CQkJMHgxZTUwDQo+ICsjZGVmaW5lIERDX0RJU1BMQVlfUkdCVE9ZVVZfQ09FRjIJCQkweDFl NTgNCj4gKyNkZWZpbmUgRENfRElTUExBWV9SR0JUT1lVVl9DT0VGMwkJCTB4MWU2MA0KPiAr I2RlZmluZSBEQ19ESVNQTEFZX1JHQlRPWVVWX0NPRUY0CQkJMHgxZTY4DQo+ICsjZGVmaW5l IERDX0RJU1BMQVlfUkdCVE9ZVVZfQ09FRkQwCQkJMHgxZTcwDQo+ICsjZGVmaW5lIERDX0RJ U1BMQVlfUkdCVE9ZVVZfQ09FRkQxCQkJMHgxZTc4DQo+ICsjZGVmaW5lIERDX0RJU1BMQVlf UkdCVE9ZVVZfQ09FRkQyCQkJMHgxZTgwDQo+ICsNCj4gKyNkZWZpbmUgRENfQ0xLX0dBVFRJ TkcJCQkJCTB4MWEyOA0KPiArI2RlZmluZSBEQ19RT1NfQ09ORklHCQkJCQkweDFhMzgNCj4g Kw0KPiArI2RlZmluZSBEQ19UUkFOU1BBUkVOQ1lfT1BBUVVFCQkJCTB4MDANCj4gKyNkZWZp bmUgRENfVFJBTlNQQVJFTkNZX0tFWQkJCQkweDAyDQo+ICsjZGVmaW5lIERDX0RJU1BMQVlf RElUSEVSVEFCTEVfTE9XCQkJMHg3YjQ4ZjNjMA0KPiArI2RlZmluZSBEQ19ESVNQTEFZX0RJ VEhFUlRBQkxFX0hJR0gJCQkweDU5NmFkMWUyDQo+ICsNCj4gKyNkZWZpbmUgR0FNTUFfU0la RQkJCQkJMjU2DQo+ICsjZGVmaW5lIEdBTU1BX0VYX1NJWkUJCQkJCTMwMA0KPiArI2RlZmlu ZSBERUdBTU1BX1NJWkUJCQkJCTI2MA0KPiArDQo+ICsjZGVmaW5lIFJHQl9UT19SR0JfVEFC TEVfU0laRQkJCQk5DQo+ICsjZGVmaW5lIFlVVl9UT19SR0JfVEFCTEVfU0laRQkJCQkxNg0K PiArI2RlZmluZSBSR0JfVE9fWVVWX1RBQkxFX1NJWkUJCQkJMTINCj4gKw0KPiArI2RlZmlu ZSBEQ19MQVlFUl9OVU0JCQkJCTYNCj4gKyNkZWZpbmUgRENfRElTUExBWV9OVU0JCQkJCTIN Cj4gKyNkZWZpbmUgRENfQ1VSU09SX05VTQkJCQkJMg0KPiArDQo+ICtlbnVtIGRjX2NoaXBf cmV2IHsNCj4gKwlEQ19SRVZfMCwvKiBGb3IgSFdfUkVWXzU3MjAsSFdfUkVWXzU3MjFfMzEx ICovDQo+ICsJRENfUkVWXzEsLyogRm9yIEhXX1JFVl81NzIxXzMwQiAqLw0KPiArCURDX1JF Vl8yLC8qIEZvciBIV19SRVZfNTcyMV8zMTAgKi8NCj4gK307DQo+ICsNCj4gK2VudW0gZGNf aHdfcGxhbmVfaWQgew0KPiArCVBSSU1BUllfUExBTkVfMCwNCj4gKwlPVkVSTEFZX1BMQU5F XzAsDQo+ICsJT1ZFUkxBWV9QTEFORV8xLA0KPiArCVBSSU1BUllfUExBTkVfMSwNCj4gKwlP VkVSTEFZX1BMQU5FXzIsDQo+ICsJT1ZFUkxBWV9QTEFORV8zLA0KPiArCUNVUlNPUl9QTEFO RV8wLA0KPiArCUNVUlNPUl9QTEFORV8xLA0KPiArCVBMQU5FX05VTQ0KPiArfTsNCj4gKw0K PiArZW51bSBkY19od19jb2xvcl9mb3JtYXQgew0KPiArCUZPUk1BVF9YNFI0RzRCNCwvLzAN Cj4gKwlGT1JNQVRfQTRSNEc0QjQsLy8xDQo+ICsJRk9STUFUX1gxUjVHNUI1LC8vMg0KPiAr CUZPUk1BVF9BMVI1RzVCNSwvLzMNCj4gKwlGT1JNQVRfUjVHNkI1LC8vNA0KPiArCUZPUk1B VF9YOFI4RzhCOCwvLzUNCj4gKwlGT1JNQVRfQThSOEc4QjgsLy82DQo+ICsJRk9STUFUX1lV WTIsLy83DQo+ICsJRk9STUFUX1VZVlksLy84DQo+ICsJRk9STUFUX0lOREVYOCwvLzkNCj4g KwlGT1JNQVRfTU9OT0NIUk9NRSwvLzEwDQo+ICsJRk9STUFUX1lWMTIgPSAweGYsDQo+ICsJ Rk9STUFUX0E4LC8vMTYNCj4gKwlGT1JNQVRfTlYxMiwvLzE3DQo+ICsJRk9STUFUX05WMTYs Ly8xOA0KPiArCUZPUk1BVF9SRzE2LC8vMTkNCj4gKwlGT1JNQVRfUjgsLy8yMA0KPiArCUZP Uk1BVF9OVjEyXzEwQklULC8vMjENCj4gKwlGT1JNQVRfQTJSMTBHMTBCMTAsLy8yMg0KPiAr CUZPUk1BVF9OVjE2XzEwQklULC8vMjMNCj4gKwlGT1JNQVRfSU5ERVgxLC8vMjQNCj4gKwlG T1JNQVRfSU5ERVgyLC8vMjUNCj4gKwlGT1JNQVRfSU5ERVg0LC8vMjYNCj4gKwlGT1JNQVRf UDAxMCwvLzI3DQo+ICsJRk9STUFUX1lVVjQ0NCwvLzI4DQo+ICsJRk9STUFUX1lVVjQ0NF8x MEJJVCwvLzI5DQo+ICt9Ow0KPiArDQo+ICtlbnVtIGRjX2h3X3l1dl9jb2xvcl9zcGFjZSB7 DQo+ICsJQ09MT1JfU1BBQ0VfNjAxID0gMCwNCj4gKwlDT0xPUl9TUEFDRV83MDkgPSAxLA0K PiArCUNPTE9SX1NQQUNFXzIwMjAgPSAzLA0KPiArfTsNCj4gKw0KPiArZW51bSBkY19od19y b3RhdGlvbiB7DQo+ICsJUk9UXzAgPSAwLA0KPiArCVJPVF85MCA9IDQsDQo+ICsJUk9UXzE4 MCA9IDUsDQo+ICsJUk9UXzI3MCA9IDYsDQo+ICsJRkxJUF9YID0gMSwNCj4gKwlGTElQX1kg PSAyLA0KPiArCUZMSVBfWFkgPSAzLA0KPiArfTsNCj4gKw0KPiArZW51bSBkY19od19zd2l6 emxlIHsNCj4gKwlTV0laWkxFX0FSR0IgPSAwLA0KPiArCVNXSVpaTEVfUkdCQSwNCj4gKwlT V0laWkxFX0FCR1IsDQo+ICsJU1dJWlpMRV9CR1JBLA0KPiArfTsNCj4gKw0KPiArZW51bSBk Y19od19vdXQgew0KPiArCU9VVF9EUEksDQo+ICsJT1VUX0RQLA0KPiArfTsNCj4gKw0KPiAr ZW51bSBkY19od19jdXJzb3Jfc2l6ZSB7DQo+ICsJQ1VSU09SX1NJWkVfMzJYMzIgPSAwLA0K PiArCUNVUlNPUl9TSVpFXzY0WDY0LA0KPiArfTsNCj4gKw0KPiArZW51bSBkY19od19ibGVu ZF9tb2RlIHsNCj4gKwkvKiBvdXQucmdiID0gcGxhbmVfYWxwaGEgKiBmZy5yZ2IgKw0KPiAr CSAqCQkoMSAtIChwbGFuZV9hbHBoYSAqIGZnLmFscGhhKSkgKiBiZy5yZ2INCj4gKwkgKi8N Cj4gKwlCTEVORF9QUkVNVUxUSSwNCj4gKwkvKiBvdXQucmdiID0gcGxhbmVfYWxwaGEgKiBm Zy5hbHBoYSAqIGZnLnJnYiArDQo+ICsJICoJCSgxIC0gKHBsYW5lX2FscGhhICogZmcuYWxw aGEpKSAqIGJnLnJnYg0KPiArCSAqLw0KPiArCUJMRU5EX0NPVkVSQUdFLA0KPiArCS8qIG91 dC5yZ2IgPSBwbGFuZV9hbHBoYSAqIGZnLnJnYiArDQo+ICsJICoJCSgxIC0gcGxhbmVfYWxw aGEpICogYmcucmdiDQo+ICsJICovDQo+ICsJQkxFTkRfUElYRUxfTk9ORSwNCj4gK307DQo+ ICsNCj4gK3N0cnVjdCBkY19od19wbGFuZV9yZWcgew0KPiArCXUzMiB5X2FkZHJlc3M7DQo+ ICsJdTMyIHVfYWRkcmVzczsNCj4gKwl1MzIgdl9hZGRyZXNzOw0KPiArCXUzMiB5X3N0cmlk ZTsNCj4gKwl1MzIgdV9zdHJpZGU7DQo+ICsJdTMyIHZfc3RyaWRlOw0KPiArCXUzMiBzaXpl Ow0KPiArCXUzMiB0b3BfbGVmdDsNCj4gKwl1MzIgYm90dG9tX3JpZ2h0Ow0KPiArCXUzMiBz Y2FsZV9mYWN0b3JfeDsNCj4gKwl1MzIgc2NhbGVfZmFjdG9yX3k7DQo+ICsJdTMyIGhfZmls dGVyX2NvZWZfaW5kZXg7DQo+ICsJdTMyIGhfZmlsdGVyX2NvZWZfZGF0YTsNCj4gKwl1MzIg dl9maWx0ZXJfY29lZl9pbmRleDsNCj4gKwl1MzIgdl9maWx0ZXJfY29lZl9kYXRhOw0KPiAr CXUzMiBpbml0X29mZnNldDsNCj4gKwl1MzIgY29sb3Jfa2V5Ow0KPiArCXUzMiBjb2xvcl9r ZXlfaGlnaDsNCj4gKwl1MzIgY2xlYXJfdmFsdWU7DQo+ICsJdTMyIGNvbG9yX3RhYmxlX2lu ZGV4Ow0KPiArCXUzMiBjb2xvcl90YWJsZV9kYXRhOw0KPiArCXUzMiBzY2FsZV9jb25maWc7 DQo+ICsJdTMyIHdhdGVyX21hcms7DQo+ICsJdTMyIGRlZ2FtbWFfaW5kZXg7DQo+ICsJdTMy IGRlZ2FtbWFfZGF0YTsNCj4gKwl1MzIgZGVnYW1tYV9leF9kYXRhOw0KPiArCXUzMiBzcmNf Z2xvYmFsX2NvbG9yOw0KPiArCXUzMiBkc3RfZ2xvYmFsX2NvbG9yOw0KPiArCXUzMiBibGVu ZF9jb25maWc7DQo+ICsJdTMyIHJvaV9vcmlnaW47DQo+ICsJdTMyIHJvaV9zaXplOw0KPiAr CXUzMiB5dXZfdG9fcmdiX2NvZWYwOw0KPiArCXUzMiB5dXZfdG9fcmdiX2NvZWYxOw0KPiAr CXUzMiB5dXZfdG9fcmdiX2NvZWYyOw0KPiArCXUzMiB5dXZfdG9fcmdiX2NvZWYzOw0KPiAr CXUzMiB5dXZfdG9fcmdiX2NvZWY0Ow0KPiArCXUzMiB5dXZfdG9fcmdiX2NvZWZkMDsNCj4g Kwl1MzIgeXV2X3RvX3JnYl9jb2VmZDE7DQo+ICsJdTMyIHl1dl90b19yZ2JfY29lZmQyOw0K PiArCXUzMiB5X2NsYW1wX2JvdW5kOw0KPiArCXUzMiB1dl9jbGFtcF9ib3VuZDsNCj4gKwl1 MzIgcmdiX3RvX3JnYl9jb2VmMDsNCj4gKwl1MzIgcmdiX3RvX3JnYl9jb2VmMTsNCj4gKwl1 MzIgcmdiX3RvX3JnYl9jb2VmMjsNCj4gKwl1MzIgcmdiX3RvX3JnYl9jb2VmMzsNCj4gKwl1 MzIgcmdiX3RvX3JnYl9jb2VmNDsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBkY19od19mYiB7 DQo+ICsJdTMyIHlfYWRkcmVzczsNCj4gKwl1MzIgdV9hZGRyZXNzOw0KPiArCXUzMiB2X2Fk ZHJlc3M7DQo+ICsJdTMyIGNsZWFyX3ZhbHVlOw0KPiArCXUzMiB3YXRlcl9tYXJrOw0KPiAr CXUxNiB5X3N0cmlkZTsNCj4gKwl1MTYgdV9zdHJpZGU7DQo+ICsJdTE2IHZfc3RyaWRlOw0K PiArCXUxNiB3aWR0aDsNCj4gKwl1MTYgaGVpZ2h0Ow0KPiArCXU4CWZvcm1hdDsNCj4gKwl1 OAl0aWxlX21vZGU7DQo+ICsJdTgJcm90YXRpb247DQo+ICsJdTgJeXV2X2NvbG9yX3NwYWNl Ow0KPiArCXU4CXN3aXp6bGU7DQo+ICsJdTgJdXZfc3dpenpsZTsNCj4gKwl1OAl6cG9zOw0K PiArCXU4CWRpc3BsYXlfaWQ7DQo+ICsJYm9vbAljbGVhcl9lbmFibGU7DQo+ICsJYm9vbAlk ZWNfZW5hYmxlOw0KPiArCWJvb2wJZW5hYmxlOw0KPiArCWJvb2wJZGlydHk7DQo+ICt9Ow0K PiArDQo+ICtzdHJ1Y3QgZGNfaHdfc2NhbGUgew0KPiArCXUzMiBzY2FsZV9mYWN0b3JfeDsN Cj4gKwl1MzIgc2NhbGVfZmFjdG9yX3k7DQo+ICsJYm9vbAllbmFibGU7DQo+ICsJYm9vbAlk aXJ0eTsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBkY19od19wb3NpdGlvbiB7DQo+ICsJdTE2 IHN0YXJ0X3g7DQo+ICsJdTE2IHN0YXJ0X3k7DQo+ICsJdTE2IGVuZF94Ow0KPiArCXUxNiBl bmRfeTsNCj4gKwlib29sCWRpcnR5Ow0KPiArfTsNCj4gKw0KPiArc3RydWN0IGRjX2h3X2Js ZW5kIHsNCj4gKwl1OAlhbHBoYTsNCj4gKwl1OAlibGVuZF9tb2RlOw0KPiArCWJvb2wJZGly dHk7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgZGNfaHdfY29sb3JrZXkgew0KPiArCXUzMiBj b2xvcmtleTsNCj4gKwl1MzIgY29sb3JrZXlfaGlnaDsNCj4gKwl1OAl0cmFuc3BhcmVuY3k7 DQo+ICsJYm9vbCBkaXJ0eTsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBkY19od19yb2kgew0K PiArCXUxNiB4Ow0KPiArCXUxNiB5Ow0KPiArCXUxNiB3aWR0aDsNCj4gKwl1MTYgaGVpZ2h0 Ow0KPiArCWJvb2wgZW5hYmxlOw0KPiArCWJvb2wgZGlydHk7DQo+ICt9Ow0KPiArDQo+ICtz dHJ1Y3QgZGNfaHdfY3Vyc29yIHsNCj4gKwl1MzIgYWRkcmVzczsNCj4gKwl1MTYgeDsNCj4g Kwl1MTYgeTsNCj4gKwl1MTYgaG90X3g7DQo+ICsJdTE2IGhvdF95Ow0KPiArCXU4CXNpemU7 DQo+ICsJdTgJZGlzcGxheV9pZDsNCj4gKwlib29sCWVuYWJsZTsNCj4gKwlib29sCWRpcnR5 Ow0KPiArfTsNCj4gKw0KPiArc3RydWN0IGRjX2h3X2Rpc3BsYXkgew0KPiArCXUzMiBidXNf Zm9ybWF0Ow0KPiArCXUxNiBoX2FjdGl2ZTsNCj4gKwl1MTYgaF90b3RhbDsNCj4gKwl1MTYg aF9zeW5jX3N0YXJ0Ow0KPiArCXUxNiBoX3N5bmNfZW5kOw0KPiArCXUxNiB2X2FjdGl2ZTsN Cj4gKwl1MTYgdl90b3RhbDsNCj4gKwl1MTYgdl9zeW5jX3N0YXJ0Ow0KPiArCXUxNiB2X3N5 bmNfZW5kOw0KPiArCXUxNiBzeW5jX21vZGU7DQo+ICsJdTMyIGJnX2NvbG9yOw0KPiArCXU4 CWlkOw0KPiArCWJvb2wJaF9zeW5jX3BvbGFyaXR5Ow0KPiArCWJvb2wJdl9zeW5jX3BvbGFy aXR5Ow0KPiArCWJvb2wJZW5hYmxlOw0KPiArCWJvb2wJc3luY19lbmFibGU7DQo+ICsJYm9v bAlkaXRoZXJfZW5hYmxlOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IGRjX2h3X2dhbW1hIHsN Cj4gKwl1MTYgZ2FtbWFbR0FNTUFfRVhfU0laRV1bM107DQo+ICsJYm9vbAllbmFibGU7DQo+ ICsJYm9vbAlkaXJ0eTsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBkY19od19kZWdhbW1hIHsN Cj4gKwl1MTYgZGVnYW1tYVtERUdBTU1BX1NJWkVdWzNdOw0KPiArCXUzMiBtb2RlOw0KPiAr CWJvb2wJZGlydHk7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgZGNfaHdfcGxhbmUgew0KPiAr CXN0cnVjdCBkY19od19mYgkJCWZiOw0KPiArCXN0cnVjdCBkY19od19wb3NpdGlvbglwb3M7 DQo+ICsJc3RydWN0IGRjX2h3X3NjYWxlCQlzY2FsZTsNCj4gKwlzdHJ1Y3QgZGNfaHdfYmxl bmQJCWJsZW5kOw0KPiArCXN0cnVjdCBkY19od19yb2kJCXJvaTsNCj4gKwlzdHJ1Y3QgZGNf aHdfY29sb3JrZXkJY29sb3JrZXk7DQo+ICsJc3RydWN0IGRjX2h3X2RlZ2FtbWEJZGVnYW1t YTsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBkY19od19xb3Mgew0KPiArCXU4CSAgbG93X3Zh bHVlOw0KPiArCXU4CSAgaGlnaF92YWx1ZTsNCj4gKwlib29sICBkaXJ0eTsNCj4gK307DQo+ ICsNCj4gK3N0cnVjdCBkY19od19yZWFkIHsNCj4gKwl1MzIJCQlyZWc7DQo+ICsJdTMyCQkJ dmFsdWU7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgZGNfaHc7DQo+ICtzdHJ1Y3QgZGNfaHdf ZnVuY3Mgew0KPiArCXZvaWQgKCpnYW1tYSkoc3RydWN0IGRjX2h3ICpodyk7DQo+ICsJdm9p ZCAoKnBsYW5lKShzdHJ1Y3QgZGNfaHcgKmh3KTsNCj4gKwl2b2lkICgqZGlzcGxheSkoc3Ry dWN0IGRjX2h3ICpodywgc3RydWN0IGRjX2h3X2Rpc3BsYXkgKmRpc3BsYXkpOw0KPiArfTsN Cj4gKw0KPiArc3RydWN0IGRjX2h3IHsNCj4gKwllbnVtIGRjX2NoaXBfcmV2IHJldjsNCj4g KwllbnVtIGRjX2h3X291dAkJb3V0W0RDX0RJU1BMQVlfTlVNXTsNCj4gKwl2b2lkCQkJKmhp X2Jhc2U7DQo+ICsJdm9pZAkJCSpyZWdfYmFzZTsNCj4gKw0KPiArCXN0cnVjdCBkY19od19k aXNwbGF5IGRpc3BsYXlbRENfRElTUExBWV9OVU1dOw0KPiArCXN0cnVjdCBkY19od19nYW1t YQkgZ2FtbWFbRENfRElTUExBWV9OVU1dOw0KPiArCXN0cnVjdCBkY19od19wbGFuZQkgcGxh bmVbRENfTEFZRVJfTlVNXTsNCj4gKwlzdHJ1Y3QgZGNfaHdfY3Vyc29yICBjdXJzb3JbRENf Q1VSU09SX05VTV07DQo+ICsJc3RydWN0IGRjX2h3X3FvcwkgcW9zOw0KPiArCXN0cnVjdCBk Y19od19mdW5jcwkgKmZ1bmM7DQo+ICsJc3RydWN0IHZzX2RjX2luZm8JICppbmZvOw0KPiAr fTsNCj4gKw0KPiAraW50IGRjX2h3X2luaXQoc3RydWN0IGRjX2h3ICpodyk7DQo+ICt2b2lk IGRjX2h3X2RlaW5pdChzdHJ1Y3QgZGNfaHcgKmh3KTsNCj4gK3ZvaWQgZGNfaHdfdXBkYXRl X3BsYW5lKHN0cnVjdCBkY19odyAqaHcsIHU4IGlkLA0KPiArCQkJc3RydWN0IGRjX2h3X2Zi ICpmYiwgc3RydWN0IGRjX2h3X3NjYWxlICpzY2FsZSwNCj4gKwkJCXN0cnVjdCBkY19od19w b3NpdGlvbiAqcG9zLCBzdHJ1Y3QgZGNfaHdfYmxlbmQgKmJsZW5kKTsNCj4gK3ZvaWQgZGNf aHdfdXBkYXRlX2RlZ2FtbWEoc3RydWN0IGRjX2h3ICpodywgdTggaWQsIHUzMiBtb2RlKTsN Cj4gK3ZvaWQgZGNfaHdfdXBkYXRlX3JvaShzdHJ1Y3QgZGNfaHcgKmh3LCB1OCBpZCwgc3Ry dWN0IGRjX2h3X3JvaSAqcm9pKTsNCj4gK3ZvaWQgZGNfaHdfdXBkYXRlX2NvbG9ya2V5KHN0 cnVjdCBkY19odyAqaHcsIHU4IGlkLA0KPiArCQkJICAgc3RydWN0IGRjX2h3X2NvbG9ya2V5 ICpjb2xvcmtleSk7DQo+ICt2b2lkIGRjX2h3X3VwZGF0ZV9xb3Moc3RydWN0IGRjX2h3ICpo dywgc3RydWN0IGRjX2h3X3FvcyAqcW9zKTsNCj4gK3ZvaWQgZGNfaHdfdXBkYXRlX2N1cnNv cihzdHJ1Y3QgZGNfaHcgKmh3LCB1OCBpZCwgc3RydWN0IGRjX2h3X2N1cnNvciAqY3Vyc29y KTsNCj4gK3ZvaWQgZGNfaHdfdXBkYXRlX2dhbW1hKHN0cnVjdCBkY19odyAqaHcsIHU4IGlk LCB1MTYgaW5kZXgsDQo+ICsJCQl1MTYgciwgdTE2IGcsIHUxNiBiKTsNCj4gK3ZvaWQgZGNf aHdfZW5hYmxlX2dhbW1hKHN0cnVjdCBkY19odyAqaHcsIHU4IGlkLCBib29sIGVuYWJsZSk7 DQo+ICt2b2lkIGRjX2h3X3NldHVwX2Rpc3BsYXkoc3RydWN0IGRjX2h3ICpodywgc3RydWN0 IGRjX2h3X2Rpc3BsYXkgKmRpc3BsYXkpOw0KPiArdm9pZCBkY19od19lbmFibGVfaW50ZXJy dXB0KHN0cnVjdCBkY19odyAqaHcsIGJvb2wgZW5hYmxlKTsNCj4gK3UzMiBkY19od19nZXRf aW50ZXJydXB0KHN0cnVjdCBkY19odyAqaHcpOw0KPiArYm9vbCBkY19od19jaGVja191bmRl cmZsb3coc3RydWN0IGRjX2h3ICpodyk7DQo+ICt2b2lkIGRjX2h3X2VuYWJsZV9zaGFkb3df cmVnaXN0ZXIoc3RydWN0IGRjX2h3ICpodywgYm9vbCBlbmFibGUpOw0KPiArdm9pZCBkY19o d19zZXRfb3V0KHN0cnVjdCBkY19odyAqaHcsIGVudW0gZGNfaHdfb3V0IG91dCwgdTggaWQp Ow0KPiArdm9pZCBkY19od19jb21taXQoc3RydWN0IGRjX2h3ICpodyk7DQo+ICsNCj4gKyNl bmRpZiAvKiBfX1ZTX0RDX0hXX0hfXyAqLw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3ZlcmlzaWxpY29uL3ZzX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29u L3ZzX2Rydi5jDQo+IGluZGV4IGQ4NGFhY2Q3NTFiYy4uYzI4YmZkNzRmZmM5IDEwMDY0NA0K PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZHJ2LmMNCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2Rydi5jDQo+IEBAIC0zMiw2ICszMiw3 IEBADQo+ICAgI2luY2x1ZGUgInZzX2Rydi5oIg0KPiAgICNpbmNsdWRlICJ2c19mYi5oIg0K PiAgICNpbmNsdWRlICJ2c19nZW0uaCINCj4gKyNpbmNsdWRlICJ2c19kYy5oIg0KPiAgIA0K PiAgICNkZWZpbmUgRFJWX05BTUUJInN0YXJmaXZlIg0KPiAgICNkZWZpbmUgRFJWX0RFU0MJ IlN0YXJmaXZlIERSTSBkcml2ZXIiDQo+IEBAIC0xODEsNiArMTgyLDcgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBjb21wb25lbnRfbWFzdGVyX29wcyB2c19kcm1fb3BzID0gew0KPiAgIH07 DQo+ICAgDQo+ICAgc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRybV9zdWJfZHJp dmVyc1tdID0gew0KPiArCSZkY19wbGF0Zm9ybV9kcml2ZXIsDQo+ICAgfTsNCj4gICANCj4g ICAjZGVmaW5lIE5VTV9EUk1fRFJJVkVSUyBcDQoNCi0tIA0KVGhvbWFzIFppbW1lcm1hbm4N CkdyYXBoaWNzIERyaXZlciBEZXZlbG9wZXINClNVU0UgU29mdHdhcmUgU29sdXRpb25zIEdl cm1hbnkgR21iSA0KRnJhbmtlbnN0cmFzc2UgMTQ2LCA5MDQ2MSBOdWVybmJlcmcsIEdlcm1h bnkNCkdGOiBJdm8gVG90ZXYsIEFuZHJldyBNeWVycywgQW5kcmV3IE1jRG9uYWxkLCBCb3Vk aWVuIE1vZXJtYW4NCkhSQiAzNjgwOSAoQUcgTnVlcm5iZXJnKQ0K --------------dQYkcu7bU4aAU3eO5xIjN0JF-- --------------SE18W9M4SEQEye607HhI3HOu 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+AFAmSezFUFAwAAAAAACgkQlh/E3EQov+Bb 9A/+JoIkz1IFgqmiw20dUr6JipF2kbG9qjY2t7Fy2Il1RBkmYnlRthLui0mPgDvHf5ZxaIrJsHlI syIFsHegNJs2BBZy1TPBquPKADUl+283goHD8IXCs7G9/xh/P+fABkMc2NhyYSD8lANEbfw5Kf3h dGZRrwyC9H70KNstCZr6MmUD/3KJguIDSVdjLHv1WsZKU1okSKqCxrWpNKPdPHTEXAFaLnHrccSV 2xkG7JaET5J0yLj8yFPpw5RPFArDPOi2tt6jfSx71H1NwlV9aL9c9u7wC93ihIGlarXw0pGtQ1Vz LKdoheJX+APJLkkFFh3OgsICZNZt6oLmtyT5F3CQarM43e1QL6tpmZf4fqL4Vq16LhmT7YU5GH6D pPVfo2Pu4dvKeZOskHmzUMeLFuwcI4AqjU02tf4pbpZA8Rtx96eV+8BThV/Kh92EezGseHO2gk82 KWFrPIzJT1Wamj4vjVDUDFG2ggK+6deeVLhT4bQblK2lryf8HLmpUIaMXoW2Tv7RR83hb8C5u0Yy 7n7SaxK9nobrTDxT8do8KL7qkoF1vd/34pnCxHpblV7G2b5M0GmiuWEnUgyoikc40+O5xFN/uJGM NcPXhRh9/K8PrKXB8HHKFy7XChgsP4IHlK+QGbho5jL390NFFCpliMpHID+fPVBNywImYjciW7Ef Tdo= =xCJh -----END PGP SIGNATURE----- --------------SE18W9M4SEQEye607HhI3HOu--