From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joao Martins Subject: Re: [RFC] netif: staging grants for requests Date: Fri, 6 Jan 2017 17:13:46 +0000 Message-ID: <586FD04A.5070700@oracle.com> References: <58518B40.3050408@oracle.com> <586EAC1C.4020308@oracle.com> 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 1cPY2t-0006jM-QK for xen-devel@lists.xenproject.org; Fri, 06 Jan 2017 17:11:16 +0000 In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Stefano Stabellini Cc: "xen-devel@lists.xenproject.org" , Paul Durrant , Wei Liu , Andrew Cooper List-Id: xen-devel@lists.xenproject.org T24gMDEvMDYvMjAxNyAxMjozMCBBTSwgU3RlZmFubyBTdGFiZWxsaW5pIHdyb3RlOgo+IE9uIFRo dSwgNSBKYW4gMjAxNywgSm9hbyBNYXJ0aW5zIHdyb3RlOgo+PiBIZXkgU3RlZmFubywKPj4KPj4g VGhhbmtzIGEgbG90IGZvciB0aGUgcmV2aWV3IGFuZCB0aGUgY29tbWVudHMhIQo+Pgo+PiBPbiAw MS8wNC8yMDE3IDA3OjQwIFBNLCBTdGVmYW5vIFN0YWJlbGxpbmkgd3JvdGU6Cj4+PiBPbiBXZWQs IDE0IERlYyAyMDE2LCBKb2FvIE1hcnRpbnMgd3JvdGU6Cj4+Pj4gIyBQcm9wb3NlZCBFeHRlbnNp b24KPj4+Pgo+Pj4+ICMjIFRlcm1pbm9sb2d5Cj4+Pj4KPj4+PiBgZGF0YSBncmVmYCByZWZlcnMg dG8gdGhlIHJldXNhYmxlL3N0YWdpbmcgZ3JhbnRzLCB3aGVyZWFzIGBncmVmYCBhcmUgdGhlCj4+ Pj4gb25lcyB0aGF0IGFyZSBncmFudGVkL3Jldm9rZWQgZm9yIGVhY2ggcGFja2V0IGJlaW5nIHNl bnQuIGBjb21tYW5kIHJpbmdgCj4+Pj4gcmVmZXJzIHRvIHRoZSBjdXJyZW50IHJpbmcsIHdoZXJl YXMgYGRhdGEgbGlzdGAgcmVmZXJzIHRvIHRoZSBvbmUgcHJvcG9zZWQKPj4+PiBiZWxvdy4KPj4+ Pgo+Pj4+ICMjIFhlbnN0b3JlCj4+Pj4KPj4+PiAiZmVhdHVyZS1zdGFnaW5nLWdyYW50cyIgaXMg YSBjYXBhYmlsaXR5IHRvIGFsbG93IHRoZSB1c2Ugb2YgYSBzZXQgb2YKPj4+PiByZWN5Y2xlZCBi dWZmZXJzIHBlcm1hbmVudGx5IG1hcHBlZCBhdCB0aGUgZGV2aWNlIHNldHVwLiBJZgo+Pj4+IGFk dmVydGlzZWQsIHRoZSBmcm9udGVuZCB3aWxsIGdyYW50IGEgcmVnaW9uIGVxdWl2YWxlbnQgdG8g YGBgbWF4aW11bSBudW1iZXIKPj4+PiBvZiBzbG90cyBwZXIgcmluZyAqIHNpemUgb2YgYnVmZmVy YGBgIHdoZXJlOgo+Pj4+Cj4+Pj4gICogYG1heGltdW0gbnVtYmVyIG9mIHNsb3RzIHBlciByaW5n YCBpcyB0aGUgbnVtYmVyIG9mIHJlcXVlc3Qgc3RydWN0dXJlCj4+Pj4gICAgdGhhdCBjYW4gYmUg Zml0IHdpdGhpbiB0aGUgY29tbWFuZCByaW5nLiBCeSBkZWZhdWx0IGEgcmVxdWVzdAo+Pj4+ICAg IHN0cnVjdHVyZSBjb25zdW1lcyAxNiBieXRlcy4gVGhlIGZpcnN0IDY0IGJ5dGVzIG9mIGEgcmlu ZyBhcmUgdXNlZCBieQo+Pj4+ICAgIHByb2R1Y2VyIGFuZCBjb25zdW1lciBpbmRpY2llcy4KPj4+ Cj4+PiBUaGlzIG1lYW5zIHRoYXQgYnkgZGVmYXVsdCB0aGUgbnVtYmVyIG9mIHNsb3RzIGlzICg0 MDk2LTY0KS8xNiA9IDI1MiwKPj4+IGNvcnJlY3Q/Cj4+IFRoYXQgd291bGQgYmUgY29ycmVjdCBi dXQgSSBtYWRlIGEgZmV3IG1pc3Rha2VzIGluIHRoZSB3cml0aW5nLCBkZXNwaXRlIGEKPj4gZm9s bG93aW5nIHBhcmFncmFwaCBtZW50aW9uaW5nIHRoZSBjb3JyZWN0IHJpbmcgc2l6ZSBmb3IgYm90 aCBUWCBhbmQgUlguCj4+IFRoZSByaW5nIHNsb3Qgc2l6ZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBz aXplIG9mIHRoZSByZXF1ZXN0IG9yIHJlc3BvbnNlIChiZWluZyBhCj4+IHVuaW9uIG9mIHJlcXVl c3QgYW5kIHJlc3BvbnNlIHN0cnVjdHVyZXMpLiBUaGlzIG1lYW5zIHRoZSByaW5nIHNsb3Qgd291 bGQgZWl0aGVyCj4+IDggb2N0ZXRzIGZvciBSWCByaW5nIG9yIDEyIG9jdGV0cyBmb3IgVFggcmlu ZyB3aGljaCBpbiBlZmZlY3QgdHJhbnNsYXRlcyB0bzoKPj4KPj4gUlggOj0gKDQwOTYgLSA2NCkg LyA4ID0gNTA0Cj4+IFRYIDo9ICg0MDk2IC0gNjQpIC8gMTIgPSAzMzYKPj4KPj4gQW5kIGFzIFdl aSBjb3JyZWN0bHkgbWVudGlvbnMgYm90aCB2YWx1ZXMgYXJlIHJvdW5kZWQgZG93biB0byBhIHBv d2VyIG9mIDIuCj4+IFdoaWNoIHJlc3VsdHMgaW4gMjU2IHNsb3RzIGZvciBlYWNoIHJpbmcuIEkg d2lsbCBmaXggdGhpcyBpbiB0aGUgc3BlYy4KPj4KPj4+PiAgKiBgc2l6ZSBvZiBidWZmZXJgIGlz IHRoZSBtYXhpbXVtIHBvcnRpb24gb2YgdGhlIHBhY2tldCB0aGUgYmFja2VuZCAoYW5kCj4+Pj4g ICAgZnJvbnRlbmQpIGhhdmUgbmVnb3RpYXRlZCB3aGljaCB3aWxsIGJlIHB1dCBmb3IgZWFjaCBz bG90IG9mIHRoZQo+Pj4+ICAgIGBkYXRhIHJpbmdgLgo+Pj4+Cj4+Pj4gV2hpY2ggbWVhbnMgdGhh dCBmb3IgMjU2IHBvc3NpYmxlIHBhY2tldHMgaW4gcmluZyB3aXRoIDI1NiBieXRlcyBvZgo+Pj4+ IGNob3NlbiBzaXplIHRoZSBhbW91bnQgb2YgbWVtb3J5IHRvIGJlIHBlcm1hbmVudGx5IGdyYW50 ZWQgaXMgYSByZWdpb24gb2YKPj4+PiA2NEtCIGkuZS4gMTYgZ3JlZnMuCj4+Pj4KPj4+PiBUaGUg bGFjayBvZiAiZmVhdHVyZS1zdGFnaW5nLWdyYW50cyIgb3IgYSB2YWx1ZSBvZiAwIG1lYW5zIHRo YXQgaXQncyBub3QKPj4+PiBzdXBwb3J0ZWQuIElmIGZlYXR1cmUgaXMgcHJlc2VudCB0aGVuIGEg c2Vjb25kIGVudHJ5ICJzdGFnaW5nLWdyYW50cy1zaXplcyIKPj4+PiBtdXN0IGV4aXN0IGFuZCBp dCBjb250YWlucyB0aGUgc2l6ZXMgdGhhdCBjYW4gYmUgdXNlZCBwZXIgc2xvdC4gVG8gYXZvaWQK Pj4+PiBmcm9udGVuZCBjbG9iYmVyaW5nIHdpdGggdmFyaW91cyBkaWZmZXJlbnQgdmFsdWVzLCB3 ZSBsaW1pdCB0byBhIHNldCBvZiBmaXhlZAo+Pj4+IG9uZXMgc2VtaS1jb2xvbiBkZWxpbWl0ZWQu Cj4+Pj4KPj4+PiBUaGUgYWxsb3dlZCB2YWx1ZXMgYXJlIGltcGxlbWVudGF0aW9uIHNwZWNpZmlj LiBFeGFtcGxlcyBvZiBnb29kIHZhbHVlcwo+Pj4+IGluY2x1ZGU6IDI1NiAocHJvdG9jb2wvaGVh ZGVyIHJlZ2lvbiksIDIwNDggKGZpdHMgMSBNU1Mgd2hpY2ggaXMgY29tbW9uIHRvIGJlCj4+Pj4g aW4gdGhlIGxpbmVhciBwYXJ0IG9mIGxpbnV4IHBhY2tldHMpLCA0MDk2IChncmFudCBwZXIgcGFj a2V0IGlmIGZlYXR1cmUtc2c9MCwgZm9yCj4+Pj4gRFBESy9YRFAvbmV0bWFwIGJ1ZmZlcnMpIGFu ZCA2NTUzNSAobWF4aW11bSBwYWNrZXQgc2l6ZSBpLmUuCj4+Pj4gYGBgTkVUSUZfTlJfU0xPVFNf TUlOICogWEVOX1BBR0VfU0laRWBgYCBmb3IgZmVhdHVyZS1zZz0xKS4KPj4+Cj4+PiBJIGFtIG5v dCBmb2xsb3dpbmcuIFNvIGZhciB3ZSBoYXZlIGJlZW4gdGFsa2luZyBhYm91dCB0d28gdmFsdWVz Ogo+Pj4gLSBtYXhpbXVtIG51bWJlciBvZiBzbG90cyBwZXIgcmluZwo+Pj4gLSBzaXplIG9mIGJ1 ZmZlcgo+Pj4gV2UgaGF2ZSBhbHNvIGRpc2N1c3NlZCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHVzZWQg Zm9yIGluZGV4ZXMgYXQgdGhlCj4+PiBiZWdpbm5pbmcgb2YgdGhlIGNvbW1hbmQgcmluZywgd2hp Y2ggaXMgNjQgYnl0ZXMuCj4+IFJpZ2h0LCBidXQgdGhlc2UgNjQgYnl0ZXMgd2VyZSBvbmx5IG1l bnRpb25lZCB0byBkZXNjcmliZSB0aGUgY2FsY3VsYXRpb24gb2YKPj4gbnVtYmVyIG9mIHNsb3Rz Lgo+Pgo+Pj4KPj4+IEJ1dCBub3cgeW91IGFyZSBpbnRyb2R1Y2luZyBhIGZldyBvdGhlciB2YWx1 ZXM6Cj4+PiAtIHByb3RvY29sL2hlYWRlciByZWdpb24KPj4+IC0gZml0cyAxIE1TUyB3aGljaCBp cyBjb21tb24gdG8gYmUgaW4gdGhlIGxpbmVhciBwYXJ0IG9mIGxpbnV4IHBhY2tldHMKPj4+IC0g Z3JhbnQgcGVyIHBhY2tldAo+Pj4gLSBtYXhpbXVtIHBhY2tldCBzaXplIChJIHRha2UgdGhpcyBp cyB0aGUgc2FtZSBhcyBzaXplIG9mIGJ1ZmZlcikKPj4+Cj4+PiBDb3VsZCB5b3UgcGxlYXNlIGRl c2NyaWJlZCB3aGF0IHRoZXNlIHZhbHVlcyByZXByZXNlbnQgaW4gbW9yZSBkZXRhaWxzCj4+PiBh bmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSB0d28gcHJldmlvdXMgdmFsdWVzPwo+PiBUaGVzZSB2 YWx1ZXMgSSBnaXZlIGFib3ZlIGFyZSBleGFtcGxlcy9yZWNvbWVuZGF0aW9ucyBvZiB2YWxpZCAi c2l6ZSBvZiB0aGUKPj4gYnVmZmVyIiB2YWx1ZXMuIFRoYXQgbXVsdGlwbGllZCBmb3IgdGhlIG51 bWJlciBvZiBzbG90cyBnaXZlcyBob3cgbXVjaCBpdCBpcwo+PiBncmFudGVkIGJ5IHRoZSBmcm9u dGVuZC4KPj4KPj4gVGhvdWdoIEkgd2FudCB0byBiZSBhYmxlIHRvIHNheSB0aGF0IHRoZSBiYWNr ZW5kIHdpbGwgY29weSB1cCB0byBOIG11Y2ggYnl0ZXMgdG8KPj4gdGhlc2Ugc3RhZ2luZyBncmFu dHMgKG9yIGRhdGEgZ3JlZnMgYXMgdGVybWlub2xvZ3kgdXNlZCBpbiB0aGUgZG9jKSwgYmVmb3Jl IGl0Cj4+IHJlc29ydHMgdG8gZ3JhbnQgb3BzLgo+IAo+IEkgdGhpbmsgSSB1bmRlcnN0YW5kLgo+ IAo+IAo+PiBIZW5jZSB0aGUgdmFsdWUgb2YgNjU1MzYgaXMgdGhlIHNhbWUgYXMgNDA5NiBpbiB0 ZXJtcyBvZgo+PiBudW1iZXIgb2YgZGF0YSBncmVmcyBwcm92aWRlZCwgYnV0IHRoZSBiYWNrZW5k IHdpbGwganVzdCBjb3B5IGxlc3MgZnJvbS90byB0aGUKPj4gc3RhZ2luZyBhcmVhIGxlYXZpbmcg dGhlIHJlc3QgdG8gYmUgdXNlZCB3aXRoIHRoZSBjb21tYW5kIHJpbmcgZ3JlZnMgKGdyYW50Cj4+ IG1hcC91bm1hcC9ldGMpLiBEb2VzIHRoaXMgYW5zd2VyIHlvdXIgcXVlc3Rpb24/Cj4gCj4gV2hp Y2ggdmFsdWUgb2YgNjU1MzYgaXMgdGhlIHNhbWUgYXMgNDA5Nj8gIFBhY2tldCBzaXplPyBCZWNh dXNlIHVwIHRvCj4gNDA5NiBieXRlcyBhcmUgY29waWVkIHRvIHN0YWdpbmcgZ3JhbnRzLCB0aGUg cmVzdCBpcyBkZWFsdCB3aXRoIGFzCj4gdXN1YWw/CkkgbWVhbiB0aGUgc2FtZSBpbiB0ZXJtcyBv ZiB0aGUgYW1vdW50IG9mIHN0YWdpbmcgZ3JhbnRzOiA0MDk2IGlzIG9uZSBncmVmIHdoaWNoCm11 bHRpcGxpZWQgYnkgbnVtYmVyIG9mIHNsb3RzIGdpdmVzIDI1NiBncmVmcyBwcm92aWRlZCBieSBm cm9udGVuZCBmb3IgY29weWluZwpkYXRhLiA2NTUzNiByZXByZXNlbnQgdGhlIG1heGltdW0gcGFj a2V0IHNpemUgc3VwcG9ydGVkIGluIGJ5IG5ldGJhY2svbmV0ZnJvbnQKd2l0aCBpbiBhIHBhY2tl dCBzcGFubmVkIGluIG11bHRpcGxlIHNsb3RzLiA2NTUzNiBqdXN0IGhhcyBhIGRpZmZlcmVudCBz ZW1hbnRpYwotIHdoaWNoIGlzIHRvIHNheSB0aGF0IHdlIHdvdWxkIGJlIGNvcHlpbmcgbW9yZSB0 aGFuIDEgZ3JlZjsgaXQgY291bGQgYmUgbGVzcwpsaWtlIDMyNzY4LiBCdXQgaW4gcmVhbGl0eSB3 aXRoIHR4LWRhdGEtbGVuPTQwOTYgd2UgYXJlIGFscmVhZHkgZ3JhbnRpbmcgdGhlCm1heGltdW0g KGUuZy4gb25lIGdyZWYgZm9yIHJpbmcgc2xvdCksIGhlbmNlIDY1NTM2IGl0J3MganVzdCBhIHNl bWFudGljCmRpZmZlcmVuY2Ugb24gdGhlIGJhY2tlbmQgdG8gY29weSBtb3JlIGFuZCBncmFudCBs ZXNzIChvciBubyBncmFudHMgaW4gdGhlCmxhdHRlciBjYXNlKS4KCj4+IEkgd2VudCB3aXRoIHRo ZSBzaW1wbGUgYXBwcm9hY2ggdG8gc3RhcnQgd2l0aCwgYnV0IEkgYWxzbyB0aG91Z2h0IG9mIGhh dmluZyBhCj4+IHNtYWxsIGRlc2NyaXB0b3IgdG8gZGVzY3JpYmUgaG93IG11Y2ggb2YgdGhpcyBz dGFnaW5nIGFyZWEgaXMgdXNlZCBmb3IgcGFja2V0LAo+PiBpbnN0ZWFkIG9mIGEgZml4ZWQgbmVn b3RpYXRlZCB2YWx1ZS4gQnV0IGl0IHdvdWxkIGxlYXZlIG1lIHdpdGggb25seSBhIGxlbmd0aAo+ PiBmaWVsZC4gVW5sZXNzIHdlIGNvdWxkIGhhdmUgYSBoYWRlciB3aXRoIHRoZSBtb3N0IGNvbW1v bmx5IHVzZWQgZXh0cmEgaW5mbyBzbG90Cj4+IChHU08pIGFzIHBhcnQgb2YgdGhpcyBkZXNjcmlw dG9yIHRvbywgYW5kIHNhdmUgMSBzbG90IHBlciBwYWNrZXQgZm9yIEdTTy9HUk8KPj4gcGFja2V0 cy4KPiAKPiBJIHRoaW5rIHRoYXQgYSBmaXhlZCBzaXplIGlzIE9LLiBJJ2xsIGNhbGwgIk4iIHRo ZSBtYXggbnVtYmVyIG9mIGJ5dGVzCj4gY29waWVkIHRvIHRoZSBzdGFnaW5nIGdyYW50cy4gQXJl IHdlIGdvaW5nIHRvIGF2b2lkIGdyYW50aW5nIHRoZQo+IG9yaWdpbmFsIHBhY2tldCBkYXRhIGlm IHRoZSBwYWNrZXQgc2l6ZSA8PSBOPwpZZWFwLCB3ZSB3b3VsZCBvbmx5IHJlc29ydCB0byBncmFu dCBvcHMgZm9yIHNpemUgPiBOLgoKPiAKPiBJbiBmYWN0LCB3b3VsZG4ndCBpdCBiZSBiZXR0ZXIg dG8gb25seSBkbyBtZW1jcHkgaWYgcGFja2V0IHNpemUgPD0gTiwKPiBhbmQgb25seSBkbyBtYXBw aW5nIG9yIGdyYW50IGNvcGllcyBpZiBwYWNrZXQgc2l6ZSA+IE4/IFRoYXQgd2F5IHdlCj4gY291 bGQgc2tpcCBhbGwgZ3JhbnQgb3BlcmF0aW9ucyB3aGVuIHBhY2tldCBzaXplIDw9IE4gYW5kIGJl aGF2ZQo+IG5vcm1hbGx5IGluIG90aGVyIGNhc2VzLgpUaGF0IGlzIHRoZSBwdXJwb3NlIC0gbXkg ZXhwbGFuYXRpb24gd2FzIGEgYml0IG1lc3N5LgoKPj4+PiBJbmRpdmlkdWFsIHNpemUgY292ZXJl ZCBwZXIgZW50cnkgYnkgZnJvbnRlbmQgaXMgdGhyb3VnaCBgYGB0eC1kYXRhLWxlbmBgYCBvcgo+ Pj4+IGBgYHJ4LWRhdGEtbGVuYGBgIHdoaWNoIGNvbnRhaW5zIG1heGltdW0gYW1vdW50IG9mIGRh dGEgb24gYSBzaW5nbGUgcGFja2V0Lgo+Pj4+IENob3NlbiB2YWx1ZXMgb2YgInR4LWRhdGEtbGVu IiBhbmQgInJ4LWRhdGEtbGVuIiBhcmUgYXN5bW1ldHJpY2FsIChoZW5jZSBjYW4KPj4+PiBiZSBk aWZmZXJlbnQgYmV0d2VlbiBUWCBhbmQgUlgpIGFyZSB2YWxpZGF0ZWQgYWdhaW5zdCB0aGlzIGxp c3Qgb2YgdmFsaWQgc2l6ZXMuCj4+Pj4gRm9yIGl0J3MgdXNlIHNlZSBbZGF0YXBhdGhdKCNkYXRh cGF0aC1jaGFuZ2VzKSBzZWN0aW9uIGZ1cnRoZXIgYmVsb3cuCj4+Pj4KPj4+PiAJL2xvY2FsL2Rv bWFpbi8xL2RldmljZS92aWYvMC9mZWF0dXJlLXN0YWdpbmctZ3JhbnRzID0gIjEiCj4+Pj4gCS9s b2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAvc3RhZ2luZy1ncmFudHMtc2l6ZXMgPSAiMTI4OzI1 NjsyMDQ4OzQwOTYiCj4+Pgo+Pj4gSSBkb24ndCBnZXQgd2hhdCB0aGUgNCBudW1iZXJzIG1lYW4u IEFyZSB0aGV5IHBvc3NpYmxlIHN1cHBvcnRlZCBvcHRpb25zCj4+PiBmb3IgInR4LWRhdGEtbGVu IiBhbmQgInJ4LWRhdGEtbGVuIiwgd2hpY2ggaW4gdHVybiBhcmUgdGhlICJzaXplIG9mCj4+PiBi dWZmZXIiIGFzIGRlc2NyaWJlZCBhYm92ZT8KPj4gRXhhY3RseSEKPj4KPj4+IElmIHNvLCBzaG91 bGRuJ3QgdGhleSBiZSB3cml0dGVuIGJ5IHRoZSBiYWNrZW5kIHRvIGJhY2tlbmQgcGF0aHM/IFdo eQo+Pj4gb25seSA0IG9wdGlvbnM/IENvdWxkIHRoZXJlIGJlIG1vcmU/IFdoYXQgaXMgdGhlIG1h eCBudW1iZXIgb2YgYWxsb3dlZAo+Pj4gb3B0aW9uPyBBbmQgd2hhdCBpcyB0aGUgbWluaW11bT8K Pj4gVGhlIHBhdGggaXMgd3JvbmcsIGl0IHNob3VsZCBiZSB0aGUgYmFja2VuZCBwYXRoLiBUaGUg YmFja2VuZCBhZHZlcnRpc2VzIHRoaXMKPj4gc2V0IG9mIHZhbHVlcyB0aGF0IGNhbiBiZSB1c2Vk LCBhbmQgaXQgY2FuIGFkdmVydGlzZSBhcyBtYW55IHZhbHVlcyBhcyBpdAo+PiBzdXBwb3J0cyAo c2VwYXJhdGVkIGJ5IHNlbWljb2xvbikuIFRoZSB2YWx1ZXMgSSBzZWxlY3RlZCB3ZXJlIHNpbXBs eSBwaWNrZWQKPj4gYmFzZWQgb24gd2hhdCBJIGV4cGxhaW4gaW4gdGhlIHByZXZpb3VzIHBhcmFn cmFwaC4gZnJvbnRlbmQgd2lsbCB0aGVuIHBpY2sgb25lCj4+IG9mIHRob3NlLgo+IAo+IEFsbCBy aWdodCwgYWxsIHRoaXMgbmVlZHMgdG8gYmUgY2xlYXJseSB3cml0dGVuIGluIHRoZSBkb2MuCk9L LgoKPj4gL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmlmLzEvMC9mZWF0dXJlLXN0YWdpbmctZ3Jh bnRzID0gIjEiCj4+IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZpZi8xLzAvc3RhZ2luZy1ncmFu dHMtc2l6ZXMgPSAiMTI4OzI1NjsyMDQ4OzQwOTYiCj4+Cj4+IEkgY291bGQgYmUgbGVzcyByZXN0 cmljdGl2ZSBhbmQgaW5zdGVhZCB0dXJuIHRoZXNlIHNpemVzIGludG8gYSB0dXBsZSB3aXRoCj4+ ICJtaW47bWF4IiBvciB0d28gc2VwYXJhdGUgeGVuc3RvcmUgZW50cmllcyBpZiBmb2xrcyBwcmVm ZXIuCj4+Cj4+IEFuZCB0aGUgZnJvbnRlbmQganVzdCBhZHZlcnRpc2VzIGEgZmVhdHVyZSBlbnRy eSBsaWtlIHRoaXM6Cj4+Cj4+IC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAvZmVhdHVyZS1z dGFnaW5nLWdyYW50cyA9ICIxIgo+Pgo+PiBPdGhlciBhbHRlcm5hdGl2ZXMgb24gdGhlIHRhYmxl IHdhcyB0byBzcGVjaWZ5IHRoaXMgcmVnaW9uIGFzIHBhcnQgb2YgdGhlCj4+IHJlcXVlc3QvcmVz cG9uc2UsIGFuZCB0dXJuIHRoZSBUWC9SWCByaW5ncyBpbnRvIG11bHRpLXBhZ2Ugb25lcy4gQnV0 IEkgZm91bmQKPj4gdGhhdCBhIGJpdCBsaW1pdGF0aXZlLCBmb3IgZXhhbXBsZSBpZiB3ZSB3YW50 ZWQgdG8gYWxsb3cgYSBndWVzdCB0byB1c2UgYSBmaXgKPj4gc2V0IG9mIHBhZ2VzIChEUERLLCBu ZXRtYXAsIFhEUCkgd2hpY2ggd291bGQgcmVzdWx0IGluIGFyb3VuZCA+MjU2Cj4+ICJ7dHgscnh9 LXJpbmctcmVmIiBlbnRyaWVzLgo+Pgo+Pj4+IAkvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZpZi8w L3F1ZXVlLTAvdHgtZGF0YS1yZWYwID0gIjxkYXRhLXJlZi10eDA+Igo+Pj4+IAkvbG9jYWwvZG9t YWluLzEvZGV2aWNlL3ZpZi8wL3F1ZXVlLTAvdHgtZGF0YS1sZW4gPSAiMTI4Igo+Pj4+IAkvbG9j YWwvZG9tYWluLzEvZGV2aWNlL3ZpZi8wL3F1ZXVlLTAvcngtZGF0YS1yZWYwID0gIjxkYXRhLXJl Zi1yeDA+Igo+Pj4+IAkvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZpZi8wL3F1ZXVlLTAvcngtZGF0 YS1sZW4gPSAiMjU2Igo+Pj4+Cj4+Pj4gVGhlIGBgYHR4LWRhdGEtcmVmJXVgYGAgYW5kIGBgYHJ4 LWRhdGEtcmVmJXVgYGAgZGVzY3JpYmUgdGhlIGxpc3Qgb2YgZ3JhbnRzIHRvIGJlCj4+Pj4gdXNl ZCBmb3IgZWFjaCByaW5nLiBUaGUgZXhhbXBsZSBhYm92ZSBleGVtcGxpZmllcyBhIGxpc3QgY29t cG9zZWQgb2YgYSBzaW5nbGUKPj4+Cj4+PiBGb3Igd2hhdCByaW5nLCB0aGUgZGF0YSByaW5nPwo+ PiBUaGUgY29tbWFuZCByaW5nLiBUaGVyZSBpcyBubyBkYXRhIHJpbmcsIGJ1dCBhIGxpc3Qgb2Yg Z3JlZnMgZ2l2ZW4gdG8gdGhlCj4+IGJhY2tlbmQsIGhlbmNlIGhlcmUgSSBtZW50aW9uIHRoaXMg YXMgImRhdGEgbGlzdCIuIEFuZCB0aGUgImRhdGEgbGlzdCIgZW50cmllcyBJCj4+IGFsc28gcmVm ZXIgdG8gdGhlbSBhcyAic3RhZ2luZy9kYXRhIGdyZWZzIi4gUGx1cyB0aGVyZSdzIG9uZSBsaXN0 IGZvciBUWCBhbmQKPj4gYW5vdGhlciBSWC4KPj4KPj4+Cj4+Pj4gcGFnZSB3aGVyZWFzIG11bHRp cGxlIHBhZ2VzIHdvdWxkIGJlIGFzOgo+Pj4+Cj4+Pj4gCXR4LWRhdGEtcmVmMCA9IDxkYXRhLXJl Zi10eDA+Cj4+Pj4gCXR4LWRhdGEtcmVmMSA9IDxkYXRhLXJlZi10eDE+Cj4+Pj4gCXJ4LWRhdGEt cmVmMCA9IDxkYXRhLXJlZi1yeDA+Cj4+Pj4gCXJ4LWRhdGEtcmVmMSA9IDxkYXRhLXJlZi1yeDE+ Cj4+Pj4KPj4+PiBFYWNoIHNsb3QgaW4gdGhlIGBkYXRhLXJlZmAgbGlzdCBpcyBmb3JtYXR0ZWQg YXMgZm9sbG93aW5nOgo+Pj4+Cj4+Pj4gICAgICAgICAgICAgMCAgICAgMSAgICAgMiAgICAgMyAg ICAgNCAgICAgNSAgICAgNiAgICAgNyAgb2N0ZXQKPj4+PiAgICAgICAgICArLS0tLS0rLS0tLS0r LS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCj4+Pj4gICAgICAgICAgfCBpZCAg ICAgICAgfCBncmVmICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgICAgfAo+Pj4+ICAgICAgICAg ICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKPj4+Pgo+ Pj4+IAlpZDogdGhlIGZyYW1lIGlkZW50aWZpZXIuCj4+Pgo+Pj4gV2hhdCBpcyBhICJmcmFtZSBp ZGVudGlmaWVyIj8KPj4gSXQncyB0aGUgYnVmZmVyIHdlIGFyZSBzaGFyaW5nLCB0aGUgb25lIHdl IHVzZSB0byBtZW1jcHkgZm9yIGJhY2tlbmQgdG8gdXNlLgo+PiBQcm9iYWJseSBzaG91bGQgdXNl ICJidWZmZXIiIGluc3RlYWQuIChTZWUgZnVydGhlciBiZWxvdyBhYm91dCBpdHMgdXNlKQo+Pgo+ Pj4+IAlncmVmOiBncmFudCByZWZlcmVuY2UgdG8gdGhlIGZyYW1lLgo+Pj4+IAlvZmZzZXQ6IG9m ZnNldCB3aXRoaW4gdGhlIGZyYW1lLgo+Pj4KPj4+IEkgYXNzdW1lZCB0aGF0IGVhY2ggZ3JhbnQg dXNlZCBmb3IgdGhlIGRhdGEgcmluZyB3b3VsZCBiZSB1c2VkIGluIGl0cwo+Pj4gZW50aXJldHku IERvZXMgaXQgcmVhbGx5IG1ha2Ugc2Vuc2UgdG8gY3JlYXRlIGEgcmluZyB1c2luZyBwb3J0aW9u cyBvZgo+Pj4gcGFnZXM/IEdpdmVuIHRoYXQgd2UgY2FuIG9ubHkgc2hhcmUgbWVtb3J5IGF0IGEg cGFnZSBncmFudWxhcml0eSwKPj4gTXkgbWFpbiBhcmd1bWVudCB3aXRoIGhhdmluZyBwb3J0aW9u cyBvZiBwYWdlcyBpcyBmb3IgZ3Vlc3RzIHRoYXQgb25seSB3YW50IHRvCj4+IHVzZSB0aGlzIHJl Z2lvbiB0byBjb3B5IHRoZSBsaW5lYXIgcmVnaW9uIGFuZCBoZW5jZSBoYXZlIGEgbXVjaCBzbWFs bGVyCj4+IGZvb3RwcmludCBwZXIgcmluZyAod2l0aCBqdXN0IDE2IGdyZWZzKS4gT3RoZXJ3aXNl IHdlIHdvdWxkIGJlIHNoYXJpbmcgMjU2Cj4+IGdyYW50cyB3aGlsZSBvbmx5IHVzaW5nIDEvMTYg b2YgaXQuIEluIHRoZSByZXN0IG9mIHRoZSBzcGVjIEkgdGFrZSB0aGlzIGlzIHRoZQo+PiBnZW5l cmFsIGNhc2UsIHdoZXJlIHdlIG1lbWNweSBvbmx5IGEgc21hbGwgcG9ydGlvbiBvZiB0aGUgcGFj a2V0Lgo+IAo+IEV2ZW4gaWYgMTYgZ3JlZiBpcyB5b3VyIG1haW4gdXNlIGNhc2UsIDE2KjI1NiA9 IDQwOTY6IHlvdSBjYW4gYWNoaWV2ZQo+IHRoYXQgYnkgc2hhcmluZyBvbmUgc2luZ2xlIHBhZ2Ug Zm9yIGFsbCBkYXRhIHNsb3RzLgpXaGF0IEkgYW0gcHJvcG9zaW5nIGZvciB0aGUgZ2VuZXJhbCBj YXNlIHdvdWxkIGJlIChlLmcuIHJ4LWRhdGEtbGVuPTI1Nik6IDI1NiAqCjI1NiA9IDY1NTM2OyBz byA2NGsgaXMgMTYgZ3JlZnMgYW5kIHRoYXQncyB3aGVyZSB0aGlzIG51bWJlciBpcyBjb21pbmcg ZnJvbS4KCj4+PiBJIGRvbid0IHRoaW5rIGl0IG1ha2VzIHNlbnNlOiB0aGUgcmVzdCBvZiB0aGUg cGFnZSB3b3VsZCBzdGlsbCBiZQo+Pj4gYWNjZXNzaWJsZSBmcm9tIHRoZSBiYWNrZW5kLCB3aGlj aCBjb3VsZCBjb21wcm9taXNlIGl0cyBjb250ZW50LiBJIHdvdWxkCj4+PiBzaGFyZSBhIGxpc3Qg b2YgcGFnZXMgdGhhdCBjYW4gYmUgbWFwcGVkIGNvbnRpZ3VvdXNseSB0byBjcmVhdGUgYSBkYXRh Cj4+PiByaW5nLgo+PiBOb3RlIHRoYXQgdGhlIHBlcm1pc3Npb25zIG9mIHRoZSBUWCBncmVmcyBh cmUgcmVhZG9ubHksIHdoZXJlYXMgdGhlIHJ4IHJpbmcgaXMKPj4gcmVhZC93cml0ZSwgc28gSSBp bmhlcml0IHRoaXMgc2FtZSBwcm9wZXJ0eSBoZXJlIGZvciB0aGUgZGF0YSBncmVmcyB0b28uIEkK Pj4gd291bGRuJ3QgbWluZCBoYXZpbmcgYSBncmFudCBwZXIgcGFja2V0Owo+IAo+IFRoYXQncyBu b3Qgd2hhdCBJIGFtIHN1Z2dlc3RpbmcuCj4gCj4gTGV0J3Mgc3VwcG9zZSB0aGF0IHRoZSBmcm9u dGVuZCBjaG9vc2VzIGEgc2xvdCBzaXplIG9mIDEyOCBhbmQgdGhhdCB3ZQo+IGhhdmUgMjU2IHNs b3RzIGluIHRvdGFsLiBUaGUgZnJvbnRlbmQgc2hhcmVzIDggcGFnZXMgdG8gdGhlIGJhY2tlbmQ6 Cj4gCj4gIDEyOCoyNTYgPSAzMjc2OCA9IDgqNDA5Ngo+IAo+IHRoZXNlIDggcGFnZXMgYXJlIGdv aW5nIHRvIGJlIHVzZWQgZm9yIGFsbCBkYXRhIHNsb3RzLiBTbyBzbG90IG51bWJlciAzNAo+IChp ZiB3ZSBjb3VudCBmcm9tIDEpIGlzIHRoZSBzZWNvbmQgc2xvdCBvZiB0aGUgc2Vjb25kIHBhZ2Ug KDMyIGRhdGEKPiBzbG90cyBwZXIgcGFnZSkuCkV4YWN0bHkgYW5kIHRoYXQncyB3aGF0IEkgYW0g cHJvcG9zaW5nIDopIFRoZSB0ZXh0IGFwcGVhcnMgdG8gYmUgYSBiaXQgYW1iaWd1b3VzCmFuZCBj YXVzaW5nIGEgbGl0dGxlIGNvbmZ1c2lvbiwgbXkgYXBvbG9naWVzLgoKPj4gaXMgeW91ciBjb25j ZXJuIGNvbWluZyBmcm9tIHRoZSBmYWN0IHRoYXQgdGhlc2UgUlggZGF0YSBncmVmcyBhcmUKPj4g Y29uc3RhbnRseSBtYXBwZWQgaGVuY2UgYmFja2VuZCBjYW4gbWFuZ2xlIGFueXRpbWUgYXMgb3Bw b3NlZCB0byBSWAo+PiBncmFudHMgYXJlIHN0aWxsIGJlaW5nIHJldm9rZWQgd2hlbiBnaXZlbiBi YWNrIHRvIHRoZSBmcm9udGVuZD8KPiAKPiBJcnJlc3BlY3RpdmUgZnJvbSB3aGF0IG5ldGZyb250 L25ldGJhY2sgZG9lcyB0b2RheSB3aXRoIHRoZSBncmFudHMsIGl0Cj4gaXMgY2VydGFpbmx5IGJl dHRlciB0byBhdm9pZCBzaGFyaW5nIHVubmVjZXNzYXJ5IG1lbW9yeSB0byB0aGUgb3RoZXIKPiBl bmQuClllYXAuCgo+PiBCdXQgdGhlbiBub3RoaW5nIGN1cnJlbnRseSBzdG9wcyBhIGJhY2tlbmQg dG8gd3JpdGUgdG8gdGhlc2UgcGFnZXMKPj4gaXJyZXNwZWN0aXZlIG9mIHRoZSBhcHByb2FjaCAo d2l0aCBvciB3aXRob3V0IHN0YWdpbmcgZ3JhbnRzKSB1bnRpbAo+PiB0aGV5IGFyZSBjb3BpZWQv cmV2b2tlZDsgdGhlIGZyb250ZW5kIHdvdWxkIGFsd2F5cyBjb3B5IGZyb20gdGhlCj4+IHN0YWdp bmcgcmVnaW9uIGludG8gYSBndWVzdC1vbmx5IHZpc2libGUgcmVnaW9uLgo+Pgo+Pj4+IFRoaXMg bGlzdCBoYXMgdHdpY2UgYXMgbWF4IHNsb3RzIGFzIHdvdWxkIGhhdmUgYHR4LXJpbmctcmVmYCBv ciBgcngtcmluZy1yZWZgCj4+Pj4gcmVzcGVjdGl2ZWx5LCBhbmQgaXQgaXMgc2V0IHVwIGF0IGRl dmljZSBjcmVhdGlvbiBhbmQgcmVtb3ZlZCBhdCBkZXZpY2UKPj4+PiB0ZWFyZG93biwgc2FtZSBh cyB0aGUgY29tbWFuZCByaW5nIGVudHJpZXMuIFRoaXMgd2F5IHdlIGtlZXAgdXAgd2l0aCByaW5n IHNpemUKPj4+PiBjaGFuZ2VzIGFzIGl0IGl0IGV4cGVjdGVkIHRvIGJlIGluIHRoZSBjb21tYW5k IHJpbmcuIEEgaHlwb3RoZXRpY2FsIG11bHRpLXBhZ2UKPj4+ICAgICAgICAgICAgICAgICBeIHJl cGV0aXRpb24KPj4gT0ssIHdpbGwgcmVtb3ZlIGl0Lgo+Pgo+Pj4+IGNvbW1hbmQgcmluZyB3b3Vs ZCBpbmNyZWFzZSBudW1iZXIgb2Ygc2xvdHMgYW5kIHRodXMgdGhpcyBkYXRhIGxpc3Qgd291bGQg Z3Jvdwo+Pj4+IGFjY29yZGluZ2x5LiBMaXN0IGlzIHRlcm1pbmF0ZWQgYnkgYW4gZW50cnkgd2hp Y2ggYGBgZ3JlZmBgYCBmaWVsZCBpcyAwLCBoYXZpbmcKPj4+PiBpZ25vcmVkIHRoZSBvdGhlciBm aWVsZHMgb2YgdGhpcyBzcGVjaWZpYyBlbnRyeS4KPj4+Cj4+PiBDb3VsZCB5b3UgcGxlYXNlIGV4 cGxhaW4gYSBiaXQgbW9yZSBob3cgdGhlIGNvbW1hbmQgcmluZyBpbmNyZWFzZXMgdGhlCj4+PiBu dW1iZXIgb2Ygc2xvdCBhbmQgd2h5IHdlIG5lZWQgdG8gYWxsb2NhdGUgdHdpY2UgdGhlIG51bWJl ciBvZiByZXF1aXJlZAo+Pj4gc2xvdHMgYXQgdGhlIGJlZ2lubmluZz8KPj4gIlRoaXMgbGlzdCBo YXMgdHdpY2UgYXMgbWF4IHNsb3RzIGFzIiBpcyBtZWFudCB0byBzYXkgdGhhdCB0aGUgbGlzdCBo YXMgdHdpY2UgYXMKPj4gY2FwYWNpdHkgYXMgdGhlIGNvbW1hbmQgcmluZy4gVGhlIGxpc3QgZW50 cnkgaXMgOCBvY3RldHMsIHNvIG9uZSBwYWdlIGZpdHMgNTEyCj4+IGVudHJpZXMuIFRoZSBkYXRh IHJlZiBpcyBvbmx5IGZpbGxlZCB3aXRoIHVwIHRvIHRoZSBjb21tYW5kIHJpbmcgc2l6ZSB3aGlj aAo+PiBtZWFucyBvbmx5IGhhbGYgb2YgaXQgd291bGQgYmUgZmlsbGVkIGN1cnJlbnRseS4gSSB3 aWxsIGFkanVzdCB0aGlzIHNlbnRlbmNlCj4+IGhlcmUgdG8gbWFrZSBpdCBtb3JlIGNsZWFyLgo+ Pgo+PiBtdWx0aS1wYWdlIHJpbmdzIGFyZW4ndCBzdXBwb3J0ZWQgb24gbmV0YmFjay9uZXRmcm9u dCAoeWV0KSBidXQgYXMgYW4gZXhhbXBsZSB3ZQo+PiB3b3VsZCBoYXZlIG9uZSBgdHgtZGF0YS1y ZWYwYCB0byByZXByZXNlbnQgdGhlIGNvbW1hbmQgcmluZyBzbG90cyBvZgo+PiBgdHgtcmluZy1y ZWYwYCBhbmQgdHgtcmluZy1yZWYxYC4gSSBub3RpY2VkIHRoYXQgdG8gbm90IHdhc3RlIGdyYW50 cywgSSBuZWVkIHRvCj4+IGFzc3VtZSB0aGUgYGBgZGF0YS1yZWZgYGAgaXMgZnVsbCB3aXRoIHRo ZSBsYWNrIG9mIGEgdGVybWFudGluZyBlbnRyeTsgb3RoZXJ3aXNlCj4+IEkgd291bGQgZW5kdXAg bmVlZGluZyBgdHgtZGF0YS1yZWYxYCB0byBoYXZlIGEgdGVybWluYXRpbmcgZW50cnkuIEkgd2ls bCBhZGQgYQo+PiBzZW50ZW5jZSBtZW50aW9uaW5nIHRoaXMuCj4+Cj4+Pj4gIyMgRGF0YXBhdGgg Q2hhbmdlcwo+Pj4+Cj4+Pj4gVGhlIHBhY2tldCBpcyBjb3BpZWQgdG8vZnJvbSB0aGUgbWFwcGVk IGRhdGEgbGlzdCBncmVmcyBvZiB1cCB0byBgdHgtZGF0YS1sZW5gCj4+Pj4gb3IgYHJ4LWRhdGEt bGVuYC4gVGhpcyBtZWFucyB0aGF0IHRoZSBidWZmZXIgKHJlZmVyZW5jZWQgYnkgYGdyZWZgIGZy b20gd2l0aGluCj4+Pj4gdGhlIGBzdHJ1Y3QgbmV0aWZfW3R4fHJ4XV9yZXF1ZXN0YCkgaGFzIHRo ZSBzYW1lIGRhdGEgdXAgdG8gYHNpemVgLiAgSW4gb3RoZXIKPj4+PiB3b3JkcywgKmdyZWZbMC0+ c2l6ZV0gY29udGVudHMgaXMgcmVwbGljYXRlZCBvbiB0aGUgYGRhdGEtcmluZ2AgYXQgYGlkeGAu IEhlbmNlCj4+Pj4gbmV0YmFjayBzaG91bGQgaWdub3JlIHVwIHRvIGBzaXplYCBvZiB0aGUgYGdy ZWZgIHdoZW4gcHJvY2Vzc2luZyBhcyB0aGUKPj4+PiBgZGF0YS1yaW5nYCBoYXMgdGhlIGNvbnRl bnRzIG9mIGl0Lgo+Pj4KPj4+IE15IGxhY2sgb2YgbmV0ZnJvbnQvbmV0YmFjayBrbm93bGVkZ2Ug bWlnaHQgc2hvdywgYnV0IEkgYW0gbm90Cj4+PiBmb2xsb3dpbmcuIFdoYXQgZG8gZ3JlZiwgc2l6 ZSBhbmQgaWR4IHJlcHJlc2VudCBpbiB0aGlzIGNvbnRleHQ/IFBsZWFzZQo+Pj4gZXhwbGFpbiB0 aGUgbmV3IHdvcmtmbG93IGluIG1vcmUgZGV0YWlscy4KPj4gWyBQbGVhc2UgaWdub3JlIHRoZSBw YXJ0IHNheWluZyAicmVwbGljYXRlZCBvbiB0aGUgYGRhdGEtcmluZ2AgYXQgYGlkeGAiLCBzaW5j ZQo+PiB0aGVyZSBpcyBubyByaW5nLiBJdCBzaG91bGQgaW5zdGVhZCBiZSBgZGF0YSBsaXN0YCBi dWZmZXIgaWRlbnRpZmllZCBieSBgc3RydWN0Cj4+IG5ldGlmX1t0eHxyeF1fcmVxdWVzdGAgYGlk YCBmaWVsZC4gXQo+Pgo+PiBUaGUgbmV3IHdvcmtmbG93IGlzIG5vdCB0b28gZGlmZmVyZW50IGZy b20gdGhlIG9sZCBvbmU6IChvbiBUWCkgd2UgKmZpcnN0Kgo+PiBtZW1jcHkgdGhlIHBhY2tldCB0 byBzdGFnaW5nIGdyYW50cyByZWdpb24gKG9yIGBkYXRhIGdyZWZgIGxpa2UgaG93IEkgbWVudGlv biBpbgo+PiB0aGlzIGRvYykgb2YgdXAgdG8gdGhlIG5lZ290aWF0ZWQgYHt0eCxyeH0tZGF0YS1s ZW5gIChvciBgc2l6ZWAgc3BlY2lmaWVkIGluIHRoZQo+PiBjb21tYW5kIHJpbmcgaWYgc21hbGxl cikuIFRoZSBgZGF0YSBncmVmYCB0byBiZSB1c2VkIGlzIGlkZW50aWZpZWQgYnkgdGhlIGBpZGAK Pj4gZmllbGQgaW4gbmV0aWZfW3R4fHJ4XV9yZXF1ZXN0IHN0cnVjdC4gVGhlIHJlc3Qgd2lsbCBw cm9jZWVkIGFzIGJlZm9yZSwgdGhhdCBpcwo+PiBncmFudGluZyB0aGUgcGFja2V0ICh3aXRoaW4g WEVOX1BBR0VfU0laRSBib3VuZGFyaWVzKSBhbmQgc2V0dGluZyBgZ3JlZmAgYW5kCj4+IGBvZmZz ZXRgIGFjY29yZGluZ2x5IGluIHRoZSByZXN0IG9mIHRoZSBjb21tYW5kIHJpbmcgc2xvdHMuIExl dCBtZSBpbXByb3ZlIHRoaXMKPj4gcGFyYWdyYXBoIHRvIG1ha2UgdGhpcyBtb3JlIGNsZWFyLgo+ Pgo+PiBUaGUgb3RoZXIgZGlmZmVyZW5jZSAoc2VlIFplcm9jb3B5IHNlY3Rpb24pIGlzIHRoYXQg aWYgZnJvbnRlbmQgc2V0cyB0aGUgZmxhZwo+PiBORVRUWEZfc3RhZ2luZ19idWZmZXIsIHRoZW4g dGhlIGBncmVmYCBmaWVsZCBpbiBuZXRpZl9bdHh8cnhdX3JlcXVlc3Qgc3RydWN0Cj4+IHdpbGwg aGF2ZSBhIHZhbHVlIG9mIHRoZSBgZGF0YSBncmVmYCBpZCAodGhlIGlkIGZpZWxkIHNheWluZyAi ZnJhbWUgaWRlbnRpZmllciIKPj4gdGhhdCB5b3UgYXNrZWQgZWFybGllciBpbiB0aGUgZG9jKS4g VGhpcyBpcyB0byBhbGxvdyBhIGZyb250ZW5kIHRvIHNwZWNpZnkgYW4gUlgKPj4gYGRhdGEgZ3Jl ZmAgdG8gYmUgdXNlZCBpbiB0aGUgVFggcmluZyB3aXRob3V0IGludm9sdmluZyBhbnkgYWRkaXRp b25hbCBjb3B5LiBJCj4+IGhhdmVuJ3QgUG9DLWVkIHRoaXMgemVyb2NvcHkgcGFydCB5ZXQsIGFz IGl0IG9ubHkgY292ZXJzIHR3byBzcGVjaWZpYyBzY2VuYXJpb3MKPj4gKHRoYXQgaXMgZ3Vlc3Qg WERQX1RYIG9yIG9uIGEgRFBESyBmcm9udGVuZCkuCj4+Cj4+Pj4gVmFsdWVzIGJpZ2dlciB0aGVu IHRoZSA0MDk2IHBhZ2UvZ3JhbnQgYm91bmRhcnkgb25seSBoYXZlIHNwZWNpYWwgbWVhbmluZyBm b3IKPj4+PiBiYWNrZW5kIGJlaW5nIGhvdyBtdWNoIGl0IGlzIHJlcXVpcmVkIHRvIGJlIGNvcGll ZC9wdWxsZWQgYWNyb3NzIHRoZSB3aG9sZQo+Pj4+IHBhY2tldCAod2hpY2ggY2FuIGJlIGNvbXBv c2VkIG9mIG11bHRpcGxlIHNsb3RzKS4gSGVuY2UgKGUuZy4pIGEgdmFsdWUgb2YgNjU1MzYKPj4+ PiB2cyA0MDk2IHdpbGwgaGF2ZSB0aGUgc2FtZSBkYXRhIGxpc3Qgc2l6ZSBhbmQgdGhlIGxhdHRl ciB2YWx1ZSB3b3VsZCBsZWFkIHRvCj4+Pj4gb25seSBjb3B5L3B1bGwgb25lIGdyZWYgaW4gdGhl IHdob2xlIHBhY2tldCwgd2hlcmVhcyB0aGUgZm9ybWVyIHdpbGwgYmUgYQo+Pj4+IGNvcHktb25s eSBpbnRlcmZhY2UgZm9yIGFsbCBzbG90cy4KPj4+Pgo+Pj4+ICMjIEJ1ZmZlciBJZGVudGlmaWNh dGlvbiBhbmQgRmxhZ3MKPj4+Pgo+Pj4+IFRoZSBkYXRhIGxpc3QgaWRzIG11c3Qgc3RhcnQgZnJv bSAwIGFuZCBhcmUgZ2xvYmFsIGFuZCBjb250aW5ndW91cyAoYWNyb3NzIGJvdGgKPj4+PiBsaXN0 cykuICBEYXRhIHNsb3QgaXMgaWRlbnRpZmllZCBieSByaW5nIHNsb3QgYGBgaWRgYGAgZmllbGQu IFJlc3VsdGFudCBkYXRhCj4+Pj4gZ3JlZiBpZCB0byBiZSB1c2VkIGluIFJYIGRhdGEgbGlzdCBp cyBjb21wdXRlZCBieSBzdWJ0cmFjdCBvZiBgc3RydWN0Cj4+Pj4gbmV0aWZfW3R4fHJ4XV9yZXF1 ZXN0YCBgYGBpZGBgYCBmcm9tIHRvdGFsIGFtb3VudCBvZiB0eCBkYXRhIGdyZWZzLiBFeGFtcGxl IG9mCj4+Pj4gdGhlIGxpc3RzIGxheW91dCAgYmVsb3c6Cj4+Pgo+Pj4gV2hhdCBpcyB0aGUgInJl c3VsdGFudCBkYXRhIGdyZWYgaWQiPyBXaGF0IGlzIHRoZSAiUlggZGF0YSBsaXN0Ij8KPj4+IFBs ZWFzZSBleHBsYWluIGluIG1vcmUgZGV0YWlscy4KPj4gIlJlc3VsdGFudCBkYXRhIGdyZWYgaWQi IGNvcnJlc3BvbmRzIHRvIHRoZSBjYXNlIHdoZXJlIHdlIHNldAo+PiBORVRUWEZfc3RhZ2luZ19i dWZmZXIgZmxhZywgaW4gd2hpY2ggY2FzZSB3ZSBzZXQgdGhlIGNvbW1hbmQgcmluZyBgZ3JlZmAg d2l0aAo+PiB0aGUgYGlkYCBpbiB0aGUgZGF0YSBsaXN0IGVudHJ5IChzZWUgYmVsb3cgZGlhZ3Jh bSkuICJSWCBkYXRhIGxpc3QiIGlzIHRoZSBsaXN0Cj4+IGRlc2NyaWJlZCB3aXRoIGByeC1kYXRh LXJlZmAuIEkgc2hvdWxkIGhhdmUgcHV0IHRoYXQgYXMgc2VwYXJhdGUgcGFyYWdyYWggYXMKPj4g dGhpcyBpcyBtYWtpbmcgdGhpbmdzIG1vcmUgY29uZnVzaW5nLgo+Pgo+Pj4+IGBgYAo+Pj4+ICBb dHgtZGF0YS1yZWYtMCwgdHgtZGF0YS1sZW49MjU2XQo+Pj4+ICB7IC5pZCA9IDAsIGdyZWYgPSA1 MTIsIC5vZmZzZXQgPSAweDAgICB9Cj4+Pj4gIHsgLmlkID0gMSwgZ3JlZiA9IDUxMiwgLm9mZnNl dCA9IDB4MTAwIH0KPj4+PiAgeyAuaWQgPSAyLCBncmVmID0gNTEyLCAub2Zmc2V0ID0gMHgyMDAg fQo+Pj4+ICAuLi4KPj4+PiAgeyAuaWQgPSAyNTYsIGdyZWYgPSAwLCAub2Zmc2V0ID0gMHgwICAg fQo+Pj4+Cj4+Pj4gIFtyeC1kYXRhLXJlZi0wLCByeC1kYXRhLWxlbj00MDk2XQo+Pj4+ICB7IC5p ZCA9IDI1NiwgZ3JlZiA9IDUyOSwgLm9mZnNldCA9IDB4MCB9Cj4+Pj4gIHsgLmlkID0gMjU3LCBn cmVmID0gNTMwLCAub2Zmc2V0ID0gMHgwIH0KPj4+PiAgeyAuaWQgPSAyNTgsIGdyZWYgPSA1MzEs IC5vZmZzZXQgPSAweDAgfQo+Pj4+ICAuLi4KPj4+PiAgeyAuaWQgPSA1MTIsIGdyZWYgPSAwLCAg IC5vZmZzZXQgPSAweDAgfQo+Pj4+IGBgYAo+Pj4+Cj4+Pj4gUGVybWlzc2lvbnMgb2YgUlggZGF0 YSBncmVmcyBhcmUgcmVhZC13cml0ZSB3aGVyZWFzIFRYIGRhdGEgZ3JlZnMgaXMgcmVhZC1vbmx5 Lgo+Pj4+Cj4+Pj4gIyMgWmVyb2NvcHkKPj4+Pgo+Pj4+IEZyb250ZW5kIG1heSB3aXNoIHRvIHBy b3ZpZGUgYSBiaWdnZXIgUlggbGlzdCB0aGFuIFRYLCBhbmQgdXNlIFJYIGJ1ZmZlcnMgZm9yCj4+ Pj4gdHJhbnNtaXNzaW9uIGluIGEgemVyb2NvcHkgZmFzaGlvbiBmb3IgZ3Vlc3RzIG1haW5seSBk b2luZyBmb3J3YXJkaW5nLiBJbiBzdWNoCj4+Pj4gY2FzZXMgYmFja2VuZCBzZXQgTkVUVFhGX3N0 YWdpbmdfYnVmZmVyIGZsYWcgaW4gYGBgbmV0aWZfdHhfcmVxdWVzdGBgYCBmbGFncwo+Pj4+IGZp ZWxkIHN1Y2ggdGhhdCBgZ3JlZmAgZmllbGQgaW5zdGVhZCBkZXNpZ25hdGVzIHRoZSBgaWRgIG9m IGEgZGF0YSBncmVmcy4KPj4+Pgo+Pj4+IFRoaXMgaXMgb25seSB2YWxpZCB3aGVuIHBhY2tldHMg YXJlIHNvbGVseSBkZXNjcmliZWQgYnkgdGhlIHN0YWdpbmcgZ3JhbnRzIGZvcgo+Pj4+IHRoZSBz bG90IHBhY2tldCBzaXplIGJlaW5nIHdyaXR0ZW4uIE9yIHdoZW4gW3R4fHJ4XS1kYXRhLWxlbiBp cyA0MDk2IChmb3IKPj4+PiBmZWF0dXJlLXNnIDApIG9yIDY1NTM1IChmb3IgZmVhdHVyZS1zZyAx KSBhbmQgdGh1cyBubyBuZXcgYGdyZWZgIGlzIG5lZWRlZCBmb3IKPj4+PiBkZXNjcmliaW5nIHRo ZSBwYWNrZXQgcGF5bG9hZC4KPj4+Pgo+Pj4+IFxjbGVhcnBhZ2UKPj4+Pgo+Pj4+ICMjIFBlcmZv cm1hbmNlCj4+Pj4KPj4+PiBOdW1iZXJzIHRoYXQgZ2l2ZSBhIHJvdWdoIGlkZWEgb24gdGhlIHBl cmZvcm1hbmNlIGJlbmVmaXRzIG9mIHRoaXMgZXh0ZW5zaW9uLgo+Pj4+IFRoZXNlIGFyZSBHdWVz dCA8LT4gRG9tMCB3aGljaCB0ZXN0IHRoZSBjb21tdW5pY2F0aW9uIGJldHdlZW4gYmFja2VuZCBh bmQKPj4+PiBmcm9udGVuZCwgZXhjbHVkaW5nIG90aGVyIGJvdHRsZW5lY2tzIGluIHRoZSBkYXRh cGF0aCAodGhlIHNvZnR3YXJlIHN3aXRjaCkuCj4+Pj4KPj4+PiBgYGAKPj4+PiAjIGdyYW50IGNv cHkKPj4+PiBHdWVzdCBUWCAoMXZjcHUsICA2NGIsIFVEUCBpbiBwcHMpOiAgMSA1MDYgMTcwIHBw cwo+Pj4+IEd1ZXN0IFRYICg0dmNwdSwgIDY0YiwgVURQIGluIHBwcyk6ICA0IDk4OCA1NjMgcHBz Cj4+Pj4gR3Vlc3QgVFggKDF2Y3B1LCAyNTZiLCBVRFAgaW4gcHBzKTogIDEgMjk1IDAwMSBwcHMK Pj4+PiBHdWVzdCBUWCAoNHZjcHUsIDI1NmIsIFVEUCBpbiBwcHMpOiAgNCAyNDkgMjExIHBwcwo+ Pj4+Cj4+Pj4gIyBncmFudCBjb3B5ICsgZ3JhbnQgbWFwIChzZWUgbmV4dCBzdWJzZWN0aW9uKQo+ Pj4+IEd1ZXN0IFRYICgxdmNwdSwgMjYwYiwgVURQIGluIHBwcyk6ICAgIDU3NyA3ODIgcHBzCj4+ Pj4gR3Vlc3QgVFggKDR2Y3B1LCAyNjBiLCBVRFAgaW4gcHBzKTogIDEgMjE4IDI3MyBwcHMKPj4+ Pgo+Pj4+ICMgZHJvcCBhdCB0aGUgZ3Vlc3QgbmV0d29yayBzdGFjawo+Pj4+IEd1ZXN0IFJYICgx dmNwdSwgIDY0YiwgVURQIGluIHBwcyk6ICAxIDU0OSA2MzAgcHBzCj4+Pj4gR3Vlc3QgUlggKDR2 Y3B1LCAgNjRiLCBVRFAgaW4gcHBzKTogIDIgODcwIDk0NyBwcHMKPj4+PiBgYGAKPj4+Pgo+Pj4+ IFdpdGggdGhpcyBleHRlbnNpb246Cj4+Pj4gYGBgCj4+Pj4gIyBtZW1jcHkKPj4+PiBkYXRhLWxl bj0yNTYgVFggKDF2Y3B1LCAgNjRiLCBVRFAgaW4gcHBzKTogIDMgNzU5IDAxMiBwcHMKPj4+PiBk YXRhLWxlbj0yNTYgVFggKDR2Y3B1LCAgNjRiLCBVRFAgaW4gcHBzKTogMTIgNDE2IDQzNiBwcHMK Pj4+PiBkYXRhLWxlbj0yNTYgVFggKDF2Y3B1LCAyNTZiLCBVRFAgaW4gcHBzKTogIDMgMjQ4IDM5 MiBwcHMKPj4+PiBkYXRhLWxlbj0yNTYgVFggKDR2Y3B1LCAyNTZiLCBVRFAgaW4gcHBzKTogMTEg MTY1IDM1NSBwcHMKPj4+Pgo+Pj4+ICMgbWVtY3B5ICsgZ3JhbnQgbWFwIChzZWUgbmV4dCBzdWJz ZWN0aW9uKQo+Pj4+IGRhdGEtbGVuPTI1NiBUWCAoMXZjcHUsIDI2MGIsIFVEUCBpbiBwcHMpOiAg ICA1ODggNDI4IHBwcwo+Pj4+IGRhdGEtbGVuPTI1NiBUWCAoNHZjcHUsIDI2MGIsIFVEUCBpbiBw cHMpOiAgMSA2NjggMDQ0IHBwcwo+Pj4+Cj4+Pj4gIyAoZHJvcCBhdCB0aGUgZ3Vlc3QgbmV0d29y ayBzdGFjaykKPj4+PiBkYXRhLWxlbj0yNTYgUlggKDF2Y3B1LCAgNjRiLCBVRFAgaW4gcHBzKTog IDMgMjg1IDM2MiBwcHMKPj4+PiBkYXRhLWxlbj0yNTYgUlggKDR2Y3B1LCAgNjRiLCBVRFAgaW4g cHBzKTogMTEgNzYxIDg0NyBwcHMKPj4+Pgo+Pj4+ICMgKGRyb3Agd2l0aCBndWVzdCBYRFBfRFJP UCBwcm9nKQo+Pj4+IGRhdGEtbGVuPTI1NiBSWCAoMXZjcHUsICA2NGIsIFVEUCBpbiBwcHMpOiAg OSA0NjYgNTkxIHBwcwo+Pj4+IGRhdGEtbGVuPTI1NiBSWCAoNHZjcHUsICA2NGIsIFVEUCBpbiBw cHMpOiAzMyAwMDYgMTU3IHBwcwo+Pj4+IGBgYAo+Pj4KPj4+IFZlcnkgbmljZSEKPj4gOkQKPj4K Pj4+PiBMYXRlbmN5IG1lYXN1cmVtZW50cyAobmV0cGVyZiBUQ1BfUlIgcmVxdWVzdCBzaXplIDEg YW5kIHJlc3BvbnNlIHNpemUgMSk6Cj4+Pj4gYGBgCj4+Pj4gMjQgS1RwcyB2cyAyOCBLVHBzCj4+ Pj4gMzkgS1RwcyB2cyA1MCBLVHBzICh3aXRoIGtlcm5lbCBidXN5IHBvbGwpCj4+Pj4gYGBgCj4+ Pj4KPj4+PiBUQ1AgQnVsayB0cmFuc2ZlciBtZWFzdXJlbWVudHMgYXJlbid0IHNob3dpbmcgYSBy ZXByZXNlbnRhdGl2ZSBpbmNyZWFzZSBvbgo+Pj4+IG1heGltdW0gdGhyb3VnaHB1dCAoc29tZXRp bWVzIH4xMCUpLCBidXQgcmF0aGVyIGxlc3MgcmV0cmFuc21pc3Npb25zIGFuZAo+Pj4+IG1vcmUg c3RhYmxlLiBUaGlzIGlzIHByb2JhYmx5IGJlY2F1c2Ugb2YgYmVpbmcgaGF2aW5nIGEgc2xpZ2h0 IGRlY3JlYXNlIGluIHJ0dAo+Pj4+IHRpbWUgKGkuZS4gcmVjZWl2ZXIgYWNrbm93bGVkZ2luZyBk YXRhIHF1aWNrZXIpLiBDdXJyZW50bHkgdHJ5aW5nIGV4cGxvcmluZwo+Pj4+IG90aGVyIGRhdGEg bGlzdCBzaXplcyBhbmQgcHJvYmFibHkgd2lsbCBoYXZlIGEgYmV0dGVyIGlkZWEgb24gdGhlIGVm ZmVjdHMgb2YKPj4+PiB0aGlzLgo+Pj4KPj4+IFRoaXMgaXMgc3RyYW5nZS4gQnkgVENQIEJ1bGsg dHJhbnNmZXJzLCBkbyB5b3UgbWVhbiBpcGVyZj8KPj4gWWVhcC4KPj4KPj4+IEZyb20gbXkgcHZj YWxscyBleHBlcmllbmNlLCBJIHdvdWxkIGV4cGVjdCBhIGdyZWF0IGltcHJvdmVtZW50IHRoZXJl IHRvby4KPj4gTm90aWNlIHRoYXQgaGVyZSB3ZSBhcmUgb25seSBtZW1jcHlpbmcgYSBzbWFsbCBw b3J0aW9uIG9mIHRoZSBwYWNrZXQgKDI1NiBieXRlcwo+PiBtYXgsIG5vdCBhbGwgb2YgaXQpLiAK PiAKPiBBcmUgd2U/IFVubGVzcyBJIGFtIG1pc3Rha2VuLCB0aGUgcHJvdG9jb2wgZG9lc24ndCBo YXZlIGFueSBsaW1pdGF0aW9ucwo+IG9uIHRoZSBhbW91bnQgb2YgYnl0ZXMgd2UgYXJlIG1lbWNw eWluZy4gSXQgaXMgdXAgdG8gdGhlIGJhY2tlbmQsIHdoaWNoCj4gY291bGQgdGhlb3JldGljYWxs eSBzdXBwb3J0IGxhcmdlIGFtb3VudHMgc3VjaCBhcyA2NGsgYW5kIGxhcmdlci4KVGhlIGNhc2Ug SSBnYXZlIGFib3ZlIHdhcyB3aGVuIHRoZSBiYWNrZW5kIHdhcyBvbmx5IG1lbWNweWluZyBtYXhp bXVtIDI1NiBieXRlcwoodGhhdCBpcyBmb3IgdGhlIGxpbmVhciBwYXJ0IG9mIHRoZSBza2JzKS4g QnV0IGNvcnJlY3QsIHRoZSBwcm90b2NvbCBkb2Vzbid0CmhhdmUgbGltaXRhdGlvbnMgaWYgdGhl IGJhY2tlbmQgYWxsb3cgYSBmcm9udGVuZCB0byBjb3B5IHRoZSB3aG9sZSBwYWNrZXQsIGJ1dApv bmx5IGlmIHRoZSBmcm9udGVuZCBzZWxlY3RzIGl0IHRvbyB0eC1kYXRhLWxlbnxyeC1kYXRhLWxl biBhcyA2NTUzNi4KCj4+IFBhc3QgZXhwZXJpZW5jZSAoaW4gYSBvbGQgcHJvcG9zYWwgSSBtYWRl KSBpdCBhbHNvIHNob3dlZAo+PiBtZSBhbiBpbXByb3ZlbWVudCBsaWtlIHlvdXJzLiBJIGFtIGEg Yml0IGhlc2l0YW50IHdpdGggbWVtY3B5IGFsbCBvZiB3YXkgd2hlbgo+PiBvdGhlciB0aGluZ3Mg YXJlIGludm9sdmVkIGluIHRoZSB3b3JrbG9hZDsgYnV0IHRoZW4gSSBjdXJyZW50bHkgZG9uJ3Qg c2VlIG1hbnkKPj4gb3RoZXIgYWx0ZXJuYXRpdmVzIHRvIGxlc3NlbiB0aGUgZ3JhbnRzIG92ZXJo ZWFkLiBJbiB0aGUgbWVhbnRpbWUgSSdsbCBoYXZlIG1vcmUKPj4gZGF0YSBwb2ludHMgYW5kIGhh dmUgYSBjbGVhcmVyIGlkZWEgb24gdGhlIHJhdGlvIG9mIHRoZSBpbXByb3ZlbWVudCB2cyB0aGUK Pj4gY29tcHJvbWlzZS4KPiAKPiBJIGRvbid0IHdhbnQgdG8gY29uZnVzZSB5b3UsIGJ1dCBhbm90 aGVyIGFsdGVybmF0aXZlIHRvIGNvbnNpZGVyIHdvdWxkCj4gYmUgdG8gdXNlIGEgY3VyY3VsYXIg ZGF0YSByaW5nIGxpa2UgaW4gUFZDYWxscyBpbnN0ZWFkIG9mIHNsb3RzLiBCdXQgSQo+IGRvbid0 IGtub3cgaG93IGRpZmZpY3VsdCBpdCB3b3VsZCBiZSB0byBpbXBsZW1lbnQgc29tZXRoaW5nIGxp a2UgdGhhdCBpbgo+IG5ldGZyb250L25ldGJhY2suIFRoZSBjb21tYW5kIHJpbmcgY291bGQgc3Rp bGwgYmUgdXNlZCB0byBzZW5kIHBhY2tldHMsCj4gYnV0IHRoZSBkYXRhIGNvdWxkIGJlIHRyYW5z ZmVycmVkIG92ZXIgdGhlIGRhdGEgcmluZyBpbnN0ZWFkLiBJbiB0aGlzCj4gbW9kZWwgd2Ugd291 bGQgaGF2ZSB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYSBzbG90IGlzIGF2YWlsYWJsZSBvbiB0 aGUKPiBjb21tYW5kIHJpbmcsIGJ1dCB3ZSBkb24ndCBoYXZlIGVub3VnaCByb29tIG9uIHRoZSBk YXRhIHJpbmcgdG8gY29weSB0aGUKPiBkYXRhLiBGb3IgZXhhbXBsZSwgd2UgY291bGQgZmFsbCBi YWNrIHRvIGdyYW50IG9wcy4KSSB0aG91Z2h0IG9mIHRoYXQgb3B0aW9uIGJ1dCBJIHdhcyBhIGJp dCBhZnJhaWQgZm9yIHN0YXJ0ZXJzIHRvIGludHJvZHVjZSB0d28KZGF0YSByaW5ncyBoZW5jZSBJ IGtlcHQgdGhpbmdzIHNpbXBsZSAoZGVzcGl0ZSB0ZXh0IGJlaW5nIGEgYml0IG1lc3N5KS4gVGhl IG9ubHkKcmVzZXJ2YXRpb24gSSBoYWQgaGF2aW5nIGRhdGEgcmluZ3MgaXMgdGhhdCB0aGUgYmFj a2VuZCB3b3VsZG4ndCBiZSBhYmxlIHRvIGhvbGQKb24gdG8gdGhlIHBhZ2VzIGluIGEgemVyb2Nv cHkgZmFzaGlvbiBsaWtlIGl0IGRvZXMgbm93LgoKVGhhbmtzIQoKPj4+PiAjIyBMaW51eCBncmFu dCBjb3B5IHZzIG1hcCByZW1hcmsKPj4+Pgo+Pj4+IEJhc2VkIG9uIG51bWJlcnMgYWJvdmUgdGhl cmUncyBhIHN1ZGRlbiAyeCBwZXJmb3JtYW5jZSBkcm9wIHdoZW4gd2Ugc3dpdGNoIGZyb20KPj4+ PiBncmFudCBjb3B5IHRvIGFsc28gZ3JhbnQgbWFwIHRoZSBgIGdyZWZgOiAxIDI5NSAwMDEgdnMg IDU3NyA3ODIgZm9yIDI1NiBhbmQgMjYwCj4+Pj4gcGFja2V0cyBieXRlcyByZXNwZWN0aXZhbGx5 LiBXaGljaCBpcyBhbGwgdGhlIG1vcmUgdmlzaWJsZSB3aGVuIHJlbW92aW5nIHRoZSBncmFudAo+ Pj4+IGNvcHkgd2l0aCBtZW1jcHkgaW4gdGhpcyBleHRlbnNpb24gKDMgMjQ4IDM5MiB2cyA1ODgg NDI4KS4gV2hpbGUgdGhlcmUncyBiZWVuCj4+Pj4gZGlzY3Vzc2lvbnMgb2YgYXZvaWQgdGhlIFRM QiB1bmZsdXNoIG9uIHVubWFwLCBvbmUgY291bGQgd29uZGVyIHdoYXQgdGhlCj4+Pj4gdGhyZXNo b2xkIG9mIHRoYXQgaW1wcm92ZW1lbnQgd291bGQgYmUuIENoYW5jZXMgYXJlIHRoYXQgdGhpcyBp cyB0aGUgbGVhc3Qgb2YKPj4+PiBvdXIgY29uY2VybnMgaW4gYSBmdWxseSBwb3BwdWxhdGVkIGhv c3QgKG9yIHdpdGggYW4gb3ZlcnN1YnNjcmliZWQgb25lKS4gV291bGQKPj4+PiBpdCBiZSB3b3J0 aCBleHBlcmltZW50aW5nIGluY3JlYXNpbmcgdGhlIHRocmVzaG9sZCBvZiB0aGUgY29weSBiZXlv bmQgdGhlCj4+Pj4gaGVhZGVyPwo+Pj4KPj4+ICsxCj4+IENvb2whCj4+Cj4+Pj4gXGNsZWFycGFn ZQo+Pj4+Cj4+Pj4gIyBSZWZlcmVuY2VzCj4+Pj4KPj4+PiBbMF0gaHR0cDovL2xpc3RzLnhlbnBy b2plY3Qub3JnL2FyY2hpdmVzL2h0bWwveGVuLWRldmVsLzIwMTUtMDUvbXNnMDE1MDQuaHRtbAo+ Pj4+Cj4+Pj4gWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9mcmVlYnNkL2ZyZWVic2QvYmxvYi9tYXN0 ZXIvc3lzL2Rldi9uZXRtYXAvbmV0bWFwX21lbTIuYyNMMzYyCj4+Pj4KPj4+PiBbMl0gaHR0cHM6 Ly93d3cuZnJlZWJzZC5vcmcvY2dpL21hbi5jZ2k/cXVlcnk9dmFsZSZzZWt0aW9uPTQmbj0xCj4+ Pj4KPj4+PiBbM10gaHR0cHM6Ly9naXRodWIuY29tL2lvdmlzb3IvYnBmLWRvY3MvYmxvYi9tYXN0 ZXIvRXhwcmVzc19EYXRhX1BhdGgucGRmCj4+Pj4KPj4+PiBbNF0KPj4+PiBodHRwOi8vcHJvdG90 eXBlLWtlcm5lbC5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvbmV0d29ya2luZy9YRFAvZGVzaWdu L3JlcXVpcmVtZW50cy5odG1sI3dyaXRlLWFjY2Vzcy10by1wYWNrZXQtZGF0YQo+Pj4+Cj4+Pj4g WzVdIGh0dHA6Ly9seHIuZnJlZS1lbGVjdHJvbnMuY29tL3NvdXJjZS9kcml2ZXJzL25ldC9ldGhl cm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMjTDIwNzMKPj4+Pgo+Pj4+IFs2XSBodHRwOi8v bHhyLmZyZWUtZWxlY3Ryb25zLmNvbS9zb3VyY2UvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFu b3gvbWx4NC9lbl9yeC5jI0w1Mgo+Pj4+Cj4+Pj4gIyBIaXN0b3J5Cj4+Pj4KPj4+PiBBIHRhYmxl IG9mIGNoYW5nZXMgdG8gdGhlIGRvY3VtZW50LCBpbiBjaHJvbm9sb2dpY2FsIG9yZGVyLgo+Pj4+ Cj4+Pj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+Pj4gRGF0ZSAgICAgICBSZXZpc2lvbiBWZXJzaW9uICBO b3Rlcwo+Pj4+IC0tLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+IDIwMTYtMTItMTQgMSAgICAgICAgWGVuIDQu OSAgSW5pdGlhbCB2ZXJzaW9uLgo+Pj4+IC0tLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==