From mboxrd@z Thu Jan 1 00:00:00 1970 From: He Chen Subject: [RFC Design Doc] Intel L2 Cache Allocation Technology (L2 CAT) Feature enabling Date: Thu, 12 May 2016 17:31:40 +0800 Message-ID: <20160512093139.GA550@HE> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b0n0Z-0003ZC-T3 for xen-devel@lists.xenproject.org; Thu, 12 May 2016 09:34:15 +0000 Content-Disposition: inline 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 Cc: wei.liu2@citrix.com, ian.campbell@citrix.com, stefano.stabellini@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, jbeulich@suse.com, chao.p.peng@linux.intel.com, keir@xen.org List-Id: xen-devel@lists.xenproject.org JSBJbnRlbCBMMiBDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgKEwyIENBVCkgRmVhdHVyZQol IFJldmlzaW9uIDEuMAoKXGNsZWFycGFnZQoKSGkgYWxsLAoKV2UgcGxhbiB0byBicmluZyBuZXcg UFFvUyBmZWF0dXJlIGNhbGxlZCBJbnRlbCBMMiBDYWNoZSBBbGxvY2F0aW9uClRlY2hub2xvZ3kg KEwyIENBVCkgdG8gWGVuLgoKTDIgQ0FUIGlzIHN1cHBvcnRlZCBvbiBBdG9tIGNvZGVuYW1lIEdv bGRtb250IGFuZCBiZXlvbmQuIOKAnEJpZy1jb3Jl4oCdClhlb24gZG9lcyBub3Qgc3VwcG9ydCBM MiBDQVQgaW4gY3VycmVudCBnZW5lcmF0aW9ucy4KClRoaXMgaXMgdGhlIGluaXRpYWwgZGVzaWdu IG9mIEwyIENBVC4gSXQgbWlnaHQgYmUgYSBsaXR0bGUgbG9uZyBhbmQKZGV0YWlsZWQsIGhvcGUg aXQgZG9lc24ndCBtYXR0ZXIuCgpDb21tZW50cyBhbmQgc3VnZ2VzdGlvbnMgYXJlIHdlbGNvbWUg Oi0pCgojIEJhc2ljcwoKLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIFN0YXR1czogKipUZWNoIFByZXZp ZXcqKgoKQXJjaGl0ZWN0dXJlKHMpOiBJbnRlbCB4ODYKCiAgIENvbXBvbmVudChzKTogSHlwZXJ2 aXNvciwgdG9vbHN0YWNrCgogICAgICAgSGFyZHdhcmU6IEF0b20gY29kZW5hbWUgR29sZG1vbnQg YW5kIGJleW9uZAotLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgT3ZlcnZpZXcKCkwyIENBVCBhbGxvd3MgYW4gT1Mg b3IgSHlwZXJ2aXNvci9WTU0gdG8gY29udHJvbCBhbGxvY2F0aW9uIG9mIGEKQ1BVJ3Mgc2hhcmVk IEwyIGNhY2hlIGJhc2VkIG9uIGFwcGxpY2F0aW9uIHByaW9yaXR5IG9yIENsYXNzIG9mIFNlcnZp Y2UKKENPUykuIEVhY2ggQ0xPUyBpcyBjb25maWd1cmVkIHVzaW5nIGNhcGFjaXR5IGJpdG1hc2tz IChDQk0pIHdoaWNoCnJlcHJlc2VudCBjYWNoZSBjYXBhY2l0eSBhbmQgaW5kaWNhdGUgdGhlIGRl Z3JlZSBvZiBvdmVybGFwIGFuZAppc29sYXRpb24gYmV0d2VlbiBjbGFzc2VzLiBPbmNlIEwyIENB VCBpcyBjb25maWd1cmVkLCB0aGUgcHJvY2Vzc29yCmFsbG93cyBhY2Nlc3MgdG8gcG9ydGlvbnMg b2YgTDIgY2FjaGUgYWNjb3JkaW5nIHRvIHRoZSBlc3RhYmxpc2hlZApjbGFzcyBvZiBzZXJ2aWNl IChDT1MpLgoKIyBUZWNobmljYWwgaW5mb3JtYXRpb24KCkwyIENBVCBpcyBhIG1lbWJlciBvZiBJ bnRlbCBQUW9TIGZlYXR1cmVzIGFuZCBwYXJ0IG9mIENBVCwgaXQgc2hhcmVzCnNvbWUgYmFzZSBQ U1IgaW5mcmFzdHJ1Y3R1cmUgaW4gWGVuLgoKIyMgSGFyZHdhcmUgcGVyc3BlY3RpdmUKCkwyIENB VCBkZWZpbmVzIGEgbmV3IHJhbmdlIE1TUnMgdG8gYXNzaWduIGRpZmZlcmVudCBMMiBjYWNoZSBh Y2Nlc3MKcGF0dGVybnMgd2hpY2ggYXJlIGtub3duIGFzIENCTXMgKENhcGFjaXR5IEJpdE1hc2sp LCBlYWNoIENCTSBpcwphc3NvY2lhdGVkIHdpdGggYSBDT1MuCgpgYGAKCiAgICAgICAgICAgICAg ICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CiAgIElBMzJfUFFSX0FTU09DICAgICAgIHwgTVNSIChwZXIgc29ja2V0KSAgICAgICAgICAgfCAg ICBBZGRyZXNzICAgICB8CiArLS0tLSstLS0rLS0tLS0tLSsgICAgICstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCiB8ICAgIHxDT1N8ICAgICAgIHwgICAgIHwg SUEzMl9MMl9RT1NfTUFTS18wICAgICAgICAgfCAgICAgMHhEMTAgICAgICB8CiArLS0tLSstLS0r LS0tLS0tLSsgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCiAgICAgICAg4pSULS0tLS0tLS0tLS0tLT4gfCAuLi4gICAgICAgICAgICAgICAgICAgICAg ICB8ICAuLi4gICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgICAg ICAgfCBJQTMyX0wyX1FPU19NQVNLX24gICAgICAgICB8IDB4RDEwK24gKG48NjQpIHwKICAgICAg ICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKYGBgCgpXaGVuIGNvbnRleHQgc3dpdGNoIGhhcHBlbnMsIHRoZSBDT1Mgb2YgVkNQ VSBpcyB3cml0dGVuIHRvIHBlci10aHJlYWQKTVNSIGBJQTMyX1BRUl9BU1NPQ2AsIGFuZCB0aGVu IGhhcmR3YXJlIGVuZm9yY2VzIEwyIGNhY2hlIGFsbG9jYXRpb24KYWNjb3JkaW5nIHRvIHRoZSBj b3JyZXNwb25kaW5nIENCTS4KCiMjIFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBMMiBDQVQgYW5k IEwzIENBVC9DRFAKCkwyIENBVCBpcyBpbmRlcGVuZGVudCBvZiBMMyBDQVQvQ0RQLCB3aGljaCBt ZWFucyBMMiBDQVQgd291bGQgYmUgZW5hYmxlZAp3aGlsZSBMMyBDQVQvQ0RQIGlzIGRpc2FibGVk LCBvciBMMiBDQVQgYW5kIEwzIENBVC9DRFAgYXJlIGFsbCBlbmFibGVkLgoKTDIgQ0FUIHVzZXMg YSBuZXcgcmFuZ2UgQ0JNcyBmcm9tIDB4RDEwIH4gMHhEMTArbiAobjw2NCksIGZvbGxvd2luZyBi eQp0aGUgTDMgQ0FUL0NEUCBDQk1zLCBhbmQgc3VwcG9ydHMgc2V0dGluZyBkaWZmZXJlbnQgTDIg Y2FjaGUgYWNjZXNzaW5nCnBhdHRlcm5zIGZyb20gTDMgY2FjaGUuCgpOLkIuIEwyIENBVCBhbmQg TDMgQ0FUL0NEUCBzaGFyZSB0aGUgc2FtZSBDT1MgZmllbGQgaW4gdGhlIHNhbWUKYXNzb2NpYXRl IHJlZ2lzdGVyIGBJQTMyX1BRUl9BU1NPQ2AsIHRoYXQgbWVhbnMgb25lIENPUyBjb3JyZXNwb25k cyB0byBhCnBhaXIgb2YgTDIgQ0JNIGFuZCBMMyBDQk0uCgpJbiB0aGUgaW5pdGlhbCBpbXBsZW1l bnRhdGlvbiwgTDIgQ0FUIGlzIHNob3duIHVwIG9uIEF0b20gY29kZW5hbWUKR29sZG1vbnQgZmly c3RseSBhbmQgdGhlcmUgaXMgbm8gcGxhdGZvcm0gc3VwcG9ydCBib3RoIEwyICYgTDMgQ0FUIHNv CmZhci4KCiMjIERlc2lnbiBPdmVydmlldwoKKiBDb3JlIENPUy9DQk0gYXNzb2NpYXRpb24KCiAg V2hlbiBlbmZvcmNpbmcgTDIgQ0FULCBhbGwgY29yZXMgb2YgZG9tYWlucyBoYXZlIHRoZSBzYW1l IGRlZmF1bHQKICBDT1MgKENPUzApIHdoaWNoIGFzc29jaWF0ZWQgdG8gdGhlIGZ1bGx5IG9wZW4g Q0JNIChhbGwgb25lcyBiaXRtYXNrKQogIHRvIGFjY2VzcyBhbGwgTDIgY2FjaGUuIFRoZSBkZWZh dWx0IENPUyBpcyB1c2VkIG9ubHkgaW4gaHlwZXJ2aXNvcgogIGFuZCBpcyB0cmFuc3BhcmVudCB0 byB0b29sIHN0YWNrIGFuZCB1c2VyLgoKICBTeXN0ZW0gYWRtaW5pc3RyYXRvciBjYW4gY2hhbmdl IFBRb1MgYWxsb2NhdGlvbiBwb2xpY3kgYXQgcnVudGltZSBieQogIHRvb2wgc3RhY2suIFNpbmNl IEwyIENBVCBzaGFyZSBDT1Mgd2l0aCBMMyBDQVQvQ0RQLCBhIENPUyBjb3JyZXNwb25kcwogIHRv IGEgMi10dXBsZSwgbGlrZSBbTDIgQ0JNLCBMMyBDQk1dIHdpdGggb25seS1DQVQgZW5hYmxlZCwg d2hlbiBDRFAKICBpcyBlbmFibGVkLCBvbmUgQ09TIGNvcnJlc3BvbmRzIHRvIGEgMy10dXBsZSwg bGlrZSBbTDIgQ0JNLAogIEwzIENvZGVfQ0JNLCBMMyBEYXRhX0NCTV0uIElmIG5laXRoZXIgTDMg Q0FUIG5vciBMMyBDRFAgaXMgZW5hYmxlZCwKICB0aGluZ3Mgd291bGQgYmUgZWFzaWVyLCBvbmUg Q09TIGNvcnJlc3BvbmRzIHRvIG9uZSBMMiBDQk0uCgoqIFZDUFUgc2NoZWR1bGUKCiAgVGhpcyBw YXJ0IHJldXNlcyBMMyBDQVQgQ09TIGluZnJhc3RydWN0dXJlLgoKKiBNdWx0aS1zb2NrZXRzCgog IERpZmZlcmVudCBzb2NrZXRzIG1heSBoYXZlIGRpZmZlcmVudCBMMiBDQVQgY2FwYWJpbGl0eSAo ZS5nLiBtYXggQ09TKQogIGFsdGhvdWdoIGl0IGlzIGNvbnNpc3RlbnQgb24gdGhlIHNhbWUgc29j a2V0LiBTbyB0aGUgY2FwYWJpbGl0eSBvZgogIHBlci1zb2NrZXQgTDIgQ0FUIGlzIHNwZWNpZmll ZC4KCiMjIEltcGxlbWVudGF0aW9uIERlc2NyaXB0aW9uCgoqIEh5cGVydmlzb3IgaW50ZXJmYWNl czoKCiAgMS4gRXh0OiBCb290IGxpbmUgcGFyYW1ldGVyICJwc3I9Y2F0IiBub3cgd2lsbCBlbmFi bGUgTDIgQ0FUIGFuZCBMMwogICAgICAgICAgQ0FUIGlmIGhhcmR3YXJlIHN1cHBvcnRlZC4KCiAg Mi4gTmV3OiBTWVNDVEw6CiAgICAgICAgICAtIFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDJfaW5m bzogR2V0IEwyIENBVCBpbmZvcm1hdGlvbi4KCiAgMy4gTmV3OiBET01DVEw6CiAgICAgICAgICAt IFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDJfQ0JNOiBHZXQgTDIgQ0JNIGZvciBhIGRvbWFp bi4KICAgICAgICAgIC0gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MMl9DQk06IFNldCBMMiBD Qk0gZm9yIGEgZG9tYWluLgoKKiB4bCBpbnRlcmZhY2VzOgoKICAxLiBFeHQ6IHBzci1jYXQtc2hv dzogU2hvdyBzeXN0ZW0vZG9tYWluIEwyIENBVCBpbmZvcm1hdGlvbi4KICAgICAgICAgID0+IFhF Tl9TWVNDVExfUFNSX0NBVF9nZXRfbDJfaW5mbyAvCiAgICAgICAgICAgICBYRU5fRE9NQ1RMX1BT Ul9DQVRfT1BfR0VUX0wyX0NCTQoKICAyLiBFeHQ6IHBzci1tYmEtc2V0IC1sMiBkb21haW4taWQg Y2JtCiAgICAgICAgICBTZXQgTDIgY2JtIGZvciBhIGRvbWFpbi4KICAgICAgICAgID0+IFhFTl9E T01DVExfUFNSX0NBVF9PUF9TRVRfTDJfQ0JNCgoqIEtleSBkYXRhIHN0cnVjdHVyZToKCiAgMS4g Q29tYmluZWQgUFNSIGJpdG1hc2tzIHN0cnVjdHVyZQoKICAgICBgYGAKICAgICBzdHJ1Y3QgcHNy X21hc2sgewogICAgICAgICBzdHJ1Y3QgbDNfY2F0IHsKICAgICAgICAgICAgIHVuaW9uIHsKICAg ICAgICAgICAgICAgICB1aW50NjRfdCBjYm07CiAgICAgICAgICAgICAgICAgc3RydWN0IHsKICAg ICAgICAgICAgICAgICAgICAgdWludDY0X3QgY29kZTsKICAgICAgICAgICAgICAgICAgICAgdWlu dDY0X3QgZGF0YTsKICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgfTsKICAgICAgICAg fTsKICAgICAgICAgc3RydWN0IGwyX2NhdCB7CiAgICAgICAgICAgICB1aW50NjRfdCBjYm07CiAg ICAgICAgIH07CiAgICAgICAgIHVuc2lnbmVkIGludCByZWY7CiAgICAgfTsKICAgICBgYGAKCiAg ICAgQXMgbWVudGlvbmVkIGFib3ZlLCB3aGVuIG1vcmUgdGhhbiBvbmUgUFFvUyBlbmZvcmNlbWVu dCBmZWF0dXJlcwogICAgIGFyZSBlbmFibGVkLCBvbmUgQ09TIHdvdWxkIGNvcnJlc3BvbmQgc2V2 ZXJhbCBjYXBhY2l0eSBiaXRtYXNrcy4gU28KICAgICB3ZSBjb21iaW5lIHRoZXNlIGJpdG1hc2tz IHRvIG9uZSBzdHJ1Y3R1cmUsIHdoZW4gd2Ugc2V0dGluZyBhIG5ldwogICAgIHBsYXRmb3JtIHNo YXJlZCByZXNvdXJjZSBhbGxvY2F0aW9uIHBhdHRlcm4gZm9yIGEgZ3Vlc3QsIGl0IGlzIGVhc3kK ICAgICB0byBjb21wYXJlLCBtb2RpZnkgb3Igd3JpdGUgdGhlIG1hc2tzIGJ5IHRoaXMgY29tYmlu ZWQgc3RydWN0dXJlLgoKICAgMi4gUGVyLXNvY2tldCBQU1IgYWxsb2NhdGlvbiBmZWF0dXJlcyBp bmZvcm1hdGlvbiBzdHJ1Y3R1cmUKCiAgICAgIGBgYAogICAgICBzdHJ1Y3QgcHNyX2NhdF9sdmxf aW5mbyB7CiAgICAgICAgICB1bnNpZ25lZCBpbnQgY2JtX2xlbjsKICAgICAgICAgIHVuc2lnbmVk IGludCBjb3NfbWF4OwogICAgICB9OwoKICAgICAgI2RlZmluZSBQU1JfU09DS0VUX0wzX0NBVCAx PDwwCiAgICAgICNkZWZpbmUgUFNSX1NPQ0tFVF9MM19DRFAgMTw8MQogICAgICAjZGVmaW5lIFBT Ul9TT0NLRVRfTDJfQ0FUIDE8PDIKCiAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2FsbG9jX2luZm8g ewogICAgICAgICAgdW5zaWduZWQgbG9uZyBmZWF0dXJlczsKICAgICAgICAgIHN0cnVjdCBwc3Jf Y2F0X2x2bF9pbmZvIGNhdF9sdmxbNF07CiAgICAgICAgICBzdHJ1Y3QgcHNyX21hc2sgKmNvc190 b19tYXNrOwogICAgICAgICAgc3BpbmxvY2tfdCBtYXNrX2xvY2s7CiAgICAgIH07CiAgICAgIGBg YAoKICAgICAgV2UgY29sbGVjdCBhbGwgUFNSIGFsbG9jYXRpb24gZmVhdHVyZXMgaW5mb3JtYXRp b24gb2YgYSBzb2NrZXQgaW4KICAgICAgdGhpcyBgc3RydWN0IHBzcl9zb2NrZXRfYWxsb2NfaW5m b2AuCgogICAgICAtIE1lbWJlciBgZmVhdHVyZXNgCgogICAgICAgIGBmZWF0dXJlc2AgaXMgYSBi aXRtYXAsIHRvIGluZGljYXRlIHdoaWNoIGZlYXR1cmUgaXMgZW5hYmxlZCBvbgogICAgICAgIGN1 cnJlbnQgc29ja2V0LiBXZSBkZWZpbmUgYGZlYXR1cmVzYCBiaXRtYXAgYXM6CgogICAgICAgIGJp dCAwfjE6IEwzIENBVCBzdGF0dXMsIFswMV0gc3RhbmRzIGZvciBMMyBDQVQgb25seSBhbmQgWzEw XQogICAgICAgICAgICAgICAgIHN0YW5kcyBmb3IgTDMgQ0RQIGlzIGVuYWxiZWQuCgogICAgICAg IGJpdCAyOiBMMiBDQVQgc3RhdHVzLgoKICAgICAgLSBNZW1iZXIgYGNvc190b19tYXNrYAoKICAg ICAgICBgY29zX3RvX21hc2tgIGlzIGEgYXJyYXkgb2YgYHBzcl9tYXNrYCBzdHJ1Y3R1cmUgd2hp Y2gKICAgICAgICByZXByZXNlbnRzIHRoZSBjYXBhY2l0eSBiaXRtYXNrcyBvZiBhbGxvY2F0aW9u IGZlYXR1cmVzLCBhbmQgaXQKICAgICAgICBpcyBpbmRleGVkIGJ5IENPUy4KCiMgVXNlciBpbmZv cm1hdGlvbgoKKiBGZWF0dXJlIEVuYWJsaW5nOgoKICBBZGQgInBzcj1jYXQiIHRvIGJvb3QgbGlu ZSBwYXJhbWV0ZXIgdG8gZW5hYmxlIGFsbCBzdXBwb3J0ZWQgbGV2ZWwgQ0FUCiAgZmVhdHVyZXMu CgoqIHhsIGludGVyZmFjZXM6CgogIDEuIGBwc3ItY2F0LXNob3cgW2RvbWFpbi1pZF1gOgoKICAg ICBTaG93IHN5c3RlbS9kb21haW4gTDIgJiBMMyBDQVQgaW5mb3JtYXRpb24uCgogIDIuIGBwc3It Y2F0LWNibS1zZXQgW09QVElPTlNdIGRvbWFpbi1pZCBjYm1gOgoKICAgICBOZXcgb3B0aW9ucyBg LWwyYCBhbmQgYC1sM2AgYXJlIGFkZGVkLgogICAgIGAtbDJgOiBTcGVjaWZ5IGNibSBmb3IgTDIg Y2FjaGUuCiAgICAgYC1sM2A6IFNwZWNpZnkgY2JtIGZvciBMMyBjYWNoZS4KCiAgICAgSWYgbmVp dGhlciBgLWwyYCBub3IgYC1sM2AgaXMgZ2l2ZW4sIExMQyAoTGFzdCBMZXZlbCBDYWNoZSkgaXMK ICAgICBkZWZhdWx0IGJlaGF2aW9yLiBTaW5jZSB0aGVyZSBpcyBubyBDRFAgc3VwcG9ydCBvbiBM MiBjYWNoZSwgc28gaWYKICAgICBgLWwyYCwgYC0tY29kZWAgb3IgYC0tZGF0YWAgYXJlIGJvdGgg Z2l2ZW4sIGVycm9yIG1lc3NhZ2Ugc2hvd3MuCgojIFJlZmVyZW5jZXMKCltJbnRlbMKuIDY0IGFu ZCBJQS0zMiBBcmNoaXRlY3R1cmVzIFNvZnR3YXJlIERldmVsb3BlciBNYW51YWxzXShodHRwOi8v d3d3LmludGVsLmNvbS9jb250ZW50L3d3dy91cy9lbi9wcm9jZXNzb3JzL2FyY2hpdGVjdHVyZXMt c29mdHdhcmUtZGV2ZWxvcGVyLW1hbnVhbHMuaHRtbCkKCiMgSGlzdG9yeQoKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCkRhdGUgICAgICAgUmV2aXNpb24gVmVyc2lvbiAgTm90ZXMKLS0tLS0tLS0tLSAtLS0tLS0t LSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIw MTYtMDUtMTIgMS4wICAgICAgWGVuIDQuNyAgSW5pdGlhbCBkZXNpZ24KLS0tLS0tLS0tLSAtLS0t LS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4u b3JnL3hlbi1kZXZlbAo=