From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ot1-x342.google.com (mail-ot1-x342.google.com [IPv6:2607:f8b0:4864:20::342]) by gabe.freedesktop.org (Postfix) with ESMTPS id 299C16EE80 for ; Fri, 2 Aug 2019 14:38:13 +0000 (UTC) Received: by mail-ot1-x342.google.com with SMTP id o101so78344447ota.8 for ; Fri, 02 Aug 2019 07:38:13 -0700 (PDT) MIME-Version: 1.0 References: <20190712141618.7110-1-oleg.vasilev@intel.com> <20190712141618.7110-2-oleg.vasilev@intel.com> In-Reply-To: <20190712141618.7110-2-oleg.vasilev@intel.com> From: Daniel Vetter Date: Fri, 2 Aug 2019 16:38:01 +0200 Message-ID: Subject: Re: [igt-dev] [PATCH 2/2] tests/prime_generic: add vendor-agnostic prime tests List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Oleg Vasilev Cc: IGT development List-ID: T24gRnJpLCBKdWwgMTIsIDIwMTkgYXQgNDoxNiBQTSBPbGVnIFZhc2lsZXYgPG9sZWcudmFzaWxl dkBpbnRlbC5jb20+IHdyb3RlOgo+Cj4gQ3VycmVudCwgd2UgaGF2ZSBkaWZmZXJlbnQgc2V0cyBv ZiBwcmltZSB0ZXN0czoKPiAgLSB2Z2VtK2k5MTUKPiAgLSBhbWRncHUraTkxNQo+ICAtIG5vdXZl YXUraTkxNQo+Cj4gVGhvc2UgdGVzdHMgdXNlIHZlbmRvci1zcGVjaWZpYyBpb2N0bHMsIHRoZXJl Zm9yZSwgbm90IGludGVyY2hhbmdlYWJsZS4KPiBUaGUgaWRlYSBpcyB0byBjcmVhdGUgYSBzZXQg b2YgdGVzdHMgd2hpY2ggYXJlIGV4cGVjdGVkIHRvIHdvcmsgb24gYW55Cj4gcHJpbWUtY29tcGF0 aWJsZSBkcml2ZXIuIEl0IGNhbiBiZSBydW4gd2l0aCBhbnkgY29tYmluYXRpb24gb2YKPiBleHBv cnRlcitpbXBvcnRlciwgd2hpbGUgdGhvc2UgZGV2aWNlcyBoYXZlIHJlc3BlY3RpdmUgcHJpbWUK PiBjYXBhYmlsaXRpZXMuCj4KPiBTaW5jZSB2Z2VtIGNhbiBiZSB1c2VkIGFzIGJvdGggZXhwb3J0 ZXIgYW5kIGltcG9ydGVyLCBhbmQgdGhlcmUgYXJlbid0Cj4gYW55IGdlbmVyaWMga21zIGZlYXR1 cmVzIHdoaWNoIHZnZW0gZG9lc24ndCBzdXBwb3J0LCBpdCBpcyBzdWZmaWNpZW50Cj4gdG8gdGVz dCBEUklWRVJfQU5ZK0RSSVZFUl9WS01TLgoKSSBndWVzcyB5b3UgbWVhbnQgQU5ZICsgVkdFTSBo ZXJlPwoKPiBUaGUgZmlyc3QgdGVzdCBpcyBzaW1wbGU6Cj4gMS4gRXhwb3J0ZXIgY3JlYXRlcyBh IGR1bWIgRkIgYW5kIGZpbGxzIGl0IHdpdGggYSBwbGFpbiBjb2xvcgo+IDIuIEZCIGlzIHRyYW5z ZmVycmVkIHRvIHRoZSBpbXBvcnRlcgo+IDMuIEltcG9ydGVyIG1vZGVzZXRzIGFuZCBjb21wdXRl cyBwaXBlIENSQwo+IDQuIEltcG9ydGVyIGRyYXdzIHRoZSBzYW1lIGNvbG9yIHRocm91Z2ggY2Fp cm8gYW5kIGNvbXBhcmVzIENSQwo+Cj4gVGhlIGluaXRpYWwgbW90aXZhdGlvbiBjb21lcyBmcm9t IHRoZSBuZWVkIHRvIHRlc3QgcHJpbWUgc3VwcG9ydCBpbgo+IHZrbXMuCj4KPiBDYzogUm9kcmln byBTaXF1ZWlyYSA8cm9kcmlnb3NpcXVlaXJhbWVsb0BnbWFpbC5jb20+Cj4gQ2M6IERhbmllbCBW ZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KPiBTaWduZWQtb2ZmLWJ5OiBPbGVnIFZhc2lsZXYgPG9s ZWcudmFzaWxldkBpbnRlbC5jb20+Cj4gLS0tCj4gIHRlc3RzL21lc29uLmJ1aWxkICAgICB8ICAg MSArCj4gIHRlc3RzL3ByaW1lX2dlbmVyaWMuYyB8IDI1MCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKCkFsc28gc2Vjb25kZWQgb24gQ2hyaXMnIHN1Z2dlc3Rpb24g dG8gY2FsbCB0aGlzIGttc19wcmltZS5jIEkgdGhpbmsKdGhhdCBmaXRzIGJldHRlci4KPiAgMiBm aWxlcyBjaGFuZ2VkLCAyNTEgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVz dHMvcHJpbWVfZ2VuZXJpYy5jCj4KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90 ZXN0cy9tZXNvbi5idWlsZAo+IGluZGV4IDM0YTc0MDI1Li4xYzkzOGU5NSAxMDA2NDQKPiAtLS0g YS90ZXN0cy9tZXNvbi5idWlsZAo+ICsrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCj4gQEAgLTc2LDYg Kzc2LDcgQEAgdGVzdF9wcm9ncyA9IFsKPiAgICAgICAgICdwcmltZV9zZWxmX2ltcG9ydCcsCj4g ICAgICAgICAncHJpbWVfdWRsJywKPiAgICAgICAgICdwcmltZV92Z2VtJywKPiArICAgICAgICdw cmltZV9nZW5lcmljJywKPiAgICAgICAgICdzeW5jb2JqX2Jhc2ljJywKPiAgICAgICAgICdzeW5j b2JqX3dhaXQnLAo+ICAgICAgICAgJ3RlbXBsYXRlJywKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvcHJp bWVfZ2VuZXJpYy5jIGIvdGVzdHMvcHJpbWVfZ2VuZXJpYy5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCAwMDAwMDAwMC4uZjI3M2E0ZjYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvdGVz dHMvcHJpbWVfZ2VuZXJpYy5jCj4gQEAgLTAsMCArMSwyNTAgQEAKPiArLyoKPiArICogQ29weXJp Z2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEK PiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUg cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg c3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hl ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4g KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBp biBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2Fy ZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5H IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4g KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu ICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVS UyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4K PiArICovCj4gKwo+ICsjaW5jbHVkZSAiaWd0LmgiCj4gKyNpbmNsdWRlICJpZ3RfdmdlbS5oIgo+ ICsKPiArI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgo+ICsjaW5jbHVkZSA8c3lzL3BvbGwuaD4KPiAr I2luY2x1ZGUgPHRpbWUuaD4KPiArCj4gK3N0cnVjdCBjcmNfaW5mbyB7Cj4gKyAgICAgICBpZ3Rf Y3JjX3QgY3JjOwo+ICsgICAgICAgY2hhciAqc3RyOwo+ICsgICAgICAgY29uc3QgY2hhciAqbmFt ZTsKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3Qgewo+ICsgICAgICAgZG91YmxlIHIsIGcsIGI7 Cj4gKyAgICAgICB1aW50MzJfdCBjb2xvcjsKPiArICAgICAgIHN0cnVjdCBjcmNfaW5mbyBwcmlt ZV9jcmMsIGRpcmVjdF9jcmM7Cj4gK30gY29sb3JzWzNdID0gewo+ICsgICAgICAgeyAuciA9IDAu MCwgLmcgPSAwLjAsIC5iID0gMC4wLCAuY29sb3IgPSAweGZmMDAwMDAwfSwKPiArICAgICAgIHsg LnIgPSAxLjAsIC5nID0gMS4wLCAuYiA9IDEuMCwgLmNvbG9yID0gMHhmZmZmZmZmZn0sCj4gKyAg ICAgICB7IC5yID0gMS4wLCAuZyA9IDAuMCwgLmIgPSAwLjAsIC5jb2xvciA9IDB4ZmZmZjAwMDB9 LAo+ICt9Owo+ICsKPiArSUdUX1RFU1RfREVTQ1JJUFRJT04oIkdlbmVyaWMgdGVzdHMsIHdvcmtp bmcgd2l0aCBhbnkgcHJpbWUgZGV2aWNlIik7Cj4gKwo+ICtzdGF0aWMgYm9vbCBoYXNfcHJpbWVf aW1wb3J0KGludCBmZCkKPiArewo+ICsgICAgICAgdWludDY0X3QgdmFsdWU7Cj4gKwo+ICsgICAg ICAgaWYgKGRybUdldENhcChmZCwgRFJNX0NBUF9QUklNRSwgJnZhbHVlKSkKPiArICAgICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOwo+ICsKPiArICAgICAgIHJldHVybiB2YWx1ZSAmIERSTV9QUklN RV9DQVBfSU1QT1JUOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBoYXNfcHJpbWVfZXhwb3J0KGlu dCBmZCkKPiArewo+ICsgICAgICAgdWludDY0X3QgdmFsdWU7Cj4gKwo+ICsgICAgICAgaWYgKGRy bUdldENhcChmZCwgRFJNX0NBUF9QUklNRSwgJnZhbHVlKSkKPiArICAgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOwo+ICsKPiArICAgICAgIHJldHVybiB2YWx1ZSAmIERSTV9QUklNRV9DQVBfRVhQ T1JUOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBzZXR1cF9kaXNwbGF5KGludCBpbXBvcnRlciwg aWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaWd0X291dHB1dF90ICoqb3V0cHV0LAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgZW51bSBwaXBlIHBpcGUpCj4gK3sKPiArICAgICAgIGlndF9kaXNw bGF5X3JlcXVpcmUoZGlzcGxheSwgaW1wb3J0ZXIpOwo+ICsgICAgICAgaWd0X3NraXBfb24ocGlw ZSA+PSBkaXNwbGF5LT5uX3BpcGVzKTsKPiArICAgICAgICpvdXRwdXQgPSBpZ3RfZ2V0X3Npbmds ZV9vdXRwdXRfZm9yX3BpcGUoZGlzcGxheSwgcGlwZSk7Cj4gKyAgICAgICBpZ3RfcmVxdWlyZV9m KCpvdXRwdXQsICJObyBjb25uZWN0b3IgZm91bmQgZm9yIHBpcGUgJXNcbiIsCj4gKyAgICAgICAg ICAgICAgICAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKTsKPiArCj4gKyAgICAgICBpZ3Rf ZGlzcGxheV9yZXNldChkaXNwbGF5KTsKPiArICAgICAgIGlndF9vdXRwdXRfc2V0X3BpcGUoKm91 dHB1dCwgcGlwZSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHByZXBhcmVfc2NyYXRjaChpbnQg ZXhwb3J0ZXIsIHN0cnVjdCB2Z2VtX2JvICpzY3JhdGNoLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICBkcm1Nb2RlTW9kZUluZm8gKm1vZGUsIHVpbnQzMl90IGNvbG9yKQo+ICt7Cj4gKyAg ICAgICBpbnQgaTsKPiArICAgICAgIHVpbnQzMl90ICpwdHI7Cj4gKwo+ICsgICAgICAgc2NyYXRj aC0+d2lkdGggPSBtb2RlLT5oZGlzcGxheTsKPiArICAgICAgIHNjcmF0Y2gtPmhlaWdodCA9IG1v ZGUtPnZkaXNwbGF5Owo+ICsgICAgICAgc2NyYXRjaC0+YnBwID0gMzI7Cj4gKyAgICAgICB2Z2Vt X2NyZWF0ZShleHBvcnRlciwgc2NyYXRjaCk7Cj4gKwo+ICsgICAgICAgcHRyID0gdmdlbV9tbWFw KGV4cG9ydGVyLCBzY3JhdGNoLCBQUk9UX1dSSVRFKTsKPiArICAgICAgIGZvciAoaSA9IDA7IGkg PCBzY3JhdGNoLT5zaXplIC8gc2l6ZW9mKCpwdHIpOyArK2kpCj4gKyAgICAgICAgICAgICAgIHB0 cltpXSA9IGNvbG9yOwo+ICsKPiArICAgICAgIG11bm1hcChwdHIsIHNjcmF0Y2gtPnNpemUpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBwcmVwYXJlX2ZiKGludCBpbXBvcnRlciwgc3RydWN0IHZn ZW1fYm8gKnNjcmF0Y2gsIHN0cnVjdCBpZ3RfZmIgKmZiKQo+ICt7Cj4gKyAgICAgICBlbnVtIGln dF9jb2xvcl9lbmNvZGluZyBjb2xvcl9lbmNvZGluZyA9IElHVF9DT0xPUl9ZQ0JDUl9CVDcwOTsK PiArICAgICAgIGVudW0gaWd0X2NvbG9yX3JhbmdlIGNvbG9yX3JhbmdlID0gSUdUX0NPTE9SX1lD QkNSX0xJTUlURURfUkFOR0U7Cj4gKwo+ICsgICAgICAgaWd0X2luaXRfZmIoZmIsIGltcG9ydGVy LCBzY3JhdGNoLT53aWR0aCwgc2NyYXRjaC0+aGVpZ2h0LAo+ICsgICAgICAgICAgICAgICAgICAg RFJNX0ZPUk1BVF9YUkdCODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKPiArICAgICAg ICAgICAgICAgICAgIGNvbG9yX2VuY29kaW5nLCBjb2xvcl9yYW5nZSk7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIGltcG9ydF9mYihpbnQgaW1wb3J0ZXIsIHN0cnVjdCBpZ3RfZmIgKmZiLAo+ICsg ICAgICAgICAgICAgICAgICAgICBpbnQgZG1hYnVmX2ZkLCB1aW50MzJfdCBwaXRjaCkKPiArewo+ ICsgICAgICAgdWludDMyX3Qgb2Zmc2V0c1s0XSwgcGl0Y2hlc1s0XSwgaGFuZGxlc1s0XTsKPiAr ICAgICAgIGludCByZXQ7Cj4gKwo+ICsgICAgICAgZmItPmdlbV9oYW5kbGUgPSBwcmltZV9mZF90 b19oYW5kbGUoaW1wb3J0ZXIsIGRtYWJ1Zl9mZCk7Cj4gKwo+ICsgICAgICAgaGFuZGxlc1swXSA9 IGZiLT5nZW1faGFuZGxlOwo+ICsgICAgICAgcGl0Y2hlc1swXSA9IHBpdGNoOwo+ICsgICAgICAg b2Zmc2V0c1swXSA9IDA7Cj4gKwo+ICsgICAgICAgcmV0ID0gZHJtTW9kZUFkZEZCMihpbXBvcnRl ciwgZmItPndpZHRoLCBmYi0+aGVpZ2h0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBE Uk1fRk9STUFUX1hSR0I4ODg4LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVz LCBwaXRjaGVzLCBvZmZzZXRzLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmItPmZi X2lkLCAwKTsKPiArICAgICAgIGlndF9hc3NlcnQocmV0ID09IDApOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCBzZXRfZmIoc3RydWN0IGlndF9mYiAqZmIsCj4gKyAgICAgICAgICAgICAgICAgIGln dF9kaXNwbGF5X3QgKmRpc3BsYXksCj4gKyAgICAgICAgICAgICAgICAgIGlndF9vdXRwdXRfdCAq b3V0cHV0KQo+ICt7Cj4gKyAgICAgICBpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKPiArICAgICAgIGlu dCByZXQ7Cj4gKwo+ICsgICAgICAgcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lKG91dHB1 dCwgMCk7Cj4gKyAgICAgICBpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksIGZiKTsKPiArICAgICAg IHJldCA9IGlndF9kaXNwbGF5X2NvbW1pdChkaXNwbGF5KTsKPiArCj4gKyAgICAgICBpZ3RfYXNz ZXJ0KHJldCA9PSAwKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgY29sbGVjdF9jcmMoaW50IGlt cG9ydGVyLCBzdHJ1Y3QgaWd0X2ZiICpmYiwgaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwKPiArICAg ICAgICAgICAgICAgICAgICAgICBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgaWd0X3BpcGVfY3JjX3Qg KnBpcGVfY3JjLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGNvbG9yLCBzdHJ1 Y3QgY3JjX2luZm8gKmluZm8pCj4gK3sKPiArICAgICAgIHNldF9mYihmYiwgZGlzcGxheSwgb3V0 cHV0KTsKPiArICAgICAgIGlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhwaXBlX2NyYywgJmluZm8t PmNyYyk7Cj4gKyAgICAgICBpbmZvLT5zdHIgPSBpZ3RfY3JjX3RvX3N0cmluZygmaW5mby0+Y3Jj KTsKPiArICAgICAgIGlndF9kZWJ1ZygiQ1JDIHRocm91Z2ggJyVzJyBtZXRob2QgZm9yICUjMDh4 IGlzICVzXG4iLAo+ICsgICAgICAgICAgICAgICAgIGluZm8tPm5hbWUsIGNvbG9yLCBpbmZvLT5z dHIpOwo+ICsgICAgICAgaWd0X3JlbW92ZV9mYihpbXBvcnRlciwgZmIpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCB0ZXN0X2NyYyhpbnQgZXhwb3J0ZXIsIGludCBpbXBvcnRlcikKCk5vdCBzdXJl IHRocmVhZGluZyBpbXBvcnRlci9leHBvcnRlciB0aHJvdWdoIG1ha2VzIHNlbnNlIGFueW1vcmUs CnNpbmNlIGl0J3MganVzdCBBTlkgKyBWR0VNLiBJdCdkIGRyb3AgdGhlc2UuCgpPdGhlcndpc2Ug bGd0bSwgaGFzIG15IGFjaywgYnV0IEkgZ3Vlc3Mgd291bGQgYmUgZ29vZCBpZiB5b3UgY2FuIGdl dApzb21lb25lIHRvIGRvIGEgZGV0YWlsZWQgcmV2aWV3LiBMaWtlIFNpbW9uIG9yIG1heWJlIHNv bWVvbmUgZWxzZS4KCkNoZWVycywgRGFuaWVsCgo+ICt7Cj4gKyAgICAgICBpZ3RfZGlzcGxheV90 IGRpc3BsYXk7Cj4gKyAgICAgICBpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKPiArICAgICAgIGlndF9w aXBlX2NyY190ICpwaXBlX2NyYzsKPiArICAgICAgIGVudW0gcGlwZSBwaXBlID0gUElQRV9BOwo+ ICsgICAgICAgc3RydWN0IGlndF9mYiBmYjsKPiArICAgICAgIGludCBkbWFidWZfZmQ7Cj4gKyAg ICAgICBzdHJ1Y3QgdmdlbV9ibyBzY3JhdGNoOyAvKiBkZXNwaXRlIHRoZSBuYW1lLCBpdCBzdWl0 cyBmb3IgYW55Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBnZW0tY29tcGF0 aWJsZSBkZXZpY2UKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFRPRE86IHJl bmFtZQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCj4gKyAgICAgICBpbnQg aSwgajsKPiArICAgICAgIGRybU1vZGVNb2RlSW5mbyAqbW9kZTsKPiArCj4gKyAgICAgICBib29s IGNyY19lcXVhbCA9IGZhbHNlOwo+ICsKPiArICAgICAgIHNldHVwX2Rpc3BsYXkoaW1wb3J0ZXIs ICZkaXNwbGF5LCAmb3V0cHV0LCBwaXBlKTsKPiArCj4gKyAgICAgICBtb2RlID0gaWd0X291dHB1 dF9nZXRfbW9kZShvdXRwdXQpOwo+ICsgICAgICAgcGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3 KGltcG9ydGVyLCBwaXBlLCBJTlRFTF9QSVBFX0NSQ19TT1VSQ0VfQVVUTyk7Cj4gKwo+ICsgICAg ICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY29sb3JzKTsgaSsrKSB7Cj4gKyAgICAgICAg ICAgICAgIHByZXBhcmVfc2NyYXRjaChleHBvcnRlciwgJnNjcmF0Y2gsIG1vZGUsIGNvbG9yc1tp XS5jb2xvcik7Cj4gKyAgICAgICAgICAgICAgIGRtYWJ1Zl9mZCA9IHByaW1lX2hhbmRsZV90b19m ZChleHBvcnRlciwgc2NyYXRjaC5oYW5kbGUpOwo+ICsgICAgICAgICAgICAgICBnZW1fY2xvc2Uo ZXhwb3J0ZXIsIHNjcmF0Y2guaGFuZGxlKTsKPiArCj4gKyAgICAgICAgICAgICAgIHByZXBhcmVf ZmIoaW1wb3J0ZXIsICZzY3JhdGNoLCAmZmIpOwo+ICsgICAgICAgICAgICAgICBpbXBvcnRfZmIo aW1wb3J0ZXIsICZmYiwgZG1hYnVmX2ZkLCBzY3JhdGNoLnBpdGNoKTsKPiArICAgICAgICAgICAg ICAgY2xvc2UoZG1hYnVmX2ZkKTsKPiArCj4gKyAgICAgICAgICAgICAgIGNvbG9yc1tpXS5wcmlt ZV9jcmMubmFtZSA9ICJwcmltZSI7Cj4gKyAgICAgICAgICAgICAgIGNvbGxlY3RfY3JjKGltcG9y dGVyLCAmZmIsICZkaXNwbGF5LCBvdXRwdXQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHBpcGVfY3JjLCBjb2xvcnNbaV0uY29sb3IsICZjb2xvcnNbaV0ucHJpbWVfY3JjKTsKPiArCj4g KyAgICAgICAgICAgICAgIGlndF9jcmVhdGVfY29sb3JfZmIoaW1wb3J0ZXIsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5 LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSTV9GT1JNQVRfWFJHQjg4 ODgsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29sb3JzW2ldLnIsIGNvbG9yc1tpXS5nLCBjb2xvcnNbaV0uYiwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmIpOwo+ICsKPiArICAgICAgICAgICAg ICAgY29sb3JzW2ldLmRpcmVjdF9jcmMubmFtZSA9ICJkaXJlY3QiOwo+ICsgICAgICAgICAgICAg ICBjb2xsZWN0X2NyYyhpbXBvcnRlciwgJmZiLCAmZGlzcGxheSwgb3V0cHV0LAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICBwaXBlX2NyYywgY29sb3JzW2ldLmNvbG9yLCAmY29sb3JzW2ld LmRpcmVjdF9jcmMpOwo+ICsgICAgICAgfQo+ICsgICAgICAgaWd0X3BpcGVfY3JjX2ZyZWUocGlw ZV9jcmMpOwo+ICsKPiArICAgICAgIGlndF9kZWJ1ZygiQ1JDIHRhYmxlOlxuIik7Cj4gKyAgICAg ICBpZ3RfZGVidWcoIkNvbG9yXHRcdFByaW1lXHRcdERpcmVjdFxuIik7Cj4gKyAgICAgICBmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb2xvcnMpOyBpKyspIHsKPiArICAgICAgICAgICAgICAg aWd0X2RlYnVnKCIlIzA4eFx0JS44c1x0JS44c1xuIiwgY29sb3JzW2ldLmNvbG9yLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgY29sb3JzW2ldLnByaW1lX2NyYy5zdHIsIGNvbG9yc1tpXS5k aXJlY3RfY3JjLnN0cik7Cj4gKyAgICAgICAgICAgICAgIGZyZWUoY29sb3JzW2ldLnByaW1lX2Ny Yy5zdHIpOwo+ICsgICAgICAgICAgICAgICBmcmVlKGNvbG9yc1tpXS5kaXJlY3RfY3JjLnN0cik7 Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY29s b3JzKTsgaSsrKSB7Cj4gKyAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBBUlJBWV9TSVpF KGNvbG9ycyk7IGorKykgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IGopIHsK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlndF9hc3NlcnRfY3JjX2VxdWFsKCZj b2xvcnNbaV0ucHJpbWVfY3JjLmNyYywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZjb2xvcnNbal0uZGlyZWN0X2NyYy5jcmMpOwo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gKyAgICAgICAgICAgICAgICAg ICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNyY19lcXVhbCA9IGlndF9jaGVja19j cmNfZXF1YWwoJmNvbG9yc1tpXS5wcmltZV9jcmMuY3JjLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbG9yc1tqXS5kaXJlY3RfY3Jj LmNyYyk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWd0X2Fzc2VydF9mKCFjcmNfZXF1YWws ICJDUkMgc2hvdWxkIGJlIGRpZmZlcmVudCIpOwo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAg ICB9Cj4gKyAgICAgICBpZ3RfZGlzcGxheV9maW5pKCZkaXNwbGF5KTsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgcnVuX3Rlc3RfY3JjKGludCBleHBvcnRfY2hpcHNldCwgaW50IGltcG9ydF9jaGlw c2V0KQo+ICt7Cj4gKyAgICAgICBpbnQgaW1wb3J0ZXIgPSAtMTsKPiArICAgICAgIGludCBleHBv cnRlciA9IC0xOwo+ICsKPiArICAgICAgIGV4cG9ydGVyID0gZHJtX29wZW5fZHJpdmVyKGV4cG9y dF9jaGlwc2V0KTsKPiArICAgICAgIGltcG9ydGVyID0gZHJtX29wZW5fZHJpdmVyX21hc3Rlcihp bXBvcnRfY2hpcHNldCk7Cj4gKwo+ICsgICAgICAgaWd0X3JlcXVpcmUoaGFzX3ByaW1lX2V4cG9y dChleHBvcnRlcikpOwo+ICsgICAgICAgaWd0X3JlcXVpcmUoaGFzX3ByaW1lX2ltcG9ydChpbXBv cnRlcikpOwo+ICsgICAgICAgaWd0X3JlcXVpcmVfcGlwZV9jcmMoaW1wb3J0ZXIpOwo+ICsKPiAr ICAgICAgIHRlc3RfY3JjKGV4cG9ydGVyLCBpbXBvcnRlcik7Cj4gKyAgICAgICBjbG9zZShpbXBv cnRlcik7Cj4gKyAgICAgICBjbG9zZShleHBvcnRlcik7Cj4gK30KPiArCj4gK2lndF9tYWluCj4g K3sKPiArICAgICAgIGlndF9maXh0dXJlIHsKPiArICAgICAgICAgICAgICAga21zdGVzdF9zZXRf dnRfZ3JhcGhpY3NfbW9kZSgpOwo+ICsgICAgICAgfQo+ICsgICAgICAgaWd0X3N1YnRlc3QoImNy YyIpCj4gKyAgICAgICAgICAgICAgIHJ1bl90ZXN0X2NyYyhEUklWRVJfVkdFTSwgRFJJVkVSX0FO WSk7Cj4gK30KPiAtLQo+IDIuMjIuMAo+CgoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5n aW5lZXIsIEludGVsIENvcnBvcmF0aW9uCis0MSAoMCkgNzkgMzY1IDU3IDQ4IC0gaHR0cDovL2Js b2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2