From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80051.outbound.protection.outlook.com [40.107.8.51]) by sourceware.org (Postfix) with ESMTPS id AEE3D393D018 for ; Tue, 1 Dec 2020 11:28:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org AEE3D393D018 Received: from AM0PR02CA0026.eurprd02.prod.outlook.com (2603:10a6:208:3e::39) by VI1PR0802MB2302.eurprd08.prod.outlook.com (2603:10a6:800:9e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.20; Tue, 1 Dec 2020 11:28:21 +0000 Received: from AM5EUR03FT047.eop-EUR03.prod.protection.outlook.com (2603:10a6:208:3e:cafe::bf) by AM0PR02CA0026.outlook.office365.com (2603:10a6:208:3e::39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.20 via Frontend Transport; Tue, 1 Dec 2020 11:28:21 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; sourceware.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;sourceware.org; dmarc=pass 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 AM5EUR03FT047.mail.protection.outlook.com (10.152.16.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.26 via Frontend Transport; Tue, 1 Dec 2020 11:28:21 +0000 Received: ("Tessian outbound 39167997cde8:v71"); Tue, 01 Dec 2020 11:28:21 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: df0b299435df19bb X-CR-MTA-TID: 64aa7808 Received: from 58354358317d.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 37A34B37-CDCF-4832-927D-9A9C32702BCD.1; Tue, 01 Dec 2020 11:28:05 +0000 Received: from EUR01-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 58354358317d.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 01 Dec 2020 11:28:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JxoD2zmQFcXJYv0K6At814rM0vTMGDXD6RBRFEbva4lvXXqpEsM4XVWUE+D57gSXC107cc2g66WyZfngw4naXbrW90xbLP72nO6qpJAYv58xkGkhGRRwkaLaeQ4uL6A68vTKlIxAZJRZoCu2sN1h91AziDcw53kTO6BHkZL0QwBqelxbQ4/ji8771daHp3AiHUtwocGuqvT3LGBs+cxM16VucWmkLteP9dOYIBg+w4RmQO8e7LMjVT7D/B2Eor91gQbH2HZO3XLQyv6QXVEg11hweFgCrmI8nY/e1gO21Jffh8GuiqVeY/c7ccj4X65cwXGRvdSEuju6HzmYw4gykw== 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=/KjuD/R933TulLFZxleGwk6f5AZ/LalwWFjioZJck8E=; b=n0J1VeRENEXG6Awt+VX73fiQFvHeDc77vCdXDE6iZLxsIZGvqdMkYW3+sA9X7acnPZbhD0MtR+skF//NAfnwnhNju/46sA11dN1VkIRo6iyKq5ok8M5efoP8YrWXL2YPkpRjVHNlgD8HEyaVzmqPgMvLldnIW14yw253tgIXU9u8nNjFa/jOGxjUmw5ZXdCb4lzOOg1/ZZ3siKzeVpy32wIWUeOY3u29yp1Ud+sbFD9DPde9V0IHZYBydNayVCETSlrq58a7fkl437tGkP4aJTetKSEM1KQ0nx9CU0p95JEMadsB2+8bydFKkyyqKN7qh0UrDBwqttPt2SLhPK8Z2A== 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 Received: from AM6PR08MB3957.eurprd08.prod.outlook.com (2603:10a6:20b:a2::14) by AM7PR08MB5493.eurprd08.prod.outlook.com (2603:10a6:20b:102::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.25; Tue, 1 Dec 2020 11:28:04 +0000 Received: from AM6PR08MB3957.eurprd08.prod.outlook.com ([fe80::9017:352a:257e:814a]) by AM6PR08MB3957.eurprd08.prod.outlook.com ([fe80::9017:352a:257e:814a%6]) with mapi id 15.20.3611.031; Tue, 1 Dec 2020 11:28:03 +0000 From: Alan Hayward To: Luis Machado CC: "gdb-patches\\@sourceware.org" , nd Subject: Re: [PATCH][AArch64] SVE/FPSIMD fixup for big endian Thread-Topic: [PATCH][AArch64] SVE/FPSIMD fixup for big endian Thread-Index: AQHWx0qHDTaVZK2q80W4zXDvy392N6niG3qA Date: Tue, 1 Dec 2020 11:28:03 +0000 Message-ID: References: <20201130185545.940242-1-luis.machado@linaro.org> In-Reply-To: <20201130185545.940242-1-luis.machado@linaro.org> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3608.120.23.2.4) Authentication-Results-Original: linaro.org; dkim=none (message not signed) header.d=none;linaro.org; dmarc=none action=none header.from=arm.com; x-originating-ip: [82.24.190.193] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: a1647876-8ca7-4b33-1660-08d895ec357b x-ms-traffictypediagnostic: AM7PR08MB5493:|VI1PR0802MB2302: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:8882;OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 06m6PATWyzbxo2UwK6/jpnveMh2APoU+YWWzCJ5nu2KwGBPxOoazkDz903ZKZ2ZRoiY+C5rxDdMFeQZn4RmlqOlCfR6Ap0GQj3Z5TpvWedeIclvPSV5VIniSWjj0zBKJWcpBrW4Vr7fpfnEkwKQ1OjHFxiS1sbc4Me5KNTG/q1ZODRf/W2EVPJKiiam+GA4e5x+NAyP8r887wstoB6Y44wrsrYg/wH1YzENQ/Wjzx09PLXgoKbOVBz501j+0WJ8PkuCWtldksLEKZhWSWNJ7tpD4Hug65GVLLRYaT4Ge4laeBsimaOZ9gN1xc43Q8mxO X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR08MB3957.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(136003)(396003)(366004)(346002)(376002)(6512007)(6486002)(8676002)(86362001)(2906002)(4326008)(64756008)(66556008)(91956017)(186003)(6506007)(66446008)(71200400001)(36756003)(76116006)(53546011)(66476007)(316002)(66946007)(54906003)(8936002)(5660300002)(26005)(478600001)(33656002)(2616005)(30864003)(83380400001)(6916009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?a2xMREorekR6RGpROGhrZ1VKNCt5SU92c285TUN0bW55NzRDUnZkL0hSbkVG?= =?utf-8?B?NjlNcE8wZU5aRW41Wm42ck9YZGx3b1ZnZlhMUzRHM2hoaWFsbEU2MTRvS0s0?= =?utf-8?B?ZE4xQi85QXFiOHAvWUU3eE1HRmdwV3R1Uklkc3p3d0ZzalR5Rk1FeU8rS2Jn?= =?utf-8?B?WHJhcHV1Y0s4UUNtclhOMDZSbTF5Z0g3Tys1cHFLSldLVVZZL0xQQmZkS054?= =?utf-8?B?Z3B3aitvcGI4MnBuMXRrNjhNWTB6Q3BhRUhkeUtlZUl1VkRvNlhpTVhKKzVX?= =?utf-8?B?VjJSZUlIZXhvUkxPQTNLcTZ1bDlCa3VobkFKcWhkR2pQU2Nzcm5tcXV3Szhq?= =?utf-8?B?UlJ3K0tUQm9ISjlHZHJ5cmorenVza1pIZXI5VEV2aXBkSERtV3FMM2dIYm45?= =?utf-8?B?M1BMaFliUEFiWWdoNnJNeWVCQnRTRlNGVU8rdTVxZHNFMUtmZE5sUGcrT2J2?= =?utf-8?B?M0dEdWkvOGsrVEVYNEFCN0UxZHZMZ2t6OHRxendxbGVjZlRZaWFmc3Z4MWJy?= =?utf-8?B?bVpvcGhCNFljRXNkZzYvbURTanBTU09JZjZGbExyM2xiZnhtR25XZlpZQzA0?= =?utf-8?B?NmJQN0U0RGFnejRVWTl0Sm5wNVlLRm5HUkFUNEtsQUpvdHI1anR3UElvMFhh?= =?utf-8?B?OFRMRm9CVkxLb1dZRTdUUUVHa1lwbUppSUJuUDdKN2NkUUU4N1JjTHdYcDhu?= =?utf-8?B?WFc4bDRwZEoxYWlIL2YrYUIzeGQ4YnZ0QVNiZTFRckpCZzJFOHdpeDgzdUdx?= =?utf-8?B?c01OL2pFNzFBSjBxL0N0WWhYTERWYmhGKzJ5SXJ2WDhBYmhKK0ZHN3FsOWdi?= =?utf-8?B?Q1dMRGVZMzhrYW9nOG5DZmo4MG4rTEE5VmFxcHl6RGVvTnU2STh2S2JpVVJH?= =?utf-8?B?M29FOHdOak1IUUFUTlk0NHhRT3FWNnVnNysvZ1dabW1HOXc3ZitkczF3bzdp?= =?utf-8?B?T0ROZEZyZnNVZm91SXI0QS9MRkJwM21ieVlHSi9QUFJCTzZVekc3TWR3alRp?= =?utf-8?B?UFFkaG9KMzluWGN2SytGQTArSUNFbExjMkl0Mm5ka0Y3Q3luUVVjaFFuMENI?= =?utf-8?B?eThvbXByN0lZa09xWWpvREdPSVQzemVteEUxbXlKeTZwaEkyUVNqbEx1VUs2?= =?utf-8?B?YW9qcFJHdXIxWW9mM3JHOHFDNWhWU1JTemdHZ3NkS2ZKNFYzV2pNOHJjVDNh?= =?utf-8?B?cENxNEdaNWx0MnZXcVkxdExhRllOYjU3ZTVGeWEwN2IreCtqL3RHaWkwd0NZ?= =?utf-8?B?QkZKZGdBMVNtWk11RmhKSTZGYkRTY01YbHJsYlhwL0U5TEQzMC82TS8yQ0hM?= =?utf-8?Q?pfEIJa+PILq7LGvsXgb2v9Bf5yE8lHGhV1?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR08MB5493 Original-Authentication-Results: linaro.org; dkim=none (message not signed) header.d=none;linaro.org; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT047.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 338441f7-0977-4829-916c-08d895ec2b07 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: QjIYwZ0qebxgbZ3C64L0XaxPJacMEsayXfFXAmGll8gMpUwgGGZh1Gysk0SWskCLRZZQyEzag9tu37TYi7Hzd0UE1/447zPu2p5WTNQ1nFwHXeLePMENSRNwTd2ftn0x8iGUVH/1ACoORyOnsl10KeySV/vzUJ011E4z4uQmEVIyjFly4XbJR4GHWDk7gh2U1gZNKDNktsn0+FOUI/O56CstslPGqJU2FKcmFGw12mF8jpjlFMGEucS20Tn0v2Wyx9XJR3vUnUSVkny32wxo6FPNKjX5YlW0SFud2dW4+nGM1pmeiZiFfCsnFVyrEzuh3qMeYhOJJtjeKGwYxIMWwHEEmxneQkN29gbQEN5WoTt5kcW6gl1MD8mz4mJQHD9PDASRuNDa6SJofR36B9lNRg== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(376002)(346002)(136003)(39860400002)(396003)(46966005)(6486002)(6506007)(54906003)(36756003)(83380400001)(336012)(86362001)(356005)(2616005)(186003)(6862004)(26005)(53546011)(70586007)(70206006)(478600001)(4326008)(82740400003)(82310400003)(81166007)(33656002)(36906005)(6512007)(30864003)(47076004)(2906002)(316002)(8676002)(5660300002)(8936002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Dec 2020 11:28:21.4225 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a1647876-8ca7-4b33-1660-08d895ec357b X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT047.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0802MB2302 X-Spam-Status: No, score=-14.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 Dec 2020 11:28:29 -0000 DQoNCj4gT24gMzAgTm92IDIwMjAsIGF0IDE4OjU1LCBMdWlzIE1hY2hhZG8gPGx1aXMubWFjaGFk b0BsaW5hcm8ub3JnPiB3cm90ZToNCj4gDQo+IFRoZSBGUFNJTUQgZHVtcCBpbiBzaWduYWwgZnJh bWVzIGFuZCBwdHJhY2UgRlBTSU1EIGR1bXAgaW4gdGhlIFNWRSBjb250ZXh0DQo+IHN0cnVjdHVy ZSBmb2xsb3dzIHRoZSB0YXJnZXQgZW5kaWFubmVzcywgd2hlcmVhcyB0aGUgU1ZFIGR1bXBzIGFy ZQ0KPiBlbmRpYW5uZXNzLWluZGVwZW5kZW50IChMRSkuDQo+IA0KPiBUaGVyZWZvcmUsIHdoZW4g dGhlIHN5c3RlbSBpcyBpbiBCRSBtb2RlLCB3ZSBuZWVkIHRvIHJldmVyc2UgdGhlIGJ5dGVzDQo+ IGZvciB0aGUgRlBTSU1EIGRhdGEuDQo+IA0KPiBHaXZlbiB0aGUgViByZWdpc3RlcnMgYXJlIGxh cmdlciB0aGFuIDY0LWJpdCwgSSd2ZSBhZGRlZCBhIHdheSBmb3IgdmFsdWUNCj4gYnl0ZXMgdG8g YmUgc2V0LCBhcyBvcHBvc2VkIHRvIHBhc3NpbmcgYSA2NC1iaXQgZml4ZWQgcXVhbnRpdHkuIFRo aXMgZml0cw0KPiBuaWNlbHkgd2l0aCB0aGUgdW53aW5kaW5nICpfZ290X2J5dGVzIGZ1bmN0aW9u IGFuZCBtYWtlcyB0aGUgdHJhZC1mcmFtZQ0KPiBtb3JlIGZsZXhpYmxlIGFuZCBjYXBhYmxlIG9m IHNhdmluZyBsYXJnZXIgcmVnaXN0ZXJzLg0KPiANCj4gVGhlIG1lbW9yeSBmb3IgdGhlIGJ5dGVz IGlzIGFsbG9jYXRlZCB2aWEgdGhlIGZyYW1lIG9ic3RhY2ssIHNvIGl0IGdldHMgZnJlZWQNCj4g YWZ0ZXIgd2UncmUgZG9uZSBpbnNwZWN0aW5nIHRoZSBmcmFtZS4NCj4gDQo+IGdkYi9DaGFuZ2VM b2c6DQo+IA0KPiBZWVlZLU1NLUREICBMdWlzIE1hY2hhZG8gIDxsdWlzLm1hY2hhZG9AbGluYXJv Lm9yZz4NCj4gDQo+IAkqIGFhcmNoNjQtbGludXgtdGRlcC5jIChhYXJjaDY0X2xpbnV4X3Jlc3Rv cmVfdnJlZykgTmV3IGZ1bmN0aW9uLg0KPiAJKGFhcmNoNjRfbGludXhfc2lnZnJhbWVfaW5pdCk6 IENhbGwgYWFyY2g2NF9saW51eF9yZXN0b3JlX3ZyZWcuDQo+IAkqIG5hdC9hYXJjaDY0LXN2ZS1s aW51eC1wdHJhY2UuYzogSW5jbHVkZSBlbmRpYW4uaC4NCj4gCShhYXJjaDY0X21heWJlX3N3YWIx MjgpOiBOZXcgZnVuY3Rpb24uDQo+IAkoYWFyY2g2NF9zdmVfcmVnc19jb3B5X3RvX3JlZ19idWYp DQo+IAkoYWFyY2g2NF9zdmVfcmVnc19jb3B5X2Zyb21fcmVnX2J1Zik6IEFkanVzdCBGUFNJTUQg ZW50cmllcy4NCj4gCSogdHJhZC1mcmFtZS5jICh0cmFkX2ZyYW1lX3Jlc2V0X3NhdmVkX3JlZ3Mp OiBJbml0aWFsaXplDQo+IAl0aGUgZGF0YSBmaWVsZC4NCj4gCShURl9SRUdfVkFMVUVfQllURVMp OiBOZXcgZW51bSB2YWx1ZS4NCj4gCSh0cmFkX2ZyYW1lX3ZhbHVlX2J5dGVzX3ApOiBOZXcgZnVu Y3Rpb24uDQo+IAkodHJhZF9mcmFtZV9zZXRfdmFsdWVfYnl0ZXMpOiBOZXcgZnVuY3Rpb24uDQo+ IAkodHJhZF9mcmFtZV9zZXRfcmVnX3ZhbHVlX2J5dGVzKTogTmV3IGZ1bmN0aW9uLg0KPiAJKHRy YWRfZnJhbWVfZ2V0X3ByZXZfcmVnaXN0ZXIpOiBIYW5kbGUgcmVnaXN0ZXIgdmFsdWVzIHNhdmVk IGFzIGJ5dGVzLg0KPiAJKiB0cmFkLWZyYW1lLmggKHRyYWRfZnJhbWVfc2V0X3JlZ192YWx1ZV9i eXRlcyk6IE5ldyBwcm90b3R5cGUuDQo+IAkoc3RydWN0IHRyYWRfZnJhbWVfc2F2ZWRfcmVnKSA8 ZGF0YT46IE5ldyBmaWVsZC4NCj4gCSh0cmFkX2ZyYW1lX3NldF92YWx1ZV9ieXRlcyk6IE5ldyBw cm90b3R5cGUuDQo+IAkodHJhZF9mcmFtZV92YWx1ZV9ieXRlc19wKTogTmV3IHByb3RvdHlwZS4N Cj4gLS0tDQo+IGdkYi9hYXJjaDY0LWxpbnV4LXRkZXAuYyAgICAgICAgICAgfCAxMTUgKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0NCj4gZ2RiL25hdC9hYXJjaDY0LXN2ZS1saW51eC1wdHJh Y2UuYyB8ICA1NyArKysrKysrKysrKysrLQ0KPiBnZGIvdHJhZC1mcmFtZS5jICAgICAgICAgICAg ICAgICAgIHwgIDQ2ICsrKysrKysrKysrLQ0KPiBnZGIvdHJhZC1mcmFtZS5oICAgICAgICAgICAg ICAgICAgIHwgIDE5ICsrKysrDQo+IDQgZmlsZXMgY2hhbmdlZCwgMjEzIGluc2VydGlvbnMoKyks IDI0IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2dkYi9hYXJjaDY0LWxpbnV4LXRk ZXAuYyBiL2dkYi9hYXJjaDY0LWxpbnV4LXRkZXAuYw0KPiBpbmRleCBjOTg5OGJkYWZkLi4xMDhm OTZiZTcxIDEwMDY0NA0KPiAtLS0gYS9nZGIvYWFyY2g2NC1saW51eC10ZGVwLmMNCj4gKysrIGIv Z2RiL2FhcmNoNjQtbGludXgtdGRlcC5jDQo+IEBAIC0xODAsNiArMTgwLDk0IEBAIHJlYWRfYWFy Y2g2NF9jdHggKENPUkVfQUREUiBjdHhfYWRkciwgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIs DQo+ICAgcmV0dXJuIG1hZ2ljOw0KPiB9DQo+IA0KPiArLyogR2l2ZW4gQ0FDSEUsIHVzZSB0aGUg dHJhZF9mcmFtZSogZnVuY3Rpb25zIHRvIHJlc3RvcmUgdGhlIEZQU0lNRA0KPiArICAgcmVnaXN0 ZXJzIGZyb20gYSBzaWduYWwgZnJhbWUuDQo+ICsNCj4gKyAgIFZSRUdfTlVNIGlzIHRoZSBudW1i ZXIgb2YgdGhlIFYgcmVnaXN0ZXIgYmVpbmcgcmVzdG9yZWQsIE9GRlNFVCBpcyB0aGUNCj4gKyAg IGFkZHJlc3MgY29udGFpbmluZyB0aGUgcmVnaXN0ZXIgdmFsdWUsIEJZVEVfT1JERVIgaXMgdGhl IGVuZGlhbm5lc3MgYW5kDQo+ICsgICBIQVNfU1ZFIHRlbGxzIHVzIGlmIHdlIGhhdmUgYSB2YWxp ZCBTVkUgY29udGV4dCBvciBub3QuICAqLw0KPiArDQo+ICtzdGF0aWMgdm9pZA0KPiArYWFyY2g2 NF9saW51eF9yZXN0b3JlX3ZyZWcgKHN0cnVjdCB0cmFkX2ZyYW1lX2NhY2hlICpjYWNoZSwgaW50 IG51bV9yZWdzLA0KPiArCQkJICAgIGludCB2cmVnX251bSwgQ09SRV9BRERSIG9mZnNldCwNCj4g KwkJCSAgICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciwgYm9vbCBoYXNfc3ZlKQ0KPiArew0K PiArICAvKiBXQVJOSU5HOiBTSU1EIHN0YXRlIGlzIGxhaWQgb3V0IGluIG1lbW9yeSBpbiB0YXJn ZXQtZW5kaWFuIGZvcm1hdCwgd2hpbGUNCj4gKyAgICAgU1ZFIHN0YXRlIGlzIGxhaWQgb3V0IGlu IGFuIGVuZGlhbm5lc3MtaW5kZXBlbmRlbnQgZm9ybWF0IChMRSkuDQo+ICsNCj4gKyAgICAgU28g d2UgaGF2ZSBhIGNvdXBsZSBjYXNlcyB0byBjb25zaWRlcjoNCj4gKw0KPiArICAgICAxIC0gSWYg dGhlIHRhcmdldCBpcyBiaWcgZW5kaWFuLCB0aGVuIFNJTUQgc3RhdGUgaXMgYmlnIGVuZGlhbiwN Cj4gKyAgICAgcmVxdWlyaW5nIGEgYnl0ZXN3YXAuDQo+ICsNCj4gKyAgICAgMiAtIElmIHRoZSB0 YXJnZXQgaXMgbGl0dGxlIGVuZGlhbiwgdGhlbiBTSU1EIHN0YXRlIGlzIGxpdHRsZSBlbmRpYW4s DQo+ICsgICAgIHdoaWNoIG1hdGNoZXMgdGhlIFNWRSBmb3JtYXQsIHNvIG5vIGJ5dGVzd2FwIGlz IG5lZWRlZC4gKi8NCj4gKw0KDQpXaXRoIHRoaXMgZnVuY3Rpb24sIHdlIGFyZSBvbmx5IGhhbmRs aW5nIEZQU0lNRCB2YWx1ZXMsIHNvIG5vIG5lZWQgdG8gbWVudGlvbiBTVkUuDQpBcyBpdCBpcyBu b3csIGl0IG1ha2VzIHRoZSBoYXNfc3ZlIHBhcnRzIGNvbmZ1c2luZyBiZWNhdXNlIHRoZXkgYXJl IGJlaW5nIHRyZWF0ZWQNCnRoZSBzYW1lIGFzIHRoZSByZXN0IG9mIHRoZSBmcHNpbWQuDQoNClRo ZSBzYW1lIGNvbW1lbnQgaXMgZmluZSB3aGVuIHVzZWQgZWxzZXdoZXJlIGluIHRoZSBwYXRjaC4N Cg0KDQo+ICsgIGlmIChieXRlX29yZGVyID09IEJGRF9FTkRJQU5fQklHKQ0KPiArICAgIHsNCj4g KyAgICAgIGdkYl9ieXRlIGJ1ZltWX1JFR0lTVEVSX1NJWkVdOw0KPiArDQo+ICsgICAgICBpZiAo dGFyZ2V0X3JlYWRfbWVtb3J5IChvZmZzZXQsIGJ1ZiwgVl9SRUdJU1RFUl9TSVpFKSAhPSAwKQ0K PiArCXsNCj4gKwkgIHNpemVfdCBzaXplID0gVl9SRUdJU1RFUl9TSVpFLzI7DQo+ICsNCj4gKwkg IC8qIFJlYWQgdGhlIHR3byBoYWx2ZXMgb2YgdGhlIFYgcmVnaXN0ZXIgaW4gcmV2ZXJzZSBieXRl IG9yZGVyLiAgKi8NCj4gKwkgIENPUkVfQUREUiB1NjQgPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVn ZXIgKGJ1Ziwgc2l6ZSwNCj4gKwkJCQkJCSAgICBieXRlX29yZGVyKTsNCj4gKwkgIENPUkVfQURE UiBsNjQgPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKGJ1ZiArIHNpemUsIHNpemUsDQo+ICsJ CQkJCQkgICAgYnl0ZV9vcmRlcik7DQo+ICsNCj4gKwkgIC8qIENvcHkgdGhlIHJldmVyc2VkIGJ5 dGVzIHRvIHRoZSBidWZmZXIuICAqLw0KPiArCSAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAoYnVm LCBzaXplLCBCRkRfRU5ESUFOX0xJVFRMRSwgbDY0KTsNCj4gKwkgIHN0b3JlX3Vuc2lnbmVkX2lu dGVnZXIgKGJ1ZiArIHNpemUgLCBzaXplLCBCRkRfRU5ESUFOX0xJVFRMRSwgdTY0KTsNCj4gKw0K PiArCSAgLyogTm93IHdlIGNhbiBzdG9yZSB0aGUgY29ycmVjdCBieXRlcyBmb3IgdGhlIFYgcmVn aXN0ZXIuICAqLw0KPiArCSAgdHJhZF9mcmFtZV9zZXRfcmVnX3ZhbHVlX2J5dGVzIChjYWNoZSwg QUFSQ0g2NF9WMF9SRUdOVU0gKyB2cmVnX251bSwNCj4gKwkJCQkJICBidWYsIFZfUkVHSVNURVJf U0laRSk7DQo+ICsJICB0cmFkX2ZyYW1lX3NldF9yZWdfdmFsdWVfYnl0ZXMgKGNhY2hlLA0KPiAr CQkJCQkgIG51bV9yZWdzICsgQUFSQ0g2NF9RMF9SRUdOVU0NCj4gKwkJCQkJICArIHZyZWdfbnVt LCBidWYsIFFfUkVHSVNURVJfU0laRSk7DQo+ICsJICB0cmFkX2ZyYW1lX3NldF9yZWdfdmFsdWVf Ynl0ZXMgKGNhY2hlLA0KPiArCQkJCQkgIG51bV9yZWdzICsgQUFSQ0g2NF9EMF9SRUdOVU0NCj4g KwkJCQkJICArIHZyZWdfbnVtLCBidWYsIERfUkVHSVNURVJfU0laRSk7DQo+ICsJICB0cmFkX2Zy YW1lX3NldF9yZWdfdmFsdWVfYnl0ZXMgKGNhY2hlLA0KPiArCQkJCQkgIG51bV9yZWdzICsgQUFS Q0g2NF9TMF9SRUdOVU0NCj4gKwkJCQkJICArIHZyZWdfbnVtLCBidWYsIFNfUkVHSVNURVJfU0la RSk7DQo+ICsJICB0cmFkX2ZyYW1lX3NldF9yZWdfdmFsdWVfYnl0ZXMgKGNhY2hlLA0KPiArCQkJ CQkgIG51bV9yZWdzICsgQUFSQ0g2NF9IMF9SRUdOVU0NCj4gKwkJCQkJICArIHZyZWdfbnVtLCBi dWYsIEhfUkVHSVNURVJfU0laRSk7DQo+ICsJICB0cmFkX2ZyYW1lX3NldF9yZWdfdmFsdWVfYnl0 ZXMgKGNhY2hlLA0KPiArCQkJCQkgIG51bV9yZWdzICsgQUFSQ0g2NF9CMF9SRUdOVU0NCj4gKwkJ CQkJICArIHZyZWdfbnVtLCBidWYsIEJfUkVHSVNURVJfU0laRSk7DQo+ICsNCj4gKwkgIGlmICho YXNfc3ZlKQ0KPiArCSAgICB0cmFkX2ZyYW1lX3NldF9yZWdfdmFsdWVfYnl0ZXMgKGNhY2hlLA0K PiArCQkJCQkgICAgbnVtX3JlZ3MgKyBBQVJDSDY0X1NWRV9WMF9SRUdOVU0NCj4gKwkJCQkJICAg ICsgdnJlZ19udW0sIGJ1ZiwgVl9SRUdJU1RFUl9TSVpFKTsNCj4gKwl9DQo+ICsgICAgICByZXR1 cm47DQo+ICsgICAgfQ0KPiArDQo+ICsgIC8qIExpdHRsZSBlbmRpYW4sIGp1c3QgcG9pbnQgYXQg dGhlIGFkZHJlc3MgY29udGFpbmluZyB0aGUgcmVnaXN0ZXINCj4gKyAgICAgdmFsdWUuICAqLw0K PiArICB0cmFkX2ZyYW1lX3NldF9yZWdfYWRkciAoY2FjaGUsIEFBUkNINjRfVjBfUkVHTlVNICsg dnJlZ19udW0sIG9mZnNldCk7DQo+ICsgIHRyYWRfZnJhbWVfc2V0X3JlZ19hZGRyIChjYWNoZSwg bnVtX3JlZ3MgKyBBQVJDSDY0X1EwX1JFR05VTSArIHZyZWdfbnVtLA0KPiArCQkJICAgb2Zmc2V0 KTsNCj4gKyAgdHJhZF9mcmFtZV9zZXRfcmVnX2FkZHIgKGNhY2hlLCBudW1fcmVncyArIEFBUkNI NjRfRDBfUkVHTlVNICsgdnJlZ19udW0sDQo+ICsJCQkgICBvZmZzZXQpOw0KPiArICB0cmFkX2Zy YW1lX3NldF9yZWdfYWRkciAoY2FjaGUsIG51bV9yZWdzICsgQUFSQ0g2NF9TMF9SRUdOVU0gKyB2 cmVnX251bSwNCj4gKwkJCSAgIG9mZnNldCk7DQo+ICsgIHRyYWRfZnJhbWVfc2V0X3JlZ19hZGRy IChjYWNoZSwgbnVtX3JlZ3MgKyBBQVJDSDY0X0gwX1JFR05VTSArIHZyZWdfbnVtLA0KPiArCQkJ ICAgb2Zmc2V0KTsNCj4gKyAgdHJhZF9mcmFtZV9zZXRfcmVnX2FkZHIgKGNhY2hlLCBudW1fcmVn cyArIEFBUkNINjRfQjBfUkVHTlVNICsgdnJlZ19udW0sDQo+ICsJCQkgICBvZmZzZXQpOw0KPiAr DQo+ICsgIGlmIChoYXNfc3ZlKQ0KPiArICAgIHRyYWRfZnJhbWVfc2V0X3JlZ19hZGRyIChjYWNo ZSwgbnVtX3JlZ3MgKyBBQVJDSDY0X1NWRV9WMF9SRUdOVU0NCj4gKwkJCSAgICAgKyB2cmVnX251 bSwgb2Zmc2V0KTsNCj4gKw0KPiArfQ0KPiArDQo+IC8qIEltcGxlbWVudCB0aGUgImluaXQiIG1l dGhvZCBvZiBzdHJ1Y3QgdHJhbXBfZnJhbWUuICAqLw0KPiANCj4gc3RhdGljIHZvaWQNCj4gQEAg LTMzMiwyNyArNDIwLDE2IEBAIGFhcmNoNjRfbGludXhfc2lnZnJhbWVfaW5pdCAoY29uc3Qgc3Ry dWN0IHRyYW1wX2ZyYW1lICpzZWxmLA0KPiANCj4gICAgICAgLyogSWYgdGhlcmUgd2FzIG5vIFNW RSBzZWN0aW9uIHRoZW4gc2V0IHVwIHRoZSBWIHJlZ2lzdGVycy4gICovDQo+ICAgICAgIGlmIChz dmVfcmVncyA9PSAwKQ0KPiAtCWZvciAoaW50IGkgPSAwOyBpIDwgMzI7IGkrKykNCj4gLQkgIHsN Cj4gLQkgICAgQ09SRV9BRERSIG9mZnNldCA9IChmcHNpbWQgKyBBQVJDSDY0X0ZQU0lNRF9WMF9P RkZTRVQNCj4gKwl7DQo+ICsJICBmb3IgKGludCBpID0gMDsgaSA8IDMyOyBpKyspDQo+ICsJICAg IHsNCj4gKwkgICAgICBDT1JFX0FERFIgb2Zmc2V0ID0gKGZwc2ltZCArIEFBUkNINjRfRlBTSU1E X1YwX09GRlNFVA0KPiAJCQkJICArIChpICogQUFSQ0g2NF9GUFNJTURfVlJFR19TSVpFKSk7DQo+ IA0KPiAtCSAgICB0cmFkX2ZyYW1lX3NldF9yZWdfYWRkciAodGhpc19jYWNoZSwgQUFSQ0g2NF9W MF9SRUdOVU0gKyBpLCBvZmZzZXQpOw0KPiAtCSAgICB0cmFkX2ZyYW1lX3NldF9yZWdfYWRkciAo dGhpc19jYWNoZSwNCj4gLQkJCQkgICAgIG51bV9yZWdzICsgQUFSQ0g2NF9RMF9SRUdOVU0gKyBp LCBvZmZzZXQpOw0KPiAtCSAgICB0cmFkX2ZyYW1lX3NldF9yZWdfYWRkciAodGhpc19jYWNoZSwN Cj4gLQkJCQkgICAgIG51bV9yZWdzICsgQUFSQ0g2NF9EMF9SRUdOVU0gKyBpLCBvZmZzZXQpOw0K PiAtCSAgICB0cmFkX2ZyYW1lX3NldF9yZWdfYWRkciAodGhpc19jYWNoZSwNCj4gLQkJCQkgICAg IG51bV9yZWdzICsgQUFSQ0g2NF9TMF9SRUdOVU0gKyBpLCBvZmZzZXQpOw0KPiAtCSAgICB0cmFk X2ZyYW1lX3NldF9yZWdfYWRkciAodGhpc19jYWNoZSwNCj4gLQkJCQkgICAgIG51bV9yZWdzICsg QUFSQ0g2NF9IMF9SRUdOVU0gKyBpLCBvZmZzZXQpOw0KPiAtCSAgICB0cmFkX2ZyYW1lX3NldF9y ZWdfYWRkciAodGhpc19jYWNoZSwNCj4gLQkJCQkgICAgIG51bV9yZWdzICsgQUFSQ0g2NF9CMF9S RUdOVU0gKyBpLCBvZmZzZXQpOw0KPiAtCSAgICBpZiAodGRlcC0+aGFzX3N2ZSAoKSkNCj4gLQkg ICAgICB0cmFkX2ZyYW1lX3NldF9yZWdfYWRkciAodGhpc19jYWNoZSwNCj4gLQkJCQkgICAgICAg bnVtX3JlZ3MgKyBBQVJDSDY0X1NWRV9WMF9SRUdOVU0gKyBpLA0KPiAtCQkJCSAgICAgICBvZmZz ZXQpOw0KPiAtCSAgfQ0KPiArCSAgICAgIGFhcmNoNjRfbGludXhfcmVzdG9yZV92cmVnICh0aGlz X2NhY2hlLCBudW1fcmVncywgaSwgb2Zmc2V0LA0KPiArCQkJCQkgIGJ5dGVfb3JkZXIsIHRkZXAt Pmhhc19zdmUgKCkpOw0KPiArCSAgICB9DQo+ICsJfQ0KPiAgICAgfQ0KPiANCj4gICB0cmFkX2Zy YW1lX3NldF9pZCAodGhpc19jYWNoZSwgZnJhbWVfaWRfYnVpbGQgKHNwLCBmdW5jKSk7DQo+IGRp ZmYgLS1naXQgYS9nZGIvbmF0L2FhcmNoNjQtc3ZlLWxpbnV4LXB0cmFjZS5jIGIvZ2RiL25hdC9h YXJjaDY0LXN2ZS1saW51eC1wdHJhY2UuYw0KPiBpbmRleCAyY2U5MGNjZmQ3Li45ZWY1ZTkxODAx IDEwMDY0NA0KPiAtLS0gYS9nZGIvbmF0L2FhcmNoNjQtc3ZlLWxpbnV4LXB0cmFjZS5jDQo+ICsr KyBiL2dkYi9uYXQvYWFyY2g2NC1zdmUtbGludXgtcHRyYWNlLmMNCj4gQEAgLTI2LDYgKzI2LDcg QEANCj4gI2luY2x1ZGUgImFyY2gvYWFyY2g2NC5oIg0KPiAjaW5jbHVkZSAiZ2Ric3VwcG9ydC9j b21tb24tcmVnY2FjaGUuaCINCj4gI2luY2x1ZGUgImdkYnN1cHBvcnQvYnl0ZS12ZWN0b3IuaCIN Cj4gKyNpbmNsdWRlIDxlbmRpYW4uaD4NCj4gDQo+IC8qIFNlZSBuYXQvYWFyY2g2NC1zdmUtbGlu dXgtcHRyYWNlLmguICAqLw0KPiANCj4gQEAgLTE0Miw2ICsxNDMsMjcgQEAgYWFyY2g2NF9zdmVf Z2V0X3N2ZXJlZ3MgKGludCB0aWQpDQo+ICAgcmV0dXJuIGJ1ZjsNCj4gfQ0KPiANCj4gKy8qIElm IHdlIGFyZSBydW5uaW5nIGluIEJFIG1vZGUsIGNvbnZlcnQgdGhlIGNvbnRlbnRzDQo+ICsgICBv ZiBWQUxVRSAoYSAxNiBieXRlIGJ1ZmZlcikgdG8gTEUuICAqLw0KPiArDQo+ICtzdGF0aWMgdm9p ZA0KPiArYWFyY2g2NF9tYXliZV9zd2FiMTI4IChnZGJfYnl0ZSAqdmFsdWUpDQo+ICt7DQo+ICsg IGdkYl9hc3NlcnQgKHZhbHVlICE9IG51bGxwdHIpOw0KPiArDQo+ICsjaWYgKF9fQllURV9PUkRF UiA9PSBfX0JJR19FTkRJQU4pDQo+ICsgIGdkYl9ieXRlIGNvcHlbMTZdOw0KPiArDQo+ICsgIC8q IFNhdmUgdGhlIG9yaWdpbmFsIHZhbHVlLiAgKi8NCj4gKyAgbWVtY3B5IChjb3B5LCB2YWx1ZSwg MTYpOw0KPiArDQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgMTU7IGkrKykNCj4gKyAgICB2YWx1 ZVtpXSA9IGNvcHlbMTUgLSBpXTsNCj4gKyNlbHNlDQo+ICsgIC8qIE5vdGhpbmcgdG8gYmUgZG9u ZS4gICovDQo+ICsjZW5kaWYNCj4gK30NCj4gKw0KPiAvKiBTZWUgbmF0L2FhcmNoNjQtc3ZlLWxp bnV4LXB0cmFjZS5oLiAgKi8NCj4gDQo+IHZvaWQNCj4gQEAgLTE4NCwxMSArMjA2LDIyIEBAIGFh cmNoNjRfc3ZlX3JlZ3NfY29weV90b19yZWdfYnVmIChzdHJ1Y3QgcmVnX2J1ZmZlcl9jb21tb24g KnJlZ19idWYsDQo+ICAgICB9DQo+ICAgZWxzZQ0KPiAgICAgew0KPiArICAgICAgLyogV0FSTklO RzogU0lNRCBzdGF0ZSBpcyBsYWlkIG91dCBpbiBtZW1vcnkgaW4gdGFyZ2V0LWVuZGlhbiBmb3Jt YXQsDQo+ICsJIHdoaWxlIFNWRSBzdGF0ZSBpcyBsYWlkIG91dCBpbiBhbiBlbmRpYW5uZXNzLWlu ZGVwZW5kZW50IGZvcm1hdCAoTEUpLg0KPiArDQo+ICsJIFNvIHdlIGhhdmUgYSBjb3VwbGUgY2Fz ZXMgdG8gY29uc2lkZXI6DQo+ICsNCj4gKwkgMSAtIElmIHRoZSB0YXJnZXQgaXMgYmlnIGVuZGlh biwgdGhlbiBTSU1EIHN0YXRlIGlzIGJpZyBlbmRpYW4sDQo+ICsJIHJlcXVpcmluZyBhIGJ5dGVz d2FwLg0KPiArDQo+ICsJIDIgLSBJZiB0aGUgdGFyZ2V0IGlzIGxpdHRsZSBlbmRpYW4sIHRoZW4g U0lNRCBzdGF0ZSBpcyBsaXR0bGUgZW5kaWFuLA0KPiArCSB3aGljaCBtYXRjaGVzIHRoZSBTVkUg Zm9ybWF0LCBzbyBubyBieXRlc3dhcCBpcyBuZWVkZWQuICovDQo+ICsNCj4gICAgICAgLyogVGhl cmUgaXMgbm8gU1ZFIHN0YXRlIHlldCAtIHRoZSByZWdpc3RlciBkdW1wIGNvbnRhaW5zIGEgZnBz aW1kDQo+IAkgc3RydWN0dXJlIGluc3RlYWQuICBUaGVzZSByZWdpc3RlcnMgc3RpbGwgZXhpc3Qg aW4gdGhlIGhhcmR3YXJlLCBidXQNCj4gCSB0aGUga2VybmVsIGhhcyBub3QgeWV0IGluaXRpYWxp c2VkIHRoZW0sIGFuZCBzbyB0aGV5IHdpbGwgYmUgbnVsbC4gICovDQo+IA0KPiAtICAgICAgY2hh ciAqemVyb19yZWcgPSAoY2hhciAqKSBhbGxvY2EgKFNWRV9QVF9TVkVfWlJFR19TSVpFICh2cSkp Ow0KPiArICAgICAgZ2RiX2J5dGUgKnplcm9fcmVnID0gKGdkYl9ieXRlICopIGFsbG9jYSAoU1ZF X1BUX1NWRV9aUkVHX1NJWkUgKHZxKSk7DQo+ICAgICAgIHN0cnVjdCB1c2VyX2Zwc2ltZF9zdGF0 ZSAqZnBzaW1kDQo+IAk9IChzdHJ1Y3QgdXNlcl9mcHNpbWRfc3RhdGUgKikoYmFzZSArIFNWRV9Q VF9GUFNJTURfT0ZGU0VUKTsNCj4gDQo+IEBAIC0xOTksNyArMjMyLDkgQEAgYWFyY2g2NF9zdmVf cmVnc19jb3B5X3RvX3JlZ19idWYgKHN0cnVjdCByZWdfYnVmZmVyX2NvbW1vbiAqcmVnX2J1ZiwN Cj4gDQo+ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQUFSQ0g2NF9TVkVfWl9SRUdTX05VTTsg aSsrKQ0KPiAJew0KPiAtCSAgbWVtY3B5ICh6ZXJvX3JlZywgJmZwc2ltZC0+dnJlZ3NbaV0sIHNp emVvZiAoX19pbnQxMjhfdCkpOw0KPiArCSAgbWVtY3B5ICh6ZXJvX3JlZywgJmZwc2ltZC0+dnJl Z3NbaV0sIDE2KTsNCj4gKwkgIC8qIEhhbmRsZSBiaWcgZW5kaWFuL2xpdHRsZSBlbmRpYW4gU0lN RC9TVkUgY29udmVyc2lvbi4gICovDQo+ICsJICBhYXJjaDY0X21heWJlX3N3YWIxMjggKHplcm9f cmVnKTsNCg0KSSB0aGluayB3ZSBoYXZlIGEgbG9uZyBzdGFuZGluZyBidWcgaGVyZS4gemVyb19y ZWcgd2FzIG1lYW50IHRvIHN0YXkgYXMgdGhlIHZhbHVlIDAuIEJ1dCB0aGVuDQppdCBnb3QgcmV1 c2VkIGFzIGEgZ2VuZXJhbCB0ZW1wIGJ1ZmZlci4NCkl04oCZcyBub3Qgc2hvd24gaW4gdGhlIGRp ZmYsIGJ1dCB3ZSBkbzoNCiogbWVtc2V0IHplcm9fcmVnIHRvIDANCiogdXNlIHplcm9fcmVnIGFz IGEgdGVtcCBidWZmZXIgZm9yIGNvcHlpbmcgZnBzaW1kIHZhbHVlcy4NCiogdXNlIHplcm9fcmVn IGFzIHZhbHVlIDAgZm9yIGZwc3IgYW5kIGZwY3IuDQoNClRoZSBtZW1zZXQgbmVlZHMgbW92aW5n IGFmdGVyIHVzaW5nIGl0IGZvciBmcHNpbWQuIChtYXliZSBhbHNvIHJlbmFtZSB6ZXJvX3JlZyB0 byBidWY/KQ0KDQpDYW4gd2UgYWxzbyByZWR1Y2UgdGhlIG51bWJlciBvZiBtZW1jcHlzIC0ganVz dCBieXRlIHN3YXAgdnJlZ3NbaV0gZGlyZWN0bHkgaW50byB0aGUgemVyb19yZWcgYnVmZmVyPw0K DQoNCj4gCSAgcmVnX2J1Zi0+cmF3X3N1cHBseSAoQUFSQ0g2NF9TVkVfWjBfUkVHTlVNICsgaSwg emVyb19yZWcpOw0KPiAJfQ0KPiANCj4gQEAgLTI0MCw3ICsyNzUsNyBAQCBhYXJjaDY0X3N2ZV9y ZWdzX2NvcHlfZnJvbV9yZWdfYnVmIChjb25zdCBzdHJ1Y3QgcmVnX2J1ZmZlcl9jb21tb24gKnJl Z19idWYsDQo+IAkga2VybmVsLCB3aGljaCBpcyB3aHkgd2UgdHJ5IHRvIGF2b2lkIGl0LiAgKi8N Cj4gDQo+ICAgICAgIGJvb2wgaGFzX3N2ZV9zdGF0ZSA9IGZhbHNlOw0KPiAtICAgICAgY2hhciAq emVyb19yZWcgPSAoY2hhciAqKSBhbGxvY2EgKFNWRV9QVF9TVkVfWlJFR19TSVpFICh2cSkpOw0K PiArICAgICAgZ2RiX2J5dGUgKnplcm9fcmVnID0gKGdkYl9ieXRlICopIGFsbG9jYSAoU1ZFX1BU X1NWRV9aUkVHX1NJWkUgKHZxKSk7DQo+ICAgICAgIHN0cnVjdCB1c2VyX2Zwc2ltZF9zdGF0ZSAq ZnBzaW1kDQo+IAk9IChzdHJ1Y3QgdXNlcl9mcHNpbWRfc3RhdGUgKikoYmFzZSArIFNWRV9QVF9G UFNJTURfT0ZGU0VUKTsNCj4gDQo+IEBAIC0yNzQsNiArMzA5LDE4IEBAIGFhcmNoNjRfc3ZlX3Jl Z3NfY29weV9mcm9tX3JlZ19idWYgKGNvbnN0IHN0cnVjdCByZWdfYnVmZmVyX2NvbW1vbiAqcmVn X2J1ZiwNCj4gCSB3cml0ZSBvdXQgc3RhdGUgYW5kIHJldHVybi4gICovDQo+ICAgICAgIGlmICgh aGFzX3N2ZV9zdGF0ZSkNCj4gCXsNCj4gKwkgIC8qIFdBUk5JTkc6IFNJTUQgc3RhdGUgaXMgbGFp ZCBvdXQgaW4gbWVtb3J5IGluIHRhcmdldC1lbmRpYW4gZm9ybWF0LA0KPiArCSAgICAgd2hpbGUg U1ZFIHN0YXRlIGlzIGxhaWQgb3V0IGluIGFuIGVuZGlhbm5lc3MtaW5kZXBlbmRlbnQgZm9ybWF0 DQo+ICsJICAgICAoTEUpLg0KPiArDQo+ICsJICAgICBTbyB3ZSBoYXZlIGEgY291cGxlIGNhc2Vz IHRvIGNvbnNpZGVyOg0KPiArDQo+ICsJICAgICAxIC0gSWYgdGhlIHRhcmdldCBpcyBiaWcgZW5k aWFuLCB0aGVuIFNJTUQgc3RhdGUgaXMgYmlnIGVuZGlhbiwNCj4gKwkgICAgIHJlcXVpcmluZyBh IGJ5dGVzd2FwLg0KPiArDQo+ICsJICAgICAyIC0gSWYgdGhlIHRhcmdldCBpcyBsaXR0bGUgZW5k aWFuLCB0aGVuIFNJTUQgc3RhdGUgaXMgbGl0dGxlDQo+ICsJICAgICBlbmRpYW4sIHdoaWNoIG1h dGNoZXMgdGhlIFNWRSBmb3JtYXQsIHNvIG5vIGJ5dGVzd2FwIGlzIG5lZWRlZC4gKi8NCj4gKw0K PiAJICAvKiBUaGUgY29sbGVjdHMgb2YgdGhlIFogcmVnaXN0ZXJzIHdpbGwgb3ZlcmZsb3cgdGhl IHNpemUgb2YgYSB2cmVnLg0KPiAJICAgICBUaGVyZSBpcyBlbm91Z2ggc3BhY2UgaW4gdGhlIHN0 cnVjdHVyZSB0byBhbGxvdyBmb3IgdGhpcywgYnV0IHdlDQo+IAkgICAgIGNhbm5vdCBvdmVyZmxv dyBpbnRvIHRoZSBuZXh0IHJlZ2lzdGVyIGFzIHdlIG1pZ2h0IG5vdCBiZQ0KPiBAQCAtMjg1LDcg KzMzMiw5IEBAIGFhcmNoNjRfc3ZlX3JlZ3NfY29weV9mcm9tX3JlZ19idWYgKGNvbnN0IHN0cnVj dCByZWdfYnVmZmVyX2NvbW1vbiAqcmVnX2J1ZiwNCj4gCQkgID09IHJlZ19idWYtPmdldF9yZWdp c3Rlcl9zdGF0dXMgKEFBUkNINjRfU1ZFX1owX1JFR05VTSArIGkpKQ0KPiAJCXsNCj4gCQkgIHJl Z19idWYtPnJhd19jb2xsZWN0IChBQVJDSDY0X1NWRV9aMF9SRUdOVU0gKyBpLCB6ZXJvX3JlZyk7 DQo+IC0JCSAgbWVtY3B5ICgmZnBzaW1kLT52cmVnc1tpXSwgemVyb19yZWcsIHNpemVvZiAoX19p bnQxMjhfdCkpOw0KPiArCQkgIC8qIEhhbmRsZSBiaWcgZW5kaWFuL2xpdHRsZSBlbmRpYW4gU0lN RC9TVkUgY29udmVyc2lvbi4gICovDQo+ICsJCSAgYWFyY2g2NF9tYXliZV9zd2FiMTI4ICh6ZXJv X3JlZyk7DQo+ICsJCSAgbWVtY3B5ICgmZnBzaW1kLT52cmVnc1tpXSwgemVyb19yZWcsIDE2KTsN Cj4gCQl9DQo+IAkgICAgfQ0KPiANCj4gZGlmZiAtLWdpdCBhL2dkYi90cmFkLWZyYW1lLmMgYi9n ZGIvdHJhZC1mcmFtZS5jDQo+IGluZGV4IGE2YTg0NzkwYTkuLjhhMWFhODE4YWQgMTAwNjQ0DQo+ IC0tLSBhL2dkYi90cmFkLWZyYW1lLmMNCj4gKysrIGIvZ2RiL3RyYWQtZnJhbWUuYw0KPiBAQCAt NTYsNiArNTYsNyBAQCB0cmFkX2ZyYW1lX3Jlc2V0X3NhdmVkX3JlZ3MgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLA0KPiAgICAgew0KPiAgICAgICByZWdzW3JlZ251bV0ucmVhbHJlZyA9IHJlZ251 bTsNCj4gICAgICAgcmVnc1tyZWdudW1dLmFkZHIgPSAtMTsNCj4gKyAgICAgIHJlZ3NbcmVnbnVt XS5kYXRhID0gbnVsbHB0cjsNCj4gICAgIH0NCj4gfQ0KPiANCj4gQEAgLTgzLDcgKzg0LDcgQEAg dHJhZF9mcmFtZV9hbGxvY19zYXZlZF9yZWdzIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFt ZSkNCj4gICByZXR1cm4gdHJhZF9mcmFtZV9hbGxvY19zYXZlZF9yZWdzIChnZGJhcmNoKTsNCj4g fQ0KPiANCj4gLWVudW0geyBURl9SRUdfVkFMVUUgPSAtMSwgVEZfUkVHX1VOS05PV04gPSAtMiB9 Ow0KPiArZW51bSB7IFRGX1JFR19WQUxVRSA9IC0xLCBURl9SRUdfVU5LTk9XTiA9IC0yLCBURl9S RUdfVkFMVUVfQllURVMgPSAtMyB9Ow0KPiANCj4gaW50DQo+IHRyYWRfZnJhbWVfdmFsdWVfcCAo c3RydWN0IHRyYWRfZnJhbWVfc2F2ZWRfcmVnIHRoaXNfc2F2ZWRfcmVnc1tdLCBpbnQgcmVnbnVt KQ0KPiBAQCAtMTA2LDYgKzEwNywxNiBAQCB0cmFkX2ZyYW1lX3JlYWxyZWdfcCAoc3RydWN0IHRy YWRfZnJhbWVfc2F2ZWRfcmVnIHRoaXNfc2F2ZWRfcmVnc1tdLA0KPiAJICAmJiB0aGlzX3NhdmVk X3JlZ3NbcmVnbnVtXS5hZGRyID09IC0xKTsNCj4gfQ0KPiANCj4gKy8qIFNlZSB0cmFkLWZyYW1l LmguICAqLw0KPiArDQo+ICtib29sDQo+ICt0cmFkX2ZyYW1lX3ZhbHVlX2J5dGVzX3AgKHN0cnVj dCB0cmFkX2ZyYW1lX3NhdmVkX3JlZyB0aGlzX3NhdmVkX3JlZ3NbXSwNCj4gKwkJCSAgaW50IHJl Z251bSkNCj4gK3sNCj4gKyAgcmV0dXJuICh0aGlzX3NhdmVkX3JlZ3NbcmVnbnVtXS5yZWFscmVn ID09IFRGX1JFR19WQUxVRV9CWVRFUw0KPiArCSAgJiYgdGhpc19zYXZlZF9yZWdzW3JlZ251bV0u ZGF0YSAhPSBudWxscHRyKTsNCj4gK30NCj4gKw0KPiB2b2lkDQo+IHRyYWRfZnJhbWVfc2V0X3Zh bHVlIChzdHJ1Y3QgdHJhZF9mcmFtZV9zYXZlZF9yZWcgdGhpc19zYXZlZF9yZWdzW10sDQo+IAkJ ICAgICAgaW50IHJlZ251bSwgTE9OR0VTVCB2YWwpDQo+IEBAIC0yMjQsNiArMjM1LDM1IEBAIHRy YWRfZnJhbWVfc2V0X3Vua25vd24gKHN0cnVjdCB0cmFkX2ZyYW1lX3NhdmVkX3JlZyB0aGlzX3Nh dmVkX3JlZ3NbXSwNCj4gICB0aGlzX3NhdmVkX3JlZ3NbcmVnbnVtXS5hZGRyID0gLTE7DQo+IH0N Cj4gDQo+ICsvKiBTZWUgdHJhZC1mcmFtZS5oLiAgKi8NCj4gKw0KPiArdm9pZA0KPiArdHJhZF9m cmFtZV9zZXRfdmFsdWVfYnl0ZXMgKHN0cnVjdCB0cmFkX2ZyYW1lX3NhdmVkX3JlZyB0aGlzX3Nh dmVkX3JlZ3NbXSwNCj4gKwkJCSAgICBpbnQgcmVnbnVtLCBjb25zdCBnZGJfYnl0ZSAqYnl0ZXMs DQo+ICsJCQkgICAgc2l6ZV90IHNpemUpDQo+ICt7DQo+ICsgIHRoaXNfc2F2ZWRfcmVnc1tyZWdu dW1dLnJlYWxyZWcgPSBURl9SRUdfVkFMVUVfQllURVM7DQo+ICsNCj4gKyAgLyogQWxsb2NhdGUg dGhlIHNwYWNlIGFuZCBjb3B5IHRoZSBkYXRhIGJ5dGVzLiAgKi8NCj4gKyAgdGhpc19zYXZlZF9y ZWdzW3JlZ251bV0uZGF0YSA9IEZSQU1FX09CU1RBQ0tfQ0FMTE9DIChzaXplLCBnZGJfYnl0ZSk7 DQoNCkFtIEkgcmlnaHQgdG8gYXNzdW1lIHRoaXMgbWVhbnMgZGF0YSB3aWxsIGJlIGF1dG9tYXRp Y2FsbHkgdW5hbGxvY2F0ZWQgd2hlbg0KdGhlIHRyYWRfZnJhbWVfc2F2ZWRfcmVnIGdvZXMgb3V0 IG9mIHNjb3BlPw0KDQoNCj4gKyAgbWVtY3B5ICh0aGlzX3NhdmVkX3JlZ3NbcmVnbnVtXS5kYXRh LCBieXRlcywgc2l6ZSk7DQo+ICt9DQo+ICsNCj4gKy8qIFNlZSB0cmFkLWZyYW1lLmguICAqLw0K PiArDQo+ICt2b2lkDQo+ICt0cmFkX2ZyYW1lX3NldF9yZWdfdmFsdWVfYnl0ZXMgKHN0cnVjdCB0 cmFkX2ZyYW1lX2NhY2hlICp0aGlzX3RyYWRfY2FjaGUsDQo+ICsJCQkJaW50IHJlZ251bSwgY29u c3QgZ2RiX2J5dGUgKmJ5dGVzLA0KPiArCQkJCXNpemVfdCBzaXplKQ0KPiArew0KPiArICAvKiBF eHRlcm5hbCBpbnRlcmZhY2UgZm9yIHVzZXJzIG9mIHRyYWRfZnJhbWVfY2FjaGUNCj4gKyAgICAg KHdobyBjYW5ub3QgYWNjZXNzIHRoZSBwcmV2X3JlZ3Mgb2JqZWN0IGRpcmVjdGx5KS4gICovDQo+ ICsgIHRyYWRfZnJhbWVfc2V0X3ZhbHVlX2J5dGVzICh0aGlzX3RyYWRfY2FjaGUtPnByZXZfcmVn cywgcmVnbnVtLCBieXRlcywNCj4gKwkJCSAgICAgIHNpemUpOw0KPiArfQ0KPiArDQo+ICsNCj4g Kw0KPiBzdHJ1Y3QgdmFsdWUgKg0KPiB0cmFkX2ZyYW1lX2dldF9wcmV2X3JlZ2lzdGVyIChzdHJ1 Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwNCj4gCQkJICAgICAgc3RydWN0IHRyYWRfZnJhbWVf c2F2ZWRfcmVnIHRoaXNfc2F2ZWRfcmVnc1tdLA0KPiBAQCAtMjQwLDYgKzI4MCwxMCBAQCB0cmFk X2ZyYW1lX2dldF9wcmV2X3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwN Cj4gICAgIC8qIFRoZSByZWdpc3RlcidzIHZhbHVlIGlzIGF2YWlsYWJsZS4gICovDQo+ICAgICBy ZXR1cm4gZnJhbWVfdW53aW5kX2dvdF9jb25zdGFudCAodGhpc19mcmFtZSwgcmVnbnVtLA0KPiAJ CQkJICAgICAgdGhpc19zYXZlZF9yZWdzW3JlZ251bV0uYWRkcik7DQo+ICsgIGVsc2UgaWYgKHRy YWRfZnJhbWVfdmFsdWVfYnl0ZXNfcCAodGhpc19zYXZlZF9yZWdzLCByZWdudW0pKQ0KPiArICAg IC8qIFRoZSByZWdpc3RlcidzIHZhbHVlIGlzIGF2YWlsYWJsZSBhcyBhIHNlcXVlbmNlIG9mIGJ5 dGVzLiAgKi8NCj4gKyAgICByZXR1cm4gZnJhbWVfdW53aW5kX2dvdF9ieXRlcyAodGhpc19mcmFt ZSwgcmVnbnVtLA0KPiArCQkJCSAgIHRoaXNfc2F2ZWRfcmVnc1tyZWdudW1dLmRhdGEpOw0KPiAg IGVsc2UNCj4gICAgIHJldHVybiBmcmFtZV91bndpbmRfZ290X29wdGltaXplZCAodGhpc19mcmFt ZSwgcmVnbnVtKTsNCj4gfQ0KPiBkaWZmIC0tZ2l0IGEvZ2RiL3RyYWQtZnJhbWUuaCBiL2dkYi90 cmFkLWZyYW1lLmgNCj4gaW5kZXggN2I1Nzg1NjE2ZS4uMzhkYjQzOTU3OSAxMDA2NDQNCj4gLS0t IGEvZ2RiL3RyYWQtZnJhbWUuaA0KPiArKysgYi9nZGIvdHJhZC1mcmFtZS5oDQo+IEBAIC01Miw2 ICs1MiwxMiBAQCB2b2lkIHRyYWRfZnJhbWVfc2V0X3JlZ19yZWdtYXAgKHN0cnVjdCB0cmFkX2Zy YW1lX2NhY2hlICp0aGlzX3RyYWRfY2FjaGUsDQo+IHZvaWQgdHJhZF9mcmFtZV9zZXRfcmVnX3Zh bHVlIChzdHJ1Y3QgdHJhZF9mcmFtZV9jYWNoZSAqdGhpc19jYWNoZSwNCj4gCQkJICAgICAgIGlu dCByZWdudW0sIExPTkdFU1QgdmFsKTsNCj4gDQo+ICsvKiBHaXZlbiB0aGUgY2FjaGUgaW4gVEhJ U19UUkFEX0NBQ0hFLCBzZXQgdGhlIHZhbHVlIG9mIFJFR05VTSB0byB0aGUgYnl0ZXMNCj4gKyAg IGNvbnRhaW5lZCBpbiBCWVRFUyB3aXRoIHNpemUgU0laRS4gICovDQo+ICt2b2lkIHRyYWRfZnJh bWVfc2V0X3JlZ192YWx1ZV9ieXRlcyAoc3RydWN0IHRyYWRfZnJhbWVfY2FjaGUgKnRoaXNfdHJh ZF9jYWNoZSwNCj4gKwkJCQkgICAgIGludCByZWdudW0sIGNvbnN0IGdkYl9ieXRlICpieXRlcywN Cj4gKwkJCQkgICAgIHNpemVfdCBzaXplKTsNCj4gKw0KPiBzdHJ1Y3QgdmFsdWUgKnRyYWRfZnJh bWVfZ2V0X3JlZ2lzdGVyIChzdHJ1Y3QgdHJhZF9mcmFtZV9jYWNoZSAqdGhpc190cmFkX2NhY2hl LA0KPiAJCQkJICAgICAgIHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLA0KPiAJCQkJICAg ICAgIGludCByZWdudW0pOw0KPiBAQCAtODYsNiArOTIsOCBAQCBzdHJ1Y3QgdHJhZF9mcmFtZV9z YXZlZF9yZWcNCj4gew0KPiAgIExPTkdFU1QgYWRkcjsgLyogQSBDT1JFX0FERFIgZml0cyBpbiBh IGxvbmdlc3QuICAqLw0KPiAgIGludCByZWFscmVnOw0KPiArICAvKiBSZWdpc3RlciBkYXRhIChm b3IgdmFsdWVzIHRoYXQgZG9uJ3QgZml0IGluIEFERFIpLiAgKi8NCj4gKyAgZ2RiX2J5dGUgKmRh dGE7DQo+IH07DQo+IA0KPiAvKiBFbmNvZGUgUkVHTlVNIHZhbHVlIGluIHRoZSB0cmFkLWZyYW1l LiAgKi8NCj4gQEAgLTEwNCw2ICsxMTIsMTIgQEAgdm9pZCB0cmFkX2ZyYW1lX3NldF9hZGRyIChz dHJ1Y3QgdHJhZF9mcmFtZV9zYXZlZF9yZWcgdGhpc190cmFkX2NhY2hlW10sDQo+IHZvaWQgdHJh ZF9mcmFtZV9zZXRfdW5rbm93biAoc3RydWN0IHRyYWRfZnJhbWVfc2F2ZWRfcmVnIHRoaXNfc2F2 ZWRfcmVnc1tdLA0KPiAJCQkgICAgIGludCByZWdudW0pOw0KPiANCj4gKy8qIEVuY29kZSBSRUdO VU0gdmFsdWUgaW4gdGhlIHRyYWQtZnJhbWUgYXMgYSBzZXF1ZW5jZSBvZiBieXRlcy4gIFRoaXMg aXMNCj4gKyAgIHVzZWZ1bCB3aGVuIHRoZSB2YWx1ZSBpcyBsYXJnZXIgdGhhbiB3aGF0IHByaW1p dGl2ZSB0eXBlcyBjYW4gaG9sZC4gICovDQo+ICt2b2lkIHRyYWRfZnJhbWVfc2V0X3ZhbHVlX2J5 dGVzIChzdHJ1Y3QgdHJhZF9mcmFtZV9zYXZlZF9yZWcgdGhpc19zYXZlZF9yZWdzW10sDQo+ICsJ CQkJIGludCByZWdudW0sIGNvbnN0IGdkYl9ieXRlICpieXRlcywNCj4gKwkJCQkgc2l6ZV90IHNp emUpOw0KPiArDQo+IC8qIENvbnZlbmllbmNlIGZ1bmN0aW9ucywgcmV0dXJuIG5vbi16ZXJvIGlm IHRoZSByZWdpc3RlciBoYXMgYmVlbg0KPiAgICBlbmNvZGVkIGFzIHNwZWNpZmllZC4gICovDQo+ IGludCB0cmFkX2ZyYW1lX3ZhbHVlX3AgKHN0cnVjdCB0cmFkX2ZyYW1lX3NhdmVkX3JlZyB0aGlz X3NhdmVkX3JlZ3NbXSwNCj4gQEAgLTExMyw2ICsxMjcsMTEgQEAgaW50IHRyYWRfZnJhbWVfYWRk cl9wIChzdHJ1Y3QgdHJhZF9mcmFtZV9zYXZlZF9yZWcgdGhpc19zYXZlZF9yZWdzW10sDQo+IGlu dCB0cmFkX2ZyYW1lX3JlYWxyZWdfcCAoc3RydWN0IHRyYWRfZnJhbWVfc2F2ZWRfcmVnIHRoaXNf c2F2ZWRfcmVnc1tdLA0KPiAJCQkgIGludCByZWdudW0pOw0KPiANCj4gKy8qIFJldHVybiBUUlVF IGlmIFJFR05VTSBpcyBzdG9yZWQgYXMgYSBzZXF1ZW5jZSBvZiBieXRlcywgYW5kIEZBTFNFDQo+ ICsgICBvdGhlcndpc2UuICAqLw0KPiArYm9vbCB0cmFkX2ZyYW1lX3ZhbHVlX2J5dGVzX3AgKHN0 cnVjdCB0cmFkX2ZyYW1lX3NhdmVkX3JlZyB0aGlzX3NhdmVkX3JlZ3NbXSwNCj4gKwkJCSAgICAg IGludCByZWdudW0pOw0KPiArDQo+IC8qIFJlc2V0IHRoZSBzYXZlIHJlZ3MgY2FjaGUsIHNldHRp bmcgcmVnaXN0ZXIgdmFsdWVzIHRvIC0xLiAgKi8NCj4gdm9pZCB0cmFkX2ZyYW1lX3Jlc2V0X3Nh dmVkX3JlZ3MgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLA0KPiAJCQkJICBzdHJ1Y3QgdHJhZF9m cmFtZV9zYXZlZF9yZWcgKnJlZ3MpOw0KPiAtLSANCj4gMi4yNS4xDQo+IA0KDQo=