From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 97209 invoked by alias); 31 Jan 2020 15:23:40 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 97199 invoked by uid 89); 31 Jan 2020 15:23:39 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-21.0 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,KAM_LOTSOFHASH,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS,UNPARSEABLE_RELAY autolearn=ham version=3.3.1 spammy= X-HELO: EUR05-VI1-obe.outbound.protection.outlook.com Received: from mail-vi1eur05on2087.outbound.protection.outlook.com (HELO EUR05-VI1-obe.outbound.protection.outlook.com) (40.107.21.87) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 31 Jan 2020 15:23:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZmWIHTGbshYZtdbfjkq4ewrnvsHJt7d7Jn5AMHcXMxU=; b=Sk4FFP6gJQyOmZA2usIX67LgeIW10Sdw7TPB/r8xgtk0DyLaNDmWVPD4ckPQUWDXiiGrcQPmfoyMoD59yuYvOEVz4HT2b9AK63BmmbP1SKrmkj0VHYyq+e/asO1bPLMg/DOJ4OBUo+1xzvq2moaOiLNDoTQI3pEyh3SO54TAw2c= Received: from AM6PR08CA0018.eurprd08.prod.outlook.com (2603:10a6:20b:b2::30) by VI1PR0802MB2319.eurprd08.prod.outlook.com (2603:10a6:800:a0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2686.27; Fri, 31 Jan 2020 15:23:32 +0000 Received: from AM5EUR03FT061.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e08::204) by AM6PR08CA0018.outlook.office365.com (2603:10a6:20b:b2::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2665.22 via Frontend Transport; Fri, 31 Jan 2020 15:23:32 +0000 Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT061.mail.protection.outlook.com (10.152.16.247) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2665.18 via Frontend Transport; Fri, 31 Jan 2020 15:23:32 +0000 Received: ("Tessian outbound 62d9cfe08e54:v42"); Fri, 31 Jan 2020 15:23:32 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 4418ee4211ccfedb X-CR-MTA-TID: 64aa7808 Received: from fe20a045d192.3 by 64aa7808-outbound-1.mta.getcheckrecipient.com id A1BB688C-A81B-43E2-A839-BC327D5F4D63.1; Fri, 31 Jan 2020 15:23:25 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id fe20a045d192.3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 31 Jan 2020 15:23:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BTHT3XpUci0OEeJWZ+gEjki4Yn4AAqbjrIDJC9alfNocukc3/uHDNhe2m8zpAp8LTb44q3Lr+Wsw/wd0BZw0hl0O1dROecPYkCep9c8dwKtb2yyAnyYz1eFCHiZa5hnA7tzNCJD7Op/TZ6k8LKIt8/GZgiy/Y92/1nsScfHEVHYhWEZy2+yso6ssqZ0g8jHEOh7dK2hcsoroq/VBJPErTx8qK6Q54OOBl3gSiDSe3s6oB2dZgqQGOTP+PXo3/YqC1DgEbv7E7TbeVvbybl2dCy/p9nux/P3y+bsWcdUNZ5TjSpwNMR9Vfg9EDMB6Ts/0oC8o0My925SbP6+PTJhUcw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZmWIHTGbshYZtdbfjkq4ewrnvsHJt7d7Jn5AMHcXMxU=; b=KOh3EMsig29EaFbYawH72RF1neAAgIa7Q+pekEMl4TKqUS9fdoTIVkP9ItysUsrDmkcZ+vEwUQgG5DMDYw2mp4mSTghYPfVT4saIl2OcjknkfOWU5SP5aCXuVO2nYius24rKT0E/+pbV+20L4CLDOKv0m2spuD/b48ZaIcguY1LMOP/5VsLwYBWFhp2JQs9zXM7QAiBirkEFAX/5o5zog339osUZ2Dq7lUassKBAjIuoNcuyycaz8YDxWAwwX29w3yfqB7Mky5MHw814+riNet/Y9JUuM84NgqpUeFRYrrjaS1l4+q8kCOH749PSpsyHeIBbnV2eW5FMEabshfZNtA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZmWIHTGbshYZtdbfjkq4ewrnvsHJt7d7Jn5AMHcXMxU=; b=Sk4FFP6gJQyOmZA2usIX67LgeIW10Sdw7TPB/r8xgtk0DyLaNDmWVPD4ckPQUWDXiiGrcQPmfoyMoD59yuYvOEVz4HT2b9AK63BmmbP1SKrmkj0VHYyq+e/asO1bPLMg/DOJ4OBUo+1xzvq2moaOiLNDoTQI3pEyh3SO54TAw2c= Received: from VI1PR08MB4096.eurprd08.prod.outlook.com (20.178.126.87) by VI1PR08MB4253.eurprd08.prod.outlook.com (20.179.25.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2686.27; Fri, 31 Jan 2020 15:23:24 +0000 Received: from VI1PR08MB4096.eurprd08.prod.outlook.com ([fe80::74eb:95d4:3832:1493]) by VI1PR08MB4096.eurprd08.prod.outlook.com ([fe80::74eb:95d4:3832:1493%5]) with mapi id 15.20.2665.027; Fri, 31 Jan 2020 15:23:24 +0000 Received: from [10.2.80.82] (217.140.106.53) by LO2P123CA0070.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2665.22 via Frontend Transport; Fri, 31 Jan 2020 15:23:23 +0000 From: Delia Burduv To: Kyrill Tkachov , "gcc-patches@gcc.gnu.org" CC: "nickc@redhat.com" , Richard Earnshaw , Ramana Radhakrishnan Subject: Re: [GCC][PATCH][AArch32] ACLE intrinsics bfloat16 vmmla and vfma for AArch32 AdvSIMD Date: Fri, 31 Jan 2020 16:21:00 -0000 Message-ID: References: <1994305c-a05b-774b-15da-5f1474b7c841@arm.com> <3feb8c4b-2905-36c7-cd8d-270505155c9e@foss.arm.com> In-Reply-To: <3feb8c4b-2905-36c7-cd8d-270505155c9e@foss.arm.com> Authentication-Results-Original: spf=none (sender IP is ) smtp.mailfrom=Delia.Burduv@arm.com; x-ms-exchange-transport-forked: True x-checkrecipientrouted: true x-ms-oob-tlc-oobclassifiers: OLM:7219;OLM:7219; X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(4636009)(366004)(39860400002)(376002)(396003)(136003)(346002)(189003)(199004)(31686004)(5660300002)(8676002)(44832011)(52116002)(31696002)(478600001)(6486002)(81156014)(4326008)(71200400001)(81166006)(186003)(4001150100001)(54906003)(53546011)(316002)(86362001)(110136005)(66446008)(66476007)(2906002)(956004)(2616005)(8936002)(66946007)(16576012)(16526019)(64756008)(36756003)(66556008)(26005)(66616009);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR08MB4253;H:VI1PR08MB4096.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: ZAUfckIsSthiCoWMGH/MBfWroVpO8M5lvzgzKshSUL4ZoPXD/gx8nWDqGJUXFuben+OMW+nL20vhW3AI5cYrPKH7L33LSQdWLYW65+o5uqugQfN9pVSVraZ5LmoonGIcrfx5xaQxdgIgUOPfx/2MJ1CQlX3EjrJGL5qf9V3tZwYLbPRbJUC+fic4J9biY6KZrS3M+Lc2kch6jYlOYT4L027ytxWEgZXD7gVVQxm6W9HBAjNn6U/6W6QjmlfHqKYfDp8BI0QbbNVjm74CgaHbAE4rMpRGX58urvdQpI+BFrq/jv+w5bY66Vxluf36x6LBAymAFLGwFkt9vfElTtvjuvVFyhxq76laBUxxIkgryc3+bZ0ggsf70FXkG01w/4yM88rV4nxVkWCLuSEnntsTarSOcsC9HtQ4jWOsLmas2f2/MXSQxZTq98sXYlOIzOOoXc9HyAPoaShrqegaBX55ftrjSp3bKUC0wIw7riz2G9EKKKuDsF0qdYjth+Q4o4oZ1I82uBA7QhpfAudNyK2eMA== x-ms-exchange-antispam-messagedata: uJPFqJJ3iji0HAMgriM/DZ3C07dk1t8exex6qkeZJv+W/P7VdPMHUixwRd2YZlruoc2OHQoCHmkUHVxUJWOAIMXffdmzrcgSLH6SZPPGisgiXX14/73svGmYRoe63j+PJEa5Ey/DBxqLaqF6x9QUWw== Content-Type: multipart/mixed; boundary="_002_bd726fb6204cdefce38db22afd428fa1armcom_" MIME-Version: 1.0 Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Delia.Burduv@arm.com; Return-Path: Delia.Burduv@arm.com X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT061.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 6d6409b0-3745-4a0f-7042-08d7a66182cb X-SW-Source: 2020-01/txt/msg02093.txt.bz2 --_002_bd726fb6204cdefce38db22afd428fa1armcom_ Content-Type: text/plain; charset="Windows-1252" Content-ID: <9DAF42C9686F5F4C9BC80BC1FA8136C9@eurprd08.prod.outlook.com> Content-Transfer-Encoding: quoted-printable Content-length: 3874 Here is the updated patch. The changes are minor, so let me know if=20 there is anything else to fix or if it can be committed. Thank you, Delia On 1/30/20 2:55 PM, Kyrill Tkachov wrote: > Hi Delia, >=20 >=20 > On 1/28/20 4:44 PM, Delia Burduv wrote: >> Ping. >> ------------------------------------------------------------------------ >> *From:* Delia Burduv >> *Sent:* 22 January 2020 17:26 >> *To:* gcc-patches@gcc.gnu.org >> *Cc:* nickc@redhat.com ; Richard Earnshaw=20 >> ; Ramana Radhakrishnan=20 >> ; Kyrylo Tkachov >> *Subject:* Re: [GCC][PATCH][AArch32] ACLE intrinsics bfloat16 vmmla=20 >> and vfma for AArch32 AdvSIMD >> Ping. >> >> I have read Richard Sandiford's comments on the AArch64 patches and I >> will apply what is relevant to this patch as well. Particularly, I will >> change the tests to use the exact input and output registers and I will >> change the types of the rtl patterns. >=20 >=20 > Please send the updated patches so that someone can commit them for you=20 > once they're reviewed. >=20 > Thanks, >=20 > Kyrill >=20 >=20 >> >> On 12/20/19 6:44 PM, Delia Burduv wrote: >> > This patch adds the ARMv8.6 ACLE intrinsics for vmmla, vfmab and vfmat >> > as part of the BFloat16 extension. >> > (https://developer.arm.com/docs/101028/latest.) >> > The intrinsics are declared in arm_neon.h and the RTL patterns are >> > defined in neon.md. >> > Two new tests are added to check assembler output and lane indices. >> > >> > This patch depends on the Arm back-end patche. >> > (https://gcc.gnu.org/ml/gcc-patches/2019-12/msg01448.html) >> > >> > Tested for regression on arm-none-eabi and armeb-none-eabi. I don't=20 >> have >> > commit rights, so if this is ok can someone please commit it for me? >> > >> > gcc/ChangeLog: >> > >> > 2019-11-12=A0 Delia Burduv >> > >> >=A0 =A0=A0=A0=A0* config/arm/arm_neon.h (vbfmmlaq_f32): New. >> >=A0 =A0=A0=A0=A0=A0 (vbfmlalbq_f32): New. >> >=A0 =A0=A0=A0=A0=A0 (vbfmlaltq_f32): New. >> >=A0 =A0=A0=A0=A0=A0 (vbfmlalbq_lane_f32): New. >> >=A0 =A0=A0=A0=A0=A0 (vbfmlaltq_lane_f32): New. >> >=A0 =A0=A0=A0=A0=A0=A0=A0 (vbfmlalbq_laneq_f32): New. >> >=A0 =A0=A0=A0=A0=A0 (vbfmlaltq_laneq_f32): New. >> >=A0 =A0=A0=A0=A0* config/arm/arm_neon_builtins.def (vbfmmla): New. >> >=A0 =A0=A0=A0=A0=A0=A0=A0=A0=A0 (vbfmab): New. >> >=A0 =A0=A0=A0=A0=A0=A0=A0=A0=A0 (vbfmat): New. >> >=A0 =A0=A0=A0=A0=A0=A0=A0=A0=A0 (vbfmab_lane): New. >> >=A0 =A0=A0=A0=A0=A0=A0=A0=A0=A0 (vbfmat_lane): New. >> >=A0 =A0=A0=A0=A0=A0=A0=A0=A0=A0 (vbfmab_laneq): New. >> >=A0 =A0=A0=A0=A0=A0=A0=A0=A0=A0 (vbfmat_laneq): New. >> >=A0 =A0=A0=A0=A0 * config/arm/iterators.md (BF_MA): New int iterator. >> >=A0 =A0=A0=A0=A0=A0=A0=A0=A0=A0 (bt): New int attribute. >> >=A0 =A0=A0=A0=A0=A0=A0=A0=A0=A0 (VQXBF): Copy of VQX with V8BF. >> >=A0 =A0=A0=A0=A0=A0=A0=A0=A0=A0 (V_HALF): Added V8BF. >> >=A0 =A0=A0=A0=A0=A0 * config/arm/neon.md (neon_vbfmmlav8hi): New insn. >> >=A0 =A0=A0=A0=A0=A0=A0=A0=A0=A0 (neon_vbfmav8hi): New insn. >> >=A0 =A0=A0=A0=A0=A0=A0=A0=A0=A0 (neon_vbfma_lanev8hi): New insn. >> >=A0 =A0=A0=A0=A0=A0=A0=A0=A0=A0 (neon_vbfma_laneqv8hi): New expand. >> >=A0 =A0=A0=A0=A0=A0=A0=A0=A0=A0 (neon_vget_high): Changed iterato= r to VQXBF. >> >=A0 =A0=A0=A0=A0* config/arm/unspecs.md (UNSPEC_BFMMLA): New UNSPEC. >> >=A0 =A0=A0=A0=A0=A0=A0=A0=A0=A0 (UNSPEC_BFMAB): New UNSPEC. >> >=A0 =A0=A0=A0=A0=A0=A0=A0=A0=A0 (UNSPEC_BFMAT): New UNSPEC. >> > >> > 2019-11-12=A0 Delia Burduv >> > >> >=A0 =A0=A0=A0=A0=A0=A0=A0 * gcc.target/arm/simd/bf16_ma_1.c: New test. >> >=A0 =A0=A0=A0=A0=A0=A0=A0 * gcc.target/arm/simd/bf16_ma_2.c: New test. >> >=A0 =A0=A0=A0=A0=A0=A0=A0 * gcc.target/arm/simd/bf16_mmla_1.c: New test. --_002_bd726fb6204cdefce38db22afd428fa1armcom_ Content-Type: text/x-patch; name="rb12263.patch" Content-Description: rb12263.patch Content-Disposition: attachment; filename="rb12263.patch"; size=12772; creation-date="Fri, 31 Jan 2020 15:23:23 GMT"; modification-date="Fri, 31 Jan 2020 15:23:23 GMT" Content-ID: <877B8C9B4BDC2E42BCD5A2907347351A@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 Content-length: 17316 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2FybV9uZW9uLmggYi9nY2Mv Y29uZmlnL2FybS9hcm1fbmVvbi5oDQppbmRleCAzYzc4ZjQzNTAwOWFiMDI3 ZjkyNjkzZDAwYWI1YjQwOTYwZDU0MTlkLi44MWY4MDA4ZWE2YTVmYjExZWIw OWY2Njg1YmEyNGJiMGM1NGZiMjQ4IDEwMDY0NA0KLS0tIGEvZ2NjL2NvbmZp Zy9hcm0vYXJtX25lb24uaA0KKysrIGIvZ2NjL2NvbmZpZy9hcm0vYXJtX25l b24uaA0KQEAgLTE4NzQyLDYgKzE4NzQyLDY0IEBAIHZjbWxhcV9yb3QyNzBf bGFuZXFfZjMyIChmbG9hdDMyeDRfdCBfX3IsIGZsb2F0MzJ4NF90IF9fYSwg ZmxvYXQzMng0X3QgX19iLA0KICAgcmV0dXJuIF9fYnVpbHRpbl9uZW9uX3Zj bWxhX2xhbmUyNzB2NHNmIChfX3IsIF9fYSwgX19iLCBfX2luZGV4KTsNCiB9 DQogDQorI3ByYWdtYSBHQ0MgcHVzaF9vcHRpb25zDQorI3ByYWdtYSBHQ0Mg dGFyZ2V0ICgiYXJjaD1hcm12OC4yLWErYmYxNiIpDQorDQorX19leHRlbnNp b25fXyBleHRlcm4gX19pbmxpbmUgZmxvYXQzMng0X3QNCitfX2F0dHJpYnV0 ZV9fICgoX19hbHdheXNfaW5saW5lX18sIF9fZ251X2lubGluZV9fLCBfX2Fy dGlmaWNpYWxfXykpDQordmJmbW1sYXFfZjMyIChmbG9hdDMyeDRfdCBfX3Is IGJmbG9hdDE2eDhfdCBfX2EsIGJmbG9hdDE2eDhfdCBfX2IpDQorew0KKyAg cmV0dXJuIF9fYnVpbHRpbl9uZW9uX3ZiZm1tbGF2OGJmIChfX3IsIF9fYSwg X19iKTsNCit9DQorDQorX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUg ZmxvYXQzMng0X3QNCitfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5l X18sIF9fZ251X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpDQordmJmbWxh bGJxX2YzMiAoZmxvYXQzMng0X3QgX19yLCBiZmxvYXQxNng4X3QgX19hLCBi ZmxvYXQxNng4X3QgX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5fbmVv bl92YmZtYWJ2OGJmIChfX3IsIF9fYSwgX19iKTsNCit9DQorDQorX19leHRl bnNpb25fXyBleHRlcm4gX19pbmxpbmUgZmxvYXQzMng0X3QNCitfX2F0dHJp YnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18sIF9fZ251X2lubGluZV9fLCBf X2FydGlmaWNpYWxfXykpDQordmJmbWxhbHRxX2YzMiAoZmxvYXQzMng0X3Qg X19yLCBiZmxvYXQxNng4X3QgX19hLCBiZmxvYXQxNng4X3QgX19iKQ0KK3sN CisgIHJldHVybiBfX2J1aWx0aW5fbmVvbl92YmZtYXR2OGJmIChfX3IsIF9f YSwgX19iKTsNCit9DQorDQorX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxp bmUgZmxvYXQzMng0X3QNCitfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5s aW5lX18sIF9fZ251X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpDQordmJm bWxhbGJxX2xhbmVfZjMyIChmbG9hdDMyeDRfdCBfX3IsIGJmbG9hdDE2eDhf dCBfX2EsIGJmbG9hdDE2eDRfdCBfX2IsDQorCQkgICBjb25zdCBpbnQgX19p bmRleCkNCit7DQorICByZXR1cm4gX19idWlsdGluX25lb25fdmJmbWFiX2xh bmV2OGJmIChfX3IsIF9fYSwgX19iLCBfX2luZGV4KTsNCit9DQorDQorX19l eHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgZmxvYXQzMng0X3QNCitfX2F0 dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18sIF9fZ251X2lubGluZV9f LCBfX2FydGlmaWNpYWxfXykpDQordmJmbWxhbHRxX2xhbmVfZjMyIChmbG9h dDMyeDRfdCBfX3IsIGJmbG9hdDE2eDhfdCBfX2EsIGJmbG9hdDE2eDRfdCBf X2IsDQorCQkgICBjb25zdCBpbnQgX19pbmRleCkNCit7DQorICByZXR1cm4g X19idWlsdGluX25lb25fdmJmbWF0X2xhbmV2OGJmIChfX3IsIF9fYSwgX19i LCBfX2luZGV4KTsNCit9DQorDQorX19leHRlbnNpb25fXyBleHRlcm4gX19p bmxpbmUgZmxvYXQzMng0X3QNCitfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNf aW5saW5lX18sIF9fZ251X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpDQor dmJmbWxhbGJxX2xhbmVxX2YzMiAoZmxvYXQzMng0X3QgX19yLCBiZmxvYXQx Nng4X3QgX19hLCBiZmxvYXQxNng4X3QgX19iLA0KKwkJICAgIGNvbnN0IGlu dCBfX2luZGV4KQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5fbmVvbl92YmZt YWJfbGFuZXF2OGJmIChfX3IsIF9fYSwgX19iLCBfX2luZGV4KTsNCit9DQor DQorX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgZmxvYXQzMng0X3QN CitfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18sIF9fZ251X2lu bGluZV9fLCBfX2FydGlmaWNpYWxfXykpDQordmJmbWxhbHRxX2xhbmVxX2Yz MiAoZmxvYXQzMng0X3QgX19yLCBiZmxvYXQxNng4X3QgX19hLCBiZmxvYXQx Nng4X3QgX19iLA0KKwkJICAgIGNvbnN0IGludCBfX2luZGV4KQ0KK3sNCisg IHJldHVybiBfX2J1aWx0aW5fbmVvbl92YmZtYXRfbGFuZXF2OGJmIChfX3Is IF9fYSwgX19iLCBfX2luZGV4KTsNCit9DQorDQorI3ByYWdtYSBHQ0MgcG9w X29wdGlvbnMNCisNCiAjcHJhZ21hIEdDQyBwb3Bfb3B0aW9ucw0KICNlbmRp Zg0KIA0KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2FybV9uZW9uX2J1 aWx0aW5zLmRlZiBiL2djYy9jb25maWcvYXJtL2FybV9uZW9uX2J1aWx0aW5z LmRlZg0KaW5kZXggZTlmZjRlNTAxY2JiNWQxNmI5MjExZjViYzk2ZGIzNzZk ZGYyMWFmYy4uY2MwNjc4M2RhZjM5M2Y3MTY2ZmQ5MjJmODZiM2RiNzljMDJi YTE4OCAxMDA2NDQNCi0tLSBhL2djYy9jb25maWcvYXJtL2FybV9uZW9uX2J1 aWx0aW5zLmRlZg0KKysrIGIvZ2NjL2NvbmZpZy9hcm0vYXJtX25lb25fYnVp bHRpbnMuZGVmDQpAQCAtMzczLDMgKzM3MywxMiBAQCBWQVIyIChNQUNfTEFO RV9QQUlSLCB2Y21sYXFfbGFuZTAsIHY0c2YsIHY4aGYpDQogVkFSMiAoTUFD X0xBTkVfUEFJUiwgdmNtbGFxX2xhbmU5MCwgdjRzZiwgdjhoZikNCiBWQVIy IChNQUNfTEFORV9QQUlSLCB2Y21sYXFfbGFuZTE4MCwgdjRzZiwgdjhoZikN CiBWQVIyIChNQUNfTEFORV9QQUlSLCB2Y21sYXFfbGFuZTI3MCwgdjRzZiwg djhoZikNCisNCitWQVIxIChURVJOT1AsIHZiZm1tbGEsIHY4YmYpDQorDQor VkFSMSAoVEVSTk9QLCB2YmZtYWIsIHY4YmYpDQorVkFSMSAoVEVSTk9QLCB2 YmZtYXQsIHY4YmYpDQorVkFSMSAoTUFDX0xBTkUsIHZiZm1hYl9sYW5lLCB2 OGJmKQ0KK1ZBUjEgKE1BQ19MQU5FLCB2YmZtYXRfbGFuZSwgdjhiZikNCitW QVIxIChNQUNfTEFORSwgdmJmbWFiX2xhbmVxLCB2OGJmKQ0KK1ZBUjEgKE1B Q19MQU5FLCB2YmZtYXRfbGFuZXEsIHY4YmYpDQpkaWZmIC0tZ2l0IGEvZ2Nj L2NvbmZpZy9hcm0vaXRlcmF0b3JzLm1kIGIvZ2NjL2NvbmZpZy9hcm0vaXRl cmF0b3JzLm1kDQppbmRleCAzM2UyOTUwOWYwMGE4OWZhMjNkMDU0NjY4N2Mw ZTQ2NDNmMGIzMmQyLi43MmI4Y2UwYmIyNmRjZDUyMDYwM2I5MDdiNGY4NmE3 NGQwMTY0MzMyIDEwMDY0NA0KLS0tIGEvZ2NjL2NvbmZpZy9hcm0vaXRlcmF0 b3JzLm1kDQorKysgYi9nY2MvY29uZmlnL2FybS9pdGVyYXRvcnMubWQNCkBA IC0xMDYsNiArMTA2LDkgQEANCiA7OyBRdWFkLXdpZHRoIHZlY3RvciBtb2Rl cyBwbHVzIDY0LWJpdCBlbGVtZW50cy4NCiAoZGVmaW5lX21vZGVfaXRlcmF0 b3IgVlFYIFtWMTZRSSBWOEhJIFY4SEYgVjRTSSBWNFNGIFYyREldKQ0KIA0K Kzs7IFF1YWQtd2lkdGggdmVjdG9yIG1vZGVzIHBsdXMgNjQtYml0IGVsZW1l bnRzIGFuZCBWOEJGLg0KKyhkZWZpbmVfbW9kZV9pdGVyYXRvciBWUVhCRiBb VjE2UUkgVjhISSBWOEhGIChWOEJGICJUQVJHRVRfQkYxNl9TSU1EIikgVjRT SSBWNFNGIFYyREldKQ0KKw0KIDs7IFF1YWQtd2lkdGggdmVjdG9yIG1vZGVz IHdpdGhvdXQgZmxvYXRpbmctcG9pbnQgZWxlbWVudHMuDQogKGRlZmluZV9t b2RlX2l0ZXJhdG9yIFZRSSBbVjE2UUkgVjhISSBWNFNJXSkNCiANCkBAIC00 ODUsNiArNDg4LDggQEANCiAoZGVmaW5lX2ludF9pdGVyYXRvciBWQ0FERCBb VU5TUEVDX1ZDQUREOTAgVU5TUEVDX1ZDQUREMjcwXSkNCiAoZGVmaW5lX2lu dF9pdGVyYXRvciBWQ01MQSBbVU5TUEVDX1ZDTUxBIFVOU1BFQ19WQ01MQTkw IFVOU1BFQ19WQ01MQTE4MCBVTlNQRUNfVkNNTEEyNzBdKQ0KIA0KKyhkZWZp bmVfaW50X2l0ZXJhdG9yIEJGX01BIFtVTlNQRUNfQkZNQUIgVU5TUEVDX0JG TUFUXSkNCisNCiA7Oy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N CiA7OyBNb2RlIGF0dHJpYnV0ZXMNCiA7Oy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCkBAIC02MDksNyArNjE0LDggQEANCiAoZGVmaW5lX21v ZGVfYXR0ciBWX0hBTEYgWyhWMTZRSSAiVjhRSSIpIChWOEhJICJWNEhJIikN CiAJCQkgIChWOEhGICJWNEhGIikgKFY0U0kgICJWMlNJIikNCiAJCQkgIChW NFNGICJWMlNGIikgKFYyREYgIkRGIikNCi0JCQkgIChWMkRJICJESSIpIChW NEhGICJIRiIpXSkNCisJCQkgIChWMkRJICJESSIpIChWNEhGICJIRiIpDQor CQkJICAoVjhCRiAiVjRCRiIpXSkNCiANCiA7OyBTYW1lLCBidXQgbG93ZXIt Y2FzZS4NCiAoZGVmaW5lX21vZGVfYXR0ciBWX2hhbGYgWyhWMTZRSSAidjhx aSIpIChWOEhJICJ2NGhpIikNCkBAIC0xMTcxLDQgKzExNzcsNyBAQA0KIChk ZWZpbmVfaW50X2F0dHIgb3BzdWZmaXggWyhVTlNQRUNfRE9UX1MgInM4IikN CiAJCQkgICAoVU5TUEVDX0RPVF9VICJ1OCIpXSkNCiANCis7OyBBbiBpdGVy YXRvciBmb3IgVkZNQTxidD4NCisoZGVmaW5lX2ludF9hdHRyIGJ0IFsoVU5T UEVDX0JGTUFCICJiIikgKFVOU1BFQ19CRk1BVCAidCIpXSkNCisNCiAoZGVm aW5lX2ludF9hdHRyIHNtbGF3X29wIFsoVU5TUEVDX1NNTEFXQiAic21sYXdi IikgKFVOU1BFQ19TTUxBV1QgInNtbGF3dCIpXSkNCmRpZmYgLS1naXQgYS9n Y2MvY29uZmlnL2FybS9uZW9uLm1kIGIvZ2NjL2NvbmZpZy9hcm0vbmVvbi5t ZA0KaW5kZXggNjA4N2NhNmYyYmFkZGU2YTQ5MmJiNTE1YTJjYjU4NDZmM2Q0 YWQ4ZS4uNGUwZDBiNWMzMTdhODE4MzlkZTlkZWU1ODFjNWUzNTFkMzE5M2Rm YSAxMDA2NDQNCi0tLSBhL2djYy9jb25maWcvYXJtL25lb24ubWQNCisrKyBi L2djYy9jb25maWcvYXJtL25lb24ubWQNCkBAIC0zODc1LDcgKzM4NzUsNyBA QCBpZiAoQllURVNfQklHX0VORElBTikNCiANCiAoZGVmaW5lX2V4cGFuZCAi bmVvbl92Z2V0X2hpZ2g8bW9kZT4iDQogICBbKG1hdGNoX29wZXJhbmQ6PFZf SEFMRj4gMCAic19yZWdpc3Rlcl9vcGVyYW5kIikNCi0gICAobWF0Y2hfb3Bl cmFuZDpWUVggMSAic19yZWdpc3Rlcl9vcGVyYW5kIildDQorICAgKG1hdGNo X29wZXJhbmQ6VlFYQkYgMSAic19yZWdpc3Rlcl9vcGVyYW5kIildDQogICAi VEFSR0VUX05FT04iDQogew0KICAgZW1pdF9tb3ZlX2luc24gKG9wZXJhbmRz WzBdLA0KQEAgLTY1NTIsMyArNjU1Miw2NCBAQCBpZiAoQllURVNfQklHX0VO RElBTikNCiAgInZhYmQuPFZfaWZfZWxlbT4gJTxWX3JlZz4wLCAlPFZfcmVn PjEsICU8Vl9yZWc+MiINCiAgWyhzZXRfYXR0ciAidHlwZSIgIm5lb25fZnBf YWJkX3M8cT4iKV0NCiApDQorDQorKGRlZmluZV9pbnNuICJuZW9uX3ZiZm1t bGF2OGJmIg0KKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTRiAwICJyZWdp c3Rlcl9vcGVyYW5kIiAiPXciKQ0KKyAgICAgICAgKHBsdXM6VjRTRiAobWF0 Y2hfb3BlcmFuZDpWNFNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICIwIikNCisg ICAgICAgICAgICAgICAgICAgKHVuc3BlYzpWNFNGIFsobWF0Y2hfb3BlcmFu ZDpWOEJGIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ3IikNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWOEJGIDMg InJlZ2lzdGVyX29wZXJhbmQiICJ3IildDQorICAgICAgICAgICAgICAgICAg ICBVTlNQRUNfQkZNTUxBKSkpXQ0KKyAgIlRBUkdFVF9CRjE2X1NJTUQiDQor ICAidm1tbGEuYmYxNlxcdCVxMCwgJXEyLCAlcTMiDQorICBbKHNldF9hdHRy ICJ0eXBlIiAibmVvbl9mcF9tbGFfc19xIildDQorKQ0KKw0KKyhkZWZpbmVf aW5zbiAibmVvbl92YmZtYTxidD52OGJmIg0KKyAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6VjRTRiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXciKQ0KKyAgICAg ICAgKHBsdXM6IFY0U0YgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJyZWdpc3Rl cl9vcGVyYW5kIiAiMCIpDQorICAgICAgICAgICAgICAgICAgICAodW5zcGVj OlY0U0YgWyhtYXRjaF9vcGVyYW5kOlY4QkYgMiAicmVnaXN0ZXJfb3BlcmFu ZCIgInciKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bWF0Y2hfb3BlcmFuZDpWOEJGIDMgInJlZ2lzdGVyX29wZXJhbmQiICJ3Iild DQorICAgICAgICAgICAgICAgICAgICAgQkZfTUEpKSldDQorICAiVEFSR0VU X0JGMTZfU0lNRCINCisgICJ2Zm1hPGJ0Pi5iZjE2XFx0JXEwLCAlcTIsICVx MyINCisgIFsoc2V0X2F0dHIgInR5cGUiICJuZW9uX2ZwX21sYV9zX3EiKV0N CispDQorDQorKGRlZmluZV9pbnNuICJuZW9uX3ZiZm1hPGJ0Pl9sYW5ldjhi ZiINCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAicmVnaXN0ZXJf b3BlcmFuZCIgIj13IikNCisgICAgICAgIChwbHVzOiBWNFNGIChtYXRjaF9v cGVyYW5kOlY0U0YgMSAicmVnaXN0ZXJfb3BlcmFuZCIgIjAiKQ0KKyAgICAg ICAgICAgICAgICAgICAgKHVuc3BlYzpWNFNGIFsobWF0Y2hfb3BlcmFuZDpW OEJGIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ3IikNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRCRiAzICJy ZWdpc3Rlcl9vcGVyYW5kIiAieCIpDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlNJIDQgImNvbnN0X2ludF9v cGVyYW5kIiAibiIpXQ0KKyAgICAgICAgICAgICAgICAgICAgIEJGX01BKSkp XQ0KKyAgIlRBUkdFVF9CRjE2X1NJTUQiDQorICAidmZtYTxidD4uYmYxNlxc dCVxMCwgJXEyLCAlUDNbJWM0XSINCisgIFsoc2V0X2F0dHIgInR5cGUiICJu ZW9uX2ZwX21sYV9zX3NjYWxhcl9xIildDQorKQ0KKw0KKyhkZWZpbmVfZXhw YW5kICJuZW9uX3ZiZm1hPGJ0Pl9sYW5lcXY4YmYiDQorICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9dyIpDQor ICAgICAgICAocGx1czogVjRTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInJl Z2lzdGVyX29wZXJhbmQiICIwIikNCisgICAgICAgICAgICAgICAgICAgICh1 bnNwZWM6VjRTRiBbKG1hdGNoX29wZXJhbmQ6VjhCRiAyICJyZWdpc3Rlcl9v cGVyYW5kIiAidyIpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChtYXRjaF9vcGVyYW5kOlY4QkYgMyAicmVnaXN0ZXJfb3BlcmFuZCIg IngiKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0 Y2hfb3BlcmFuZDpTSSA0ICJjb25zdF9pbnRfb3BlcmFuZCIgIm4iKV0NCisg ICAgICAgICAgICAgICAgICAgICBCRl9NQSkpKV0NCisgICJUQVJHRVRfQkYx Nl9TSU1EIg0KKyAgew0KKyAgICBpbnQgbGFuZSA9IElOVFZBTCAob3BlcmFu ZHNbNF0pOw0KKyAgICBnY2NfYXNzZXJ0IChsYW5lID49MCAmJiBsYW5lIDw9 Nyk7DQorICAgIGlmIChsYW5lIDwgNCkNCisgICAgew0KKwllbWl0X2luc24g KGdlbl9uZW9uX3ZiZm1hPGJ0Pl9sYW5ldjhiZiAob3BlcmFuZHNbMF0sIG9w ZXJhbmRzWzFdLCBvcGVyYW5kc1syXSwgb3BlcmFuZHNbM10sIG9wZXJhbmRz WzRdKSk7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICAgIHsNCisJcnR4IG9w X2hpZ2hwYXJ0ID0gZ2VuX3JlZ19ydHggKFY0QkZtb2RlKTsNCisJZW1pdF9p bnNuIChnZW5fbmVvbl92Z2V0X2hpZ2h2OGJmIChvcF9oaWdocGFydCwgb3Bl cmFuZHNbM10pKTsNCisJb3BlcmFuZHNbNF0gPSBHRU5fSU5UIChsYW5lIC0g NCk7DQorCWVtaXRfaW5zbiAoZ2VuX25lb25fdmJmbWE8YnQ+X2xhbmV2OGJm IChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJdLCBvcF9o aWdocGFydCwgb3BlcmFuZHNbNF0pKTsNCisgICAgICB9DQorICAgIERPTkU7 DQorICB9DQorICBbKHNldF9hdHRyICJ0eXBlIiAibmVvbl9mcF9tbGFfc19z Y2FsYXJfcSIpXQ0KKykNCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS91 bnNwZWNzLm1kIGIvZ2NjL2NvbmZpZy9hcm0vdW5zcGVjcy5tZA0KaW5kZXgg OGY0YTcwNWY0M2VmZGI2YmFmMDNiMzljZWU1ODljZjcyODYyMDY4Ny4uOTdm MDhhYmVjMGEwODliNWNkOTU4NDBkYTEyYWUyMmY3Yzk2MGIyOCAxMDA2NDQN Ci0tLSBhL2djYy9jb25maWcvYXJtL3Vuc3BlY3MubWQNCisrKyBiL2djYy9j b25maWcvYXJtL3Vuc3BlY3MubWQNCkBAIC01MDEsNCArNTAxLDcgQEANCiAg IFVOU1BFQ19WQ01MQTkwDQogICBVTlNQRUNfVkNNTEExODANCiAgIFVOU1BF Q19WQ01MQTI3MA0KKyAgVU5TUEVDX0JGTU1MQQ0KKyAgVU5TUEVDX0JGTUFC DQorICBVTlNQRUNfQkZNQVQNCiBdKQ0KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hcm0vc2ltZC9iZjE2X21hXzEuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vc2ltZC9iZjE2X21hXzEuYw0KbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1NWU4NmI5MWZjNjk5MDRmNDg4ZGVh MWIyNzdkZTZjYzRlY2JhN2UNCi0tLSAvZGV2L251bGwNCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vc2ltZC9iZjE2X21hXzEuYw0KQEAg LTAsMCArMSw3OSBAQA0KKy8qIHsgZGctZG8gYXNzZW1ibGUgfSAqLw0KKy8q IHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGFybV92OF8yYV9iZjE2 X25lb25fb2sgfSAqLw0KKy8qIHsgZGctYWRkLW9wdGlvbnMgYXJtX3Y4XzJh X2JmMTZfbmVvbiB9ICovDQorLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMg Ii1zYXZlLXRlbXBzIiB9ICAqLw0KKy8qIHsgZGctZmluYWwgeyBjaGVjay1m dW5jdGlvbi1ib2RpZXMgIioqIiAiIiB7LU9bXjBdfSB9IH0gKi8NCisNCisj aW5jbHVkZSAiYXJtX25lb24uaCINCisNCisvKg0KKyoqdGVzdF92YmZtbGFs YnFfZjMyOg0KKyoqICAgICAgLi4uDQorKiogICAgICB2Zm1hYi5iZjE2XHRx MCwgcTEsIHEyDQorKiogICAgICBieFx0bHINCisqLw0KK2Zsb2F0MzJ4NF90 DQordGVzdF92YmZtbGFsYnFfZjMyIChmbG9hdDMyeDRfdCByLCBiZmxvYXQx Nng4X3QgYSwgYmZsb2F0MTZ4OF90IGIpDQorew0KKyAgcmV0dXJuIHZiZm1s YWxicV9mMzIgKHIsIGEsIGIpOw0KK30NCisNCisvKg0KKyoqdGVzdF92YmZt bGFsdHFfZjMyOg0KKyoqICAgICAgLi4uDQorKiogICAgICB2Zm1hdC5iZjE2 XHRxMCwgcTEsIHEyDQorKiogICAgICBieFx0bHINCisqLw0KK2Zsb2F0MzJ4 NF90DQordGVzdF92YmZtbGFsdHFfZjMyIChmbG9hdDMyeDRfdCByLCBiZmxv YXQxNng4X3QgYSwgYmZsb2F0MTZ4OF90IGIpDQorew0KKyAgcmV0dXJuIHZi Zm1sYWx0cV9mMzIgKHIsIGEsIGIpOw0KK30NCisNCisvKg0KKyoqdGVzdF92 YmZtbGFsYnFfbGFuZV9mMzI6DQorKiogICAgICAuLi4NCisqKiAgICAgIHZm bWFiLmJmMTZcdHEwLCBxMSwgZDRbMF0NCisqKiAgICAgIGJ4XHRscg0KKyov DQorZmxvYXQzMng0X3QNCit0ZXN0X3ZiZm1sYWxicV9sYW5lX2YzMiAoZmxv YXQzMng0X3QgciwgYmZsb2F0MTZ4OF90IGEsIGJmbG9hdDE2eDRfdCBiKQ0K K3sNCisgIHJldHVybiB2YmZtbGFsYnFfbGFuZV9mMzIgKHIsIGEsIGIsIDAp Ow0KK30NCisNCisvKg0KKyoqdGVzdF92YmZtbGFsdHFfbGFuZV9mMzI6DQor KiogICAgICAuLi4NCisqKiAgICAgIHZmbWF0LmJmMTZcdHEwLCBxMSwgZDRb Ml0NCisqKiAgICAgIGJ4XHRscg0KKyovDQorZmxvYXQzMng0X3QNCit0ZXN0 X3ZiZm1sYWx0cV9sYW5lX2YzMiAoZmxvYXQzMng0X3QgciwgYmZsb2F0MTZ4 OF90IGEsIGJmbG9hdDE2eDRfdCBiKQ0KK3sNCisgIHJldHVybiB2YmZtbGFs dHFfbGFuZV9mMzIgKHIsIGEsIGIsIDIpOw0KK30NCisNCisvKg0KKyoqdGVz dF92YmZtbGFsYnFfbGFuZXFfZjMyOg0KKyoqICAgICAgLi4uDQorKiogICAg ICB2Zm1hYi5iZjE2XHRxMCwgcTEsIGQ1WzFdDQorKiogICAgICBieFx0bHIN CisqLw0KK2Zsb2F0MzJ4NF90DQordGVzdF92YmZtbGFsYnFfbGFuZXFfZjMy IChmbG9hdDMyeDRfdCByLCBiZmxvYXQxNng4X3QgYSwgYmZsb2F0MTZ4OF90 IGIpDQorew0KKyAgcmV0dXJuIHZiZm1sYWxicV9sYW5lcV9mMzIgKHIsIGEs IGIsIDUpOw0KK30NCisNCisvKg0KKyoqdGVzdF92YmZtbGFsdHFfbGFuZXFf ZjMyOg0KKyoqICAgICAgLi4uDQorKiogICAgICB2Zm1hdC5iZjE2XHRxMCwg cTEsIGQ1WzNdDQorKiogICAgICBieFx0bHINCisqLw0KK2Zsb2F0MzJ4NF90 DQordGVzdF92YmZtbGFsdHFfbGFuZXFfZjMyIChmbG9hdDMyeDRfdCByLCBi ZmxvYXQxNng4X3QgYSwgYmZsb2F0MTZ4OF90IGIpDQorew0KKyAgcmV0dXJu IHZiZm1sYWx0cV9sYW5lcV9mMzIgKHIsIGEsIGIsIDcpOw0KK30NCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3NpbWQvYmYx Nl9tYV8yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3NpbWQv YmYxNl9tYV8yLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjZlZDdl MWQ4ZTQ3NDdkNzNiMDUxOGM4MDlhYWYwZTNjNWJjNzhkDQotLS0gL2Rldi9u dWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3NpbWQv YmYxNl9tYV8yLmMNCkBAIC0wLDAgKzEsMzEgQEANCisvKiB7IGRnLWRvIGNv bXBpbGUgeyB0YXJnZXQgeyBhcm0qLSotKiB9IH0gfSAqLw0KKy8qIHsgZGct cmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGFybV92OF8yYV9iZjE2X25lb25f b2sgfSAqLw0KKy8qIHsgZGctYWRkLW9wdGlvbnMgYXJtX3Y4XzJhX2JmMTZf bmVvbiB9ICovDQorDQorI2luY2x1ZGUgImFybV9uZW9uLmgiDQorDQorLyog VGVzdCBsYW5lIGluZGV4IGxpbWl0cyBmb3IgdmJmbWxhbGJxX2xhbmVfZjMy ICAqLw0KK2Zsb2F0MzJ4NF90DQordGVzdF92YmZtbGFsYnFfbGFuZV9mMzJf bG93IChmbG9hdDMyeDRfdCByLCBiZmxvYXQxNng4X3QgYSwgYmZsb2F0MTZ4 NF90IGIpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9uZW9uX3ZiZm1hYl9s YW5ldjhiZiAociwgYSwgYiwgLTEpOyAvKiB7IGRnLWVycm9yIHtsYW5lIC0x IG91dCBvZiByYW5nZSAwIC0gM30gfSAqLw0KK30NCisNCitmbG9hdDMyeDRf dA0KK3Rlc3RfdmJmbWxhbGJxX2xhbmVfZjMyX2hpZ2ggKGZsb2F0MzJ4NF90 IHIsIGJmbG9hdDE2eDhfdCBhLCBiZmxvYXQxNng0X3QgYikNCit7DQorICBy ZXR1cm4gX19idWlsdGluX25lb25fdmJmbWFiX2xhbmV2OGJmIChyLCBhLCBi LCA0KTsgLyogeyBkZy1lcnJvciB7bGFuZSA0IG91dCBvZiByYW5nZSAwIC0g M30gfSAqLw0KK30NCisNCisvKiBUZXN0IGxhbmUgaW5kZXggbGltaXRzIGZv ciB2YmZtbGFsdHFfbGFuZV9mMzIgICovDQorZmxvYXQzMng0X3QNCit0ZXN0 X3ZiZm1sYWx0cV9sYW5lX2YzMl9sb3cgKGZsb2F0MzJ4NF90IHIsIGJmbG9h dDE2eDhfdCBhLCBiZmxvYXQxNng0X3QgYikNCit7DQorICByZXR1cm4gX19i dWlsdGluX25lb25fdmJmbWF0X2xhbmV2OGJmIChyLCBhLCBiLCAtMSk7IC8q IHsgZGctZXJyb3Ige2xhbmUgLTEgb3V0IG9mIHJhbmdlIDAgLSAzfSB9ICov DQorfQ0KKw0KK2Zsb2F0MzJ4NF90DQordGVzdF92YmZtbGFsdHFfbGFuZV9m MzJfaGlnaCAoZmxvYXQzMng0X3QgciwgYmZsb2F0MTZ4OF90IGEsIGJmbG9h dDE2eDRfdCBiKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5fbmVvbl92YmZt YXRfbGFuZXY4YmYgKHIsIGEsIGIsIDQpOyAvKiB7IGRnLWVycm9yIHtsYW5l IDQgb3V0IG9mIHJhbmdlIDAgLSAzfSB9ICovDQorfQ0KZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vc2ltZC9iZjE2X21tbGFf MS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9zaW1kL2JmMTZf bW1sYV8xLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzcwZTRkOTQ1 YTM1M2FjNzMyOTkyOWQyNzkyMGIzYTBhYTA4MjgxDQotLS0gL2Rldi9udWxs DQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3NpbWQvYmYx Nl9tbWxhXzEuYw0KQEAgLTAsMCArMSwxOCBAQA0KKy8qIHsgZGctZG8gYXNz ZW1ibGUgfSAqLw0KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0 IGFybV92OF8yYV9iZjE2X25lb25fb2sgfSAqLw0KKy8qIHsgZGctYWRkLW9w dGlvbnMgYXJtX3Y4XzJhX2JmMTZfbmVvbiB9ICovDQorLyogeyBkZy1hZGRp dGlvbmFsLW9wdGlvbnMgIi1zYXZlLXRlbXBzIiB9ICovDQorLyogeyBkZy1m aW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiIHstT1teMF19 IH0gfSAqLw0KKw0KKyNpbmNsdWRlIDxhcm1fbmVvbi5oPg0KKw0KKy8qdGVz dF92YmZtbWxhcV9mMzI6DQorKiogICAgICAgIC4uLg0KKyoqICAgICAgICB2 bW1sYS5iZjE2XHRxMCwgcTEsIHEyDQorKiogICAgICAgIGJ4XHRscg0KKyov DQorZmxvYXQzMng0X3QNCit0ZXN0X3ZiZm1tbGFxX2YzMiAoZmxvYXQzMng0 X3QgciwgYmZsb2F0MTZ4OF90IHgsIGJmbG9hdDE2eDhfdCB5KQ0KK3sNCisg IHJldHVybiB2YmZtbWxhcV9mMzIgKHIsIHgsIHkpOw0KK30NCg== --_002_bd726fb6204cdefce38db22afd428fa1armcom_--