From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 16A576E22F for ; Tue, 23 Feb 2021 04:49:42 +0000 (UTC) References: <20210217062631.9314-1-karthik.b.s@intel.com> <20210217062631.9314-2-karthik.b.s@intel.com> From: Karthik B S Message-ID: <9e7d2858-c531-23df-59a7-3b28bb8b077a@intel.com> Date: Tue, 23 Feb 2021 10:19:22 +0530 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t v8 1/2] tests/kms_content_protection: Add MST subtests List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "Nautiyal, Ankit K" , igt-dev@lists.freedesktop.org List-ID: T24gMi8yMi8yMDIxIDEwOjQyIEFNLCBOYXV0aXlhbCwgQW5raXQgSyB3cm90ZToKPiBMR1RNCj4K PiBSZXZpZXdlZC1ieTogQW5raXQgTmF1dGl5YWwgPGFua2l0LmsubmF1dGl5YWxAaW50ZWwuY29t IAo+IDxtYWlsdG86YW5raXQuay5uYXV0aXlhbEBpbnRlbC5jb20+PgoKVGhhbmsgeW91IGZvciB0 aGUgcmIuIFRoaXMgcGF0Y2ggaXMgbm93IG1lcmdlZC4KClRoYW5rcywKCkthcnRoaWsuQi5TCgo+ Cj4gT24gMi8xNy8yMDIxIDExOjU2IEFNLCBLYXJ0aGlrIEIgUyB3cm90ZToKPj4gQWRkIHN1YnRl c3RzIHRvIHZlcmlmeSBjb250ZW50IHByb3RlY3Rpb24gc2ltdWx0YW5lb3VzbHkgb24KPj4gbXVs dGlwbGUgb3V0cHV0cyBvbiB0aGUgc2FtZSBNU1QgdG9wb2xvZ3kuCj4+Cj4+IHYzOiAtUmVtb3Zl IHRoZSBsb2dnaW5nIHdoaWNoIGFyZSBubyBsb25nZXIgcmVxdWlyZWQuIChBbnNodW1hbikKPj4g wqDCoMKgwqAgLUFkZCBsb2dpYyB0byB2ZXJpZnkgdGhhdCBDUCBpcyBzdGlsbCBlbmFibGVkIG9u IG90aGVyIGNvbm5lY3RvcnMKPj4gwqDCoMKgwqDCoCB3aGlsZSBkaXNhYmxpbmcgaXQgb24gb25l IG9mIHRoZSBjb25uZWN0b3JzLiAoQW5zaHVtYW4pCj4+Cj4+IHY0OiAtUmVuYW1lIGlzX291dHB1 dF9zdXBwb3J0X2NwX2NhcGFibGUoKS4gKEFuc2h1bWFuLCBSYW0pCj4+IMKgwqDCoMKgIC1SZXBo cmFzZSB0aGUgY29tbWVudCBpbiBpc19kcF9tc3Rfb3V0cHV0LiAoQW5zaHVtYW4pCj4+IMKgwqDC oMKgIC1SZW1vdmUgdGhlIHJlZHVuZGFudCBIRENQIGNoZWNrIGh1bmsgYmVmb3JlIEhEQ1AgZGlz YWJsZS4gCj4+IChBbnNodW1hbikKPj4gwqDCoMKgwqAgLUNoZWNrIHRoZSBsaW5rIG9uIHRoZSBI RENQIGVuYWJsZWQgb3V0cHV0cyB3aGVuIG9uZSBvZiB0aGUgb3V0cHV0cwo+PiDCoMKgwqDCoMKg IGluIHRoZSBzYW1lIERQIE1TVCB0b3BvbG9neSBpcyBkaXNhYmxlZC4gKEFuc2h1bWFuKQo+PiDC oMKgwqDCoCAtUmV2ZXJ0IHRoZSBjaGFuZ2UgaW4gdGVzdF9jb250ZW50X3Byb3RlY3Rpb25fY2xl YW51cCgpLiAoQW5zaHVtYW4pCj4+IMKgwqDCoMKgIC1DcmVhdGUgZmIncyBpbiBhIGNvbW1vbiBm dW5jdGlvbiBmb3IgYm90aCBNU1QgYW5kIFNTVC4gKFJhbSkKPj4gwqDCoMKgwqAgLVJlbmFtZSBp c19kcF9tc3Rfb3V0cHV0KCkgdG8gb3V0cHV0X2lzX2RwX21zdCgpLiAoUmFtKQo+PiDCoMKgwqDC oCAtUmVtb3ZlIHRoZSByZWR1bmRhbnQgaWd0X2RlYnVnKCkgYmVmb3JlIEhEQ1AgZW5hYmxlLiAo UmFtKQo+PiDCoMKgwqDCoCAtUmVwaHJhc2UgdGhlIGlndF9hc3NlcnQgc3RhdGVtZW50IGR1cmlu ZyBIRENQIGVuYWJsZS4gKFJhbSkKPj4gwqDCoMKgwqAgLU9wdGltaXplIHRoZSBleGVjdXRpb24g dGltZSBieSBjaGVja2luZyB0aGUgbGluayBmb3IgYWxsIE1TVAo+PiDCoMKgwqDCoMKgIGNvbm5l Y3RvcnMgdG9nZXRoZXIuIChSYW0pCj4+IMKgwqDCoMKgIC1ObyBuZWVkIG9mIGxvb3Agd2hlcmUg d2UgZGlzYWJsZSBDUCBvbiBvbmUgb2YgdGhlIE1TVCBvdXRwdXRzLiAKPj4gKFJhbSkKPj4gwqDC oMKgwqAgLUR1cmluZyB2ZXJpZmljYXRpb24gYnkgZGlzYWJsaW5nIG9uZSBvZiB0aGUgTVNUIG91 dHB1dHMsCj4+IMKgwqDCoMKgwqAgY2hlY2sgZm9yIHRoZSBuZWdhdGl2ZSBjYXNlIHVudGlsIHRo ZSByZXF1aXJlZCB0aW1lb3V0LiAoUmFtKQo+Pgo+PiB2NTogLU1vZGlmeSBza2lwIG1lc3NhZ2Ug d2hlbiBIRENQIHN1cHBvcnQgaXMgbm90IHByZXNlbnQuIChBbnNodW1hbikKPj4gwqDCoMKgwqAg LVJlbW92ZSB0aGUgZGVmaW5pdGlvbiBvZiBjb2xvcl90IHN0cnVjdHVyZSBhcyBpdCBpcyBubyBs b25nZXIgCj4+IHVzZWQuCj4+Cj4+IHY2OiAtT3B0aW1pemUgZXhlY3V0aW9uIHRpbWUgaW4gTElD IHRlc3QuIChBbnNodW1hbikKPj4KPj4gdjc6IC1DaGVjayBIRENQIGNhcGFiaWxpdHkgYWZ0ZXIg bW9kZXNldCBvbiBNU1QuIChBbnNodW1hbikKPj4KPj4gdjg6IC1Vc2UgdHJ5X2NvbW1pdCBmb3Ig TVNUIG1vZGVzZXQgYW5kIHNraXAgdGhlIHRlc3Qgb24gZmFpbHVyZS4gCj4+IChBbmtpdCkKPj4K Pj4gU2lnbmVkLW9mZi1ieTogQW5zaHVtYW4gR3VwdGEgPGFuc2h1bWFuLmd1cHRhQGludGVsLmNv bT4KPj4gU2lnbmVkLW9mZi1ieTogS2FydGhpayBCIFMgPGthcnRoaWsuYi5zQGludGVsLmNvbT4K Pj4gLS0tCj4+IMKgIHRlc3RzL2ttc19jb250ZW50X3Byb3RlY3Rpb24uYyB8IDI3OCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0KPj4gwqAgMSBmaWxlIGNoYW5nZWQsIDI1NiBpbnNl cnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19j b250ZW50X3Byb3RlY3Rpb24uYyAKPj4gYi90ZXN0cy9rbXNfY29udGVudF9wcm90ZWN0aW9uLmMK Pj4gaW5kZXggMzAzZWQ0MTguLmVkZDM5Y2EyIDEwMDY0NAo+PiAtLS0gYS90ZXN0cy9rbXNfY29u dGVudF9wcm90ZWN0aW9uLmMKPj4gKysrIGIvdGVzdHMva21zX2NvbnRlbnRfcHJvdGVjdGlvbi5j Cj4+IEBAIC0xNzksMTYgKzE3OSwxMCBAQCBzdGF0aWMgdm9pZCBtb2Rlc2V0X3dpdGhfZmIoY29u c3QgZW51bSBwaXBlIAo+PiBwaXBlLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwKPj4gwqDCoMKgwqDC oCBpZ3Rfb3V0cHV0X292ZXJyaWRlX21vZGUob3V0cHV0LCAmbW9kZSk7Cj4+IMKgwqDCoMKgwqAg aWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwo+PiDCoCAtwqDCoMKgIGlndF9jcmVh dGVfY29sb3JfZmIoZGlzcGxheS0+ZHJtX2ZkLCBtb2RlLmhkaXNwbGF5LCAKPj4gbW9kZS52ZGlz cGxheSwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRk9STUFUX1hSR0I4 ODg4LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDEuZiwgMC5mLCAwLmYsICZkYXRhLnJlZCk7Cj4+IC3CoMKgwqAgaWd0X2NyZWF0 ZV9jb2xvcl9mYihkaXNwbGF5LT5kcm1fZmQsIG1vZGUuaGRpc3BsYXksIG1vZGUudmRpc3BsYXks Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0ZPUk1BVF9YUkdCODg4OCwg TE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAwLmYsIDEuZiwgMC5mLCAmZGF0YS5ncmVlbik7Cj4+IC0KPj4gwqDCoMKgwqDCoCBwcmlt YXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShvdXRwdXQsIAo+PiBEUk1fUExBTkVfVFlQ RV9QUklNQVJZKTsKPj4gwqDCoMKgwqDCoCBpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIHMp Owo+PiDCoMKgwqDCoMKgIGlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmRhdGEucmVkKTsKPj4g K8KgwqDCoCBpZ3RfZmJfc2V0X3NpemUoJmRhdGEucmVkLCBwcmltYXJ5LCBtb2RlLmhkaXNwbGF5 LCBtb2RlLnZkaXNwbGF5KTsKPj4gwqAgwqDCoMKgwqDCoCAvKiBXYWl0IGZvciBGbGlwIGNvbXBs ZXRpb24gYmVmb3JlIHN0YXJ0aW5nIHRoZSBIRENQIAo+PiBhdXRoZW50aWNhdGlvbiAqLwo+PiDC oMKgwqDCoMKgIGNvbW1pdF9kaXNwbGF5X2FuZF93YWl0X2Zvcl9mbGlwKHMpOwo+PiBAQCAtNDU4 LDM3ICs0NTIsODMgQEAgc3RhdGljIGJvb2wgc2lua19oZGNwMl9jYXBhYmxlKGlndF9vdXRwdXRf dCAKPj4gKm91dHB1dCkKPj4gwqDCoMKgwqDCoCByZXR1cm4gc3Ryc3RyKGJ1ZiwgIkhEQ1AyLjIi KTsKPj4gwqAgfQo+PiDCoCAtc3RhdGljIHZvaWQKPj4gLXRlc3RfY29udGVudF9wcm90ZWN0aW9u KGVudW0gaWd0X2NvbW1pdF9zdHlsZSBzLCBpbnQgY29udGVudF90eXBlKQo+PiArc3RhdGljIHZv aWQgcHJlcGFyZV9tb2Rlc2V0X29uX21zdF9vdXRwdXQoaWd0X291dHB1dF90ICpvdXRwdXQsIGVu dW0gCj4+IHBpcGUgcGlwZSkKPj4gwqAgewo+PiAtwqDCoMKgIGlndF9kaXNwbGF5X3QgKmRpc3Bs YXkgPSAmZGF0YS5kaXNwbGF5Owo+PiAtwqDCoMKgIGlndF9vdXRwdXRfdCAqb3V0cHV0Owo+PiAt wqDCoMKgIGludCB2YWxpZF90ZXN0cyA9IDA7Cj4+ICvCoMKgwqAgZHJtTW9kZUNvbm5lY3RvclB0 ciBjID0gb3V0cHV0LT5jb25maWcuY29ubmVjdG9yOwo+PiArwqDCoMKgIGRybU1vZGVNb2RlSW5m byAqbW9kZTsKPj4gK8KgwqDCoCBpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKPj4gK8KgwqDCoCBpbnQg aSwgd2lkdGgsIGhlaWdodDsKPj4gwqAgLcKgwqDCoCBpZiAoZGF0YS5jcF90ZXN0cyAmIENQX01F SV9SRUxPQUQpCj4+IC3CoMKgwqDCoMKgwqDCoCBpZ3RfcmVxdWlyZV9mKGlndF9rbW9kX2lzX2xv YWRlZCgibWVpX2hkY3AiKSwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Im1laV9oZGNwIG1vZHVsZSBpcyBub3QgbG9hZGVkXG4iKTsKPj4gK8KgwqDCoCBtb2RlID0gaWd0 X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOwo+PiDCoCAtwqDCoMKgIGZvcl9lYWNoX2Nvbm5lY3Rl ZF9vdXRwdXQoZGlzcGxheSwgb3V0cHV0KSB7Cj4+ICvCoMKgwqAgLyoKPj4gK8KgwqDCoMKgICog VE9ETzogQWRkIGxvZ2ljIHRvIHVzZSB0aGUgaGlnaGVzdCBwb3NzaWJsZSBtb2RlcyBvbiBlYWNo IAo+PiBvdXRwdXQuCj4+ICvCoMKgwqDCoCAqIEN1cnJlbnRseSB1c2luZyAyayBtb2RlcyBieSBk ZWZhdWx0IG9uIGFsbCB0aGUgb3V0cHV0cy4KPj4gK8KgwqDCoMKgICovCj4+ICvCoMKgwqAgaWd0 X2RlYnVnKCJCZWZvcmUgbW9kZSBvdmVycmlkZTogT3V0cHV0ICVzIE1vZGUgaGRpc3BsYXkgJWQg TW9kZSAKPj4gdmRpc3BsYXkgJWRcbiIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBvdXRwdXQt Pm5hbWUsIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSk7Cj4+ICsKPj4gK8KgwqDCoCBp ZiAobW9kZS0+aGRpc3BsYXkgPiAxOTIwICYmIG1vZGUtPnZkaXNwbGF5ID4gMTA4MCkgewo+PiAr wqDCoMKgwqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IGMtPmNvdW50X21vZGVzOyBpKyspIHsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGMtPm1vZGVzW2ldLmhkaXNwbGF5IDw9IDE5MjAg JiYgYy0+bW9kZXNbaV0udmRpc3BsYXkgCj4+IDw9IDEwODApIHsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBtb2RlID0gJmMtPm1vZGVzW2ldOwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGlndF9vdXRwdXRfb3ZlcnJpZGVfbW9kZShvdXRwdXQsIG1vZGUpOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvC oMKgwqAgaWd0X2RlYnVnKCJBZnRlciBtb2RlIG92ZXJpZGU6IE91dHB1dCAlcyBNb2RlIGhkaXNw bGF5ICVkIE1vZGUgCj4+IHZkaXNwbGF5ICVkXG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAg b3V0cHV0LT5uYW1lLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwo+PiArCj4+ICvC oMKgwqAgd2lkdGggPSBtb2RlLT5oZGlzcGxheTsKPj4gK8KgwqDCoCBoZWlnaHQgPSBtb2RlLT52 ZGlzcGxheTsKPj4gKwo+PiArwqDCoMKgIGlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBl KTsKPj4gK8KgwqDCoCBwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShvdXRwdXQs IAo+PiBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKPj4gK8KgwqDCoCBpZ3RfcGxhbmVfc2V0X2Zi KHByaW1hcnksIE5VTEwpOwo+PiArwqDCoMKgIGlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgcGlw ZSAlIDIgPyAmZGF0YS5yZWQgOiAmZGF0YS5ncmVlbik7Cj4+ICvCoMKgwqAgaWd0X2ZiX3NldF9z aXplKHBpcGUgJSAyID8gJmRhdGEucmVkIDogJmRhdGEuZ3JlZW4sIHByaW1hcnksIAo+PiB3aWR0 aCwgaGVpZ2h0KTsKPj4gK8KgwqDCoCBpZ3RfcGxhbmVfc2V0X3NpemUocHJpbWFyeSwgd2lkdGgs IGhlaWdodCk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBib29sIG91dHB1dF9oZGNwX2NhcGFibGUo aWd0X291dHB1dF90ICpvdXRwdXQsIGludCBjb250ZW50X3R5cGUpCj4+ICt7Cj4+IMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAoIW91dHB1dC0+cHJvcHNbSUdUX0NPTk5FQ1RPUl9DT05URU5UX1BST1RF Q1RJT05dKQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgaWYg KCFvdXRwdXQtPnByb3BzW0lHVF9DT05ORUNUT1JfSERDUF9DT05URU5UX1RZUEVdICYmCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRlbnRfdHlwZSkKPj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgY29udGludWU7Cj4+IC0KPj4gLcKgwqDCoMKgwqDCoMKgIGlndF9pbmZvKCJDUCBU ZXN0IGV4ZWN1dGlvbiBvbiAlc1xuIiwgb3V0cHV0LT5uYW1lKTsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGNvbnRl bnRfdHlwZSAmJiAhc2lua19oZGNwMl9jYXBhYmxlKG91dHB1dCkpIHsKPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaWd0X2luZm8oIlx0U2tpcCAlcyAoU2luayBoYXMgbm8gSERDUDIuMiBz dXBwb3J0KVxuIiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG91dHB1 dC0+bmFtZSk7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gZmFsc2U7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9IGVs c2UgaWYgKCFzaW5rX2hkY3BfY2FwYWJsZShvdXRwdXQpKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGlndF9pbmZvKCJcdFNraXAgJXMgKFNpbmsgaGFzIG5vIEhEQ1Agc3VwcG9ydClc biIsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvdXRwdXQtPm5hbWUp Owo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiDCoCArwqDC oMKgwqDCoMKgwqAgcmV0dXJuIHRydWU7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkCj4+ICt0 ZXN0X2NvbnRlbnRfcHJvdGVjdGlvbihlbnVtIGlndF9jb21taXRfc3R5bGUgcywgaW50IGNvbnRl bnRfdHlwZSkKPj4gK3sKPj4gK8KgwqDCoCBpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEu ZGlzcGxheTsKPj4gK8KgwqDCoCBpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKPj4gK8KgwqDCoCBpbnQg dmFsaWRfdGVzdHMgPSAwOwo+PiArCj4+ICvCoMKgwqAgaWYgKGRhdGEuY3BfdGVzdHMgJiBDUF9N RUlfUkVMT0FEKQo+PiArwqDCoMKgwqDCoMKgwqAgaWd0X3JlcXVpcmVfZihpZ3Rfa21vZF9pc19s b2FkZWQoIm1laV9oZGNwIiksCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICJtZWlfaGRjcCBtb2R1bGUgaXMgbm90IGxvYWRlZFxuIik7Cj4+ICsKPj4gK8KgwqDCoCBmb3Jf ZWFjaF9jb25uZWN0ZWRfb3V0cHV0KGRpc3BsYXksIG91dHB1dCkgewo+PiArwqDCoMKgwqDCoMKg wqAgaWYgKCFvdXRwdXRfaGRjcF9jYXBhYmxlKG91dHB1dCwgY29udGVudF90eXBlKSkKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7Cj4+ICsKPj4gwqDCoMKgwqDCoMKgwqDCoMKg IHRlc3RfY29udGVudF9wcm90ZWN0aW9uX29uX291dHB1dChvdXRwdXQsIHMsIGNvbnRlbnRfdHlw ZSk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB2YWxpZF90ZXN0cysrOwo+PiDCoMKgwqDCoMKgIH0K Pj4gQEAgLTQ5Niw2ICs1MzYsMTUxIEBAIHRlc3RfY29udGVudF9wcm90ZWN0aW9uKGVudW0gaWd0 X2NvbW1pdF9zdHlsZSAKPj4gcywgaW50IGNvbnRlbnRfdHlwZSkKPj4gwqDCoMKgwqDCoCBpZ3Rf cmVxdWlyZV9mKHZhbGlkX3Rlc3RzLCAiTm8gY29ubmVjdG9yIGZvdW5kIHdpdGggSERDUCAKPj4g Y2FwYWJpbGl0eVxuIik7Cj4+IMKgIH0KPj4gwqAgK3N0YXRpYyBpbnQgcGFyc2VfcGF0aF9ibG9i KGNoYXIgKmJsb2JfZGF0YSkKPj4gK3sKPj4gK8KgwqDCoCBpbnQgY29ubmVjdG9yX2lkOwo+PiAr wqDCoMKgIGNoYXIgKmVuY29kZXI7Cj4+ICsKPj4gK8KgwqDCoCBlbmNvZGVyID0gc3RydG9rKGJs b2JfZGF0YSwgIjoiKTsKPj4gK8KgwqDCoCBpZ3RfYXNzZXJ0X2YoIXN0cmNtcChlbmNvZGVyLCAi bXN0IiksICJQQVRIIGNvbm5lY3RvciBwcm9wZXJ0eSAKPj4gZXhwZWN0ZWQgdG8gaGF2ZSAnbXN0 J1xuIik7Cj4+ICsKPj4gK8KgwqDCoCBjb25uZWN0b3JfaWQgPSBhdG9pKHN0cnRvayhOVUxMLCAi LSIpKTsKPj4gKwo+PiArwqDCoMKgIHJldHVybiBjb25uZWN0b3JfaWQ7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyBib29sIG91dHB1dF9pc19kcF9tc3QoaWd0X291dHB1dF90ICpvdXRwdXQsIGludCBp KQo+PiArewo+PiArwqDCoMKgIGRybU1vZGVQcm9wZXJ0eUJsb2JQdHIgcGF0aF9ibG9iID0gTlVM TDsKPj4gK8KgwqDCoCB1aW50NjRfdCBwYXRoX2Jsb2JfaWQ7Cj4+ICvCoMKgwqAgZHJtTW9kZUNv bm5lY3RvciAqY29ubmVjdG9yID0gb3V0cHV0LT5jb25maWcuY29ubmVjdG9yOwo+PiArwqDCoMKg IHN0cnVjdCBrbXN0ZXN0X2Nvbm5lY3Rvcl9jb25maWcgY29uZmlnOwo+PiArwqDCoMKgIGNvbnN0 IGNoYXIgKmVuY29kZXI7Cj4+ICvCoMKgwqAgaW50IGNvbm5lY3Rvcl9pZDsKPj4gK8KgwqDCoCBz dGF0aWMgaW50IHByZXZfY29ubmVjdG9yX2lkOwo+PiArCj4+ICvCoMKgwqAga21zdGVzdF9nZXRf Y29ubmVjdG9yX2NvbmZpZyhkYXRhLmRybV9mZCwgCj4+IG91dHB1dC0+Y29uZmlnLmNvbm5lY3Rv ci0+Y29ubmVjdG9yX2lkLCAtMSwgJmNvbmZpZyk7Cj4+ICvCoMKgwqAgZW5jb2RlciA9IGttc3Rl c3RfZW5jb2Rlcl90eXBlX3N0cihjb25maWcuZW5jb2Rlci0+ZW5jb2Rlcl90eXBlKTsKPj4gKwo+ PiArwqDCoMKgIGlmIChzdHJjbXAoZW5jb2RlciwgIkRQIE1TVCIpKQo+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIGZhbHNlOwo+PiArCj4+ICvCoMKgwqAgaWd0X2Fzc2VydChrbXN0ZXN0X2dldF9w cm9wZXJ0eShkYXRhLmRybV9mZCwgCj4+IGNvbm5lY3Rvci0+Y29ubmVjdG9yX2lkLAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqAgRFJNX01PREVfT0JKRUNUX0NPTk5FQ1RPUiwgIlBBVEgiLCBOVUxM LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnBhdGhfYmxvYl9pZCwgTlVMTCkpOwo+PiArCj4+ ICvCoMKgwqAgaWd0X2Fzc2VydChwYXRoX2Jsb2IgPSBkcm1Nb2RlR2V0UHJvcGVydHlCbG9iKGRh dGEuZHJtX2ZkLCAKPj4gcGF0aF9ibG9iX2lkKSk7Cj4+ICsKPj4gK8KgwqDCoCBjb25uZWN0b3Jf aWQgPSBwYXJzZV9wYXRoX2Jsb2IoKGNoYXIgKikgcGF0aF9ibG9iLT5kYXRhKTsKPj4gKwo+PiAr wqDCoMKgIC8qCj4+ICvCoMKgwqDCoCAqIERpc2NhcmRpbmcgb3V0cHV0cyBvZiBvdGhlciBEUCBN U1QgdG9wb2xvZ3kuCj4+ICvCoMKgwqDCoCAqIFRlc3Rpbmcgb25seSBvbiBvdXRwdXRzIG9uIHRo ZSB0b3BvbG9neSB3ZSBnb3QgcHJldmlvdXNseQo+PiArwqDCoMKgwqAgKi8KPj4gK8KgwqDCoCBp ZiAoaSA9PSAwKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBwcmV2X2Nvbm5lY3Rvcl9pZCA9IGNvbm5l Y3Rvcl9pZDsKPj4gK8KgwqDCoCB9IGVsc2Ugewo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGNvbm5l Y3Rvcl9pZCAhPSBwcmV2X2Nvbm5lY3Rvcl9pZCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cmV0dXJuIGZhbHNlOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIGRybU1vZGVGcmVlUHJv cGVydHlCbG9iKHBhdGhfYmxvYik7Cj4+ICsKPj4gK8KgwqDCoCByZXR1cm4gdHJ1ZTsKPj4gK30K Pj4gKwo+PiArc3RhdGljIHZvaWQgdGVzdF9jcF9saWNfb25fbXN0KGlndF9vdXRwdXRfdCAqbXN0 X291dHB1dHNbXSwgaW50IAo+PiB2YWxpZF9vdXRwdXRzLCBib29sIGZpcnN0X291dHB1dCkKPj4g K3sKPj4gK8KgwqDCoCBpbnQgcmV0LCBjb3VudDsKPj4gK8KgwqDCoCB1aW50NjRfdCB2YWw7Cj4+ ICsKPj4gK8KgwqDCoCAvKiBPbmx5IHdhaXQgZm9yIHRoZSBmaXJzdCBvdXRwdXQsIHRoaXMgb3B0 aW1pemVzIHRoZSB0ZXN0IAo+PiBleGVjdXRpb24gdGltZSAqLwo+PiArwqDCoMKgIHJldCA9IHdh aXRfZm9yX3Byb3BfdmFsdWUobXN0X291dHB1dHNbZmlyc3Rfb3V0cHV0XSwgQ1BfREVTSVJFRCwg Cj4+IExJQ19QRVJJT0RfTVNFQyk7Cj4+ICvCoMKgwqAgaWd0X2Fzc2VydF9mKCFyZXQsICJDb250 ZW50IFByb3RlY3Rpb24gTElDIEZhaWxlZCBvbiAlc1xuIiwgCj4+IG1zdF9vdXRwdXRzWzBdLT5u YW1lKTsKPj4gKwo+PiArwqDCoMKgIGZvciAoY291bnQgPSBmaXJzdF9vdXRwdXQgKyAxOyBjb3Vu dCA8IHZhbGlkX291dHB1dHM7IGNvdW50KyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHZhbCA9IGln dF9vdXRwdXRfZ2V0X3Byb3AobXN0X291dHB1dHNbY291bnRdLCAKPj4gSUdUX0NPTk5FQ1RPUl9D T05URU5UX1BST1RFQ1RJT04pOwo+PiArwqDCoMKgwqDCoMKgwqAgaWd0X2Fzc2VydF9mKHZhbCAh PSBDUF9ERVNJUkVELCAiQ29udGVudCBQcm90ZWN0aW9uIExJQyAKPj4gRmFpbGVkIG9uICVzXG4i LCBtc3Rfb3V0cHV0c1tjb3VudF0tPm5hbWUpOwo+PiArwqDCoMKgIH0KPj4gK30KPj4gKwo+PiAr c3RhdGljIHZvaWQKPj4gK3Rlc3RfY29udGVudF9wcm90ZWN0aW9uX21zdChpbnQgY29udGVudF90 eXBlKQo+PiArewo+PiArwqDCoMKgIGlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS5kaXNw bGF5Owo+PiArwqDCoMKgIGlndF9vdXRwdXRfdCAqb3V0cHV0Owo+PiArwqDCoMKgIGludCB2YWxp ZF9vdXRwdXRzID0gMCwgZHBfbXN0X291dHB1dHMgPSAwLCByZXQsIGNvdW50LCBtYXhfcGlwZSAK Pj4gPSAwLCBpOwo+PiArwqDCoMKgIGVudW0gcGlwZSBwaXBlOwo+PiArwqDCoMKgIGlndF9vdXRw dXRfdCAqbXN0X291dHB1dFtJR1RfTUFYX1BJUEVTXSwgCj4+ICpoZGNwX21zdF9vdXRwdXRbSUdU X01BWF9QSVBFU107Cj4+ICsKPj4gK8KgwqDCoCBmb3JfZWFjaF9waXBlKGRpc3BsYXksIHBpcGUp Cj4+ICvCoMKgwqDCoMKgwqDCoCBtYXhfcGlwZSsrOwo+PiArCj4+ICvCoMKgwqAgcGlwZSA9IFBJ UEVfQTsKPj4gKwo+PiArwqDCoMKgIGZvcl9lYWNoX2Nvbm5lY3RlZF9vdXRwdXQoZGlzcGxheSwg b3V0cHV0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoIW91dHB1dF9pc19kcF9tc3Qob3V0cHV0 LCBkcF9tc3Rfb3V0cHV0cykpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+ PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBpZ3RfYXNzZXJ0X2YoaWd0X3BpcGVfY29ubmVjdG9yX3Zh bGlkKHBpcGUsIG91dHB1dCksIAo+PiAiT3V0cHV0LXBpcGUgY29tYmluYXRpb24gaW52YWxpZFxu Iik7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIHByZXBhcmVfbW9kZXNldF9vbl9tc3Rfb3V0cHV0 KG91dHB1dCwgcGlwZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBtc3Rfb3V0cHV0W2RwX21zdF9vdXRw dXRzKytdID0gb3V0cHV0Owo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBwaXBlKys7Cj4+ICsKPj4g K8KgwqDCoMKgwqDCoMKgIGlmIChwaXBlID4gbWF4X3BpcGUpCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGJyZWFrOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIGlndF9yZXF1aXJlX2Yo ZHBfbXN0X291dHB1dHMgPiAxLCAiTm8gRFAgTVNUIHNldCB1cCB3aXRoID49IDIgCj4+IG91dHB1 dHMgZm91bmQgaW4gYSBzaW5nbGUgdG9wb2xvZ3lcbiIpOwo+PiArCj4+ICvCoMKgwqAgcmV0ID0g aWd0X2Rpc3BsYXlfdHJ5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7Cj4+ICvCoMKg wqAgaWd0X3JlcXVpcmVfZihyZXQgPT0gMCwgIkNvbW1pdCBmYWlsdXJlIGR1cmluZyBNU1QgbW9k ZXNldFxuIik7Cj4+ICsKPj4gK8KgwqDCoCBmb3IgKGNvdW50ID0gMDsgY291bnQgPCBkcF9tc3Rf b3V0cHV0czsgY291bnQrKykgewo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCFvdXRwdXRfaGRjcF9j YXBhYmxlKG1zdF9vdXRwdXRbY291bnRdLCBjb250ZW50X3R5cGUpKQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBjb250aW51ZTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgaGRjcF9tc3Rfb3V0 cHV0W3ZhbGlkX291dHB1dHMrK10gPSBtc3Rfb3V0cHV0W2NvdW50XTsKPj4gK8KgwqDCoCB9Cj4+ ICsKPj4gK8KgwqDCoCBpZ3RfcmVxdWlyZV9mKHZhbGlkX291dHB1dHMgPiAxLCAiRFAgTVNUIG91 dHB1dHMgZG8gbm90IGhhdmUgdGhlIAo+PiByZXF1aXJlZCBIRENQIHN1cHBvcnRcbiIpOwo+PiAr Cj4+ICvCoMKgwqAgZm9yIChjb3VudCA9IDA7IGNvdW50IDwgdmFsaWRfb3V0cHV0czsgY291bnQr Kykgewo+PiArwqDCoMKgwqDCoMKgwqAgaWd0X291dHB1dF9zZXRfcHJvcF92YWx1ZShoZGNwX21z dF9vdXRwdXRbY291bnRdLCAKPj4gSUdUX0NPTk5FQ1RPUl9DT05URU5UX1BST1RFQ1RJT04sIENQ X0RFU0lSRUQpOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAob3V0cHV0LT5wcm9wc1tJR1Rf Q09OTkVDVE9SX0hEQ1BfQ09OVEVOVF9UWVBFXSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aWd0X291dHB1dF9zZXRfcHJvcF92YWx1ZShoZGNwX21zdF9vdXRwdXRbY291bnRdLCAKPj4gSUdU X0NPTk5FQ1RPUl9IRENQX0NPTlRFTlRfVFlQRSwgY29udGVudF90eXBlKTsKPj4gK8KgwqDCoCB9 Cj4+ICsKPj4gK8KgwqDCoCBpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9N SUMpOwo+PiArCj4+ICvCoMKgwqAgZm9yIChjb3VudCA9IDA7IGNvdW50IDwgdmFsaWRfb3V0cHV0 czsgY291bnQrKykgewo+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gd2FpdF9mb3JfcHJvcF92YWx1 ZShoZGNwX21zdF9vdXRwdXRbY291bnRdLCAKPj4gQ1BfRU5BQkxFRCwgS0VSTkVMX0FVVEhfVElN RV9BTExPV0VEX01TRUMpOwo+PiArwqDCoMKgwqDCoMKgwqAgaWd0X2Fzc2VydF9mKHJldCwgIkNv bnRlbnQgUHJvdGVjdGlvbiBub3QgZW5hYmxlZCBvbiAlc1xuIiwgCj4+IGhkY3BfbXN0X291dHB1 dFtjb3VudF0tPm5hbWUpOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIGlmIChkYXRhLmNw X3Rlc3RzICYgQ1BfTElDKQo+PiArwqDCoMKgwqDCoMKgwqAgdGVzdF9jcF9saWNfb25fbXN0KGhk Y3BfbXN0X291dHB1dCwgdmFsaWRfb3V0cHV0cywgMCk7Cj4+ICsKPj4gK8KgwqDCoCAvKgo+PiAr wqDCoMKgwqAgKiBWZXJpZnkgaWYgQ1AgaXMgc3RpbGwgZW5hYmxlZCBvbiBvdGhlciBvdXRwdXRz IGJ5IGRpc2FibGluZyAKPj4gQ1Agb24gdGhlIGZpcnN0IG91dHB1dC4KPj4gK8KgwqDCoMKgICov Cj4+ICvCoMKgwqAgaWd0X2RlYnVnKCJDUCBQcm9wIGJlaW5nIFVOREVTSVJFRCBvbiAlc1xuIiwg Cj4+IGhkY3BfbXN0X291dHB1dFswXS0+bmFtZSk7Cj4+ICvCoMKgwqAgdGVzdF9jcF9kaXNhYmxl KGhkY3BfbXN0X291dHB1dFswXSwgQ09NTUlUX0FUT01JQyk7Cj4+ICsKPj4gK8KgwqDCoCAvKiBD UCBpcyBleHBlY3RlZCB0byBiZSBzdGlsbCBlbmFibGVkIG9uIG90aGVyIG91dHB1dHMqLwo+PiAr wqDCoMKgIGZvciAoaSA9IDE7IGkgPCB2YWxpZF9vdXRwdXRzOyBpKyspIHsKPj4gK8KgwqDCoMKg wqDCoMKgIC8qIFdhaXQgZm9yIHRoZSB0aW1lb3V0IHRvIHZlcmlmeSBDUCBpcyBub3QgZGlzYWJs ZWQgKi8KPj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IHdhaXRfZm9yX3Byb3BfdmFsdWUoaGRjcF9t c3Rfb3V0cHV0W2ldLCBDUF9VTkRFU0lSRUQsIAo+PiBLRVJORUxfRElTQUJMRV9USU1FX0FMTE9X RURfTVNFQyk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZ3RfYXNzZXJ0X2YoIXJldCwgIkNvbnRlbnQg UHJvdGVjdGlvbiBub3QgZW5hYmxlZCBvbiAlc1xuIiwgCj4+IGhkY3BfbXN0X291dHB1dFtpXS0+ bmFtZSk7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgaWYgKGRhdGEuY3BfdGVzdHMgJiBD UF9MSUMpCj4+ICvCoMKgwqDCoMKgwqDCoCB0ZXN0X2NwX2xpY19vbl9tc3QoaGRjcF9tc3Rfb3V0 cHV0LCB2YWxpZF9vdXRwdXRzLCAxKTsKPj4gK30KPj4gKwo+PiDCoCBzdGF0aWMgdm9pZCB0ZXN0 X2NvbnRlbnRfcHJvdGVjdGlvbl9jbGVhbnVwKHZvaWQpCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBp Z3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEuZGlzcGxheTsKPj4gQEAgLTUxNCw2ICs2OTks MzEgQEAgc3RhdGljIHZvaWQgdGVzdF9jb250ZW50X3Byb3RlY3Rpb25fY2xlYW51cCh2b2lkKQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X2luZm8oIkNQIFByb3AgYmVpbmcgVU5ERVNJUkVEIG9u ICVzXG4iLCBvdXRwdXQtPm5hbWUpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgdGVzdF9jcF9kaXNh YmxlKG91dHB1dCwgQ09NTUlUX0FUT01JQyk7Cj4+IMKgwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKg wqAgaWd0X3JlbW92ZV9mYihkYXRhLmRybV9mZCwgJmRhdGEucmVkKTsKPj4gK8KgwqDCoCBpZ3Rf cmVtb3ZlX2ZiKGRhdGEuZHJtX2ZkLCAmZGF0YS5ncmVlbik7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRp YyB2b2lkIGNyZWF0ZV9mYnModm9pZCkKPj4gK3sKPj4gK8KgwqDCoCBpZ3Rfb3V0cHV0X3QgKm91 dHB1dDsKPj4gK8KgwqDCoCBpbnQgd2lkdGgsIGhlaWdodDsKPj4gK8KgwqDCoCBkcm1Nb2RlTW9k ZUluZm8gKm1vZGU7Cj4+ICsKPj4gK8KgwqDCoCBmb3JfZWFjaF9jb25uZWN0ZWRfb3V0cHV0KCZk YXRhLmRpc3BsYXksIG91dHB1dCkgewo+PiArwqDCoMKgwqDCoMKgwqAgbW9kZSA9IGlndF9vdXRw dXRfZ2V0X21vZGUob3V0cHV0KTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlndF9hc3NlcnQobW9kZSk7 Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIHdpZHRoID0gbWF4KHdpZHRoLCBtb2RlLT5oZGlzcGxh eSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBoZWlnaHQgPSBtYXgoaGVpZ2h0LCBtb2RlLT52ZGlzcGxh eSk7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgaWd0X2NyZWF0ZV9jb2xvcl9mYihkYXRh LmRybV9mZCwgd2lkdGgsIGhlaWdodCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBEUk1fRk9STUFUX1hSR0I4ODg4LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDEuZiwgMC5mLCAwLmYsICZkYXRhLnJlZCk7Cj4+ ICvCoMKgwqAgaWd0X2NyZWF0ZV9jb2xvcl9mYihkYXRhLmRybV9mZCwgd2lkdGgsIGhlaWdodCwK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRk9STUFUX1hSR0I4ODg4LCBM T0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDAuZiwgMS5mLCAwLmYsICZkYXRhLmdyZWVuKTsKPj4gwqAgfQo+PiDCoCDCoCBpZ3RfbWFp bgo+PiBAQCAtNTIyLDYgKzczMiw4IEBAIGlndF9tYWluCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBk YXRhLmRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0FOWSk7Cj4+IMKgIMKg wqDCoMKgwqDCoMKgwqDCoCBpZ3RfZGlzcGxheV9yZXF1aXJlKCZkYXRhLmRpc3BsYXksIGRhdGEu ZHJtX2ZkKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgY3JlYXRlX2ZicygpOwo+PiDCoMKgwqDC oMKgIH0KPj4gwqAgwqDCoMKgwqDCoCBpZ3Rfc3VidGVzdCgibGVnYWN5Iikgewo+PiBAQCAtNTky LDYgKzgwNCwyOCBAQCBpZ3RfbWFpbgo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgdGVzdF9jb250ZW50 X3Byb3RlY3Rpb24oQ09NTUlUX0FUT01JQywgSERDUF9DT05URU5UX1RZUEVfMCk7Cj4+IMKgwqDC oMKgwqAgfQo+PiDCoCArwqDCoMKgIGlndF9kZXNjcmliZSgiVGVzdCBDb250ZW50IHByb3RlY3Rp b24gb3ZlciBEUCBNU1QiKTsKPj4gK8KgwqDCoCBpZ3Rfc3VidGVzdCgiZHAtbXN0LXR5cGUtMCIp IHsKPj4gK8KgwqDCoMKgwqDCoMKgIHRlc3RfY29udGVudF9wcm90ZWN0aW9uX21zdChIRENQX0NP TlRFTlRfVFlQRV8wKTsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBpZ3RfZGVzY3JpYmUo IlRlc3QgQ29udGVudCBwcm90ZWN0aW9uIG92ZXIgRFAgTVNUIHdpdGggTElDIik7Cj4+ICvCoMKg wqAgaWd0X3N1YnRlc3QoImRwLW1zdC1saWMtdHlwZS0wIikgewo+PiArwqDCoMKgwqDCoMKgwqAg ZGF0YS5jcF90ZXN0cyA9IENQX0xJQzsKPj4gK8KgwqDCoMKgwqDCoMKgIHRlc3RfY29udGVudF9w cm90ZWN0aW9uX21zdChIRENQX0NPTlRFTlRfVFlQRV8wKTsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4g K8KgwqDCoCBpZ3RfZGVzY3JpYmUoIlRlc3QgQ29udGVudCBwcm90ZWN0aW9uIG92ZXIgRFAgTVNU Iik7Cj4+ICvCoMKgwqAgaWd0X3N1YnRlc3QoImRwLW1zdC10eXBlLTEiKSB7Cj4+ICvCoMKgwqDC oMKgwqDCoCB0ZXN0X2NvbnRlbnRfcHJvdGVjdGlvbl9tc3QoSERDUF9DT05URU5UX1RZUEVfMSk7 Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgaWd0X2Rlc2NyaWJlKCJUZXN0IENvbnRlbnQg cHJvdGVjdGlvbiBvdmVyIERQIE1TVCB3aXRoIExJQyIpOwo+PiArwqDCoMKgIGlndF9zdWJ0ZXN0 KCJkcC1tc3QtbGljLXR5cGUtMSIpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGRhdGEuY3BfdGVzdHMg PSBDUF9MSUM7Cj4+ICvCoMKgwqDCoMKgwqDCoCB0ZXN0X2NvbnRlbnRfcHJvdGVjdGlvbl9tc3Qo SERDUF9DT05URU5UX1RZUEVfMSk7Cj4+ICvCoMKgwqAgfQo+PiArCj4+IMKgwqDCoMKgwqAgaWd0 X2ZpeHR1cmUgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgdGVzdF9jb250ZW50X3Byb3RlY3Rpb25f Y2xlYW51cCgpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X2Rpc3BsYXlfZmluaSgmZGF0YS5k aXNwbGF5KTsKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK