From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v4 20/34] x86, xsplice: Print payload's symbol name and payload name in backtraces Date: Tue, 15 Mar 2016 13:56:42 -0400 Message-ID: <1458064616-23101-21-git-send-email-konrad.wilk@oracle.com> References: <1458064616-23101-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aftHY-000303-9z for xen-devel@lists.xenproject.org; Tue, 15 Mar 2016 18:01:24 +0000 In-Reply-To: <1458064616-23101-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, ross.lagerwall@citrix.com, konrad@kernel.org, andrew.cooper3@citrix.com, mpohlack@amazon.de, sasha.levin@oracle.com Cc: Keir Fraser , Tim Deegan , Ian Jackson , Jan Beulich , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org RnJvbTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+CgpOYXR1cmFs bHkgdGhlIGJhY2t0cmFjZSBpcyBwcmVzZW50ZWQgd2hlbiBhbiBpbnN0cnVjdGlvbgpoaXRzIGFu IGJ1Z19mcmFtZSBvciAlcCBpcyB1c2VkLgoKVGhlIHBheWxvYWRzIGRvIG5vdCBzdXBwb3J0IGJ1 Z19mcmFtZXMgeWV0IC0gaG93ZXZlciB0aGUgZnVuY3Rpb25zCnRoZSBwYXlsb2FkcyBjYWxsIGNv dWxkIGhpdCBhbiBCVUcoKSBvciBXQVJOKCkuClRoZSB0cmFwcy5jIGhhcyBsb2dpYyB0byBzY2Fu IGZvciBpdCB0aGlzIC0gYW5kIGV2ZW50dWFsbHkgaXQgd2lsbApmaW5kIHRoZSBjb3JyZWN0IGJ1 Z19mcmFtZSBhbmQgdGhlIHdhbGsgdGhlIHN0YWNrIHVzaW5nICVwIHRvIHByaW50CnRoZSBiYWNr dHJhY2UuIEZvciAlcCBhbmQgc3ltYm9scyB0byBwcmludCBhIHN0cmluZyAtICB0aGUKJ2lzX2Fj dGl2ZV9rZXJuZWxfdGV4dCcgaXMgY29uc3VsdGVkIHdoaWNoIHVzZXMgYW4gJ3N0cnVjdCB2aXJ0 dWFsX3JlZ2lvbicuCgpUaGVyZWZvcmUgd2UgcmVnaXN0ZXIgb3VyIHN0YXJ0LT5lbmQgYWRkcmVz c2VzIHNvIHRoYXQKJ2lzX2FjdGl2ZV9rZXJuZWxfdGV4dCcgd2lsbCBpbmNsdWRlIG91ciBwYXls b2FkIGFkZHJlc3MuCgpXZSBhbHNvIHJlZ2lzdGVyIG91ciBzeW1ib2wgbG9va3VwIHRhYmxlIGZ1 bmN0aW9uIHNvIHRoYXQgaXQgY2FuCnNjYW4gdGhlIGxpc3Qgb2YgcGF5bG9hZHMgYW5kIHJldHJp ZXZlIHRoZSBjb3JyZWN0IG5hbWUuCgpMYXN0bHkgd2UgY2hhbmdlIHZzcHJpbnRmIHRvIHRha2Ug aW50byBhY2NvdW50IHMgYW5kIG5hbWVidWYuCkZvciBjb3JlIGNvZGUgdGhleSBhcmUgdGhlIHNh bWUsIGJ1dCBmb3IgcGF5bG9hZHMgdGhleSBhcmUgZGlmZmVyZW50LgpUaGlzIGdldHMgdXM6CgpY ZW4gY2FsbCB0cmFjZToKICAgWzxmZmZmODJkMDgwYTAwMDQxPl0gcmV2ZXJ0X2hvb2srMHgzMS8w eDM1IFt4ZW5faGVsbG9fd29ybGRdCiAgIFs8ZmZmZjgyZDA4MDE0MzFiZD5dIHhzcGxpY2UuYyNy ZXZlcnRfcGF5bG9hZCsweDg2LzB4YzYKICAgWzxmZmZmODJkMDgwMTQzNTAyPl0gY2hlY2tfZm9y X3hzcGxpY2Vfd29yaysweDIzMy8weDNjZAogICBbPGZmZmY4MmQwODAxN2EwYjI+XSBkb21haW4u YyNjb250aW51ZV9pZGxlX2RvbWFpbisweDkvMHgxZgoKV2hpY2ggaXMgZ3JlYXQgaWYgcGF5bG9h ZHMgaGF2ZSBzaW1pbGFyIG9yIHNhbWUgc3ltYm9sIG5hbWVzLgoKU2lnbmVkLW9mZi1ieTogUm9z cyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+ClNpZ25lZC1vZmYtYnk6IEtv bnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KCi0tLQpDYzogSWFu IEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNjOiBKYW4gQmV1bGljaCA8amJl dWxpY2hAc3VzZS5jb20+CkNjOiBLZWlyIEZyYXNlciA8a2VpckB4ZW4ub3JnPgpDYzogVGltIERl ZWdhbiA8dGltQHhlbi5vcmc+Cgp2MjogQWRkIG1pc3NpbmcgZnVsbCBzdG9wLgp2Mzogcy9tb2R1 bGUvcGF5bG9hZC8KdjQ6IEV4cGFuZCBjb21tZW50IGFuZCBpbmNsdWRlIHJlZ2lzdHJhdGlvbiBv ZiAndmlydHVhbF9yZWdpb24nCnY1OiBSZWRvIHRoZSB2c3ByaW50ZiBoYW5kbGluZyBvZiBwYXls b2FkIG5hbWUuCi0tLQogeGVuL2NvbW1vbi92c3ByaW50Zi5jIHwgMTUgKysrKysrKysrLS0tCiB4 ZW4vY29tbW9uL3hzcGxpY2UuYyAgfCA2NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwg NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3ZzcHJpbnRmLmMgYi94ZW4v Y29tbW9uL3ZzcHJpbnRmLmMKaW5kZXggMThkMjYzNC4uZjBiNzQzZiAxMDA2NDQKLS0tIGEveGVu L2NvbW1vbi92c3ByaW50Zi5jCisrKyBiL3hlbi9jb21tb24vdnNwcmludGYuYwpAQCAtMjAsNiAr MjAsNyBAQAogI2luY2x1ZGUgPHhlbi9zeW1ib2xzLmg+CiAjaW5jbHVkZSA8eGVuL2xpYi5oPgog I2luY2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CiAjaW5jbHVk ZSA8YXNtL2RpdjY0Lmg+CiAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KIApAQCAtMzMxLDE2ICszMzIs MTcgQEAgc3RhdGljIGNoYXIgKnBvaW50ZXIoY2hhciAqc3RyLCBjaGFyICplbmQsIGNvbnN0IGNo YXIgKipmbXRfcHRyLAogICAgIHsKICAgICAgICAgdW5zaWduZWQgbG9uZyBzeW1fc2l6ZSwgc3lt X29mZnNldDsKICAgICAgICAgY2hhciBuYW1lYnVmW0tTWU1fTkFNRV9MRU4rMV07CisgICAgICAg IGJvb2xfdCBwYXlsb2FkID0gMDsKIAogICAgICAgICAvKiBBZHZhbmNlIHBhcmVudHMgZm10IHN0 cmluZywgYXMgd2UgaGF2ZSBjb25zdW1lZCAncycgb3IgJ1MnICovCiAgICAgICAgICsrKmZtdF9w dHI7CiAKICAgICAgICAgcyA9IHN5bWJvbHNfbG9va3VwKCh1bnNpZ25lZCBsb25nKWFyZywgJnN5 bV9zaXplLCAmc3ltX29mZnNldCwgbmFtZWJ1Zik7Ci0KLSAgICAgICAgLyogSWYgdGhlIHN5bWJv bCBpcyBub3QgZm91bmQsIGZhbGwgYmFjayB0byBwcmludGluZyB0aGUgYWRkcmVzcyAqLworICAg ICAgICAvKiBJZiB0aGUgc3ltYm9sIGlzIG5vdCBmb3VuZCwgZmFsbCBiYWNrIHRvIHByaW50aW5n IHRoZSBhZGRyZXNzLiAqLwogICAgICAgICBpZiAoICFzICkKICAgICAgICAgICAgIGJyZWFrOwot CisgICAgICAgIGlmICggc3RybmNtcChuYW1lYnVmLCBzLCBLU1lNX05BTUVfTEVOKSApCisgICAg ICAgICAgICBwYXlsb2FkID0gMTsKICAgICAgICAgLyogUHJpbnQgc3ltYm9sIG5hbWUgKi8KICAg ICAgICAgc3RyID0gc3RyaW5nKHN0ciwgZW5kLCBzLCAtMSwgLTEsIDApOwogCkBAIC0zNTQsNiAr MzU2LDEzIEBAIHN0YXRpYyBjaGFyICpwb2ludGVyKGNoYXIgKnN0ciwgY2hhciAqZW5kLCBjb25z dCBjaGFyICoqZm10X3B0ciwKICAgICAgICAgICAgIHN0ciA9IG51bWJlcihzdHIsIGVuZCwgc3lt X3NpemUsIDE2LCAtMSwgLTEsIFNQRUNJQUwpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKCBw YXlsb2FkICkKKyAgICAgICAgeworICAgICAgICAgICAgc3RyID0gc3RyaW5nKHN0ciwgZW5kLCAi IFsiLCAtMSwgLTEsIDApOworICAgICAgICAgICAgc3RyID0gc3RyaW5nKHN0ciwgZW5kLCBuYW1l YnVmLCAtMSwgLTEsIDApOworICAgICAgICAgICAgc3RyID0gc3RyaW5nKHN0ciwgZW5kLCAiXSIs IC0xLCAtMSwgMCk7CisgICAgICAgIH0KKwogICAgICAgICByZXR1cm4gc3RyOwogICAgIH0KIApk aWZmIC0tZ2l0IGEveGVuL2NvbW1vbi94c3BsaWNlLmMgYi94ZW4vY29tbW9uL3hzcGxpY2UuYwpp bmRleCA1NDEyMGJiLi5hMzM2NmVmIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3hzcGxpY2UuYwor KysgYi94ZW4vY29tbW9uL3hzcGxpY2UuYwpAQCAtMyw2ICszLDcgQEAKICAqCiAgKi8KIAorI2lu Y2x1ZGUgPHhlbi9idWdfZXhfc3ltYm9scy5oPgogI2luY2x1ZGUgPHhlbi9jcHUuaD4KICNpbmNs dWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CiAjaW5jbHVkZSA8eGVuL2tleWhhbmRsZXIuaD4KQEAg LTEzLDYgKzE0LDcgQEAKICNpbmNsdWRlIDx4ZW4vc21wLmg+CiAjaW5jbHVkZSA8eGVuL3NvZnRp cnEuaD4KICNpbmNsdWRlIDx4ZW4vc3BpbmxvY2suaD4KKyNpbmNsdWRlIDx4ZW4vc3RyaW5nLmg+ CiAjaW5jbHVkZSA8eGVuL3N5bWJvbHMuaD4KICNpbmNsdWRlIDx4ZW4vdm1hcC5oPgogI2luY2x1 ZGUgPHhlbi93YWl0Lmg+CkBAIC01MCw2ICs1Miw3IEBAIHN0cnVjdCBwYXlsb2FkIHsKICAgICBz dHJ1Y3QgbGlzdF9oZWFkIGFwcGxpZWRfbGlzdDsgICAgICAgLyogTGlua2VkIHRvICdhcHBsaWVk X2xpc3QnLiAqLwogICAgIHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgKmZ1bmNzOyAgICAvKiBU aGUgYXJyYXkgb2YgZnVuY3Rpb25zIHRvIHBhdGNoLiAqLwogICAgIHVuc2lnbmVkIGludCBuZnVu Y3M7ICAgICAgICAgICAgICAgICAvKiBOciBvZiBmdW5jdGlvbnMgdG8gcGF0Y2guICovCisgICAg c3RydWN0IHZpcnR1YWxfcmVnaW9uIGJ1Z19leF9yZWdpb247IC8qLmJ1Zy5mcmFtZSBwYXRjaGlu ZyBhbmQgZXhjZXB0aW9uIHRhYmxlLiAqLwogICAgIHN0cnVjdCB4c3BsaWNlX3N5bWJvbCAqc3lt dGFiOyAgICAgICAvKiBBbGwgc3ltYm9scy4gKi8KICAgICBjaGFyICpzdHJ0YWI7ICAgICAgICAg ICAgICAgICAgICAgICAgLyogUG9pbnRlciB0byAuc3RydGFiLiAqLwogICAgIHVuc2lnbmVkIGlu dCBuc3ltczsgICAgICAgICAgICAgICAgICAvKiBOciBvZiBlbnRyaWVzIGluIC5zdHJ0YWIgYW5k IHN5bWJvbHMuICovCkBAIC0xMDMsNiArMTA2LDEyIEBAIHN0YXRpYyBpbnQgdmVyaWZ5X3BheWxv YWQoY29uc3QgeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90ICp1cGxvYWQpCiAgICAgcmV0dXJu IDA7CiB9CiAKK3N0YXRpYyBib29sX3QgaWdub3JlX3JlZ2lvbih1bnNpZ25lZCBpbnQgZmxhZywg dW5zaWduZWQgbG9uZyBwcml2KQoreworICAgIC8qIFNlZSBDSEVDS0lOR19bU1lNQk9MfEJVR19G UkFNRXxFWENFUFRJT05dLiAqLworICAgIHJldHVybiAhKGZsYWcgJiBwcml2KTsKK30KKwogdWlu dDY0X3QgeHNwbGljZV9zeW1ib2xzX2xvb2t1cF9ieV9uYW1lKGNvbnN0IGNoYXIgKnN5bW5hbWUp CiB7CiAgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CkBAIC0xMzEsNiArMTQwLDUxIEBAIG91dDoK ICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyICp4c3BsaWNlX3N5bWJv bHNfbG9va3VwKHVuc2lnbmVkIGxvbmcgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnN5bWJvbHNpemUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpvZmZzZXQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpuYW1lYnVmKQorewor ICAgIHN0cnVjdCBwYXlsb2FkICpkYXRhOworICAgIHVuc2lnbmVkIGludCBpOworICAgIGludCBi ZXN0OworCisgICAgLyoKKyAgICAgKiBObyBsb2NraW5nIHNpbmNlIHRoaXMgbGlzdCBpcyBvbmx5 IGV2ZXIgY2hhbmdlZCBkdXJpbmcgYXBwbHkgb3IgcmV2ZXJ0CisgICAgICogY29udGV4dC4KKyAg ICAgKi8KKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggZGF0YSwgJmFwcGxpZWRfbGlzdCwgYXBw bGllZF9saXN0ICkKKyAgICB7CisgICAgICAgIGlmICggISgodm9pZCAqKWFkZHIgPj0gZGF0YS0+ cGF5bG9hZF9hZGRyZXNzICYmCisgICAgICAgICAgICAgICAodm9pZCAqKWFkZHIgPCAoZGF0YS0+ cGF5bG9hZF9hZGRyZXNzICsgZGF0YS0+Y29yZV90ZXh0X3NpemUpKSApCisgICAgICAgICAgICBj b250aW51ZTsKKworICAgICAgICBiZXN0ID0gLTE7CisKKyAgICAgICAgZm9yICggaSA9IDA7IGkg PCBkYXRhLT5uc3ltczsgaSsrICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCBkYXRhLT5z eW10YWJbaV0udmFsdWUgPD0gYWRkciAmJgorICAgICAgICAgICAgICAgICAoIGJlc3QgPT0gLTEg fHwKKyAgICAgICAgICAgICAgICAgICBkYXRhLT5zeW10YWJbYmVzdF0udmFsdWUgPCBkYXRhLT5z eW10YWJbaV0udmFsdWUpICkKKyAgICAgICAgICAgICAgICBiZXN0ID0gaTsKKyAgICAgICAgfQor CisgICAgICAgIGlmICggYmVzdCA9PSAtMSApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKwor ICAgICAgICBpZiAoIHN5bWJvbHNpemUgKQorICAgICAgICAgICAgKnN5bWJvbHNpemUgPSBkYXRh LT5zeW10YWJbYmVzdF0uc2l6ZTsKKyAgICAgICAgaWYgKCBvZmZzZXQgKQorICAgICAgICAgICAg Km9mZnNldCA9IGFkZHIgLSBkYXRhLT5zeW10YWJbYmVzdF0udmFsdWU7CisgICAgICAgIGlmICgg bmFtZWJ1ZiApCisgICAgICAgICAgICBzdHJsY3B5KG5hbWVidWYsIGRhdGEtPm5hbWUsIEtTWU1f TkFNRV9MRU4pOworCisgICAgICAgIHJldHVybiBkYXRhLT5zeW10YWJbYmVzdF0ubmFtZTsKKyAg ICB9CisKKyAgICByZXR1cm4gTlVMTDsKK30KKwogc3RhdGljIGludCBmaW5kX3BheWxvYWQoY29u c3QgeGVuX3hzcGxpY2VfbmFtZV90ICpuYW1lLCBzdHJ1Y3QgcGF5bG9hZCAqKmYpCiB7CiAgICAg c3RydWN0IHBheWxvYWQgKmRhdGE7CkBAIC0zMjUsNiArMzc5LDcgQEAgc3RhdGljIGludCBwcmVw YXJlX3BheWxvYWQoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsCiAgICAgc3RydWN0IHhzcGxpY2Vf ZWxmX3NlYyAqc2VjOwogICAgIHVuc2lnbmVkIGludCBpOwogICAgIHN0cnVjdCB4c3BsaWNlX3Bh dGNoX2Z1bmMgKmY7CisgICAgc3RydWN0IHZpcnR1YWxfcmVnaW9uICpyZWdpb247CiAKICAgICBz ZWMgPSB4c3BsaWNlX2VsZl9zZWNfYnlfbmFtZShlbGYsICIueHNwbGljZS5mdW5jcyIpOwogICAg IGlmICggc2VjICkKQEAgLTM3Nyw2ICs0MzIsMTUgQEAgc3RhdGljIGludCBwcmVwYXJlX3BheWxv YWQoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsCiAgICAgICAgICAgICAgICAgICAgWFNQTElDRSwg ZWxmLT5uYW1lLCBmLT5uYW1lLCBmLT5vbGRfYWRkcik7CiAgICAgICAgIH0KICAgICB9CisKKyAg ICAvKiBTZXR1cCB0aGUgdmlydHVhbCByZWdpb24gd2l0aCBwcm9wZXIgZGF0YS4gKi8KKyAgICBy ZWdpb24gPSAmcGF5bG9hZC0+YnVnX2V4X3JlZ2lvbjsKKyAgICByZWdpb24tPnNraXAgPSBpZ25v cmVfcmVnaW9uOworICAgIHJlZ2lvbi0+c3ltYm9sc19sb29rdXAgPSB4c3BsaWNlX3N5bWJvbHNf bG9va3VwOworICAgIHJlZ2lvbi0+cHJpdiA9IENIRUNLSU5HX1NZTUJPTDsKKyAgICByZWdpb24t PnN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpcGF5bG9hZC0+cGF5bG9hZF9hZGRyZXNzOworICAgIHJl Z2lvbi0+ZW5kID0gKHVuc2lnbmVkIGxvbmcpKHBheWxvYWQtPnBheWxvYWRfYWRkcmVzcyArIHBh eWxvYWQtPmNvcmVfdGV4dF9zaXplKTsKKwogICAgIHJldHVybiAwOwogfQogCkBAIC00NzksNyAr NTQzLDYgQEAgc3RhdGljIGludCBidWlsZF9zeW1ib2xfdGFibGUoc3RydWN0IHBheWxvYWQgKnBh eWxvYWQsCiAgICAgcGF5bG9hZC0+c3ltdGFiID0gc3ltdGFiOwogICAgIHBheWxvYWQtPnN0cnRh YiA9IHN0cnRhYjsKICAgICBwYXlsb2FkLT5uc3ltcyA9IG5zeW1zOwotCiAgICAgcmV0dXJuIDA7 CiB9CiAKQEAgLTcwNyw2ICs3NzAsNyBAQCBzdGF0aWMgaW50IGFwcGx5X3BheWxvYWQoc3RydWN0 IHBheWxvYWQgKmRhdGEpCiAgICAgYXJjaF94c3BsaWNlX3BhdGNoaW5nX2xlYXZlKCk7CiAKICAg ICBsaXN0X2FkZF90YWlsKCZkYXRhLT5hcHBsaWVkX2xpc3QsICZhcHBsaWVkX2xpc3QpOworICAg IHJlZ2lzdGVyX3ZpcnR1YWxfcmVnaW9uKCZkYXRhLT5idWdfZXhfcmVnaW9uKTsKIAogICAgIHJl dHVybiAwOwogfQpAQCAtNzI5LDYgKzc5Myw3IEBAIHN0YXRpYyBpbnQgcmV2ZXJ0X3BheWxvYWQo c3RydWN0IHBheWxvYWQgKmRhdGEpCiAgICAgYXJjaF94c3BsaWNlX3BhdGNoaW5nX2xlYXZlKCk7 CiAKICAgICBsaXN0X2RlbF9pbml0KCZkYXRhLT5hcHBsaWVkX2xpc3QpOworICAgIHVucmVnaXN0 ZXJfdmlydHVhbF9yZWdpb24oJmRhdGEtPmJ1Z19leF9yZWdpb24pOwogCiAgICAgcmV0dXJuIDA7 CiB9Ci0tIAoyLjUuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0 cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==