From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id DAF82897F5 for ; Thu, 11 Apr 2019 06:38:49 +0000 (UTC) From: "Lisovskiy, Stanislav" Date: Thu, 11 Apr 2019 06:38:47 +0000 Message-ID: References: <1554476159-25312-1-git-send-email-juhapekka.heikkila@gmail.com> <6525db62bc81dd968bb17da7106354545d3429af.camel@intel.com> <5c9172ae806236a53c82d5f2b3ed31655efa4135.camel@intel.com> In-Reply-To: Content-Language: en-US Content-ID: MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t] tests/kms_plane_multiple: before going testing check how many planes are allowed 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: "juhapekka.heikkila@gmail.com" , "igt-dev@lists.freedesktop.org" , "Souza, Jose" List-ID: T24gV2VkLCAyMDE5LTA0LTEwIGF0IDEyOjU1IC0wNzAwLCBTb3V6YSwgSm9zZSB3cm90ZToNCj4g T24gVHVlLCAyMDE5LTA0LTA5IGF0IDEzOjQ3ICswMTAwLCBMaXNvdnNraXksIFN0YW5pc2xhdiB3 cm90ZToNCj4gPiBPbiBNb24sIDIwMTktMDQtMDggYXQgMTg6MjkgLTA3MDAsIFNvdXphLCBKb3Nl IHdyb3RlOg0KPiA+ID4gT24gRnJpLCAyMDE5LTA0LTA1IGF0IDE3OjU1ICswMzAwLCBKdWhhLVBl a2thIEhlaWtraWxhIHdyb3RlOg0KPiA+ID4gPiBiZWZvcmUgc3RhcnQgdGVzdGluZyB0cnkgb3V0 IGhvdyBtYW55IHBsYW5lcyBrZXJuZWwgd2lsbA0KPiA+ID4gPiBhbGxvdyBzaW11bHRhbmVvdXNs eSB0byBiZSB1c2VkLg0KPiA+ID4gPiANCj4gPiA+ID4gdjIgKEpvc2UgU291emEsIERhbmllbCBW ZXR0ZXIpOiBGaXggcmVzb3VyY2UgbGVha3MuIFJhbmRvbWl6ZQ0KPiA+ID4gPiB1c2VkIHBsYW5l cy4NCj4gPiA+ID4gDQo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEp1aGEtUGVra2EgSGVpa2tpbGEg PA0KPiA+ID4gPiBqdWhhcGVra2EuaGVpa2tpbGFAZ21haWwuY29tPg0KPiA+ID4gPiAtLS0NCj4g PiA+ID4gIHRlc3RzL2ttc19wbGFuZV9tdWx0aXBsZS5jIHwgODgNCj4gPiA+ID4gKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQ0KPiA+ID4gPiAgMSBmaWxlIGNo YW5nZWQsIDcxIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQ0KPiA+ID4gPiANCj4gPiA+ ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19wbGFuZV9tdWx0aXBsZS5jDQo+ID4gPiA+IGIvdGVz dHMva21zX3BsYW5lX211bHRpcGxlLmMNCj4gPiA+ID4gaW5kZXggYmZhZWVkZS4uZjI3MDdkYyAx MDA2NDQNCj4gPiA+ID4gLS0tIGEvdGVzdHMva21zX3BsYW5lX211bHRpcGxlLmMNCj4gPiA+ID4g KysrIGIvdGVzdHMva21zX3BsYW5lX211bHRpcGxlLmMNCj4gPiA+ID4gQEAgLTgwLDE2ICs4MCw2 IEBAIHN0YXRpYyB2b2lkIHRlc3RfZmluaShkYXRhX3QgKmRhdGEsDQo+ID4gPiA+IGlndF9vdXRw dXRfdA0KPiA+ID4gPiAqb3V0cHV0LCBpbnQgbl9wbGFuZXMpDQo+ID4gPiA+ICB7DQo+ID4gPiA+ ICAJaWd0X3BpcGVfY3JjX3N0b3AoZGF0YS0+cGlwZV9jcmMpOw0KPiA+ID4gPiAgDQo+ID4gPiA+ IC0JZm9yIChpbnQgaSA9IDA7IGkgPCBuX3BsYW5lczsgaSsrKSB7DQo+ID4gPiA+IC0JCWlndF9w bGFuZV90ICpwbGFuZSA9IGRhdGEtPnBsYW5lW2ldOw0KPiA+ID4gPiAtCQlpZiAoIXBsYW5lKQ0K PiA+ID4gPiAtCQkJY29udGludWU7DQo+ID4gPiA+IC0JCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1f UExBTkVfVFlQRV9QUklNQVJZKQ0KPiA+ID4gPiAtCQkJY29udGludWU7DQo+ID4gPiA+IC0JCWln dF9wbGFuZV9zZXRfZmIocGxhbmUsIE5VTEwpOw0KPiA+ID4gPiAtCQlkYXRhLT5wbGFuZVtpXSA9 IE5VTEw7DQo+ID4gPiA+IC0JfQ0KPiA+ID4gPiAtDQo+ID4gPiA+ICAJLyogcmVzZXQgdGhlIGNv bnN0cmFpbnQgb24gdGhlIHBpcGUgKi8NCj4gPiA+ID4gIAlpZ3Rfb3V0cHV0X3NldF9waXBlKG91 dHB1dCwgUElQRV9BTlkpOw0KPiA+ID4gPiAgDQo+ID4gPiA+IEBAIC05OSw3ICs4OSw4IEBAIHN0 YXRpYyB2b2lkIHRlc3RfZmluaShkYXRhX3QgKmRhdGEsDQo+ID4gPiA+IGlndF9vdXRwdXRfdA0K PiA+ID4gPiAqb3V0cHV0LCBpbnQgbl9wbGFuZXMpDQo+ID4gPiA+ICAJZnJlZShkYXRhLT5wbGFu ZSk7DQo+ID4gPiA+ICAJZGF0YS0+cGxhbmUgPSBOVUxMOw0KPiA+ID4gPiAgDQo+ID4gPiA+IC0J aWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsIGRhdGEtPmZiKTsNCj4gPiA+ID4gKwlmcmVlKGRh dGEtPmZiKTsNCj4gPiA+ID4gKwlkYXRhLT5mYiA9IE5VTEw7DQo+ID4gPiA+ICANCj4gPiA+ID4g IAlpZ3RfZGlzcGxheV9yZXNldCgmZGF0YS0+ZGlzcGxheSk7DQo+ID4gPiA+ICB9DQo+ID4gPiA+ IEBAIC0xOTUsNiArMTg2LDcgQEAgcHJlcGFyZV9wbGFuZXMoZGF0YV90ICpkYXRhLCBlbnVtIHBp cGUNCj4gPiA+ID4gcGlwZV9pZCwNCj4gPiA+ID4gY29sb3JfdCAqY29sb3IsDQo+ID4gPiA+ICAJ aW50ICp5Ow0KPiA+ID4gPiAgCWludCAqc2l6ZTsNCj4gPiA+ID4gIAlpbnQgaTsNCj4gPiA+ID4g KwlpbnQqIHN1ZmZsZTsNCj4gPiA+ID4gIA0KPiA+ID4gPiAgCWlndF9vdXRwdXRfc2V0X3BpcGUo b3V0cHV0LCBwaXBlX2lkKTsNCj4gPiA+ID4gIAlwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxh bmVfdHlwZShvdXRwdXQsDQo+ID4gPiA+IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOw0KPiA+ID4g PiBAQCAtMjA2LDYgKzE5OCwzNCBAQCBwcmVwYXJlX3BsYW5lcyhkYXRhX3QgKmRhdGEsIGVudW0g cGlwZQ0KPiA+ID4gPiBwaXBlX2lkLA0KPiA+ID4gPiBjb2xvcl90ICpjb2xvciwNCj4gPiA+ID4g IAlpZ3RfYXNzZXJ0X2YoeSwgIkZhaWxlZCB0byBhbGxvY2F0ZSAlbGQgYnl0ZXMgZm9yDQo+ID4g PiA+IHZhcmlhYmxlDQo+ID4gPiA+IHlcbiIsIChsb25nIGludCkgKHBpcGUtPm5fcGxhbmVzICog c2l6ZW9mKCp5KSkpOw0KPiA+ID4gPiAgCXNpemUgPSBtYWxsb2MocGlwZS0+bl9wbGFuZXMgKiBz aXplb2YoKnNpemUpKTsNCj4gPiA+ID4gIAlpZ3RfYXNzZXJ0X2Yoc2l6ZSwgIkZhaWxlZCB0byBh bGxvY2F0ZSAlbGQgYnl0ZXMgZm9yDQo+ID4gPiA+IHZhcmlhYmxlDQo+ID4gPiA+IHNpemVcbiIs IChsb25nIGludCkgKHBpcGUtPm5fcGxhbmVzICogc2l6ZW9mKCpzaXplKSkpOw0KPiA+ID4gPiAr CXN1ZmZsZSA9IG1hbGxvYyhwaXBlLT5uX3BsYW5lcyAqIHNpemVvZigqc3VmZmxlKSk7DQo+ID4g PiA+ICsJaWd0X2Fzc2VydF9mKHN1ZmZsZSwgIkZhaWxlZCB0byBhbGxvY2F0ZSAlbGQgYnl0ZXMg Zm9yDQo+ID4gPiA+IHZhcmlhYmxlDQo+ID4gPiA+IHNpemVcbiIsIChsb25nIGludCkgKHBpcGUt Pm5fcGxhbmVzICogc2l6ZW9mKCpzdWZmbGUpKSk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlmb3Ig KGkgPSAwOyBpIDwgcGlwZS0+bl9wbGFuZXM7IGkrKykNCj4gPiA+ID4gKwkJc3VmZmxlW2ldID0g aTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCS8qDQo+ID4gPiA+ICsJICogc3VmZmxlIHRhYmxlIGZv ciBwbGFuZXMuIHVzaW5nIHJhbmQoKSBzaG91bGQga2VlcCBpdA0KPiA+ID4gPiArCSAqICdyYW5k b21pemVkIGluIGV4cGVjdGVkIHdheScNCj4gPiA+ID4gKwkgKi8NCj4gPiA+ID4gKwlmb3IgKGkg PSAwOyBpIDwgMjU2OyBpKyspIHsNCj4gPiA+IA0KPiA+ID4gTm90IGJlYXV0aWZ1bCBhdCBhbGwN Cj4gPiA+IA0KPiA+ID4gPiArCQlpbnQgbiwgbTsNCj4gPiA+ID4gKwkJaW50IGEsIGI7DQo+ID4g PiA+ICsNCj4gPiA+ID4gKwkJbiA9IHJhbmQoKSAlIChwaXBlLT5uX3BsYW5lcy0xKTsNCj4gPiA+ ID4gKwkJbSA9IHJhbmQoKSAlIChwaXBlLT5uX3BsYW5lcy0xKTsNCj4gPiA+ID4gKw0KPiA+ID4g PiArCQkvKg0KPiA+ID4gPiArCQkgKiBrZWVwIHByaW1hcnkgcGxhbmUgYXQgaXRzIHBsYWNlIGZv ciB0ZXN0J3MNCj4gPiA+ID4gc2FrZS4NCj4gPiA+ID4gKwkJICovDQo+ID4gPiA+ICsJCWlmKG4g PT0gcHJpbWFyeS0+aW5kZXggfHwgbSA9PSBwcmltYXJ5LT5pbmRleCkNCj4gPiA+ID4gKwkJCWNv bnRpbnVlOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJCWEgPSBzdWZmbGVbbl07DQo+ID4gPiA+ICsJ CWIgPSBzdWZmbGVbbV07DQo+ID4gPiA+ICsJCXN1ZmZsZVtuXSA9IGI7DQo+ID4gPiA+ICsJCXN1 ZmZsZVttXSA9IGE7DQo+ID4gPiA+ICsJfQ0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJbW9kZSA9IGln dF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsNCj4gPiA+ID4gIA0KPiA+ID4gPiBAQCAtMjEzLDcg KzIzMywxMSBAQCBwcmVwYXJlX3BsYW5lcyhkYXRhX3QgKmRhdGEsIGVudW0gcGlwZQ0KPiA+ID4g PiBwaXBlX2lkLA0KPiA+ID4gPiBjb2xvcl90ICpjb2xvciwNCj4gPiA+ID4gIAl4W3ByaW1hcnkt PmluZGV4XSA9IDA7DQo+ID4gPiA+ICAJeVtwcmltYXJ5LT5pbmRleF0gPSAwOw0KPiA+ID4gPiAg CWZvciAoaSA9IDA7IGkgPCBtYXhfcGxhbmVzOyBpKyspIHsNCj4gPiA+ID4gLQkJaWd0X3BsYW5l X3QgKnBsYW5lID0NCj4gPiA+ID4gaWd0X291dHB1dF9nZXRfcGxhbmUob3V0cHV0LCBpKTsNCj4g PiA+ID4gKwkJLyoNCj4gPiA+ID4gKwkJICogSGVyZSBpcyBtYWRlIGFzc3VtcHRpb24gcHJpbWFy eSBwbGFuZSB3aWxsDQo+ID4gPiA+IGhhdmUNCj4gPiA+ID4gKwkJICogaW5kZXggemVyby4NCj4g PiA+ID4gKwkJICovDQo+ID4gPiA+ICsJCWlndF9wbGFuZV90ICpwbGFuZSA9DQo+ID4gPiA+IGln dF9vdXRwdXRfZ2V0X3BsYW5lKG91dHB1dCwNCj4gPiA+ID4gc3VmZmxlW2ldKTsNCj4gPiA+ID4g IAkJdWludDMyX3QgcGxhbmVfZm9ybWF0Ow0KPiA+ID4gPiAgCQl1aW50NjRfdCBwbGFuZV90aWxp bmc7DQo+ID4gPiA+ICANCj4gPiA+ID4gQEAgLTI1MSw2ICsyNzUsMTAgQEAgcHJlcGFyZV9wbGFu ZXMoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUNCj4gPiA+ID4gcGlwZV9pZCwNCj4gPiA+ID4gY29s b3JfdCAqY29sb3IsDQo+ID4gPiA+ICAJY3JlYXRlX2ZiX2Zvcl9tb2RlX3Bvc2l0aW9uKGRhdGEs IG91dHB1dCwgbW9kZSwgY29sb3IsDQo+ID4gPiA+IHgsIHksDQo+ID4gPiA+ICAJCQkJICAgIHNp emUsIHNpemUsIHRpbGluZywNCj4gPiA+ID4gbWF4X3BsYW5lcyk7DQo+ID4gPiA+ICAJaWd0X3Bs YW5lX3NldF9mYihkYXRhLT5wbGFuZVtwcmltYXJ5LT5pbmRleF0sICZkYXRhLQ0KPiA+ID4gPiA+ IGZiW3ByaW1hcnktPmluZGV4XSk7DQo+ID4gPiA+IA0KPiA+ID4gPiArCWZyZWUoKHZvaWQqKXgp Ow0KPiA+ID4gPiArCWZyZWUoKHZvaWQqKXkpOw0KPiA+ID4gPiArCWZyZWUoKHZvaWQqKXNpemUp Ow0KPiA+ID4gPiArCWZyZWUoKHZvaWQqKXN1ZmZsZSk7DQo+ID4gPiA+ICB9DQo+ID4gPiA+ICAN Cj4gPiA+ID4gIHN0YXRpYyB2b2lkDQo+ID4gPiA+IEBAIC0yNjAsNyArMjg4LDkgQEAgdGVzdF9w bGFuZV9wb3NpdGlvbl93aXRoX291dHB1dChkYXRhX3QNCj4gPiA+ID4gKmRhdGEsDQo+ID4gPiA+ IGVudW0gcGlwZSBwaXBlLA0KPiA+ID4gPiAgew0KPiA+ID4gPiAgCWNvbG9yX3QgYmx1ZSAgPSB7 IDAuMGYsIDAuMGYsIDEuMGYgfTsNCj4gPiA+ID4gIAlpZ3RfY3JjX3QgY3JjOw0KPiA+ID4gPiAr CWlndF9wbGFuZV90ICpwbGFuZTsNCj4gPiA+ID4gIAlpbnQgaTsNCj4gPiA+ID4gKwlpbnQgZXJy LCBjID0gMDsNCj4gPiA+ID4gIAlpbnQgaXRlcmF0aW9ucyA9IG9wdC5pdGVyYXRpb25zIDwgMSA/ IDEgOg0KPiA+ID4gPiBvcHQuaXRlcmF0aW9uczsNCj4gPiA+ID4gIAlib29sIGxvb3BfZm9yZXZl cjsNCj4gPiA+ID4gIAljaGFyIGluZm9bMjU2XTsNCj4gPiA+ID4gQEAgLTI3NCwyMiArMzA0LDQ2 IEBAIHRlc3RfcGxhbmVfcG9zaXRpb25fd2l0aF9vdXRwdXQoZGF0YV90DQo+ID4gPiA+ICpkYXRh LA0KPiA+ID4gPiBlbnVtIHBpcGUgcGlwZSwNCj4gPiA+ID4gIAkJCWl0ZXJhdGlvbnMsIGl0ZXJh dGlvbnMgPiAxID8NCj4gPiA+ID4gIml0ZXJhdGlvbnMiIDoNCj4gPiA+ID4gIml0ZXJhdGlvbiIp Ow0KPiA+ID4gPiAgCX0NCj4gPiA+ID4gIA0KPiA+ID4gPiAtCWlndF9pbmZvKCJUZXN0aW5nIGNv bm5lY3RvciAlcyB1c2luZyBwaXBlICVzIHdpdGggJWQNCj4gPiA+ID4gcGxhbmVzICVzDQo+ID4g PiA+IHdpdGggc2VlZCAlZFxuIiwNCj4gPiA+ID4gLQkJIGlndF9vdXRwdXRfbmFtZShvdXRwdXQp LA0KPiA+ID4gPiBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSwNCj4gPiA+ID4gbl9wbGFuZXMsDQo+ ID4gPiA+IC0JCSBpbmZvLCBvcHQuc2VlZCk7DQo+ID4gPiA+IC0NCj4gPiA+ID4gIAl0ZXN0X2lu aXQoZGF0YSwgcGlwZSwgbl9wbGFuZXMpOw0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJdGVzdF9ncmFi X2NyYyhkYXRhLCBvdXRwdXQsIHBpcGUsICZibHVlLCB0aWxpbmcpOw0KPiA+ID4gPiAgDQo+ID4g PiA+ICsJLyoNCj4gPiA+ID4gKwkgKiBGaW5kIG91dCBob3cgbWFueSBwbGFuZXMgYXJlIGFsbG93 ZWQgc2ltdWx0YW5lb3VzbHkNCj4gPiA+ID4gKwkgKi8NCj4gPiA+ID4gKwlkbyB7DQo+ID4gPiA+ ICsJCWMrKzsNCj4gPiA+IA0KPiA+ID4gQWRkaW5nIG9uZSBwbGFuZSBhdCB0aW1lIGlzIGEgd2Fz dGUgb2YgQ0kgdGltZSBpbiBwbGF0Zm9ybXMNCj4gPiA+IHdpdGhvdXQNCj4gPiA+IGENCj4gPiA+ IGhpZ2ggbnVtYmVyIG9mIHBsYW5lcyhhbnl0aGluZyBiZXNpZGVzIElDTCksIGJldHRlciBzdGFy dCB3aXRoDQo+ID4gPiBtYXgNCj4gPiA+IGFuZA0KPiA+ID4gZGVjcmVhc2luZyB1bnRpbCBjb21t aXQgaXMgYWNjZXB0ZWQuDQo+ID4gDQo+ID4gSXQgaXMgYWN0dWFsbHkgb3Bwb3NpdGUuIFBsYXRm b3JtcyB3aXRoIGhpZ2ggYW1vdW50IG9mIHBsYW5lcyB3b3VsZA0KPiA+IGJlIHNsb3dlciBvYnZp b3VzbHksIGFzIHlvdSB3aWxsIGhhdmUgdG8gaW5jcmVtZW50IG1vcmUgYW5kIGZhc3RlciANCj4g PiBmb3Igc3lzdGVtcyB3aXRoIGxlc3MgYW1vdW50IG9mIHBsYW5lcy4gQ29uc2lkZXIgMC0+NyBh bmQgMC0NCj4gPiA+IDMocGxhdGZvcm1zIHdpdGggbGVzcyBhbW91bnQgb2YgcGxhbmVzKSAtIHNv IHdoZXJlIGlzIG1vcmUgd2FzdGUNCj4gPiANCj4gPiBvZiB0aW1lPw0KPiANCj4gUGxhdGZvcm1z IHdpdGggMyBwbGFuZXMgd2lsbCBkbyAzIGl0ZXJhdGlvbnMgd2l0aCBjdXJyZW50IGFwcHJvYWNo DQo+IHdoaWxlIGl0IGNvdWxkIGJlIGRvbmUgd2l0aCBqdXN0IG9uZSBhbmQgSUNMIHdpbGwgd2ls bCBkbyA1DQo+IGl0ZXJhdGlvbnMobXkgSUNMIHNldHVwIHN1cHBvcnQgNSBwbGFuZXMgYXQgdGhl IHNhbWUgdGltZSkgd2hpbGUgaXQNCj4gY291bGQgYmUgZG9uZSBpbiAzIGl0ZXJhdGlvbnMuDQo+ IA0KPiBOb3cgdGFrZXMgdGhpcyBhZGRpdGlvbmFsIGl0ZXJhdGlvbnMgKiA0IHRlc3RzIHBlciBw aXBlICogbnVtYmVyIG9mDQo+IHBpcGVzIGFuZCB5b3UgaGF2ZSBhIGNvbnNpZGVyYWJsZSB3YXN0 ZSBvZiBDSSB0aW1lLg0KDQpUaGF0IGlzIGV4YWN0bHkgd2hhdCBJIHNhaWQuICJQbGF0Zm9ybXMg d2l0aCBoaWdoIGFtb3VudCBvZiBwbGFuZXMgDQp3b3VsZCBiZSBzbG93ZXIgb2J2aW91c2x5Ii4g SG93ZXZlciBpbiByZWFsaXR5IEknbSBjdXJyZW50bHkgdGVzdGluZw0KaXQgd2l0aCBiYW5kd2lk dGggcGF0Y2hlczogdGhlIG51bWJlciBvZiBhbGxvd2VkIHBsYW5lcyBjYW4gYmUgcXVpdGUNCmRp ZmZlcmVudCwgYmFzZWQgb24gdGlsaW5nIGFuZCBvdGhlciByZXNvdXJjZXMsDQpzbyBpdCBpcyBy ZWFsbHkgaGFyZCB0byBwcmVkaWN0IGZyb20gd2hpY2ggcGxhbmUgaXQgaXMgYmVuZWZpY2lhbCB0 byANCnN0YXJ0LiBGb3IgZXhhbXBsZTogb24gbXkgSUNMIHNldHVwIGl0IGNhbiBzb21ldGltZXMg dG9sZXJhdGUgOCh5ZWFoKQ0KcGxhbmVzIG9uIG9uZSBwaXBlLCBob3dldmVyIGlmIHNlY29uZCBw aXBlIGlzIHVzZWQgc2ltdWx0YW5lb3VzbHksIGl0DQppcyBhbGxvd2VkIHRvIGhhdmUgb25seSAx KCEpIHBsYW5lLiANCg0KPiANCj4gPiANCj4gPiA+ID4gKwkJcHJlcGFyZV9wbGFuZXMoZGF0YSwg cGlwZSwgJmJsdWUsIHRpbGluZywgYywNCj4gPiA+ID4gb3V0cHV0KTsNCj4gPiA+ID4gKwkJZXJy ID0gaWd0X2Rpc3BsYXlfdHJ5X2NvbW1pdDIoJmRhdGEtPmRpc3BsYXksDQo+ID4gPiA+IENPTU1J VF9BVE9NSUMpOw0KPiA+ID4gDQo+ID4gPiBObyBuZWVkIHRvIGRvIGEgcmVhbCBjb21taXQgaGVy ZSwgeW91IGNhbiBvbmx5IHRlc3Qgd2l0aDoNCj4gPiANCj4gPiBUaGlzIGlzIGlndF9kaXNwbGF5 X1RSWV9jb21taXQyLg0KPiANCj4gVGhlIFRSWSBoZXJlIG1lYW5zIHRoYXQgdGhlIHRlc3Qgd2ls bCBub3QgZmFpbCBpbiBjYXNlIHRoZSBjb21taXQgaXMNCj4gbm90IGFjY2VwdGVkL3ZhbGlkLCBp dCB3aWxsIG5vdCBjYWxsIGRybU1vZGVBdG9taWNDb21taXQoKSB3aXRoDQo+IERSTV9NT0RFX0FU T01JQ19URVNUX09OTFksIHRoaXMgd2lsbCBzYXZlIHNvbWUgdGltZSB3aGVuIHRoZSBjb21taXQN Cj4gaXMNCj4gdmFsaWQvYWNjZXB0ZWQuDQoNCkkgYWdyZWUgaGVyZSwgbmFtaW5nIGNvbmZ1c2Vk IG1lIC0gdGhlcmUgaXMgYSB0cnkgY29tbWl0MiBmdW5jdGlvbiB3aXRoDQpxdWl0ZSBzaW1pbGFy IG5hbWUuLg0KDQo+IA0KPiA+IA0KPiA+ID4gZXJyID0gaWd0X2Rpc3BsYXlfdHJ5X2NvbW1pdF9h dG9taWMoJmRhdGEtPmRpc3BsYXksDQo+ID4gPiBEUk1fTU9ERV9BVE9NSUNfVEVTVF9PTkxZIHwg RFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVTRVQsIE5VTEwpOw0KPiA+ID4gDQo+ID4gPiANCj4g PiA+IEFsc28gaWYgYSBlcnIgZGlmZmVyZW50IHRoYW4gLUVJTlZBTCBpcyByZXR1cm5lZCB5b3Ug c2hvdWxkDQo+ID4gPiBoYW5kbGUNCj4gPiA+IGxpa2UNCj4gPiA+IGEgZXJyb3IuDQo+ID4gPiAN Cj4gPiA+ID4gKw0KPiA+ID4gPiArCQlmb3JfZWFjaF9wbGFuZV9vbl9waXBlKCZkYXRhLT5kaXNw bGF5LCBwaXBlLA0KPiA+ID4gPiBwbGFuZSkNCj4gPiA+ID4gKwkJCWlndF9wbGFuZV9zZXRfZmIo cGxhbmUsIE5VTEwpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJCWZvciAoaW50IHggPSAwOyB4IDwg YzsgeCsrKQ0KPiA+ID4gPiArCQkJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZkYXRhLQ0K PiA+ID4gPiA+ZmJbeF0pOw0KPiA+ID4gDQo+ID4gPiBUaGlzIGlzIHN0aWxsIGxlYWtpbmcsIGV4 YW1wbGU6DQo+ID4gPiANCj4gPiA+IGMgPSAzDQo+ID4gPiBwbGFuZSAwLCBwbGFuZSAxIGFuZCBw bGFuZSAzIGVuYWJsZWQNCj4gPiANCj4gPiBUaGVyZSBzaG91bGQgYmUgbm8gbGVhayBoZXJlLiBI ZSB1c2VzIHN1ZmZsZVtpXSANCj4gPiBmb3IgaW5kZXggaW5kaXJlY3Rpb24gaW4gcHJlcGFyZV9w bGFuZXMgbGlrZSBpZ3RfcGxhbmVfdCAqcGxhbmUgPQ0KPiA+IGlndF9vdXRwdXRfZ2V0X3BsYW5l KG91dHB1dCwgc3VmZmxlW2ldKSwgc28gdGhhdCBzdWZmbGVbMF09MCwNCj4gPiBzdWZmbGVbMV09 MSwgc3VmZmxlWzJdPTMsIG1lYW53aGlsZSBjb3JyZXNwb25kZW50IGRhdGEtPmZiW2ldDQo+ID4g cmVtYWlucyBjb250aWd1b3VzLCBzbyB0aGF0IHBsYW5lIDAgY29ycmVzcG9uZHMgdG8gZGF0YS0+ ZmJbMF0sDQo+ID4gcGxhbmUgMSAtPiBkYXRhLT5mYlsxXSBhbmQgcGxhbmUgMyAtPiBkYXRhLT5m YlsyXS4gDQo+ID4gU28gYWxsIHRoZSBpZ3RfcmVtb3ZlX2ZiIGNhbGxzIHRhcmdldCBjb3JyZWN0 IGRhdGEtPmZiW10gdGhyb3VnaA0KPiA+IHN1ZmZsZVtpXSB1c2VkIGFzIGluZGlyZWN0aW9uIGxh eWVyLg0KPiANCj4gT2theQ0KPiANCj4gPiANCj4gPiA+IE90aGVyIGxlYWssIHRoZSBmcmFtZWJ1 ZmZlciBjcmVhdGVkIGluIHRlc3RfZ3JhYl9jcmMoKQ0KPiA+ID4gDQo+ID4gPiANCj4gPiA+ID4g Kwl9IHdoaWxlICghZXJyICYmIGMgPCBuX3BsYW5lcyk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlp ZihlcnIpDQo+ID4gPiA+ICsJCWMtLTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCWlndF9pbmZvKCJU ZXN0aW5nIGNvbm5lY3RvciAlcyB1c2luZyBwaXBlICVzIHdpdGggJWQNCj4gPiA+ID4gcGxhbmVz ICVzDQo+ID4gPiA+IHdpdGggc2VlZCAlZFxuIiwNCj4gPiA+ID4gKwkJIGlndF9vdXRwdXRfbmFt ZShvdXRwdXQpLA0KPiA+ID4gPiBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSwgYywNCj4gPiA+ID4g KwkJIGluZm8sIG9wdC5zZWVkKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAgCWkgPSAwOw0KPiA+ID4g PiAgCXdoaWxlIChpIDwgaXRlcmF0aW9ucyB8fCBsb29wX2ZvcmV2ZXIpIHsNCj4gPiA+ID4gLQkJ cHJlcGFyZV9wbGFuZXMoZGF0YSwgcGlwZSwgJmJsdWUsIHRpbGluZywNCj4gPiA+ID4gbl9wbGFu ZXMsDQo+ID4gPiA+IG91dHB1dCk7DQo+ID4gPiA+ICsJCXByZXBhcmVfcGxhbmVzKGRhdGEsIHBp cGUsICZibHVlLCB0aWxpbmcsIGMsDQo+ID4gPiA+IG91dHB1dCk7DQo+ID4gPiA+ICANCj4gPiA+ ID4gIAkJaWd0X2Rpc3BsYXlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwNCj4gPiA+ID4gQ09NTUlU X0FUT01JQyk7DQo+ID4gPiA+ICANCj4gPiA+ID4gIAkJaWd0X3BpcGVfY3JjX2dldF9jdXJyZW50 KGRhdGEtPmRpc3BsYXkuZHJtX2ZkLA0KPiA+ID4gPiBkYXRhLQ0KPiA+ID4gPiA+IHBpcGVfY3Jj LCAmY3JjKTsNCj4gPiA+ID4gDQo+ID4gPiA+ICANCj4gPiA+ID4gKwkJZm9yX2VhY2hfcGxhbmVf b25fcGlwZSgmZGF0YS0+ZGlzcGxheSwgcGlwZSwNCj4gPiA+ID4gcGxhbmUpDQo+ID4gPiA+ICsJ CQlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCBOVUxMKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCQlm b3IgKGludCB4ID0gMDsgeCA8IGM7IHgrKykNCj4gPiA+ID4gKwkJCWlndF9yZW1vdmVfZmIoZGF0 YS0+ZHJtX2ZkLCAmZGF0YS0NCj4gPiA+ID4gPmZiW3hdKTsNCj4gPiA+IA0KPiA+ID4gbW92ZSB0 aGlzIGNsZWFudXAgdG8gZnVuY3Rpb24gYW5kIGNhbGwgaXQgaGVyZSBhbmQgd2hlcmUgeW91IHRl c3QNCj4gPiA+IHRoZQ0KPiA+ID4gbnVtYmVyIG9mIHBsYW5lcyB0aGF0IGNhbiBiZSBlbmFibGVk DQo+ID4gPiANCj4gPiA+ID4gKw0KPiA+ID4gPiAgCQlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmZGF0 YS0+cmVmX2NyYywgJmNyYyk7DQo+ID4gPiA+ICANCj4gPiA+ID4gIAkJaSsrOw0KX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxp c3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2