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=-4.1 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS 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 09991C433E1 for ; Wed, 15 Jul 2020 11:50:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D5C782070E for ; Wed, 15 Jul 2020 11:50:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="LgZ4K6Ei" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729304AbgGOLue (ORCPT ); Wed, 15 Jul 2020 07:50:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55084 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728413AbgGOLue (ORCPT ); Wed, 15 Jul 2020 07:50:34 -0400 Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A6260C061755 for ; Wed, 15 Jul 2020 04:50:33 -0700 (PDT) Received: by mail-wm1-x341.google.com with SMTP id c80so5300826wme.0 for ; Wed, 15 Jul 2020 04:50:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=/T16uCv1ZWPqSW676gNIrYzGrdvCyTZGrAfC73gI1R8=; b=LgZ4K6EitdkgNJmIZnB6nrrkUMdllUVyNI6qfVCTSpEPlnB3ZUp9Es7UAQyhkk2ESX l+H779z95rR+9duhx4AG62Afia97T0hXyQ7Yv77OxoAX91FCWUAGTeA80uF2xLY9c9mA E2gWMQuy3uee9dr3EVtZYxqfw18y/qW4jyrI0EpsycGJpLjqdGVPIv9MCp1m+PYBEgL4 5KPMUq/2Nn3HBz6WeL2Zp7Con55/FYRTZQo1su6tmF9R3pWakLiFpyx5vfgvRc40p55D 01HI+OiRmOJi1hhsdeKRK7c6h30p9nu+D0KPRsoOX4dNKS7iKNT1tuChf5ixMNGUwkgE c1gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=/T16uCv1ZWPqSW676gNIrYzGrdvCyTZGrAfC73gI1R8=; b=IjyWocGP/3765LNZru8iVLWiIud+ycyrRP+1zjAKW+RR3JeVcDZoa3aJTdf1rYpDmA Cz59//IlRXVwDA5a+SmiGay97AVXPHGLc5795++OWJcaY1yuESj+tytfU5iUBF3O3SXQ 6dEDkdEOT4mjzGjarHmyjYWemRv/rP3TgyuAOHlHYbn86H0/7f5RDWZobClree+pM5VG P5+kHAwMxmEely8K6Y8dmIt7fniDyspaAuluWlk7gm3orAg65vA9ruVMd4OxJ82RO27k MJtjKXav/34cPf4TGiy9nPJxXfFHUMqfQyUdA/OZwq61eTiWHzoxZIDIYrolq0ZLq7ez 2F4w== X-Gm-Message-State: AOAM5301ckCsI+Eo1z9OIpgt+aRdf41PUReXgYEHjhwidbhWNB7Dq4pi Pwn+aDGap2DSGMydetdgx/4ZLg== X-Google-Smtp-Source: ABdhPJzhl1aZdPeNw+p/Oo2fOmsYKXVrisAAtybPKQQFyVqm7NZLat5RzBihKMlAoPur6B+enJR0gg== X-Received: by 2002:a05:600c:2317:: with SMTP id 23mr8624550wmo.72.1594813832408; Wed, 15 Jul 2020 04:50:32 -0700 (PDT) Received: from dell ([2.31.163.61]) by smtp.gmail.com with ESMTPSA id d28sm3710893wrc.50.2020.07.15.04.50.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jul 2020 04:50:31 -0700 (PDT) Date: Wed, 15 Jul 2020 12:50:29 +0100 From: Lee Jones To: "Rafael J. Wysocki" Cc: Viresh Kumar , "Rafael J. Wysocki" , Linux ARM , Linux Kernel Mailing List , Linux PM , Andy Grover , Paul Diefenbaugh , Dominik Brodowski , Denis Sadykov Subject: Re: [PATCH 09/13] cpufreq: acpi-cpufreq: Remove unused ID structs Message-ID: <20200715115029.GC3165313@dell> References: <20200714145049.2496163-1-lee.jones@linaro.org> <20200714145049.2496163-10-lee.jones@linaro.org> <20200714210340.GJ1398296@dell> <20200715032442.gh2cliiddhv35fdj@vireshk-i7> <20200715032718.2zlo2eurhkpoayya@vireshk-i7> <20200715113433.GB3165313@dell> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org On Wed, 15 Jul 2020, Rafael J. Wysocki wrote: > On Wed, Jul 15, 2020 at 1:34 PM Lee Jones wrote: > > > > On Wed, 15 Jul 2020, Rafael J. Wysocki wrote: > > > > > On Wed, Jul 15, 2020 at 5:27 AM Viresh Kumar wrote: > > > > > > > > On 15-07-20, 08:54, Viresh Kumar wrote: > > > > > On 14-07-20, 22:03, Lee Jones wrote: > > > > > > On Tue, 14 Jul 2020, Rafael J. Wysocki wrote: > > > > > > > > > > > > > On Tue, Jul 14, 2020 at 4:51 PM Lee Jones wrote: > > > > > > > > > > > > > > > > Can't see them being used anywhere and the compiler doesn't complain > > > > > > > > that they're missing, so ... > > > > > > > > > > > > > > Aren't they needed for automatic module loading in certain configurations? > > > > > > > > > > > > Any idea how that works, or where the code is for that? > > > > > > > > > > The MODULE_DEVICE_TABLE() thingy creates a map of vendor-id, > > > > > product-id that the kernel keeps after boot (and so there is no static > > > > > reference of it for the compiler), later when a device is hotplugged > > > > > into the kernel it refers to the map to find the related driver for it > > > > > and loads it if it isn't already loaded. > > > > > > > > > > This has some of it, search for MODULE_DEVICE_TABLE() in it. > > > > > Documentation/driver-api/usb/hotplug.rst > > > > > > > > And you just need to add __maybe_unused to them to suppress the > > > > warning. > > > > > > Wouldn't that cause the compiler to optimize them away if it doesn't > > > see any users? > > > > It looks like they're only unused when !MODULE, > > OK > > > in which case optimising them away would be the correct thing to do, no? It would be good if someone with a little more knowledge could provide a second opinion though. I would think (hope) that the compiler would be smart enough to see when its actually in use. After all, it is the compiler that places the information into the device table. If that is not the case, then the MODULE_DEVICE_TABLE() magic is broken and will need fixing. Removing boiler-plate is good, but not at the expense of obfuscation. -- Lee Jones [李琼斯] Senior Technical Lead - Developer Services Linaro.org │ Open source software for Arm SoCs Follow Linaro: Facebook | Twitter | Blog 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=-4.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS 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 4C5F0C433E3 for ; Wed, 15 Jul 2020 11:51:55 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 1973F20658 for ; Wed, 15 Jul 2020 11:51:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="muCj7jnF"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="LgZ4K6Ei" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1973F20658 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=BvS4yv3GeXzn8f2mlFkgNSgNxh1qgJzrjReKeSEGnH8=; b=muCj7jnFS1A2u+/EKnw6GVoFg oHa/JxL8Hgb5tpAPmxQ854ntDp5I/ssi+rcD545IP03IZViNUIrLU444gWHK4b2ShgRJnHQ8LAmsV EsdKzVxFh7/m9M6WNQP1xKnnVPL962PdhfMjqhB/I26Us8UqvpKi2BGpioQ02X5p8xHlAO+l/Faw6 RZwCdEd3V57aBmNo9XUw6qw3LpSrm1jwKWL4E2je7HxHYNrBRfZpq13VIjTJEKaObjueqZBED8KcB tjWO5xIgVf4EIlvtLuYZ2KiwZokDyb70nlah+VFxjwFC6ssEIca/XrOI10dE1Ihl7EMjfpMgAeoXf fh9r5qP2A==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvfvp-0002xk-2p; Wed, 15 Jul 2020 11:50:37 +0000 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvfvm-0002x2-SP for linux-arm-kernel@lists.infradead.org; Wed, 15 Jul 2020 11:50:35 +0000 Received: by mail-wm1-x343.google.com with SMTP id o8so5272263wmh.4 for ; Wed, 15 Jul 2020 04:50:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=/T16uCv1ZWPqSW676gNIrYzGrdvCyTZGrAfC73gI1R8=; b=LgZ4K6EitdkgNJmIZnB6nrrkUMdllUVyNI6qfVCTSpEPlnB3ZUp9Es7UAQyhkk2ESX l+H779z95rR+9duhx4AG62Afia97T0hXyQ7Yv77OxoAX91FCWUAGTeA80uF2xLY9c9mA E2gWMQuy3uee9dr3EVtZYxqfw18y/qW4jyrI0EpsycGJpLjqdGVPIv9MCp1m+PYBEgL4 5KPMUq/2Nn3HBz6WeL2Zp7Con55/FYRTZQo1su6tmF9R3pWakLiFpyx5vfgvRc40p55D 01HI+OiRmOJi1hhsdeKRK7c6h30p9nu+D0KPRsoOX4dNKS7iKNT1tuChf5ixMNGUwkgE c1gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=/T16uCv1ZWPqSW676gNIrYzGrdvCyTZGrAfC73gI1R8=; b=tYPQl/qkq61NdAXaUvDZ3Ke8bnN5Q61Cw5IezlGrb6vNpvWneN8MRIEThaRfcYaW4n O5h5C3FwFHzY3Hm/73io6XsrcWTt2nBK58hKBfsBRUVAVwmRy3bOVx6ytwM/cwS4gHy3 VQF40jdw0bOYV2F3Ht0XX3rt/THJABdZHTen8z5Wg7fxda/F36LEgk0CvA4vLTQ/QgG0 cIvC///L0wIMkxWtCCfauLllG1gRwsg81HmuKbcp/UNRM/9G5OGFu5faRuU59WM3x8NS +91PEcdEob/gu7OiVTu8EtY9ThC72nHyShz/t/fENwEUDau2wFSkpU7Kt4ZmRJ3ktegH hwDA== X-Gm-Message-State: AOAM533+qfMtpBZWH41W3mDLZkh0nxSAO+W6mMW0+drcOZ5thVBa/wR0 JJcjMxT2Ca0K3BiMikdb3DDSvw== X-Google-Smtp-Source: ABdhPJzhl1aZdPeNw+p/Oo2fOmsYKXVrisAAtybPKQQFyVqm7NZLat5RzBihKMlAoPur6B+enJR0gg== X-Received: by 2002:a05:600c:2317:: with SMTP id 23mr8624550wmo.72.1594813832408; Wed, 15 Jul 2020 04:50:32 -0700 (PDT) Received: from dell ([2.31.163.61]) by smtp.gmail.com with ESMTPSA id d28sm3710893wrc.50.2020.07.15.04.50.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jul 2020 04:50:31 -0700 (PDT) Date: Wed, 15 Jul 2020 12:50:29 +0100 From: Lee Jones To: "Rafael J. Wysocki" Subject: Re: [PATCH 09/13] cpufreq: acpi-cpufreq: Remove unused ID structs Message-ID: <20200715115029.GC3165313@dell> References: <20200714145049.2496163-1-lee.jones@linaro.org> <20200714145049.2496163-10-lee.jones@linaro.org> <20200714210340.GJ1398296@dell> <20200715032442.gh2cliiddhv35fdj@vireshk-i7> <20200715032718.2zlo2eurhkpoayya@vireshk-i7> <20200715113433.GB3165313@dell> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200715_075035_018959_1C9E6AC0 X-CRM114-Status: GOOD ( 27.61 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Denis Sadykov , Andy Grover , Linux PM , Viresh Kumar , "Rafael J. Wysocki" , Linux Kernel Mailing List , Paul Diefenbaugh , Linux ARM , Dominik Brodowski Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gV2VkLCAxNSBKdWwgMjAyMCwgUmFmYWVsIEouIFd5c29ja2kgd3JvdGU6Cgo+IE9uIFdlZCwg SnVsIDE1LCAyMDIwIGF0IDE6MzQgUE0gTGVlIEpvbmVzIDxsZWUuam9uZXNAbGluYXJvLm9yZz4g d3JvdGU6Cj4gPgo+ID4gT24gV2VkLCAxNSBKdWwgMjAyMCwgUmFmYWVsIEouIFd5c29ja2kgd3Jv dGU6Cj4gPgo+ID4gPiBPbiBXZWQsIEp1bCAxNSwgMjAyMCBhdCA1OjI3IEFNIFZpcmVzaCBLdW1h ciA8dmlyZXNoLmt1bWFyQGxpbmFyby5vcmc+IHdyb3RlOgo+ID4gPiA+Cj4gPiA+ID4gT24gMTUt MDctMjAsIDA4OjU0LCBWaXJlc2ggS3VtYXIgd3JvdGU6Cj4gPiA+ID4gPiBPbiAxNC0wNy0yMCwg MjI6MDMsIExlZSBKb25lcyB3cm90ZToKPiA+ID4gPiA+ID4gT24gVHVlLCAxNCBKdWwgMjAyMCwg UmFmYWVsIEouIFd5c29ja2kgd3JvdGU6Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gT24gVHVl LCBKdWwgMTQsIDIwMjAgYXQgNDo1MSBQTSBMZWUgSm9uZXMgPGxlZS5qb25lc0BsaW5hcm8ub3Jn PiB3cm90ZToKPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiBDYW4ndCBzZWUgdGhlbSBi ZWluZyB1c2VkIGFueXdoZXJlIGFuZCB0aGUgY29tcGlsZXIgZG9lc24ndCBjb21wbGFpbgo+ID4g PiA+ID4gPiA+ID4gdGhhdCB0aGV5J3JlIG1pc3NpbmcsIHNvIC4uLgo+ID4gPiA+ID4gPiA+Cj4g PiA+ID4gPiA+ID4gQXJlbid0IHRoZXkgbmVlZGVkIGZvciBhdXRvbWF0aWMgbW9kdWxlIGxvYWRp bmcgaW4gY2VydGFpbiBjb25maWd1cmF0aW9ucz8KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gQW55 IGlkZWEgaG93IHRoYXQgd29ya3MsIG9yIHdoZXJlIHRoZSBjb2RlIGlzIGZvciB0aGF0Pwo+ID4g PiA+ID4KPiA+ID4gPiA+IFRoZSBNT0RVTEVfREVWSUNFX1RBQkxFKCkgdGhpbmd5IGNyZWF0ZXMg YSBtYXAgb2YgdmVuZG9yLWlkLAo+ID4gPiA+ID4gcHJvZHVjdC1pZCB0aGF0IHRoZSBrZXJuZWwg a2VlcHMgYWZ0ZXIgYm9vdCAoYW5kIHNvIHRoZXJlIGlzIG5vIHN0YXRpYwo+ID4gPiA+ID4gcmVm ZXJlbmNlIG9mIGl0IGZvciB0aGUgY29tcGlsZXIpLCBsYXRlciB3aGVuIGEgZGV2aWNlIGlzIGhv dHBsdWdnZWQKPiA+ID4gPiA+IGludG8gdGhlIGtlcm5lbCBpdCByZWZlcnMgdG8gdGhlIG1hcCB0 byBmaW5kIHRoZSByZWxhdGVkIGRyaXZlciBmb3IgaXQKPiA+ID4gPiA+IGFuZCBsb2FkcyBpdCBp ZiBpdCBpc24ndCBhbHJlYWR5IGxvYWRlZC4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBUaGlzIGhhcyBz b21lIG9mIGl0LCBzZWFyY2ggZm9yIE1PRFVMRV9ERVZJQ0VfVEFCTEUoKSBpbiBpdC4KPiA+ID4g PiA+IERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS91c2IvaG90cGx1Zy5yc3QKPiA+ID4gPgo+ID4g PiA+IEFuZCB5b3UganVzdCBuZWVkIHRvIGFkZCBfX21heWJlX3VudXNlZCB0byB0aGVtIHRvIHN1 cHByZXNzIHRoZQo+ID4gPiA+IHdhcm5pbmcuCj4gPiA+Cj4gPiA+IFdvdWxkbid0IHRoYXQgY2F1 c2UgdGhlIGNvbXBpbGVyIHRvIG9wdGltaXplIHRoZW0gYXdheSBpZiBpdCBkb2Vzbid0Cj4gPiA+ IHNlZSBhbnkgdXNlcnM/Cj4gPgo+ID4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIG9ubHkgdW51c2Vk IHdoZW4gIU1PRFVMRSwKPiAKPiBPSwo+IAo+ID4gaW4gd2hpY2ggY2FzZSBvcHRpbWlzaW5nIHRo ZW0gYXdheSB3b3VsZCBiZSB0aGUgY29ycmVjdCB0aGluZyB0byBkbywgbm8/CgpJdCB3b3VsZCBi ZSBnb29kIGlmIHNvbWVvbmUgd2l0aCBhIGxpdHRsZSBtb3JlIGtub3dsZWRnZSBjb3VsZCBwcm92 aWRlCmEgc2Vjb25kIG9waW5pb24gdGhvdWdoLiAgSSB3b3VsZCB0aGluayAoaG9wZSkgdGhhdCB0 aGUgY29tcGlsZXIgd291bGQKYmUgc21hcnQgZW5vdWdoIHRvIHNlZSB3aGVuIGl0cyBhY3R1YWxs eSBpbiB1c2UuICBBZnRlciBhbGwsIGl0IGlzIHRoZQpjb21waWxlciB0aGF0IHBsYWNlcyB0aGUg aW5mb3JtYXRpb24gaW50byB0aGUgZGV2aWNlIHRhYmxlLgoKSWYgdGhhdCBpcyBub3QgdGhlIGNh c2UsIHRoZW4gdGhlIE1PRFVMRV9ERVZJQ0VfVEFCTEUoKSBtYWdpYyBpcwpicm9rZW4gYW5kIHdp bGwgbmVlZCBmaXhpbmcuICBSZW1vdmluZyBib2lsZXItcGxhdGUgaXMgZ29vZCwgYnV0IG5vdAph dCB0aGUgZXhwZW5zZSBvZiBvYmZ1c2NhdGlvbi4KCi0tIApMZWUgSm9uZXMgW+adjueQvOaWr10K U2VuaW9yIFRlY2huaWNhbCBMZWFkIC0gRGV2ZWxvcGVyIFNlcnZpY2VzCkxpbmFyby5vcmcg4pSC IE9wZW4gc291cmNlIHNvZnR3YXJlIGZvciBBcm0gU29DcwpGb2xsb3cgTGluYXJvOiBGYWNlYm9v ayB8IFR3aXR0ZXIgfCBCbG9nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==