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=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham 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 1370BC3A5A2 for ; Fri, 23 Aug 2019 09:41:28 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (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 D973922CE3 for ; Fri, 23 Aug 2019 09:41:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D973922CE3 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1i1640-0000mx-6B; Fri, 23 Aug 2019 09:40:56 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1i163z-0000ms-3c for xen-devel@lists.xenproject.org; Fri, 23 Aug 2019 09:40:55 +0000 X-Inumbo-ID: 195d98e2-c58a-11e9-ade4-12813bfff9fa Received: from foss.arm.com (unknown [217.140.110.172]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTP id 195d98e2-c58a-11e9-ade4-12813bfff9fa; Fri, 23 Aug 2019 09:40:53 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0974F337; Fri, 23 Aug 2019 02:40:53 -0700 (PDT) Received: from [10.1.196.50] (e108454-lin.cambridge.arm.com [10.1.196.50]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 8C70D3F246; Fri, 23 Aug 2019 02:40:52 -0700 (PDT) To: Stefano Stabellini References: <20190812173019.11956-1-julien.grall@arm.com> <20190812173019.11956-28-julien.grall@arm.com> From: Julien Grall Message-ID: Date: Fri, 23 Aug 2019 10:40:51 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US Subject: Re: [Xen-devel] [PATCH v3 27/28] xen/arm32: head: Introduce macros to create table and mapping entry X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: xen-devel@lists.xenproject.org, Volodymyr Babchuk Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" SGkgU3RlZmFubywKCk9uIDIzLzA4LzIwMTkgMDI6MTAsIFN0ZWZhbm8gU3RhYmVsbGluaSB3cm90 ZToKPiBPbiBNb24sIDEyIEF1ZyAyMDE5LCBKdWxpZW4gR3JhbGwgd3JvdGU6Cj4+IEF0IHRoZSBt b21lbnQsIGFueSB1cGRhdGUgdG8gdGhlIGJvb3QtcGFnZXMgYXJlIG9wZW4tY29kZWQuIFRoaXMg aXMKPj4gbWFraW5nIG1vcmUgZGlmZmljdWx0IHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljIG9mIGEg ZnVuY3Rpb24gYXMgZWFjaAo+PiB1cGRhdGUgcm91Z2hseSByZXF1aXJlcyA2IGluc3RydWN0aW9u cy4KPj4KPj4gVG8gZWFzZSB0aGUgcmVhZGFiaWxpdHksIHR3byBuZXcgbWFjcm9zIGFyZSBpbnRy b2R1Y2VkOgo+PiAgICAgIC0gY3JlYXRlX3RhYmxlX2VudHJ5OiBDcmVhdGUgYSBwYWdlLXRhYmxl IGVudHJ5IGluIGEgZ2l2ZW4gdGFibGUuCj4+ICAgICAgVGhpcyBjYW4gd29yayBhdCBhbnkgbGV2 ZWwuCj4+ICAgICAgLSBjcmVhdGVfbWFwcGluZ19lbnRyeTogQ3JlYXRlIGEgbWFwcGluZyBlbnRy eSBpbiBhIGdpdmVuIHRhYmxlLgo+PiAgICAgIE5vbmUgb2YgdGhlIHVzZXJzIHdpbGwgcmVxdWly ZSB0byBtYXAgYXQgYW55IG90aGVyIGxldmVsIHRoYW4gM3JkCj4+ICAgICAgKGkuZSBwYWdlIGdy YW51bGFyaXR5KS4gU28gdGhlIG1hY3JvIGlzIHN1cHBvcnRpbmcgc3VwcG9ydCAzcmQgbGV2ZWwK Pj4gICAgICBtYXBwaW5nLgo+Pgo+PiBVbmxpa2UgYXJtNjQsIHRoZXJlIGFyZSBubyBlYXN5IHdh eSB0byBoYXZlIGEgUEMgcmVsYXRpdmUgYWRkcmVzcyB3aXRoaW4KPj4gdGhlIHJhbmdlIC0vKzRH Qi4gSW4gb3JkZXIgdG8gaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gdXNlIHRoZSBtYWNybyBpbgo+ PiBjb250ZXh0IHdpdGggTU1VIG9uL29mZiwgdGhlIHVzZXIgbmVlZHMgdG8gdGVsbCB0aGUgc3Rh dGUgb2YgdGhlIE1NVS4KPj4KPj4gTGFzdGx5LCB0YWtlIHRoZSBvcHBvcnR1bml0eSB0byByZXBs YWNlIG9wZW4tY29kZWQgdmVyc2lvbiBpbgo+PiBzZXR1cF9maXhtYXAoKSBieSB0aGUgdHdvIG5l dyBtYWNyb3MuIFRoZSBvbmVzIGluIGNyZWF0ZV9wYWdlX3RhYmxlcygpCj4+IHdpbGwgYmUgcmVw bGFjZWQgaW4gYSBmb2xsb3ctdXAgcGF0Y2guCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEp1bGllbiBH cmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+Cj4+Cj4+IC0tLQo+PiAgICAgIFRoZSBhZHJfbCBo YWNrIGlzIGEgYml0IHVnbHksIGJ1dCBJIGNhbid0IGZpbmQgbmljZXIgd2F5IHRvIGF2b2lkCj4+ ICAgICAgY29kZSBkdXBsaWNhdGlvbiBhbmQgaW1wcm92ZSByZWFkYWJpbGl0eS4KPj4KPj4gICAg ICBDaGFuZ2VzIGluIHYzOgo+PiAgICAgICAgICAtIFBhdGNoIGFkZGVkCj4+IC0tLQo+PiAgIHhl bi9hcmNoL2FybS9hcm0zMi9oZWFkLlMgfCAxMDggKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLQo+PiAgIDEgZmlsZSBjaGFuZ2VkLCA4OSBpbnNlcnRpb25zKCsp LCAxOSBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9hcm0zMi9o ZWFkLlMgYi94ZW4vYXJjaC9hcm0vYXJtMzIvaGVhZC5TCj4+IGluZGV4IGU4NmE5Zjk1ZTcuLjZk MDNmZWNhZjIgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9hcmNoL2FybS9hcm0zMi9oZWFkLlMKPj4gKysr IGIveGVuL2FyY2gvYXJtL2FybTMyL2hlYWQuUwo+PiBAQCAtNTAsNiArNTAsMjAgQEAKPj4gICAu ZW5kbQo+PiAgIAo+PiAgIC8qCj4+ICsgKiBUaGVyZSBhcmUgbm8gZWFzeSB3YXkgdG8gaGF2ZSBh IFBDIHJlbGF0aXZlIGFkZHJlc3Mgd2l0aGluIHRoZSByYW5nZQo+PiArICogKy8tIDRHQiBvZiB0 aGUgUEMuCj4+ICsgKgo+PiArICogVGhpcyBtYWNybyB3b3JrYXJvdW5kIGl0IGJ5IGFza2luZyB0 aGUgdXNlciB0byB0ZWxsIHdoZXRoZXIgdGhlIE1NVQo+PiArICogaGFzIGJlZW4gdHVybmVkIG9u IG9yIG5vdC4KPiAKPiBJIHdvdWxkIGFkZCBvbmUgc3RhdGVtZW50IHNheWluZyB3aHkgd2UgYXJl IHVzaW5nIHIxMCBiZWxvdyBpbiB0aGUKPiBpbXBsZW1lbnRhdGlvbi4gSnVzdCBhIHN1Z2dlc3Rp b24gdG8gbWFrZSB0aGluZ3MgY2xlYXJlci4KClN1cmUuCgo+IAo+IAo+PiArICovCj4+ICsubWFj cm8gYWRyX2wsIGRzdCwgc3ltLCBtbXUKPj4gKyAgICAgICAgbGRyICAgXGRzdCwgPVxzeW0KPj4g KyAgICAgICAgLmlmIFxtbXUgPT0gMAo+PiArICAgICAgICBhZGQgICBcZHN0LCBcZHN0LCByMTAK Pj4gKyAgICAgICAgLmVuZGlmCj4+ICsuZW5kbQo+PiArCj4+ICsvKgo+PiAgICAqIENvbW1vbiBy ZWdpc3RlciB1c2FnZSBpbiB0aGlzIGZpbGU6Cj4+ICAgICogICByMCAgLQo+PiAgICAqICAgcjEg IC0KPj4gQEAgLTM0Miw2ICszNTYsNzYgQEAgY3B1X2luaXRfZG9uZToKPj4gICBFTkRQUk9DKGNw dV9pbml0KQo+PiAgIAo+PiAgIC8qCj4+ICsgKiBNYWNybyB0byBjcmVhdGUgYSBwYWdlIHRhYmxl IGVudHJ5IGluIFxwdGJsIHRvIFx0YmwKPj4gKyAqCj4+ICsgKiBwdGJsOiAgICB0YWJsZSBzeW1i b2wgd2hlcmUgdGhlIGVudHJ5IHdpbGwgYmUgY3JlYXRlZAo+PiArICogdGJsOiAgICAgdGFibGUg c3ltYm9sIHRvIHBvaW50IHRvCj4+ICsgKiB2aXJ0OiAgICB2aXJ0dWFsIGFkZHJlc3MKPj4gKyAq IHNoaWZ0OiAgICNpbW0gcGFnZSB0YWJsZSBzaGlmdAo+PiArICogbW11OiAgICAgSXMgdGhlIE1N VSB0dXJuZWQgb24vb2ZmLiBJZiBub3Qgc3BlY2lmaWVkIGl0IHdpbGwgYmUgb2ZmCj4+ICsgKgo+ PiArICogUHJlc2VydmVzIFx2aXJ0Cj4+ICsgKiBDbG9iYmVycyByMSAtIHI0Cj4gCj4gSW4gdGhl IDY0Yml0IHZlcnNpb24geW91IGFkZGVkIHRoZSB0ZW1wIHJlZ2lzdGVycyB0byB0aGUgcGFyYW1l dGVyIGxpc3QuCj4gV2h5IGRvIHRoaW5ncyBkaWZmZXJlbnRseSBoZXJlLCBoYXJkLWNvZGluZyB0 aGUgdXNhZ2Ugb2YgcjEtcjQ/CgpBIGZldyByZWFzb25zOgogICAgMSkgVGhlcmUgYXJlIDIgbW9y ZSBwYXJhbWV0ZXJzIGZvciB0aGUgYXJtMzIgdmVyc2lvbiAob25lIG1vcmUgdG1wIHJlZ2lzdGVy IAorIG1tdSkuIFNvIHRoZSBsaW5lIHdpbGwgYmUgZmFyIG92ZXIgODAgY2hhcmFjdGVycy4gQSBz cGxpdCBvZiB0aGUgbGluZSB3aWxsIG5vdCAKYmUgaW5saW5lIHdpdGggdGhlIGlkZWEgb2Ygb25l IGxpbmUgcGVyICJpbnN0cnVjdGlvbiIgd2l0aGluIHRoZSBmaWxlLgogICAgMikgc3RyZCBpbXBv c2UgdGhlIHR3byByZWdpc3RlcnMgdGhhdCB3aWxsIGJlIHN0b3JlZCB0byBiZSBjb250aWd1b3Vz ICh0aGUgCnN0YXJ0IHJlZ2lzdGVyIHNob3VsZCBiZSBhbiBldmVuIG51bWJlcikuIFNvIHdlIHdv dWxkIGhhdmUgdG8gY29udmV5IGl0IHRvIHRoZSB1c2VyLgoKYXJtNjQgdmVyc2lvbiBpcyB1c2lu ZyB0aGUgcGFyYW1ldGVyIGxpc3QgYmVjYXVzZSBJIGZlZWwgbWFjcm8gaXMgbm90IG1lYW50IHRv IAptb2RpZnkgcHJlLWRlZmluZWQgcmVnaXN0ZXJzLiBJIGFtIGF3YXJlIHRoaXMgaXMgd2hhdCB3 ZSBkbyBvbiBhcm0zMiBidXQgd2UgYWxzbyAKaGF2ZSBzeW1ib2xzIGluIHBhcmFtZXRlcnMgYW5k IGEgZnVuY3Rpb24gd291bGQgbm90IGhhdmUgbWFkZSB0aGluZ3MgbXVjaCBiZXR0ZXIgCmluIHRo ZSBjYWxsZXJzICh5b3Ugd291bGQgaGF2ZSB0byBsb2FkIGFsbCBzeW1ib2xzIGluIHJlZ2lzdGVy cyBiZWZvcmUgaGFuZCkuCgpTbyB0aGlzIGlzIHRoZSBiZXN0IGNvbXByb21pc2VkIEkgaGF2ZSBm b3VuZC4KCj4gCj4gCj4+ICsgKiBBbHNvIHVzZSByMTAgZm9yIHRoZSBwaHlzIG9mZnNldC4KPj4g KyAqCj4+ICsgKiBOb3RlIHRoYXQgXHZpcnQgc2hvdWxkIGJlIGluIGEgcmVnaXN0ZXIgb3RoZXIg dGhhbiByMSAtIHI0Cj4+ICsgKi8KPj4gKy5tYWNybyBjcmVhdGVfdGFibGVfZW50cnksIHB0Ymws IHRibCwgdmlydCwgc2hpZnQsIG1tdT0wCj4+ICsgICAgICAgIGxzciAgIHIxLCBcdmlydCwgI1xz aGlmdAo+PiArICAgICAgICBtb3ZfdyByMiwgTFBBRV9FTlRSWV9NQVNLCj4+ICsgICAgICAgIGFu ZCAgIHIxLCByMSwgcjIgICAgICAgICAgICAgLyogcjEgOj0gc2xvdCBpbiBcdGxiICovCj4+ICsg ICAgICAgIGxzbCAgIHIxLCByMSwgIzMgICAgICAgICAgICAgLyogcjEgOj0gc2xvdCBvZmZzZXQg aW4gXHRsYiAqLwo+PiArCj4+ICsgICAgICAgIGxkciAgIHI0LCA9XHRibAo+PiArICAgICAgICBh ZGQgICByNCwgcjQsIHIxMCAgICAgICAgICAgIC8qIHI0IDo9IHBhZGRyKFx0bGIpICovCj4gCj4g eW91IGNvdWxkIHVzZSBhZHJfbD8KCmFkcl9sIGlzIGZvciBsb2FkaW5nIHJlbGF0aXZlIGFkZHJl c3MuIEhlcmUgd2Ugd2FudCB0aGUgcGh5c2ljYWwgYWRkcmVzcyAKcmVnYXJkaW5nIHRoZSBzdGF0 ZSBvZiB0aGUgTU1VLgoKPj4gKyAgICAgICAgbW92ICAgcjIsICNQVF9QVCAgICAgICAgICAgICAv KiByMjpyMyA6PSByaWdodCBmb3IgbGluZWFyIFBUICovCj4+ICsgICAgICAgIG9yciAgIHIyLCBy MiwgcjQgICAgICAgICAgICAgLyogICAgICAgICAgICsgXHRsYiBwYWRkciAqLwo+PiArICAgICAg ICBtb3YgICByMywgIzAKPj4gKwo+PiArICAgICAgICBhZHJfbCByNCwgXHB0YmwsIFxtbXUKPj4g Kwo+PiArICAgICAgICBzdHJkICByMiwgcjMsIFtyNCwgcjFdCj4+ICsuZW5kbQo+PiArCj4+ICsv Kgo+PiArICogTWFjcm8gdG8gY3JlYXRlIGEgbWFwcGluZyBlbnRyeSBpbiBcdGJsIHRvIFxwYWRk ci4gT25seSBtYXBwaW5nIGluIDNyZAo+PiArICogbGV2ZWwgdGFibGUgKGkuZSBwYWdlIGdyYW51 bGFyaXR5KSBpcyBzdXBwb3J0ZWQuCj4+ICsgKgo+PiArICogdGJsOiAgICAgdGFibGUgc3ltYm9s IHdoZXJlIHRoZSBlbnRyeSB3aWxsIGJlIGNyZWF0ZWQKPj4gKyAqIHZpcnQ6ICAgIHZpcnR1YWwg YWRkcmVzcwo+PiArICogcGh5czogICAgcGh5c2ljYWwgYWRkcmVzcwo+PiArICogdHlwZTogICAg bWFwcGluZyB0eXBlLiBJZiBub3Qgc3BlY2lmaWVkIGl0IHdpbGwgYmUgbm9ybWFsIG1lbW9yeSAo UFRfTUVNX0wzKQo+PiArICogbW11OiAgICAgSXMgdGhlIE1NVSB0dXJuZWQgb24vb2ZmLiBJZiBu b3Qgc3BlY2lmaWVkIGl0IHdpbGwgYmUgb2ZmCj4+ICsgKgo+PiArICogUHJlc2VydmVzIFx2aXJ0 LCBccGh5cwo+PiArICogQ2xvYmJlcnMgcjEgLSByNAo+IAo+IFNhbWUgaGVyZQo+IAo+IAo+PiAr ICogKiBBbHNvIHVzZSByMTAgZm9yIHRoZSBwaHlzIG9mZnNldC4KPj4gKyAqCj4+ICsgKiBOb3Rl IHRoYXQgXHZpcnQgYW5kIFxwYWRkciBzaG91bGQgYmUgaW4gb3RoZXIgcmVnaXN0ZXJzIHRoYW4g cjEgLSByNAo+PiArICogYW5kIGJlIGRpc3RpbmN0Lgo+PiArICovCj4+ICsubWFjcm8gY3JlYXRl X21hcHBpbmdfZW50cnksIHRibCwgdmlydCwgcGh5cywgdHlwZT1QVF9NRU1fTDMsIG1tdT0wCj4+ ICsgICAgICAgIGxzciAgIHI0LCBccGh5cywgI1RISVJEX1NISUZUCj4+ICsgICAgICAgIGxzbCAg IHI0LCByNCwgI1RISVJEX1NISUZUICAgLyogcjQgOj0gUEFHRV9BTElHTkVEKHBoeXMpICovCj4g Cj4gYW5kIFRISVJEX01BU0sgbGlrZSBmb3IgYXJtNjQ/IERvZXNuJ3QgcmVhbGx5IG1hdHRlciBi dXQgaXQgd291bGQgYmUKPiBuaWNlciBpZiB3ZSBjb3VsZCBrZWVwIHRoZW0gc2ltaWxhci4KSSBh bSB3aXRoIHlvdSBvbiB0aGlzIHBvaW50LiBCdXQgc29tZXRpbWVzIGl0IGlzIG5vdCBwb3NzaWJs ZSAodGhleSBhcmUgdHdvIApkaXN0aW5jdCBpbnN0cnVjdGlvbnMgc2V0IHdpdGggc2ltaWxhcml0 aWVzKSBvciBtYWtlIHRoZSBjb2RlIGxlc3Mgb2J2aW91cyBmb3IgCnRoZSBhcmNoLgoKSW4gdGhp cyBjYXNlLCB0aGUgaW5zdHJ1Y3Rpb24gJ2FuZCcgaXMgdGFraW5nIGEgIm1vZGlmaWVkIGltbWVk aWF0ZSBjb25zdGFudCIuIApUaGUgaW1tZWRpYXRlIHdpbGwgYmUgZW5jb2RlZCBhcyBhbiA4LWJp dCBudW1iZXIgdGhhbiBjYW4gYmUgcm90YXRlLgoKVGhlIHZhbHVlIG9mIFRISVJEX01BU0sgaXMg MHhmZmZmZmZmZmZmZmZmMDAwLiBUaGVyZWZvcmUgaXQgY2FuJ3QgYmUgZW5jb2RlZCBhcyAKYW4g aW1tZWRpYXRlIGZvciB0aGUgaW5zdHJ1Y3Rpb24gJ2FuZCcuCgpPbmUgc29sdXRpb24gd291bGQg YmUgdG8gbG9hZCB0aGUgaW1tZWRpYXRlIGluIGEgcmVnaXN0ZXIsIGFuZCB0aGVuIHVzaW5nIHRo ZSAKaW5zdHJ1Y3Rpb24gJ2FuZCcuIEJ1dCBJIGZlbHQsIHRoZSBsc3IvbHNsIHNvbHV0aW9uIHdh cyBuaWNlci4KCj4gCj4gCj4+ICsgICAgICAgIG1vdl93IHIyLCBMUEFFX0VOVFJZX01BU0sKPj4g KyAgICAgICAgbHNyICAgcjEsIFx2aXJ0LCAjVEhJUkRfU0hJRlQKPj4gKyAgICAgICAgYW5kICAg cjEsIHIxLCByMiAgICAgICAgICAgICAvKiByMSA6PSBzbG90IGluIFx0bGIgKi8KPj4gKyAgICAg ICAgbHNsICAgcjEsIHIxLCAjMyAgICAgICAgICAgICAvKiByMSA6PSBzbG90IG9mZnNldCBpbiBc dGxiICovCj4gCj4gSSB3b3VsZCBwcmVmZXIgaWYgeW91IG1vdmVkIHRoZXNlIGZvciBsaW5lcyB1 cCwgbGlrZSB5b3UgaGF2ZSBkb3duIGluCj4gY3JlYXRlX3RhYmxlX2VudHJ5LCBpdCBpcyBjbGVh cmVyIHRvIHJlYWQgZm9yIG1lLiBKdXN0IGFuIG9wdGlvbmFsCj4gc3VnZ2VzdGlvbi4KClN1cmUu CgpDaGVlcnMsCgotLSAKSnVsaWVuIEdyYWxsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz dGluZm8veGVuLWRldmVs