From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH i-g-t] tests: remove kms_fbc_crc Date: Tue, 17 Oct 2017 17:10:21 -0200 Message-ID: <1508267421.2666.26.camel@intel.com> References: <20171017151640.1306-1-daniel.vetter@ffwll.ch> <20171017155941.GY10981@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6ECDA6E72B for ; Tue, 17 Oct 2017 19:10:40 +0000 (UTC) In-Reply-To: <20171017155941.GY10981@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?ISO-8859-1?Q?Syrj=E4l=E4?= , Daniel Vetter Cc: Daniel Vetter , Intel Graphics Development List-Id: intel-gfx@lists.freedesktop.org RW0gVGVyLCAyMDE3LTEwLTE3IMOgcyAxODo1OSArMDMwMCwgVmlsbGUgU3lyasOkbMOkIGVzY3Jl dmV1Ogo+IE9uIFR1ZSwgT2N0IDE3LCAyMDE3IGF0IDA1OjE2OjQwUE0gKzAyMDAsIERhbmllbCBW ZXR0ZXIgd3JvdGU6Cj4gPiBUaGlzIHdhcyB0aGUgcHJlZGVjZXNzb3IgdGVzdCB0byBrbXNfZnJv bnRidWZmZXJfdHJhY2tpbmcsIHdoaWNoCj4gPiBub3QKPiA+IGp1c3QgdGVzdHMgZmJjLCBhbmQg YWxzbyBpbiBhIG11Y2ggbW9yZSB0aHJvdWdoLW91dCBmYXNoaW9uLgo+ID4gCj4gPiBCb3RoIHRl c3RzIGF1dGhvcmVkIGJ5IFBhdWxvLAo+IAo+IEkgd3JvdGUga21zX2ZiY19jcmMuCj4gCj4gPiBi dXQgbG9va2luZyBhdCBnaXQgaGlzdG9yeSB0aGVyZSdzIGEKPiA+IGNsZWFyIHN3aXRjaCB3aXRo IHRoZSBpbnRyb2R1Y3Rpb24gb2Yga21zX2Zyb250YnVmZmVyX3RyYWNraW5nLgo+ID4gQWZ0ZXIK PiA+IHRoYXQgb25seSBtYWludGVuYW5jZSBjb21taXRzIHRvIGttc19mYmNfY3JjLiBOb3QgcG9p bnQgaGF2aW5nCj4gPiByZWR1bmRhbnQgdGVzdHMsIHNvIGxldHMgcmVtb3ZlIHRoZSBvbGQgb25l Lgo+IAo+IGttc19mYmNfY3JjIHdhcyBtb3JlIGdlYXJlZCB0b3dhcmRzIHRlc3RpbmcgdGhlIGhh cmR3YXJlIHRyYWNraW5nLAo+IGJ1dAoKVGhhdCdzIHByZXR0eSBtdWNoIHRoZSByZWFzb24gSSB3 YXMgYWx3YXlzIGEgbGl0dGxlIGhlc2l0YW50IHRvIHJlbW92ZQppdC4gQm90aCBwcm9ncmFtcyB0 ZXN0IHRoZSBzYW1lIHRoaW5nLCBidXQgdGhleSBoYXZlIHZlcnkgZGlmZmVyZW50CmFwcHJvYWNo ZXMsIHdoaWNoIGlzIHNvbWV0aW1lcyBhIGdvb2QgdGhpbmcuIEJ1dCBzaW5jZSB5b3UgdGhpbmsg aXQncwp3b3J0aCBpdCBhbmQgVmlsbGUgYWNrZWQgaXQsIGZlZWwgZnJlZSB0byByZW1vdmUgaXQu CgoKc2luY2Ugd2Ugbm8gbG9uZ2VyIHVzZSB0aGF0IGFwYXJ0IGZyb20gdGhlIEdUVCB0cmFja2lu ZyBJIGd1ZXNzCj4ga21zX2ZiY19jcmMgY2FuIGdvLgo+IAo+IEFja2VkLWJ5OiBWaWxsZSBTeXJq w6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IAo+ID4gCj4gPiBUaGlzIHdp bGwgY3V0IGEgYml0IG1vcmUgdGhhbiAzIG1pbnV0ZXMgb2YgdGVzdC10aW1lIGZyb20ga2JsLQo+ ID4gc2hhcmQuCj4gPiAKPiA+IENjOiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVs LmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAaW50 ZWwuY29tPgo+ID4gLS0tCj4gPiDCoHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgfMKgwqDCoDEgLQo+ ID4gwqB0ZXN0cy9rbXNfZmJjX2NyYy5jwqDCoMKgwqB8IDU4MCAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQo+ID4gLS0tLS0tLS0tLS0tLS0KPiA+IMKgdGVzdHMvbWVzb24uYnVp bGTCoMKgwqDCoMKgwqB8wqDCoMKgMSAtCj4gPiDCoDMgZmlsZXMgY2hhbmdlZCwgNTgyIGRlbGV0 aW9ucygtKQo+ID4gwqBkZWxldGUgbW9kZSAxMDA2NDQgdGVzdHMva21zX2ZiY19jcmMuYwo+ID4g Cj4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxl LnNvdXJjZXMKPiA+IGluZGV4IDljOWZiMzE2ZmM3MS4uMjMxM2MxMmI1MDhjIDEwMDY0NAo+ID4g LS0tIGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+ID4gKysrIGIvdGVzdHMvTWFrZWZpbGUuc291 cmNlcwo+ID4gQEAgLTE4Miw3ICsxODIsNiBAQCBURVNUU19wcm9ncyA9IFwKPiA+IMKgCWttc19j dXJzb3JfY3JjIFwKPiA+IMKgCWttc19jdXJzb3JfbGVnYWN5IFwKPiA+IMKgCWttc19kcmF3X2Ny YyBcCj4gPiAtCWttc19mYmNfY3JjIFwKPiA+IMKgCWttc19mYmNvbl9mYnQgXAo+ID4gwqAJa21z X2ZlbmNlX3Bpbl9sZWFrIFwKPiA+IMKgCWttc19mbGlwIFwKPiA+IGRpZmYgLS1naXQgYS90ZXN0 cy9rbXNfZmJjX2NyYy5jIGIvdGVzdHMva21zX2ZiY19jcmMuYwo+ID4gZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0Cj4gPiBpbmRleCAwNjIzNDU2NmMyMzIuLjAwMDAwMDAwMDAwMAo+ID4gLS0tIGEv dGVzdHMva21zX2ZiY19jcmMuYwo+ID4gKysrIC9kZXYvbnVsbAo+ID4gQEAgLTEsNTgwICswLDAg QEAKPiA+IC0vKgo+ID4gLSAqIENvcHlyaWdodCDCqSAyMDEzIEludGVsIENvcnBvcmF0aW9uCj4g PiAtICoKPiA+IC0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbgo+ID4gb2J0YWluaW5nIGEKPiA+IC0gKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCj4gPiAiU29mdHdh cmUiKSwKPiA+IC0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dAo+ID4gbGltaXRhdGlvbgo+ID4gLSAqIHRoZSByaWdodHMgdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLAo+ID4gc3VibGlj ZW5zZSwKPiA+IC0gKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8KPiA+IHdob20gdGhlCj4gPiAtICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcKPiA+IGNvbmRpdGlvbnM6Cj4g PiAtICoKPiA+IC0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZQo+ID4gKGluY2x1ZGluZyB0aGUgbmV4dAo+ID4gLSAqIHBhcmFncmFwaCkgc2hh bGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbAo+ID4gcG9ydGlvbnMg b2YgdGhlCj4gPiAtICogU29mdHdhcmUuCj4gPiAtICoKPiA+IC0gKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKPiA+IEVYUFJF U1MgT1IKPiA+IC0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GCj4gPiBNRVJDSEFOVEFCSUxJVFksCj4gPiAtICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC7CoMKgSU4gTk8KPiA+IEVWRU5U IFNIQUxMCj4gPiAtICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF IEZPUiBBTlkgQ0xBSU0sCj4gPiBEQU1BR0VTIE9SIE9USEVSCj4gPiAtICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCj4gPiBB UklTSU5HCj4gPiAtICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUgo+ID4gT1RIRVIgREVBTElOR1MKPiA+IC0gKiBJTiBUSEUgU09G VFdBUkUuCj4gPiAtICoKPiA+IC0gKi8KPiA+IC0KPiA+IC0jaW5jbHVkZSAiaWd0LmgiCj4gPiAt I2luY2x1ZGUgPGVycm5vLmg+Cj4gPiAtI2luY2x1ZGUgPHN0ZGJvb2wuaD4KPiA+IC0jaW5jbHVk ZSA8c3RkaW8uaD4KPiA+IC0jaW5jbHVkZSA8c3RyaW5nLmg+Cj4gPiAtCj4gPiAtCj4gPiAtSUdU X1RFU1RfREVTQ1JJUFRJT04oCj4gPiAtwqDCoMKgIlBlcmZvcm1zIHZhcmlvdXMgd3JpdGUgb3Bl cmF0aW9ucyB0byB0aGUgc2Nhbm91dCBidWZmZXIgd2hpbGUKPiA+IEZCQyBpcyAiCj4gPiAtwqDC oMKgImVuYWJsZWQuIENSQyBjaGVja3Mgd2lsbCBiZSB1c2VkIHRvIG1ha2Ugc3VyZSB0aGUKPiA+ IG1vZGlmaWNhdGlvbnMgdG8gc2Nhbm91dCAiCj4gPiAtwqDCoMKgImJ1ZmZlciBhcmUgZGV0ZWN0 ZWQuIik7Cj4gPiAtCj4gPiAtZW51bSB0ZXN0X21vZGUgewo+ID4gLQlURVNUX1BBR0VfRkxJUCwK PiA+IC0JVEVTVF9NTUFQX0NQVSwKPiA+IC0JVEVTVF9NTUFQX0dUVCwKPiA+IC0JVEVTVF9CTFQs Cj4gPiAtCVRFU1RfUkVOREVSLAo+ID4gLQlURVNUX0NPTlRFWFQsCj4gPiAtCVRFU1RfUEFHRV9G TElQX0FORF9NTUFQX0NQVSwKPiA+IC0JVEVTVF9QQUdFX0ZMSVBfQU5EX01NQVBfR1RULAo+ID4g LQlURVNUX1BBR0VfRkxJUF9BTkRfQkxULAo+ID4gLQlURVNUX1BBR0VfRkxJUF9BTkRfUkVOREVS LAo+ID4gLQlURVNUX1BBR0VfRkxJUF9BTkRfQ09OVEVYVCwKPiA+IC19Owo+ID4gLQo+ID4gLXR5 cGVkZWYgc3RydWN0IHsKPiA+IC0JaW50IGRybV9mZDsKPiA+IC0JaWd0X2NyY190IHJlZl9jcmNb NF07Cj4gPiAtCWlndF9waXBlX2NyY190ICpwaXBlX2NyYzsKPiA+IC0JZHJtX2ludGVsX2J1Zm1n ciAqYnVmbWdyOwo+ID4gLQlkcm1faW50ZWxfY29udGV4dCAqY3R4WzJdOwo+ID4gLQl1aW50MzJf dCBkZXZpZDsKPiA+IC0JaWd0X2Rpc3BsYXlfdCBkaXNwbGF5Owo+ID4gLQlpZ3Rfb3V0cHV0X3Qg Km91dHB1dDsKPiA+IC0JZW51bSBwaXBlIHBpcGU7Cj4gPiAtCWlndF9wbGFuZV90ICpwcmltYXJ5 Owo+ID4gLQlzdHJ1Y3QgaWd0X2ZiIGZiWzJdOwo+ID4gLX0gZGF0YV90Owo+ID4gLQo+ID4gLXN0 YXRpYyBjb25zdCBjaGFyICp0ZXN0X21vZGVfc3RyKGVudW0gdGVzdF9tb2RlIG1vZGUpCj4gPiAt ewo+ID4gLQlzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHRlc3RfbW9kZXNbXSA9IHsKPiA+IC0J CVtURVNUX1BBR0VfRkxJUF0gPSAicGFnZV9mbGlwIiwKPiA+IC0JCVtURVNUX01NQVBfQ1BVXSA9 ICJtbWFwX2NwdSIsCj4gPiAtCQlbVEVTVF9NTUFQX0dUVF0gPSAibW1hcF9ndHQiLAo+ID4gLQkJ W1RFU1RfQkxUXSA9ICJibHQiLAo+ID4gLQkJW1RFU1RfUkVOREVSXSA9ICJyZW5kZXIiLAo+ID4g LQkJW1RFU1RfQ09OVEVYVF0gPSAiY29udGV4dCIsCj4gPiAtCQlbVEVTVF9QQUdFX0ZMSVBfQU5E X01NQVBfQ1BVXSA9Cj4gPiAicGFnZV9mbGlwX2FuZF9tbWFwX2NwdSIsCj4gPiAtCQlbVEVTVF9Q QUdFX0ZMSVBfQU5EX01NQVBfR1RUXSA9Cj4gPiAicGFnZV9mbGlwX2FuZF9tbWFwX2d0dCIsCj4g PiAtCQlbVEVTVF9QQUdFX0ZMSVBfQU5EX0JMVF0gPSAicGFnZV9mbGlwX2FuZF9ibHQiLAo+ID4g LQkJW1RFU1RfUEFHRV9GTElQX0FORF9SRU5ERVJdID0KPiA+ICJwYWdlX2ZsaXBfYW5kX3JlbmRl ciIsCj4gPiAtCQlbVEVTVF9QQUdFX0ZMSVBfQU5EX0NPTlRFWFRdID0KPiA+ICJwYWdlX2ZsaXBf YW5kX2NvbnRleHQiLAo+ID4gLQl9Owo+ID4gLQo+ID4gLQlyZXR1cm4gdGVzdF9tb2Rlc1ttb2Rl XTsKPiA+IC19Cj4gPiAtCj4gPiAtc3RhdGljIHZvaWQgZmlsbF9ibHQoZGF0YV90ICpkYXRhLAo+ ID4gLQkJwqDCoMKgwqDCoHVpbnQzMl90IGhhbmRsZSwKPiA+IC0JCcKgwqDCoMKgwqBzdHJ1Y3Qg aWd0X2ZiICpmYiwKPiA+IC0JCcKgwqDCoMKgwqB1bnNpZ25lZCBjaGFyIGNvbG9yKQo+ID4gLXsK PiA+IC0JZHJtX2ludGVsX2JvICpkc3QgPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhkYXRhLT5i dWZtZ3IsCj4gPiAtCQkJCQkJwqDCoMKgwqBkYXRhLT5kcm1fZmQsCj4gPiAtCQkJCQkJwqDCoMKg wqAiIiwgaGFuZGxlKTsKPiA+IC0Jc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaDsKPiA+ IC0JdW5zaWduZWQgZmxhZ3M7Cj4gPiAtCWludCBwaXRjaDsKPiA+IC0JdWludDMyX3QgcGl4ZWwg PSBjb2xvciB8IChjb2xvciA8PCA4KSB8IChjb2xvciA8PCAxNikgfAo+ID4gKGNvbG9yIDw8IDI0 KTsKPiA+IC0KPiA+IC0JYmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhkYXRhLT5idWZt Z3IsIGRhdGEtCj4gPiA+ZGV2aWQpOwo+ID4gLQlpZ3RfYXNzZXJ0KGJhdGNoKTsKPiA+IC0KPiA+ IC0JcGl0Y2ggPSBmYi0+c3RyaWRlOwo+ID4gLQlmbGFncyA9IFhZX0NPTE9SX0JMVF9XUklURV9B TFBIQSB8Cj4gPiAtCQlYWV9DT0xPUl9CTFRfV1JJVEVfUkdCOwo+ID4gLQlpZiAoZmItPnRpbGlu ZyAmJiBiYXRjaC0+Z2VuID49IDQpIHsKPiA+IC0JCWZsYWdzIHw9IFhZX0NPTE9SX0JMVF9USUxF RDsKPiA+IC0JCXBpdGNoIC89IDQ7Cj4gPiAtCX0KPiA+IC0KPiA+IC0JQ09MT1JfQkxJVF9DT1BZ X0JBVENIX1NUQVJUKGZsYWdzKTsKPiA+IC0JT1VUX0JBVENIKDMgPDwgMjQgfCAweGYwIDw8IDE2 IHwgcGl0Y2gpOwo+ID4gLQlPVVRfQkFUQ0goMCk7Cj4gPiAtCU9VVF9CQVRDSCgxIDw8IDE2IHwg MSk7Cj4gPiAtCU9VVF9SRUxPQ19GRU5DRUQoZHN0LCBJOTE1X0dFTV9ET01BSU5fUkVOREVSLAo+ ID4gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwgMCk7Cj4gPiAtCU9VVF9CQVRDSChwaXhlbCk7Cj4g PiAtCUFEVkFOQ0VfQkFUQ0goKTsKPiA+IC0KPiA+IC0JaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2go YmF0Y2gpOwo+ID4gLQlpbnRlbF9iYXRjaGJ1ZmZlcl9mcmVlKGJhdGNoKTsKPiA+IC0KPiA+IC0J Z2VtX2JvX2J1c3koZGF0YS0+ZHJtX2ZkLCBoYW5kbGUpOwo+ID4gLX0KPiA+IC0KPiA+IC1zdGF0 aWMgdm9pZCBzY3JhdGNoX2J1Zl9pbml0KHN0cnVjdCBpZ3RfYnVmICpidWYsIGRybV9pbnRlbF9i bwo+ID4gKmJvKQo+ID4gLXsKPiA+IC0JYnVmLT5ibyA9IGJvOwo+ID4gLQlidWYtPnN0cmlkZSA9 IDQwOTY7Cj4gPiAtCWJ1Zi0+dGlsaW5nID0gSTkxNV9USUxJTkdfWDsKPiA+IC0JYnVmLT5zaXpl ID0gNDA5NjsKPiA+IC19Cj4gPiAtCj4gPiAtc3RhdGljIHZvaWQgZXhlY19ub3AoZGF0YV90ICpk YXRhLCB1aW50MzJfdCBoYW5kbGUsCj4gPiBkcm1faW50ZWxfY29udGV4dCAqY29udGV4dCkKPiA+ IC17Cj4gPiAtCWRybV9pbnRlbF9ibyAqZHN0Owo+ID4gLQlzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZm ZXIgKmJhdGNoOwo+ID4gLQo+ID4gLQlkc3QgPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhkYXRh LT5idWZtZ3IsIGRhdGEtPmRybV9mZCwKPiA+ICIiLCBoYW5kbGUpOwo+ID4gLQlpZ3RfYXNzZXJ0 KGRzdCk7Cj4gPiAtCj4gPiAtCWJhdGNoID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxsb2MoZGF0YS0+ YnVmbWdyLCBkYXRhLQo+ID4gPmRldmlkKTsKPiA+IC0JaWd0X2Fzc2VydChiYXRjaCk7Cj4gPiAt Cj4gPiAtCS8qIGFkZCB0aGUgcmVsb2MgdG8gbWFrZSBzdXJlIHRoZSBrZXJuZWwgd2lsbCB0aGlu ayB3ZQo+ID4gd3JpdGUgdG8gZHN0ICovCj4gPiAtCUJFR0lOX0JBVENIKDQsIDEpOwo+ID4gLQlP VVRfQkFUQ0goTUlfQkFUQ0hfQlVGRkVSX0VORCk7Cj4gPiAtCU9VVF9CQVRDSChNSV9OT09QKTsK PiA+IC0JT1VUX1JFTE9DKGRzdCwgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwKPiA+IEk5MTVfR0VN X0RPTUFJTl9SRU5ERVIsIDApOwo+ID4gLQlPVVRfQkFUQ0goTUlfTk9PUCk7Cj4gPiAtCUFEVkFO Q0VfQkFUQ0goKTsKPiA+IC0KPiA+IC0JaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2hfd2l0aF9jb250 ZXh0KGJhdGNoLCBjb250ZXh0KTsKPiA+IC0JaW50ZWxfYmF0Y2hidWZmZXJfZnJlZShiYXRjaCk7 Cj4gPiAtfQo+ID4gLQo+ID4gLXN0YXRpYyB2b2lkIGZpbGxfcmVuZGVyKGRhdGFfdCAqZGF0YSwg dWludDMyX3QgaGFuZGxlLAo+ID4gLQkJCWRybV9pbnRlbF9jb250ZXh0ICpjb250ZXh0LCB1bnNp Z25lZCBjaGFyCj4gPiBjb2xvcikKPiA+IC17Cj4gPiAtCWRybV9pbnRlbF9ibyAqc3JjLCAqZHN0 Owo+ID4gLQlzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoOwo+ID4gLQlzdHJ1Y3QgaWd0 X2J1ZiBzcmNfYnVmLCBkc3RfYnVmOwo+ID4gLQljb25zdCB1aW50OF90IGJ1Zls0XSA9IHsgY29s b3IsIGNvbG9yLCBjb2xvciwgY29sb3IgfTsKPiA+IC0JaWd0X3JlbmRlcl9jb3B5ZnVuY190IHJl bmRlcmNvcHkgPQo+ID4gaWd0X2dldF9yZW5kZXJfY29weWZ1bmMoZGF0YS0+ZGV2aWQpOwo+ID4g LQo+ID4gLQlpZ3Rfc2tpcF9vbighcmVuZGVyY29weSk7Cj4gPiAtCj4gPiAtCWRzdCA9IGdlbV9o YW5kbGVfdG9fbGliZHJtX2JvKGRhdGEtPmJ1Zm1nciwgZGF0YS0+ZHJtX2ZkLAo+ID4gIiIsIGhh bmRsZSk7Cj4gPiAtCWlndF9hc3NlcnQoZHN0KTsKPiA+IC0KPiA+IC0Jc3JjID0gZHJtX2ludGVs X2JvX2FsbG9jKGRhdGEtPmJ1Zm1nciwgIiIsIDQwOTYsIDQwOTYpOwo+ID4gLQlpZ3RfYXNzZXJ0 KHNyYyk7Cj4gPiAtCj4gPiAtCWdlbV93cml0ZShkYXRhLT5kcm1fZmQsIHNyYy0+aGFuZGxlLCAw LCBidWYsIDQpOwo+ID4gLQo+ID4gLQlzY3JhdGNoX2J1Zl9pbml0KCZzcmNfYnVmLCBzcmMpOwo+ ID4gLQlzY3JhdGNoX2J1Zl9pbml0KCZkc3RfYnVmLCBkc3QpOwo+ID4gLQo+ID4gLQliYXRjaCA9 IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGRhdGEtPmJ1Zm1nciwgZGF0YS0KPiA+ID5kZXZpZCk7 Cj4gPiAtCWlndF9hc3NlcnQoYmF0Y2gpOwo+ID4gLQo+ID4gLQlyZW5kZXJjb3B5KGJhdGNoLCBj b250ZXh0LAo+ID4gLQkJwqDCoMKgJnNyY19idWYsIDAsIDAsIDEsIDEsCj4gPiAtCQnCoMKgwqAm ZHN0X2J1ZiwgMCwgMCk7Cj4gPiAtCj4gPiAtCWludGVsX2JhdGNoYnVmZmVyX2ZyZWUoYmF0Y2gp Owo+ID4gLQo+ID4gLQlnZW1fYm9fYnVzeShkYXRhLT5kcm1fZmQsIGhhbmRsZSk7Cj4gPiAtfQo+ ID4gLQo+ID4gLXN0YXRpYyB2b2lkIGZpbGxfbW1hcF9jcHUoZGF0YV90ICpkYXRhLCB1aW50MzJf dCBoYW5kbGUsIHVuc2lnbmVkCj4gPiBjaGFyIGNvbG9yKQo+ID4gLXsKPiA+IC0Jdm9pZCAqcHRy Owo+ID4gLQo+ID4gLQlwdHIgPSBnZW1fbW1hcF9fY3B1KGRhdGEtPmRybV9mZCwgaGFuZGxlLCAw LCA0MDk2LAo+ID4gUFJPVF9XUklURSk7Cj4gPiAtCWdlbV9zZXRfZG9tYWluKGRhdGEtPmRybV9m ZCwgaGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fQ1BVLAo+ID4gLQkJwqDCoMKgwqDCoMKgwqBJOTE1 X0dFTV9ET01BSU5fQ1BVKTsKPiA+IC0JbWVtc2V0KHB0ciwgY29sb3IsIDQpOwo+ID4gLQltdW5t YXAocHRyLCA0MDk2KTsKPiA+IC0JZ2VtX3N3X2ZpbmlzaChkYXRhLT5kcm1fZmQsIGhhbmRsZSk7 Cj4gPiAtfQo+ID4gLQo+ID4gLXN0YXRpYyB2b2lkIGZpbGxfbW1hcF9ndHQoZGF0YV90ICpkYXRh LCB1aW50MzJfdCBoYW5kbGUsIHVuc2lnbmVkCj4gPiBjaGFyIGNvbG9yKQo+ID4gLXsKPiA+IC0J dm9pZCAqcHRyOwo+ID4gLQo+ID4gLQlwdHIgPSBnZW1fbW1hcF9fZ3R0KGRhdGEtPmRybV9mZCwg aGFuZGxlLCA0MDk2LAo+ID4gUFJPVF9XUklURSk7Cj4gPiAtCWdlbV9zZXRfZG9tYWluKGRhdGEt PmRybV9mZCwgaGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fR1RULAo+ID4gLQkJwqDCoMKgwqDCoMKg wqBJOTE1X0dFTV9ET01BSU5fR1RUKTsKPiA+IC0JbWVtc2V0KHB0ciwgY29sb3IsIDQpOwo+ID4g LQltdW5tYXAocHRyLCA0MDk2KTsKPiA+IC19Cj4gPiAtCj4gPiAtc3RhdGljIGJvb2wgZmJjX2Vu YWJsZWQoZGF0YV90ICpkYXRhKQo+ID4gLXsKPiA+IC0JY2hhciBzdHJbMTI4XSA9IHt9Owo+ID4g LQo+ID4gLQlpZ3RfZGVidWdmc19yZWFkKGRhdGEtPmRybV9mZCwgImk5MTVfZmJjX3N0YXR1cyIs IHN0cik7Cj4gPiAtCXJldHVybiBzdHJzdHIoc3RyLCAiRkJDIGVuYWJsZWQiKSAhPSBOVUxMOwo+ ID4gLX0KPiA+IC0KPiA+IC1zdGF0aWMgYm9vbCB3YWl0X2Zvcl9mYmNfZW5hYmxlZChkYXRhX3Qg KmRhdGEpCj4gPiAtewo+ID4gLQlyZXR1cm4gaWd0X3dhaXQoZmJjX2VuYWJsZWQoZGF0YSksIDMw MDAsIDMwKTsKPiA+IC19Cj4gPiAtCj4gPiAtc3RhdGljIHZvaWQgY2hlY2tfY3JjKGRhdGFfdCAq ZGF0YSwgZW51bSB0ZXN0X21vZGUgbW9kZSkKPiA+IC17Cj4gPiAtCWlndF9waXBlX2NyY190ICpw aXBlX2NyYyA9IGRhdGEtPnBpcGVfY3JjOwo+ID4gLQlpZ3RfY3JjX3QgY3JjLCAqcmVmX2NyYzsK PiA+IC0KPiA+IC0Jc3dpdGNoIChtb2RlKSB7Cj4gPiAtCWNhc2UgVEVTVF9QQUdFX0ZMSVA6Cj4g PiAtCQlyZWZfY3JjID0gJmRhdGEtPnJlZl9jcmNbMV07Cj4gPiAtCQlicmVhazsKPiA+IC0JY2Fz ZSBURVNUX01NQVBfQ1BVOgo+ID4gLQljYXNlIFRFU1RfTU1BUF9HVFQ6Cj4gPiAtCWNhc2UgVEVT VF9CTFQ6Cj4gPiAtCWNhc2UgVEVTVF9SRU5ERVI6Cj4gPiAtCWNhc2UgVEVTVF9DT05URVhUOgo+ ID4gLQkJcmVmX2NyYyA9ICZkYXRhLT5yZWZfY3JjWzJdOwo+ID4gLQkJYnJlYWs7Cj4gPiAtCWNh c2UgVEVTVF9QQUdFX0ZMSVBfQU5EX01NQVBfQ1BVOgo+ID4gLQljYXNlIFRFU1RfUEFHRV9GTElQ X0FORF9NTUFQX0dUVDoKPiA+IC0JY2FzZSBURVNUX1BBR0VfRkxJUF9BTkRfQkxUOgo+ID4gLQlj YXNlIFRFU1RfUEFHRV9GTElQX0FORF9SRU5ERVI6Cj4gPiAtCWNhc2UgVEVTVF9QQUdFX0ZMSVBf QU5EX0NPTlRFWFQ6Cj4gPiAtCQlyZWZfY3JjID0gJmRhdGEtPnJlZl9jcmNbM107Cj4gPiAtCQli cmVhazsKPiA+IC0JZGVmYXVsdDoKPiA+IC0JCWlndF9hc3NlcnQoZmFsc2UpOwo+ID4gLQl9Cj4g PiAtCj4gPiAtCWlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhwaXBlX2NyYywgJmNyYyk7Cj4gPiAt CWlndF9hc3NlcnRfY3JjX2VxdWFsKCZjcmMsIHJlZl9jcmMpOwo+ID4gLX0KPiA+IC0KPiA+IC1z dGF0aWMgdm9pZCB0ZXN0X2NyYyhkYXRhX3QgKmRhdGEsIGVudW0gdGVzdF9tb2RlIG1vZGUpCj4g PiAtewo+ID4gLQl1aW50MzJfdCBjcnRjX2lkID0gZGF0YS0+b3V0cHV0LT5jb25maWcuY3J0Yy0+ Y3J0Y19pZDsKPiA+IC0JdWludDMyX3QgaGFuZGxlID0gZGF0YS0+ZmJbMF0uZ2VtX2hhbmRsZTsK PiA+IC0JZHJtX2ludGVsX2NvbnRleHQgKmNvbnRleHQgPSBOVUxMOwo+ID4gLQo+ID4gLQlpZ3Rf YXNzZXJ0KGZiY19lbmFibGVkKGRhdGEpKTsKPiA+IC0KPiA+IC0JaWYgKG1vZGUgPT0gVEVTVF9Q QUdFX0ZMSVAgfHwgbW9kZSA+PQo+ID4gVEVTVF9QQUdFX0ZMSVBfQU5EX01NQVBfQ1BVKSB7Cj4g PiAtCQloYW5kbGUgPSBkYXRhLT5mYlsxXS5nZW1faGFuZGxlOwo+ID4gLQkJaWd0X2Fzc2VydChk cm1Nb2RlUGFnZUZsaXAoZGF0YS0+ZHJtX2ZkLCBjcnRjX2lkLAo+ID4gLQkJCQkJwqDCoMKgZGF0 YS0+ZmJbMV0uZmJfaWQsIDAsCj4gPiBOVUxMKSA9PSAwKTsKPiA+IC0KPiA+IC0JCWlmIChtb2Rl ICE9IFRFU1RfUEFHRV9GTElQKQo+ID4gLQkJCWlndF9hc3NlcnQod2FpdF9mb3JfZmJjX2VuYWJs ZWQoZGF0YSkpOwo+ID4gLQl9Cj4gPiAtCj4gPiAtCXN3aXRjaCAobW9kZSkgewo+ID4gLQljYXNl IFRFU1RfUEFHRV9GTElQOgo+ID4gLQkJYnJlYWs7Cj4gPiAtCWNhc2UgVEVTVF9NTUFQX0NQVToK PiA+IC0JY2FzZSBURVNUX1BBR0VfRkxJUF9BTkRfTU1BUF9DUFU6Cj4gPiAtCQlmaWxsX21tYXBf Y3B1KGRhdGEsIGhhbmRsZSwgMHhmZik7Cj4gPiAtCQlicmVhazsKPiA+IC0JY2FzZSBURVNUX01N QVBfR1RUOgo+ID4gLQljYXNlIFRFU1RfUEFHRV9GTElQX0FORF9NTUFQX0dUVDoKPiA+IC0JCWZp bGxfbW1hcF9ndHQoZGF0YSwgaGFuZGxlLCAweGZmKTsKPiA+IC0JCWJyZWFrOwo+ID4gLQljYXNl IFRFU1RfQkxUOgo+ID4gLQljYXNlIFRFU1RfUEFHRV9GTElQX0FORF9CTFQ6Cj4gPiAtCQlmaWxs X2JsdChkYXRhLCBoYW5kbGUsIGRhdGEtPmZiLCB+MCk7Cj4gPiAtCQlicmVhazsKPiA+IC0JY2Fz ZSBURVNUX0NPTlRFWFQ6Cj4gPiAtCWNhc2UgVEVTVF9QQUdFX0ZMSVBfQU5EX0NPTlRFWFQ6Cj4g PiAtCQljb250ZXh0ID0gZGF0YS0+Y3R4WzFdOwo+ID4gLQljYXNlIFRFU1RfUkVOREVSOgo+ID4g LQljYXNlIFRFU1RfUEFHRV9GTElQX0FORF9SRU5ERVI6Cj4gPiAtCQlmaWxsX3JlbmRlcihkYXRh LCBoYW5kbGUsIGNvbnRleHQsIDB4ZmYpOwo+ID4gLQkJYnJlYWs7Cj4gPiAtCX0KPiA+IC0KPiA+ IC0JLyoKPiA+IC0JwqAqIE1ha2Ugc3VyZSB3ZSdyZSBsb29raW5nIGF0IG5ldyBkYXRhICh0d28g dmJsYW5rcwo+ID4gLQnCoCogdG8gbGVhdmUgc29tZSBsZWV3YXkgZm9yIHRoZSBrZXJuZWwgaWYg d2UgZXZlciBkbwo+ID4gLQnCoCogc29tZSBraW5kIG9mIGRlbGF5ZWQgRkJDIGRpc2FibGUgZm9y IEdUVCBtbWFwcy4KPiA+IC0JwqAqLwo+ID4gLQlpZ3Rfd2FpdF9mb3JfdmJsYW5rKGRhdGEtPmRy bV9mZCwgZGF0YS0+cGlwZSk7Cj4gPiAtCWlndF93YWl0X2Zvcl92YmxhbmsoZGF0YS0+ZHJtX2Zk LCBkYXRhLT5waXBlKTsKPiA+IC0KPiA+IC0JY2hlY2tfY3JjKGRhdGEsIG1vZGUpOwo+ID4gLQo+ ID4gLQkvKgo+ID4gLQnCoCogQWxsb3cgdGltZSBmb3IgRkJDIHRvIGtpY2sgaW4gYWdhaW4gaWYg aXQKPiA+IC0JwqAqIGdvdCBkaXNhYmxlZCBkdXJpbmcgZGlydHlmYiBvciBwYWdlIGZsaXAuCj4g PiAtCcKgKi8KPiA+IC0JaWd0X2Fzc2VydCh3YWl0X2Zvcl9mYmNfZW5hYmxlZChkYXRhKSk7Cj4g PiAtCj4gPiAtCWNoZWNrX2NyYyhkYXRhLCBtb2RlKTsKPiA+IC19Cj4gPiAtCj4gPiAtc3RhdGlj IHZvaWQgcHJlcGFyZV9jcnRjKGRhdGFfdCAqZGF0YSkKPiA+IC17Cj4gPiAtCWlndF9vdXRwdXRf dCAqb3V0cHV0ID0gZGF0YS0+b3V0cHV0Owo+ID4gLQo+ID4gLQlpZ3Rfb3V0cHV0X3NldF9waXBl KG91dHB1dCwgZGF0YS0+cGlwZSk7Cj4gPiAtfQo+ID4gLQo+ID4gLXN0YXRpYyB2b2lkIGNyZWF0 ZV9mYnMoZGF0YV90ICpkYXRhLCB1aW50NjRfdCB0aWxpbmcsIHN0cnVjdAo+ID4gaWd0X2ZiICpm YnMpCj4gPiAtewo+ID4gLQlpbnQgcmM7Cj4gPiAtCWRybU1vZGVNb2RlSW5mbyAqbW9kZSA9IGln dF9vdXRwdXRfZ2V0X21vZGUoZGF0YS0+b3V0cHV0KTsKPiA+IC0KPiA+IC0JcmMgPSBpZ3RfY3Jl YXRlX2NvbG9yX2ZiKGRhdGEtPmRybV9mZCwgbW9kZS0+aGRpc3BsYXksCj4gPiBtb2RlLT52ZGlz cGxheSwKPiA+IC0JCQkJwqBEUk1fRk9STUFUX1hSR0I4ODg4LCB0aWxpbmcsCj4gPiAtCQkJCcKg MC4wLCAwLjAsIDAuMCwgJmZic1swXSk7Cj4gPiAtCWlndF9hc3NlcnQocmMpOwo+ID4gLQlyYyA9 IGlndF9jcmVhdGVfY29sb3JfZmIoZGF0YS0+ZHJtX2ZkLCBtb2RlLT5oZGlzcGxheSwKPiA+IG1v ZGUtPnZkaXNwbGF5LAo+ID4gLQkJCQnCoERSTV9GT1JNQVRfWFJHQjg4ODgsIHRpbGluZywKPiA+ IC0JCQkJwqAwLjEsIDAuMSwgMC4xLCAmZmJzWzFdKTsKPiA+IC0JaWd0X2Fzc2VydChyYyk7Cj4g PiAtfQo+ID4gLQo+ID4gLS8qIFNpbmNlIHdlIHdhbnQgdG8gYmUgcmVhbGx5IHNhZmUgdGhhdCB0 aGUgQ1JDcyBhcmUgYWN0dWFsbHkgd2hhdAo+ID4gd2UgcmVhbGx5Cj4gPiAtICogd2FudCwgdXNl IHVudGlsZWQgRkJzLCBzbyBGQkMgd29uJ3QgaGFwcGVuIHRvIGRpc3J1cHQgdGhpbmdzLgo+ID4g QWxzbyBkbyB0aGUKPiA+IC0gKiBkcmF3aW5nIGJlZm9yZSBzZXR0aW5nIHRoZSBtb2RlcywganVz dCB0byBiZSBzdXJlLiAqLwo+ID4gLXN0YXRpYyB2b2lkIGdldF9yZWZfY3JjcyhkYXRhX3QgKmRh dGEpCj4gPiAtewo+ID4gLQlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7 Cj4gPiAtCXN0cnVjdCBpZ3RfZmIgZmJzWzRdOwo+ID4gLQlpbnQgaTsKPiA+IC0KPiA+IC0JY3Jl YXRlX2ZicyhkYXRhLCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLCAmZmJzWzBdKTsKPiA+IC0J Y3JlYXRlX2ZicyhkYXRhLCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLCAmZmJzWzJdKTsKPiA+ IC0KPiA+IC0JZmlsbF9tbWFwX2d0dChkYXRhLCBmYnNbMl0uZ2VtX2hhbmRsZSwgMHhmZik7Cj4g PiAtCWZpbGxfbW1hcF9ndHQoZGF0YSwgZmJzWzNdLmdlbV9oYW5kbGUsIDB4ZmYpOwo+ID4gLQo+ ID4gLQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Cj4gPiAtCQlpZ3RfcGxhbmVfc2V0X2ZiKGRh dGEtPnByaW1hcnksICZmYnNbaV0pOwo+ID4gLQkJaWd0X2Rpc3BsYXlfY29tbWl0KGRpc3BsYXkp Owo+ID4gLQkJaWd0X3dhaXRfZm9yX3ZibGFuayhkYXRhLT5kcm1fZmQsIGRhdGEtPnBpcGUpOwo+ ID4gLQkJaWd0X2Fzc2VydCghZmJjX2VuYWJsZWQoZGF0YSkpOwo+ID4gLQkJaWd0X3BpcGVfY3Jj X2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmZGF0YS0KPiA+ID5yZWZfY3JjW2ldKTsKPiA+ IC0JCWlndF9hc3NlcnQoIWZiY19lbmFibGVkKGRhdGEpKTsKPiA+IC0JfQo+ID4gLQo+ID4gLQlp Z3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksICZkYXRhLT5mYlsxXSk7Cj4gPiAtCWlndF9k aXNwbGF5X2NvbW1pdChkaXNwbGF5KTsKPiA+IC0KPiA+IC0JZm9yIChpID0gMDsgaSA8IDQ7IGkr KykKPiA+IC0JCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZmJzW2ldKTsKPiA+IC19Cj4g PiAtCj4gPiAtc3RhdGljIGJvb2wgcHJlcGFyZV90ZXN0KGRhdGFfdCAqZGF0YSwgZW51bSB0ZXN0 X21vZGUgdGVzdF9tb2RlLAo+ID4gdWludDY0X3QgdGlsaW5nKQo+ID4gLXsKPiA+IC0JaWd0X2Rp c3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Owo+ID4gLQlpZ3Rfb3V0cHV0X3QgKm91 dHB1dCA9IGRhdGEtPm91dHB1dDsKPiA+IC0JaWd0X3BpcGVfY3JjX3QgKnBpcGVfY3JjOwo+ID4g LQo+ID4gLQlkYXRhLT5wcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShkYXRhLT5v dXRwdXQsCj4gPiBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKPiA+IC0KPiA+IC0JY3JlYXRlX2Zi cyhkYXRhLCB0aWxpbmcsIGRhdGEtPmZiKTsKPiA+IC0KPiA+IC0JaWd0X3BpcGVfY3JjX2ZyZWUo ZGF0YS0+cGlwZV9jcmMpOwo+ID4gLQlkYXRhLT5waXBlX2NyYyA9IE5VTEw7Cj4gPiAtCXBpcGVf Y3JjID0gaWd0X3BpcGVfY3JjX25ldyhkYXRhLT5kcm1fZmQsIGRhdGEtPnBpcGUsCj4gPiAtCQkJ CcKgwqDCoMKgSU5URUxfUElQRV9DUkNfU09VUkNFX0FVVE8pOwo+ID4gLQlkYXRhLT5waXBlX2Ny YyA9IHBpcGVfY3JjOwo+ID4gLQo+ID4gLQlnZXRfcmVmX2NyY3MoZGF0YSk7Cj4gPiAtCj4gPiAt CS8qIHNjYW5vdXQgPSBmYlsxXSAqLwo+ID4gLQlpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1h cnksICZkYXRhLT5mYlsxXSk7Cj4gPiAtCWlndF9kaXNwbGF5X2NvbW1pdChkaXNwbGF5KTsKPiA+ IC0KPiA+IC0JaWYgKCF3YWl0X2Zvcl9mYmNfZW5hYmxlZChkYXRhKSkgewo+ID4gLQkJaWd0X2lu Zm8oIkZCQyBub3QgZW5hYmxlZFxuIik7Cj4gPiAtCj4gPiAtCQlpZ3RfcGxhbmVfc2V0X2ZiKGRh dGEtPnByaW1hcnksIE5VTEwpOwo+ID4gLQkJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJ UEVfQU5ZKTsKPiA+IC0JCWlndF9kaXNwbGF5X2NvbW1pdChkaXNwbGF5KTsKPiA+IC0KPiA+IC0J CWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ZmJbMF0pOwo+ID4gLQkJaWd0X3Jl bW92ZV9mYihkYXRhLT5kcm1fZmQsICZkYXRhLT5mYlsxXSk7Cj4gPiAtCQlyZXR1cm4gZmFsc2U7 Cj4gPiAtCX0KPiA+IC0KPiA+IC0JaWYgKHRlc3RfbW9kZSA9PSBURVNUX0NPTlRFWFQgfHwgdGVz dF9tb2RlID09Cj4gPiBURVNUX1BBR0VfRkxJUF9BTkRfQ09OVEVYVCkgewo+ID4gLQkJZGF0YS0+ Y3R4WzBdID0gZHJtX2ludGVsX2dlbV9jb250ZXh0X2NyZWF0ZShkYXRhLQo+ID4gPmJ1Zm1ncik7 Cj4gPiAtCQlpZ3RfYXNzZXJ0KGRhdGEtPmN0eFswXSk7Cj4gPiAtCQlkYXRhLT5jdHhbMV0gPSBk cm1faW50ZWxfZ2VtX2NvbnRleHRfY3JlYXRlKGRhdGEtCj4gPiA+YnVmbWdyKTsKPiA+IC0JCWln dF9hc3NlcnQoZGF0YS0+Y3R4WzFdKTsKPiA+IC0KPiA+IC0JCS8qCj4gPiAtCQnCoCogRGlzYWJs ZSBGQkMgUlQgYWRkcmVzcyBmb3IgYm90aCBjb250ZXh0cwo+ID4gLQkJwqAqIChieSAicmVuZGVy aW5nIiB0byBhIG5vbi1zY2Fub3V0IGJ1ZmZlcikuCj4gPiAtCQnCoCovCj4gPiAtCQlleGVjX25v cChkYXRhLCBkYXRhLT5mYlswXS5nZW1faGFuZGxlLCBkYXRhLQo+ID4gPmN0eFsxXSk7Cj4gPiAt CQlleGVjX25vcChkYXRhLCBkYXRhLT5mYlswXS5nZW1faGFuZGxlLCBkYXRhLQo+ID4gPmN0eFsw XSk7Cj4gPiAtCQlleGVjX25vcChkYXRhLCBkYXRhLT5mYlswXS5nZW1faGFuZGxlLCBkYXRhLQo+ ID4gPmN0eFsxXSk7Cj4gPiAtCQlleGVjX25vcChkYXRhLCBkYXRhLT5mYlswXS5nZW1faGFuZGxl LCBkYXRhLQo+ID4gPmN0eFswXSk7Cj4gPiAtCX0KPiA+IC0KPiA+IC0JLyogc2Nhbm91dCA9IGZi WzBdICovCj4gPiAtCWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cHJpbWFyeSwgJmRhdGEtPmZiWzBd KTsKPiA+IC0JaWd0X2Rpc3BsYXlfY29tbWl0KGRpc3BsYXkpOwo+ID4gLQo+ID4gLQlpZ3RfYXNz ZXJ0KHdhaXRfZm9yX2ZiY19lbmFibGVkKGRhdGEpKTsKPiA+IC0KPiA+IC0JaWYgKHRlc3RfbW9k ZSA9PSBURVNUX0NPTlRFWFQgfHwgdGVzdF9tb2RlID09Cj4gPiBURVNUX1BBR0VfRkxJUF9BTkRf Q09OVEVYVCkgewo+ID4gLQkJLyoKPiA+IC0JCcKgKiBtYWtlIGN0eFswXSBGQkMgUlQgYWRkcmVz cyBwb2ludCB0byBmYlswXSwKPiA+IGN0eFsxXQo+ID4gLQkJwqAqIEZCQyBSVCBhZGRyZXNzIGlz IGxlZnQgYXMgZGlzYWJsZWQuCj4gPiAtCQnCoCovCj4gPiAtCQlleGVjX25vcChkYXRhLCBkYXRh LT5mYlswXS5nZW1faGFuZGxlLCBkYXRhLQo+ID4gPmN0eFswXSk7Cj4gPiAtCQlpZ3RfYXNzZXJ0 KHdhaXRfZm9yX2ZiY19lbmFibGVkKGRhdGEpKTsKPiA+IC0JfQo+ID4gLQo+ID4gLQlpZ3Rfd2Fp dF9mb3JfdmJsYW5rKGRhdGEtPmRybV9mZCwgZGF0YS0+cGlwZSk7Cj4gPiAtCj4gPiAtCXJldHVy biB0cnVlOwo+ID4gLX0KPiA+IC0KPiA+IC1zdGF0aWMgdm9pZCBmaW5pc2hfY3J0YyhkYXRhX3Qg KmRhdGEsIGVudW0gdGVzdF9tb2RlIG1vZGUpCj4gPiAtewo+ID4gLQlpZ3RfcGlwZV9jcmNfZnJl ZShkYXRhLT5waXBlX2NyYyk7Cj4gPiAtCWRhdGEtPnBpcGVfY3JjID0gTlVMTDsKPiA+IC0KPiA+ IC0JaWYgKG1vZGUgPT0gVEVTVF9DT05URVhUIHx8IG1vZGUgPT0KPiA+IFRFU1RfUEFHRV9GTElQ X0FORF9DT05URVhUKSB7Cj4gPiAtCQlkcm1faW50ZWxfZ2VtX2NvbnRleHRfZGVzdHJveShkYXRh LT5jdHhbMF0pOwo+ID4gLQkJZHJtX2ludGVsX2dlbV9jb250ZXh0X2Rlc3Ryb3koZGF0YS0+Y3R4 WzFdKTsKPiA+IC0JfQo+ID4gLQo+ID4gLQlpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnks IE5VTEwpOwo+ID4gLQlpZ3Rfb3V0cHV0X3NldF9waXBlKGRhdGEtPm91dHB1dCwgUElQRV9BTlkp Owo+ID4gLQlpZ3RfZGlzcGxheV9jb21taXQoJmRhdGEtPmRpc3BsYXkpOwo+ID4gLQo+ID4gLQlp Z3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEtPmZiWzBdKTsKPiA+IC0JaWd0X3JlbW92 ZV9mYihkYXRhLT5kcm1fZmQsICZkYXRhLT5mYlsxXSk7Cj4gPiAtfQo+ID4gLQo+ID4gLXN0YXRp YyB2b2lkIHJlc2V0X2Rpc3BsYXkoZGF0YV90ICpkYXRhKQo+ID4gLXsKPiA+IC0JaWd0X2Rpc3Bs YXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Owo+ID4gLQllbnVtIHBpcGUgcGlwZV9pZDsK PiA+IC0KPiA+IC0JZm9yX2VhY2hfcGlwZShkaXNwbGF5LCBwaXBlX2lkKSB7Cj4gPiAtwqDCoMKg wqDCoMKgwqDCoGlndF9waXBlX3QgKnBpcGUgPSAmZGlzcGxheS0+cGlwZXNbcGlwZV9pZF07Cj4g PiAtCQlpZ3RfcGxhbmVfdCAqcGxhbmUgPSBpZ3RfcGlwZV9nZXRfcGxhbmVfdHlwZShwaXBlLAo+ ID4gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7Cj4gPiAtCj4gPiAtCQlpZ3RfcGxhbmVfc2V0X2Zi KHBsYW5lLCBOVUxMKTsKPiA+IC0JfQo+ID4gLQo+ID4gLQlmb3JfZWFjaF9jb25uZWN0ZWRfb3V0 cHV0KGRpc3BsYXksIGRhdGEtPm91dHB1dCkKPiA+IC0JCWlndF9vdXRwdXRfc2V0X3BpcGUoZGF0 YS0+b3V0cHV0LCBQSVBFX0FOWSk7Cj4gPiAtfQo+ID4gLQo+ID4gLXN0YXRpYyB2b2lkIHJ1bl90 ZXN0KGRhdGFfdCAqZGF0YSwgZW51bSB0ZXN0X21vZGUgbW9kZSkKPiA+IC17Cj4gPiAtCWlndF9k aXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKPiA+IC0JaW50IHZhbGlkX3Rlc3Rz ID0gMCwgaTsKPiA+IC0JdWludDY0X3QgdGlsaW5nX21ldGhvZHNbXSA9IHsKPiA+IC0JCUxPQ0FM X0k5MTVfRk9STUFUX01PRF9YX1RJTEVELAo+ID4gTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElM RUQsCj4gPiAtCX07Cj4gPiAtCj4gPiAtCWlmIChtb2RlID09IFRFU1RfQ09OVEVYVCB8fCBtb2Rl ID09Cj4gPiBURVNUX1BBR0VfRkxJUF9BTkRfQ09OVEVYVCkgewo+ID4gLQkJZHJtX2ludGVsX2Nv bnRleHQgKmN0eCA9Cj4gPiBkcm1faW50ZWxfZ2VtX2NvbnRleHRfY3JlYXRlKGRhdGEtPmJ1Zm1n cik7Cj4gPiAtCQlpZ3RfcmVxdWlyZShjdHgpOwo+ID4gLQkJZHJtX2ludGVsX2dlbV9jb250ZXh0 X2Rlc3Ryb3koY3R4KTsKPiA+IC0JfQo+ID4gLQo+ID4gLQlyZXNldF9kaXNwbGF5KGRhdGEpOwo+ ID4gLQo+ID4gLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0aWxpbmdfbWV0aG9kcyk7IGkr Kykgewo+ID4gLQkJdWludDY0X3QgdGlsaW5nID0gdGlsaW5nX21ldGhvZHNbaV07Cj4gPiAtCj4g PiAtCQlpZiAoaW50ZWxfZ2VuKGRhdGEtPmRldmlkKSA8IDkgJiYKPiA+IC0JCcKgwqDCoMKgdGls aW5nID09IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEKSB7Cj4gPiAtCQkJaWd0X2luZm8o IiVzIHktdGlsZWQ6IFNLSVBQRURcbiIsCj4gPiBpZ3Rfc3VidGVzdF9uYW1lKCkpOwo+ID4gLQkJ CWNvbnRpbnVlOwo+ID4gLQkJfQo+ID4gLQo+ID4gLQkJZm9yX2VhY2hfcGlwZV93aXRoX3ZhbGlk X291dHB1dChkaXNwbGF5LAo+ID4gLQkJCQkJCWRhdGEtPnBpcGUsIGRhdGEtCj4gPiA+b3V0cHV0 KSB7Cj4gPiAtCQkJY29uc3QgY2hhciAqdGlsaW5nX25hbWUgPQo+ID4gLQkJCQl0aWxpbmcgPT0K PiA+IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEID8KPiA+IC0JCQkJCSJ5IiA6ICJ4IjsK PiA+IC0KPiA+IC0JCQlwcmVwYXJlX2NydGMoZGF0YSk7Cj4gPiAtCj4gPiAtCQkJaWd0X2luZm8o IkJlZ2lubmluZyAlcyBvbiBwaXBlICVzLAo+ID4gY29ubmVjdG9yICIKPiA+IC0JCQkJwqAiJXMs ICVzLXRpbGVkXG4iLAo+ID4gLQkJCQnCoGlndF9zdWJ0ZXN0X25hbWUoKSwKPiA+IC0JCQkJwqBr bXN0ZXN0X3BpcGVfbmFtZShkYXRhLT5waXBlKSwKPiA+IC0JCQkJwqBpZ3Rfb3V0cHV0X25hbWUo ZGF0YS0+b3V0cHV0KSwKPiA+IC0JCQkJwqB0aWxpbmdfbmFtZSk7Cj4gPiAtCj4gPiAtCQkJaWYg KCFwcmVwYXJlX3Rlc3QoZGF0YSwgbW9kZSwgdGlsaW5nKSkgewo+ID4gLQkJCQlpZ3RfaW5mbygi JXMgb24gcGlwZSAlcywgY29ubmVjdG9yCj4gPiAiCj4gPiAtCQkJCQnCoCIlcywgJXMtdGlsZWQ6 Cj4gPiBTS0lQUEVEXG4iLAo+ID4gLQkJCQkJwqBpZ3Rfc3VidGVzdF9uYW1lKCksCj4gPiAtCQkJ CQnCoGttc3Rlc3RfcGlwZV9uYW1lKGRhdGEtCj4gPiA+cGlwZSksCj4gPiAtCQkJCQnCoGlndF9v dXRwdXRfbmFtZShkYXRhLQo+ID4gPm91dHB1dCksCj4gPiAtCQkJCQnCoHRpbGluZ19uYW1lKTsK PiA+IC0JCQkJY29udGludWU7Cj4gPiAtCQkJfQo+ID4gLQo+ID4gLQkJCXZhbGlkX3Rlc3RzKys7 Cj4gPiAtCj4gPiAtCQkJdGVzdF9jcmMoZGF0YSwgbW9kZSk7Cj4gPiAtCj4gPiAtCQkJaWd0X2lu Zm8oIiVzIG9uIHBpcGUgJXMsIGNvbm5lY3RvciAlcywiCj4gPiAtCQkJCcKgIiVzLXRpbGVkOiBQ QVNTRURcbiIsCj4gPiAtCQkJCcKgaWd0X3N1YnRlc3RfbmFtZSgpLAo+ID4gLQkJCQnCoGttc3Rl c3RfcGlwZV9uYW1lKGRhdGEtPnBpcGUpLAo+ID4gLQkJCQnCoGlndF9vdXRwdXRfbmFtZShkYXRh LT5vdXRwdXQpLAo+ID4gLQkJCQnCoHRpbGluZ19uYW1lKTsKPiA+IC0KPiA+IC0JCQlmaW5pc2hf Y3J0YyhkYXRhLCBtb2RlKTsKPiA+IC0JCX0KPiA+IC0JfQo+ID4gLQo+ID4gLQlpZ3RfcmVxdWly ZV9mKHZhbGlkX3Rlc3RzLCAibm8gdmFsaWQgY3J0Yy9jb25uZWN0b3IKPiA+IGNvbWJpbmF0aW9u cyBmb3VuZFxuIik7Cj4gPiAtfQo+ID4gLQo+ID4gLWlndF9tYWluCj4gPiAtewo+ID4gLQlkYXRh X3QgZGF0YSA9IHt9Owo+ID4gLQllbnVtIHRlc3RfbW9kZSBtb2RlOwo+ID4gLQo+ID4gLQlpZ3Rf c2tpcF9vbl9zaW11bGF0aW9uKCk7Cj4gPiAtCj4gPiAtCWlndF9maXh0dXJlIHsKPiA+IC0JCWNo YXIgYnVmWzEyOF07Cj4gPiAtCj4gPiAtCQlkYXRhLmRybV9mZCA9Cj4gPiBkcm1fb3Blbl9kcml2 ZXJfbWFzdGVyKERSSVZFUl9JTlRFTCk7Cj4gPiAtCQlrbXN0ZXN0X3NldF92dF9ncmFwaGljc19t b2RlKCk7Cj4gPiAtCj4gPiAtCQlkYXRhLmRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChkYXRh LmRybV9mZCk7Cj4gPiAtCj4gPiAtCQlpZ3RfcmVxdWlyZV9waXBlX2NyYyhkYXRhLmRybV9mZCk7 Cj4gPiAtCj4gPiAtCQlpZ3RfZGVidWdmc19yZWFkKGRhdGEuZHJtX2ZkLCAiaTkxNV9mYmNfc3Rh dHVzIiwKPiA+IGJ1Zik7Cj4gPiAtCQlpZ3RfcmVxdWlyZV9mKCFzdHJzdHIoYnVmLCAidW5zdXBw b3J0ZWQgb24gdGhpcwo+ID4gY2hpcHNldCIpLAo+ID4gLQkJCcKgwqDCoMKgwqDCoCJGQkMgbm90 IHN1cHBvcnRlZFxuIik7Cj4gPiAtCj4gPiAtCQlpZiAoaW50ZWxfZ2VuKGRhdGEuZGV2aWQpID49 IDYpCj4gPiAtCQkJaWd0X3NldF9tb2R1bGVfcGFyYW1faW50KCJlbmFibGVfZmJjIiwgMSk7Cj4g PiAtCj4gPiAtCQlkYXRhLmJ1Zm1nciA9Cj4gPiBkcm1faW50ZWxfYnVmbWdyX2dlbV9pbml0KGRh dGEuZHJtX2ZkLCA0MDk2KTsKPiA+IC0JCWlndF9hc3NlcnQoZGF0YS5idWZtZ3IpOwo+ID4gLQkJ ZHJtX2ludGVsX2J1Zm1ncl9nZW1fZW5hYmxlX3JldXNlKGRhdGEuYnVmbWdyKTsKPiA+IC0KPiA+ IC0JCWlndF9kaXNwbGF5X2luaXQoJmRhdGEuZGlzcGxheSwgZGF0YS5kcm1fZmQpOwo+ID4gLQl9 Cj4gPiAtCj4gPiAtCWZvciAobW9kZSA9IFRFU1RfUEFHRV9GTElQOyBtb2RlIDw9Cj4gPiBURVNU X1BBR0VfRkxJUF9BTkRfQ09OVEVYVDsgbW9kZSsrKSB7Cj4gPiAtCQlpZ3Rfc3VidGVzdF9mKCIl cyIsIHRlc3RfbW9kZV9zdHIobW9kZSkpIHsKPiA+IC0JCQlydW5fdGVzdCgmZGF0YSwgbW9kZSk7 Cj4gPiAtCQl9Cj4gPiAtCX0KPiA+IC0KPiA+IC0JaWd0X2ZpeHR1cmUgewo+ID4gLQkJZHJtX2lu dGVsX2J1Zm1ncl9kZXN0cm95KGRhdGEuYnVmbWdyKTsKPiA+IC0JCWlndF9kaXNwbGF5X2Zpbmko JmRhdGEuZGlzcGxheSk7Cj4gPiAtCX0KPiA+IC19Cj4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMvbWVz b24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAo+ID4gaW5kZXggODM1YWRjMDA3ZTk1Li5jM2Q1 MzcyZjc4YWMgMTAwNjQ0Cj4gPiAtLS0gYS90ZXN0cy9tZXNvbi5idWlsZAo+ID4gKysrIGIvdGVz dHMvbWVzb24uYnVpbGQKPiA+IEBAIC0xNjIsNyArMTYyLDYgQEAgdGVzdF9wcm9ncyA9IFsKPiA+ IMKgCSdrbXNfY3Vyc29yX2NyYycsCj4gPiDCoAkna21zX2N1cnNvcl9sZWdhY3knLAo+ID4gwqAJ J2ttc19kcmF3X2NyYycsCj4gPiAtCSdrbXNfZmJjX2NyYycsCj4gPiDCoAkna21zX2ZiY29uX2Zi dCcsCj4gPiDCoAkna21zX2ZlbmNlX3Bpbl9sZWFrJywKPiA+IMKgCSdrbXNfZmxpcCcsCj4gPiAt LcKgCj4gPiAyLjE0LjEKPiA+IAo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+IEludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=