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=-13.2 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_IN_DEF_DKIM_WL 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 58E14C433E0 for ; Fri, 5 Feb 2021 03:40:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1049464FB3 for ; Fri, 5 Feb 2021 03:40:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231167AbhBEDkV (ORCPT ); Thu, 4 Feb 2021 22:40:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55164 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230229AbhBEDkN (ORCPT ); Thu, 4 Feb 2021 22:40:13 -0500 Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D2512C06178A for ; Thu, 4 Feb 2021 19:39:32 -0800 (PST) Received: by mail-wm1-x334.google.com with SMTP id j11so4836476wmi.3 for ; Thu, 04 Feb 2021 19:39:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=EdjLgTFEfuQJGZBK+nXnyy4MdoUmVzeK7aTpj4p2cVs=; b=G0PEitJ+usd81lX6EDaRByi5sRj40yJPc5uhcY6QEK2X9Wq/MFm/0TXDN4RVz4ZQ6A ul/qH0mY8Lsr3XrIXuQOWFAtdI0BS6f2CpejnwFRIr29LWuWTbar+iE+BI3jzBNT/8pz bN4/D1zo8nWzktWb4bINMtYivhqcbzqgdnInQZ/8/0sEewECFyCYy640waGWJY0G1pqw Cm3UCGiNdKrJ6Z6enQVnga+JRIGdwAuAA2hDqGOY/AMehsv5k1ZgBGklnwlaTS/3abdO m/3btPqZdflTc78uLwP6rbg6URCpuKVpD+NEZtDZBBCapZrQXXYqV4CSKeCEy6/4DkV2 uZhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=EdjLgTFEfuQJGZBK+nXnyy4MdoUmVzeK7aTpj4p2cVs=; b=b5NqiSL2Yxs7SY4KXQpWDSD9bdEQtEok/4PwJFp3eeKVgvmGqhYfCkUuW+D2RP4ulh n5FysMS2/oPTbkaA/S5j9oB7m4BFcNiNSlrCdfTr5hdKd6J4xPwc+30kD/Jpxk9lxW3g 15WiH40X9SSEF/mIXRoqIpCALQFhWSesveX6Th8AjCHZMMeLFCYkxn62MxesLreSxsfu QDRRFOXpQoxev7MVhdlIFUWY4kACCwbi6bBF4H4WEXt1vj4Od6VLlqll+cn6uJgkmaE3 Tr8k2F5zEa8scrMBdyzDCq1dcllvNxq7RGE16/lN6fq2yK3bA/XDwY5eKGBeARFMI40y jTpw== X-Gm-Message-State: AOAM532EanPcD7ekKtzt/WZfjdvGVMEVuMUOy6USvptkUptx2LNHFRcV LrgmeMxmV61WJfWhKz+/FijTu8rSnPS6OUReIbtkdQ== X-Google-Smtp-Source: ABdhPJwQJDGTRMEZ//zE5/HAppxy72r/wRamcStzdUixQgW9nAir2xq28+kgXZDBfrH14dhfKQY0nMy71MkA5Gx9FJg= X-Received: by 2002:a05:600c:4fcb:: with SMTP id o11mr1704797wmq.88.1612496371382; Thu, 04 Feb 2021 19:39:31 -0800 (PST) MIME-Version: 1.0 References: <20210203003134.2422308-1-surenb@google.com> <20210203015553.GX308988@casper.infradead.org> In-Reply-To: From: Suren Baghdasaryan Date: Thu, 4 Feb 2021 19:39:20 -0800 Message-ID: Subject: Re: [Linaro-mm-sig] [PATCH 1/2] mm: replace BUG_ON in vm_insert_page with a return of an error To: Alex Deucher Cc: =?UTF-8?Q?Christian_K=C3=B6nig?= , Daniel Vetter , Christoph Hellwig , Sandeep Patil , dri-devel , Linux MM , Robin Murphy , James Jones , Linux Kernel Mailing List , Matthew Wilcox , "moderated list:DMA BUFFER SHARING FRAMEWORK" , Minchan Kim , Liam Mark , Chris Goldsworthy , Hridya Valsaraju , Andrew Morton , Android Kernel Team , "open list:DMA BUFFER SHARING FRAMEWORK" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Feb 4, 2021 at 7:55 AM Alex Deucher wrote: > > On Thu, Feb 4, 2021 at 3:16 AM Christian K=C3=B6nig wrote: > > > > Am 03.02.21 um 22:41 schrieb Suren Baghdasaryan: > > > [SNIP] > > >>> How many semi-unrelated buffer accounting schemes does google come = up with? > > >>> > > >>> We're at three with this one. > > >>> > > >>> And also we _cannot_ required that all dma-bufs are backed by struc= t > > >>> page, so requiring struct page to make this work is a no-go. > > >>> > > >>> Second, we do not want to all get_user_pages and friends to work on > > >>> dma-buf, it causes all kinds of pain. Yes on SoC where dma-buf are > > >>> exclusively in system memory you can maybe get away with this, but > > >>> dma-buf is supposed to work in more places than just Android SoCs. > > >> I just realized that vm_inser_page doesn't even work for CMA, it wou= ld > > >> upset get_user_pages pretty badly - you're trying to pin a page in > > >> ZONE_MOVEABLE but you can't move it because it's rather special. > > >> VM_SPECIAL is exactly meant to catch this stuff. > > > Thanks for the input, Daniel! Let me think about the cases you pointe= d out. > > > > > > IMHO, the issue with PSS is the difficulty of calculating this metric > > > without struct page usage. I don't think that problem becomes easier > > > if we use cgroups or any other API. I wanted to enable existing PSS > > > calculation mechanisms for the dmabufs known to be backed by struct > > > pages (since we know how the heap allocated that memory), but sounds > > > like this would lead to problems that I did not consider. > > > > Yeah, using struct page indeed won't work. We discussed that multiple > > times now and Daniel even has a patch to mangle the struct page pointer= s > > inside the sg_table object to prevent abuse in that direction. > > > > On the other hand I totally agree that we need to do something on this > > side which goes beyong what cgroups provide. > > > > A few years ago I came up with patches to improve the OOM killer to > > include resources bound to the processes through file descriptors. I > > unfortunately can't find them of hand any more and I'm currently to bus= y > > to dig them up. > > https://lists.freedesktop.org/archives/dri-devel/2015-September/089778.ht= ml > I think there was a more recent discussion, but I can't seem to find it. Thanks for the pointer! Appreciate the time everyone took to explain the issues. Thanks, Suren. > > Alex > > > > > In general I think we need to make it possible that both the in kernel > > OOM killer as well as userspace processes and handlers have access to > > that kind of data. > > > > The fdinfo approach as suggested in the other thread sounds like the > > easiest solution to me. > > > > Regards, > > Christian. > > > > > Thanks, > > > Suren. > > > > > > > > > > _______________________________________________ > > dri-devel mailing list > > dri-devel@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/dri-devel 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=-3.5 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 23CCFC433E0 for ; Fri, 5 Feb 2021 08:33:43 +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 BFE6C64FBB for ; Fri, 5 Feb 2021 08:33:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BFE6C64FBB Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0075A6EB10; Fri, 5 Feb 2021 08:33:35 +0000 (UTC) Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com [IPv6:2a00:1450:4864:20::330]) by gabe.freedesktop.org (Postfix) with ESMTPS id EC1796E15D for ; Fri, 5 Feb 2021 03:39:32 +0000 (UTC) Received: by mail-wm1-x330.google.com with SMTP id c127so4759551wmf.5 for ; Thu, 04 Feb 2021 19:39:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=EdjLgTFEfuQJGZBK+nXnyy4MdoUmVzeK7aTpj4p2cVs=; b=G0PEitJ+usd81lX6EDaRByi5sRj40yJPc5uhcY6QEK2X9Wq/MFm/0TXDN4RVz4ZQ6A ul/qH0mY8Lsr3XrIXuQOWFAtdI0BS6f2CpejnwFRIr29LWuWTbar+iE+BI3jzBNT/8pz bN4/D1zo8nWzktWb4bINMtYivhqcbzqgdnInQZ/8/0sEewECFyCYy640waGWJY0G1pqw Cm3UCGiNdKrJ6Z6enQVnga+JRIGdwAuAA2hDqGOY/AMehsv5k1ZgBGklnwlaTS/3abdO m/3btPqZdflTc78uLwP6rbg6URCpuKVpD+NEZtDZBBCapZrQXXYqV4CSKeCEy6/4DkV2 uZhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=EdjLgTFEfuQJGZBK+nXnyy4MdoUmVzeK7aTpj4p2cVs=; b=mkjKFvOLVfiilmtq5AYHSK4XmbETIb/NVnyBMlKBlw1LUwpqmUGZTWCSpHMKyQC1hv DAo+ViuvreWRJvVRTfQjnfMSoddVb0MmwOmUe4Eigoj74nMpIw2Ek1jW22AJ3IXxLJ5I YOehhxBBn6TEnFXHNaaZpAhE9o6so9zk2mjj/vS6wgtorl5TX2iVHFuqEfaQaUG0skvw 12U6JJDo+KxSHf87brz9UTIVVkLFZDly27dzl3dosvndgvbI3Tp+3EovZGSa9WaW5L2M rToiy8VwutHdUVeoaPxsW7QDnu7xtSMX+JYyvVY5+GUJZJyZnT++1iWCzE+NYsK6U14A sUNw== X-Gm-Message-State: AOAM531iITuOrx17zsKgZTq8AdGRArXN5PDtDhtQ7LM6ifOV/x+awhXi FjhoPXSkJW1hgXqLAMcyCm0Zoq+xGV2nrc4Tb5TR5w== X-Google-Smtp-Source: ABdhPJwQJDGTRMEZ//zE5/HAppxy72r/wRamcStzdUixQgW9nAir2xq28+kgXZDBfrH14dhfKQY0nMy71MkA5Gx9FJg= X-Received: by 2002:a05:600c:4fcb:: with SMTP id o11mr1704797wmq.88.1612496371382; Thu, 04 Feb 2021 19:39:31 -0800 (PST) MIME-Version: 1.0 References: <20210203003134.2422308-1-surenb@google.com> <20210203015553.GX308988@casper.infradead.org> In-Reply-To: From: Suren Baghdasaryan Date: Thu, 4 Feb 2021 19:39:20 -0800 Message-ID: Subject: Re: [Linaro-mm-sig] [PATCH 1/2] mm: replace BUG_ON in vm_insert_page with a return of an error To: Alex Deucher X-Mailman-Approved-At: Fri, 05 Feb 2021 08:33:33 +0000 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "moderated list:DMA BUFFER SHARING FRAMEWORK" , Android Kernel Team , Sandeep Patil , Liam Mark , Minchan Kim , Daniel Vetter , James Jones , Linux Kernel Mailing List , dri-devel , Christoph Hellwig , Linux MM , Matthew Wilcox , Chris Goldsworthy , Hridya Valsaraju , Andrew Morton , Robin Murphy , =?UTF-8?Q?Christian_K=C3=B6nig?= , "open list:DMA BUFFER SHARING FRAMEWORK" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gVGh1LCBGZWIgNCwgMjAyMSBhdCA3OjU1IEFNIEFsZXggRGV1Y2hlciA8YWxleGRldWNoZXJA Z21haWwuY29tPiB3cm90ZToKPgo+IE9uIFRodSwgRmViIDQsIDIwMjEgYXQgMzoxNiBBTSBDaHJp c3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+IHdyb3RlOgo+ID4KPiA+IEFt IDAzLjAyLjIxIHVtIDIyOjQxIHNjaHJpZWIgU3VyZW4gQmFnaGRhc2FyeWFuOgo+ID4gPiBbU05J UF0KPiA+ID4+PiBIb3cgbWFueSBzZW1pLXVucmVsYXRlZCBidWZmZXIgYWNjb3VudGluZyBzY2hl bWVzIGRvZXMgZ29vZ2xlIGNvbWUgdXAgd2l0aD8KPiA+ID4+Pgo+ID4gPj4+IFdlJ3JlIGF0IHRo cmVlIHdpdGggdGhpcyBvbmUuCj4gPiA+Pj4KPiA+ID4+PiBBbmQgYWxzbyB3ZSBfY2Fubm90XyBy ZXF1aXJlZCB0aGF0IGFsbCBkbWEtYnVmcyBhcmUgYmFja2VkIGJ5IHN0cnVjdAo+ID4gPj4+IHBh Z2UsIHNvIHJlcXVpcmluZyBzdHJ1Y3QgcGFnZSB0byBtYWtlIHRoaXMgd29yayBpcyBhIG5vLWdv Lgo+ID4gPj4+Cj4gPiA+Pj4gU2Vjb25kLCB3ZSBkbyBub3Qgd2FudCB0byBhbGwgZ2V0X3VzZXJf cGFnZXMgYW5kIGZyaWVuZHMgdG8gd29yayBvbgo+ID4gPj4+IGRtYS1idWYsIGl0IGNhdXNlcyBh bGwga2luZHMgb2YgcGFpbi4gWWVzIG9uIFNvQyB3aGVyZSBkbWEtYnVmIGFyZQo+ID4gPj4+IGV4 Y2x1c2l2ZWx5IGluIHN5c3RlbSBtZW1vcnkgeW91IGNhbiBtYXliZSBnZXQgYXdheSB3aXRoIHRo aXMsIGJ1dAo+ID4gPj4+IGRtYS1idWYgaXMgc3VwcG9zZWQgdG8gd29yayBpbiBtb3JlIHBsYWNl cyB0aGFuIGp1c3QgQW5kcm9pZCBTb0NzLgo+ID4gPj4gSSBqdXN0IHJlYWxpemVkIHRoYXQgdm1f aW5zZXJfcGFnZSBkb2Vzbid0IGV2ZW4gd29yayBmb3IgQ01BLCBpdCB3b3VsZAo+ID4gPj4gdXBz ZXQgZ2V0X3VzZXJfcGFnZXMgcHJldHR5IGJhZGx5IC0geW91J3JlIHRyeWluZyB0byBwaW4gYSBw YWdlIGluCj4gPiA+PiBaT05FX01PVkVBQkxFIGJ1dCB5b3UgY2FuJ3QgbW92ZSBpdCBiZWNhdXNl IGl0J3MgcmF0aGVyIHNwZWNpYWwuCj4gPiA+PiBWTV9TUEVDSUFMIGlzIGV4YWN0bHkgbWVhbnQg dG8gY2F0Y2ggdGhpcyBzdHVmZi4KPiA+ID4gVGhhbmtzIGZvciB0aGUgaW5wdXQsIERhbmllbCEg TGV0IG1lIHRoaW5rIGFib3V0IHRoZSBjYXNlcyB5b3UgcG9pbnRlZCBvdXQuCj4gPiA+Cj4gPiA+ IElNSE8sIHRoZSBpc3N1ZSB3aXRoIFBTUyBpcyB0aGUgZGlmZmljdWx0eSBvZiBjYWxjdWxhdGlu ZyB0aGlzIG1ldHJpYwo+ID4gPiB3aXRob3V0IHN0cnVjdCBwYWdlIHVzYWdlLiBJIGRvbid0IHRo aW5rIHRoYXQgcHJvYmxlbSBiZWNvbWVzIGVhc2llcgo+ID4gPiBpZiB3ZSB1c2UgY2dyb3VwcyBv ciBhbnkgb3RoZXIgQVBJLiBJIHdhbnRlZCB0byBlbmFibGUgZXhpc3RpbmcgUFNTCj4gPiA+IGNh bGN1bGF0aW9uIG1lY2hhbmlzbXMgZm9yIHRoZSBkbWFidWZzIGtub3duIHRvIGJlIGJhY2tlZCBi eSBzdHJ1Y3QKPiA+ID4gcGFnZXMgKHNpbmNlIHdlIGtub3cgaG93IHRoZSBoZWFwIGFsbG9jYXRl ZCB0aGF0IG1lbW9yeSksIGJ1dCBzb3VuZHMKPiA+ID4gbGlrZSB0aGlzIHdvdWxkIGxlYWQgdG8g cHJvYmxlbXMgdGhhdCBJIGRpZCBub3QgY29uc2lkZXIuCj4gPgo+ID4gWWVhaCwgdXNpbmcgc3Ry dWN0IHBhZ2UgaW5kZWVkIHdvbid0IHdvcmsuIFdlIGRpc2N1c3NlZCB0aGF0IG11bHRpcGxlCj4g PiB0aW1lcyBub3cgYW5kIERhbmllbCBldmVuIGhhcyBhIHBhdGNoIHRvIG1hbmdsZSB0aGUgc3Ry dWN0IHBhZ2UgcG9pbnRlcnMKPiA+IGluc2lkZSB0aGUgc2dfdGFibGUgb2JqZWN0IHRvIHByZXZl bnQgYWJ1c2UgaW4gdGhhdCBkaXJlY3Rpb24uCj4gPgo+ID4gT24gdGhlIG90aGVyIGhhbmQgSSB0 b3RhbGx5IGFncmVlIHRoYXQgd2UgbmVlZCB0byBkbyBzb21ldGhpbmcgb24gdGhpcwo+ID4gc2lk ZSB3aGljaCBnb2VzIGJleW9uZyB3aGF0IGNncm91cHMgcHJvdmlkZS4KPiA+Cj4gPiBBIGZldyB5 ZWFycyBhZ28gSSBjYW1lIHVwIHdpdGggcGF0Y2hlcyB0byBpbXByb3ZlIHRoZSBPT00ga2lsbGVy IHRvCj4gPiBpbmNsdWRlIHJlc291cmNlcyBib3VuZCB0byB0aGUgcHJvY2Vzc2VzIHRocm91Z2gg ZmlsZSBkZXNjcmlwdG9ycy4gSQo+ID4gdW5mb3J0dW5hdGVseSBjYW4ndCBmaW5kIHRoZW0gb2Yg aGFuZCBhbnkgbW9yZSBhbmQgSSdtIGN1cnJlbnRseSB0byBidXN5Cj4gPiB0byBkaWcgdGhlbSB1 cC4KPgo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL2RyaS1kZXZlbC8y MDE1LVNlcHRlbWJlci8wODk3NzguaHRtbAo+IEkgdGhpbmsgdGhlcmUgd2FzIGEgbW9yZSByZWNl bnQgZGlzY3Vzc2lvbiwgYnV0IEkgY2FuJ3Qgc2VlbSB0byBmaW5kIGl0LgoKVGhhbmtzIGZvciB0 aGUgcG9pbnRlciEKQXBwcmVjaWF0ZSB0aGUgdGltZSBldmVyeW9uZSB0b29rIHRvIGV4cGxhaW4g dGhlIGlzc3Vlcy4KVGhhbmtzLApTdXJlbi4KCj4KPiBBbGV4Cj4KPiA+Cj4gPiBJbiBnZW5lcmFs IEkgdGhpbmsgd2UgbmVlZCB0byBtYWtlIGl0IHBvc3NpYmxlIHRoYXQgYm90aCB0aGUgaW4ga2Vy bmVsCj4gPiBPT00ga2lsbGVyIGFzIHdlbGwgYXMgdXNlcnNwYWNlIHByb2Nlc3NlcyBhbmQgaGFu ZGxlcnMgaGF2ZSBhY2Nlc3MgdG8KPiA+IHRoYXQga2luZCBvZiBkYXRhLgo+ID4KPiA+IFRoZSBm ZGluZm8gYXBwcm9hY2ggYXMgc3VnZ2VzdGVkIGluIHRoZSBvdGhlciB0aHJlYWQgc291bmRzIGxp a2UgdGhlCj4gPiBlYXNpZXN0IHNvbHV0aW9uIHRvIG1lLgo+ID4KPiA+IFJlZ2FyZHMsCj4gPiBD aHJpc3RpYW4uCj4gPgo+ID4gPiBUaGFua3MsCj4gPiA+IFN1cmVuLgo+ID4gPgo+ID4gPgo+ID4K PiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBk cmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4gPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK