From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RFC] handling of alpha mode (pre-multiplied/straight) in ARGB modes Date: Mon, 18 Jan 2016 13:06:38 +0200 Message-ID: <20160118110638.GJ23290@intel.com> References: <5693B9C4.2040209@samsung.com> <20160111150749.GY8076@phenom.ffwll.local> <20160111152221.GB23290@intel.com> <56965B8F.4010701@samsung.com> <20160113145804.GH23290@intel.com> <569CBB11.7000408@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 3ABF36E53B for ; Mon, 18 Jan 2016 03:06:42 -0800 (PST) Content-Disposition: inline In-Reply-To: <569CBB11.7000408@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Marek Szyprowski Cc: DRI mailing list , Bartlomiej Zolnierkiewicz List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBKYW4gMTgsIDIwMTYgYXQgMTE6MTQ6NDFBTSArMDEwMCwgTWFyZWsgU3p5cHJvd3Nr aSB3cm90ZToKPiBIZWxsbywKPiAKPiBPbiAyMDE2LTAxLTEzIDE1OjU4LCBWaWxsZSBTeXJqw6Rs w6Qgd3JvdGU6Cj4gPiBPbiBXZWQsIEphbiAxMywgMjAxNiBhdCAwMzoxMzozNVBNICswMTAwLCBN YXJlayBTenlwcm93c2tpIHdyb3RlOgo+ID4+IE9uIDIwMTYtMDEtMTEgMTY6MjIsIFZpbGxlIFN5 cmrDpGzDpCB3cm90ZToKPiA+Pj4gT24gTW9uLCBKYW4gMTEsIDIwMTYgYXQgMDQ6MDc6NTBQTSAr MDEwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+Pj4+IE9uIE1vbiwgSmFuIDExLCAyMDE2IGF0 IDAzOjE4OjQ0UE0gKzAxMDAsIE1hcmVrIFN6eXByb3dza2kgd3JvdGU6Cj4gPj4+Pj4gRGVhciBB bGwsCj4gPj4+Pj4KPiA+Pj4+PiBJIHdvdWxkIGxpa2UgdG8gYWRkIHN1cHBvcnQgZm9yIGNvbmZp Z3VyaW5nIGFscGhhIG1vZGVzOiBzdHJhaWdodCBhbmQKPiA+Pj4+PiBwcmUtbXVsdGlwbGllZCBm b3IgYmxlbmRpbmcgdG8gRXh5bm9zIERSTSBkcml2ZXIuIEZvciB0aG9zZSB3aG8gc2VlIHRob3Nl Cj4gPj4+Pj4gdGVybXMgZm9yIHRoZSBmaXJzdCB0aW1lOgo+ID4+Pj4+IDEuIHN0cmFpZ2h0IGFs cGhhIG1vZGUgbWVhbnMgbWVhbnMgdGhhdCBhbGwgQSBhbmQgUkdCIHZhbHVlcyBhcmUgZnJvbSBm dWxsCj4gPj4+Pj4gMC4yNTUgcmFuZ2UsCj4gPj4+Pj4gMi4gcHJlLW11bHRpcGxpZWQgYWxwaGEg bW9kZSBtZWFucyB0aGF0IEEgaXMgZnJvbSAwLi4yNTUgcmFuZ2UgYW5kIFJHQgo+ID4+Pj4+IHZh bHVlcyBhcmUgc2NhbGVkIHRvIDAuLkFMUEhBIHJhbmdlICh3aGVyZSBBTFBIQSBpcyB0aGUgQSB2 YWx1ZSBmb3IgdGhlCj4gPj4+Pj4gZ2l2ZW4gcGl4ZWwpLgo+ID4+Pj4+IFRoZSBwcmUtbXVsdGlw bGllZCBtb2RlIGlzIHF1aXRlIGNvbW1vbiBpbiB0ZXh0dXJlIHByb2Nlc3NpbmcuCj4gPj4+Pj4K PiA+Pj4+PiBJIGRpZCBhIGxpdHRsZSByZXNlYXJjaCBhbmQgZm91bmQgdGhhdCB0aGVyZSBpcyBu byBjb21tb24gYXBwcm9hY2ggZm9yCj4gPj4+Pj4gZGVmaW5pbmcgc3RyYWlnaHQgb3IgcHJlLW11 bHRpcGxpZWQgYWxwaGEgbW9kZXMgZm9yIEFSR0IgZnJhbWVidWZmZXJzLgo+ID4+Pj4+Cj4gPj4+ Pj4gPkZyb20gcmVhZGluZyB0aGUgc291cmNlcyBhbmQgdGhlIHJlZ2lzdGVyIG5hbWVzIEkgZm91 bmQgdGhhdCBmb2xsb3dpbmcKPiA+Pj4+PiBkcml2ZXJzIHVzZSBwcmUtbXVsdGlwbGllZCBtb2Rl cyBmb3IgQVJHQiBmcmFtZWJ1ZmZlcnM6Cj4gPj4+Pj4gcmFkZW9uIChhdCBsZWFzdCBmb3IgQVJH QiBjdXJzb3JzKSwKPiA+Pj4+PiBhbWRncHUgKGN1cnNvciksCj4gPj4+Pj4gaW50ZWwgKGFsbCBB UkdCIHBsYW5lcyksCj4gPj4+Pj4gcm9jayBjaGlwLgo+ID4+Pj4+Cj4gPj4+Pj4gT24gdGhlIG90 aGVyIGhhbmQsIHRoZXJlIGFyZSBkcm0gZHJpdmVycyB3aGljaCBzdXBwb3J0IEFSR0IgbW9kZXMg YW5kIHVzZQo+ID4+Pj4+IHN0cmFpZ2h0IGFscGhhIG1vZGVzOgo+ID4+Pj4+IG9tYXAsCj4gPj4+ Pj4gbXNtLgo+ID4+Pj4+Cj4gPj4+Pj4gRm9yIHRoZSByZXN0IG9mIGRyaXZlcnMsIHdoaWNoIG1p Z2h0IGRlYWwgd2l0aCBwZXItcGl4ZWwgYWxwaGEsIEkgd2FzIG5vdAo+ID4+Pj4+IGFibGUgdG8g ZGV0ZXJtaW5lIGZyb20gdGhlIGNvZGUgaWYgdGhlIHBpeGVsIFJHQiB2YWx1ZXMgYXJlIGludGVy cHJldGVkIGFzCj4gPj4+Pj4gcGVyLW11bHRpcGxpZWQgb3Igc3RyYWlnaHQ6Cj4gPj4+Pj4gYXRt ZWxfaGxjZGMsCj4gPj4+Pj4gc3RpLAo+ID4+Pj4+IG1kcDUsCj4gPj4+Pj4gc2htb2JpbGUsCj4g Pj4+Pj4gcmNhciwKPiA+Pj4+PiB2YzQsCj4gPj4+Pj4gaW14Lgo+ID4+Pj4gSW1vIGluIGNhc2Ug b2YgZG91YnQvbWl4ZWQgZGVmaW5pdGlvbnMgdGhlIHNlbWFudGljcyBvZiB0aGUgYmlnIGRlc2t0 b3AKPiA+Pj4+IGRyaXZlcnMgc2hvdWxkIHdpbi4gVHJ1ZSBnZW5lcmljIHVzZXJzcGFjZSBpcyBt b3N0IGxpa2VseSBkZXZlbG9wZWQgb24KPiA+Pj4+IHRob3NlLCBldmVyeXRoaW5nIGVsc2Ugc2hv dWxkIGp1c3QgYWRqdXN0LiBBbmQgaW4gbW9zdCBjYXNlcyB3ZSBjYW4gZ2V0Cj4gPj4+PiBhd2F5 IHdpdGggdGhhdCBvbiBhcm0gZHJpdmVycyBzaW5jZSB0aGV5IHRlbmQgdG8gc2hpcCB1c2Vyc3Bh Y2UgYW5kIGtlcm5lbAo+ID4+Pj4gaW4gbG9ja3N0ZXAuIEF0IGxlYXN0IHdoZXJlIGl0IHJlYWxs eSBtYXR0ZXJzLgo+ID4+Pj4KPiA+Pj4+PiBFeHlub3MgRFJNIGRyaXZlciBub3cgbWl4ZXMgcHJl LW11bHRpcGxpZWQgYW5kIHN0cmFpZ2h0IG1vZGVzLCBkZXBlbmRpbmcgb24KPiA+Pj4+PiB0aGUg Q1JUQyBzdWItZHJpdmVyLgo+ID4+Pj4+Cj4gPj4+Pj4gV2hpbGUgY2hlY2tpbmcgdGhlIGNvZGUg SSBmb3VuZCBhIGZvbGxvd2luZyBjb21tZW50IGluCj4gPj4+Pj4gZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jIGluIHNrbF9wbGFuZV9jdGxfZm9ybWF0KCkgZnVuY3Rpb246Cj4gPj4+Pj4gLyoKPiA+ Pj4+PiAgICAqIFhYWDogRm9yIEFSQkcvQUJHUiBmb3JtYXRzIHdlIGRlZmF1bHQgdG8gZXhwZWN0 aW5nIHNjYW5vdXQgYnVmZmVycwo+ID4+Pj4+ICAgICogdG8gYmUgYWxyZWFkeSBwcmUtbXVsdGlw bGllZC4gV2UgbmVlZCB0byBhZGQgYSBrbm9iIChvciBhIGRpZmZlcmVudAo+ID4+Pj4+ICAgICog RFJNX0ZPUk1BVCkgZm9yIHVzZXItc3BhY2UgdG8gY29uZmlndXJlIHRoYXQuCj4gPj4+Pj4gICAg Ki8KPiA+Pj4+Pgo+ID4+Pj4+IFRoZSBxdWVzdGlvbiBpcyBob3cgdG8gY2xlYW51cCB0aGlzIGFt YmlndWl0aWVzIGFuZCBsZXQgZ2VuZXJpYyB1c2Vyc3BhY2UgdG8KPiA+Pj4+PiBwcm9wZXJseSB1 c2UgQVJHQi9BUkdCIG1vZGVzIHdpdGggcHJvcGVyIGJsZW5kaW5nIG1vZGUuIEkgY2FtZSB1cCB3 aXRoIHRoZQo+ID4+Pj4+IGZvbGxvd2luZyAzIHNvbHV0aW9uczoKPiA+Pj4+Pgo+ID4+Pj4+IDEu IERlZmluZSBuZXcgZm91cmNjIHZhbHVlcyBmb3IgcHJlLW11bHRpcGxpZWQgKG9yL2FuZCBzdHJh aWdodCkgYWxwaGEKPiA+Pj4+PiBtb2RlcywKPiA+Pj4+PiAyLiBJbnRyb2R1Y2UgYSBuZXcgZnJh bWVidWZmZXIgZmxhZyBmb3IgcHJlLW11bHRpcGxpZWQgb3Igc3RyYWlnaHQgYWxwaGEgKG9yCj4g Pj4+Pj4gYm90aCksCj4gPj4+Pj4gMy4gSW50cm9kdWNlIGEgbmV3IHBsYW5lIHByb3BlcnR5IGZv ciBjb250cm9sbGluZyBhbHBoYSBibGVuZGluZyBtb2RlLgo+ID4+Pj4+Cj4gPj4+Pj4gVGhlIGZp cnN0IHNvbHV0aW9uIGhhcyBzZXJpb3VzIGNvbXBhdGliaWxpdHkgcHJvYmxlbSwgYmVjYXVzZSB3 ZSBjYW4gZWl0aGVyCj4gPj4+Pj4gbWFwIGV4aXN0aW5nIGZvdXJjYyB0byBwcmUtbXVsdGlwbGll ZCAodG8gZm9sbG93IHJhZGVvbi9hbWRncHUsIGludGVsIGFuZAo+ID4+Pj4+IHJvY2tjaGlwIGJl aGF2aW9yKSBvciBzdHJhaWdodCBtb2RlLiBCb3RoIHdheXMgaXQgd2lsbCBicmVhayBzb21lIGV4 aXN0aW5nCj4gPj4+Pj4gYXBwbGljYXRpb25zLiBUbyBhdm9pZCBjb21wYXRpYmlsaXR5IHByb2Js ZW0gd2Ugd291bGQgbmVlZCB0byBhZGQgMiBtb3JlCj4gPj4+Pj4gc2V0cyBvZiBmb3VyY2MgYW5k IGxlYXZlIGV4aXN0aW5nIEFSR0IgbW9kZXMgYXMgJ2RyaXZlciBkZXBlbmRlbnQnLgo+ID4+Pj4+ Cj4gPj4+Pj4gVGhlIHNlY29uZCBzb2x1dGlvbiBpcyBwcm9iYWJseSBhIGJpdCBsZXNzIGludHJ1 c2l2ZSwgYnV0IGl0IHN1ZmZlcnMgZm9yIHRoZQo+ID4+Pj4+IHNpbWlsYXIgY29tcGF0aWJpbGl0 eSBwcm9ibGVtLiBUbyBtYWtlIHRoaXMgZmVhdHVyZSBjb21wYXRpYmxlIHdpdGggZXhpc3RpbmcK PiA+Pj4+PiBjb2RlLCBwcm9iYWJseSAyIGZsYWdzIHdpbGwgYmUgbmVlZGVkOiBEUk1fTU9ERV9G Ql9BTFBIQV9GT1JDRV9QUkVNVUxUSVBMSUVECj4gPj4+Pj4gYW5kIERSTV9NT0RFX0ZCX0FMUEhB X0ZPUkNFX1NUUkFJR0hULiBUaGlzIHdheSB3aGVuIHVzZXJzcGFjZSBwcm92aWRlcyBubwo+ID4+ Pj4+IGZsYWcsIHRoZSBkcml2ZXIgY2FuIHVzZSBpdHMgZGVmYXVsdCBtb2RlLgo+ID4+Pj4+Cj4g Pj4+Pj4gVGhpcmQgc29sdXRpb24gKGFkZGl0aW9uYWwgcGxhbmUgcHJvcGVydHkpIGhhcyBiZWVu IGFscmVhZHkgcHJvcG9zZWQ6Cj4gPj4+Pj4gaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIwMTUvNi8x OS8zMzAsIGhvd2V2ZXIgSSBmb3VuZCBubyBmb2xsb3ctdXAgbm9yCj4gPj4+Pj4gY29tbWVudHMu IFNlcGFyYXRlIHByb3BlcnR5IGxldHMgYXQgbGVhc3QgZHJpdmVycyB0byBub3RpZnkgdXNlcnNw YWNlIGFib3V0Cj4gPj4+Pj4gZHJpdmVyJ3MgZGVmYXVsdCBhbHBoYSBtb2RlIGFuZCBsZXRzIGdl bmVyaWMgYXBwbGljYXRpb24gdG8gcHJvcGVybHkgc2V0IHRoZQo+ID4+Pj4+IHJlcXVlc3RlZCBt b2RlLiBUaGUgb25seSBwcm9ibGVtIGlzIHRoYXQgdGhlIGFscGhhIG1vZGUgaXMgbm90IGRpcmVj dGx5Cj4gPj4+Pj4gY29uZmlndXJlZCBvbiB0aGUgZnJhbWVidWZmZXIgb2JqZWN0LCB3aGVyZSBp biBteSBvcGluaW9uIGl0IHNob3VsZCBiZQo+ID4+Pj4+IHN0b3JlZC4KPiA+Pj4+Pgo+ID4+Pj4+ IFBsZWFzZSBsZXQgbWUga25vdyB3aGljaCBhcHByb2FjaCBZb3UgbGlrZSBiZXN0IGFuZCB3aGlj aCBzaG91bGQgSSB0YWtlIGZvcgo+ID4+Pj4+IGludHJvZHVjaW5nIGdlbmVyaWMgd2F5IG9mIGNv bmZpZ3VyaW5nIGFscGhhIG1vZGUuCj4gPj4+PiBPbmUgaWRlYSB0aGF0IHdhcyB0b3NzZWQgYXJv dW5kIGEgZmV3IHRpbWVzIGlzIHRvIGdvIGZ1bGwgZ2VuZXJpYyBhbmQKPiA+Pj4+IGltcGxlbWVu dCBzb21ldGhpbmcgbGlrZSBnbEJsZW5kRnVuYyBmb3IgcGxhbmVzLCBleGNlcHQgdGhhdCB3ZSdk IGFsc28KPiA+Pj4+IHByZS1tdWx0aXBsaWVkL3N0cmFpZ2h0IHZlcnNpb25zIHdoZXJlIGl0IG1h a2VzIHNlbnNlLiBGb3IgZHJpdmVycyB0aGF0Cj4gPj4+PiBjYW4ndCBzdXBwb3J0IHByZS1tdWx0 aXBsaWVkIGFscGhhIHRoZXkgY291bGQgc2ltcGx5IGxlYXZlIG91dCB0aGVzZQo+ID4+Pj4gdmFs dWVzIGZyb20gdGhlIGJsZW5kLWZ1bmMgcHJvcGVydHkgKGxpa2Ugd2UgYWxyZWFkeSBhbGxvdyB3 aXRoIGUuZy4KPiA+Pj4+IHJvdGF0aW9uLCB3aGVuIGEgZHJpdmVyIGNhbid0IGRvIDkwLzI3MMKw KS4KPiA+Pj4+Cj4gPj4+PiBXcnQgYmFja3dhcmRzIGNvbXBhdCBhIHByb3BlcnR5IHdvdWxkIHdv cmsgd2VsbCB0b286IElmIGl0J3Mgbm90IHRoZXJlCj4gPj4+PiB0aGVuIHVzZXJzcGFjZSBzaG91 bGQgYXNzdW1lIG9sZCBiZWhhdmlvdXIgKHdoaWNoIHNob3VsZCBiZSBwcmUtbXVsdGlwbGllZAo+ ID4+Pj4gcmVhbGx5LCBidXQgbWlnaHQgYmUgc29tZXdoYXQgYnJva2VuIG9uIHNvbWUgZHJpdmVy cy9rZXJuZWwpLgo+ID4+Pj4KPiA+Pj4+IERhbWllbiBoYWQgc29tZSBSRkMgYWJvdXQgYWxsIHRo aXMgd2F5IGJhY2ssIGJ1dCBjYW4ndCBmaW5kIGl0IHJpZ2h0IG5vdy4KPiA+Pj4gSSByZW1lbWJl IGhlIHNhaWQgaGUgd2FudGVkIHRvIHdvcmsgb24gaXQsIGJ1dCBJIGRvbid0IHJlbWVtYmVyIHNl ZWluZwo+ID4+PiBhbnl0aGluZyBjb21lIG91dCBvZiB0aGF0LiBJIGd1ZXNzIGhlIGdvdCBzd2Fs bG93ZWQgYnkgcGF0Y2h3b3JrLCBvciBJCj4gPj4+IGp1c3QgbWlzc2VkIHRoZSBwYXRjaC4KPiA+ Pj4KPiA+Pj4gVGhpcyBtYWlsIG1pZ2h0IGluY2x1ZGUgc29tZSBvZiBteSBtb3JlIHJlY2VudCB0 aG91Z2h0cyBvbiB0aGlzIG1hdHRlcgo+ID4+PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L2FyY2hpdmVzL2ludGVsLWdmeC8yMDE0LUFwcmlsLzA0Mjk1Ni5odG1sCj4gPj4gSSBhbHNvIGZv dW5kIHRoaXMgcGF0Y2g6IGh0dHA6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzIz MDAwLwo+ID4+Cj4gPj4gSG93ZXZlciBJIHN0aWxsIGRvbid0IGdldCBhIGNvbXBsZXRlIHBpY3R1 cmUgaG93IGl0IHdvdWxkIHdvcmsuIElmIEkgZ290IGl0Cj4gPj4gcmlnaHQsIHRoZSByZWFsIGJs ZW5kaW5nIGZ1bmN0aW9uIGlzIGRlZmluZWQgYnkgYSBwYWlyIG9mIHRoZSB2YWx1ZXMKPiA+PiBm cm9tIHRoZQo+ID4+IHByb3Bvc2VkIGVudW1zLCB3aGVyZSBvbmUgYXBwbGllcyB0byB0aGUgYmFj a2dyb3VuZCAodGhlIGJsZW5kaW5nIHJlc3VsdCBvZgo+ID4+IGRlZXBlciBwbGFuZXMpIGFuZCB0 aGUgc2Vjb25kIGFwcGxpZXMgdG8gdGhlIHByb2Nlc3NlZCBwbGFuZS4gU29tZQo+ID4+IGNvbWJp bmF0aW9ucyBvZiB0aGUgcHJvcG9zZWQgZW51bXMgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UgKGFu ZCBlc3BlY2lhbGx5Cj4gPj4gY2hhbmdpbmcgdGhlIGNvbnN0YW50IHplcm8gYW5kIG9uZSBtZWFu cyBzaW1wbHkgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIHRoZQo+ID4+IHBsYW5lcyksIHNvIEkgd29u ZGVyIGlmIGl0IG1pZ2h0IGJlIGVhc2llciB0byBzaW1wbHkgY3JlYXRlIGFuIGVudW0gd2l0aAo+ ID4+IGFsbCBzYW5lIHZhbHVlcyBmb3IgYmxlbmRpbmcgYW5kIGRvY3VtZW50IGl0IHJlYWxseSB3 ZWxsPyBUaGlzIHdheSBkcml2ZXJzCj4gPj4gd2lsbCBzaW1wbHkgaW5pdGlhbGl6ZSBvbmx5IHRo ZSBzdXBwb3J0ZWQgYmxlbmRpbmcgbW9kZXMuCj4gPiBUaGF0IHdhcyBteSBpZGVhIG1vcmUgb3Ig bGVzcyB0b28uIFdlJ2Qgc3RpbGwgbW9kZWwgdGhpbmdzIGJhc2VkIG9uIHRoZQo+ID4gR0wgc3R1 ZmYsIGJ1dCB3ZSBvbmx5IGFkdmVydGl6ZSBzcGVjaWZpYyBzcmMrZHN0IGJsZW5kIGZhY3Rvcgo+ ID4gY29tYmluYXRpb25zLiBJZS4gYSBzaW5nbGUgZW51bSBwcm9wZXJ0eSB3aGVyZSBlYWNoIHZh bHVlIGNvbnRhaW5zIGJvdGgKPiA+IHRoZSBzcmMgYW5kIGRzdCBibGVuZCBmYWN0b3IuCj4gCj4g T2theSwgSSd2ZSBkaWQgc29tZSBhbmFseXNpcyBvZiB3aGF0IEV4eW5vcyBoYXJkd2FyZSBjYW4g ZG8gYW5kIGl0IAo+IHR1cm5lZCBvdXQgdGhhdCB0aGVyZSBvbmx5IGEgZmV3IG1vZGVzIHdoaWNo IHJlYWxseSBtYWtlcyBzZW5zZS4gCj4gQXNzdW1pbmcgdGhhdCB0aGUgb3JkZXIgb2YgcGxhbmVz IGlzIGZpcnN0IGRldGVybWluZWQgYnkgenBvcyAKPiBwcm9wZXJ0aWVzLCB3ZSBhbHJlYWR5IGhh dmUgd2VsbCBkZWZpbmVkIHdoYXQgaXMgYmFja2dyb3VuZCAocmVzdWx0IG9mIAo+IGJsZW5kaW5n IG9mIGFsbCBkZWVwZXIgcGxhbmVzKSBhbmQgd2hhdCBpcyBibGVuZGVkIHBsYW5lICh0aGUgdGVy bXMgCj4gc291cmNlIGFuZCBkZXN0aW5hdGlvbiB1c2VkIGluIHByZXZpb3VzIGRpc2N1c3Npb24g YWJvdXQgYmxlbmRpbmcgYXJlIAo+IG5vdCB2ZXJ5IGludHVpdGl2ZSBmb3IgbWUpLgo+IAo+IE5v dyBsZXRzIGNvbnNpZGVyIHRoZSBiYXNpYyBibGVuZGluZyBlcXVhdGlvbjoKPiBSZXN1bHRSR0Ig PSBBICogYmFja2dyb3VuZFJHQiArIEIgKiBwbGFuZVJHQgo+IAo+IHdoZXJlOgo+IHBsYW5lUkdC IGlzIFJHQiBwaXhlbCB2YWx1ZXMgb2YgYmxlbmRlZCBwbGFuZQo+IGJhY2tncm91bmRSR0IgaXMg UkdCIHBpeGVsIHZhbHVlcyBvZiBwbGFuZSdzIGJhY2tncm91bmQgKGkuZS4gcmVzdWx0IG9mIAo+ IHByZXZpb3VzIGJsZW5kaW5nIG9yIFJHQiBwaXhlbCB2YWx1ZXMgb2YgZGVlcGVyIHBsYW5lKQo+ IAo+IHdoZXJlIEEgYW5kIEIgY2FuIGJlIG9uZSBvZjoKPiBaRVJPLCBPTkUsIENPTlNUX0FMUEhB IChjb25zdGFudCBwbGFuZSBwcm9wZXJ0eSksICgxLUNPTlNUX0FMUEhBKSwgCj4gUElYRUxfQUxQ SEEgKGFscGhhIHZhbHVlIGZyb20gZ2l2ZW4gcGl4ZWwpLCAoMS1QSVhFTF9BTFBIQSksIAo+IFBJ WEVMX0NPTlNUX0FMUEhBIChDT05TVF9BTFBIQSAqIFBJWEVMX0FMUEhBKSwgKDEtUElYRUxfQ09O U1RfQUxQSEEpCj4gCj4gVGhpcyBnaXZlcyBmb2xsb3dpbmcgdXNlZnVsIG1vZGVzOgo+IDEuIE5P X0JMRU5ESU5HOiBBPVpFUk8sIEI9T05FIC0gbm8gYmxlbmRpbmcsIGdsb2JhbCBhbmQgcGVyLXBp eGVsIGFscGhhIAo+IGlnbm9yZWQgKHJlZ2FyZGxlc3Mgc2VsZWN0ZWQgZm91cmNjIG1vZGUpCj4g Mi4gQ09OU1RfQUxQSEFfQkxFTkQ6IEE9KDEtQ09OU1RfQUxQSEEpLCBCPUNPTlNUX0FMUEhBIC0g YmxlbmRpbmcgd2l0aCAKPiBnbG9iYWwgcGxhbmUgYWxwaGEsIHBlci1waXhlbCBhbHBoYSBpZ25v cmVkIChyZWdhcmRsZXNzIHNlbGVjdGVkIGZvdXJjYyAKPiBtb2RlKQo+IDMuIFBJWEVMX0FMUEhB X0JMRU5EOiBBPSgxLVBJWEVMX0FMUEhBKSwgQj1QSVhFTF9BTFBIQSAtIGJsZW5kaW5nIHdpdGgg Cj4gcGVyLXBpeGVsIGFscGhhLCBhc3N1bWluZyBwbGFuZSB3aXRoIGFscGhhIHByZS1tdWx0aXBs aWVkIFJHQiBwaXhlbCAKPiB2YWx1ZXMgKGdsb2JhbCBhbHBoYSBpZ25vcmVkLCBuZWVkcyBmb3Vy Y2MgbW9kZSB3aXRoIGFscGhhIGNoYW5uZWwgCj4gb3RoZXJ3aXNlIHNhbWUgYXMgMSkKPiA0LiBQ SVhFTF9DT05TVF9BTFBIQV9CTEVORDogQT0oMS1QSVhFTF9DT05TVF9BTFBIQSksIEI9UElYRUxf Q09OU1RfQUxQSEEgCj4gLSBibGVuZGluZyB3aXRoIGJvdGggZ2xvYmFsIGFuZCBwZXItcGl4ZWwg YWxwaGEgbXVsdGlwbGllZCwgYXNzdW1pbmcgCj4gcGxhbmUgd2l0aCBhbHBoYSBwcmUtbXVsdGlw bGllZCBSR0IgcGl4ZWwgdmFsdWVzIChuZWVkcyBmb3VyY2MgbW9kZSB3aXRoIAo+IGFscGhhIGNo YW5uZWwgb3RoZXJ3aXNlIHNhbWUgYXMgMikKPiAKPiBJZiB3ZSB3YW50IHRvIHNvbHZlIHByZS1t dWx0aXBsaWVkL3N0cmFpZ2h0IGFscGhhIG1vZGVzIGlzc3VlIGJ5IAo+IGludHJvZHVjaW5nIGFk ZGl0aW9uYWwgYmxlbmRpbmcgbW9kZSwgd2Ugc2hvdWxkIGNvbnNpZGVyIGZvbGxvd2luZzoKPiA1 LiBQSVhFTF9BTFBIQV9CTEVORF9TVFJBSUdIVDogQT0oMS1QSVhFTF9BTFBIQSksIEI9UElYRUxf QUxQSEEgLSAKPiBibGVuZGluZyB3aXRoIHBlci1waXhlbCBhbHBoYSwgYXNzdW1pbmcgcGxhbmUg d2l0aCBzdHJhaWdodCBSR0IgcGl4ZWwgCj4gdmFsdWVzICh0byBiZSBtdWx0aXBsaWVkIGJ5IHBp eGVsIGFscGhhIHZhbHVlKSwKPiA2LiBQSVhFTF9DT05TVF9BTFBIQV9CTEVORF9TVFJBSUdIVDog QT0oMS1DT05TVF9QSVhFTF9BTFBIQSksIAo+IEI9Q09OU1RfUElYRUxfQUxQSEEgLSBibGVuZGlu ZyB3aXRoIGJvdGggZ2xvYmFsIGFuZCBwZXItcGl4ZWwgYWxwaGEsIAo+IGFzc3VtaW5nIHBsYW5l IHdpdGggc3RyYWlnaHQgUkdCIHBpeGVsIHZhbHVlcyAodG8gYmUgbXVsdGlwbGllZCBieSBwaXhl bCAKPiBhbHBoYSB2YWx1ZSkKPiAKPiBBcmUgdGhlcmUgYW55IG90aGVyIHVzZWZ1bCBtb2RlcyBp bXBsZW1lbnRlZCBieSB5b3VyIGhhcmR3YXJlPyBUaGUgYWJvdmUgCj4gZGVmaW5lZCBtb2RlcyBh cmUgcXVpdGUgZWFzeSB0byBnZXQgZW1iZWRkZWQgaW50byBzaW5nbGUgZW51bSBhbmQgaGF2ZSAK PiB3ZWxsIGRlZmluZWQgYmVoYXZpb3IuCgpJSVJDIHNvbWUgb2Ygb3VyIGhhcmR3YXJlIGhhZCBh IGJ1bmNoIG1vcmUgb3B0aW9ucyBhdmFpbGFibGUuIFRvIGF2b2lkCnB1dHRpbmcgdG9vIG1hbnkg bGltaXRhdGlvbnMgaW50byB0aGUgQVBJICh3aGljaCBJJ20gc3VyZSB3ZSdkIGVuZCB1cApyZWdy ZXR0aW5nIGF0IHNvbWUgcG9pbnQgaWYgaGlzdG9yeSBpcyBhbnkgaW5kaWNhdGlvbikgSSdkIGp1 c3QgY2FsbAp0aGUgZW51bSB2YWx1ZXMgYXM6ClNfT05FX0RfWkVSTwpTX09ORV9EX09ORV9NSU5V U19TUkNfQUxQSEEKU19TUkNfQUxQSEFfRF9PTkVfTUlOVVNfU1JDX0FMUEhBCmV0Yy4Kb3Igc29t ZXRoaW5nIGxpa2UgdGhhdC4gSSBzdXBwb3NlIHRoZSBhY3R1YWwgc3RyaW5ncyBzaG91bGRuJ3Qg bWF0dGVyCnRvbyBtdWNoIGlmIHBlb3BsZSB3b3VsZCBqdXN0IHVzZSB0aGUgdmFsdWVzIGFuZCB3 ZSdkIGRlZmluZSB0aGUgdmFsdWVzCnRvIGhhdmUgcmVhbCBtZWFuaW5nLiBFZy4gKChkc3RfZmFj dG9yIDw8IHdoYXRldmVyKSB8IHNyY19mYWN0b3IpCgpBcyBmYXIgYXMgcHJlLW11bHRpcGxpY2F0 aW9uIGdvZXMsIEkgdGhpbmsgYSBzZXBhcmF0ZSBib29sIHByb3BlcnR5IHdvdWxkCmJlIGdvb2Qg ZW5vdWdoLiBBbmQgSSd2ZSBhbHdheXMgZm91bmQgaXQgZWFzaWVyIHRvIHRoaW5rIGluIHRlcm1z IG9mCndoaWNoIG9wZXJhdGlvbnMgdGhlIGhhcmR3YXJlIHdpbGwgcGVyZm9ybSwgc28gSSdkIGNh bGwgaXQgc29tZXRoaW5nCmxpa2UgInNyY19wcmVtdWx0aXBseSIsIGFuZCB3aGVuIGl0J3MgdHJ1 ZSB0aGUgaGFyZHdhcmUgd2lsbCBkbyBhbiBleHRyYQpwcmVtdWx0aXBsaWNhdGlvbiBzdGVwIGJl Zm9yZSBibGVuZGluZywgYW5kIHdoZW4gaXQncyBmYWxzZSBubyBleHRyYSBzdGVwCmlzIHBlcmZv cm1lZC4KCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==