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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 96178C433EF for ; Wed, 18 May 2022 03:01:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:References: Mime-Version:Message-Id:In-Reply-To:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=euYPfhWg94yjNplneof+VvuoDk+GcmFlEcYgn0Eafg4=; b=3ZPg3J34nYQ7gdlE1llGypYhDQ W8DkYbUPUnSnXixjfF0UoVct81oJByFtbsKyX1xuEDVQhDdGvHaitg46mw78JBLV2X8y7qBEs3Q5H za3Re6f6hmstfamRm2t0VnO5WjJ8CMLiHQCPQbyG2OC1tQVIdord7UxBmFcjcWpgQ1d8iIMskPp2a 0ukwJrcpNijWDMxHuYLiGrnRtcyWiGMdb7gReN2BjD9oYy6aemYiDMzWz1spCC+HlUJWpyMd64npr Ru9DfZgvymLkSyD2L8QscJH3CK+CtSzTnGwa1tUwIMqu3upONpZuDQpNZkuISxe4jkyKdYaKhZX4f Qbdr4n0A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nr9vJ-00GluS-Ir; Wed, 18 May 2022 03:00:29 +0000 Received: from mail-yw1-x1149.google.com ([2607:f8b0:4864:20::1149]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nr8mB-00Gd4m-D8 for linux-arm-kernel@lists.infradead.org; Wed, 18 May 2022 01:47:01 +0000 Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-2fed274f3fbso7977687b3.17 for ; Tue, 17 May 2022 18:46:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc:content-transfer-encoding; bh=wIzudme/4B8OfAhXW9ayrH5B6l0TMc7K1sH/XdKk6Lg=; b=Ezk1gP5WC/D/1WV88OzvSzVZ4sPkJzMOxJAwd7nnYwsV2l9jLcs2v3e0kg9TQVbK+E YaSc9Ks4FZtZpalfaLJOQUXrD/YOc1tZnIOq+5D+UNEkJfQbu0pC/dA8G4O5USdxGvwH FeUsv50i+EaNusCEQjgwPIJXFN7tPxQP4vjI0NuD5dC0tjcumSXINW/Q7neSqIvb0bM/ o02sV5pM6lRXCgxoKdY3uL1EJE42SuPTi1rAPvC+xpihsPlo7zSdBvGmRoAjygmJAuZD +5Hd5VHONznzGjGEvvt+wD+KyavmAKQVFXAAGUBAKvigs4jUsz8prtj/aRMfvwIvBjK9 9kww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc:content-transfer-encoding; bh=wIzudme/4B8OfAhXW9ayrH5B6l0TMc7K1sH/XdKk6Lg=; b=v8abA/bcV7XpedobNvrU/eDjQs27QedZZJzPd0hAIzpQ4FwM9XuIPR4jKcNT8tGE4v NjcO701+HqA/fSr2GtnDv7fNy5SqBgdG1TrJET4R+schdPBOgWF1Arv6sqNnN5Y21LJq KwOmQpBl2Z0YMLXuKwZn8IYJQapz2yze1D/ov21VWWxOKanpt9JENTPuTo1Yqfdmxr1a GELdFWAVVaQEc5JsSge1QeLXeBtKVdHDSTBSRvI+CGrN+nEwVcEg7dj+RS2xxMLWdsyy +XK7KACoaXgjmD4z2uMWLf7eJNyU++Vjgi1WM804Nr3kib4OZxv+5OXG+RGw9avkpQNK gEww== X-Gm-Message-State: AOAM531U636eKG0FvFBDLsXQZHaSe9uh/Arhc9aYKS8DsorK2Xi2Sj6+ 3PCilVTL3o/fqRK5POWJih3uDcbFrfo= X-Google-Smtp-Source: ABdhPJxeYnceCSmSU4CUNHBHtgjerhI4/gIHWEDe6JDvKsChyDSilUeyGdczcBGPDtLs45mlW8Z4BuDhLyE= X-Received: from yuzhao.bld.corp.google.com ([2620:15c:183:200:f7bc:90c9:d86e:4ea8]) (user=yuzhao job=sendgmr) by 2002:a81:7b05:0:b0:2f1:7f75:1d1e with SMTP id w5-20020a817b05000000b002f17f751d1emr27839036ywc.520.1652838415864; Tue, 17 May 2022 18:46:55 -0700 (PDT) Date: Tue, 17 May 2022 19:46:20 -0600 In-Reply-To: <20220518014632.922072-1-yuzhao@google.com> Message-Id: <20220518014632.922072-2-yuzhao@google.com> Mime-Version: 1.0 References: <20220518014632.922072-1-yuzhao@google.com> X-Mailer: git-send-email 2.36.0.550.gb090851708-goog Subject: [PATCH v11 01/14] mm: x86, arm64: add arch_has_hw_pte_young() From: Yu Zhao To: Andrew Morton , linux-mm@kvack.org Cc: Andi Kleen , Aneesh Kumar , Catalin Marinas , Dave Hansen , Hillf Danton , Jens Axboe , Johannes Weiner , Jonathan Corbet , Linus Torvalds , Matthew Wilcox , Mel Gorman , Michael Larabel , Michal Hocko , Mike Rapoport , Peter Zijlstra , Tejun Heo , Vlastimil Babka , Will Deacon , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, x86@kernel.org, page-reclaim@google.com, Yu Zhao , Barry Song , Brian Geffon , Jan Alexander Steffens , Oleksandr Natalenko , Steven Barrett , Suleiman Souhlal , Daniel Byrne , Donald Carr , "=?UTF-8?q?Holger=20Hoffst=C3=A4tte?=" , Konstantin Kharlamov , Shuang Zhai , Sofia Trinh , Vaibhav Jain X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220517_184659_512909_BC466212 X-CRM114-Status: GOOD ( 17.48 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 U29tZSBhcmNoaXRlY3R1cmVzIGF1dG9tYXRpY2FsbHkgc2V0IHRoZSBhY2Nlc3NlZCBiaXQgaW4g UFRFcywgZS5nLiwKeDg2IGFuZCBhcm02NCB2OC4yLiBPbiBhcmNoaXRlY3R1cmVzIHRoYXQgZG8g bm90IGhhdmUgdGhpcyBjYXBhYmlsaXR5LApjbGVhcmluZyB0aGUgYWNjZXNzZWQgYml0IGluIGEg UFRFIHVzdWFsbHkgdHJpZ2dlcnMgYSBwYWdlIGZhdWx0CmZvbGxvd2luZyB0aGUgVExCIG1pc3Mg b2YgdGhpcyBQVEUgKHRvIGVtdWxhdGUgdGhlIGFjY2Vzc2VkIGJpdCkuCgpCZWluZyBhd2FyZSBv ZiB0aGlzIGNhcGFiaWxpdHkgY2FuIGhlbHAgbWFrZSBiZXR0ZXIgZGVjaXNpb25zLCBlLmcuLAp3 aGV0aGVyIHRvIHNwcmVhZCB0aGUgd29yayBvdXQgb3ZlciBhIHBlcmlvZCBvZiB0aW1lIHRvIHJl ZHVjZSBidXJzdHkKcGFnZSBmYXVsdHMgd2hlbiB0cnlpbmcgdG8gY2xlYXIgdGhlIGFjY2Vzc2Vk IGJpdCBpbiBtYW55IFBURXMuCgpOb3RlIHRoYXQgdGhlb3JldGljYWxseSB0aGlzIGNhcGFiaWxp dHkgY2FuIGJlIHVucmVsaWFibGUsIGUuZy4sCmhvdHBsdWdnZWQgQ1BVcyBtaWdodCBiZSBkaWZm ZXJlbnQgZnJvbSBidWlsdGluIG9uZXMuIFRoZXJlZm9yZSBpdApzaG91bGQgbm90IGJlIHVzZWQg aW4gYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGNvZGUgdGhhdCBpbnZvbHZlcwpjb3JyZWN0bmVz cywgZS5nLiwgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgVExCIGZsdXNoZXMgYXJlIHJlcXVpcmVkIChp bgpjb21iaW5hdGlvbiB3aXRoIHRoZSBhY2Nlc3NlZCBiaXQpLgoKU2lnbmVkLW9mZi1ieTogWXUg WmhhbyA8eXV6aGFvQGdvb2dsZS5jb20+ClJldmlld2VkLWJ5OiBCYXJyeSBTb25nIDxiYW9odWFA a2VybmVsLm9yZz4KQWNrZWQtYnk6IEJyaWFuIEdlZmZvbiA8YmdlZmZvbkBnb29nbGUuY29tPgpB Y2tlZC1ieTogSmFuIEFsZXhhbmRlciBTdGVmZmVucyAoaGVmdGlnKSA8aGVmdGlnQGFyY2hsaW51 eC5vcmc+CkFja2VkLWJ5OiBPbGVrc2FuZHIgTmF0YWxlbmtvIDxvbGVrc2FuZHJAbmF0YWxlbmtv Lm5hbWU+CkFja2VkLWJ5OiBTdGV2ZW4gQmFycmV0dCA8c3RldmVuQGxpcXVvcml4Lm5ldD4KQWNr ZWQtYnk6IFN1bGVpbWFuIFNvdWhsYWwgPHN1bGVpbWFuQGdvb2dsZS5jb20+CkFja2VkLWJ5OiBX aWxsIERlYWNvbiA8d2lsbEBrZXJuZWwub3JnPgpUZXN0ZWQtYnk6IERhbmllbCBCeXJuZSA8ZGpi eXJuZUBtdHUuZWR1PgpUZXN0ZWQtYnk6IERvbmFsZCBDYXJyIDxkQGNoYW9zLXJlaW5zLmNvbT4K VGVzdGVkLWJ5OiBIb2xnZXIgSG9mZnN0w6R0dGUgPGhvbGdlckBhcHBsaWVkLWFzeW5jaHJvbnku Y29tPgpUZXN0ZWQtYnk6IEtvbnN0YW50aW4gS2hhcmxhbW92IDxIaS1BbmdlbEB5YW5kZXgucnU+ ClRlc3RlZC1ieTogU2h1YW5nIFpoYWkgPHN6aGFpMkBjcy5yb2NoZXN0ZXIuZWR1PgpUZXN0ZWQt Ynk6IFNvZmlhIFRyaW5oIDxzb2ZpYS50cmluaEBlZGkud29ya3M+ClRlc3RlZC1ieTogVmFpYmhh diBKYWluIDx2YWliaGF2QGxpbnV4LmlibS5jb20+Ci0tLQogYXJjaC9hcm02NC9pbmNsdWRlL2Fz bS9wZ3RhYmxlLmggfCAxNCArKy0tLS0tLS0tLS0tLQogYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0 YWJsZS5oICAgfCAgNiArKystLS0KIGluY2x1ZGUvbGludXgvcGd0YWJsZS5oICAgICAgICAgIHwg MTMgKysrKysrKysrKysrKwogbW0vbWVtb3J5LmMgICAgICAgICAgICAgICAgICAgICAgfCAxNCAr LS0tLS0tLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAyOCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaCBi L2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oCmluZGV4IGRmZjJiNDgzZWE1MC4uOGU5 YzJjODM3Njc4IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaAor KysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaApAQCAtOTk5LDIzICs5OTksMTMg QEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZV9tbXVfY2FjaGUoc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEsCiAgKiBwYWdlIGFmdGVyIGZvcmsoKSArIENvVyBmb3IgcGZuIG1hcHBpbmdzLiBX ZSBkb24ndCBhbHdheXMgaGF2ZSBhCiAgKiBoYXJkd2FyZS1tYW5hZ2VkIGFjY2VzcyBmbGFnIG9u IGFybTY0LgogICovCi1zdGF0aWMgaW5saW5lIGJvb2wgYXJjaF9mYXVsdHNfb25fb2xkX3B0ZSh2 b2lkKQotewotCVdBUk5fT04ocHJlZW1wdGlibGUoKSk7Ci0KLQlyZXR1cm4gIWNwdV9oYXNfaHdf YWYoKTsKLX0KLSNkZWZpbmUgYXJjaF9mYXVsdHNfb25fb2xkX3B0ZQkJYXJjaF9mYXVsdHNfb25f b2xkX3B0ZQorI2RlZmluZSBhcmNoX2hhc19od19wdGVfeW91bmcJCWNwdV9oYXNfaHdfYWYKIAog LyoKICAqIEV4cGVyaW1lbnRhbGx5LCBpdCdzIGNoZWFwIHRvIHNldCB0aGUgYWNjZXNzIGZsYWcg aW4gaGFyZHdhcmUgYW5kIHdlCiAgKiBiZW5lZml0IGZyb20gcHJlZmF1bHRpbmcgbWFwcGluZ3Mg YXMgJ29sZCcgdG8gc3RhcnQgd2l0aC4KICAqLwotc3RhdGljIGlubGluZSBib29sIGFyY2hfd2Fu dHNfb2xkX3ByZWZhdWx0ZWRfcHRlKHZvaWQpCi17Ci0JcmV0dXJuICFhcmNoX2ZhdWx0c19vbl9v bGRfcHRlKCk7Ci19Ci0jZGVmaW5lIGFyY2hfd2FudHNfb2xkX3ByZWZhdWx0ZWRfcHRlCWFyY2hf d2FudHNfb2xkX3ByZWZhdWx0ZWRfcHRlCisjZGVmaW5lIGFyY2hfd2FudHNfb2xkX3ByZWZhdWx0 ZWRfcHRlCWNwdV9oYXNfaHdfYWYKIAogc3RhdGljIGlubGluZSBib29sIHB1ZF9zZWN0X3N1cHBv cnRlZCh2b2lkKQogewpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5o IGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oCmluZGV4IDYyYWIwN2UyNGFlZi4uMDE2 NjA2YTBjZjIwIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKKysr IGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oCkBAIC0xNDI0LDEwICsxNDI0LDEwIEBA IHN0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX2hhc19wZm5fbW9kaWZ5X2NoZWNrKHZvaWQpCiAJcmV0 dXJuIGJvb3RfY3B1X2hhc19idWcoWDg2X0JVR19MMVRGKTsKIH0KIAotI2RlZmluZSBhcmNoX2Zh dWx0c19vbl9vbGRfcHRlIGFyY2hfZmF1bHRzX29uX29sZF9wdGUKLXN0YXRpYyBpbmxpbmUgYm9v bCBhcmNoX2ZhdWx0c19vbl9vbGRfcHRlKHZvaWQpCisjZGVmaW5lIGFyY2hfaGFzX2h3X3B0ZV95 b3VuZyBhcmNoX2hhc19od19wdGVfeW91bmcKK3N0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX2hhc19o d19wdGVfeW91bmcodm9pZCkKIHsKLQlyZXR1cm4gZmFsc2U7CisJcmV0dXJuIHRydWU7CiB9CiAK ICNlbmRpZgkvKiBfX0FTU0VNQkxZX18gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGd0 YWJsZS5oIGIvaW5jbHVkZS9saW51eC9wZ3RhYmxlLmgKaW5kZXggZjRmNDA3N2I5N2FhLi43OWY2 NGRjZmYwN2QgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGd0YWJsZS5oCisrKyBiL2luY2x1 ZGUvbGludXgvcGd0YWJsZS5oCkBAIC0yNTksNiArMjU5LDE5IEBAIHN0YXRpYyBpbmxpbmUgaW50 IHBtZHBfY2xlYXJfZmx1c2hfeW91bmcoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAjZW5k aWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovCiAjZW5kaWYKIAorI2lmbmRlZiBh cmNoX2hhc19od19wdGVfeW91bmcKKy8qCisgKiBSZXR1cm4gd2hldGhlciB0aGUgYWNjZXNzZWQg Yml0IGlzIHN1cHBvcnRlZCBvbiB0aGUgbG9jYWwgQ1BVLgorICoKKyAqIFRoaXMgc3R1YiBhc3N1 bWVzIGFjY2Vzc2luZyB0aHJvdWdoIGFuIG9sZCBQVEUgdHJpZ2dlcnMgYSBwYWdlIGZhdWx0Lgor ICogQXJjaGl0ZWN0dXJlcyB0aGF0IGF1dG9tYXRpY2FsbHkgc2V0IHRoZSBhY2Nlc3MgYml0IHNo b3VsZCBvdmVyd3JpdGUgaXQuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX2hhc19od19w dGVfeW91bmcodm9pZCkKK3sKKwlyZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogI2lmbmRlZiBf X0hBVkVfQVJDSF9QVEVQX0NMRUFSCiBzdGF0aWMgaW5saW5lIHZvaWQgcHRlcF9jbGVhcihzdHJ1 Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLAogCQkJICAgICAgcHRlX3QgKnB0 ZXApCmRpZmYgLS1naXQgYS9tbS9tZW1vcnkuYyBiL21tL21lbW9yeS5jCmluZGV4IDc2ZTNhZjk2 MzlkOS4uNDRhMWVjN2EyY2FjIDEwMDY0NAotLS0gYS9tbS9tZW1vcnkuYworKysgYi9tbS9tZW1v cnkuYwpAQCAtMTIyLDE4ICsxMjIsNiBAQCBpbnQgcmFuZG9taXplX3ZhX3NwYWNlIF9fcmVhZF9t b3N0bHkgPQogCQkJCQkyOwogI2VuZGlmCiAKLSNpZm5kZWYgYXJjaF9mYXVsdHNfb25fb2xkX3B0 ZQotc3RhdGljIGlubGluZSBib29sIGFyY2hfZmF1bHRzX29uX29sZF9wdGUodm9pZCkKLXsKLQkv KgotCSAqIFRob3NlIGFyY2hlcyB3aGljaCBkb24ndCBoYXZlIGh3IGFjY2VzcyBmbGFnIGZlYXR1 cmUgbmVlZCB0bwotCSAqIGltcGxlbWVudCB0aGVpciBvd24gaGVscGVyLiBCeSBkZWZhdWx0LCAi dHJ1ZSIgbWVhbnMgcGFnZWZhdWx0Ci0JICogd2lsbCBiZSBoaXQgb24gb2xkIHB0ZS4KLQkgKi8K LQlyZXR1cm4gdHJ1ZTsKLX0KLSNlbmRpZgotCiAjaWZuZGVmIGFyY2hfd2FudHNfb2xkX3ByZWZh dWx0ZWRfcHRlCiBzdGF0aWMgaW5saW5lIGJvb2wgYXJjaF93YW50c19vbGRfcHJlZmF1bHRlZF9w dGUodm9pZCkKIHsKQEAgLTI3ODQsNyArMjc3Miw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb3df dXNlcl9wYWdlKHN0cnVjdCBwYWdlICpkc3QsIHN0cnVjdCBwYWdlICpzcmMsCiAJICogT24gYXJj aGl0ZWN0dXJlcyB3aXRoIHNvZnR3YXJlICJhY2Nlc3NlZCIgYml0cywgd2Ugd291bGQKIAkgKiB0 YWtlIGEgZG91YmxlIHBhZ2UgZmF1bHQsIHNvIG1hcmsgaXQgYWNjZXNzZWQgaGVyZS4KIAkgKi8K LQlpZiAoYXJjaF9mYXVsdHNfb25fb2xkX3B0ZSgpICYmICFwdGVfeW91bmcodm1mLT5vcmlnX3B0 ZSkpIHsKKwlpZiAoIWFyY2hfaGFzX2h3X3B0ZV95b3VuZygpICYmICFwdGVfeW91bmcodm1mLT5v cmlnX3B0ZSkpIHsKIAkJcHRlX3QgZW50cnk7CiAKIAkJdm1mLT5wdGUgPSBwdGVfb2Zmc2V0X21h cF9sb2NrKG1tLCB2bWYtPnBtZCwgYWRkciwgJnZtZi0+cHRsKTsKLS0gCjIuMzYuMC41NTAuZ2Iw OTA4NTE3MDgtZ29vZwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LWFybS1rZXJuZWwK