From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jike Song Subject: Re: [Announcement] 2015-Q2 release of XenGT - a Mediated Graphics Passthrough Solution from Intel Date: Tue, 07 Jul 2015 10:49:28 +0800 Message-ID: <559B3E38.1080707@intel.com> References: <53D215D3.50608@intel.com> <547FCAAD.2060406@intel.com> <54AF967B.3060503@intel.com> <5527CEC4.9080700@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 91EC56E3DB for ; Mon, 6 Jul 2015 19:58:29 -0700 (PDT) In-Reply-To: <5527CEC4.9080700@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: xen-devel@lists.xen.org, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: "Reddy, Raghuveer" , "White, Michael L" , "Dong, Eddie" , "Li, Susie" , "Cowperthwaite, David J" , "Zhou, Chao" , "Zhu, Libo" , "Wang, Hongbo" List-Id: intel-gfx@lists.freedesktop.org SGkgYWxsLAoKV2UncmUgcGxlYXNlZCB0byBhbm5vdW5jZSBhIHB1YmxpYyB1cGRhdGUgdG8gSW50 ZWwgR3JhcGhpY3MgVmlydHVhbGl6YXRpb24gVGVjaG5vbG9neShJbnRlbCBHVlQtZywgZm9ybWVy bHkga25vd24gYXMgWGVuR1QpLgoKSW50ZWwgR1ZULWcgaXMgYSBmdWxsIEdQVSB2aXJ0dWFsaXph dGlvbiBzb2x1dGlvbiB3aXRoIG1lZGlhdGVkIHBhc3MtdGhyb3VnaCwgc3RhcnRpbmcgZnJvbSA0 dGggZ2VuZXJhdGlvbiBJbnRlbCBDb3JlKFRNKSBwcm9jZXNzb3JzIHdpdGggSW50ZWwgR3JhcGhp Y3MgcHJvY2Vzc29ycy4gQSB2aXJ0dWFsIEdQVSBpbnN0YW5jZSBpcyBtYWludGFpbmVkIGZvciBl YWNoIFZNLCB3aXRoIHBhcnQgb2YgcGVyZm9ybWFuY2UgY3JpdGljYWwgcmVzb3VyY2VzIGRpcmVj dGx5IGFzc2lnbmVkLiBUaGUgY2FwYWJpbGl0eSBvZiBydW5uaW5nIG5hdGl2ZSBncmFwaGljcyBk cml2ZXIgaW5zaWRlIGEgVk0sIHdpdGhvdXQgaHlwZXJ2aXNvciBpbnRlcnZlbnRpb24gaW4gcGVy Zm9ybWFuY2UgY3JpdGljYWwgcGF0aHMsIGFjaGlldmVzIGEgZ29vZCBiYWxhbmNlIGFtb25nIHBl cmZvcm1hbmNlLCBmZWF0dXJlLCBhbmQgc2hhcmluZyBjYXBhYmlsaXR5LiBYZW4gaXMgY3VycmVu dGx5IHN1cHBvcnRlZCBvbiBJbnRlbCBQcm9jZXNzb3IgR3JhcGhpY3MgKGEuay5hLiBYZW5HVCk7 IGFuZCB0aGUgY29yZSBsb2dpYyBjYW4gYmUgZWFzaWx5IHBvcnRlZCB0byBvdGhlciBoeXBlcnZp c29ycywgZm9yIGV4YW1wbGUsIHRoZSBleHBlcmltZW50YWwgY29kZSBoYXMgYmVlbiByZWxlYXNl ZCB0byBzdXBwb3J0IEdWVC1nIHJ1bm5pbmcgb24gYSBLVk0gaHlwZXJ2aXNvciAoYS5rLmEgS1ZN R1QpLgoKVGlwIG9mIHJlcG9zaXRvcmllcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAg IEtlcm5lbDogNWI3MzY1M2Q1Y2EsIEJyYW5jaDogbWFzdGVyLTIwMTVRMi0zLjE4LjAKICAgICBR ZW11OiAyYTc1YmJmZjYyYzEsIEJyYW5jaDogbWFzdGVyCiAgICAgWGVuOiAzOGMzNmYwZjUxMWIx LCBCcmFuY2g6IG1hc3Rlci0yMDE1UTItNC41CgpUaGlzIHVwZGF0ZSBjb25zaXN0cyBvZjoKICAg ICAtIENoYW5nZSB0aW1lIGJhc2VkIHNjaGVkdWxlciB0aW1lciB0byBiZSBjb25maWd1cmFibGUg dG8gZW5oYW5jZSBzdGFiaWxpdHkKICAgICAtIEZpeCBzdGFiaWxpdHkgaXNzdWVzIHRoYXQgVk0v RG9tMCBnb3QgdGRyIHdoZW4gaGFuZyB1cCBhdCBzb21lIHNwZWNpZmljIGluc3RydWN0aW9uIG9u IEJEVwogICAgIC0gT3B0aW1pemUgdGhlIGVtdWxhdGlvbiBvZiBlbF9zdGF0dXMgcmVnaXN0ZXIg dG8gZW5oYW5jZSBzdGFiaWxpdHkKICAgICAtIDJELzNEIHBlcmZvcm1hbmNlIGluIGxpbnV4IFZN cyBoYXMgYmVlbiBpbXByb3ZlZCBhYm91dCA1MCUgb24gQkRXCiAgICAgLSBGaXggYWJub3JtYWwg aWRsZSBwb3dlciBjb25zdW1wdGlvbiBpc3N1ZSBkdWUgdG8gd3JvbmcgZm9yY2V3YWtlIHBvbGlj eQogICAgIC0gRml4IHRkciBpc3N1ZSB3aGVuIHJ1bm5pbmcgMkQvM0QvTWVkaWEgd29ya2xvYWRz IGluIFdpbmRvd3MgVk1zIHNpbXVsdGFuZW91c2x5CiAgICAgLSBLVk0gc3VwcG9ydCBpcyBzdGls bCBpbiBhIHNlcGFyYXRlIGJyYW5jaCBhcyBwcm90b3R5cGUgd29yay4gV2UgcGxhbiB0byBpbnRl Z3JhdGUgS1ZNL1hlbiBzdXBwb3J0IHRvZ2V0aGVyIGluIHRoZSBmdXR1cmUgcmVsZWFzZXMKICAg ICAtIE5leHQgdXBkYXRlIHdpbGwgYmUgYXJvdW5kIGVhcmx5IE9jdCwgMjAxNQoKTm90aWNlIHRo YXQgdGhpcyByZWxlYXNlIGNhbiBzdXBwb3J0IGJvdGggSW50ZWwgNHRoIGdlbmVyYXRpb24gQ29y ZSBDUFUoY29kZSBuYW1lOiBIYXN3ZWxsKSBhbmQgSW50ZWwgNXRoIGdlbmVyYXRpb24gQ29yZSBD UFUgKGNvZGUgbmFtZTogQnJvYWR3ZWxsKSwgd2hpbGUgdGhlIGxpbWl0YXRpb24gb2YgdGhlIGxh dHRlciBpbmNsdWRlOgogICAgICogM0QgY29uZm9ybWFuY2UgbWF5IGhhdmUgc29tZSBmYWlsdXJl CiAgICAgKiBVbmRlciBoaWdoIGRlbWFuZCAzRCB3b3JrbG9hZHMsIHN0YWJpbGl0eSBpc3N1ZXMg YXJlIGRldGVjdGVkCiAgICAgKiBNdWx0aS1tb25pdG9yIHNjZW5hcmlvIGlzIG5vdCBmdWxseSB0 ZXN0ZWQsIHdoaWxlIHNpbmdsZSBtb25pdG9yIG9mIFZHQS9IRE1JL0RQL2VEUCBzaG91bGQganVz dCB3b3JrCiAgICAgKiBIb3RwbHVnIERQIG1heSBjYXVzZSBibGFjayBzY3JlZW4gZXZlbiBvbiBu YXRpdmUgZW52aXJvbm1lbnQKCldoZXJlIHRvIGdldAoKa2VybmVsOiBodHRwczovL2dpdGh1Yi5j b20vMDFvcmcvWGVuR1QtUHJldmlldy1rZXJuZWwuZ2l0CnhlbjogaHR0cHM6Ly9naXRodWIuY29t LzAxb3JnL1hlbkdULVByZXZpZXcteGVuLmdpdApxZW11OiBodHRwczovL2dpdGh1Yi5jb20vMDFv cmcvWGVuR1QtUHJldmlldy1xZW11LmdpdAoKCldlIGhhdmUgYSBtYWlsaW5nIGxpc3QgZm9yIEdW VC1nIGRldmVsb3BtZW50LCBidWcgcmVwb3J0IGFuZCB0ZWNobmljYWwgZGlzY3Vzc2lvbjoKCiAg ICAgaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3Z0LWcKCk1vcmUgaW5m b3JtYXRpb24gYWJvdXQgSW50ZWwgR1ZULWcgYmFja2dyb3VuZCwgYXJjaGl0ZWN0dXJlLCBldGMg Y2FuIGJlIGZvdW5kIGF0OgoKICAgICBodHRwczovL3d3dy51c2VuaXgub3JnL2NvbmZlcmVuY2Uv YXRjMTQvdGVjaG5pY2FsLXNlc3Npb25zL3ByZXNlbnRhdGlvbi90aWFuCiAgICAgaHR0cDovL2V2 ZW50cy5saW51eGZvdW5kYXRpb24ub3JnL3NpdGVzL2V2ZW50cy9maWxlcy9zbGlkZXMvWGVuR1Qt WGVuJTIwU3VtbWl0LXY3XzAucGRmCiAgICAgaHR0cHM6Ly8wMS5vcmcveGVuL2Jsb2dzL3NyY2xh cmt4LzIwMTMvZ3JhcGhpY3MtdmlydHVhbGl6YXRpb24teGVuZ3QKCgpOb3RlOiBUaGUgWGVuR1Qg cHJvamVjdCBzaG91bGQgYmUgY29uc2lkZXJlZCBhIHdvcmsgaW4gcHJvZ3Jlc3MuIEFzIHN1Y2gg aXQgaXMgbm90IGEgY29tcGxldGUgcHJvZHVjdCBub3Igc2hvdWxkIGl0IGJlIGNvbnNpZGVyZWQg b25lLiBFeHRyYSBjYXJlIHNob3VsZCBiZSB0YWtlbiB3aGVuIHRlc3RpbmcgYW5kIGNvbmZpZ3Vy aW5nIGEgc3lzdGVtIHRvIHVzZSB0aGUgWGVuR1QgcHJvamVjdC4KCgotLQpUaGFua3MsCkppa2UK Ck9uIDA0LzEwLzIwMTUgMDk6MjMgUE0sIEppa2UgU29uZyB3cm90ZToKPiBIaSBhbGwsCj4KPiBX ZSdyZSBwbGVhc2VkIHRvIGFubm91bmNlIGEgcHVibGljIHVwZGF0ZSB0byBJbnRlbCBHcmFwaGlj cyBWaXJ0dWFsaXphdGlvbiBUZWNobm9sb2d5IChJbnRlbCBHVlQtZywgZm9ybWVybHkga25vd24g YXMgWGVuR1QpLiBJbnRlbCBHVlQtZyBpcyBhIGNvbXBsZXRlIHZHUFUgc29sdXRpb24gd2l0aCBt ZWRpYXRlZCBwYXNzLXRocm91Z2gsIHN1cHBvcnRlZCB0b2RheSBvbiA0dGggZ2VuZXJhdGlvbiBJ bnRlbCBDb3JlKFRNKSBwcm9jZXNzb3JzIHdpdGggSW50ZWwgR3JhcGhpY3MgcHJvY2Vzc29ycy4g QSB2aXJ0dWFsIEdQVSBpbnN0YW5jZSBpcyBtYWludGFpbmVkIGZvciBlYWNoIFZNLCB3aXRoIHBh cnQgb2YgcGVyZm9ybWFuY2UgY3JpdGljYWwgcmVzb3VyY2VzIGRpcmVjdGx5IGFzc2lnbmVkLiBU aGUgY2FwYWJpbGl0eSBvZiBydW5uaW5nIG5hdGl2ZSBncmFwaGljcyBkcml2ZXIgaW5zaWRlIGEg Vk0sIHdpdGhvdXQgaHlwZXJ2aXNvciBpbnRlcnZlbnRpb24gaW4gcGVyZm9ybWFuY2UgY3JpdGlj YWwgcGF0aHMsIGFjaGlldmVzIGEgZ29vZCBiYWxhbmNlIGFtb25nIHBlcmZvcm1hbmNlLCBmZWF0 dXJlLCBhbmQgc2hhcmluZyBjYXBhYmlsaXR5LiBUaG91Z2ggd2Ugb25seSBzdXBwb3J0IFhlbiBv biBJbnRlbCBQcm9jZXNzb3IgR3JhcGhpY3Mgc28gZmFyLCB0aGUgY29yZSBsb2dpYyBjYW4gYmUg ZWFzaWx5IHBvcnRlZCB0byBvdGhlciBoeXBlcnZpc29ycy4KPgo+IFRpcCBvZiByZXBvc2l0b3Jp ZXMKPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4KPiAgICAgICAgICAgIEtlcm5lbDogYTAx MWM5Zjk1M2UsIEJyYW5jaDogbWFzdGVyLTIwMTVRMS0zLjE4LjAKPiAgICAgICAgICAgIFFlbXU6 IDJhNzViYmZmNjJjMSwgQnJhbmNoOiBtYXN0ZXIKPiAgICAgICAgICAgIFhlbjogMzhjMzZmMGY1 MTFiMSwgQnJhbmNoOiBtYXN0ZXItMjAxNVExLTQuNQo+Cj4gU3VtbWFyeSB0aGlzIHVwZGF0ZQo+ IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAJLSBQcmVsaW1pbmFyeSBCcm9hZHdlbGwgc3Vw cG9ydC4KPiAJLSBrZXJuZWwgdXBkYXRlIGZyb20gZHJtLWludGVsIDMuMTcuMCB0byBkcm0taW50 ZWwgMy4xOC4wKHRhZzogZHJtLWludGVsLW5leHQtZml4ZXMtMjAxNC0xMi0xNywgbm90aWNlIHRo YXQgaTkxNSBkcml2ZXIgY29kZSBpcyBtdWNoIG5ld2VyIHRoYW4ga2VybmVsIHN0YWJsZSB2ZXJz aW9uKS4KPiAJLSBOZXh0IHVwZGF0ZSB3aWxsIGJlIGFyb3VuZCBlYXJseSBKdWx5LCAyMDE1Lgo+ IAktIEtWTSBzdXBwb3J0IGlzIHN0aWxsIGluIGEgc2VwYXJhdGUgYnJhbmNoIGFzIHByb3RvdHlw ZSB3b3JrLiBXZSBwbGFuIHRvIGludGVncmF0ZSBLVk0vWGVuIHN1cHBvcnQgdG9nZXRoZXIgaW4g ZnV0dXJlIHJlbGVhc2VzLgo+Cj4gVGhpcyB1cGRhdGUgY29uc2lzdHMgb2Y6Cj4gCS0gZ3Z0LWcg Y29yZSBsb2dpYyBjb2RlIHdhcyBtb3ZlZCBpbnRvIGk5MTUgZHJpdmVyIGRpcmVjdG9yeS4KPiAJ LSBIb3N0IG1lZGlhdGlvbiBpcyB1c2VkIGZvciBkb20wIGk5MTUgZHJpdmVyIGFjY2VzcywgaW5z dGVhZCBvZiBkZS1wcml2aWxlZ2VkIGRvbTAuCj4gCS0gVGhlIFhlbi1zcGVjaWZpYyBjb2RlIHdh cyBzZXBhcmF0ZWQgZnJvbSB2Z3QgY29yZSBsb2dpYyBpbnRvIGEgbmV3IGZpbGUgImRyaXZlci94 ZW4veGVuZ3QuYyIuCj4gCS0gQnJvYWR3ZWxsIGlzIHByZWxpbWluYXJpbHkgc3VwcG9ydGVkIGlu IHRoaXMgcmVsZWFzZS4gVXNlcnMgY291bGQgc3RhcnQgbXVsdGlwbGUgbGludXgvd2luZG93cyA2 NC1iaXQgdmlydHVhbCBtYWNoaW5lcyBzaW11bHRhbmVvdXNseSwgYW5kIHBlcmZvcm0gZGlzcGxh eSBzd2l0Y2ggYW1vbmcgdGhlbS4KPgo+IE5vdGljZSB0aGF0IGl0IGlzIHN0aWxsIHByZWxpbWlu YXJ5IHJlbGVhc2UgZm9yIEJEVywgd2hpY2ggaXMgbm90IHlldCBpbiB0aGUgc2FtZSBsZXZlbCBv ZiBIU1cgcmVsZWFzZS4gRGlmZmVyZW5jZXMgaW5jbHVkZToKPiAgICAgICAgICAgICAgICAgICAq IFBvd2VyL3BlcmZvcm1hbmNlIHR1bmluZyBvbiBCRFcgaXMgbm90IHlldCBkb25lLgo+IAkgKiBT dGFiaWxpdHkgbmVlZHMgdG8gYmUgaW1wcm92ZWQuCj4gICAgICAgICAgICAgICAgICAgKiBObyAz Mi1iaXQgZ3Vlc3QgT1Mgc3VwcG9ydC4KPiAgICAgICAgICAgICAgICAgICAqIE11bHRpLW1vbml0 b3Igc2NlbmFyaW8gaXMgbm90IGZ1bGx5IHRlc3RlZCwgd2hpbGUgc2luZ2xlIG1vbml0b3Igb2Yg VkdBL0hETUkvRFAvZURQIHNob3VsZCBqdXN0IHdvcmsuCj4KPgo+IFdoZXJlIHRvIGdldDoKPiAt LS0tLS0tLS0tLS0tLS0tLQo+ICAgICAgICAgICAgICAgICAgIGtlcmVubDogaHR0cHM6Ly9naXRo dWIuY29tLzAxb3JnL1hlbkdULVByZXZpZXcta2VybmVsLmdpdAo+ICAgICAgICAgICAgICAgICAg IFhlbjogaHR0cHM6Ly9naXRodWIuY29tLzAxb3JnL1hlbkdULVByZXZpZXcteGVuLmdpdAo+ICAg ICAgICAgICAgICAgICAgIFFlbXU6IGh0dHBzOi8vZ2l0aHViLmNvbS8wMW9yZy9YZW5HVC1QcmV2 aWV3LXFlbXUuZ2l0Cj4KPiBQbGVhc2UgcmVmZXIgdG8gdGhlIG5ldyBzZXR1cCBndWlkZSwgd2hp Y2ggcHJvdmlkZXMgc3RlcC10by1zdGVwIGRldGFpbHMgYWJvdXQgYnVpbGRpbmcvY29uZmlndXJp bmcvcnVubmluZyBJbnRlbCBHVlQtZzoKPiAJIGh0dHBzOi8vZ2l0aHViLmNvbS8wMW9yZy9YZW5H VC1QcmV2aWV3LWtlcm5lbC9ibG9iL21hc3Rlci0yMDE1UTEtMy4xOC4wL1hlbkdUX1NldHVwX0d1 aWRlXzIwMTVRMS5wZGYKPgo+IE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgSW50ZWwgR1ZULWcgYmFj a2dyb3VuZCwgYXJjaGl0ZWN0dXJlLCBldGMgY2FuIGJlIGZvdW5kIGF0Ogo+ICAgICAgICAgICAg ICAgICAgIGh0dHBzOi8vd3d3LnVzZW5peC5vcmcvY29uZmVyZW5jZS9hdGMxNC90ZWNobmljYWwt c2Vzc2lvbnMvcHJlc2VudGF0aW9uL3RpYW4KPiAgICAgICAgICAgICAgICAgICBodHRwOi8vZXZl bnRzLmxpbnV4Zm91bmRhdGlvbi5vcmcvc2l0ZXMvZXZlbnRzL2ZpbGVzL3NsaWRlcy9YZW5HVC1Y ZW4lMjBTdW1taXQtdjdfMC5wZGYKPiAgICAgICAgICAgICAgICAgICBodHRwczovLzAxLm9yZy94 ZW4vYmxvZ3Mvc3JjbGFya3gvMjAxMy9ncmFwaGljcy12aXJ0dWFsaXphdGlvbi14ZW5ndAo+Cj4g VGhlIHByZXZpb3VzIHVwZGF0ZSBjYW4gYmUgZm91bmQgaGVyZToKPiAgICAgICAgICAgICAgICAg IGh0dHA6Ly9saXN0cy54ZW4ub3JnL2FyY2hpdmVzL2h0bWwveGVuLWRldmVsLzIwMTQtMTIvbXNn MDA0NzQuaHRtbAo+Cj4KPiBOb3RlCj4gLS0tLS0tLS0tLS0tLS0tCj4gCVRoZSBYZW5HVCBwcm9q ZWN0IHNob3VsZCBiZSBjb25zaWRlcmVkIGEgd29yayBpbiBwcm9ncmVzcywgQXMgc3VjaCBpdCBp cyBub3QgYSBjb21wbGV0ZSBwcm9kdWN0IG5vciBzaG91bGQgaXQgYmUgY29uc2lkZXJlZCBvbmUu LCBFeHRyYSBjYXJlIHNob3VsZCBiZSB0YWtlbiB3aGVuIHRlc3RpbmcgYW5kIGNvbmZpZ3VyaW5n IGEgc3lzdGVtIHRvIHVzZSB0aGUgWGVuR1QgcHJvamVjdC4KPgo+Cj4gLS0KPiBUaGFua3MsCj4g SmlrZQo+Cj4gT24gMDEvMDkvMjAxNSAwNDo1MSBQTSwgSmlrZSBTb25nIHdyb3RlOgo+PiBIaSBh bGwsCj4+Cj4+ICAgICAgV2UncmUgcGxlYXNlZCB0byBhbm5vdW5jZSBhIHB1YmxpYyB1cGRhdGUg dG8gSW50ZWwgR3JhcGhpY3MgVmlydHVhbGl6YXRpb24gVGVjaG5vbG9neSAoSW50ZWwgR1ZULWcs IGZvcm1lcmx5IGtub3duIGFzIFhlbkdUKS4gSW50ZWwgR1ZULWcgaXMgYSBjb21wbGV0ZSB2R1BV IHNvbHV0aW9uIHdpdGggbWVkaWF0ZWQgcGFzcy10aHJvdWdoLCBzdXBwb3J0ZWQgdG9kYXkgb24g NHRoIGdlbmVyYXRpb24gSW50ZWwgQ29yZShUTSkgcHJvY2Vzc29ycyB3aXRoIEludGVsIEdyYXBo aWNzIHByb2Nlc3NvcnMuIEEgdmlydHVhbCBHUFUgaW5zdGFuY2UgaXMgbWFpbnRhaW5lZCBmb3Ig ZWFjaCBWTSwgd2l0aCBwYXJ0IG9mIHBlcmZvcm1hbmNlIGNyaXRpY2FsIHJlc291cmNlcyBkaXJl Y3RseSBhc3NpZ25lZC4gVGhlIGNhcGFiaWxpdHkgb2YgcnVubmluZyBuYXRpdmUgZ3JhcGhpY3Mg ZHJpdmVyIGluc2lkZSBhIFZNLCB3aXRob3V0IGh5cGVydmlzb3IgaW50ZXJ2ZW50aW9uIGluIHBl cmZvcm1hbmNlIGNyaXRpY2FsIHBhdGhzLCBhY2hpZXZlcyBhIGdvb2QgYmFsYW5jZSBhbW9uZyBw ZXJmb3JtYW5jZSwgZmVhdHVyZSwgYW5kIHNoYXJpbmcgY2FwYWJpbGl0eS4gVGhvdWdoIHdlIG9u bHkgc3VwcG9ydCBYZW4gb24gSW50ZWwgUHJvY2Vzc29yIEdyYXBoaWNzIHNvIGZhciwgdGhlIGNv cmUgbG9naWMgY2FuIGJlIGVhc2lseSBwb3J0ZWQgdG8gb3RoZXIgaHlwZXJ2aXNvcnMuICAgVGhl IFhlbkdUIHByb2plY3Qgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSB3b3JrIGluIHByb2dyZXNzLCBB cyBzdWNoIGl0IGlzIG5vdCBhIGNvbXBsZXRlIHByb2R1Y3Qgbm9yIHNob3VsZCBpdCBiZSBjb25z aWRlcmVkIG9uZS4sIEV4dHJhIGNhcmUgc2hvdWxkIGJlIHRha2VuIHdoZW4gdGVzdGluZyBhbmQg Y29uZmlndXJpbmcgYSBzeXN0ZW0gdG8gdXNlIHRoZSBYZW5HVCBwcm9qZWN0Lgo+Pgo+PiBUaGUg bmV3cyBvZiB0aGlzIHVwZGF0ZToKPj4KPj4gCS0ga2VybmVsIHVwZGF0ZSBmcm9tIDMuMTQuMSB0 byBkcm0taW50ZWwgMy4xNy4wLgo+PiAJLSBXZSBwbGFuIHRvIGludGVncmF0ZSBJbnRlbCBHVlQt ZyBhcyBhIGZlYXR1cmUgaW4gaTkxNSBkcml2ZXIuIFRoYXQgZWZmb3J0IGlzIHN0aWxsIHVuZGVy IHJldmlldywgbm90IGluY2x1ZGVkIGluIHRoaXMgdXBkYXRlIHlldC4KPj4gCS0gTmV4dCB1cGRh dGUgd2lsbCBiZSBhcm91bmQgZWFybHkgQXByLCAyMDE1Lgo+Pgo+PiBUaGlzIHVwZGF0ZSBjb25z aXN0cyBvZjoKPj4KPj4gCS0gSW5jbHVkaW5nIHNvbWUgYnVnIGZpeGVzIGFuZCBzdGFiaWxpdHkg ZW5oYW5jZW1lbnQuCj4+IAktIE1ha2luZyBYZW5HVCBkZXZpY2UgbW9kZWwgdG8gYmUgYXdhcmUg b2YgQnJvYWR3ZWxsLiBJbiB0aGlzIHZlcnNpb24gQkRXIGlzIG5vdCB5ZXQgZnVuY3Rpb25pbmcu Cj4+IAktIEF2YWlsYWJsZSBGZW5jZSByZWdpc3RlcnMgbnVtYmVyIGlzIGNoYW5nZWQgdG8gMzIg ZnJvbSAxNiB0byBhbGlnbiB3aXRoIEhTVyBoYXJkd2FyZS4KPj4gCS0gTmV3IGNhc2NhZGUgaW50 ZXJydXB0IGZyYW1ld29yayBmb3Igc3VwcG9ydGluZyBpbnRlcnJ1cHQgdmlydHVhbGl6YXRpb24g b24gYm90aCBIYXN3ZWxsIGFuZCBCcm9hZHdlbGwuCj4+IAktIEFkZCBiYWNrIHRoZSBnZW1fdmd0 YnVmZmVyLiBUaGUgcHJldmlvdXMgcmVsZWFzZSBkaWQgbm90IGJ1aWxkIHRoYXQgbW9kdWxlIGZv ciAzLjE0IGtlcm5lbC4gSW4gdGhpcyByZWxlYXNlLCB0aGUgbW9kdWxlIGlzIGJhY2sgYW5kIHJl YmFzZWQgdG8gMy4xNy4KPj4gCS0gRW5hYmxlIHRoZSBpcnEgYmFzZWQgY29udGV4dCBzd2l0Y2gg aW4gdmd0IGRyaXZlciwgd2hpY2ggd2lsbCBoZWxwIHJlZHVjZSB0aGUgY3B1IHV0aWxpemF0aW9u IHdoaWxlIGRvaW5nIGNvbnRleHQgc3dpdGNoLCBpdCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGFu ZCBjYW4gYmUgdHVybiBvZmYgYnkga2VybmVsIGZsYWcgaXJxX2Jhc2VkX2N0eF9zd2l0Y2guCj4+ Cj4+Cj4+IFBsZWFzZSByZWZlciB0byB0aGUgbmV3IHNldHVwIGd1aWRlLCB3aGljaCBwcm92aWRl cyBzdGVwLXRvLXN0ZXAgZGV0YWlscyBhYm91dCBidWlsZGluZy9jb25maWd1cmluZy9ydW5uaW5n IEludGVsIEdWVC1nOgo+Pgo+PiAJaHR0cHM6Ly9naXRodWIuY29tLzAxb3JnL1hlbkdULVByZXZp ZXcta2VybmVsL2Jsb2IvbWFzdGVyL1hlbkdUX1NldHVwX0d1aWRlLnBkZgo+Pgo+PiBUaGUgbmV3 IHNvdXJjZSBjb2RlcyBhcmUgYXZhaWxhYmxlIGF0IHRoZSB1cGRhdGVkIGdpdGh1YiByZXBvczoK Pj4KPj4gCUxpbnV4OiBodHRwczovL2dpdGh1Yi5jb20vMDFvcmcvWGVuR1QtUHJldmlldy1rZXJu ZWwuZ2l0Cj4+IAlYZW46IGh0dHBzOi8vZ2l0aHViLmNvbS8wMW9yZy9YZW5HVC1QcmV2aWV3LXhl bi5naXQKPj4gCVFlbXU6IGh0dHBzOi8vZ2l0aHViLmNvbS8wMW9yZy9YZW5HVC1QcmV2aWV3LXFl bXUuZ2l0Cj4+Cj4+Cj4+IE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgSW50ZWwgR1ZULWcgYmFja2dy b3VuZCwgYXJjaGl0ZWN0dXJlLCBldGMgY2FuIGJlIGZvdW5kIGF0Ogo+Pgo+Pgo+PiAJaHR0cHM6 Ly93d3cudXNlbml4Lm9yZy9jb25mZXJlbmNlL2F0YzE0L3RlY2huaWNhbC1zZXNzaW9ucy9wcmVz ZW50YXRpb24vdGlhbgo+PiAJaHR0cDovL2V2ZW50cy5saW51eGZvdW5kYXRpb24ub3JnL3NpdGVz L2V2ZW50cy9maWxlcy9zbGlkZXMvWGVuR1QtWGVuJTIwU3VtbWl0LXY3XzAucGRmCj4+IAlodHRw czovLzAxLm9yZy94ZW4vYmxvZ3Mvc3JjbGFya3gvMjAxMy9ncmFwaGljcy12aXJ0dWFsaXphdGlv bi14ZW5ndAo+Pgo+Pgo+Pgo+PiBUaGUgcHJldmlvdXMgdXBkYXRlIGNhbiBiZSBmb3VuZCBoZXJl Ogo+Pgo+Pgo+PiAJaHR0cDovL2xpc3RzLnhlbi5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwv MjAxNC0xMi9tc2cwMDQ3NC5odG1sCj4+Cj4+Cj4+Cj4+IEFwcHJlY2lhdGUgeW91ciBjb21tZW50 cyEKPj4KPj4KPj4KPj4gLS0KPj4gVGhhbmtzLAo+PiBKaWtlCj4+Cj4+Cj4+IE9uIDEyLzA0LzIw MTQgMTA6NDUgQU0sIEppa2UgU29uZyB3cm90ZToKPj4+IEhpIGFsbCwKPj4+Cj4+PiBXZSdyZSBw bGVhc2VkIHRvIGFubm91bmNlIGEgcHVibGljIHJlbGVhc2UgdG8gSW50ZWwgR3JhcGhpY3MgVmly dHVhbGl6YXRpb24gVGVjaG5vbG9neSAoSW50ZWwgR1ZULWcsIGZvcm1lcmx5IGtub3duIGFzIFhl bkdUKS4gSW50ZWwgR1ZULWcgaXMgYSBjb21wbGV0ZSB2R1BVIHNvbHV0aW9uIHdpdGggbWVkaWF0 ZWQgcGFzcy10aHJvdWdoLCBzdXBwb3J0ZWQgdG9kYXkgb24gNHRoIGdlbmVyYXRpb24gSW50ZWwg Q29yZShUTSkgcHJvY2Vzc29ycyB3aXRoIEludGVsIEdyYXBoaWNzIHByb2Nlc3NvcnMuIEEgdmly dHVhbCBHUFUgaW5zdGFuY2UgaXMgbWFpbnRhaW5lZCBmb3IgZWFjaCBWTSwgd2l0aCBwYXJ0IG9m IHBlcmZvcm1hbmNlIGNyaXRpY2FsIHJlc291cmNlcyBkaXJlY3RseSBhc3NpZ25lZC4gVGhlIGNh cGFiaWxpdHkgb2YgcnVubmluZyBuYXRpdmUgZ3JhcGhpY3MgZHJpdmVyIGluc2lkZSBhIFZNLCB3 aXRob3V0IGh5cGVydmlzb3IgaW50ZXJ2ZW50aW9uIGluIHBlcmZvcm1hbmNlIGNyaXRpY2FsIHBh dGhzLCBhY2hpZXZlcyBhIGdvb2QgYmFsYW5jZSBhbW9uZyBwZXJmb3JtYW5jZSwgZmVhdHVyZSwg YW5kIHNoYXJpbmcgY2FwYWJpbGl0eS4gVGhvdWdoIHdlIG9ubHkgc3VwcG9ydCBYZW4gb24gSW50 ZWwgUHJvY2Vzc29yIEdyYXBoaWNzIHNvIGZhciwgdGhlIGNvcmUgbG9naWMgY2FuIGJlIGVhc2ls eSBwb3J0ZWQgdG8gb3RoZXIgaHlwZXJ2aXNvcnMuCj4+Pgo+Pj4KPj4+IFRoZSBuZXdzIG9mIHRo aXMgdXBkYXRlOgo+Pj4KPj4+Cj4+PiAJLSBrZXJuZWwgdXBkYXRlIGZyb20gMy4xMS42IHRvIDMu MTQuMQo+Pj4KPj4+IAktIFdlIHBsYW4gdG8gaW50ZWdyYXRlIEludGVsIEdWVC1nIGFzIGEgZmVh dHVyZSBpbiBpOTE1IGRyaXZlci4gVGhhdCBlZmZvcnQgaXMgc3RpbGwgdW5kZXIgcmV2aWV3LCBu b3QgaW5jbHVkZWQgaW4gdGhpcyB1cGRhdGUgeWV0Cj4+Pgo+Pj4gCS0gTmV4dCB1cGRhdGUgd2ls bCBiZSBhcm91bmQgZWFybHkgSmFuLCAyMDE1Cj4+Pgo+Pj4KPj4+IFRoaXMgdXBkYXRlIGNvbnNp c3RzIG9mOgo+Pj4KPj4+IAktIFdpbmRvd3MgSFZNIHN1cHBvcnQgd2l0aCBkcml2ZXIgdmVyc2lv biAxNS4zMy4zOTEwCj4+Pgo+Pj4gCS0gU3RhYmlsaXR5IGZpeGVzLCBlLmcuIHN0YWJpbGl6ZSBH UFUsIHRoZSBHUFUgaGFuZyBvY2N1cnJlbmNlIHJhdGUgYmVjb21lcyByYXJlIG5vdwo+Pj4KPj4+ IAktIEhhcmR3YXJlIE1lZGlhIEFjY2VsZXJhdGlvbiBmb3IgRGVjb2RpbmcvRW5jb2RpbmcvVHJh bnNjb2RpbmcsIFZDMSwgSDI2NCBldGMuIGZvcm1hdCBzdXBwb3J0aW5nCj4+Pgo+Pj4gCS0gRGlz cGxheSBlbmhhbmNlbWVudHMsIGUuZy4gRFAgdHlwZSBpcyBzdXBwb3J0ZWQgZm9yIHZpcnR1YWwg UE9SVAo+Pj4KPj4+IAktIERpc3BsYXkgcG9ydCBjYXBhYmlsaXR5IHZpcnR1YWxpemF0aW9uOiB3 aXRoIHRoaXMgZmVhdHVyZSwgZG9tMCBtYW5hZ2VyIGNvdWxkIGZyZWVseSBhc3NpZ24gdmlydHVh bCBEREkgcG9ydHMgdG8gVk0sIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sgd2hldGhlciB0aGUgY29y cmVzcG9uZGluZyBwaHlzaWNhbCBEREkgcG9ydHMgYXJlIGF2YWlsYWJsZQo+Pj4KPj4+Cj4+Pgo+ Pj4gUGxlYXNlIHJlZmVyIHRvIHRoZSBuZXcgc2V0dXAgZ3VpZGUsIHdoaWNoIHByb3ZpZGVzIHN0 ZXAtdG8tc3RlcCBkZXRhaWxzIGFib3V0IGJ1aWxkaW5nL2NvbmZpZ3VyaW5nL3J1bm5pbmcgSW50 ZWwgR1ZULWc6Cj4+Pgo+Pj4KPj4+IAlodHRwczovL2dpdGh1Yi5jb20vMDFvcmcvWGVuR1QtUHJl dmlldy1rZXJuZWwvYmxvYi9tYXN0ZXIvWGVuR1RfU2V0dXBfR3VpZGUucGRmCj4+Pgo+Pj4KPj4+ Cj4+PiBUaGUgbmV3IHNvdXJjZSBjb2RlcyBhcmUgYXZhaWxhYmxlIGF0IHRoZSB1cGRhdGVkIGdp dGh1YiByZXBvczoKPj4+Cj4+Pgo+Pj4gCUxpbnV4OiBodHRwczovL2dpdGh1Yi5jb20vMDFvcmcv WGVuR1QtUHJldmlldy1rZXJuZWwuZ2l0Cj4+Pgo+Pj4gCVhlbjogaHR0cHM6Ly9naXRodWIuY29t LzAxb3JnL1hlbkdULVByZXZpZXcteGVuLmdpdAo+Pj4KPj4+IAlRZW11OiBodHRwczovL2dpdGh1 Yi5jb20vMDFvcmcvWGVuR1QtUHJldmlldy1xZW11LmdpdAo+Pj4KPj4+Cj4+PiBNb3JlIGluZm9y bWF0aW9uIGFib3V0IEludGVsIEdWVC1nIGJhY2tncm91bmQsIGFyY2hpdGVjdHVyZSwgZXRjIGNh biBiZSBmb3VuZCBhdDoKPj4+Cj4+Pgo+Pj4gCWh0dHBzOi8vd3d3LnVzZW5peC5vcmcvY29uZmVy ZW5jZS9hdGMxNC90ZWNobmljYWwtc2Vzc2lvbnMvcHJlc2VudGF0aW9uL3RpYW4KPj4+Cj4+PiAJ aHR0cDovL2V2ZW50cy5saW51eGZvdW5kYXRpb24ub3JnL3NpdGVzL2V2ZW50cy9maWxlcy9zbGlk ZXMvWGVuR1QtWGVuJTIwU3VtbWl0LXY3XzAucGRmCj4+Pgo+Pj4gCWh0dHBzOi8vMDEub3JnL3hl bi9ibG9ncy9zcmNsYXJreC8yMDEzL2dyYXBoaWNzLXZpcnR1YWxpemF0aW9uLXhlbmd0Cj4+Pgo+ Pj4KPj4+IFRoZSBwcmV2aW91cyB1cGRhdGUgY2FuIGJlIGZvdW5kIGhlcmU6Cj4+Pgo+Pj4KPj4+ IAlodHRwOi8vbGlzdHMueGVuLm9yZy9hcmNoaXZlcy9odG1sL3hlbi1kZXZlbC8yMDE0LTA3L21z ZzAzMjQ4Lmh0bWwKPj4+Cj4+Pgo+Pj4gQXBwcmVjaWF0ZSB5b3VyIGNvbW1lbnRzIQo+Pj4KPj4+ Cj4+PiAtLQo+Pj4gVGhhbmtzLAo+Pj4gSmlrZQo+Pj4KPj4+IE9uIDA3LzI1LzIwMTQgMDQ6MzEg UE0sIEppa2UgU29uZyB3cm90ZToKPj4+PiBIaSBhbGwsCj4+Pj4KPj4+PiBXZSdyZSBwbGVhc2Vk IHRvIGFubm91bmNlIGFuIHVwZGF0ZSB0byBJbnRlbCBHcmFwaGljcyBWaXJ0dWFsaXphdGlvbiBU ZWNobm9sb2d5IChJbnRlbCBHVlQtZywgZm9ybWVybHkga25vd24gYXMgWGVuR1QpLiBJbnRlbCBH VlQtZyBpcyBhIGNvbXBsZXRlIHZHUFUgc29sdXRpb24gd2l0aCBtZWRpYXRlZCBwYXNzLXRocm91 Z2gsIHN1cHBvcnRlZCB0b2RheSBvbiA0dGggZ2VuZXJhdGlvbiBJbnRlbCBDb3JlKFRNKSBwcm9j ZXNzb3JzIHdpdGggSW50ZWwgR3JhcGhpY3MgcHJvY2Vzc29ycy4gQSB2aXJ0dWFsIEdQVSBpbnN0 YW5jZSBpcyBtYWludGFpbmVkIGZvciBlYWNoIFZNLCB3aXRoIHBhcnQgb2YgcGVyZm9ybWFuY2Ug Y3JpdGljYWwgcmVzb3VyY2VzIGRpcmVjdGx5IGFzc2lnbmVkLiBUaGUgY2FwYWJpbGl0eSBvZiBy dW5uaW5nIG5hdGl2ZSBncmFwaGljcyBkcml2ZXIgaW5zaWRlIGEgVk0sIHdpdGhvdXQgaHlwZXJ2 aXNvciBpbnRlcnZlbnRpb24gaW4gcGVyZm9ybWFuY2UgY3JpdGljYWwgcGF0aHMsIGFjaGlldmVz IGEgZ29vZCBiYWxhbmNlIGFtb25nIHBlcmZvcm1hbmNlLCBmZWF0dXJlLCBhbmQgc2hhcmluZyBj YXBhYmlsaXR5LiBUaG91Z2ggd2Ugb25seSBzdXBwb3J0IFhlbiBvbiBJbnRlbCBQcm9jZXNzb3Ig R3JhcGhpY3Mgc28gZmFyLCB0aGUgY29yZSBsb2dpYyBjYW4gYmUgZWFzaWx5IHBvcnRlZCB0byBv dGhlciBoeXBlcnZpc29ycy4KPj4+Pgo+Pj4+IFRoZSBuZXdzIG9mIHRoaXMgdXBkYXRlOgo+Pj4+ Cj4+Pj4gCS0gUHJvamVjdCBjb2RlIG5hbWUgaXMgIlhlbkdUIiwgbm93IG9mZmljaWFsIG5hbWUg aXMgSW50ZWwgR3JhcGhpY3MgVmlydHVhbGl6YXRpb24gVGVjaG5vbG9neSAoSW50ZWwgR1ZULWcp Cj4+Pj4gCS0gQ3VycmVudGx5IEludGVsIEdWVC1nIHN1cHBvcnRzIEludGVsIFByb2Nlc3NvciBH cmFwaGljcyBidWlsdCBpbnRvIDR0aCBnZW5lcmF0aW9uIEludGVsIENvcmUgcHJvY2Vzc29ycyAt IEhhc3dlbGwgcGxhdGZvcm0KPj4+PiAJLSBNb3ZpbmcgZm9yd2FyZCwgWGVuR1Qgd2lsbCBjaGFu Z2UgdG8gcXVhcnRlcmx5IHJlbGVhc2UgY2FkZW5jZS4gTmV4dCB1cGRhdGUgd2lsbCBiZSBhcm91 bmQgZWFybHkgT2N0b2JlciwgMjAxNC4KPj4+Pgo+Pj4+IFRoaXMgdXBkYXRlIGNvbnNpc3RzIG9m Ogo+Pj4+Cj4+Pj4gCS0gU3RhYmlsaXR5IGZpeGVzLCBlLmcuIHN0YWJsZSBEUCBzdXBwb3J0Cj4+ Pj4gCS0gRGlzcGxheSBlbmhhbmNlbWVudHMsIGUuZy4gdmlydHVhbCBtb25pdG9yIHN1cHBvcnQu IFVzZXJzIGNhbiBkZWZpbmUgYSB2aXJ0dWFsIG1vbml0b3IgdHlwZSB3aXRoIGN1c3RvbWl6ZWQg RURJRCBmb3IgdmlydHVhbCBtYWNoaW5lcywgbm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHBo eXNpY2FsIG1vbml0b3JzLgo+Pj4+IAktIEltcHJvdmVkIHN1cHBvcnQgZm9yIEdQVSByZWNvdmVy eQo+Pj4+IAktIEV4cGVyaW1lbnRhbCBXaW5kb3dzIEhWTSBzdXBwb3J0LiBUbyBkb3dubG9hZCB0 aGUgZXhwZXJpbWVudGFsIHZlcnNpb24sIHNlZSBzZXR1cCBndWlkZSBmb3IgZGV0YWlscwo+Pj4+ IAktIEV4cGVyaW1lbnRhbCBIYXJkd2FyZSBNZWRpYSBBY2NlbGVyYXRpb24gZm9yIGRlY29kaW5n Lgo+Pj4+Cj4+Pj4KPj4+PiBQbGVhc2UgcmVmZXIgdG8gdGhlIG5ldyBzZXR1cCBndWlkZSwgd2hp Y2ggcHJvdmlkZXMgc3RlcC10by1zdGVwIGRldGFpbHMgYWJvdXQgYnVpbGRpbmcvY29uZmlndXJp bmcvcnVubmluZyBJbnRlbCBHVlQtZzoKPj4+Pgo+Pj4+IAlodHRwczovL2dpdGh1Yi5jb20vMDFv cmcvWGVuR1QtUHJldmlldy1rZXJuZWwvYmxvYi9tYXN0ZXIvWGVuR1RfU2V0dXBfR3VpZGUucGRm Cj4+Pj4KPj4+Pgo+Pj4+IFRoZSBuZXcgc291cmNlIGNvZGVzIGFyZSBhdmFpbGFibGUgYXQgdGhl IHVwZGF0ZWQgZ2l0aHViIHJlcG9zOgo+Pj4+Cj4+Pj4gCUxpbnV4OiBodHRwczovL2dpdGh1Yi5j b20vMDFvcmcvWGVuR1QtUHJldmlldy1rZXJuZWwuZ2l0Cj4+Pj4gCVhlbjogaHR0cHM6Ly9naXRo dWIuY29tLzAxb3JnL1hlbkdULVByZXZpZXcteGVuLmdpdAo+Pj4+IAlRZW11OiBodHRwczovL2dp dGh1Yi5jb20vMDFvcmcvWGVuR1QtUHJldmlldy1xZW11LmdpdAo+Pj4+Cj4+Pj4KPj4+PiBNb3Jl IGluZm9ybWF0aW9uIGFib3V0IEludGVsIEdWVC1nIGJhY2tncm91bmQsIGFyY2hpdGVjdHVyZSwg ZXRjIGNhbiBiZSBmb3VuZCBhdDoKPj4+Pgo+Pj4+IAlodHRwczovL3d3dy51c2VuaXgub3JnL2Nv bmZlcmVuY2UvYXRjMTQvdGVjaG5pY2FsLXNlc3Npb25zL3ByZXNlbnRhdGlvbi90aWFuCj4+Pj4g CWh0dHA6Ly9ldmVudHMubGludXhmb3VuZGF0aW9uLm9yZy9zaXRlcy9ldmVudHMvZmlsZXMvc2xp ZGVzL1hlbkdULVhlbiUyMFN1bW1pdC12N18wLnBkZgo+Pj4+IAlodHRwczovLzAxLm9yZy94ZW4v YmxvZ3Mvc3JjbGFya3gvMjAxMy9ncmFwaGljcy12aXJ0dWFsaXphdGlvbi14ZW5ndAo+Pj4+Cj4+ Pj4gVGhlIHByZXZpb3VzIHVwZGF0ZSBjYW4gYmUgZm91bmQgaGVyZToKPj4+Pgo+Pj4+IAlodHRw Oi8vbGlzdHMueGVuLm9yZy9hcmNoaXZlcy9odG1sL3hlbi1kZXZlbC8yMDE0LTAyL21zZzAxODQ4 Lmh0bWwKPj4+Pgo+Pj4+IEFwcHJlY2lhdGUgeW91ciBjb21tZW50cyEKPj4+Pgo+Pj4+Cj4+Pj4K Pj4+Pgo+Pj4+IC0tCj4+Pj4gVGhhbmtzLAo+Pj4+IEppa2UKPj4+PgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=