From mboxrd@z Thu Jan 1 00:00:00 1970 From: Inki Dae Subject: Re: [PATCH v3] drm/exynos: mixer: configure layers once in mixer_atomic_flush() Date: Wed, 28 Sep 2016 08:31:25 +0900 Message-ID: <57EB014D.6010908@samsung.com> References: <1474889789-26721-1-git-send-email-tjakobi@math.uni-bielefeld.de> <57EA0D68.401@samsung.com> <57EA5664.3040106@math.uni-bielefeld.de> <130cf67d-4082-1e29-8f14-7c952c8a8012@samsung.com> <57EAA3C2.5000409@math.uni-bielefeld.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <57EAA3C2.5000409@math.uni-bielefeld.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Tobias Jakobi , Andrzej Hajda , linux-samsung-soc@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, m.szyprowski@samsung.com List-Id: linux-samsung-soc@vger.kernel.org CgoyMDE264WEIDA57JuUIDI47J28IDAxOjUy7JeQIFRvYmlhcyBKYWtvYmkg7J20KOqwgCkg7JO0 IOq4gDoKPiBIZWxsbyBBbmRyemVqLAo+IAo+IAo+IEFuZHJ6ZWogSGFqZGEgd3JvdGU6Cj4+IE9u IDI3LjA5LjIwMTYgMTM6MjIsIFRvYmlhcyBKYWtvYmkgd3JvdGU6Cj4+PiBIZWxsbyBJbmtpLAo+ Pj4KPj4+Cj4+PiBJbmtpIERhZSB3cm90ZToKPj4+PiAyMDE264WEIDA57JuUIDI27J28IDIwOjM2 7JeQIFRvYmlhcyBKYWtvYmkg7J20KOqwgCkg7JO0IOq4gDoKPj4+Pj4gT25seSBtYW5pcHVsYXRl IHRoZSBNWFJfQ0ZHIGFuZCBNWFJfTEFZRVJfQ0ZHIHJlZ2lzdGVycyBvbmNlCj4+Pj4+IGluIG1p eGVyX2NmZ19sYXllcigpLgo+Pj4+PiBUcmlnZ2VyIHRoaXMgdmlhIGF0b21pYyBmbHVzaC4KPj4+ Pj4KPj4+Pj4gQ2hhbmdlcyBpbiB2MjoKPj4+Pj4gLSBpc3N1ZSBtaXhlcl9jZmdfbGF5ZXIoKSBp biBtaXhlcl9kaXNhYmxlKCkKPj4+Pj4gLSByZW5hbWUgZmllbGRzIGFzIHN1Z2dlc3RlZCBieSBB bmRyemVqCj4+Pj4+IC0gYWRkZWQgZG9jdSB0byBtaXhlciBjb250ZXh0IHN0cnVjdAo+Pj4+PiAt IHNpbXBsaWZ5IG1peGVyX3dpbl9yZXNldCgpIGFzIHdlbGwKPj4+Pj4KPj4+Pj4gQ2hhbmdlcyBp biB2MzoKPj4+Pj4gLSBzaW1wbGlmeSBzb21lIGNvbmRpdGlvbnMgYXMgc3VnZ2VzdGVkIGJ5IElu a2kKPj4+Pj4gLSBhZGQgZG9jdSB0byBtaXhlcl9jZmdfbGF5ZXIoKQo+Pj4+PiAtIGZvbGQgc3dp dGNoIHN0YXRlbWVudHMgaW50byBhIHNpbmdsZSBvbmUKPj4+Pj4KPj4+Pj4gU2lnbmVkLW9mZi1i eTogVG9iaWFzIEpha29iaSA8dGpha29iaUBtYXRoLnVuaS1iaWVsZWZlbGQuZGU+Cj4+Pj4+IC0t LQo+Pj4+PiAgZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfbWl4ZXIuYyB8IDEzNSArKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCj4+Pj4+ICBkcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL3JlZ3MtbWl4ZXIuaCAgIHwgICAyICsKPj4+Pj4gIDIgZmlsZXMgY2hhbmdlZCwgOTIgaW5z ZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCj4+Pj4+Cj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19taXhlci5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5v cy9leHlub3NfbWl4ZXIuYwo+Pj4+PiBpbmRleCAxZTc4ZDU3Li40ZjA2ZjRkIDEwMDY0NAo+Pj4+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19taXhlci5jCj4+Pj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX21peGVyLmMKPj4+Pj4gQEAgLTkzLDEyICs5 MywyNSBAQCBzdGF0aWMgY29uc3QgdWludDMyX3QgdnBfZm9ybWF0c1tdID0gewo+Pj4+PiAgCURS TV9GT1JNQVRfTlYyMSwKPj4+Pj4gIH07Cj4+Pj4+ICAKPj4+Pj4gKy8qCj4+Pj4+ICsgKiBNaXhl ciBjb250ZXh0IHN0cnVjdHVyZS4KPj4+Pj4gKyAqCj4+Pj4+ICsgKiBAY3J0YzogVGhlIEhETUkg Q1JUQyBhdHRhY2hlZCB0byB0aGUgbWl4ZXIuCj4+Pj4+ICsgKiBAcGxhbmVzOiBBcnJheSBvZiBw bGFuZSBvYmplY3RzIGZvciBlYWNoIG9mIHRoZSBtaXhlciB3aW5kb3dzLgo+Pj4+PiArICogQGFj dGl2ZV93aW5kb3dzOiBDYWNoZSBvZiB0aGUgbWl4ZXIncyBoYXJkd2FyZSBzdGF0ZS4KPj4+Pj4g KyAqICAgICAgIFRyYWNrcyB3aGljaCBtaXhlciB3aW5kb3dzIGFyZSBhY3RpdmUvaW5hY3RpdmUu Cj4+Pj4+ICsgKiBAcGlwZTogVGhlIENSVEMgaW5kZXguCj4+Pj4+ICsgKiBAZmxhZ3M6IEJpdGZp ZWxkIGJ1aWxkIGZyb20gdGhlIG1peGVyX2ZsYWdfYml0cyBlbnVtZXJhdG9yLgo+Pj4+PiArICog QG1peGVyX3Jlc291cmNlczogQSBzdHJ1Y3QgY29udGFpbmluZyByZWdpc3RlcnMsIGNsb2Nrcywg ZXRjLgo+Pj4+PiArICogQG14cl92ZXI6IFRoZSBoYXJkd2FyZSByZXZpc2lvbi92ZXJzaW9uIG9m IHRoZSBtaXhlci4KPj4+Pj4gKyAqLwo+Pj4+PiAgc3RydWN0IG1peGVyX2NvbnRleHQgewo+Pj4+ PiAgCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7Cj4+Pj4+ICAJc3RydWN0IGRldmljZQkJ KmRldjsKPj4+Pj4gIAlzdHJ1Y3QgZHJtX2RldmljZQkqZHJtX2RldjsKPj4+Pj4gIAlzdHJ1Y3Qg ZXh5bm9zX2RybV9jcnRjCSpjcnRjOwo+Pj4+PiAgCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lCXBs YW5lc1tNSVhFUl9XSU5fTlJdOwo+Pj4+PiArCXVuc2lnbmVkIGxvbmcJCWFjdGl2ZV93aW5kb3dz Owo+Pj4+PiAgCWludAkJCXBpcGU7Cj4+Pj4+ICAJdW5zaWduZWQgbG9uZwkJZmxhZ3M7Cj4+Pj4+ ICAKPj4+Pj4gQEAgLTQxOCwzNyArNDMxLDcwIEBAIHN0YXRpYyB2b2lkIG1peGVyX2NmZ19yZ2Jf Zm10KHN0cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgsIHVuc2lnbmVkIGludCBoZWlnaHQpCj4+Pj4+ ICAJbWl4ZXJfcmVnX3dyaXRlbWFzayhyZXMsIE1YUl9DRkcsIHZhbCwgTVhSX0NGR19SR0JfRk1U X01BU0spOwo+Pj4+PiAgfQo+Pj4+PiAgCj4+Pj4+IC1zdGF0aWMgdm9pZCBtaXhlcl9jZmdfbGF5 ZXIoc3RydWN0IG1peGVyX2NvbnRleHQgKmN0eCwgdW5zaWduZWQgaW50IHdpbiwKPj4+Pj4gLQkJ CSAgICB1bnNpZ25lZCBpbnQgcHJpb3JpdHksIGJvb2wgZW5hYmxlKQo+Pj4+PiArLyoqCj4+Pj4+ ICsgKiBtaXhlcl9jZmdfbGF5ZXIgLSBhcHBseSBsYXllciBjb25maWd1cmF0aW9uIHRvIGhhcmR3 YXJlCj4+Pj4+ICsgKiBAY3R4OiBtaXhlciBjb250ZXh0Cj4+Pj4+ICsgKgo+Pj4+PiArICogVGhp cyBjb25maWd1cmVzIHRoZSBNWFJfQ0ZHIGFuZCBNWFJfTEFZRVJfQ0ZHIGhhcmR3YXJlIHJlZ2lz dGVycwo+Pj4+PiArICogdXNpbmcgdGhlICdhY3RpdmVfd2luZG93cycgZmllbGQgb2YgdGhlIHRo ZSBtaXhlciBjb250ZW50LCBhbmQKPj4+Pj4gKyAqIHRoZSBwaXhlbCBmb3JtYXQgb2YgdGhlIGZy YW1lYnVmZmVycyBhc3NvY2lhdGVkIHdpdGggdGhlIGVuYWJsZWQKPj4+Pj4gKyAqIHdpbmRvd3Mu Cj4+Pj4+ICsgKgo+Pj4+PiArICogSGFzIHRvIGJlIGNhbGxlZCB1bmRlciBtaXhlciBsb2NrLgo+ Pj4+PiArICovCj4+Pj4+ICtzdGF0aWMgdm9pZCBtaXhlcl9jZmdfbGF5ZXIoc3RydWN0IG1peGVy X2NvbnRleHQgKmN0eCkKPj4+Pj4gIHsKPj4+Pj4gIAlzdHJ1Y3QgbWl4ZXJfcmVzb3VyY2VzICpy ZXMgPSAmY3R4LT5taXhlcl9yZXM7Cj4+Pj4+IC0JdTMyIHZhbCA9IGVuYWJsZSA/IH4wIDogMDsK Pj4+Pj4gLQo+Pj4+PiAtCXN3aXRjaCAod2luKSB7Cj4+Pj4+IC0JY2FzZSAwOgo+Pj4+PiAtCQlt aXhlcl9yZWdfd3JpdGVtYXNrKHJlcywgTVhSX0NGRywgdmFsLCBNWFJfQ0ZHX0dSUDBfRU5BQkxF KTsKPj4+Pj4gLQkJbWl4ZXJfcmVnX3dyaXRlbWFzayhyZXMsIE1YUl9MQVlFUl9DRkcsCj4+Pj4+ IC0JCQkJICAgIE1YUl9MQVlFUl9DRkdfR1JQMF9WQUwocHJpb3JpdHkpLAo+Pj4+PiAtCQkJCSAg ICBNWFJfTEFZRVJfQ0ZHX0dSUDBfTUFTSyk7Cj4+Pj4+IC0JCWJyZWFrOwo+Pj4+PiAtCWNhc2Ug MToKPj4+Pj4gLQkJbWl4ZXJfcmVnX3dyaXRlbWFzayhyZXMsIE1YUl9DRkcsIHZhbCwgTVhSX0NG R19HUlAxX0VOQUJMRSk7Cj4+Pj4+IC0JCW1peGVyX3JlZ193cml0ZW1hc2socmVzLCBNWFJfTEFZ RVJfQ0ZHLAo+Pj4+PiAtCQkJCSAgICBNWFJfTEFZRVJfQ0ZHX0dSUDFfVkFMKHByaW9yaXR5KSwK Pj4+Pj4gLQkJCQkgICAgTVhSX0xBWUVSX0NGR19HUlAxX01BU0spOwo+Pj4+PiArCXVuc2lnbmVk IGludCB3aW47Cj4+Pj4+ICAKPj4+Pj4gLQkJYnJlYWs7Cj4+Pj4+IC0JY2FzZSBWUF9ERUZBVUxU X1dJTjoKPj4+Pj4gLQkJaWYgKHRlc3RfYml0KE1YUl9CSVRfVlBfRU5BQkxFRCwgJmN0eC0+Zmxh Z3MpKSB7Cj4+Pj4+IC0JCQl2cF9yZWdfd3JpdGVtYXNrKHJlcywgVlBfRU5BQkxFLCB2YWwsIFZQ X0VOQUJMRV9PTik7Cj4+Pj4+IC0JCQltaXhlcl9yZWdfd3JpdGVtYXNrKHJlcywgTVhSX0NGRywg dmFsLAo+Pj4+PiAtCQkJCU1YUl9DRkdfVlBfRU5BQkxFKTsKPj4+Pj4gLQkJCW1peGVyX3JlZ193 cml0ZW1hc2socmVzLCBNWFJfTEFZRVJfQ0ZHLAo+Pj4+PiAtCQkJCQkgICAgTVhSX0xBWUVSX0NG R19WUF9WQUwocHJpb3JpdHkpLAo+Pj4+PiAtCQkJCQkgICAgTVhSX0xBWUVSX0NGR19WUF9NQVNL KTsKPj4+Pj4gKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZV9zdGF0ZSAqc3RhdGU7Cj4+Pj4+ICsJ c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7Cj4+Pj4+ICsJdW5zaWduZWQgaW50IHByaW9yaXR5 Owo+Pj4+PiArCXUzMiBteHJfY2ZnID0gMCwgbXhyX2xheWVyX2NmZyA9IDAsIHZwX2VuYWJsZSA9 IDA7Cj4+Pj4+ICsJYm9vbCBlbmFibGU7Cj4+Pj4+ICsKPj4+Pj4gKwlmb3IgKHdpbiA9IDA7IHdp biA8IE1JWEVSX1dJTl9OUjsgKyt3aW4pIHsKPj4+Pj4gKwkJc3RhdGUgPSB0b19leHlub3NfcGxh bmVfc3RhdGUoY3R4LT5wbGFuZXNbd2luXS5iYXNlLnN0YXRlKTsKPj4+Pj4gKwkJZmIgPSBzdGF0 ZS0+ZmI7Cj4+Pj4+ICsKPj4+Pj4gKwkJcHJpb3JpdHkgPSBzdGF0ZS0+YmFzZS5ub3JtYWxpemVk X3pwb3MgKyAxOwo+Pj4+PiArCQllbmFibGUgPSB0ZXN0X2JpdCh3aW4sICZjdHgtPmFjdGl2ZV93 aW5kb3dzKTsKPj4+Pj4gKwo+Pj4+PiArCQlpZiAoIWVuYWJsZSkKPj4+Pj4gKwkJCWNvbnRpbnVl Owo+Pj4+PiArCj4+Pj4+ICsJCUJVR19PTighZmIpOwo+Pj4+PiArCj4+Pj4+ICsJCS8qCj4+Pj4+ ICsJCSAqIFRPRE86IERvbid0IGVuYWJsZSBhbHBoYSBibGVuZGluZyBmb3IgdGhlIGJvdHRvbSB3 aW5kb3cuCj4+Pj4+ICsJCSAqLwo+Pj4+PiArCQlzd2l0Y2ggKHdpbikgewo+Pj4+PiArCQljYXNl IDA6Cj4+Pj4+ICsJCQlteHJfY2ZnIHw9ICBNWFJfQ0ZHX0dSUDBfRU5BQkxFOwo+Pj4+PiArCQkJ bXhyX2xheWVyX2NmZyB8PSBNWFJfTEFZRVJfQ0ZHX0dSUDBfVkFMKHByaW9yaXR5KTsKPj4+Pj4g KwkJCW1peGVyX2NmZ19nZnhfYmxlbmQoY3R4LCB3aW4sIGlzX2FscGhhX2Zvcm1hdChmYi0+cGl4 ZWxfZm9ybWF0KSk7Cj4+Pj4+ICsJCQlicmVhazsKPj4+Pj4gKwo+Pj4+PiArCQljYXNlIDE6Cj4+ Pj4+ICsJCQlteHJfY2ZnIHw9ICBNWFJfQ0ZHX0dSUDFfRU5BQkxFOwo+Pj4+PiArCQkJbXhyX2xh eWVyX2NmZyB8PSBNWFJfTEFZRVJfQ0ZHX0dSUDFfVkFMKHByaW9yaXR5KTsKPj4+Pj4gKwkJCW1p eGVyX2NmZ19nZnhfYmxlbmQoY3R4LCB3aW4sIGlzX2FscGhhX2Zvcm1hdChmYi0+cGl4ZWxfZm9y bWF0KSk7Cj4+Pj4+ICsJCQlicmVhazsKPj4+Pj4gKwo+Pj4+PiArCQljYXNlIFZQX0RFRkFVTFRf V0lOOgo+Pj4+PiArCQkJdnBfZW5hYmxlID0gVlBfRU5BQkxFX09OOwo+Pj4+PiArCQkJbXhyX2Nm ZyB8PSAgTVhSX0NGR19WUF9FTkFCTEU7Cj4+Pj4+ICsJCQlteHJfbGF5ZXJfY2ZnIHw9IE1YUl9M QVlFUl9DRkdfVlBfVkFMKHByaW9yaXR5KTsKPj4+Pj4gKwkJCW1peGVyX2NmZ192cF9ibGVuZChj dHgpOwo+Pj4+PiArCQkJYnJlYWs7Cj4+Pj4+ICAJCX0KPj4+Pj4gLQkJYnJlYWs7Cj4+Pj4+ICAJ fQo+Pj4+PiArCj4+Pj4+ICsJaWYgKHRlc3RfYml0KE1YUl9CSVRfVlBfRU5BQkxFRCwgJmN0eC0+ ZmxhZ3MpKQo+Pj4+PiArCQl2cF9yZWdfd3JpdGVtYXNrKHJlcywgVlBfRU5BQkxFLCB2cF9lbmFi bGUsIFZQX0VOQUJMRV9PTik7Cj4+Pj4+ICsKPj4+Pj4gKwltaXhlcl9yZWdfd3JpdGVtYXNrKHJl cywgTVhSX0NGRywgbXhyX2NmZywgTVhSX0NGR19FTkFCTEVfTUFTSyk7Cj4+Pj4+ICsJbWl4ZXJf cmVnX3dyaXRlbWFzayhyZXMsIE1YUl9MQVlFUl9DRkcsIG14cl9sYXllcl9jZmcsIE1YUl9MQVlF Ul9DRkdfTUFTSyk7Cj4+Pj4+ICB9Cj4+Pj4+ICAKPj4+Pj4gIHN0YXRpYyB2b2lkIG1peGVyX3J1 bihzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4KQo+Pj4+PiBAQCAtNDc4LDcgKzUyNCw2IEBAIHN0 YXRpYyB2b2lkIHZwX3ZpZGVvX2J1ZmZlcihzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4LAo+Pj4+ PiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gJnN0YXRlLT5iYXNlLmNydGMtPnN0 YXRlLT5hZGp1c3RlZF9tb2RlOwo+Pj4+PiAgCXN0cnVjdCBtaXhlcl9yZXNvdXJjZXMgKnJlcyA9 ICZjdHgtPm1peGVyX3JlczsKPj4+Pj4gIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0 YXRlLT5mYjsKPj4+Pj4gLQl1bnNpZ25lZCBpbnQgcHJpb3JpdHkgPSBzdGF0ZS0+YmFzZS5ub3Jt YWxpemVkX3pwb3MgKyAxOwo+Pj4+PiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+Pj4+ICAJZG1h X2FkZHJfdCBsdW1hX2FkZHJbMl0sIGNocm9tYV9hZGRyWzJdOwo+Pj4+PiAgCWJvb2wgdGlsZWRf bW9kZSA9IGZhbHNlOwo+Pj4+PiBAQCAtNTYzLDggKzYwOCw2IEBAIHN0YXRpYyB2b2lkIHZwX3Zp ZGVvX2J1ZmZlcihzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4LAo+Pj4+PiAgCj4+Pj4+ICAJbWl4 ZXJfY2ZnX3NjYW4oY3R4LCBtb2RlLT52ZGlzcGxheSk7Cj4+Pj4+ICAJbWl4ZXJfY2ZnX3JnYl9m bXQoY3R4LCBtb2RlLT52ZGlzcGxheSk7Cj4+Pj4+IC0JbWl4ZXJfY2ZnX2xheWVyKGN0eCwgcGxh bmUtPmluZGV4LCBwcmlvcml0eSwgdHJ1ZSk7Cj4+Pj4+IC0JbWl4ZXJfY2ZnX3ZwX2JsZW5kKGN0 eCk7Cj4+Pj4gWW91IHJlbW92ZWQgdGhlIGZ1bmN0aW9uIGNhbGwgdG8gc2V0IE1YUl9DRkcgYW5k IE1YUl9MQVlFUl9DRkcgcmVnaXN0ZXJzIHNvIHdoYXQgaWYgbGFnYWN5IHNldCBwbGFuZSBpb2N0 bCBpcyBjYWxsZWQgYnkgdXNlciB1c2VyIHNwYWNlPyBXaGVyZSB0aGVzZSByZWdpc3RlciBhcmUg dXBkYXRlZD8KPj4+IHllcywgeW91J3JlIHJpZ2h0LiBJIGNvbXBsZXRseSBmb3Jnb3QgYWJvdXQg dGhlIGxlZ2FjeSBjb2RlcGF0aHMuIFNvcnJ5Cj4+PiBhYm91dCB0aGF0IQo+Pgo+PiBBcmUgeW91 IHRhbGtpbmcgYWJvdXQgRFJNX0lPQ1RMX01PREVfU0VUUExBTkU/Cj4+IEl0IGRvZXMgbm90IHNl ZW0gdG8gYmUgbGVnYWN5LCBvciB0byBiZSBtb3JlIHByZWNpc2UgaXQgY2FsbHMKPj4gLnVwZGF0 ZV9wbGFuZSBhbmQgLmRpc2FibGVfcGxhbmUKPj4gY2FsbGJhY2tzIHdoaWNoIGluIGV4eW5vcyBh cmUgc2V0IGFzIGZvbGxvdzoKPj4gICAgIC51cGRhdGVfcGxhbmUgICAgPSBkcm1fYXRvbWljX2hl bHBlcl91cGRhdGVfcGxhbmUsCj4+ICAgICAuZGlzYWJsZV9wbGFuZSAgICA9IGRybV9hdG9taWNf aGVscGVyX2Rpc2FibGVfcGxhbmUsCj4+Cj4+IFNvIERSTV9JT0NUTF9NT0RFX1NFVFBMQU5FIGNh bGxzIGF0b21pYyBjb2RlcGF0aCBhbnl3YXkuCj4gdGhhbmtzIGEgbG90IGZvciB0aGUgaGVhZHMt dXAuIEkgY2FuIGNvbmZpcm0gdGhhdCBkcm1fbW9kZV9zZXRwbGFuZSgpCj4gYWxzbyBnb2VzIHRo cm91Z2ggdGhlIGF0b21pYyBwYXRoLgo+IAo+IFRoZSBzaW1wbGlmaWVkIGNhbGxzdGFjazoKPiAt IGRybV9tb2RlX3NldHBsYW5lKCkKPiAgIC0gX19zZXRwbGFuZV9pbnRlcm5hbCgpCj4gICAgIC0g ZGlzYWJsZV9wbGFuZSgpIChzZXQgaW4gcGxhbmVfaGVscGVyX2Z1bmNzIGluIGV4eW5vc19kcm1f cGxhbmUuYykKPiAgICAgLSB1cGRhdGVfcGxhbmUoKSAoc2FtZSBoZXJlKQoKU29ycnkgZm9yIHBy ZXZpb3VzIGNvbW1lbnRzIG5vdCBlbm91Z2guCgp1cGRhdGVfcGxhbmUKCS4uLgoJLSBtaXhlcl91 cGRhdGVfcGxhbmUKCQktIHZwX3ZpZGVvX2J1ZmZlciBvciBtaXhlcl9ncmFwaF9idWZmZXIKCkhv d2V2ZXIsIHlvdSByZW1vdmVkIG1peGVyX2NmZ19sYXllciBjYWxsIGZyb20gYWJvdmUgZnVuY3Rp b25zLgoKU28gbXkgaW50ZW50aW9uIHdhcyB0byBrZWVwIHRoZSBtb2RpZmVkIG1peGVyX2NmZ19s YXllciBjYWxsIG9uIHZwX3ZpZGVvX2J1ZmZlciBhbmQgbWl4ZXJfZ3JwYWhfYnVmZmVyIGZ1bmN0 aW9ucy4KbWl4ZXJfYXRvbWljX2ZsdXNoIGZ1bmN0aW9uIGlzIG5vdCByZWFsbHkgcHJvcGVyIHBs YWNlIHRvIGNhbGwgbWl4ZXJfY2ZnX2xheWVyIGZ1bmN0aW9uIGV2ZW4gbWl4ZXJfd2luX3Jlc2V0 LgpGb3IgdGhpcyBJIG1lbnRpb25lZCBhbHJlYWR5IGF0IHByZXZpb3VzIG15IGNvbW1lbnQsCiJh dG9taWNfZmx1c2ggY2FsbGJhY2sgd2lsbCBiZSB1c2VkIHRvIG1ha2Ugc3VyZSByZWdpc3RlcnMg dG8gYmUgdXBkYXRlZCB0byB0aGUgcmVhbCBoYXJkd2FyZS4gU28gY2FsbGluZyBtaXhlcl9jZmdf bGF5ZXIgZnVuY3Rpb24gaGVyZSB3b3VsZG4ndCBiZSByZWFzb25hYmxlLiIKCkFsc28gaXQgd291 bGQgYmUgcmVhc29uYWJsZSB0byByZW1vdmUgbWl4ZXJfY2ZnX2xheWVyIGZ1bmN0aW9uIGNhbGwg ZnJvbSBtaXhlcl93aW5fcmVzZXQgZnVuY3Rpb24uCgo+IAo+IAo+IEZvciBjb21wbGV0ZW5lc3Mg SSd2ZSBhbHNvIGNoZWNrZWQgZHJtX21vZGVfc2V0Y3J0YygpLCB0aGUgb3RoZXIgbGVnYWN5Cj4g RFJNIGNhbGwgdGhhdCBtYW5pcHVsYXRlcyB0aGUgcHJpbWFyeSBwbGFuZS4KPiAKPiBJdCBnb2Vz IHRoZSBmb2xsb3dpbmcgcm91dGU6Cj4gLSBkcm1fbW9kZV9zZXRjcnRjCj4gICAtIGRybV9tb2Rl X3NldF9jb25maWdfaW50ZXJuYWwoKQo+ICAgICAtIHNldF9jb25maWcoKSAoc2V0IGluIGV4eW5v c19jcnRjX2Z1bmNzIGluIGV4eW5vc19kcm1fY3J0Yy5jKQo+IAo+IEFsc28gaGVyZTogLnNldF9j b25maWcgPSBkcm1fYXRvbWljX2hlbHBlcl9zZXRfY29uZmlnCj4gCj4gQm90aCBEUk1fSU9DVExf TU9ERV9TRVRQTEFORSBhbmQgRFJNX0lPQ1RMX01PREVfQ1JUQyBnbyB0aGUgYXRvbWljCj4gcm91 dGUsIHNvIHRoZSBwYXRjaCBpcyBmaW5lIHRoaXMgd2F5Lgo+IAo+IEBJbmtpOiBDYW4geW91IHN0 aWxsIHF1ZXVlIHRoaXMgdXAgZm9yIDQuOS55Pwo+IAo+IAo+IFdpdGggYmVzdCB3aXNoZXMsCj4g VG9iaWFzCj4gCj4gCj4+Cj4+IFJlZ2FyZHMKPj4gQW5kcnplago+Pgo+IAo+IC0tCj4gVG8gdW5z dWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4 LXNhbXN1bmctc29jIiBpbgo+IHRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdl ci5rZXJuZWwub3JnCj4gTW9yZSBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVs Lm9yZy9tYWpvcmRvbW8taW5mby5odG1sCj4gCj4gCj4gCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=