From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boqun Feng Subject: Re: [RFC PATCH v2 00/17] RFC: SGX Virtualization design and draft patches Date: Mon, 25 Dec 2017 13:01:19 +0800 Message-ID: <20171225050119.GA748@winterfell.sh.intel.com> References: <20171204001528.1342-1-boqun.feng@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20171204001528.1342-1-boqun.feng@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Kevin Tian , Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , kai.huang@linux.intel.com, Jan Beulich List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBEZWMgMDQsIDIwMTcgYXQgMDg6MTU6MTFBTSArMDgwMCwgQm9xdW4gRmVuZyB3cm90 ZToKPiBIaSBhbGwsCj4gCj4gVGhpcyBpcyB0aGUgdjIgb2YgUkZDIFNHWCBWaXJ0dWFsaXphdGlv biBkZXNpZ24gYW5kIGRyYWZ0IHBhdGNoZXMsIHlvdQoKUGluZyA7LSkKCkFueSBjb21tZW50cz8K ClJlZ2FyZHMsCkJvcXVuCgo+IGNhbiBmaW5kIHYxIGF0Ogo+IAo+ICAgICBodHRwczovL2xpc3Rz Lmd0Lm5ldC94ZW4vZGV2ZWwvNDgzNDA0Cj4gCj4gSW4gdGhlIG5ldyB2ZXJzaW9uLCBJIGZpeCBh IGZldyB0aGluZ3MgYWNjb3JkaW5nIHRvIHRoZSBmZWVkYmFja3MgZm9yCj4gcHJldmlvdXMgdmVy c2lvbihtb3N0bHkgYXJlIGNsZWFudXBzIGFuZCBjb2RlIG1vdmVtZW50KS4KPiAKPiBCZXNpZGVz LCBLYWkgYW5kIEkgcmVkZXNpZ24gdGhlIFNHWCBNU1JzIHNldHRpbmcgdXAgcGFydCBhbmQgaW50 cm9kdWNlCj4gbmV3IFhMIHBhcmFtZXRlciAnbGVoYXNoJyBhbmQgJ2xld3InLgo+IAo+IEFub3Ro ZXIgYmlnIGNoYW5nZSBpcyB0aGF0IEkgbW9kaWZ5IHRoZSBFUEMgbWFuYWdlbWVudCB0byBmaXQg RVBDIHBhZ2VzCj4gaW4gJ3N0cnVjdCBwYWdlX2luZm8nLCBhbmQgaW4gcGF0Y2ggIzYgYW5kICM3 LCB1bnNjcnViYmFibGUgcGFnZXMsCj4gJ1BHQ19lcGMnLCAnTUVNRl9lcGMnIGFuZCAnWEVOWk9O RV9FUEMnIGFyZSBpbnRyb2R1Y2VkLCBzbyB0aGF0IEVQQwo+IG1hbmFnZW1lbnQgaXMgZnVsbHkg aW50ZWdyYXRlZCBpbnRvIGV4aXN0aW5nIG1lbW9yeSBtYW5hZ2VtZW50IG9mIHhlbi4KPiBUaGlz IG1pZ2h0IGJlIHRoZSBjb250cm92ZXJzaWFsIGJpdCwgc28gcGF0Y2ggNn44IGFyZSBzaW1wbHkg dG8gc2hvdyB0aGUKPiBpZGVhIGFuZCBkcml2ZSBkZWVwIGRpc2N1c3Npb24uCj4gCj4gRGV0YWls ZWQgY2hhbmdlcyBzaW5jZSB2MTogKG1vZGlmaWNhdGlvbnMgd2l0aCB0YWcgIltOZXddIiBpcyB0 b3RhbGx5Cj4gbmV3IGluIHRoaXMgc2VyaWVzLCByZXZpZXdzIGFuZCBjb21tZW50cyBhcmUgaGln aGx5IHdlbGNvbWUgZm9yIHRob3NlCj4gcGFydHMpCj4gCj4gKiAgIE1ha2UgU0dYIHJlbGF0ZWQg bW9zdGx5IGNvbW1vbiBmb3IgeDg2IGJ5OiAxKSBtb3Zpbmcgc2d4LltjaF0gdG8KPiAgICAgYXJj aC94ODYvIGFuZCBpbmNsdWRlL2FzbS14ODYvIGFuZCAyKSByZW5hbWluZyBFUEMgcmVsYXRlZCBm dW5jdGlvbnMKPiAgICAgd2l0aCBkb21haW5fKiBwcmVmaXguCj4gCj4gKiAgIFJlbmFtZSBpb3Jl bWFwX2NhY2hlKCkgd2l0aCBpb3JlbWFwX3diKCkgYW5kIG1ha2UgaXQgeDg2LXNwZWNpZmljIGFz Cj4gICAgIHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaC4KPiAKPiAqICAgUmVtb3ZlIHBlcmNwdSBz Z3hfY3B1ZGF0YSwgZHVyaW5nIGJvb3R1cCBzZWNvbmRhcnkgQ1BVcyBub3cgY2hlY2sKPiAgICAg d2hldGhlciB0aGV5IHJlYWQgZGlmZmVyZW50IHZhbHVlIHRoYW4gYm9vdCBDUFUsIGlmIHNvIFNH WCBpcwo+ICAgICBkaXNhYmxlZC4KPiAKPiAqICAgUmVtb3ZlIGRvbWFpbl9oYXNfc2d4X3ssbGF1 bmNoX2NvbnRyb2x9LCBhbmQgbWFrZSBzdXJlIHdlIGNhbgo+ICAgICByZWx5IG9uIGRvbWFpbidz IGFyY2guY3B1aWQtPmZlYXQuc2d4e19sY30gZm9yIHNldHRpbmcgY2hlY2tzLgo+IAo+ICogICBD bGVhbnVwIHRoZSBjb2RlIGZvciBDUFVJRCBoYW5kbGluZyBhcyBzdWdnZXN0ZWQgYnkgQW5kcmV3 IENvb3Blci4KPiAKPiAqICAgQWRqdXN0IHRvIG1zcl9wb2xpY3kgZnJhbWV3b3JrIGZvciBTR1gg TVNScyBoYW5kbGluZywgYW5kIHJlbW92ZQo+ICAgICB1bm5lY2Vzc2FyeSBmaWVsZHMgbGlrZSAn cmVhZGFibGUnIGFuZCAnd3JpdGFibGUnCj4gCj4gKiAgIFVzZSAncGFnZV9pbmZvJyB0byBtYWlu dGFpbiBFUEMgcGFnZXMsIGFuZCBbTkVXXSBhZGQgYW4gZHJhZnQKPiAgICAgaW1wbGVtZW50YXRp b24gZm9yIGVtcGxveWluZyB4ZW5oZWFwIGZvciBFUEMgcGFnZSBtYW5hZ2VtZW50LiBQbGVhc2UK PiAgICAgc2VlIHBhdGNoIDZ+OAo+IAo+ICogICBbTmV3XSBNb2RpZnkgdGhlIFhMIHBhcmFtZXRl ciBmb3IgU0dYLCBwbGVhc2Ugc2VlIHNlY3Rpb24gMi4xLjEgaW4KPiAgICAgdGhlIHVwZGF0ZWQg ZGVzaWduIGRvYy4gCj4gCj4gKiAgIFtOZXddIFVzZSBfc2V0X3ZjcHVfbXNycyBoeXBlcmNhbGwg aW4gdGhlIHRvb2xzdGFjayB0byBzZXQgdGhlIFNHWAo+ICAgICByZWxhdGVkLiBQbGVhc2Ugc2Vl IHBhdGNoICMxNy4KPiAKPiAqICAgQUNQSSByZWxhdGVkIHRvb2wgY2hhbmdlcyBhcmUgdGVtcG9y YXJpbHkgZHJvcHBlZCBpbiB0aGlzIHBhdGNoc2V0LAo+ICAgICBhcyBJIG5lZWQgbW9yZSB0aW1l IHRvIHJlc29sdmUgdGhlIGNvbW1lbnRzIGFuZCBkbyByZWxhdGVkIHRlc3RzLgo+IAo+IEFuZCB0 aGUgdXBkYXRlIGRlc2lnbiBkb2MgaXMgYXMgZm9sbG93LCBhcyB0aGUgcHJldmlvdXMgdmVyc2lv biBpbiB0aGUKPiBkZXNpZ24gdGhlcmUgYXJlIHNvbWUgcGFydGljdWFsciBwb2ludHMgdGhhdCB3 ZSBkb24ndCBrbm93IHdoaWNoCj4gaW1wbGVtZW50YXRpb24gaXMgYmV0dGVyLiBGb3IgdGhvc2Ug YSBxdWVzdGlvbiBtYXJrICg/KSBpcyBhZGRlZCBhdCB0aGUKPiByaWdodCBvZiB0aGUgbWVudS4g QW5kIGZvciBTR1ggbGl2ZSBtaWdyYXRpb24sIHRoYW5rcyB0byBXZWkgTGl1IGZvcgo+IHByb3Zp ZGluZyBjb21tZW50cyB0aGF0IGl0J3MgbmljZSB0byBzdXBwb3J0IGlmIHdlIGNhbiBpbiBwcmV2 aW91cwo+IHZlcnNpb24gcmV2aWV3LCBidXQgd2UnZCBsaWtlIGhlYXIgbW9yZSBmcm9tIHlvdSBn dXlzIHNvIHdlIHN0aWxsIHB1dCBhCj4gcXVlc3Rpb24gbWFyayBmb3QgdGhpcyBpdGVtLiBZb3Vy IGNvbW1lbnRzIG9uIHRob3NlICJxdWVzdGlvbiBtYXJrICg/KSIKPiBwYXJ0cyAoYW5kIG90aGVy IGNvbW1lbnRzIGFzIHdlbGwsIG9mIGNvdXJzZSkgYXJlIGhpZ2hseSBhcHByZWNpYXRlZC4KPiAK PiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Cj4gMS4gU0dYIEludHJvZHVjdGlvbgo+ICAgICAxLjEgT3ZlcnZpZXcKPiAg ICAgICAgIDEuMS4xIEVuY2xhdmUKPiAgICAgICAgIDEuMS4yIEVQQyAoRW5jbGF2ZSBQYWFnZSBD YWNoZSkKPiAgICAgICAgIDEuMS4zIEVOQ0xTIGFuZCBFTkNMVQo+ICAgICAxLjIgRGlzY292ZXJp bmcgU0dYIENhcGFiaWxpdHkKPiAgICAgICAgIDEuMi4xIEVudW1lcmF0ZSBTR1ggdmlhIENQVUlE Cj4gICAgICAgICAxLjIuMiBJbnRlbCBTR1ggT3B0LWluIENvbmZpZ3VyYXRpb24KPiAgICAgMS4z IEVuY2xhdmUgTGlmZSBDeWNsZQo+ICAgICAgICAgMS4zLjEgQ29uc3RydWN0aW5nICYgRGVzdHJv eWluZyBFbmNsYXZlCj4gICAgICAgICAxLjMuMiBFbmNsYXZlIEVudHJ5IGFuZCBFeGl0Cj4gICAg ICAgICAgICAgMS4zLjIuMSBTeW5jaG9ub3VzIEVudHJ5IGFuZCBFeGl0Cj4gICAgICAgICAgICAg MS4zLjIuMiBBc3luY2hvdW5vdXMgRW5jbGF2ZSBFeGl0Cj4gICAgICAgICAxLjMuMyBFUEMgRXZp Y3Rpb24gYW5kIFJlbG9hZAo+ICAgICAxLjQgU0dYIExhdW5jaCBDb250cm9sCj4gICAgIDEuNSBT R1ggSW50ZXJhY3Rpb24gd2l0aCBJQTMyIGFuZCBJQTY0IEFyY2hpdGVjdHVyZQo+IDIuIFNHWCBW aXJ0dWFsaXphdGlvbiBEZXNpZ24KPiAgICAgMi4xIEhpZ2ggTGV2ZWwgVG9vbHN0YWNrIENoYW5n ZXMKPiAgICAgICAgIDIuMS4xIE5ldyAnc2d4JyBYTCBjb25maWd1cmUgZmlsZSBwYXJhbWV0ZXIK PiAgICAgICAgIDIuMS4yIE5ldyBYTCBjb21tYW5kcyAoPykKPiAgICAgICAgIDIuMS4zIE5vdGlm eSBkb21haW4ncyB2aXJ0dWFsIEVQQyBiYXNlIGFuZCBzaXplIHRvIFhlbgo+ICAgICAyLjIgSGln aCBMZXZlbCBIeXBlcnZpc29yIENoYW5nZXMKPiAgICAgICAgIDIuMi4xIEVQQyBNYW5hZ2VtZW50 Cj4gICAgICAgICAyLjIuMiBFUEMgVmlydHVhbGl6YXRpb24KPiAgICAgICAgIDIuMi4zIFBvcHVs YXRlIEVQQyBmb3IgR3Vlc3QKPiAgICAgICAgIDIuMi40IExhdW5jaCBDb250cm9sIFN1cHBvcnQK PiAgICAgICAgIDIuMi41IENQVUlEIEVtdWxhdGlvbgo+ICAgICAgICAgMi4yLjYgRVBUIFZpb2xh dGlvbiAmIEVOQ0xTIFRyYXBwaW5nIEhhbmRsaW5nCj4gICAgICAgICAyLjIuNyBHdWVzdCBTdXNw ZW5kICYgUmVzdW1lCj4gICAgICAgICAyLjIuOCBEZXN0cm95aW5nIERvbWFpbgo+ICAgICAyLjMg QWRkaXRpb25hbCBQb2ludDogTGl2ZSBNaWdyYXRpb24sIFNuYXBzaG90IFN1cHBvcnQgKD8pCj4g My4gUmVmZXJlbmNlCj4gCj4gMS4gU0dYIEludHJvZHVjdGlvbgo+IAo+IDEuMSBPdmVydmlldwo+ IAo+IDEuMS4xIEVuY2xhdmUKPiAKPiBJbnRlbCBTb2Z0d2FyZSBHdWFyZCBFeHRlbnNpb25zIChT R1gpIGlzIGEgc2V0IG9mIGluc3RydWN0aW9ucyBhbmQgbWVjaGFuaXNtcwo+IGZvciBtZW1vcnkg YWNjZXNzZXMgaW4gb3JkZXIgdG8gcHJvdmlkZSBzZWN1cml0eSBhY2Nlc3NlcyBmb3Igc2Vuc2l0 aXZlCj4gYXBwbGljYXRpb25zIGFuZCBkYXRhLiBTR1ggYWxsb3dzIGFuIGFwcGxpY2F0aW9uIHRv IHVzZSBpdCdzIHBhcml0aWN1bGFyIGFkZHJlc3MKPiBzcGFjZSBhcyBhbiAqZW5jbGF2ZSosIHdo aWNoIGlzIGEgcHJvdGVjdGVkIGFyZWEgcHJvdmlkZXMgY29uZmlkZW50aWFsaXR5IGFuZAo+IGlu dGVncml0eSBldmVuIGluIHRoZSBwcmVzZW5jZSBvZiBwcml2aWxlZ2VkIG1hbHdhcmUuIEFjY2Vz c2VzIHRvIHRoZSBlbmNsYXZlCj4gbWVtb3J5IGFyZWEgZnJvbSBhbnkgc29mdHdhcmUgbm90IHJl c2lkZW50IGluIHRoZSBlbmNsYXZlIGFyZSBwcmV2ZW50ZWQsCj4gaW5jbHVkaW5nIHRob3NlIGZy b20gcHJpdmlsZWdlZCBzb2Z0d2FyZS4gQmVsb3cgZGlhZ3JhbSBpbGx1c3RyYXRlcyB0aGUgcHJl c2VuY2UKPiBvZiBFbmNsYXZlIGluIGFwcGxpY2F0aW9uLgo+IAo+ICAgICAgICAgfC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tfAo+ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAo+ICAg ICAgICAgfCAgIHwtLS0tLS0tLS0tLS0tLS18ICAgfAo+ICAgICAgICAgfCAgIHwgICBPUyBrZXJu ZWwgICB8ICAgfCAgICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cj4gICAgICAgICB8ICAg fC0tLS0tLS0tLS0tLS0tLXwgICB8ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwKPiAg ICAgICAgIHwgICB8ICAgICAgICAgICAgICAgfCAgIHwgICAgICAgfCAgIHwtLS0tLS0tLS0tLS0t LS18ICAgfAo+ICAgICAgICAgfCAgIHwtLS0tLS0tLS0tLS0tLS18ICAgfCAgICAgICB8ICAgfCBF bnRyeSB0YWJsZSAgIHwgICB8Cj4gICAgICAgICB8ICAgfCAgIEVuY2xhdmUgICAgIHwtLS18LS0t LS0+IHwgICB8LS0tLS0tLS0tLS0tLS0tfCAgIHwKPiAgICAgICAgIHwgICB8LS0tLS0tLS0tLS0t LS0tfCAgIHwgICAgICAgfCAgIHwgRW5jbGF2ZSBzdGFjayB8ICAgfAo+ICAgICAgICAgfCAgIHwg ICBBcHAgY29kZSAgICB8ICAgfCAgICAgICB8ICAgfC0tLS0tLS0tLS0tLS0tLXwgICB8Cj4gICAg ICAgICB8ICAgfC0tLS0tLS0tLS0tLS0tLXwgICB8ICAgICAgIHwgICB8IEVuY2xhdmUgaGVhcCAg fCAgIHwKPiAgICAgICAgIHwgICB8ICAgRW5jbGF2ZSAgICAgfCAgIHwgICAgICAgfCAgIHwtLS0t LS0tLS0tLS0tLS18ICAgfAo+ICAgICAgICAgfCAgIHwtLS0tLS0tLS0tLS0tLS18ICAgfCAgICAg ICB8ICAgfCBFbmNsYXZlIGNvZGUgIHwgICB8Cj4gICAgICAgICB8ICAgfCAgIEFwcCBjb2RlICAg IHwgICB8ICAgICAgIHwgICB8LS0tLS0tLS0tLS0tLS0tfCAgIHwKPiAgICAgICAgIHwgICB8LS0t LS0tLS0tLS0tLS0tfCAgIHwgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAo+ICAgICAg ICAgfCAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0t LS18Cj4gICAgICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cj4gCj4gU0dYIHN1cHBvcnRz IFNHWDEgYW5kIFNHWDIgZXh0ZW5zaW9ucy4gU0dYMSBwcm92aWRlcyBiYXNpYyBlbmNsYXZlIHN1 cHBvcnQsCj4gYW5kIFNHWDIgYWxsb3dzIGFkZGl0aW9uYWwgZmxleGliaWxpdHkgaW4gcnVudGlt ZSBtYW5hZ2VtZW50IG9mIGVuY2xhdmUKPiByZXNvdXJjZXMgYW5kIHRocmVhZCBleGVjdXRpb24g d2l0aGluIGFuIGVuY2xhdmUuCj4gCj4gMS4xLjIgRVBDIChFbmNsYXZlIFBhZ2UgQ2FjaGUpCj4g Cj4gSnVzdCBsaWtlIG5vcm1hbCBhcHBsaWNhdGlvbiBtZW1vcnkgbWFuYWdlbWVudCwgZW5jbGF2 ZSBtZW1vcnkgbWFuYWdlbWVudCBjYW4gYmUKPiBkZXZpZGVkIGludG8gdHdvIHBhcnRzOiBhZGRy ZXNzIHNwYWNlIGFsbG9jYXRpb24gYW5kIG1lbW9yeSBjb21taXRtZW50LiBBZGRyZXNzCj4gc3Bh Y2UgYWxsb2NhdGlvbiBpcyBhbGxvY2F0aW5nIHBhcnRpY3VsYXIgcmFuZ2Ugb2YgbGluZWFyIGFk ZHJlc3Mgc3BhY2UgZm9yCj4gZW5jbGF2ZS4gTWVtb3J5IGNvbW1pdG1lbnQgaXMgYXNzaWduaW5n IGFjdHVhbCByZXNvdXJjZSBmb3IgdGhlIGVuY2xhdmUuCj4gCj4gRW5jbGF2ZSBQYWdlIENhY2hl IChFUEMpIGlzIHRoZSBwaHlzaWNhbCByZXNvdXJjZSB1c2VkIHRvIGNvbW1pdCB0byBlbmNsYXZl Lgo+IEVQQyBpcyBkaXZpZGVkIHRvIDRLIHBhZ2VzLiBBbiBFUEMgcGFnZSBpcyA0SyBpbiBzaXpl IGFuZCBhbHdheXMgYWxpZ25lZCB0byA0Swo+IGJvdW5kYXJ5LiBIYXJkd2FyZSBwZXJmb3JtcyBh ZGRpdGlvbmFsIGFjY2VzcyBjb250cm9sIGNoZWNrcyB0byByZXN0cmljdCBhY2Nlc3MKPiB0byB0 aGUgRVBDIHBhZ2UuIFRoZSBFbmNsYXZlIFBhZ2UgQ2FjaGUgTWFwIChFUENNKSBpcyBhIHNlY3Vy ZSBzdHJ1Y3R1cmUgd2hpY2gKPiBob2xkcyBvbmUgZW50cnkgZm9yIGVhY2ggRVBDIHBhZ2UsIGFu ZCBpcyB1c2VkIGJ5IGhhcmR3YXJlIHRvIHRyYWNrIHRoZSBzdGF0dXMKPiBvZiBlYWNoIEVQQyBw YWdlIChpbnZpc2liZSB0byBzb2Z0d2FyZSkuIFR5cGljYWxseSBFUEMgYW5kIEVQQ00gYXJlIHJl c2VydmVkCj4gYnkgQklPUyBhcyBQcm9jZXNzb3IgUmVzZXJ2ZWQgTWVtb3J5IGJ1dCB0aGUgYWN0 dWFsIGFtb3VudCwgc2l6ZSwgYW5kIGxheW91dAo+IG9mIEVQQyBhcmUgbW9kZWwtc3BlY2lmaWMs IGFuZCBkZXBlbmRlbnQgb24gQklPUyBzZXR0aW5ncy4gRVBDIGlzIGVudW1lcmF0ZWQKPiB2aWEg bmV3IFNHWCBDUFVJRCwgYW5kIGlzIHJlcG9ydGVkIGFzIHJlc2VydmVkIG1lbW9yeS4KPiAKPiBF UEMgcGFnZXMgY2FuIGVpdGhlciBiZSBpbnZhbGlkIG9yIHZhbGlkLiBUaGVyZSBhcmUgNCB2YWxp ZCBFUEMgdHlwZXMgaW4gU0dYMToKPiByZWd1bGFyIEVQQyBwYWdlLCBTR1ggRW5jbGF2ZSBDb250 cm9sIFN0cnVjdHVyZSAoU0VDUykgcGFnZSwgVGhyZWFkIENvbnRyb2wKPiBTdHJ1Y3R1cmUgKFRD UykgcGFnZSwgYW5kIFZlcnNpb24gQXJyYXkgKFZBKSBwYWdlLiBTR1gyIGFkZHMgVHJpbW1lZCBF UEMgcGFnZS4KPiBFYWNoIGVuY2xhdmUgaXMgYXNzb2NpYXRlZCB3aXRoIG9uZSBTRUNTIHBhZ2Uu IEVhY2ggdGhyZWFkIGluIGVuY2xhdmUgaXMKPiBhc3NvY2lhdGVkIHdpdGggb25lIFRDUyBwYWdl LiBWQSBwYWdlIGlzIHVzZWQgaW4gRVBDIHBhZ2UgZXZpY3Rpb24gYW5kIHJlbG9hZC4KPiBUcmlt bWVkIEVQQyBwYWdlIGlzIGludHJvZHVjZWQgaW4gU0dYMiB3aGVuIHBhcnRpY3VsYXIgNEsgcGFn ZSBpbiBlbmNsYXZlIGlzCj4gZ29pbmcgdG8gYmUgZnJlZWQgKHRyaW1tZWQpIGF0IHJ1bnRpbWUg YWZ0ZXIgZW5jbGF2ZSBpcyBpbml0aWFsaXplZC4KPiAKPiAxLjEuMyBFTkNMUyBhbmQgRU5DTFUK PiAKPiBUd28gbmV3IGluc3RydWN0aW9ucyBFTkNMUyBhbmQgRU5DTFUgYXJlIGludHJvZHVjZWQg dG8gbWFuYWdlIGVuY2xhdmUgYW5kIEVQQy4KPiBFTkNMUyBjYW4gb25seSBydW4gaW4gcmluZyAw LCB3aGlsZSBFTkNMVSBjYW4gb25seSBydW4gaW4gcmluZyAzLiBCb3RoIEVOQ0xTIGFuZAo+IEVO Q0xVIGhhdmUgbXVsdGlwbGUgbGVhZiBmdW5jdGlvbnMsIHdpdGggRUFYIGluZGljYXRpbmcgdGhl IHNwZWNpZmljIGxlYWYKPiBmdW5jdGlvbi4KPiAKPiBTR1gxIHN1cHBvcnRzIGJlbG93IEVOQ0xT IGFuZCBFTkNMVSBsZWF2ZXM6Cj4gCj4gICAgIEVOQ0xTOgo+ICAgICAtIEVDUkVBVEUsIEVBREQs IEVFWFRFTkQsIEVJTklULCBFUkVNT1ZFIChFbmNsYXZlIGJ1aWxkIGFuZCBkZXN0cm95KQo+ICAg ICAtIEVQQSwgRUJMT0NLLCBFVFJBQ0ssIEVXQiwgRUxEVS9FTERCIChFUEMgZXZpY3Rpb24gJiBy ZWxvYWQpCj4gCj4gICAgIEVOQ0xVOgo+ICAgICAtIEVFTlRFUiwgRUVYSVQsIEVSRVNVTUUgKEVu Y2xhdmUgZW50cnksIGV4aXQsIHJlLWVudGVyKQo+ICAgICAtIEVHRVRLRVksIEVSRVBPUlQgKFNH WCBrZXkgZGVyaXZhdGlvbiwgYXR0ZXN0YXRpb24pCj4gCj4gQWRkaXRpb25hbGx5LCBTR1gyIHN1 cHBvcnRzIGJlbG93IEVOQ0xTIGFuZCBFTkNMVSBsZWF2ZXMgZm9yIHJ1bnRpbWUgYWRkL3JlbW92 ZQo+IEVQQyBwYWdlIHRvIGVuY2xhdmUgYWZ0ZXIgZW5jbGF2ZSBpcyBpbml0aWFsaXplZCwgYWxv bmcgd2l0aCBwZXJtaXNzaW9uIGNoYW5nZS4KPiAKPiAgICAgRU5DTFM6Cj4gICAgIC0gRUFVRywg RU1PRFQsIEVNT0RQUgo+ICAgICAKPiAgICAgRU5DTFU6Cj4gICAgIC0gRUFDQ0VQVCwgRUFDQ0VQ VENPUFksIEVNT0RQRQo+IAo+IFZNTSBpcyBhYmxlIHRvIGludGVyZmVyZSB3aXRoIEVOQ0xTIHJ1 bm5pbmcgaW4gZ3Vlc3QgKHNlZSAxLjIueCBTR1ggaW50ZXJhY3Rpb24KPiB3aXRoIFZNWCkgYnV0 IGlzIHVuYWJsZSB0byBpbnRlcmZlcmUgd2l0aCBFTkNMVS4KPiAKPiAxLjIgRGlzY292ZXJpbmcg U0dYIENhcGFiaWxpdHkKPiAKPiAxLjIuMSBFbnVtZXJhdGUgU0dYIHZpYSBDUFVJRAo+IAo+IElm IENQVUlELjB4Ny4wOkVCWC5TR1ggKGJpdCAyKSBpcyAxLCB0aGVuIHByb2Nlc3NvciBzdXBwb3J0 cyBTR1ggYW5kIFNHWAo+IGNhcGFiaWxpdHkgYW5kIHJlc291cmNlIGNhbiBiZSBlbnVtZXJhdGVk IHZpYSBuZXcgU0dYIENQVUlEICgweDEyKS4KPiBDUFVJRC4weDEyLjB4MCByZXBvcnRzIFNHWCBj YXBhYmlsaXR5LCBzdWNoIGFzIHRoZSBwcmVzZW5jZSBvZiBTR1gxLCBTR1gyLAo+IGVuY2xhdmUn cyBtYXhpbXVtIHNpemUgZm9yIGJvdGggMzItYml0IGFuZCA2NC1iaXQgYXBwbGljYXRpb24uIENQ VUlELjB4MTIuMHgxCj4gcmVwb3J0cyB0aGUgYXZhaWxhYmlsaXR5IG9mIGJpdHMgdGhhdCBjYW4g YmUgc2V0IGZvciBTRUNTLkFUVFJJQlVURVMuCj4gQ1BVSUQuMHgxMi4weDIgcmVwb3J0cyB0aGUg RVBDIHJlc291cmNlJ3MgYmFzZSBhbmQgc2l6ZS4gUGxhdGZvcm0gbWF5IHN1cHBvcnQKPiBtdWx0 aXBsZSBFUEMgc2VjdGlvbnMsIGFuZCBDUFVJRC4weDEyLjB4MyBhbmQgZnVydGhlciBzdWItbGVh dmVzIGNhbiBiZSB1c2VkCj4gdG8gZGV0ZWN0IHRoZSBleGlzdGVuY2Ugb2YgbXVsdGlwbGUgRVBD IHNlY3Rpb25zICh1bnRpbCBDUFVJRCByZXBvcnRzIGludmFsaWQKPiBFUEMpLgo+IAo+IFJlZmVy IHRvIDM3LjcuMiBJbnRlbCBTR1ggUmVzb3VyY2UgRW51bWVyYXRpb24gTGVhdmVzIGZvciBmdWxs IGRlc2NyaXB0aW9uIG9mCj4gU0dYIENQVUlEIDB4MTIuCj4gCj4gMS4yLjIgSW50ZWwgU0dYIE9w dC1pbiBDb25maWd1cmF0aW9uCj4gCj4gT24gcHJvY2Vzc29ycyB0aGF0IHN1cHBvcnQgSW50ZWwg U0dYLCBJQTMyX0ZFQVRVUkVfQ09OVFJPTCBhbHNvIHByb3ZpZGVzIHRoZQo+IFNHWF9FTkFCTEUg Yml0IChiaXQgMTgpIHRvIHR1cm4gb24vb2ZmIFNHWC4gQmVmb3JlIHN5c3RlbSBzb2Z0d2FyZSBj YW4gZW5hYmxlCj4gYW5kIHVzZSBTR1gsIEJJT1MgaXMgcmVxdWlyZWQgdG8gc2V0IElBMzJfRkVB VFVSRV9DT05UUk9MLlNHWF9FTkFCTEUgPSAxIHRvCj4gb3B0LWluIFNHWC4KPiAKPiBTZXR0aW5n IFNHWF9FTkFCTEUgZm9sbG93cyB0aGUgcnVsZXMgb2YgSUEzMl9GRUFUVVJFX0NPTlRST0wuTE9D SyAoYml0IDApLgo+IFNvZnR3YXJlIGlzIGNvbnNpZGVyZWQgdG8gaGF2ZSBvcHRlZCBpbnRvIElu dGVsIFNHWCBpZiBhbmQgb25seSBpZgo+IElBMzJfRkVBVFVSRV9DT05UUk9MLlNHWF9FTkFCTEUg YW5kIElBMzJfRkVBVFVSRV9DT05UUk9MLkxPQ0sgYXJlIHNldCB0byAxLgo+IAo+IFRoZSBzZXR0 aW5nIG9mIElBMzJfRkVBVFVSRV9DT05UUk9MLlNHWF9FTkFCTEUgKGJpdCAxOCkgaXMgbm90IHJl ZmxlY3RlZCBieQo+IFNHWCBDUFVJRC4gRW5jbGF2ZSBpbnN0cnVjdGlvbnMgd2lsbCBiZWhhdmlv ciBkaWZmZXJlbnRseSBhY2NvcmRpbmcgdG8gdmFsdWUKPiBvZiBDUFVJRC4weDcuMHgwOkVCWC5T R1ggYW5kIHdoZXRoZXIgQklPUyBoYXMgb3B0ZWQtaW4gU0dYLgo+IAo+IFJlZmVyIHRvIDM3Ljcu MSBJbnRlbCBTR1ggT3B0LWluIENvbmZpZ3VyYXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCj4g Cj4gMS4zIEVuY2xhdmUgTGlmZSBDeWNsZQo+IAo+IDEuMy4xIENvbnN0cnVjdGluZyAmIERlc3Ry b3lpbmcgRW5jbGF2ZQo+IAo+IEVuY2xhdmUgaXMgY3JlYXRlZCB2aWEgRU5DTFNbRUNSRUFURV0g bGVhZiBieSBwcmV2aWxlZ2VkIHNvZnR3YXJlLiBCYXNpY2FsbHkKPiBFQ1JFQVRFIGNvbnZlcnRz IGFuIGludmFsaWQgRVBDIHBhZ2UgaW50byBTRUNTIHBhZ2UsIGFjY29yZGluZyB0byBhIHNvdXJj ZSBTRUNTCj4gc3RydWN0dXJlIHJlc2lkZXMgaW4gbm9ybWFsIG1lbW9yeS4gVGhlIHNvdXJjZSBT RUNTIGNvbnRhaW5zIGVuY2xhdmUncyBpbmZvCj4gc3VjaCBhcyBiYXNlIChsaW5lYXIpIGFkZHJl c3MsIHNpemUsIGVuY2xhdmUgYXR0cmlidXRlcywgZW5jbGF2ZSdzIG1lYXN1cmVtZW50LAo+IGV0 Yy4KPiAKPiBBZnRlciBFQ1JFQVRFLCBmb3IgZWFjaCA0SyBsaW5lYXIgYWRkcmVzcyBzcGFjZSBw YWdlLCBwcml2aWxlZGdlZCBzb2Z0d2FyZSB1c2VzCj4gRUFERCBhbmQgRUVYVEVORCB0byBhZGQg b25lIEVQQyBwYWdlIHRvIGl0LiBFbmNsYXZlIGNvZGUvZGF0YSAocmVzaWRlcyBpbiBub3JtYWwK PiBtZW1vcnkpIGlzIGxvYWRlZCB0byBlbmNsYXZlIGR1cmluZyBFQUREIGZvciBlbmNsYXZlJ3Mg ZWFjaCA0SyBwYWdlLiBBZnRlciBhbGwKPiBFUEMgcGFnZXMgYXJlIGFkZGVkIHRvIGVuY2xhdmUs IHByaXZpbGVkZ2VkIHNvZnR3YXJlIGNhbGxzIEVJTklUIHRvIGluaXRpYWxpemUKPiB0aGUgZW5j bGF2ZSwgYW5kIHRoZW4gZW5jbGF2ZSBpcyByZWFkeSB0byBydW4uCj4gCj4gRHVyaW5nIGVuY2xh dmUgaXMgY29uc3RydWN0ZWQsIGVuY2xhdmUgbWVhc3VyZW1lbnQsIHdoaWNoIGlzIGEgU0hBMjU2 IGhhc2gKPiB2YWx1ZSwgaXMgYWxzbyBidWlsdCBhY2NvcmRpbmcgdG8gZW5jbGF2ZSdzIHNpemUs IGNvZGUvZGF0YSBpdHNlbGYgYW5kIGl0cwo+IGxvY2F0aW9uIGluIGVuY2xhdmUsIGV0Yy4gVGhl IG1lYXN1cmVtZW50IGNhbiBiZSB1c2VkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoZQo+IGVuY2xh dmUuIFNJR1NUUlVDVCBpbiBFSU5JVCBsZWFmIGFsc28gY29udGFpbnMgdGhlIG1lYXN1cmVtZW50 IHNwZWNpZmllZCBieQo+IHVudHJ1c3RlZCBzb2Z0d2FyZSwgdmlhIE1SRU5DTEFWRS4gRUlOSVQg d2lsbCBjaGVjayB0aGUgdHdvIG1lYXN1cmVtZW50cyBhbmQKPiB3aWxsIG9ubHkgc3VjY2VlZCB3 aGVuIHRoZSB0d28gbWF0Y2hlcy4KPiAKPiBFbmNsYXZlIGlzIGRlc3Ryb3llZCBieSBydW5uaW5n IEVSRU1PVkUgZm9yIGFsbCBFbmNsYXZlJ3MgRVBDIHBhZ2UsIGFuZCB0aGVuCj4gZm9yIGVuY2xh dmUncyBTRUNTLiBFUkVNT1ZFIHdpbGwgcmVwb3J0IFNHWF9DSElMRF9QUkVTRU5UIGVycm9yIGlm IGl0IGlzIGNhbGxlZAo+IGZvciBTRUNTIHdoZW4gdGhlcmUncyBzdGlsbCByZWd1bGFyIEVQQyBw YWdlcyB0aGF0IGhhdmVuJ3QgYmVlbiByZW1vdmVkIGZyb20KPiBlbmNsYXZlLgo+IAo+IFBsZWFz ZSByZWZlciB0byBTRE0gY2hhcHRlciAzOS4xIENvbnN0cnVjdGluZyBhbiBFbmNsYXZlIGZvciBt b3JlIGluZm9tYXRpb24uCj4gCj4gMS4zLjIgRW5jbGF2ZSBFbnRyeSBhbmQgRXhpdAo+IAo+IDEu My4yLjEgU3luY2hvbm91cyBFbnRyeSBhbmQgRXhpdAo+IAo+IEFmdGVyIGVuY2xhdmUgaXMgY29u c3RydWN0ZWQsIG5vbi1wcml2aWxlZGdlZCBzb2Z0d2FyZSB1c2UgRU5DTFVbRUVOVEVSXSB0bwo+ IGVudGVyIGVuY2xhdmUgdG8gcnVuLiBXaGlsZSBwcm9jZXNzIHJ1bnMgaW4gZW5jbGF2ZSwgbm9u LXByaXZpbGVkZ2VkIHNvZnR3YXJlCj4gY2FuIHVzZSBFTkNMVVtFRVhJVF0gdG8gZXhpdCBmcm9t IGVuY2xhdmUgYW5kIHJldHVybiB0byBub3JtYWwgbW9kZS4KPiAKPiAxLjMuMi4yIEFzeW5jaG91 bm91cyBFbmNsYXZlIEV4aXQKPiAKPiBBc3luY2hyb25vdXMgYW5kIHN5bmNocm9ub3VzIGV2ZW50 cywgc3VjaCBhcyBleGNlcHRpb25zLCBpbnRlcnJ1cHRzLCB0cmFwcywKPiBTTUlzLCBhbmQgVk0g ZXhpdHMgbWF5IG9jY3VyIHdoaWxlIGV4ZWN1dGluZyBpbnNpZGUgYW4gZW5jbGF2ZS4gVGhlc2Ug ZXZlbnRzCj4gYXJlIHJlZmVycmVkIHRvIGFzIEVuY2xhdmUgRXhpdGluZyBFdmVudHMgKEVFRSku IFVwb24gYW4gRUVFLCB0aGUgcHJvY2Vzc29yCj4gc3RhdGUgaXMgc2VjdXJlbHkgc2F2ZWQgaW5z aWRlIHRoZSBlbmNsYXZlIGFuZCB0aGVuIHJlcGxhY2VkIGJ5IGEgc3ludGhldGljCj4gc3RhdGUg dG8gcHJldmVudCBsZWFrYWdlIG9mIHNlY3JldHMuIFRoZSBwcm9jZXNzIG9mIHNlY3VyZWx5IHNh dmluZyBzdGF0ZSBhbmQKPiBlc3RhYmxpc2hpbmcgdGhlIHN5bnRoZXRpYyBzdGF0ZSBpcyBjYWxs ZWQgYW4gQXN5bmNocm9ub3VzIEVuY2xhdmUgRXhpdCAoQUVYKS4KPiAKPiBBZnRlciBBRVgsIG5v bi1wcml2aWxlZGdlZCBzb2Z0d2FyZSB1c2VzIEVOQ0xVW0VSRVNVTUVdIHRvIHJlLWVudGVyIGVu Y2xhdmUuCj4gVGhlIFNHWCB1c2Vyc3BhY2Ugc29mdHdhcmUgbWFpbnRhaW5zIGEgc21hbGwgcGll Y2Ugb2YgY29kZSAocmVzaWRlcyBpbiBub3JtYWwKPiBtZW1vcnkpIHdoaWNoIGJhc2ljYWxseSBj YWxscyBFUkVTVU1FIHRvIHJlLWVudGVyIGVuY2xhdmUuIFRoZSBhZGRyZXNzIG9mIHRoaXMKPiBw aWVjZSBvZiBjb2RlIGlzIGNhbGxlZCBBc3luY2hyb25vdXMgRXhpdCBQb2ludGVyIChBRVApLiBB RVAgaXMgc3BlY2lmaWVkIGFzCj4gcGFyYW1ldGVyIGluIEVFTlRFUiBhbmQgd2lsbCBiZSBrZXB0 IGludGVybmFsbHkgaW4gZW5jbGF2ZS4gVXBvbiBBRVgsIEFFUCB3aWxsCj4gYmUgcHVzaGVkIHRv IHN0YWNrIGFuZCB1cG9uIHJldHVybmluZyBmcm9tIEVFRSBoYW5kbGluZywgc3VjaCBhcyBJUkVU LCBBRVAgd2lsbAo+IGJlIGxvYWRlZCB0byBSSVAgYW5kIEVSRVNVTUUgd2lsbCBiZSBjYWxsZWQg c3Vic2VxdWVudGx5IHRvIHJlLWVudGVyIGVuY2xhdmUuCj4gCj4gRHVyaW5nIEFFWCB0aGUgcHJv Y2Vzc29yIHdpbGwgZG8gY29udGV4dCBzYXZpbmcgYW5kIHJlc3RvcmUgYXV0b21hdGljYWxseQo+ IHRoZXJlZm9yZSBubyBjaGFuZ2UgdG8gaW50ZXJydXB0IGhhbmRsaW5nIG9mIE9TIGtlcm5lbCBh bmQgVk1NIGlzIHJlcXVpcmVkLiBJdAo+IGlzIFNHWCB1c2Vyc3BhY2Ugc29mdHdhcmUncyByZXNw b25zaWJpbGl0eSB0byBzZXR1cCBBRVAgY29ycmVjdGx5Lgo+IAo+IFBsZWFzZSByZWZlciB0byBT RE0gY2hhcHRlciAzOS4yIEVuY2xhdmUgRW50cnkgYW5kIEV4aXQgZm9yIG1vcmUgaW5mb21hdGlv bi4KPiAKPiAxLjMuMyBFUEMgRXZpY3Rpb24gYW5kIFJlbG9hZAo+IAo+IFNHWCBhbHNvIGFsbG93 cyBwcml2aWxlZGdlZCBzb2Z0d2FyZSB0byBldmljdCBhbnkgRVBDIHBhZ2VzIHRoYXQgYXJlIHVz ZWQgYnkKPiBlbmNsYXZlLiBUaGUgaWRlYSBpcyB0aGUgc2FtZSBhcyBub3JtYWwgbWVtb3J5IHN3 YXBwaW5nLiBCZWxvdyBpcyB0aGUgZGV0YWlsCj4gaW5mbyBvZiBob3cgdG8gZXZpY3QgRVBDIHBh Z2VzLgo+IAo+IEJlbG93IGlzIHRoZSBzZXF1ZW5jZSB0byBldmljdCByZWd1bGFyIEVQQyBwYWdl Ogo+IAo+IAkxKSBTZWxlY3Qgb25lIG9yIG11bHRpcGxlIHJlZ3VsYXIgRVBDIHBhZ2VzIGZyb20g b25lIGVuY2xhdmUKPiAJMikgUmVtb3ZlIEVQVC9QVCBtYXBwaW5nIGZvciBzZWxlY3RlZCBFUEMg cGFnZXMKPiAJMykgU2VuZCBJUElzIHRvIHJlbW90ZSBDUFVzIHRvIGZsdXNoIFRMQiBvZiBzZWxl Y3RlZCBFUEMgcGFnZXMKPiAJNCkgRUJMT0NLIG9uIHNlbGVjdGVkIEVQQyBwYWdlcwo+IAk1KSBF VFJBQ0sgb24gZW5jbGF2ZSdzIFNFQ1MgcGFnZQo+IAk2KSBhbGxvY2F0ZSBvbmUgYXZhaWxhYmxl IHNsb3QgKDgtYnl0ZSkgaW4gVkEgcGFnZQo+IAk3KSBFV0Igb24gc2VsZWN0ZWQgRVBDIHBhZ2Vz Cj4gCj4gV2l0aCBFV0IgdGFraW5nOgo+IAo+IAktIFZBIHNsb3QsIHRvIHJlc3RvcmUgZXZpY3Rp b24gdmVyc2lvbiBpbmZvLgo+IAktIG9uZSBub3JtYWwgNEsgcGFnZSBpbiBtZW1vcnksIHRvIHN0 b3JlIGVuY3J5cHRlZCBjb250ZW50IG9mIEVQQyBwYWdlLgo+IAktIG9uZSBzdHJ1Y3QgUENNRCBp biBtZW1vcnksIHRvIHN0b3JlIG1ldGEgZGF0YS4KPiAKPiAgICAgKFZBIHNsb3QgaXMgYSA4LWJ5 dGUgc2xvdCBpbiBWQSBwYWdlLCB3aGljaCBpcyBhIHBhcnRpY3VhbHIgRVBDIHBhZ2UuKQo+IAo+ IEFuZCBiZWxvdyBpcyB0aGUgc2VxdWVuY2UgdG8gZXZpY3QgYW4gU0VDUyBwYWdlIG9yIFZBIHBh Z2U6Cj4gCj4gCTEpIGxvY2F0ZSBTRUNTIChvciBWQSkgcGFnZQo+IAkyKSByZW1vdmUgRVBUL1BU IG1hcHBpbmcgZm9yIFNFQ1MgKG9yIFZBKSBwYWdlCj4gCTMpIFNlbmQgSVBJcyB0byByZW1vdGUg Q1BVcwo+IAk2KSBhbGxvY2F0ZSBvbmUgYXZhaWxhYmxlIHNsb3QgKDgtYnl0ZSkgaW4gVkEgcGFn ZQo+IAk0KSBFV0Igb24gU0VDUyAob3IpIHBhZ2UKPiAKPiBBbmQgZm9yIGV2aWN0aW5nIFNFQ1Mg cGFnZSwgYWxsIHJlZ3VsYXIgRVBDIHBhZ2VzIHRoYXQgYmVsb25ncyB0byB0aGF0IFNFQ1MKPiBt dXN0IGJlIGV2aWN0ZWQgb3V0IHByaW9yLCBvdGhlcndpc2UgRVdCIHJldHVybnMgU0dYX0NISUxE X1BSRVNFTlQgZXJyb3IuCj4gCj4gQW5kIHRvIHJlbG9hZCBhbiBFUEMgcGFnZToKPiAKPiAJMSkg RUxEVS9FTERCIG9uIEVQQyBwYWdlCj4gCTIpIHNldHVwIEVQVC9QVCBtYXBwaW5nCj4gCj4gV2l0 aCBFTERVL0VMREIgdGFraW5nOgo+IAo+IAktIGxvY2F0aW9uIG9mIFNFQ1MgcGFnZQo+IAktIGxp bmVhciBhZGRyZXNzIG9mIGVuY2xhdmUncyA0SyBwYWdlICh0aGF0IHdlIGFyZSBnb2luZyB0byBy ZWxvYWQgdG8pCj4gCS0gVkEgc2xvdCAodXNlZCBpbiBFV0IpCj4gCS0gNEsgcGFnZSBpbiBtZW1v cnkgKHVzZWQgaW4gRVdCKQo+IAktIHN0cnVjdCBQQ01EIGluIG1lbW9yeSAodXNlZCBpbiBFV0Ip Cj4gCj4gUGxlYXNlIHJlZmVyIHRvIFNETSBjaGFwdGVyIDM5LjUgRVBDIGFuZCBNYW5hZ2VtZW50 IG9mIEVQQyBwYWdlcyBmb3IgbW9yZQo+IGluZm9ybWF0aW9uLgo+IAo+IDEuNCBTR1ggTGF1bmNo IENvbnRyb2wKPiAKPiBTR1ggcmVxdWlyZXMgcnVubmluZyAiTGF1bmNoIEVuY2xhdmUiIChMRSkg YmVmb3JlIHJ1bm5pbmcgYW55IG90aGVyIGVuY2xhdmVzLgo+IFRoaXMgaXMgYmVjYXVzZSBMRSBp cyB0aGUgb25seSBlbmNsYXZlIHRoYXQgZG9lcyBub3QgcmVxdWlyZXMgRUlOSVRUT0tFTiBpbgo+ IEVJTklULiBSdW5uaW5nIGFueSBvdGhlciBlbmNsYXZlIHJlcXVpcmVzIGEgdmFsaWQgRUlOSVRU T0tFTiwgd2hpY2ggY29udGFpbnMKPiBNQUMgb2YgdGhlIChmaXJzdCAxOTIgYnl0ZXMpIEVJTklU VE9LRU4gY2FsY3VsYXRlZCBieSBFSU5JVFRPS0VOIGtleS4gRUlOSVQKPiB3aWxsIHZlcmlmeSB0 aGUgTUFDIHZpYSBpbnRlcm5hbGx5IGRlcml2aW5nIHRoZSBFSU5JVFRPS0VOIGtleSwgYW5kIG9u bHkgdGhlCj4gRUlOSVRUT0tFTiB0aGF0IGhhcyBtYXRjaGVkIE1BQyB3aWxsIGJlIGFjY2VwdGVk IGJ5IEVJTklULiBUaGUgRUlOSVRUT0tFTiBrZXkKPiBkZXJpdmF0aW9uIGRlcGVuZHMgb24gc29t ZSBpbmZvIGZyb20gTEUuIFRoZSB0eXBpY2FsIHByb2Nlc3MgaXMgTEUgZ2VuZXJhdGVzCj4gRUlO SVRUT0tFTiBmb3Igb3RoZXIgZW5jbGF2ZSBhY2NvcmRpbmcgdG8gTEUgaXRzZWxmIGFuZCB0aGUg dGFyZ2V0IGVuY2xhdmUsCj4gYW5kIGNhbGN1YWx0ZXMgdGhlIE1BQyBieSB1c2luZyBFTkNMVVtF R0VUS0VZXSB0byBnZXQgdGhlIEVJTklUVE9LRU4ga2V5LiBPbmx5Cj4gTEUgaXMgYWJsZSB0byBn ZXQgdGhlIEVJTklUVE9LRU4ga2V5Lgo+IAo+IFJ1bm5pbmcgTEUgcmVxdWllcyB0aGUgU0hBMjU2 IGhhc2ggb2YgTEUgc2lnbmVyJ3MgUlNBIHB1YmxpYyBrZXkgKFNIQTI1NiBvZgo+IHNpZ3N0cnVj dC0+bW9kdWx1cykgdG8gZXF1YWwgdG8gSUEzMl9TR1hMRVBVQktFWUhBU0hbMC0zXSBNU1JzICh0 aGUgNCBNU1JzCj4gdG9nZXRoZXIgbWFrZXMgdXAgMjU2LWJpdCBTSEEyNTYgaGFzaCB2YWx1ZSku Cj4gCj4gSWYgQ1BVSUQuMHg3LjB4MDpFQlguU0dYIGFuZCBDUFVJRC4weDcuMHgwOkVDWC5TR1hf TEFVTkNIX0NPTlRST0xbYml0IDMwXSBpcwo+IHNldCwgdGhlbiBJQTMyX0ZFQVRVUkVfQ09OVFJP TCBpcyBhdmFpbGFibGUsIGFuZCBJQTMyX0ZFQVRVUkVfQ09OVFJPTCBNU1IgaGFzCj4gU0dYX0xB VU5DSF9DT05UUk9MX0VOQUJMRSBiaXQgKGJpdCAxNykgYXZhaWxhYmxlLiAxLXNldHRpbmcgb2YK PiBTR1hfTEFVTkNIX0NPTlRST0xfRU5BQkxFIGJpdCBlbmFibGVzIHJ1bnRpbWUgY2hhbmdlIG9m IElBMzJfU0dYTEVQVUJLRVlIQVNIbgo+IGFmdGVyIElBMzJfRkVBVFVSRV9DT05UUk9MIGlzIGxv Y2tlZC4gT3RoZXJ3aXNlLCBJQTMyX1NHWExFUFVCS0VZSEFTSG4gYXJlCj4gcmVhZC1vbmx5IGFm dGVyIElBMzJfRkVBVFVSRV9DT05UUk9MIGlzIGxvY2tlZC4gQWZ0ZXIgcmVzZXQsCj4gSUEzMl9T R1hMRVBVQktFWUhBU0huIHdpbGwgYmUgc2V0IHRvIGhhc2ggb2YgSW50ZWwncyBkZWZhdWx0IGtl eS4gT24gc3lzdGVtCj4gdGhhdCBoYXMgb25seSBDUFVJRC4weDcuMHgwOkVCWC5TR1ggc2V0LCBJ QTMyX1NHWExFUFVCS0VZSEFTSG4gYXJlIG5vdAo+IGF2YWlsYWJsZS4gT24gc3VjaCBzeXN0ZW0g RUlOSVQgd2lsbCBhbHdheXMgdHJlYXQgSUEzMl9TR1hMRVBVQktFWUhBU0huIGFzCj4gSW50ZWwn cyBkZWZhdWx0IHZhbHVlIHRodXMgb25seSBJbnRlbCdzIExFIGlzIGFibGUgdG8gcnVuLgo+IAo+ IE9uIHN5c3RlbSB3aXRoIElBMzJfU0dYTEVQVUJLRVlIQVNIbiBhdmFpbGFibGUsIGl0IGlzIEJJ T1MncyBpbXBsZW1lbnRhdGlvbiB0bwo+IGRlY2lkZSB3aGV0aGVyIHRvIHByb3ZpZGUgY29uZmln dXJhdGlvbnMgdG8gdXNlciB0byBzZXQgSUEzMl9TR1hMRVBVQktFWUhBU0huCj4gaW4gKmxvY2tl ZCogKElBMzJfU0dYTEVQVUJLRVlIQVNIbiBhcmUgcmVhZC1vbmx5IGFmdGVyIElBMzJfRkVBVFVS RV9DT05UUk9MIGlzCj4gbG9ja2VkKSBvciAqdW5sb2NrZWQqIG1vZGUgKElBMzJfU0dYTEVQVUJL RVlIQVNIbiBhcmUgd3JpdGFibGUgdG8ga2VybmVsIGF0Cj4gcnVudGltZSkuIEFsc28gQklPUyBt YXkgb3IgbWF5IG5vdCBwcm92aWRlIGNvbmZpZ3VyYXRpb25zIHRvIGFsbG93IHVzZXIgdG8gc2V0 Cj4gY3VzdG9tIHZhbHVlIG9mIElBMzJfU0dYTEVQVUJLRVlIQVNIbi4KPiAKPiAxLjUgU0dYIElu dGVyYWN0aW9uIHdpdGggSUEzMiBhbmQgSUE2NCBBcmNoaXRlY3R1cmUKPiAKPiBTRE0gQ2hhcHRl ciA0MiBkZXNjcmliZXMgU0dYIGludGVyYWN0aW9uIHdpdGggdmFyaW91cyBmZWF0dXJlcyBpbiBJ QTMyIGFuZCBJQTY0Cj4gYXJjaGl0ZWN0dXJlLiBCZWxvdyBvdXRsaW5lcyB0aGUgbWFqb3Igb25l cy4gUmVmZXIgdG8gQ2hhcHRlciA0MiBmb3IgZnVsbAo+IGRlc2NyaXB0aW9uIG9mIFNHWCBpbnRl cmFjdGlvbiB3aXRoIHZhcmlvdXMgSUEzMiBhbmQgSUE2NCBmZWF0dXJlcy4KPiAKPiAxLjUuMSBW TVggQ2hhbmdlcyBmb3IgU3VwcG9ydGluZyBTR1ggVmlydHVhbGl6YXRpb24KPiAKPiBBIG5ldyA2 NC1iaXQgRU5DTFMtZXhpdGluZyBiaXRtYXAgY29udHJvbCBmaWVsZCBpcyBhZGRlZCB0byBWTUNT IChlbmNvZGluZwo+IDAyMDJFSCkgdG8gY29udHJvbCBWTUVYSVQgb24gRU5DTFMgbGVhZiBmdW5j dGlvbnMuIEFuZCBhIG5ldyAiRW5hYmxlIEVOQ0xTCj4gZXhpdGluZyIgY29udHJvbCBiaXQgKGJp dCAxNSkgaXMgZGVmaW5lZCBpbiBzZWNvbmRhcnkgcHJvY2Vzc29yIGJhc2VkIHZtCj4gZXhlY3V0 aW9uIGNvbnRyb2wuIDEtU2V0dGluZyBvZiAiRW5hYmxlIEVOQ0xTIGV4aXRpbmciIGVuYWJsZXMg RU5DTFMtZXhpdGluZwo+IGJpdG1hcCBjb250cm9sLiBFTkNMUy1leGl0aW5nIGJpdG1hcCBjb250 cm9scyB3aGljaCBFTkNMUyBsZWF2ZXMgd2lsbCB0cmlnZ2VyCj4gVk1FWElULgo+IAo+IEFkZGl0 aW9uYWxseSB0d28gbmV3IGJpdHMgYXJlIGFkZGVkIHRvIGluZGljYXRlIHdoZXRoZXIgVk1FWElU IChhbnkpIGlzIGZyb20KPiBlbmNsYXZlLiBCZWxvdyB0d28gYml0cyB3aWxsIGJlIHNldCBpZiBW TUVYSVQgaXMgZnJvbSBlbmNsYXZlOgo+ICAgICAtIEJpdCAyNyBpbiB0aGUgRXhpdCByZWFzb24g ZmlsZWQgb2YgQmFzaWMgVk0tZXhpdCBpbmZvcm1hdGlvbi4KPiAgICAgLSBCaXQgNCBpbiB0aGUg SW50ZXJydXB0aWJpbGl0eSBTdGF0ZSBvZiBHdWVzdCBOb24tUmVnaXN0ZXIgU3RhdGUgb2YgVk1D Uy4KPiAKPiBSZWZlciB0byA0Mi41IEludGVyYWN0aW9ucyB3aXRoIFZNWCwgMjcuMi4xIEJhc2lj IFZNLUV4aXQgSW5mb3JtYXRpb24sIGFuZAo+IDI3LjMuNCBTYXZpbmcgTm9uLVJlZ2lzdGVyLgo+ IAo+IDEuNS4yIEludGVyYWN0aW9uIHdpdGggWFNBVkUKPiAKPiBTR1ggZGVmaW5lcyBhIHN1Yi1m aWVsZCBjYWxsZWQgWC1GZWF0dXJlIFJlcXVlc3QgTWFzayAoWEZSTSkgaW4gdGhlIGF0dHJpYnV0 ZXMKPiBmaWVsZCBvZiBTRUNTLiBPbiBlbmNsYXZlIGVudHJ5LCBTR1ggSFcgdmVyaWZpZXMgWEZS TSBpbiBTRUNTLkFUVFJJQlVURVMgYXJlCj4gYWxyZWFkeSBlbmFibGVkIGluIFhDUjAuCj4gCj4g VXBvbiBBRVgsIFNHWCBzYXZlcyB0aGUgcHJvY2Vzc29yIGV4dGVuZGVkIHN0YXRlIGFuZCBtaXNj ZWxsYW5lb3VzIHN0YXRlIHRvCj4gZW5jbGF2ZSdzIHN0YXRlLXNhdmUgYXJlYSAoU1NBKSwgYW5k IGNsZWFyIHRoZSBzZWNyZXRzIGZyb20gcHJvY2Vzc29yIGV4dGVuZGVkCj4gc3RhdGUgdGhhdCBp cyB1c2VkIGJ5IGVuY2xhdmUgKGZyb20gbGVha2luZyBzZWNyZXRzKS4KPiAKPiBSZWZlciB0byA0 Mi43IEludGVyYWN0aW9uIHdpdGggUHJvY2Vzc29yIEV4dGVuZGVkIFN0YXRlIGFuZCBNaXNjZWxs YW5lb3VzIFN0YXRlCj4gCj4gMS41LjMgSW50ZXJhY3Rpb24gd2l0aCBTIHN0YXRlCj4gCj4gV2hl biBwcm9jZXNzb3IgZ29lcyBpbnRvIFMzLVM1IHN0YXRlLCBFUEMgaXMgZGVzdHJveWVkLCB0aHVz IGFsbCBlbmNsYXZlcyBhcmUKPiBkZXN0cm95ZWQgYXMgd2VsbCBjb25zZXF1ZW50bHkuCj4gCj4g UmVmZXIgdG8gNDIuMTQgSW50ZXJhY3Rpb24gd2l0aCBTIFN0YXRlcy4KPiAKPiAyLiBTR1ggVmly dHVhbGl6YXRpb24gRGVzaWduCj4gCj4gMi4xIEhpZ2ggTGV2ZWwgVG9vbHN0YWNrIENoYW5nZXM6 Cj4gCj4gMi4xLjEgTmV3ICdzZ3gnIFhMIGNvbmZpZ3VyZSBmaWxlIHBhcmFtZXRlcgo+IAo+IEVQ QyBpcyBsaW1pdGVkIHJlc291cmNlLiBJbiBvcmRlciB0byB1c2UgRVBDIGVmZmljaWVudGx5IGFt b25nIGFsbCBkb21haW5zLAo+IHdoZW4gY3JlYXRpbmcgZ3Vlc3QsIGFkbWluaXN0cmF0b3Igc2hv dWxkIGJlIGFibGUgdG8gc3BlY2lmeSBkb21haW4ncyB2aXJ0dWFsCj4gRVBDIHNpemUuIEFuZCBh ZG1pbiBhbGFvIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhbGwgZG9tYWluJ3MgdmlydHVhbCBFUEMg c2l6ZS4KPiAKPiBGb3IgU0dYIExhdW5jaCBDb250cm9sIHZpcnR1YWxpemF0aW9uLCB3ZSBzaG91 bGQgYWxsb3cgYWRtaW4gdG8gY3JlYXRlIFZNIHdpdGgKPiBlaXRoZXIgVk0ncyB2aXJ0dWFsIElB MzJfU0dYTEVQVUJLRVlIQVNIbiBsb2NrZWQgb3IgdW5sb2NrZWQsIGFuZCB3ZSBzaG91bGQKPiBh bHNvIGFsbG93IGFkbWluIHRvIGNyZWF0ZSBWTSB3aXRoIGN1c3RvbSBJQTMyX1NHWExFUFVCS0VZ SEFTSG4gdmFsdWUuCj4gCj4gRm9yIGFib3ZlIHB1cnBvc2VzLCBiZWxvdyBuZXcgJ3NneCcgWEwg Y29uZmlndXJlIGZpbGUgcGFyYW1ldGVyIGlzIGFkZGVkOgo+IAo+IAlzZ3ggPSAnZXBjPTxzaXpl PixsZWhhc2g9PHNoYTI1Ni1oYXNoPixsZXdyPTwwfDE+Jwo+IAo+IEluIHdoaWNoICdlcGMnIHNw ZWNpZmllcyBWTSdzIEVQQyBzaXplIGluIE1CIGFuZCBpdCdzIG1hbmRhdG9yeS4KPiAKPiBXaGVu IHBoeXNpY2FsIG1hY2hpbmUgaXMgaW4gKmxvY2tlZCogbW9kZSwgYm90aCAnbGVoYXNoJyBhbmQg J2xld3InCj4gY2Fubm90IGJlIHNwZWNpZmljZWQsIGFzIHBoeXNpY2FsIG1hY2hpbmUgYXJlIHVu YWJsZSB0byBjaGFuZ2UKPiBJQTMyX1NHWExFUFVCS0VZSEFTSG4gYXQgcnVudGltZS4gQWRkaW5n IGVpdGhlciAnbGVoYXNoJyBhbmQgJ2xld3InIHdpbGwKPiBjYXVzZSBmYWlsdXJlIHRvIGNyZWF0 ZSBWTSBpbiB0aGF0IGNhc2UuIEFuZCBWTSdzIGluaXRpYWwKPiBJQTMyX1NHWExFUFVCS0VZSEFT SG4gdmFsdWUgd2lsbCBiZSBzZXQgdG8gdmFsdWUgb2YgcGh5c2ljYWwgTVNScy4KPiAKPiBXaGVu IHBoeXNpY2FsIG1hY2hpbmUgaXMgaW4gKnVubG9ja2VkKiBtb2RlLCB0aGVuIFZNJ3MgaW5pdGlh bAo+IElBMzJfU0dYTEVQVUJLRVlIQVNIbiB2YWx1ZSB3aWxsIGJlIHNldCB0byAnbGVoYXNoJyBp ZiBzcGVjaWZpZWQsIG9yCj4gSW50ZWwncyBkZWZhdWx0IHZhbHVlLiBWTSdzIFNHWF9MQVVOQ0hf Q09OVFJPTF9FTkFCTEUgYml0IGluCj4gSUEzMl9GRUFUVVJFX0NPTlRST0wgd2lsbCBiZSBzZXQg b3IgY2xlYXJlZCwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgJ2xld3InCj4gaXMgc3BlY2lmaWNpZWQg KG9yIHNldCB0byB0cnVlIG9yIGZhbHNlIGV4cGlsaWNpdHkpLgo+IAo+IFBsZWFzZSBhbHNvIHJl ZmVyIHRvIDIuMi40IExhdW5jaCBDb250cm9sIFN1cHBvcnQuCj4gCj4gMi4xLjIgTmV3IFhMIGNv bW1hbmRzICg/KQo+IAo+IEFkbWluaXN0cmF0b3Igc2hvdWxkIGJlIGFibGUgdG8gZ2V0IHBoeXNp Y2FsIEVQQyBzaXplLCBhbmQgYWxsIGRvbWFpbidzIHZpcnR1YWwKPiBFUEMgc2l6ZS4gRm9yIHRo aXMgcHVycG9zZSwgd2UgY2FuIGludHJvZHVjZSAyIGFkZGl0aW9uYWwgY29tbWFuZHM6Cj4gCj4g ICAgICMgeGwgc2d4aW5mbwo+IAo+IFdoaWNoIHdpbGwgcHJpbnQgb3V0IHBoeXNpY2FsIEVQQyBz aXplLCBhbmQgb3RoZXIgU0dYIGluZm8gKHN1Y2ggYXMgU0dYMSwgU0dYMiwKPiBldGMpIGlmIG5l Y2Vzc2FyeS4KPiAKPiAgICAgIyB4bCBzZ3hsaXN0IDxkaWQ+Cj4gCj4gV2hpY2ggd2lsbCBwcmlu dCBvdXQgcGFydGljdWxhciBkb21haW4ncyB2aXJ0dWFsIEVQQyBzaXplLCBvciBsaXN0IGFsbCB2 aXJ0dWFsCj4gRVBDIHNpemVzIGZvciBhbGwgc3VwcG9ydGVkIGRvbWFpbnMuCj4gCj4gQWx0ZXJu YXRpdmVseSwgd2UgY2FuIGFsc28gZXh0ZW5kIGV4aXN0aW5nIFhMIGNvbW1hbmRzIGJ5IGFkZGlu ZyBuZXcgb3B0aW9uCj4gCj4gICAgICMgeGwgaW5mbyAtc2d4Cj4gCj4gV2hpY2ggd2lsbCBwcmlu dCBvdXQgcGh5c2ljYWwgRVBDIHNpemUgYWxvbmcgd2l0aCBvdGhlciBwaHlzaW5mby4gQW5kCj4g Cj4gICAgICMgeGwgbGlzdCA8ZGlkPiAtc2d4Cj4gCj4gV2hpY2ggd2lsbCBwcmludCBvdXQgZG9t YWluJ3MgdmlydHVhbCBFUEMgc2l6ZS4KPiAKPiBDb21tZW50cz8KPiAKPiBJbiB0aGlzIFJGQyB0 aGUgdHdvIG5ldyBjb21tYW5kcyBhcmUgbm90IGltcGxlbWVudGVkIHlldC4KPiAKPiAyLjEuMyBO b3RpZnkgZG9tYWluJ3MgdmlydHVhbCBFUEMgYmFzZSBhbmQgc2l6ZSB0byBYZW4KPiAKPiBYZW4g bmVlZHMgdG8ga25vdyBndWVzdCdzIEVQQyBiYXNlIGFuZCBzaXplIGluIG9yZGVyIHRvIHBvcHVs YXRlIEVQQyBwYWdlcyBmb3IKPiBpdC4gVG9vbHN0YWNrIG5vdGlmaWVzIEVQQyBiYXNlIGFuZCBz aXplIHRvIFhlbiB2aWEgWEVOX0RPTUNUTF9zZXRfY3B1aWQuCj4gCj4gMi4yIEhpZ2ggTGV2ZWwg WGVuIEh5cGVydmlzb3IgQ2hhbmdlczoKPiAKPiAyLjIuMSBFUEMgTWFuYWdlbWVudAo+IAo+IFhl biBoeXBlcnZpc29yIG5lZWRzIHRvIGRldGVjdCBTR1gsIGRpc2NvdmVyIEVQQywgYW5kIG1hbmFn ZSBFUEMgYmVmb3JlCj4gc3VwcG9ydGluZyBTR1ggdG8gZ3Vlc3QuIEVQQyBpcyBkZXRlY3RlZCB2 aWEgU0dYIENQVUlEIDB4MTIuMHgyLiBJdCdzIHBvc3NpYmxlCj4gdGhhdCB0aGVyZSBhcmUgbXVs dGlwbGUgRVBDIHNlY3Rpb25zIChlbnVtZXJhdGVkIHZpYSBzdWItbGVhdmVzIDB4MyBhbmQgc28g b24sCj4gdW50aWwgaW52YWlkIEVQQyBpcyByZXBvcnRlZCksIGJ1dCB0aGlzIGlzIHR5cGljYWxs eSBvbiBNUC1zb2NrZXQgc2VydmVyIG9uCj4gd2hpY2ggZWFjaCBwYWNrYWdlIHdvdWxkIGhhdmUg aXRzIG93biBFUEMuCj4gCj4gRVBDIGlzIHJlcG9ydGVkIGFzIHJlc2VydmVkIG1lbW9yeSAoc28g aXQgaXMgbm90IHJlcG9ydGVkIGFzIG5vcm1hbCBtZW1vcnkpLgo+IEVQQyBtdXN0IGJlIG1hbmFn ZWQgaW4gNEsgcGFnZXMuIENQVSBoYXJkd2FyZSB1c2VzIEVQQ00gdG8gdHJhY2sgc3RhdHVzIG9m IGVhY2gKPiBFUEMgcGFnZXMuIFhlbiBuZWVkcyB0byBtYW5hZ2UgRVBDIGFuZCBwcm92aWRlIGZ1 bmN0aW9ucyB0bywgaWUsIGFsbG9jIGFuZCBmcmVlCj4gRVBDIHBhZ2VzIGZvciBndWVzdC4KPiAK PiBBbHRob3VnaCB0eXBpY2FsbHkgb24gcGh5c2ljYWwgbWFjaGluZSAoYXQgbGVhc3QgZXhpc3Rp bmcgbWFjaGluZXMpLCBFUEMgaXMKPiB+MTAwTSBpbiBzaXplIGF0IG1heGltdW0sIGJ1dCB3ZSBj YW5ub3QgYXNzdW1lIEVQQyBzaXplLCB0aHVzIGluIHRlcm1zIG9mIEVQQwo+IG1hbmFnZW1lbnQs IGl0J3MgYmV0dGVyIHRvIGludGVncmF0ZSBFUEMgbWFuYWdlbWVudCB0byBYZW4ncyBtZW1tb3J5 IG1hbmFnZW1lbnQKPiBmcmFtZXdvcmsgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgZXhpc3RpbmcgWGVu J3MgbWVtb3J5IG1hbmFnZW1lbnQgYWxnb3JpdGhtcy4KPiAKPiBTcGVjaWZpY2FsbHksIG9uZSAn c3RydWN0IHBhZ2VfaW5mbycgd2lsbCBiZSBjcmVhdGVkIGZvciBlYWNoIEVQQyBwYWdlLCBqdXN0 Cj4gbGlrZSBub3JtYWwgbWVtb3J5LCBhbmQgYSBuZXcgZmxhZyB3aWxsIGJlIGRlZmluZWQgdG8g aWRlbnRpZnkgd2hldGhlciAnc3RydWN0Cj4gcGFnZV9pbmZvJyBpcyBFUEMgb3Igbm9ybWFsIG1l bW9yeS4gRXhpc3RpbmcgbWVtb3J5IGFsbG9jYXRpb24gQVBJCj4gYWxsb2NfZG9taGVhcF9wYWdl cyB3aWxsIGJlIHJlc3VlZCB0byBhbGxvY2F0ZSBFUEMgcGFnZSwgYnkgYWRkaW5nIGEgbmV3IG1l bWZsYWcKPiAnTUVNRl9lcGMnIHRvIGluZGljYXRlIEVQQyBhbGxvY2F0aW9uLCByYXRoZXIgdGhh biBtZW1vcnkgYWxsb2NhdGlvbi4gVGhlIG5ldwo+ICdNRU1GX2VwYycgY2FuIGFsc28gYmUgdXNl ZCBmb3IgRVBDIGJhbGxvb25pbmcgKGlmIHJlcXVpcmVkIGluIHRoZSBmdXR1cmUpLCBhcwo+IHdp dGggdGhlIG5ldyBmbGFnLCBleGlzdGluZyBYRU5NRU1faW5jcmVhc2V7ZGVjcmVhc2V9X3Jlc2Vy dmF0aW9uLAo+IFhFTk1FTV9wb3B1bGF0ZV9waHlzbWFwIGNhbiBiZSByZXN1ZWQgZm9yIEVQQyBh cyB3ZWxsLgo+IAo+IDIuMi4yIEVQQyBWaXJ0dWFsaXphdGlvbgo+IAo+IFRoaXMgcGFydCBpcyBo b3cgdG8gcG9wdWxhdGUgRVBDIGZvciBndWVzdHMuIFdlIGhhdmUgMyBjaG9pY2VzOgo+ICAgICAt IFN0YXRpYyBQYXJ0aXRpb25pbmcKPiAgICAgLSBPdmVyc3Vic2NyaXB0aW9uCj4gICAgIC0gQmFs bG9vbmluZwo+IAo+IFN0YXRpYyBQYXJ0aXRpb25pbmcgbWVhbnMgYWxsIEVQQyBwYWdlcyB3aWxs IGJlIGFsbG9jYXRlZCBhbmQgbWFwcGVkIHRvIGd1ZXN0Cj4gd2hlbiBpdCBpcyBjcmVhdGVkLCBh bmQgdGhlcmUncyBubyBydW50aW1lIGNoYW5nZSBvZiBwYWdlIHRhYmxlIG1hcHBpbmdzIGZvciBF UEMKPiBwYWdlcy4gT3ZlcnN1YnNjcmlwdGlvbiBtZWFucyBYZW4gaHlwZXJ2aXNvciBzdXBwb3J0 cyBFUEMgcGFnZSBzd2FwcGluZyBiZXR3ZWVuCj4gZG9tYWlucywgbWVhbmluZyBYZW4gaXMgYWJs ZSB0byBldmljdCBFUEMgcGFnZSBmcm9tIGFub3RoZXIgZG9tYWluIGFuZCBhc3NpZ24gaXQKPiB0 byB0aGUgZG9tYWluIHRoYXQgbmVlZHMgdGhlIEVQQy4gV2l0aCBvdmVyc3Vic2NyaXB0aW9uLCBF UEMgY2FuIGJlIGFzc2lnbmVkIHRvCj4gZG9tYWluIG9uIGRlbWFuZCwgd2hlbiBFUFQgdmlvbGF0 aW9uIGhhcHBlbnMuIEJhbGxvb25pbmcgaXMgc2ltaWxhciB0byBtZW1vcnkKPiBiYWxsb29uaW5n LiBJdCBpcyBiYXNpY2FsbHkgIlN0YXRpYyBQYXJ0aXRpb25pbmciICsgIkJhbGxvb24gZHJpdmVy IiBpbiBndWVzdC4KPiAKPiBTdGF0aWMgUGFydGl0aW9uaW5nIGlzIHRoZSBlYXNpZXN0IHdheSBp biB0ZXJtcyBvZiBpbXBsZW1lbnRhdGlvbiwgYW5kIHRoZXJlCj4gd2lsbCBiZSBubyBoeXBlcnZp c29yIG92ZXJoZWFkIChleGNlcHQgRVBUIG92ZXJoZWFkIG9mIGNvdXJzZSksIGJlY2F1c2UgaW4K PiAiU3RhdGljIHBhcnRpdGlvbmluZyIsIHRoZXJlIGlzIG5vIEVQVCB2aW9sYXRpb24gZm9yIEVQ QywgYW5kIFhlbiBkb2Vzbid0IG5lZWQKPiB0byB0dXJuIG9uIEVOQ0xTIFZNRVhJVCBmb3IgZ3Vl c3QgYXMgRU5DTFMgcnVucyBwZXJmZWN0bHkgaW4gbm9uLXJvb3QgbW9kZS4KPiAKPiBCYWxsb29u aW5nIGlzICJTdGF0aWMgUGFydGl0aW9uaW5nIiArICJCYWxsb29uIGRyaXZlciIgaW4gZ3Vlc3Qu IExpa2UgIlN0YXRpYwo+IFBhcmF0aXRpb25pbmciLCBiYWxsb29uaW5nIGRvZXNuJ3QgbmVlZCB0 byB0dXJuIG9uIEVOQ0xTIFZNRVhJVCwgYW5kIGRvZXNuJ3QKPiBoYXZlIEVQVCB2aW9sYXRpb24g Zm9yIEVQQyBlaXRoZXIuIFRvIHN1cHBvcnQgYmFsbG9vbmluZywgd2UgbmVlZCBiYWxsb29uaW5n Cj4gZHJpdmVyIGluIGd1ZXN0IHRvIGlzc3VlIGh5cGVyY2FsbCB0byBnaXZlIHVwIG9yIHJlY2xh aW0gRVBDIHBhZ2VzLiBJbiB0ZXJtcyBvZgo+IGh5cGVyY2FsbCwgd2UgaGF2ZSB0d28gY2hvaWNl czogMSkgQWRkIG5ldyBoeXBlcmNhbGwgZm9yIEVQQyBiYWxsb29uaW5nOyAyKQo+IFVzaW5nIGV4 aXN0aW5nIFhFTk1FTV97aW5jcmVhc2UvZGVjcmVhc2V9X3Jlc2VydmF0aW9uIHdpdGggbmV3IG1l bW9yeSBmbGFnLCBpZSwKPiBYRU5NRU1GX2VwYy4gSSdsbCBkaXNjdXNzIG1vcmUgcmVnYXJkaW5n IHRvIGFkZGluZyBkZWRpY2F0ZWQgaHlwZXJjYWxsIG9yIG5vdAo+IGxhdGVyLgo+IAo+IE92ZXJz dWJzY3JpcHRpb24gbG9va3MgbmljZSBidXQgaXQgcmVxdWlyZXMgbW9yZSBjb21wbGljYXRlZCBp bXBsZW1ldGF0aW9uLgo+IEZpcnN0bHksIGFzIGV4cGxhaW5lZCBpbiAxLjMuMyBFUEMgRXZpY3Rp b24gJiBSZWxvYWQsIHdlIG5lZWQgdG8gZm9sbG93IHNwZWNpZmljCj4gc3RlcHMgdG8gZXZpY3Qg RVBDIHBhZ2VzLCBhbmQgaW4gb3JkZXIgdG8gZG8gdGhhdCwgYmFzaWNhbGx5IFhlbiBuZWVkcyB0 byB0cmFwCj4gRU5DTFMgZnJvbSBndWVzdCBhbmQga2VlcCB0cmFjayBvZiBFUEMgcGFnZSBzdGF0 dXMgYW5kIGVuY2xhdmUgaW5mbyBmcm9tIGFsbAo+IGd1ZXN0LiBUaGlzIGlzIGJlY2F1c2U6Cj4g ICAgIC0gVG8gZXZpY3QgcmVndWxhciBFUEMgcGFnZSwgWGVuIG5lZWRzIHRvIGtub3cgU0VDUyBs b2NhdGlvbgo+ICAgICAtIFhlbiBuZWVkcyB0byBrbm93IEVQQyBwYWdlIHR5cGU6IGV2aWN0aW5n IHJlZ3VsYXIgRVBDIGFuZCBldmljdGluZyBTRUNTLAo+ICAgICAgIFZBIHBhZ2UgaGF2ZSBkaWZm ZXJlbnQgc3RlcHMuCj4gICAgIC0gWGVuIG5lZWRzIHRvIGtub3cgRVBDIHBhZ2Ugc3RhdHVzOiB3 aGV0aGVyIHRoZSBwYWdlIGlzIGJsb2NrZWQgb3Igbm90Lgo+IAo+IFRob3NlIGluZm8gY2FuIG9u bHkgYmUgZ290IGJ5IHRyYXBwaW5nIEVOQ0xTIGZyb20gZ3Vlc3QsIGFuZCBwYXJzaW5nIGl0cwo+ IHBhcmFtZXRlcnMgKHRvIGlkZW50aWZ5IFNFQ1MgcGFnZSwgZXRjKS4gUGFyc2luZyBFTkNMUyBw YXJhbWV0ZXJzIG1lYW5zIHdlIG5lZWQKPiB0byBrbm93IHdoaWNoIEVOQ0xTIGxlYWYgaXMgYmVp bmcgdHJhcHBlZCwgYW5kIHdlIG5lZWQgdG8gdHJhbnNsYXRlIGd1ZXN0J3MKPiB2aXJ0dWFsIGFk ZHJlc3MgdG8gZ2V0IHBoeXNpY2FsIGFkZHJlc3MgaW4gb3JkZXIgdG8gbG9jYXRlIEVQQyBwYWdl LiBBbmQgb25jZQo+IEVOQ0xTIGlzIHRyYXBwZWQsIHdlIGhhdmUgdG8gZW11bGF0ZSBFTkNMUyBp biBYZW4sIHdoaWNoIG1lYW5zIHdlIG5lZWQgdG8KPiByZWNvbnN0cnVjdCBFTkNMUyBwYXJhbWV0 ZXJzIGJ5IHJlbWFwcGluZyBhbGwgZ3Vlc3QncyB2aXJ0dWFsIGFkZHJlc3MgdG8gWGVuJ3MKPiB2 aXJ0dWFsIGFkZHJlc3MgKGd2YS0+Z3BhLT5wYS0+eGVuX3ZhKSwgYXMgRU5DTFMgYWx3YXlzIHVz ZSAqZWZmZWN0aXZlIGFkZHJlc3MqCj4gd2hpY2ggaXMgYWJsZSB0byBiZSB0cmFzbGF0ZWQgYnkg cHJvY2Vzc29yIHdoZW4gcnVubmluZyBFTkNMUy4KPiAKPiAgICAgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgICAgICAgICAg ICAgICAgfCAgIEVOQ0xTICAgfAo+ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAgICAgICAgICAgICAgICB8ICAgICAg ICAgIC98XAo+ICAgICBFTkNMUyBWTUVYSVR8ICAgICAgICAgICB8IFZNRU5UUlkKPiAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgfAo+ICAgICAgICAgICAgICAgIFx8LyAgICAgICAgICB8Cj4g Cj4gCQkxKSBwYXJzZSBFTkNMUyBwYXJhbWV0ZXJzCj4gCQkyKSByZWNvbnN0cnVjdChyZW1hcCkg Z3Vlc3QncyBFTkNMUyBwYXJhbWV0ZXJzCj4gCQkzKSBydW4gRU5DTFMgb24gYmVoYWxmIG9mIGd1 ZXN0IChhbmQgc2tpcCBFTkNMUykKPiAJCTQpIG9uIHN1Y2Nlc3MsIHVwZGF0ZSBFUEMvZW5jbGF2 ZSBpbmZvLCBvciBpbmplY3QgZXJyb3IKPiAKPiBBbmQgWGVuIG5lZWRzIHRvIG1haW50YWluIGVh Y2ggRVBDIHBhZ2UncyBzdGF0dXMgKHR5cGUsIGJsb2NrZWQgb3Igbm90LCBpbgo+IGVuY2xhdmUg b3Igbm90LCBldGMpLiBYZW4gYWxzbyBuZWVkcyB0byBtYWludGFpbiBhbGwgRW5jbGF2ZSdzIGlu Zm8gZnJvbSBhbGwKPiBndWVzdHMsIGluIG9yZGVyIHRvIGZpbmQgdGhlIGNvcnJlY3QgU0VDUyBm b3IgcmVndWxhciBFUEMgcGFnZSwgYW5kIGVuY2xhdmUncwo+IGxpbmVhciBhZGRyZXNzIGFzIHdl bGwuCj4gCj4gU28gaW4gZ2VuZXJhbCwgIlN0YXRpYyBQYXJ0aXRpb25pbmciIGhhcyBzaW1wbGVz dCBpbXBsZW1lbnRhdGlvbiwgYnV0IG9idmlvdXNseQo+IG5vdCB0aGUgYmVzdCB3YXkgdG8gdXNl IEVQQyBlZmZpY2llbnRseTsgIkJhbGxvb25pbmciIGhhcyBhbGwgcHJvcyBvZiBTdGF0aWMKPiBQ YXJ0aXRpb25pbmcgYnV0IHJlcXVpZXMgZ3Vlc3QgYmFsbG9vbiBkcml2ZXI7ICJPdmVyc3Vic2Ny aXB0aW9uIiBpcyBiZXN0IGluCj4gdGVybXMgb2YgZmxleGliaWxpdHkgYnV0IHJlcXVpcmVzIGNv bXBsaWNhdGVkIGh5cGVydmlzb3IgaW1wbGVtZXRhdGlvbi4KPiAKPiBXZSB3aWxsIHN0YXJ0IHdp dGggIlN0YXRpYyBQYXJ0aXRpb25pbmciLiBJZiAiQmFsbG9vbmluZyIgaXMgcmVxdWlyZWQgaW4g dGhlCj4gZnV0dXJlLCB3ZSB3aWxsIHN1cHBvcnQgaXQuICJPdmVyc3Vic2NyaXB0aW9uIiBzaG91 bGQgbm90IGJlIG5lZWRlZCBpbgo+IGZvcnNlZWFibGUgZnV0dXJlLgo+IAo+IDIuMi4zIFBvcHVs YXRlIEVQQyBmb3IgR3Vlc3QKPiAKPiBUb29sc3RhY2sgbm90aWZpZXMgWGVuIGFib3V0IGRvbWFp bidzIEVQQyBiYXNlIGFuZCBzaXplIGJ5IFhFTl9ET01DVExfc2V0X2NwdWlkLAo+IHNvIGN1cnJl bnRseSBYZW4gcG9wdWxhdGVzIGFsbCBFUEMgcGFnZXMgZm9yIGd1ZXN0IGluIFhFTl9ET01DVExf c2V0X2NwdWlkLAo+IHBhcnRpY3VsYXJseSwgaW4gaGFuZGxpbmcgWEVOX0RPTUNUTF9zZXRfY3B1 aWQgZm9yIENQVUlELjB4MTIuMHgyLiBPbmNlIFhlbgo+IGNoZWNrcyB0aGUgdmFsdWVzIHBhc3Nl ZCBmcm9tIHRvb2xzdGFjayBpcyB2YWxpZCwgWGVuIHdpbGwgYWxsb2NhdGUgYWxsIEVQQwo+IHBh Z2VzIGFuZCBzZXR1cCBFUFQgbWFwcGluZ3MgZm9yIGd1ZXN0Lgo+IAo+IDIuMi40IExhdW5jaCBD b250cm9sIFN1cHBvcnQKPiAKPiBUbyBzdXBwb3J0IHJ1bm5pbmcgbXVsdGlwbGUgZG9tYWlucyB3 aXRoIGVhY2ggcnVubmluZyBpdHMgb3duIExFIHNpZ25lZCBieQo+IGRpZmZlcmVudCBvd25lcnMs IHBoeXNpY2FsIG1hY2hpbmUncyBCSU9TIG11c3QgbGVhdmUgSUEzMl9TR1hMRVBVQktFWUhBU0hu Cj4gKnVubG9ja2VkKiBiZWZvcmUgaGFuZGluZyB0byBYZW4uIFhlbiB3aWxsIHRyYXAgZG9tYWlu J3Mgd3JpdGUgdG8KPiBJQTMyX1NHWExFUFVCS0VZSEFTSG4gYW5kIGtlZXAgdGhlIHZhbHVlIGlu IHZjcHUgaW50ZXJuYWxseSwgYW5kIHVwZGF0ZSB0aGUKPiB2YWx1ZSB0byBwaHlzaWNhbCBNU1Jz IHdoZW4gdmNwdSBpcyBzY2hlZHVsZWQgaW4uIFRoaXMgY2FuIGd1YXJhbnRlZSB0aGF0Cj4gd2hl biBFSU5JVCBydW5zIGluIGd1ZXN0LCBndWVzdCdzIHZpcnR1YWwgSUEzMl9TR1hMRVBVQktFWUhB U0huIGhhdmUgYmVlbgo+IHdyaXR0ZW4gdG8gcGh5c2ljYWwgTVNScy4KPiAKPiBTR1hfTEFVTkNI X0NPTlRST0xfRU5BQkxFIGJpdCBpbiBndWVzdCdzIElBMzJfRkVBVFVSRV9DT05UUk9MIGlzIGNv bnRyb2xsZWQKPiBieSBuZXcgYWRkZWQgJ2xld3InIFhMIHBhcmFtZXRlciAoc2VlIDIuMS4xIE5l dyAnc2d4JyBYTCBjb25maWd1cmUgZmlsZQo+IHBhcmFtZXRlcikuCj4gCj4gSWYgcGh5c2ljYWwg SUEzMl9TR1hMRVBVQktFWUhBU0huIGFyZSAqbG9ja2VkKiBpbiBtYWNoaW5lJ3MgQklPUywgdGhl biBvbmx5IE1TUgo+IHJlYWQgaXMgYWxsb3dlZCBmcm9tIGd1ZXN0LCBhbmQgWGVuIHdpbGwgaW5q ZWN0IGVycm9yIGZvciBndWVzdCdzIE1TUiB3cml0ZXMuCj4gCj4gSW4gYWRkaXRpb24sIGlmIHBo eXNpY2FsIElBMzJfU0dYTEVQVUJLRVlIQVNIbiBhcmUgKmxvY2tlZCosIHRoZW4gY3JlYXRpbmcg Z3Vlc3QKPiB3aXRoICdsZWhhc2gnIHBhcmFtZXRlciBvciAnbGV3cicgd2lsbCBmYWlsLCBhcyBp biBzdWNoIGNhc2UgWGVuIGlzIG5vdCBhYmxlIHRvCj4gdXBkYXRlIGd1ZXN0J3MgdmlydHVhbCBJ QTMyX1NHWExFUFVCS0VZSEFTSG4gdG8gcGh5c2ljYWwgTVNScy4KPiAKPiBJZiBwaHlzaWNhbCBJ QTMyX1NHWExFUFVCS0VZSEFTSG4gYXJlIG5vdCBhdmFpbGFibGUKPiAoQ1BVSUQuMHg3LjB4MDpF Q1guU0dYX0xBVUhDTl9DT05UUk9MIGlzIG5vdCBwcmVzZW50KSwgdGhlbiBjcmVhdGluZyBWTSB3 aXRoCj4gJ2xlaGFzaCcgYW5kICdsZXdyJyB3aWxsIGFsc28gZmFpbC4gSW4gYWRkaXRpb24sIGFu eSBNU1IgcmVhZC93cml0ZSBmb3IKPiBJQTMyX1NHWExFUFVCS0VZSEFTSG4gZnJvbSBndWVzdCBp cyBpbnZhbGlkIGFuZCBYZW4gd2lsbCBpbmplY3QgZXJyb3IgaW4gc3VjaAo+IGNhc2UuCj4gCj4g Mi4yLjUgQ1BVSUQgRW11bGF0aW9uCj4gCj4gTW9zdCBvZiBuYXRpdmUgU0dYIENQVUlEIGluZm8g Y2FuIGJlIGV4cG9zZWQgdG8gZ3Vlc3QsIGV4cGVjdCBiZWxvdyB0d28gcGFydHM6Cj4gICAgIC0g U3ViLWxlYWYgMHgyIG5lZWRzIHRvIHJlcG9ydCBkb21haW4ncyB2aXJ0dWFsIEVQQyBiYXNlIGFu ZCBzaXplLCBpbnN0ZWFkCj4gICAgICAgb2YgcGh5c2ljYWwgRVBDIGluZm8uCj4gICAgIC0gU3Vi LWxlYWYgMHgxIG5lZWRzIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBndWVzdCdzIFhDUjAuIEZvciB0 aGUgcmVhc29uIG9mCj4gICAgICAgdGhpcyBwYXJ0IHBsZWFzZSByZWZlciB0byAxLjUuMiBJbnRl cmFjdGlvbiB3aXRoIFhTQVZFLgo+IAo+IDIuMi42IEVQVCBWaW9sYXRpb24gJiBFTkNMUyBUcmFw cGluZyBIYW5kbGluZwo+IAo+IE9ubHkgbmVlZGVkIHdoZW4gWGVuIHN1cHBvcnRzIEVQQyBPdmVy c3Vic2NyaXB0aW9uLCBhcyBleHBsYWluZWQgYWJvdmUuCj4gCj4gMi4yLjcgR3Vlc3QgU3VzcGVu ZCAmIFJlc3VtZQo+IAo+IE9uIGhhcmR3YXJlLCBFUEMgaXMgZGVzdHJveWVkIHdoZW4gcG93ZXIg Z29lcyB0byBTMy1TNS4gU28gWGVuIHdpbGwgZGVzdHJveQo+IGd1ZXN0J3MgRVBDIHdoZW4gZ3Vl c3QncyBwb3dlciBnb2VzIGludG8gUzMtUzUuIEN1cnJlbnRseSBYZW4gaXMgbm90aWZpZWQgYnkK PiBRZW11IGluIHRlcm1zIG9mIFMgU3RhdGUgY2hhbmdlIHZpYSBIVk1fUEFSQU1fQUNQSV9TX1NU QVRFLCB3aGVyZSBYZW4gd2lsbAo+IGRlc3Ryb3kgRVBDIGlmIFMgU3RhdGUgaXMgUzMtUzUuCj4g Cj4gU3BlY2lmaWNhbGx5LCBYZW4gd2lsbCBydW4gRVJFTU9WRSBmb3IgZ3Vlc3QncyBlYWNoIEVQ QyBwYWdlLCBhcyBndWVzdCBtYXkKPiBub3QgaGFuZGxlIEVQQyBzdXNwZW5kICYgcmVzdW1lIGNv cnJlY3RseSwgaW4gd2hpY2ggY2FzZSBwaHlzaWNhbGx5IGd1ZXN0J3MgRVBDCj4gcGFnZXMgbWF5 IHN0aWxsIGJlIHZhbGlkLCBzbyBYZW4gbmVlZHMgdG8gcnVuIEVSRU1PVkUgdG8gbWFrZSBzdXJl IGFsbCBFUEMKPiBwYWdlcyBhcmUgYmVjb21pbmcgaW52YWxpZC4gT3RoZXJ3aXNlIGZ1cnRoZXIg b3BlcmF0aW9uIGluIGd1ZXN0IG9uIEVQQyBtYXkKPiBmYXVsdCBhcyBpdCBhc3N1bWVzIGFsbCBF UEMgcGFnZXMgYXJlIGludmFsaWQgYWZ0ZXIgZ3Vlc3QgaXMgcmVzdW1lZC4KPiAKPiBGb3IgU0VD UyBwYWdlLCBFUkVNT1ZFIG1heSBmYXVsdCB3aXRoIFNHWF9DSElMRF9QUkVTRU5ULCBpbiB3aGlj aCBjYXNlIFhlbiB3aWxsCj4ga2VlcCB0aGlzIFNFQ1MgcGFnZSBpbnRvIGEgbGlzdCwgYW5kIGNh bGwgRVJFTU9WRSBmb3IgdGhlbSBhZ2FpbiBhZnRlciBhbGwgRVBDCj4gcGFnZXMgaGF2ZSBiZWVu IGNhbGxlZCB3aXRoIEVSRU1PVkUuIFRoaXMgdGltZSB0aGUgRVJFTU9WRSBvbiBTRUNTIHdpbGwg c3VjY2VlZAo+IGFzIGFsbCBjaGlsZHJlbiAocmVndWxhciBFUEMgcGFnZXMpIGhhdmUgYWxyZWFk eSBiZWVuIHJlbW92ZWQuCj4gCj4gMi4yLjggRGVzdHJveWluZyBEb21haW4KPiAKPiBOb3JtYWxs eSBYZW4ganVzdCBmcmVlcyBhbGwgRVBDIHBhZ2VzIGZvciBkb21haW4gd2hlbiBpdCBpcyBkZXN0 cm95ZWQuIEJ1dCBYZW4KPiB3aWxsIGFsc28gZG8gRVJFTU9WRSBvbiBhbGwgZ3Vlc3QncyBFUEMg cGFnZXMgKGRlc2NyaWJlZCBpbiBhYm92ZSAyLjIuNykgYmVmb3JlCj4gZnJlZSB0aGVtLCBhcyBn dWVzdCBtYXkgc2h1dGRvd24gdW5leHBlY3RlZCAoZXgsIHVzZXIga2lsbHMgZ3Vlc3QpLCBhbmQg aW4gdGhpcwo+IGNhc2UsIGd1ZXN0J3MgRVBDIG1heSBzdGlsbCBiZSB2YWxpZC4KPiAKPiAyLjMg QWRkaXRpb25hbCBQb2ludDogTGl2ZSBNaWdyYXRpb24sIFNuYXBzaG90IFN1cHBvcnQgKD8pCj4g Cj4gQWN0dWFsbHkgZnJvbSBoYXJkd2FyZSdzIHBvaW50IG9mIHZpZXcsIFNHWCBpcyBub3QgbWln cmF0YWJsZS4gVGhlcmUgYXJlIHR3bwo+IHJlYXNvbnM6Cj4gCj4gICAgIC0gU0dYIGtleSBhcmNo aXRlY3R1cmUgY2Fubm90IGJlIHZpcnR1YWxpemVkLgo+IAo+ICAgICBGb3IgZXhhbXBsZSwgc29t ZSBrZXlzIGFyZSBib3VuZCB0byBDUFUuIEZvciBleGFtcGxlLCBTZWFsaW5nIGtleSwgRVJFUE9S VAo+ICAgICBrZXksIGV0Yy4gSWYgVk0gaXMgbWlncmF0ZWQgdG8gYW5vdGhlciBtYWNoaW5lLCB0 aGUgc2FtZSBlbmNsYXZlIHdpbGwgZGVyaXZlCj4gICAgIHRoZSBkaWZmZXJlbnQga2V5cy4gVGFr aW5nIFNlYWxpbmcga2V5IGFzIGFuIGV4YW1wbGUsIFNlYWxpbmcga2V5IGlzCj4gICAgIHR5cGlj YWxseSB1c2VkIGJ5IGVuY2xhdmUgKGVuY2xhdmUgY2FuIGdldCBzZWFsaW5nIGtleSBieSBFR0VU S0VZKSB0byAqc2VhbCoKPiAgICAgaXRzIHNlY3JldHMgdG8gb3V0c2lkZSAoZXgsIHBlcnNpc3Rl bnQgc3RvcmFnZSkgZm9yIGZ1cnRoZXIgdXNlLiBJZiBTZWFsaW5nCj4gICAgIGtleSBjaGFuZ2Vz IGFmdGVyIFZNIG1pZ3JhdGlvbiwgdGhlbiB0aGUgZW5jbGF2ZSBjYW4gbmV2ZXIgZ2V0IHRoZSBz ZWFsZWQKPiAgICAgc2VjcmV0cyBiYWNrIGJ5IHVzaW5nIHNlYWxpbmcga2V5LCBhcyBpdCBoYXMg Y2hhbmdlZCwgYW5kIG9sZCBzZWFsaW5nIGtleQo+ICAgICBjYW5ub3QgYmUgZ290IGJhY2suCj4g Cj4gICAgIC0gVGhlcmUncyBubyBFTkNMUyB0byBldmljdCBFUEMgcGFnZSB0byBub3JtYWwgbWVt b3J5LCBidXQgYXQgdGhlIG1lYW5pbmcKPiAgICAgdGltZSwgc3RpbGwga2VlcCBjb250ZW50IGlu IEVQQy4gQ3VycmVudGx5IG9uY2UgRVBDIHBhZ2UgaXMgZXZpY3RlZCwgdGhlIEVQQwo+ICAgICBw YWdlIGJlY29tZXMgaW52YWxpZC4gU28gdGVjaG5pY2FsbHksIHdlIGFyZSB1bmFibGUgdG8gaW1w bGVtZW50IGxpdmUKPiAgICAgbWlncmF0aW9uIChvciBjaGVjayBwb2ludGluZywgb3Igc25hcHNo b3QpIGZvciBlbmNsYXZlLgo+IAo+IEJ1dCwgd2l0aCBzb21lIHdvcmthcm91bmQsIGFuZCBzb21l IGZhY3RzIG9mIGV4aXN0aW5nIFNHWCBkcml2ZXIsIHRlY2huaWNhbGx5Cj4gd2UgYXJlIGFibGUg dG8gc3VwcG9ydCBMaXZlIG1pZ3JhdGlvbiAob3IgZXZlbiBjaGVjayBwb2ludGluZywgc25hcHNo b3QpLiBUaGlzCj4gaXMgYmVjYXVzZToKPiAKPiAgICAgLSBDaGFuZ2luZyBrZXkgKHdoaWNoIGlz IGJvdW5kIHRvIENQVSkgaXMgbm90IGEgcHJvYmxlbSBpbiByZWFsaXR5Cj4gCj4gICAgIFRha2Ug U2VhbGluZyBrZXkgYXMgYW4gZXhhbXBsZS4gTG9zaW5nIHNlYWxlZCBkYXRhIGlzIG5vdCBhIHBy b2JsZW0sIGJlY2F1c2UKPiAgICAgc2VhbGluZyBrZXkgaXMgb25seSBzdXBwb3NlZCB0byBlbmNy eXB0IHNlY3JldHMgdGhhdCBjYW4gYmUgcHJvdmlzaW9uZWQKPiAgICAgYWdhaW4uIFRoZSB0eXBp Y2FsIHdvcmsgbW9kZWwgaXMsIGVuY2xhdmUgZ2V0cyBzZWNyZXRzIHByb3Zpc2lvbmVkIGZyb20K PiAgICAgcmVtb3RlIChzZXJ2aWNlIHByb3ZpZGVyKSwgYW5kIHVzZSBzZWFsaW5nIGtleSB0byBz dG9yZSBpdCBmb3IgZnVydGhlciB1c2UuCj4gICAgIFdoZW4gZW5jbGF2ZSB0cmllcyB0byAqdW5z ZWFsKiB1c2Ugc2VhbGluZyBrZXksIGlmIHRoZSBzZWFsaW5nIGtleSBpcwo+ICAgICBjaGFuZ2Vk LCBlbmNsYXZlIHdpbGwgZmluZCB0aGUgZGF0YSBpcyBzb21lIGtpbmQgb2YgY29ycnVwdGVkIChp bnRlZ3JpdHkKPiAgICAgY2hlY2sgZmFpbHVyZSksIHNvIGl0IHdpbGwgYXNrIHNlY3JldHMgdG8g YmUgcHJvdmlzaW9uZWQgYWdhaW4gZnJvbSByZW1vdGUuCj4gICAgIEFub3RoZXIgcmVhc29uIGlz LCBpbiBkYXRhIGNlbnRlciwgVk0ncyB0eXBpY2FsbHkgc2hhcmUgbG90cyBvZiBkYXRhLCBhbmQg YXMKPiAgICAgc2VhbGluZyBrZXkgaXMgYm91bmQgdG8gQ1BVLCBpdCBtZWFucyB0aGUgZGF0YSBl bmNyeXB0ZWQgYnkgb25lIGVuY2xhdmUgb24KPiAgICAgb25lIG1hY2hpbmUgY2Fubm90IGJlIHNo YXJlZCBieSBhbm90aGVyIGVuY2xhdmUgb24gYW5vdGhlciBtYWhjaW5lLiBTbyBmcm9tCj4gICAg IFNHWCBhcHAgd3JpdGVyJ3MgcG9pbnQgb2YgdmlldywgZGV2ZWxvcGVyIHNob3VsZCB0cmVhdCBT ZWFsaW5nIGtleSBhcyBhCj4gICAgIGNoYW5nZWFibGUga2V5LCBhbmQgc2hvdWxkIGhhbmRsZSBs b3NlIG9mIHNlYWxpbmcgZGF0YSBhbnl3YXkuIFNlYWxpbmcga2V5Cj4gICAgIHNob3VsZCBvbmx5 IGJlIHVzZWQgdG8gc2VhbCBzZWNyZXRzIHRoYXQgY2FuIGJlIGVhc2lseSBwcm92aXNpb25lZCBh Z2Fpbi4KPiAKPiAgICAgRm9yIG90aGVyIGtleXMgc3VjaCBhcyBFUkVQT1JUIGtleSBhbmQgcHJv dmlzaW9uaW5nIGtleSwgd2hpY2ggYXJlIHVzZWQgZm9yCj4gICAgIGxvY2FsIGF0dGVzdGF0aW9u IGFuZCByZW1vdGUgYXR0ZXN0YXRpb24sIGR1ZSB0byB0aGUgc2Vjb25kIHJlYXNvbiBiZWxvdywK PiAgICAgbG9zaW5nIHRoZW0gaXMgbm90IGEgcHJvYmxlbSBlaXRoZXIuCj4gCj4gICAgIC0gU3Vk ZGVuIGxvc2Ugb2YgRVBDIGlzIG5vdCBhIHByb2JsZW0uCj4gCj4gICAgIE9uIGhhcmR3YXJlLCBF UEMgd2lsbCBiZSBsb3N0IGlmIHN5c3RlbSBnb2VzIHRvIFMzLVM1LCBvciByZXNldCwgb3IKPiAg ICAgc2h1dGRvd24sIGFuZCBTR1ggZHJpdmVyIG5lZWQgdG8gaGFuZGxlIGxvc2Ugb2YgRVBDIGR1 ZSB0byBwb3dlciB0cmFuc2l0aW9uLgo+ICAgICBUaGlzIGlzIGRvbmUgYnkgY29vcGVyYXRpb24g YmV0d2VlbiBTR1ggZHJpdmVyIGFuZCB1c2Vyc3BhY2UgU0dYIFNESy9hcHBzLgo+ICAgICBIb3dl dmVyIGR1cmluZyBsaXZlIG1pZ3JhdGlvbiwgdGhlcmUgbWF5IG5vdCBiZSBwb3dlciB0cmFuc2l0 aW9uIGluIGd1ZXN0LAo+ICAgICBzbyB0aGVyZSBtYXkgbm90IGJlIEVQQyBsb3NlIGR1cmluZyBs aXZlIG1pZ3JhdGlvbi4gQW5kIHRlY2huaWNhbGx5IHdlCj4gICAgIGNhbm5vdCAqcmVhbGx5KiBs aXZlIG1pZ3JhdGUgZW5jbGF2ZSAoZXhwbGFpbmVkIGFib3ZlKSwgc28gbG9va3MgaXQncyBub3QK PiAgICAgZmVhc2libGUuIEJ1dCB0aGUgZmFjdCBpcyB0aGF0IGJvdGggTGludXggU0dYIGRyaXZl ciBhbmQgV2luZG93cyBTR1ggZHJpdmVyCj4gICAgIGhhdmUgYWxyZWFkeSBzdXBwb3J0ZWQgKnN1 ZGRlbiogbG9zZSBvZiBFUEMgKG5vdCBFUEMgbG9zZSBkdXJpbmcgcG93ZXIKPiAgICAgdHJhbnNp dGlvbiksIHdoaWNoIG1lYW5zIGJvdGggZHJpdmVyIGFyZSBhYmxlIHRvIHJlY292ZXIgaW4gY2Fz ZSBFUEMgaXMgbG9zdAo+ICAgICBhdCBhbnkgcnVudGltZS4gV2l0aCB0aGlzLCB0ZWNobmljYWxs eSB3ZSBhcmUgYWJsZSB0byBzdXBwb3J0IGxpdmUgbWlncmF0aW9uCj4gICAgIGJ5IHNpbXBseSBp Z25vcmluZyBFUEMuIEFmdGVyIFZNIGlzIG1pZ3JhdGVkLCB0aGUgZGVzdGluYXRpb24gVk0gd2ls bCBvbmx5Cj4gICAgIHN1ZmZlciAqc3VkZGVuKiBsb3NlIG9mIEVQQywgd2hpY2ggYm90aCBXaW5k b3dzIFNHWCBkcml2ZXIgYW5kIExpbnV4IFNHWAo+ICAgICBkcml2ZXIgYXJlIGFscmVhZHkgYWJs ZSB0byBoYW5kbGUuCj4gCj4gICAgIEJ1dCB3ZSBtdXN0IHBvaW50IG91dCBzdWNoICpzdWRkZW4q IGxvc2Ugb2YgRVBDIGlzIG5vdCBoYXJkd2FyZSBiZWhhdmlvciwKPiAgICAgYW5kIG90aGVyIFNH WCBkcml2ZXIgZm9yIG90aGVyIE9TZXMgKHN1Y2ggYXMgRnJlZUJTRCkgbWF5IG5vdCBpbXBsZW1l bnQKPiAgICAgdGhpcywgc28gZm9yIHRob3NlIGd1ZXN0cywgZGVzdGluYXRpb24gVk0gd2lsbCBi ZWhhdmlvciBpbiB1bmV4cGVjdGVkCj4gICAgIG1hbm5lci4gQnV0IEkgYW0gbm90IHN1cmUgd2Ug bmVlZCB0byBjYXJlIGFib3V0IG90aGVyIE9TZXMuCj4gCj4gRm9yIHRoZSBzYW1lIHJlYXNvbiwg d2UgYXJlIGFibGUgdG8gc3VwcG9ydCBjaGVjayBwb2ludGluZyBmb3IgU0dYIGd1ZXN0IChvbmx5 Cj4gTGludXggYW5kIFdpbmRvd3MpOwo+IAo+IEZvciBzbmFwc2hvdCwgd2UgY2FuIHN1cHBvcnQg c25hcHNob3QgU0dYIGd1ZXN0IGJ5IGVpdGhlcjoKPiAKPiAgICAgLSBTdXNwZW5kIGd1ZXN0IGJl Zm9yZSBzbmFwc2hvdCAoczMtczUpLiBUaGlzIHdvcmtzIGZvciBhbGwgZ3Vlc3RzIGJ1dAo+ICAg ICAgIHJlcXVpcmVzIHVzZXIgdG8gbWFudWFsbHkgc3VzcHBlbmQgZ3Vlc3QuCj4gICAgIC0gSXNz dWUgYW4gaHlwZXJjYWxsIHRvIGRlc3Ryb3kgZ3Vlc3QncyBFUEMgaW4gc2F2ZV92bS4gVGhpcyBv bmx5IHdvcmtzIGZvcgo+ICAgICAgIExpbnV4IGFuZCBXaW5kb3dzIGJ1dCBkb2Vzbid0IHJlcXVp cmUgdXNlciBpbnRlcnZlbnRpb24uCj4gCj4gV2hhdCdzIHlvdXIgY29tbWVudHM/Cj4gCj4gMy4g UmVmZXJlbmNlCj4gCj4gICAgIC0gSW50ZWwgU0dYIEhvbWVwYWdlCj4gICAgIGh0dHBzOi8vc29m dHdhcmUuaW50ZWwuY29tL2VuLXVzL3NneAo+IAo+ICAgICAtIExpbnV4IFNHWCBTREsKPiAgICAg aHR0cHM6Ly8wMS5vcmcvaW50ZWwtc29mdHdhcmUtZ3VhcmQtZXh0ZW5zaW9ucwo+IAo+ICAgICAt IExpbnV4IFNHWCBkcml2ZXIgZm9yIHVwc3RyZWFtaW5nCj4gICAgIGh0dHBzOi8vZ2l0aHViLmNv bS8wMW9yZy9saW51eC1zZ3gKPiAKPiAgICAgLSBJbnRlbCBTR1ggU3BlY2lmaWNhdGlvbiAoU0RN IFZvbCAzRCkKPiAgICAgaHR0cHM6Ly9zb2Z0d2FyZS5pbnRlbC5jb20vc2l0ZXMvZGVmYXVsdC9m aWxlcy9tYW5hZ2VkLzdjL2YxLzMzMjgzMS1zZG0tdm9sLTNkLnBkZgo+IAo+ICAgICAtIFBhcGVy OiBJbnRlbCBTR1ggRXhwbGFpbmVkCj4gICAgIGh0dHBzOi8vZXByaW50LmlhY3Iub3JnLzIwMTYv MDg2LnBkZgo+IAo+ICAgICAtIElTQ0EgMjAxNSB0dXRvcmlhbCBzbGlkZXMgZm9yIEludGVswq4g U0dYIC0gSW50ZWzCriBTb2Z0d2FyZQo+ICAgICBodHRwczovL3NvZnR3YXJlLmludGVsLmNvbS9z aXRlcy9kZWZhdWx0L2ZpbGVzLzMzMjY4MC0wMDIucGRmCj4gCj4gQm9xdW4gRmVuZyAoNSk6Cj4g ICB4ZW46IG1tOiBpbnRyb2R1Y2Ugbm9uLXNjcnViYmFibGUgcGFnZXMKPiAgIHhlbjogbW06IG1h bmFnZSBFUEMgcGFnZXMgaW4gWGVuIGhlYXBzCj4gICB4ZW46IHg4Ni9tbTogYWRkIFNHWCBFUEMg bWFuYWdlbWVudAo+ICAgeGVuOiB4ODY6IGFkZCBmdW5jdGlvbnMgdG8gcG9wdWxhdGUgYW5kIGRl c3Ryb3kgRVBDIGZvciBkb21haW4KPiAgIHhlbjogdG9vbHM6IGFkZCBTR1ggdG8gYXBwbHlpbmcg TVNSIHBvbGljeQo+IAo+IEthaSBIdWFuZyAoMTIpOgo+ICAgeGVuOiB4ODY6IGV4cG9zZSBTR1gg dG8gSFZNIGRvbWFpbiBpbiBDUFUgZmVhdHVyZXNldAo+ICAgeGVuOiB4ODY6IGFkZCBlYXJseSBz dGFnZSBTR1ggZmVhdHVyZSBkZXRlY3Rpb24KPiAgIHhlbjogdm14OiBkZXRlY3QgRU5DTFMgVk1F WElUCj4gICB4ZW46IHg4Ni9tbTogaW50cm9kdWNlIGlvcmVtYXBfd2IoKQo+ICAgeGVuOiBwMm06 IG5ldyAncDJtX2VwYycgdHlwZSBmb3IgRVBDIG1hcHBpbmcKPiAgIHhlbjogeDg2OiBhZGQgU0dY IGNwdWlkIGhhbmRsaW5nIHN1cHBvcnQuCj4gICB4ZW46IHZteDogaGFuZGxlIFNHWCByZWxhdGVk IE1TUnMKPiAgIHhlbjogdm14OiBoYW5kbGUgRU5DTFMgVk1FWElUCj4gICB4ZW46IHZteDogaGFu ZGxlIFZNRVhJVCBmcm9tIFNHWCBlbmNsYXZlCj4gICB4ZW46IHg4NjogcmVzZXQgRVBDIHdoZW4g Z3Vlc3QgZ290IHN1c3BlbmRlZC4KPiAgIHhlbjogdG9vbHM6IGFkZCBuZXcgJ3NneCcgcGFyYW1l dGVyIHN1cHBvcnQKPiAgIHhlbjogdG9vbHM6IGFkZCBTR1ggdG8gYXBwbHlpbmcgQ1BVSUQgcG9s aWN5Cj4gCj4gIGRvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duICAgICAgICAgfCAg IDggKwo+ICB0b29scy9saWJ4Yy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKPiAgdG9vbHMvbGlieGMvaW5jbHVkZS94Y19kb20uaCAgICAgICAgICAgICAgICB8ICAgNCAr Cj4gIHRvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oICAgICAgICAgICAgICAgfCAgMTYgKwo+ ICB0b29scy9saWJ4Yy94Y19jcHVpZF94ODYuYyAgICAgICAgICAgICAgICAgIHwgIDY4ICsrLQo+ ICB0b29scy9saWJ4Yy94Y19tc3JfeDg2LmggICAgICAgICAgICAgICAgICAgIHwgIDEwICsKPiAg dG9vbHMvbGlieGMveGNfc2d4LmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA4MiArKysKPiAg dG9vbHMvbGlieGwvbGlieGwuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArLQo+ICB0 b29scy9saWJ4bC9saWJ4bF9jcHVpZC5jICAgICAgICAgICAgICAgICAgIHwgIDE1ICstCj4gIHRv b2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jICAgICAgICAgICAgICAgICAgfCAgMTAgKwo+ICB0b29s cy9saWJ4bC9saWJ4bF9kb20uYyAgICAgICAgICAgICAgICAgICAgIHwgIDY1ICsrLQo+ICB0b29s cy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oICAgICAgICAgICAgICAgIHwgICAyICsKPiAgdG9vbHMv bGlieGwvbGlieGxfbm9jcHVpZC5jICAgICAgICAgICAgICAgICB8ICAgNCArLQo+ICB0b29scy9s aWJ4bC9saWJ4bF90eXBlcy5pZGwgICAgICAgICAgICAgICAgIHwgIDExICsKPiAgdG9vbHMvbGli eGwvbGlieGxfeDg2LmMgICAgICAgICAgICAgICAgICAgICB8ICAxMiArCj4gIHRvb2xzL29jYW1s L2xpYnMveGMveGVuY3RybF9zdHVicy5jICAgICAgICAgfCAgMTEgKy0KPiAgdG9vbHMvcHl0aG9u L3hlbi9sb3dsZXZlbC94Yy94Yy5jICAgICAgICAgICB8ICAxMSArLQo+ICB0b29scy94bC94bF9w YXJzZS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDg2ICsrKwo+ICB0b29scy94bC94bF9w YXJzZS5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKPiAgeGVuL2FyY2gveDg2L01h a2VmaWxlICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCj4gIHhlbi9hcmNoL3g4Ni9jcHUv Y29tbW9uLmMgICAgICAgICAgICAgICAgICAgfCAgMTUgKwo+ICB4ZW4vYXJjaC94ODYvY3B1aWQu YyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYyICsrLQo+ICB4ZW4vYXJjaC94ODYvZG9tY3Rs LmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDg3ICsrLQo+ICB4ZW4vYXJjaC94ODYvaHZtL2h2 bS5jICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsKPiAgeGVuL2FyY2gveDg2L2h2bS92bXgv dm1jcy5jICAgICAgICAgICAgICAgICB8ICAxNiArLQo+ICB4ZW4vYXJjaC94ODYvaHZtL3ZteC92 bXguYyAgICAgICAgICAgICAgICAgIHwgIDY4ICsrKwo+ICB4ZW4vYXJjaC94ODYvaHZtL3ZteC92 dm14LmMgICAgICAgICAgICAgICAgIHwgIDExICsKPiAgeGVuL2FyY2gveDg2L21tLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgOSArLQo+ICB4ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5j ICAgICAgICAgICAgICAgICAgIHwgICAzICsKPiAgeGVuL2FyY2gveDg2L21tL3AybS5jICAgICAg ICAgICAgICAgICAgICAgICB8ICA0MSArKwo+ICB4ZW4vYXJjaC94ODYvbXNyLmMgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICA2ICstCj4gIHhlbi9hcmNoL3g4Ni9zZ3guYyAgICAgICAgICAg ICAgICAgICAgICAgICAgfCA4MTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICB4ZW4v Y29tbW9uL3BhZ2VfYWxsb2MuYyAgICAgICAgICAgICAgICAgICAgIHwgIDM5ICstCj4gIHhlbi9p bmNsdWRlL2FzbS1hcm0vbW0uaCAgICAgICAgICAgICAgICAgICAgfCAgIDkgKwo+ICB4ZW4vaW5j bHVkZS9hc20teDg2L2NwdWZlYXR1cmUuaCAgICAgICAgICAgIHwgICA0ICsKPiAgeGVuL2luY2x1 ZGUvYXNtLXg4Ni9jcHVpZC5oICAgICAgICAgICAgICAgICB8ICAyOSArLQo+ICB4ZW4vaW5jbHVk ZS9hc20teDg2L2h2bS9odm0uaCAgICAgICAgICAgICAgIHwgICAzICsKPiAgeGVuL2luY2x1ZGUv YXNtLXg4Ni9odm0vdm14L3ZtY3MuaCAgICAgICAgICB8ICAgOCArCj4gIHhlbi9pbmNsdWRlL2Fz bS14ODYvaHZtL3ZteC92bXguaCAgICAgICAgICAgfCAgIDMgKwo+ICB4ZW4vaW5jbHVkZS9hc20t eDg2L21tLmggICAgICAgICAgICAgICAgICAgIHwgIDE5ICstCj4gIHhlbi9pbmNsdWRlL2FzbS14 ODYvbXNyLWluZGV4LmggICAgICAgICAgICAgfCAgIDYgKwo+ICB4ZW4vaW5jbHVkZS9hc20teDg2 L21zci5oICAgICAgICAgICAgICAgICAgIHwgICA1ICsKPiAgeGVuL2luY2x1ZGUvYXNtLXg4Ni9w Mm0uaCAgICAgICAgICAgICAgICAgICB8ICAxMiArLQo+ICB4ZW4vaW5jbHVkZS9hc20teDg2L3Nn eC5oICAgICAgICAgICAgICAgICAgIHwgIDg2ICsrKwo+ICB4ZW4vaW5jbHVkZS9wdWJsaWMvYXJj aC14ODYvY3B1ZmVhdHVyZXNldC5oIHwgICAzICstCj4gIHhlbi9pbmNsdWRlL3hlbi9tbS5oICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwo+ICB4ZW4vdG9vbHMvZ2VuLWNwdWlkLnB5ICAg ICAgICAgICAgICAgICAgICAgIHwgICAzICsKPiAgNDcgZmlsZXMgY2hhbmdlZCwgMTc1NyBpbnNl cnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xp YnhjL3hjX3NneC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC94ODYvc2d4LmMKPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL2FzbS14ODYvc2d4LmgKPiAKPiAtLSAKPiAy LjE1LjAKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0 dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=