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 X-Spam-Level: X-Spam-Status: No, score=-5.1 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CABECC48BE0 for ; Fri, 11 Jun 2021 10:03:45 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 75A486124C for ; Fri, 11 Jun 2021 10:03:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 75A486124C Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 147356E02B; Fri, 11 Jun 2021 10:03:45 +0000 (UTC) Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam07on2059.outbound.protection.outlook.com [40.107.95.59]) by gabe.freedesktop.org (Postfix) with ESMTPS id B23946E02B; Fri, 11 Jun 2021 10:03:43 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=APhQ/1SQcemaVbMUGqzSVzBkqPBVbZEE82ME9KrnVWkx4MMyZU++MuA3UXj0kh5h+i0mT4h6ByAUq2XWqGIQbbD4/ciWfMZfSpYaLuhZNcTaWuo4doQPjsL0dUWxs8YmxhEYphnIxgg9CsJ/zuAf/tzLo+uvc7lZA/tTItvq9aDBLLoIa49Agic546KNT65NRjc9BC7jtWrRlAP5DTApcJdxIcGAYHK5h7i0hsdy/SSttqzgj6S9tTlMHvv5jFANoFwL+I1lyATBGc/zT7KNQN2Fis8q7Bof6XxCFk2shSCd3HcOVe7dDY8PbrNTWSfY8DjcTCanc29dioNktloHTQ== 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=u/DtIqOEAO8F+XNWtJaMrksM7mVQh2gS6tiEpB0v4FM=; b=H1VvvbkVCm7SCQLEGGc33MlnglFULmNyysAn0545V+QOWEUXrx+YPppQj5PernRcr91a2izkZGcefAVv3gxWsEmavVOpo0OPEQzOw0M1S9AMlEHqLN8aZv08dbEA7fCID7SXeBY7mHObLWhpLPzrB3e4/U1iSOgUa92+hz/fKtfYgUDQVNpV9Wy8mHaxoLA4GEAjuwpvvd5Y9Fz6DBbho9AlqW3lixwBu8wZb3/ntYfL5VgWg4DNgqOyr/Z9Hof+G+/B/gLlD7hqFms6OLANS0uuwS8nfAyZljlgi9d3WM0SEtF6u41DlPFAbLTRuKBLI3jUX1teGWBXRZg5N6K8BA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=u/DtIqOEAO8F+XNWtJaMrksM7mVQh2gS6tiEpB0v4FM=; b=CxIYWEejaMvt214qejuOn/C9baCgIo3xKupB2goQgrKWtHeaPRCRAR9uk2xHBwmuN9nZs1b96PH2bwQwnSUoE5irNVc1Uo27Vn4UDSBvaTJ/5HoXbu/2H8e+Nouwph2PXhn6q+PLrquxF+fTfX7xj9/ws2jf0UJzlo3VvU8rnt4= Authentication-Results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=amd.com; Received: from MN2PR12MB3775.namprd12.prod.outlook.com (2603:10b6:208:159::19) by MN2PR12MB4110.namprd12.prod.outlook.com (2603:10b6:208:1dd::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.24; Fri, 11 Jun 2021 10:03:39 +0000 Received: from MN2PR12MB3775.namprd12.prod.outlook.com ([fe80::6c9e:1e08:7617:f756]) by MN2PR12MB3775.namprd12.prod.outlook.com ([fe80::6c9e:1e08:7617:f756%5]) with mapi id 15.20.4219.024; Fri, 11 Jun 2021 10:03:38 +0000 To: Daniel Vetter References: <20210609212959.471209-1-jason@jlekstrand.net> <4dc8314b-4366-2d92-4cca-1497a7c73721@amd.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <3e5ddb11-6df0-1aab-19e5-811dbbca79f6@amd.com> Date: Fri, 11 Jun 2021 12:03:31 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 In-Reply-To: Content-Language: en-US X-Originating-IP: [2a02:908:1252:fb60:108e:ba37:cb49:9c3] X-ClientProxiedBy: FRYP281CA0001.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10::11) To MN2PR12MB3775.namprd12.prod.outlook.com (2603:10b6:208:159::19) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [IPv6:2a02:908:1252:fb60:108e:ba37:cb49:9c3] (2a02:908:1252:fb60:108e:ba37:cb49:9c3) by FRYP281CA0001.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.9 via Frontend Transport; Fri, 11 Jun 2021 10:03:36 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a84fed97-0fad-469b-2043-08d92cc02ee2 X-MS-TrafficTypeDiagnostic: MN2PR12MB4110: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gOKEZmpHs3G5nMjLVJvsqZ/Z9iGp6Eu9RLmG8HzY5uTC4x/9gcQ1DsvMbS6K2z/Zwus7Lpc55TJ8KebreRkMO7O4U6r/v6ZDFCVRUGjFvAXDoZa0wA0AgLGoBAKP3nwTm721MVZVVs6RHu0c3iz4me2FSdQFzImAJVjTj9HZCc7t2BWP88B52o2AYkRvG8QYYGRWBiZzoS955ZzccWgiKx5BAiEdSB4ejqd9U8q+LbApRfrgd5j9JoJWBd5SWYA0VOUPvb+CgyEg/nZ9X9tyTinEOb0nKNVpIC1pvhbPuo4iWl3M94w6VxMtdLDovXhLNg4V2cUvEdYIXzb/Y0h6V98UZoauM8j6V24EsSL0B30x+Ye1xzT/CDw9YqX9z+XNpTV67VktI1zrqDFivWvwIJzm5/kjseQFllqFjQz6fIx7GCIPSSabPZ7mdqnUg1gcQVj1SdKN8EzSW1oY+gJWn3D1WSxMKncjSYEdvvCqiyXp0Ph7+ishecYjlH3bJjYESr0PMsAe8Q25svLu4MskGWIpCasbbZe6w2xAqShRulyUtgT6wp3uJg14OriFQ3NyxiRRps+yJsCTzpFviA2XHNM4fom++2ZnUGewk7EuFEp+euVMBT0EN24/DWzZQC6a9y+4KSwgu4glOcIcETzLOYDpVyPE+p0A0AMj8CEJFRoYSbLO0Z9M5kE1hOTCzkZ+ X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR12MB3775.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(346002)(366004)(396003)(39860400002)(376002)(86362001)(186003)(316002)(53546011)(54906003)(31696002)(478600001)(66556008)(2616005)(16526019)(4326008)(36756003)(83380400001)(66476007)(6916009)(5660300002)(31686004)(6486002)(8936002)(30864003)(8676002)(2906002)(38100700002)(66574015)(6666004)(66946007)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?alZPWVRhSjROcmxldC8vK1NJalAwYnZrbGtkZjN0VnZyazgvSWxwRC9VK1Vh?= =?utf-8?B?WmlYUjA5YjViUFk2RDFFYUtxRktXNUF2QUZBQVNveDM1WU9NaUNvYVhvWWhS?= =?utf-8?B?cmF2Mytzdi8xeTZBQW5odTl4YWQvdlFMTkRCSCtDV3VFcTRpSkEva09DTnNs?= =?utf-8?B?RWRFa2lhcXgvQTRBTGVpUHM0dzAyMnFNODZnaGxJZlJVamFFd2R5ZUdxMFA3?= =?utf-8?B?V2E4a3daSU9VNzZjVDF1Vk1IVW1SZFpZa3hKYzVwUURCVkJvTWkrY2lkeWxK?= =?utf-8?B?ZTQ5a3FBdXpyMjFPVVNNT3hVK3BpTTBDL0ZrOXFvR3k4cmJYNmpIU0orYTRC?= =?utf-8?B?NHlyVXVqNVpONXpkVGtjd2JFNXJjYkpONWRiMnEreUI4ZWh6ZEJuMU9pRlMy?= =?utf-8?B?WW00d095UmxqaCtJM0hTYW1TVWVJQWpwd2N0czdPVC9QYTFMWnQvOGVoZGk1?= =?utf-8?B?NmhwT1dQQVl1Wk9xYXVQRTlaWVNsNnF6djVhdXBWdWQ2Z0dyRS9rRUttZXhq?= =?utf-8?B?L1FRZXg2c0lDZXdoNEU2RmQ3dDJRK1diOEExcXdYbTZuUUlQdEIxTWZBM0Jj?= =?utf-8?B?NVg0Q0tXYmxoVEFYeEYrRmpnUkZOZUhLYndYVWh4dCtIbG0ycjRxenNMWE96?= =?utf-8?B?RXN3QVRubFY5KzFWcTh5bFFNWGVlRWhFV04wMUNESFZNaHVwdFJsNmV1MTJO?= =?utf-8?B?T1dEVVJIR3g1dXh1SWd0ZlBFN0J4MVJ6RDBlN2ZKU2Fnc0Q2NGI3eCtKOGpF?= =?utf-8?B?STZHMzJaZ2o1SEFheDRueXJHcXlJS2drWlVlMEphVllCblJWL1BQbEZPMWxE?= =?utf-8?B?L3dkTjFzbnNmVG16QThHQ2NuekNSWG1uV2lpMWl0NVllbnZrdkFtVkl0VU9J?= =?utf-8?B?ZXFzZEtPN1BHMUV1bS9abHNqU2k5OVAybzdscVJveDZMTWh2dDduZE5NdnNW?= =?utf-8?B?SW0xTTdNTGZjcDVWbGtVV1BoTWlsMldzRzg2RW1laER5dmRhMExTaE5HbWJB?= =?utf-8?B?UjFPa3c3eTJTMmE2cncyTjNCSVc1bGw0UFdjZGJkK2xmL3RLOGJUMDV4TG9E?= =?utf-8?B?OUZOVUM3cHNmcG1HR09ldzBZc0xXM3RYNWJ5RXRCcWlhSzlia1hzTkk3NGNz?= =?utf-8?B?aTBxQjN0RnJERkZHRTVXWVVUK0ZhZGtvZE5IbjFGTVNLTGNpb1o4MVlqbURC?= =?utf-8?B?ZjR2NThyMnV4REhYZlI2RUFpM0M4R3YrcVpCSjdsOUZBcUl4RnVwekhncmVE?= =?utf-8?B?R29sRGZlYm9FVGg3U2pmREI1N0tiODJYOEEyVklaSnM2dllsclFJWGNoSTZO?= =?utf-8?B?cmk4eWhoWHhKK2tWWVByZGx5TmdKZUtWZ1NmT1pVcWxFUEFhaXFST1IvYUd4?= =?utf-8?B?MER0KytWR2FFVllSZWhWWjFmclFwMlBHakZuODlyY0pubnFhc0MrTVlDa0x5?= =?utf-8?B?d3dkVDFzNHNoRXBhWE85WFdtcVBIbVl2dDQ0VUlaWk5odlFLZExobVlkcjM3?= =?utf-8?B?emw2YlNweXptRVRPWVZRWmx3UkR2N3F4RmpHMFc0dktBU055aEsyTnZGbjVw?= =?utf-8?B?ajdOc3U1VTN5RjJyWDloZlhva3JsU3dGYjJTRE5aSVE5QTk0UWtuS2pMV09x?= =?utf-8?B?K29FSUNJdlhJU25INGpRa1NpK0hVT2M5TjRVTWZPRkI4UlVhNjArRUVhSnMw?= =?utf-8?B?T1U1K2s2cVRhQXNqanVjbFV0bElIWmQ3RmY5WGIvRUNqa0pXWWh6aXZCRWNj?= =?utf-8?B?cGNOV2E0MW9TeS9FUGtSbUZmRWRFVlNCTjgxSC8yVjFIWWNwSSs0S2ljQXJt?= =?utf-8?B?bkJCWG50ZHFRaXRDbHlPZ3pkKzR0SU9mb0hpTEQ4NDBqRFZYc3M0UW80Njlz?= =?utf-8?Q?uaZeZ9/VV37Cm?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: a84fed97-0fad-469b-2043-08d92cc02ee2 X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3775.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2021 10:03:38.4398 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /ZR0ExfvvhDKoU95wgnbwJaYMBEfNyuvLoeHd2QHccUzGxikZl35oPj98QRac2Ux X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4110 Subject: Re: [Intel-gfx] [PATCH 0/5] dma-fence, i915: Stop allowing SLAB_TYPESAFE_BY_RCU for dma_fence X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?Q?Thomas_Hellstr=c3=b6m?= , Daniel Vetter , intel-gfx , dri-devel , Matthew Auld , Dave Airlie Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" QW0gMTEuMDYuMjEgdW0gMTE6MzMgc2NocmllYiBEYW5pZWwgVmV0dGVyOgo+IE9uIEZyaSwgSnVu IDExLCAyMDIxIGF0IDA5OjQyOjA3QU0gKzAyMDAsIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+ IEFtIDExLjA2LjIxIHVtIDA5OjIwIHNjaHJpZWIgRGFuaWVsIFZldHRlcjoKPj4+IE9uIEZyaSwg SnVuIDExLCAyMDIxIGF0IDg6NTUgQU0gQ2hyaXN0aWFuIEvDtm5pZwo+Pj4gPGNocmlzdGlhbi5r b2VuaWdAYW1kLmNvbT4gd3JvdGU6Cj4+Pj4gQW0gMTAuMDYuMjEgdW0gMjI6NDIgc2NocmllYiBE YW5pZWwgVmV0dGVyOgo+Pj4+PiBPbiBUaHUsIEp1biAxMCwgMjAyMSBhdCAxMDoxMCBQTSBKYXNv biBFa3N0cmFuZCA8amFzb25Aamxla3N0cmFuZC5uZXQ+IHdyb3RlOgo+Pj4+Pj4gT24gVGh1LCBK dW4gMTAsIDIwMjEgYXQgODozNSBBTSBKYXNvbiBFa3N0cmFuZCA8amFzb25Aamxla3N0cmFuZC5u ZXQ+IHdyb3RlOgo+Pj4+Pj4+IE9uIFRodSwgSnVuIDEwLCAyMDIxIGF0IDY6MzAgQU0gRGFuaWVs IFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4gd3JvdGU6Cj4+Pj4+Pj4+IE9uIFRodSwg SnVuIDEwLCAyMDIxIGF0IDExOjM5IEFNIENocmlzdGlhbiBLw7ZuaWcKPj4+Pj4+Pj4gPGNocmlz dGlhbi5rb2VuaWdAYW1kLmNvbT4gd3JvdGU6Cj4+Pj4+Pj4+PiBBbSAxMC4wNi4yMSB1bSAxMToy OSBzY2hyaWViIFR2cnRrbyBVcnN1bGluOgo+Pj4+Pj4+Pj4+IE9uIDA5LzA2LzIwMjEgMjI6Mjks IEphc29uIEVrc3RyYW5kIHdyb3RlOgo+Pj4+Pj4+Pj4+PiBXZSd2ZSB0cmllZCB0byBrZWVwIGl0 IHNvbWV3aGF0IGNvbnRhaW5lZCBieSBkb2luZyBtb3N0IG9mIHRoZSBoYXJkIHdvcmsKPj4+Pj4+ Pj4+Pj4gdG8gcHJldmVudCBhY2Nlc3Mgb2YgcmVjeWNsZWQgb2JqZWN0cyB2aWEgZG1hX2ZlbmNl X2dldF9yY3Vfc2FmZSgpLgo+Pj4+Pj4+Pj4+PiBIb3dldmVyLCBhIHF1aWNrIGdyZXAgb2Yga2Vy bmVsIHNvdXJjZXMgc2F5cyB0aGF0LCBvZiB0aGUgMzAgaW5zdGFuY2VzCj4+Pj4+Pj4+Pj4+IG9m IGRtYV9mZW5jZV9nZXRfcmN1Kiwgb25seSAxMSBvZiB0aGVtIHVzZSBkbWFfZmVuY2VfZ2V0X3Jj dV9zYWZlKCkuCj4+Pj4+Pj4+Pj4+IEl0J3MgbGlrZWx5IHRoZXJlIGJlYXIgdHJhcHMgaW4gRFJN IGFuZCByZWxhdGVkIHN1YnN5c3RlbXMganVzdCB3YWl0aW5nCj4+Pj4+Pj4+Pj4+IGZvciBzb21l b25lIHRvIGFjY2lkZW50YWxseSBzdGVwIGluIHRoZW0uCj4+Pj4+Pj4+Pj4gLi4uYmVjYXVzZSBk bWFfZmVuY2VfZ2V0X3JjdV9zYWZlIGFwZWFycyB0byBiZSBhYm91dCB3aGV0aGVyIHRoZQo+Pj4+ Pj4+Pj4+ICpwb2ludGVyKiB0byB0aGUgZmVuY2UgaXRzZWxmIGlzIHJjdSBwcm90ZWN0ZWQsIG5v dCBhYm91dCB0aGUgZmVuY2UKPj4+Pj4+Pj4+PiBvYmplY3QgaXRzZWxmLgo+Pj4+Pj4+Pj4gWWVz LCBleGFjdGx5IHRoYXQuCj4+Pj4+Pj4gVGhlIGZhY3QgdGhhdCBib3RoIG9mIHlvdSB0aGluayB0 aGlzIGVpdGhlciBtZWFucyB0aGF0IEkndmUgY29tcGxldGVseQo+Pj4+Pj4+IG1pc3NlZCB3aGF0 J3MgZ29pbmcgb24gd2l0aCBSQ1VzIGhlcmUgKHBvc3NpYmxlIGJ1dCwgaW4gdGhpcyBjYXNlLCBJ Cj4+Pj4+Pj4gdGhpbmsgdW5saWtlbHkpIG9yIFJDVXMgb24gZG1hIGZlbmNlcyBzaG91bGQgc2Nh cmUgdXMgYWxsLgo+Pj4+Pj4gVGFraW5nIGEgc3RlcCBiYWNrIGZvciBhIHNlY29uZCBhbmQgaWdu b3JpbmcgU0xBQl9UWVBFU0FGRV9CWV9SQ1UgYXMKPj4+Pj4+IHN1Y2gsICBJJ2QgbGlrZSB0byBh c2sgYSBzbGlnaHRseSBkaWZmZXJlbnQgcXVlc3Rpb246ICBXaGF0IGFyZSB0aGUKPj4+Pj4+IHJ1 bGVzIGFib3V0IHdoYXQgaXMgYWxsb3dlZCB0byBiZSBkb25lIHVuZGVyIHRoZSBSQ1UgcmVhZCBs b2NrIGFuZAo+Pj4+Pj4gd2hhdCBndWFyYW50ZWVzIGRvZXMgYSBkcml2ZXIgbmVlZCB0byBwcm92 aWRlPwo+Pj4+Pj4KPj4+Pj4+IEkgdGhpbmsgc28gZmFyIHRoYXQgd2UndmUgYWxsIGFncmVlZCBv biB0aGUgZm9sbG93aW5nOgo+Pj4+Pj4KPj4+Pj4+ICAgICAxLiBGcmVlaW5nIGFuIHVuc2lnbmFs ZWQgZmVuY2UgaXMgb2sgYXMgbG9uZyBhcyBpdCBkb2Vzbid0IGhhdmUgYW55Cj4+Pj4+PiBwZW5k aW5nIGNhbGxiYWNrcy4gIChDYWxsYmFja3Mgc2hvdWxkIGhvbGQgYSByZWZlcmVuY2UgYW55d2F5 KS4KPj4+Pj4+Cj4+Pj4+PiAgICAgMi4gVGhlIHBvaW50ZXIgcmFjZSBzb2x2ZWQgYnkgZG1hX2Zl bmNlX2dldF9yY3Vfc2FmZSBpcyByZWFsIGFuZAo+Pj4+Pj4gcmVxdWlyZXMgdGhlIGxvb3AgdG8g c29ydCBvdXQuCj4+Pj4+Pgo+Pj4+Pj4gQnV0IGxldCdzIHNheSBJIGhhdmUgYSBkbWFfZmVuY2Ug cG9pbnRlciB0aGF0IEkgZ290IGZyb20sIHNheSwgY2FsbGluZwo+Pj4+Pj4gZG1hX3Jlc3ZfZXhj bF9mZW5jZSgpIHVuZGVyIHJjdV9yZWFkX2xvY2soKS4gIFdoYXQgYW0gSSBhbGxvd2VkIHRvIGRv Cj4+Pj4+PiB3aXRoIGl0IHVuZGVyIHRoZSBSQ1UgbG9jaz8gIFdoYXQgYXNzdW1wdGlvbnMgY2Fu IEkgbWFrZT8gIElzIHRoaXMKPj4+Pj4+IGNvZGUsIGZvciBpbnN0YW5jZSwgb2s/Cj4+Pj4+Pgo+ Pj4+Pj4gcmN1X3JlYWRfbG9jaygpOwo+Pj4+Pj4gZmVuY2UgPSBkbWFfcmVzdl9leGNsX2ZlbmNl KG9iaik7Cj4+Pj4+PiBpZGxlID0gIWZlbmNlIHx8IHRlc3RfYml0KERNQV9GRU5DRV9GTEFHX1NJ R05BTEVEX0JJVCwgJmZlbmNlLT5mbGFncyk7Cj4+Pj4+PiByY3VfcmVhZF91bmxvY2soKTsKPj4+ Pj4+Cj4+Pj4+PiBUaGlzIGNvZGUgdmVyeSBtdWNoIGxvb2tzIGNvcnJlY3QgdW5kZXIgdGhlIGZv bGxvd2luZyBhc3N1bXB0aW9uczoKPj4+Pj4+Cj4+Pj4+PiAgICAgMS4gQSB2YWxpZCBmZW5jZSBw b2ludGVyIHN0YXlzIGFsaXZlIHVuZGVyIHRoZSBSQ1UgcmVhZCBsb2NrCj4+Pj4+PiAgICAgMi4g U0lHTkFMRURfQklUIGlzIHNldC1vbmNlIChpdCdzIG5ldmVyIHVuc2V0IGFmdGVyIGJlaW5nIHNl dCkuCj4+Pj4+Pgo+Pj4+Pj4gSG93ZXZlciwgaWYgaXQgd2VyZSwgd2Ugd291bGRuJ3QgaGF2ZSBk bWFfcmVzdl90ZXN0X3NpbmduYWxlZCgpLCBub3cKPj4+Pj4+IHdvdWxkIHdlPyA6LSkKPj4+Pj4+ Cj4+Pj4+PiBUaGUgbW9tZW50IHlvdSBpbnRyb2R1Y2UgQU5ZIGRtYV9mZW5jZSByZWN5Y2xpbmcg dGhhdCByZWN5Y2xlcyBhCj4+Pj4+PiBkbWFfZmVuY2Ugd2l0aGluIGEgc2luZ2xlIFJDVSBncmFj ZSBwZXJpb2QsIGFsbCB5b3VyIGFzc3VtcHRpb25zIGJyZWFrCj4+Pj4+PiBkb3duLiAgU0xBQl9U WVBFU0FGRV9CWV9SQ1UgaXMganVzdCBvbmUgd2F5IHRoYXQgaTkxNSBkb2VzIHRoaXMuICBXZQo+ Pj4+Pj4gYWxzbyBoYXZlIGEgbGl0dGxlIGk5MTVfcmVxdWVzdCByZWN5Y2xlciB0byB0cnkgYW5k IGhlbHAgd2l0aCBtZW1vcnkKPj4+Pj4+IHByZXNzdXJlIHNjZW5hcmlvcyBpbiBjZXJ0YWluIGNy aXRpY2FsIHNlY3Rpb25zIHRoYXQgYWxzbyBkb2Vzbid0Cj4+Pj4+PiByZXNwZWN0IFJDVSBncmFj ZSBwZXJpb2RzLiAgQW5kLCBhcyBtZW50aW9uZWQgbXVsdGlwbGUgdGltZXMsIG91cgo+Pj4+Pj4g cmVjeWNsaW5nIGxlYWtzIGludG8gZXZlcnkgb3RoZXIgZHJpdmVyIGJlY2F1c2UsIHRoYW5rcyB0 byBpOTE1J3MKPj4+Pj4+IGNob2ljZSwgdGhlIGFib3ZlIDQtbGluZSBjb2RlIHNuaXBwZXQgaXNu J3QgdmFsaWQgQU5ZV0hFUkUgaW4gdGhlCj4+Pj4+PiBrZXJuZWwuCj4+Pj4+Pgo+Pj4+Pj4gU28g dGhlIHF1ZXN0aW9uIEknbSByYWlzaW5nIGlzbid0IHNvIG11Y2ggYWJvdXQgdGhlIHJ1bGVzIHRv ZGF5Lgo+Pj4+Pj4gVG9kYXksIHdlIGxpdmUgaW4gdGhlIHdpbGQgd2lsZCB3ZXN0IHdoZXJlIGV2 ZXJ5dGhpbmcgaXMgWU9MTy4gIEJ1dAo+Pj4+Pj4gd2hlcmUgZG8gd2Ugd2FudCB0byBnbz8gIERv IHdlIGxpa2UgdGhpcyB3aWxkIHdlc3Qgd29ybGQ/ICBTbyB3ZSB3YW50Cj4+Pj4+PiBtb3JlIGNv bnNpc3RlbmN5IHVuZGVyIHRoZSBSQ1UgcmVhZCBsb2NrPyAgSWYgc28sIHdoYXQgZG8gd2Ugd2Fu dCB0aGUKPj4+Pj4+IHJ1bGVzIHRvIGJlPwo+Pj4+Pj4KPj4+Pj4+IE9uZSBvcHRpb24gd291bGQg YmUgdG8gYWNjZXB0IHRoZSB3aWxkLXdlc3Qgd29ybGQgd2UgbGl2ZSBpbiBhbmQgc2F5Cj4+Pj4+ PiAiVGhlIFJDVSByZWFkIGxvY2sgZ2FpbnMgeW91IG5vdGhpbmcuICBJZiB5b3Ugd2FudCB0byB0 b3VjaCB0aGUgZ3V0cwo+Pj4+Pj4gb2YgYSBkbWFfZmVuY2UsIHRha2UgYSByZWZlcmVuY2UiLiAg QnV0LCBhdCB0aGF0IHBvaW50LCB3ZSdyZSBlYXRpbmcKPj4+Pj4+IHR3byBhdG9taWNzIGZvciBl dmVyeSB0aW1lIHNvbWVvbmUgd2FudHMgdG8gbG9vayBhdCBhIGRtYV9mZW5jZS4gIERvCj4+Pj4+ PiB3ZSB3YW50IHRoYXQ/Cj4+Pj4+Pgo+Pj4+Pj4gQWx0ZXJuYXRpdmVseSwgYW5kIHRoaXMgd2hh dCBJIHRoaW5rIERhbmllbCBhbmQgSSB3ZXJlIHRyeWluZyB0bwo+Pj4+Pj4gcHJvcG9zZSBoZXJl LCBpcyB0aGF0IHdlIHBsYWNlIHNvbWUgY29uc3RyYWludHMgb24gZG1hX2ZlbmNlCj4+Pj4+PiBy ZWN5Y2xpbmcuICBTcGVjaWZpY2FsbHkgdGhhdCwgdW5kZXIgdGhlIFJDVSByZWFkIGxvY2ssIHRo ZSBmZW5jZQo+Pj4+Pj4gZG9lc24ndCBzdWRkZW5seSBiZWNvbWUgYSBuZXcgZmVuY2UuICBBbGwg b2YgdGhlIGltbXV0YWJpbGl0eSBhbmQKPj4+Pj4+IG9uY2UtbXV0YWJpbGl0eSBndWFyYW50ZWVz IG9mIHZhcmlvdXMgYml0cyBvZiBkbWFfZmVuY2UgaG9sZCBhcyBsb25nCj4+Pj4+PiBhcyB5b3Ug aGF2ZSB0aGUgUkNVIHJlYWQgbG9jay4KPj4+Pj4gWWVhaCB0aGlzIGlzIHN1Ym9wdGltYWwuIFRv byBtYW55IHBvdGVudGlhbCBidWdzLCBub3QgZW5vdWdoIGJlbmVmaXRzLgo+Pj4+Pgo+Pj4+PiBU aGlzIGVudGlyZSBfX3JjdSBidXNpbmVzcyBzdGFydGVkIHNvIHRoYXQgdGhlcmUgd291bGQgYmUg YSBsb2NrbGVzcwo+Pj4+PiB3YXkgdG8gZ2V0IGF0IGZlbmNlcywgb3IgYXQgbGVhc3QgdGhlIGV4 Y2x1c2l2ZSBvbmUuIFRoYXQgZGlkIG5vdAo+Pj4+PiByZWFsbHkgcGFuIG91dC4gSSB0aGluayB3 ZSBoYXZlIGEgZmV3IG9wdGlvbnM6Cj4+Pj4+Cj4+Pj4+IC0gZHJvcCB0aGUgaWRlYSBvZiByY3Uv bG9ja2xlc3MgZG1hLWZlbmNlIGFjY2VzcyBvdXRyaWdodC4gQSBxdWljawo+Pj4+PiBzZXF1ZW5j ZSBvZiBncmFiYmluZyB0aGUgbG9jaywgYWNxdWlyaW5nIHRoZSBkbWFfZmVuY2UgYW5kIHRoZW4K Pj4+Pj4gZHJvcHBpbmcgeW91ciBsb2NrIGFnYWluIGlzIHByb2JhYmx5IHBsZW50eSBnb29kLiBU aGVyZSdzIGEgbG90IG9mCj4+Pj4+IGNhbGxfcmN1IGFuZCBvdGhlciBzdHVmZiB3ZSBjb3VsZCBw cm9iYWJseSBkZWxldGUuIEkgaGF2ZSBubyBpZGVhIHdoYXQKPj4+Pj4gdGhlIHBlcmYgaW1wYWN0 IGFjcm9zcyBhbGwgdGhlIGRyaXZlcnMgd291bGQgYmUuCj4+Pj4gVGhlIHF1ZXN0aW9uIGlzIG1h eWJlIG5vdCB0aGUgcGVyZiBpbXBhY3QsIGJ1dCByYXRoZXIgaWYgdGhhdCBpcwo+Pj4+IHBvc3Np YmxlIG92ZXIgYWxsLgo+Pj4+Cj4+Pj4gSUlSQyB3ZSBub3cgaGF2ZSBzb21lIGNhc2VzIGluIFRU TSB3aGVyZSBSQ1UgaXMgbWFuZGF0b3J5IGFuZCB3ZSBzaW1wbHkKPj4+PiBkb24ndCBoYXZlIGFu eSBvdGhlciBjaG9pY2UgdGhhbiB1c2luZyBpdC4KPj4+IEFkZGluZyBUaG9tYXMgSGVsbHN0cm9t Lgo+Pj4KPj4+IFdoZXJlIGlzIHRoYXQgc3R1ZmY/IElmIHdlIGVuZCB1cCB3aXRoIGFsbCB0aGUg ZG1hX3Jlc3YgbG9ja2luZwo+Pj4gY29tcGxleGl0eSBqdXN0IGZvciBhbiBvZGRiYWxsLCB0aGVu IEkgdGhpbmsgdGhhdCB3b3VsZCBiZSByYXRoZXIgYmlnCj4+PiBidW1tZXIuCj4+IFRoaXMgaXMg ZHVyaW5nIGJ1ZmZlciBkZXN0cnVjdGlvbi4gU2VlIHRoZSBjYWxsIHRvIGRtYV9yZXN2X2NvcHlf ZmVuY2VzKCkuCj4gT2sgeWVhaCB0aGF0J3MgdHJpY2t5Lgo+Cj4gVGhlIHdheSBzb2x2ZWQgdGhp cyBpbiBpOTE1IGlzIHdpdGggYSB0cnlsb2NrIGFuZCBwdW50aW5nIHRvIGEgd29ya2VyCj4gcXVl dWUgaWYgdGhlIHRyeWxvY2sgZmFpbHMuIEFuZCB0aGUgd29ya2VyIHF1ZXVlIHdvdWxkIGFsc28g YmUgZmx1c2hlZAo+IGZyb20gdGhlIHNocmlua2VyIChvbmNlIHdlIGdldCB0aGVyZSBhdCBsZWFz dCkuCgpUaGF0J3Mgd2hhdCB3ZSBhbHJlYWR5IGhhZCBkb25lIGhlcmUgYXMgd2VsbCwgYnV0IHRo ZSB3b3JrZXIgaXMgZXhhY3RseSAKd2hhdCB3ZSB3YW50ZWQgdG8gYXZvaWQgYnkgdGhpcy4KCj4g U28gdGhpcyBsb29rcyBmaXhhYmxlLgoKSSdtIG5vdCBzdXJlIG9mIHRoYXQuIFdlIGhhZCByZWFs bHkgZ29vZCByZWFzb25zIHRvIHJlbW92ZSB0aGUgd29ya2VyLgoKPgo+PiBCdXQgdGhhdCBpcyBi YXNpY2FsbHkganVzdCB1c2luZyBhIGRtYV9yZXN2IGZ1bmN0aW9uIHdoaWNoIGFjY2Vzc2VzIHRo ZQo+PiBvYmplY3Qgd2l0aG91dCB0YWtpbmcgYSBsb2NrLgo+IFRoZSBvdGhlciBvbmUgSSd2ZSBm b3VuZCBpcyB0aGUgZ2hvc3Qgb2JqZWN0LCBidXQgdGhhdCBvbmUgaXMgbG9ja2VkCj4gZnVsbHku Cj4KPj4+Pj4gLSB0cnkgdG8gbWFrZSBhbGwgZHJpdmVycyBmb2xsb3cgc29tZSBzdHJpY3RlciBy dWxlcy4gVGhlIHRyb3VibGUgaXMKPj4+Pj4gdGhhdCBhdCBsZWFzdCB3aXRoIHJhZGVvbiBkbWFf ZmVuY2UgY2FsbGJhY2tzIGFyZW4ndCBldmVuIHZlcnkKPj4+Pj4gcmVsaWFibGUgKHRoYXQncyB3 aHkgaXQgaGFzIGl0cyBvd24gZG1hX2ZlbmNlX3dhaXQgaW1wbGVtZW50YXRpb24pLCBzbwo+Pj4+ PiB0aGluZ3MgYXJlIHdvYmJseSBhbnl3YXkuCj4+Pj4+Cj4+Pj4+IC0gbGl2ZSB3aXRoIHRoZSBj dXJyZW50IHNpdHVhdGlvbiwgYnV0IHJhZGljYWxseSBkZWxldGUgYWxsIHVuc2FmZQo+Pj4+PiBp bnRlcmZhY2VzLiBJLmUuIG5vdGhpbmcgaXMgYWxsb3dlZCB0byBkaXJlY3RseSBkZXJlZiBhbiBy Y3UgZmVuY2UKPj4+Pj4gcG9pbnRlciwgZXZlcnl0aGluZyBnb2VzIHRocm91Z2ggZG1hX2ZlbmNl X2dldF9yY3Vfc2FmZS4gVGhlCj4+Pj4+IGtyZWZfZ2V0X3VubGVzc196ZXJvIHdvdWxkIGJlY29t ZSBhbiBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCj4+Pj4+IE91ciAiZmFzdCIgYW5k ICJsb2NrbGVzcyIgZG1hX3Jlc3YgZmVuY2UgYWNjZXNzIHN0YXlzIGEgcGlsZSBvZgo+Pj4+PiBz ZXFsb2NrLCByZXRyeSBsb29wIGFuZCBhbiBhIGNvbmRpdGlvbmFsIGF0b21pYyBpbmMgKyBhdG9t aWMgZGVjLiBUaGUKPj4+Pj4gb25seSB0aGluZyB0aGF0J3Mgc2xpZ2h0bHkgZmFzdGVyIHdvdWxk IGJlIGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWQoKQo+Pj4+Pgo+Pj4+PiAtIEkgZ3Vlc3MgbWluaW1h bGx5IHdlIHNob3VsZCByZW5hbWUgZG1hX2ZlbmNlX2dldF9yY3UgdG8KPj4+Pj4gZG1hX2ZlbmNl X3RyeWdldC4gSXQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCByY3UgcmVhbGx5LCBhbmQgdGhlIHVz ZSBpcwo+Pj4+PiB2ZXJ5LCB2ZXJ5IGxpbWl0ZWQuCj4+Pj4gSSB0aGluayB3aGF0IHdlIHNob3Vs ZCBkbyBpcyB0byB1c2UgUkNVIGludGVybmFsbHkgaW4gdGhlIGRtYV9yZXN2Cj4+Pj4gb2JqZWN0 IGJ1dCBkaXNhbGxvdyBkcml2ZXJzL2ZyYW1ld29ya3MgdG8gbWVzcyB3aXRoIHRoYXQgZGlyZWN0 bHkuCj4+Pj4KPj4+PiBJbiBvdGhlciB3b3JkcyBkcml2ZXJzIHNob3VsZCB1c2Ugb25lIG9mIHRo ZSBmb2xsb3dpbmc6Cj4+Pj4gMS4gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0KCkKPj4+PiAyLiBkbWFf cmVzdl90ZXN0X3NpZ25hbGVkKCkKPj4+PiAzLiBkbWFfcmVzdl9jb3B5X2ZlbmNlcygpCj4+Pj4g NC4gZG1hX3Jlc3ZfZ2V0X2ZlbmNlcygpCj4+Pj4gNS4gZG1hX3Jlc3ZfZm9yX2VhY2hfZmVuY2Uo KSA8LSB0byBiZSBpbXBsZW1lbnRlZAo+Pj4+IDYuIGRtYV9yZXN2X2Zvcl9lYWNoX2ZlbmNlX3Vu bG9ja2VkKCkgPC0gdG8gYmUgaW1wbGVtZW50ZWQKPj4+Pgo+Pj4+IEluc2lkZSB0aG9zZSBmdW5j dGlvbnMgd2UgdGhlbiBtYWtlIHN1cmUgdGhhdCB3ZSBvbmx5IHNhdmUgd2F5cyBvZgo+Pj4+IGFj Y2Vzc2luZyB0aGUgUkNVIHByb3RlY3RlZCBkYXRhIHN0cnVjdHVyZXMuCj4+Pj4KPj4+PiBUaGlz IHdheSB3ZSBvbmx5IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhvc2UgYWNjZXNzb3IgZnVuY3Rp b25zIGFyZQo+Pj4+IHNhbmUgYW5kIGRvbid0IG5lZWQgdG8gYXVkaXQgZXZlcnkgZHJpdmVyIGlu ZGl2aWR1YWxseS4KPj4+IFllYWggYmV0dGVyIGVuY2Fwc3VsYXRpb24gZm9yIGRtYV9yZXN2IHNv dW5kcyBsaWtlIGEgZ29vZCB0aGluZywgbGVhc3QKPj4+IGZvciBhbGwgdGhlIG90aGVyIGlzc3Vl cyB3ZSd2ZSBiZWVuIGRpc2N1c3NpbmcgcmVjZW50bHkuIEkgZ3Vlc3MgeW91cgo+Pj4gbGlzdCBp cyBhbHNvIG1pc3NpbmcgdGhlIHZhcmlvdXMgImFkZC9yZXBsYWNlIHNvbWUgbW9yZSBmZW5jZXMi Cj4+PiBmdW5jdGlvbnMsIGJ1dCB3ZSBoYXZlIHRoZW0gYWxyZWFkeS4KPj4+Cj4+Pj4gSSBjYW4g dGFja2xlIGltcGxlbWVudGluZyBmb3IgdGhlIGRtYV9yZXNfZm9yX2VhY2hfZmVuY2UoKS9fdW5s b2NrZWQoKS4KPj4+PiBBbHJlYWR5IGdvdCBhIGxhcmdlIGJ1bmNoIG9mIHRoYXQgY29kZWQgb3V0 IGFueXdheS4KPj4+IFdoZW4vd2hlcmUgZG8gd2UgbmVlZCBvdCBpdGVyYXRlIG92ZXIgZmVuY2Vz IHVubG9ja2VkPyBHaXZlbiBob3cgbXVjaAo+Pj4gcGFpbiBpdCBpcyB0byBnZXQgYSBjb25zaXN0 ZW50IHNuYXBzaG90IG9mIHRoZSBmZW5jZXMgb3IgZmVuY2Ugc3RhdGUKPj4+IChJJ3ZlIHJlYWQg IHRoZSBkbWEtYnVmIHBvbGwgaW1wbGVtZW50YXRpb24sIGFuZCBpdCBsb29rcyBhIGJpdCBidWdn eQo+Pj4gaW4gdGhhdCByZWdhcmQsIGJ1dCBub3Qgc3VyZSwganVzdCBhcyBhbiBleGFtcGxlKSBh bmQgdW5sb2NrZWQKPj4+IGl0ZXJhdG9yIHNvdW5kcyB2ZXJ5IGRhbmdlcm91cyB0byBtZS4KPj4g VGhpcyBpcyB0byBtYWtlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBvdGhlciBmdW5jdGlvbnMgZWFz aWVyLiBDdXJyZW50bHkgdGhleQo+PiBiYXNpY2FsbHkgZWFjaCByb2xsIHRoZWlyIG93biBsb29w IGltcGxlbWVudGF0aW9uIHdoaWNoIGF0IGxlYXN0IGZvcgo+PiBkbWFfcmVzdl90ZXN0X3NpZ25h bGVkKCkgbG9va3MgYSBiaXQgcXVlc3Rpb25hYmxlIHRvIG1lLgo+Pgo+PiBBZGRpdGlvbmFsbHkg dG8gdGhvc2Ugd2Ugd2UgaGF2ZSBvbmUgbW9yZSBjYXNlIGluIGk5MTUgYW5kIHRoZSB1bmxvY2tl ZAo+PiBwb2xsaW5nIGltcGxlbWVudGF0aW9uIHdoaWNoIEkgYWdyZWUgaXMgYSBiaXQgcXVlc3Rp b25hYmxlIGFzIHdlbGwuCj4gWWVhaCwgdGhlIG1vcmUgSSBsb29rIGF0IGFueSBvZiB0aGVzZSBs b2NrbGVzcyBsb29wIHRoaW5ncyB0aGUgbW9yZSBJJ20KPiB3b3JyaWVkLiA5MCUgc3VyZSB0aGUg b25lIGluIGRtYV9idWZfcG9sbCBpcyBicm9rZW4gdG9vLgo+Cj4+IE15IGlkZWEgaXMgdG8gaGF2 ZSB0aGUgcHJvYmxlbWF0aWMgbG9naWMgaW4gdGhlIGl0ZXJhdG9yIGFuZCBvbmx5IGdpdmUgYmFj awo+PiBmZW5jZSB3aGljaCBoYXZlIGEgcmVmZXJlbmNlIGFuZCBhcmUgMTAwJSBzdXJlIHRoZSBy aWdodCBvbmUuCj4+Cj4+IFByb2JhYmx5IGJlc3QgaWYgSSBzaG93IHNvbWUgY29kZSBhcm91bmQg dG8gZXhwbGFpbiB3aGF0IEkgbWVhbi4KPiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IHdlIHNob3Vs ZCBqdXN0IHRyeSBhbmQgY29udmVydCB0aGVtIGFsbCBvdmVyIHRvCj4gdGFraW5nIHRoZSBkbWFf cmVzdl9sb2NrLiBBbmQgaWYgdGhlcmUgaXMgcmVhbGx5IGEgY29udGVudGlvbiBpc3N1ZSB3aXRo Cj4gdGhhdCwgdGhlbiBlaXRoZXIgdHJ5IHRvIHNocmluayBpdCwgb3IgbWFrZSBpdCBhbiByd2xv Y2sgb3Igc2ltaWxhci4gQnV0Cj4ganVzdCB0aGUgbW9yZSBJIHJlYWQgYSBsb3Qgb2YgdGhlIGlt cGxlbWVudGF0aW9ucyB0aGUgbW9yZSBJIHNlZSBidWdzIGFuZAo+IGhhdmUgcXVlc3Rpb25zLgoK SG93IGFib3V0IHdlIGFic3RyYWN0IGFsbCB0aGF0IGZ1bm55IHJjdSBkYW5jZSBpbnNpZGUgdGhl IGl0ZXJhdG9yIGluc3RlYWQ/CgpJIG1lYW4gd2hlbiB3ZSBqdXN0IGhhdmUgb25lIHdhbGtlciBm dW5jdGlvbiB3aGljaCBpcyB3ZWxsIGRvY3VtZW50ZWQgCmFuZCB1bmRlcnN0b29kIHRoZW4gdGhl IHJlc3QgYmVjb21lcyByZWxhdGl2ZWx5IGVhc3kuCgpDaHJpc3RpYW4uCgo+IE1heWJlIGF0IHRo ZSBlbmQgYSBmZXcgd2lsbCBiZSBsZWZ0IG92ZXIsIGFuZCB0aGVuIHdlIGNhbiBsb29rIGF0IHRo ZXNlCj4gaW5kaXZpZHVhbGx5IGluIGRldGFpbC4gTGlrZSB0aGUgdHRtX2JvX2luZGl2aWR1YWxp emVfcmVzdiBzaXR1YXRpb24uCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK