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=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT 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 4785FC3F2DA for ; Wed, 4 Mar 2020 10:29:08 +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 1E6F72166E for ; Wed, 4 Mar 2020 10:29:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=shipmail.org header.i=@shipmail.org header.b="babkxzab" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1E6F72166E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=shipmail.org 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 5AA656EB0C; Wed, 4 Mar 2020 10:28:59 +0000 (UTC) Received: from ste-pvt-msa2.bahnhof.se (ste-pvt-msa2.bahnhof.se [213.80.101.71]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3EDC56EB0A for ; Wed, 4 Mar 2020 10:28:53 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by ste-pvt-msa2.bahnhof.se (Postfix) with ESMTP id 29BA03FDFF; Wed, 4 Mar 2020 11:28:51 +0100 (CET) Authentication-Results: ste-pvt-msa2.bahnhof.se; dkim=pass (1024-bit key; unprotected) header.d=shipmail.org header.i=@shipmail.org header.b=babkxzab; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at bahnhof.se Authentication-Results: ste-ftg-msa2.bahnhof.se (amavisd-new); dkim=pass (1024-bit key) header.d=shipmail.org Received: from ste-pvt-msa2.bahnhof.se ([127.0.0.1]) by localhost (ste-ftg-msa2.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xs578MhBmdts; Wed, 4 Mar 2020 11:28:50 +0100 (CET) Received: from mail1.shipmail.org (h-205-35.A357.priv.bahnhof.se [155.4.205.35]) (Authenticated sender: mb878879) by ste-pvt-msa2.bahnhof.se (Postfix) with ESMTPA id 71ABA3F50E; Wed, 4 Mar 2020 11:28:47 +0100 (CET) Received: from localhost.localdomain.localdomain (h-205-35.A357.priv.bahnhof.se [155.4.205.35]) by mail1.shipmail.org (Postfix) with ESMTPSA id 8FDB836013E; Wed, 4 Mar 2020 11:28:47 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=shipmail.org; s=mail; t=1583317727; bh=aLLdrOzhYN34ZYfCzQU9+iu3iv1ilhvBU7nhR1el+MY=; h=From:To:Cc:Subject:Date:From; b=babkxzabLbjeKujsBBS4LcyDTyUPhV7Lz/RWPrq/Q2bZKAx23WicH5y2j5yWEDaih h5K2uJi7pFWq1Cw3U26d0sp8je1yZRmctWBS/NdQA06ZiK12tIGW+4j9Rvwq/nZvym iLeG/2Ec5QeOQ2l/BpVeUJJLj3G6Z6RUzevOueB4= From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m=20=28VMware=29?= To: linux-mm@kvack.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH v6 0/9] Huge page-table entries for TTM Date: Wed, 4 Mar 2020 11:28:31 +0100 Message-Id: <20200304102840.2801-1-thomas_os@shipmail.org> X-Mailer: git-send-email 2.21.1 MIME-Version: 1.0 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: Ralph Campbell , Michal Hocko , pv-drivers@vmware.com, =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Dan Williams , "Matthew Wilcox \(Oracle\)" , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , linux-graphics-maintainer@vmware.com, Andrew Morton , =?UTF-8?q?Christian=20K=C3=B6nig?= , "Kirill A. Shutemov" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" SW4gb3JkZXIgdG8gcmVkdWNlIENQVSB1c2FnZSBbMV0gYW5kIGluIHRoZW9yeSBUTEIgbWlzc2Vz IHRoaXMgcGF0Y2hzZXQgZW5hYmxlcwpodWdlLSBhbmQgZ2lhbnQgcGFnZS10YWJsZSBlbnRyaWVz IGZvciBUVE0gYW5kIFRUTS1lbmFibGVkIGdyYXBoaWNzIGRyaXZlcnMuCgpQYXRjaCAxIGFuZCAy IGludHJvZHVjZSBhIHZtYV9pc19zcGVjaWFsX2h1Z2UoKSBmdW5jdGlvbiB0byBtYWtlIHRoZSBt bSBjb2RlCnRha2UgdGhlIHNhbWUgcGF0aCBhcyBEQVggd2hlbiBzcGxpdHRpbmcgaHVnZS0gYW5k IGdpYW50IHBhZ2UgdGFibGUgZW50cmllcywKKHdoaWNoIGN1cnJlbnRseSBtZWFucyB6YXBwaW5n IHRoZSBwYWdlLXRhYmxlIGVudHJ5IGFuZCByZWx5IG9uIHJlLWZhdWx0aW5nKS4KClBhdGNoIDMg bWFrZXMgdGhlIG1tIGNvZGUgc3BsaXQgZXhpc3RpbmcgaHVnZSBwYWdlLXRhYmxlIGVudHJpZXMK b24gaHVnZV9mYXVsdCBmYWxsYmFja3MuIFR5cGljYWxseSBvbiBDT1cgb3Igb24gYnVmZmVyLW9i amVjdHMgdGhhdCB3YW50CndyaXRlLW5vdGlmeS4gQ09XIGFuZCB3cml0ZS1ub3RpZmljYXRpb24g aXMgYWx3YXlzIGRvbmUgb24gdGhlIGxvd2VzdApwYWdlLXRhYmxlIGxldmVsLiBTZWUgdGhlIHBh dGNoIGxvZyBtZXNzYWdlIGZvciBhZGRpdGlvbmFsIGNvbnNpZGVyYXRpb25zLgoKUGF0Y2ggNCBp bnRyb2R1Y2VzIGZ1bmN0aW9ucyB0byBhbGxvdyB0aGUgZ3JhcGhpY3MgZHJpdmVycyB0byBtYW5p cHVsYXRlCnRoZSBjYWNoaW5nLSBhbmQgZW5jcnlwdGlvbiBmbGFncyBvZiBodWdlIHBhZ2UtdGFi bGUgZW50cmllcyB3aXRob3V0IHVnbHkKaGFja3MuCgpQYXRjaCA1IGltcGxlbWVudHMgdGhlIGh1 Z2VfZmF1bHQgaGFuZGxlciBpbiBUVE0uClRoaXMgZW5hYmxlcyBodWdlIHBhZ2UtdGFibGUgZW50 cmllcywgcHJvdmlkZWQgdGhhdCB0aGUga2VybmVsIGlzIGNvbmZpZ3VyZWQKdG8gc3VwcG9ydCB0 cmFuc2h1Z2UgcGFnZXMsIGVpdGhlciBieSBkZWZhdWx0IG9yIHVzaW5nIG1hZHZpc2UoKS4KSG93 ZXZlciwgdGhleSBhcmUgdW5saWtlbHkgdG8gYmUgaW5zZXJ0ZWQgdW5sZXNzIHRoZSBrZXJuZWwg YnVmZmVyIG9iamVjdApwZm5zIGFuZCB1c2VyLXNwYWNlIGFkZHJlc3NlcyBhbGlnbiBwZXJmZWN0 bHkuIFRoZXJlIGFyZSB2YXJpb3VzIG9wdGlvbnMKaGVyZSwgYnV0IHNpbmNlIGJ1ZmZlciBvYmpl Y3RzIHRoYXQgcmVzaWRlIGluIHN5c3RlbSBwYWdlcyB0eXBpY2FsbHkgc3RhcnQKYXQgaHVnZSBw YWdlIGJvdW5kYXJpZXMgaWYgdGhleSBhcmUgYmFja2VkIGJ5IGh1Z2UgcGFnZXMsIHdlIHRyeSB0 byBlbmZvcmNlCmJ1ZmZlciBvYmplY3Qgc3RhcnRpbmcgcGZucyBhbmQgdXNlci1zcGFjZSBhZGRy ZXNzZXMgdG8gYmUgaHVnZSBwYWdlLXNpemUKYWxpZ25lZCBpZiB0aGVpciBzaXplIGV4Y2VlZHMg YSBodWdlIHBhZ2Utc2l6ZS4gSWYgcHVkLXNpemUgdHJhbnNodWdlCigiZ2lhbnQiKSBwYWdlcyBh cmUgZW5hYmxlZCBieSB0aGUgYXJjaCwgdGhlIHNhbWUgaG9sZHMgZm9yIHRob3NlLgoKUGF0Y2gg NiBpbXBsZW1lbnRzIGEgc3BlY2lhbGl6ZWQgaHVnZV9mYXVsdCBoYW5kbGVyIGZvciB2bXdnZngu ClRoZSB2bXdnZnggZHJpdmVyIG1heSBwZXJmb3JtIGRpcnR5LXRyYWNraW5nIGFuZCBuZWVkcyBz b21lIHNwZWNpYWwgY29kZQp0byBoYW5kbGUgdGhhdCBjb3JyZWN0bHkuCgpQYXRjaCA3IGltcGxl bWVudHMgYSBkcm0gaGVscGVyIHRvIGFsaWduIHVzZXItc3BhY2UgYWRkcmVzc2VzIGFjY29yZGlu Zwp0byB0aGUgYWJvdmUgc2NoZW1lLCBpZiBwb3NzaWJsZS4KClBhdGNoIDggaW1wbGVtZW50cyBh IFRUTSByYW5nZSBtYW5hZ2VyIGZvciB2bXdnZnggdGhhdCBkb2VzIHRoZSBzYW1lIGZvcgpncmFw aGljcyBJTyBtZW1vcnkuIFRoaXMgbWF5IGxhdGVyIGJlIHJldXNlZCBieSBvdGhlciBncmFwaGlj cyBkcml2ZXJzCmlmIG5lY2Vzc2FyeS4KClBhdGNoIDkgZmluYWxseSBob29rcyB1cCB0aGUgaGVs cGVycyBvZiBwYXRjaCA3IGFuZCA4IHRvIHRoZSB2bXdnZnggZHJpdmVyLgpBIHNpbWlsYXIgY2hh bmdlIGlzIG5lZWRlZCBmb3IgZ3JhcGhpY3MgZHJpdmVycyB0aGF0IHdhbnQgYSByZWFzb25hYmxl Cmxpa2VseWhvb2Qgb2YgYWN0dWFsbHkgdXNpbmcgaHVnZSBwYWdlLXRhYmxlIGVudHJpZXMuCgpJ ZiBhIGJ1ZmZlciBvYmplY3Qgc2l6ZSBpcyBub3QgaHVnZS1wYWdlIG9yIGdpYW50LXBhZ2UgYWxp Z25lZCwKaXRzIHNpemUgd2lsbCBOT1QgYmUgaW5mbGF0ZWQgYnkgdGhpcyBwYXRjaHNldC4gVGhp cyBtZWFucyB0aGF0IHRoZSBidWZmZXIKb2JqZWN0IHRhaWwgd2lsbCB1c2Ugc21hbGxlciBzaXpl IHBhZ2UtdGFibGUgZW50cmllcyBhbmQgdGh1cyBubyBtZW1vcnkKb3ZlcmhlYWQgb2NjdXJzLiBE cml2ZXJzIHRoYXQgd2FudCB0byBwYXkgdGhlIG1lbW9yeSBvdmVyaGVhZCBwcmljZSBuZWVkIHRv CmltcGxlbWVudCB0aGVpciBvd24gc2NoZW1lIHRvIGluZmxhdGUgYnVmZmVyLW9iamVjdCBzaXpl cy4KClBNRCBzaXplIGh1Z2UgcGFnZS10YWJsZS1lbnRyaWVzIGhhdmUgYmVlbiB0ZXN0ZWQgd2l0 aCB2bXdnZnggYW5kIGZvdW5kIHRvCndvcmsgd2VsbCBib3RoIHdpdGggc3lzdGVtIG1lbW9yeSBi YWNrZWQgYW5kIElPIG1lbW9yeSBiYWNrZWQgYnVmZmVyIG9iamVjdHMuCgpQVUQgc2l6ZSBnaWFu dCBwYWdlLXRhYmxlLWVudHJpZXMgaGF2ZSBzZWVuIGxpbWl0ZWQgKGZhdWx0IGFuZCBDT1cpIHRl c3RpbmcKdXNpbmcgYSBtb2RpZmllZCBrZXJuZWwgKHRvIHN1cHBvcnQgMUdCIHBhZ2UgYWxsb2Nh dGlvbnMpIGFuZCBhIGZha2Ugdm13Z2Z4ClRUTSBtZW1vcnkgdHlwZS4gVGhlIHZtd2dmeCBkcml2 ZXIgZG9lcyBvdGhlcndpc2Ugbm90IHN1cHBvcnQgMUdCLXNpemUgSU8KbWVtb3J5IHJlc291cmNl cy4KCkNvbW1lbnRzIGFuZCBzdWdnZXN0aW9ucyB3ZWxjb21lLgpUaG9tYXMKCkNoYW5nZXMgc2lu Y2UgUkZDOgoqIENoZWNrIGZvciBidWZmZXIgb2JqZWN0cyBwcmVzZW50IGluIGNvbnRpZ291cyBJ TyBNZW1vcnkgKENocmlzdGlhbiBLw7ZuaWcpCiogUmViYXNlZCBvbiB0aGUgdm13Z2Z4IGVtdWxh dGVkIGNvaGVyZW50IG1lbW9yeSBmdW5jdGlvbmFsaXR5LiBUaGF0IHJlYmFzZQogIGFkZHMgcGF0 Y2ggNS4KQ2hhbmdlcyBzaW5jZSB2MToKKiBNYWtlIHRoZSBuZXcgVFRNIHJhbmdlIG1hbmFnZXIg dm13Z2Z4LXNwZWNpZmljLiAoQ2hyaXN0aWFuIEvDtm5pZykKKiBNaW5vciBmaXhlcyBmb3IgY29u ZmlncyB0aGF0IGRvbid0IHN1cHBvcnQgb3Igb25seSBwYXJ0aWFsbHkgc3VwcG9ydAogIHRyYW5z aHVnZSBwYWdlcy4KQ2hhbmdlcyBzaW5jZSB2MjoKKiBNaW5vciBjb2Rpbmcgc3R5bGUgYW5kIGRv YyBmaXhlcyBpbiBwYXRjaCA1LzkgKENocmlzdGlhbiBLw7ZuaWcpCiogUGF0Y2ggNS85IGRvZXNu J3QgdG91Y2ggbW0uIFJlbW92ZSBmcm9tIHRoZSBwYXRjaCB0aXRsZS4KQ2hhbmdlcyBzaW5jZSB2 MzoKKiBBZGRlZCByZXZpZXdzIGFuZCBhY2tzCiogSW1wbGVtZW50ZWQgdWdseSBidXQgZ2VuZXJp YyB0dG1fcGdwcm90X2lzX3dycHJvdGVjdGluZygpIGluc3RlYWQgb2YgYXJjaAogIHNwZWNpZmlj IGNvZGUuCkNoYW5nZXMgc2luY2UgdjQ6CiogQWRkZWQgdGltaW5ncyAoQW5kcmV3IE1vcnRvbikK KiBVcGRhdGVkIGZ1bmN0aW9uIGRvY3VtZW50YXRpb24gKEFuZHJldyBNb3J0b24pCkNoYW5nZXMg c2luY2UgdjY6CiogRml4IGRybSBidWlsZCBlcnJvciB3aXRoICFDT05GSUdfTU1VCgpbMV0KVGhl IGJlbG93IHRlc3QgcHJvZ3JhbSBnZW5lcmF0ZXMgdGhlIGZvbGxvd2luZyBnbnUgdGltZSBvdXRw dXQgd2hlbiBydW4gb24gYQp2bXdnZngtZW5hYmxlZCBrZXJuZWwgd2l0aG91dCB0aGUgcGF0Y2gg c2VyaWVzOgoKNC43OHVzZXIgNi4wMnN5c3RlbSAwOjEwLjkxZWxhcHNlZCA5OSVDUFUgKDBhdmd0 ZXh0KzBhdmdkYXRhIDE2MjRtYXhyZXNpZGVudClrCjBpbnB1dHMrMG91dHB1dHMgKDBtYWpvcis2 NDAwNzdtaW5vcilwYWdlZmF1bHRzIDBzd2FwcwoKYW5kIHdpdGggdGhlIHBhdGNoIHNlcmllczoK CjEuNzF1c2VyIDMuNjBzeXN0ZW0gMDowNS40MGVsYXBzZWQgOTglQ1BVICgwYXZndGV4dCswYXZn ZGF0YSAxNjU2bWF4cmVzaWRlbnQpawowaW5wdXRzKzBvdXRwdXRzICgwbWFqb3IrMjAwNzltaW5v cilwYWdlZmF1bHRzIDBzd2FwcwoKQSBjb25zaXN0ZW50IG51bWJlciBvZiByZWR1Y2VkIGdyYXBo aWNzIHBhZ2UtZmF1bHRzIGNhbiBiZSBzZWVuIHdpdGggbm9ybWFsCmdyYXBoaWNzIGFwcGxpY2F0 aW9ucywgYnV0IGR1ZSB0byB0aGUgYWdncmVzc2l2ZSBidWZmZXIgb2JqZWN0IGNhY2hpbmcgaW4K dm13Z2Z4IHVzZXItc3BhY2UgZHJpdmVycyB0aGUgQ1BVIHRpbWUgcmVkdWN0aW9uIGlzIHdpdGhp biB0aGUgZXJyb3IgbWFyZ2luYWwuCgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxzdHJp bmcuaD4KI2luY2x1ZGUgPHN5cy9tbWFuLmg+CiNpbmNsdWRlIDx4Zjg2ZHJtLmg+CgpzdGF0aWMg dm9pZCBjaGVja2VycihpbnQgcmV0LCBjb25zdCBjaGFyICpuYW1lKQp7CiAgaWYgKHJldCA8IDAp IHsKICAgIHBlcnJvcihuYW1lKTsKICAgIGV4aXQoLTEpOwogIH0KfQoKaW50IG1haW4oaW50IGFn YywgY29uc3QgY2hhciAqYXJndltdKQp7CiAgICBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIg Y19hcmcgPSB7MH07CiAgICBzdHJ1Y3QgZHJtX21vZGVfbWFwX2R1bWIgbV9hcmcgPSB7MH07CiAg ICBzdHJ1Y3QgZHJtX21vZGVfZGVzdHJveV9kdW1iIGRfYXJnID0gezB9OwogICAgaW50IHJldCwg aSwgZmQ7CiAgICB2b2lkICptYXA7CgogICAgZmQgPSBvcGVuKCIvZGV2L2RyaS9jYXJkMCIsIE9f UkRXUik7CiAgICBjaGVja2VycihmZCwgYXJndlswXSk7CgogICAgZm9yIChpID0gMDsgaSA8IDEw MDAwOyArK2kpIHsKICAgICAgY19hcmcuYnBwID0gMzI7CiAgICAgIGNfYXJnLndpZHRoID0gMTAy NDsKICAgICAgY19hcmcuaGVpZ2h0ID0gMTAyNDsgICAgICAKICAgICAgcmV0ID0gZHJtSW9jdGwo ZmQsIERSTV9JT0NUTF9NT0RFX0NSRUFURV9EVU1CLCAmY19hcmcpOwogICAgICBjaGVja2Vycihm ZCwgYXJndlswXSk7CgogICAgICBtX2FyZy5oYW5kbGUgPSBjX2FyZy5oYW5kbGU7CiAgICAgIHJl dCA9IGRybUlvY3RsKGZkLCBEUk1fSU9DVExfTU9ERV9NQVBfRFVNQiwgJm1fYXJnKTsKICAgICAg Y2hlY2tlcnIoZmQsIGFyZ3ZbMF0pOwogICAgICAKICAgICAgbWFwID0gbW1hcChOVUxMLCBjX2Fy Zy5zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBmZCwKCSAgICAgICBt X2FyZy5vZmZzZXQpOwogICAgICBjaGVja2VycihtYXAgPT0gTUFQX0ZBSUxFRCA/IC0xIDogMCwg YXJndlswXSk7CgogICAgICAodm9pZCkgbWFkdmlzZSgodm9pZCAqKSBtYXAsIGNfYXJnLnNpemUs IE1BRFZfSFVHRVBBR0UpOwogICAgICBtZW1zZXQobWFwLCAweDY3LCBjX2FyZy5zaXplKTsKICAg ICAgbXVubWFwKG1hcCwgY19hcmcuc2l6ZSk7CgogICAgICBkX2FyZy5oYW5kbGUgPSBjX2FyZy5o YW5kbGU7CiAgICAgIHJldCA9IGRybUlvY3RsKGZkLCBEUk1fSU9DVExfTU9ERV9ERVNUUk9ZX0RV TUIsICZkX2FyZyk7CiAgICAgIGNoZWNrZXJyKHJldCwgYXJndlswXSk7CiAgICB9CiAgICAKICAg IGNsb3NlKGZkKTsKfQoKQ2M6IEFuZHJldyBNb3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5v cmc+CkNjOiBNaWNoYWwgSG9ja28gPG1ob2Nrb0BzdXNlLmNvbT4KQ2M6ICJNYXR0aGV3IFdpbGNv eCAoT3JhY2xlKSIgPHdpbGx5QGluZnJhZGVhZC5vcmc+CkNjOiAiS2lyaWxsIEEuIFNodXRlbW92 IiA8a2lyaWxsLnNodXRlbW92QGxpbnV4LmludGVsLmNvbT4KQ2M6IFJhbHBoIENhbXBiZWxsIDxy Y2FtcGJlbGxAbnZpZGlhLmNvbT4KQ2M6ICJKw6lyw7RtZSBHbGlzc2UiIDxqZ2xpc3NlQHJlZGhh dC5jb20+CkNjOiAiQ2hyaXN0aWFuIEvDtm5pZyIgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4K Q2M6IERhbiBXaWxsaWFtcyA8ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29tPgoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=