From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 18C776ED10 for ; Tue, 17 Sep 2019 16:56:41 +0000 (UTC) Date: Tue, 17 Sep 2019 19:55:48 +0300 From: Imre Deak Message-ID: <20190917165548.GB16307@ideak-desk.fi.intel.com> References: <20190906140528.20975-1-anshuman.gupta@intel.com> <20190906140528.20975-2-anshuman.gupta@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190906140528.20975-2-anshuman.gupta@intel.com> Subject: Re: [igt-dev] [PATCH i-g-t v14 1/6] lib/igt_pm: igt lib helper routines to support DC5/6 tests List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: imre.deak@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Anshuman Gupta Cc: igt-dev@lists.freedesktop.org, jyoti.r.yadav@intel.com List-ID: T24gRnJpLCBTZXAgMDYsIDIwMTkgYXQgMDc6MzU6MjNQTSArMDUzMCwgQW5zaHVtYW4gR3VwdGEg d3JvdGU6Cj4gRnJvbTogSnlvdGkgWWFkYXYgPGp5b3RpLnIueWFkYXZAaW50ZWwuY29tPgo+IAo+ IFRoaXMgcGF0Y2ggZG9lcyB0aGUgZm9sbG93aW5nIGNoYW5nZXMgdG8gbGliL2lndF9wbS5jCj4g Cj4gLWRtY19sb2FkZWQoKSB3aWxsIGJlIHVzZWQgYnkgbmV3IHRlc3QgaTkxNV9wbV9kYy5jIHdo aWNoIHdpbGwgdmFsaWRhdGUKPiAgRGlzcGxheSBDIFN0YXRlcy4gU28gbW92aW5nIHRoZSBzYW1l IHRvIGlndF9wbSBsaWJyYXJ5Lgo+IAo+IC1JbnRyb2R1Y2VkIGlndF9kaXNhYmxlX3J1bnRpbWVf cG0oKSBpbiBvcmRlciB0byBkaXNhYmxlIHJ1bnRpbWUgc3VzcGVuZAo+ICBmb3IgdGhlIGZ1bmN0 aW9uIHdoaWNoIHN1cHBvcnQgZGM5Lgo+IAo+IC1DaGFuZ2VkIHRoZSBpZ3RfcG1fZW5hYmxlX3Nh dGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCkgYW5kCj4gIGlndF9wbV9yZXN0b3JlX3NhdGFfbGlu a19wb3dlcl9tYW5hZ2VtZW50KCkgaW4gb3JkZXIgdG8gc2F2ZQo+ICBhbmQgcmVzdG9yZSB0aGUg c2F0YSBsaW5rIHBvd2VyIHBvbGljeSBieSBhbiBleGl0IGhhbmRsZXIuCj4gCj4gdjI6IFNpbXBs aWZ5IHRoZSBjb21tZW50IHNlY3Rpb24uCj4gdjM6IFJlbW92ZSAuIGZyb20gdGhlIHN1YmplY3Qg bGluZS4KPiB2NDogUmViYXNlZCwgcmVzb2x2ZSBjb25mbGljdHMgaW4gcG1fcnBtLmMKPiAgICAg SW5jbHVkZWQgcGF0Y2ggc2V0IHZlcnNpb24gY2hhbmdlIGxvZy4KPiB2NTogTGlzdGluZyBhY3R1 YWwgY2hhbmdlIGluIHBhdGNoIHNldCBjaGFuZ2Vsb2cgdG8gbWFrZSByZXZpZXcgZWFzaWVyLgo+ IHY2OiBpZ3QncyBsaWIgYWRkZWQgc3VwcG9ydCBmb3IgZGlzYWJsaW5nIHJ1bnRpbWUgc3VzcGVu ZCwKPiAgICAgY2hhbmdlIGluIGNvbW1pdCBsb2cuIHJlYmFzZWQgZHVlIHRvIHRlc3QgbmFtZSBw bV9ycG0gY2hhbmdlZAo+ICAgICB0byBpOTE1X3BtX3JwbS4KPiB2NzogQWRkcmVzc2VkIHJldmll dyBjb21tZW50IGJ5IHNhdmluZyBQT1dFUl9ESVIgdmFsdWVzIGluCj4gICAgIGlndF9kaXNhYmxl X3J1bnRpbWVfcG0oKS4gW0ltcmVdCj4gdjg6IEFkZHJlc3NlZCB0aGUgcmV2aWV3IGNvbW1lbnQs IGlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQKPiAgICAgZnVuY3Rpb24g dG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgU0FUQSBsaW5rIHBvd2VyIHBvbGljeSBpZiB0aGluZ3Mg ZmFpbAo+ICAgICBieSB1c2luZyBhbiBleGl0IGhhbmRsZXIuIFtJbXJlXQo+IHY5OiBJR1QgZmFp bHVyZSBmaXh0dXJlIGluIGk5MTVfcG1fYmFja2xpZ2h0IGFuZCBpOTE1X3BtX3JwbS4KPiB2MTA6 UmV2aWV3IGNvbW1lbnQgZml4dXAgaW4gc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQKPiAgICAg bGliIGZ1bmN0aW9ucy4gW0ltcmVdCj4gdjExOkFkZCBpZ3RfYXNzZXJ0X2ZkKHBtX3N0YXR1c19m ZCkgaW4gaWd0X2Rpc2FibGVfcnVudGltZV9wbSgpLgo+ICAgICBbSW1yZSAmIFBldHJpXQo+IHYx MjogUmVmYWN0b3IgaXNfYmlvc19saW1pdHNfcGM4X3BsdXNfcmVzaWRlbmNpZXMoKSBmcm9tCj4g ICAgICBzdXBwb3J0c19wYzhfcGx1c19yZXNpZGVuY2llcygpLgo+ICAgICAgQ2hhbmdlZCBpZ3Rf ZGlzYWJsZV9ydW50aW1lX3BtKClyZXR1cm4gdHlwZS4gW0ltcmVdCj4gCj4gU2lnbmVkLW9mZi1i eTogSnlvdGkgWWFkYXYgPGp5b3RpLnIueWFkYXZAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6 IEFuc2h1bWFuIEd1cHRhIDxhbnNodW1hbi5ndXB0YUBpbnRlbC5jb20+Cj4gLS0tCj4gIGxpYi9p Z3RfcG0uYyAgICAgICAgICAgICAgICAgICB8IDIxNSArKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0KPiAgbGliL2lndF9wbS5oICAgICAgICAgICAgICAgICAgIHwgICA3ICstCj4gIHRl c3RzL2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQuYyB8ICAgNiArLQo+ICB0ZXN0cy9pOTE1L2k5MTVf cG1fcnBtLmMgICAgICAgfCAgMzkgKy0tLS0tCj4gIDQgZmlsZXMgY2hhbmdlZCwgMTc5IGluc2Vy dGlvbnMoKyksIDg4IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvaWd0X3BtLmMg Yi9saWIvaWd0X3BtLmMKPiBpbmRleCBmZDIyMjczYS4uNTQwYTlmOTIgMTAwNjQ0Cj4gLS0tIGEv bGliL2lndF9wbS5jCj4gKysrIGIvbGliL2lndF9wbS5jCj4gQEAgLTM4LDYgKzM4LDcgQEAKPiAg I2luY2x1ZGUgImRybXRlc3QuaCIKPiAgI2luY2x1ZGUgImlndF9wbS5oIgo+ICAjaW5jbHVkZSAi aWd0X2F1eC5oIgo+ICsjaW5jbHVkZSAiaWd0X3N5c2ZzLmgiCj4gIAo+ICAvKioKPiAgICogU0VD VElPTjppZ3RfcG0KPiBAQCAtNTgsMTYgKzU5LDMwIEBAIGVudW0gewo+ICAJUE9MSUNZX01JTl9Q T1dFUiA9IDIKPiAgfTsKPiAgCj4gKyNkZWZpbmUgTVNSX1BLR19DU1RfQ09ORklHX0NPTlRST0wJ MHhFMgo+ICsvKgo+ICsgKiBCZWxvdyBQS0cgQ1NUIGxpbWl0IG1hc2sgYW5kIFBDOCBiaXRzIGFy ZSBtZWFudCBmb3IKPiArICogSFNXLEJEVyBTS0wsSUNMIGFuZCBHb2xkbW9udCBNaWNyb2FyY2gg YW5kIGZ1dHVyZSBwbGF0Zm9ybXMuCj4gKyAqIFJlZmVyIElBIFMvVyBkZXZlbG9wZXJzIG1hbnVh bCB2b2wzYyBwYXJ0MyBjaGFwdGVyOjM1Cj4gKyAqLwo+ICsjZGVmaW5lICBQS0dfQ1NUX0xJTUlU X01BU0sJCTB4Rgo+ICsjZGVmaW5lICBQS0dfQ1NUX0xJTUlUX0M4CQkweDYKPiArCj4gICNkZWZp bmUgTUFYX1BFUkZPUk1BTkNFX1NUUgkibWF4X3BlcmZvcm1hbmNlXG4iCj4gICNkZWZpbmUgTUVE SVVNX1BPV0VSX1NUUgkibWVkaXVtX3Bvd2VyXG4iCj4gICNkZWZpbmUgTUlOX1BPV0VSX1NUUgkJ Im1pbl9wb3dlclxuIgo+ICAvKiBSZW1lbWJlciB0byBmaXggdGhpcyBpZiBhZGRpbmcgbG9uZ2Vy IHN0cmluZ3MgKi8KPiAgI2RlZmluZSBNQVhfUE9MSUNZX1NUUkxFTglzdHJsZW4oTUFYX1BFUkZP Uk1BTkNFX1NUUikKPiAraW50OF90ICpfX3NhdGFfcG1fcG9saWNpZXM7Cj4gK2ludCBfX3Njc2lf aG9zdF9jbnQ7Cj4gIAo+ICBzdGF0aWMgY2hhciBfX2lndF9wbV9hdWRpb19ydW50aW1lX3Bvd2Vy X3NhdmVbNjRdOwo+ICBzdGF0aWMgY2hhciAqIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJv bF9wYXRoOwo+ICBzdGF0aWMgY2hhciBfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRyb2xbNjRd Owo+ICAKPiArc3RhdGljIHZvaWQgX19pZ3RfcG1fc2F0YV9saW5rX3BtX2V4aXRfaGFuZGxlcihp bnQgc2lnKTsKPiArc3RhdGljIHZvaWQgX19pZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJf bWFuYWdlbWVudCh2b2lkKTsKPiArCj4gIHN0YXRpYyBpbnQgX19pZ3RfcG1fYXVkaW9fcmVzdG9y ZV9ydW50aW1lX3BtKHZvaWQpCj4gIHsKPiAgCWludCBmZDsKPiBAQCAtMjgwLDM5ICsyOTUsMjYg QEAgdm9pZCBpZ3RfcG1fZW5hYmxlX2F1ZGlvX3J1bnRpbWVfcG0odm9pZCkKPiAgCQlpZ3RfZGVi dWcoIkZhaWxlZCB0byBlbmFibGUgYXVkaW8gcnVudGltZSBQTSEgKCVkKVxuIiwgLWVycik7Cj4g IH0KPiAgCj4gLS8qKgo+IC0gKiBpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2Vt ZW50Ogo+IC0gKgo+IC0gKiBFbmFibGUgdGhlIG1pbl9wb3dlciBwb2xpY3kgZm9yIFNBVEEgbGlu ayBwb3dlciBtYW5hZ2VtZW50Lgo+IC0gKiBXaXRob3V0IHRoaXMgd2UgY2Fubm90IHJlYWNoIGRl ZXAgcnVudGltZSBwb3dlciBzdGF0ZXMuCj4gLSAqCj4gLSAqIFdlIGRvbid0IGhhdmUgYW55IGFz c2VydGlvbnMgb24gb3BlbiBzaW5jZSB0aGUgc3lzdGVtIG1pZ2h0IG5vdCBoYXZlCj4gLSAqIGEg U0FUQSBob3N0Lgo+IC0gKgo+IC0gKiBSZXR1cm5zOgo+IC0gKiBBbiBvcGFxdWUgcG9pbnRlciB0 byB0aGUgZGF0YSBuZWVkZWQgdG8gcmVzdG9yZSB0aGUgZGVmYXVsdCB2YWx1ZXMKPiAtICogYWZ0 ZXIgdGhlIHRlc3QgaGFzIHRlcm1pbmF0ZWQsIG9yIE5VTEwgaWYgU0FUQSBsaW5rIHBvd2VyIG1h bmFnZW1lbnQKPiAtICogaXMgbm90IHN1cHBvcnRlZC4gVGhpcyBwb2ludGVyIHNob3VsZCBiZSBm cmVlZCB3aGVuIG5vIGxvbmdlciB1c2VkCj4gLSAqICh0eXBpY2FsbHkgYWZ0ZXIgaGF2aW5nIGNh bGxlZCByZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCkpLgo+IC0gKi8KPiAtaW50 OF90ICppZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpCj4gK3N0 YXRpYyB2b2lkIF9faWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lk KQo+ICB7Cj4gIAlpbnQgZmQsIGk7Cj4gIAlzc2l6ZV90IGxlbjsKPiAgCWNoYXIgKmJ1ZjsKPiAg CWNoYXIgKmZpbGVfbmFtZTsKPiAtCWludDhfdCAqbGlua19wbV9wb2xpY2llcyA9IE5VTEw7Cj4g KwlpbnQ4X3QgcG9saWN5Owo+ICAKPiAgCWZpbGVfbmFtZSA9IG1hbGxvYyhQQVRIX01BWCk7Cj4g IAlidWYgPSBtYWxsb2MoTUFYX1BPTElDWV9TVFJMRU4gKyAxKTsKPiAgCj4gLQlmb3IgKGkgPSAw OyA7IGkrKykgewo+IC0JCWludDhfdCBwb2xpY3k7Cj4gLQo+ICsJZm9yIChfX3Njc2lfaG9zdF9j bnQgPSAwOyA7IF9fc2NzaV9ob3N0X2NudCsrKSB7Cj4gIAkJc25wcmludGYoZmlsZV9uYW1lLCBQ QVRIX01BWCwKPiAgCQkJICIvc3lzL2NsYXNzL3Njc2lfaG9zdC9ob3N0JWQvbGlua19wb3dlcl9t YW5hZ2VtZW50X3BvbGljeSIsCj4gLQkJCSBpKTsKPiArCQkJIF9fc2NzaV9ob3N0X2NudCk7Cj4g IAo+ICsJCS8qCj4gKwkJICogV2UgZG9uJ3QgaGF2ZSBhbnkgYXNzZXJ0aW9ucyBvbiBvcGVuIHNp bmNlIHRoZSBzeXN0ZW0KPiArCQkgKiBtaWdodCBub3QgaGF2ZSBhIFNBVEEgaG9zdC4KPiArCQkg Ki8KPiAgCQlmZCA9IG9wZW4oZmlsZV9uYW1lLCBPX1JEV1IpOwo+ICAJCWlmIChmZCA8IDApCj4g IAkJCWJyZWFrOwo+IEBAIC0zMzIsMTIgKzMzNCwyNiBAQCBpbnQ4X3QgKmlndF9wbV9lbmFibGVf c2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCkKPiAgCQllbHNlCj4gIAkJCXBvbGljeSA9 IFBPTElDWV9VTktOT1dOOwo+ICAKPiAtCQlpZiAoIShpICUgMjU2KSkKPiAtCQkJbGlua19wbV9w b2xpY2llcyA9IHJlYWxsb2MobGlua19wbV9wb2xpY2llcywKPiAtCQkJCQkJICAgKGkgLyAyNTYg KyAxKSAqIDI1NiArIDEpOwo+ICsJCWlmICghKF9fc2NzaV9ob3N0X2NudCAlIDI1NikpCj4gKwkJ CV9fc2F0YV9wbV9wb2xpY2llcyA9IHJlYWxsb2MoX19zYXRhX3BtX3BvbGljaWVzLAo+ICsJCQkJ CQkgICAgIChfX3Njc2lfaG9zdF9jbnQgLyAyNTYgKyAxKQo+ICsJCQkJCQkgICAgICogMjU2ICsg MSk7Cj4gKwo+ICsJCV9fc2F0YV9wbV9wb2xpY2llc1tfX3Njc2lfaG9zdF9jbnRdID0gcG9saWN5 Owo+ICsJCWNsb3NlKGZkKTsKPiArCX0KPiArCj4gKwlpZ3RfaW5zdGFsbF9leGl0X2hhbmRsZXIo X19pZ3RfcG1fc2F0YV9saW5rX3BtX2V4aXRfaGFuZGxlcik7Cj4gKwo+ICsJZm9yIChpID0gMDsg aSA8IF9fc2NzaV9ob3N0X2NudDsgaSsrKSB7Cj4gKwkJc25wcmludGYoZmlsZV9uYW1lLCBQQVRI X01BWCwKPiArCQkJICIvc3lzL2NsYXNzL3Njc2lfaG9zdC9ob3N0JWQvbGlua19wb3dlcl9tYW5h Z2VtZW50X3BvbGljeSIsCj4gKwkJCSBpKTsKPiArCQlmZCA9IG9wZW4oZmlsZV9uYW1lLCBPX1JE V1IpOwo+ICsJCWlmIChmZCA8IDApCj4gKwkJCWJyZWFrOwo+ICAKPiAtCQlsaW5rX3BtX3BvbGlj aWVzW2ldID0gcG9saWN5Owo+IC0JCWxpbmtfcG1fcG9saWNpZXNbaSArIDFdID0gMDsKPiArCQlw b2xpY3kgPSBfX3NhdGFfcG1fcG9saWNpZXNbaV07Cj4gIAo+ICAJCS8qIElmIHRoZSBwb2xpY3kg aXMgc29tZXRoaW5nIHdlIGRvbid0IGtub3cgYWJvdXQsCj4gIAkJICogZG9uJ3QgdG91Y2ggaXQs IHNpbmNlIHdlIG1pZ2h0IHBvdGVudGlhbGx5IGJyZWFrIHRoaW5ncy4KPiBAQCAtMzU1LDM5ICsz NzEsMjUgQEAgaW50OF90ICppZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50 KHZvaWQpCj4gIAl9Cj4gIAlmcmVlKGJ1Zik7Cj4gIAlmcmVlKGZpbGVfbmFtZSk7Cj4gLQo+IC0J cmV0dXJuIGxpbmtfcG1fcG9saWNpZXM7Cj4gIH0KPiAgCj4gLS8qKgo+IC0gKiBpZ3RfcG1fcmVz dG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudDoKPiAtICogQHBtX2RhdGE6IEFuIG9wYXF1 ZSBwb2ludGVyIHdpdGggc2F2ZWQgbGluayBQTSBwb2xpY2llczsKPiAtICogICAgICAgICAgIElm IE5VTEwgaXMgcGFzc2VkIHdlIGZvcmNlIGVuYWJsZSB0aGUgIm1heF9wZXJmb3JtYW5jZSIgcG9s aWN5Lgo+IC0gKgo+IC0gKiBSZXN0b3JlIHRoZSBsaW5rIHBvd2VyIG1hbmFnZW1lbnQgcG9saWNp ZXMgdG8gdGhlIHZhbHVlcwo+IC0gKiBwcmlvciB0byBlbmFibGluZyBtaW5fcG93ZXIuCj4gLSAq Cj4gLSAqIENhdmVhdDogSWYgdGhlIHN5c3RlbSBzdXBwb3J0cyBob3RwbHVnZ2luZyBhbmQgaG90 cGx1Z2dpbmcgdGFrZXMKPiAtICogICAgICAgICBwbGFjZSBkdXJpbmcgb3VyIHRlc3Rpbmcgc28g dGhhdCB0aGUgaG9zdHMgY2hhbmdlIG51bWJlcnMKPiAtICogICAgICAgICB3ZSBtaWdodCByZXN0 b3JlIHRoZSBzZXR0aW5ncyB0byB0aGUgd3JvbmcgaG9zdHMuCj4gLSAqLwo+IC12b2lkIGlndF9w bV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KGludDhfdCAqcG1fZGF0YSkKPiAt Cj4gK3N0YXRpYyB2b2lkIF9faWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1l bnQodm9pZCkKPiAgewo+ICAJaW50IGZkLCBpOwo+ICAJY2hhciAqZmlsZV9uYW1lOwo+ICAKPiAr CWlmICghX19zYXRhX3BtX3BvbGljaWVzKQo+ICsJCXJldHVybjsKPiArCj4gIAkvKiBEaXNrIHJ1 bnRpbWUgUE0gcG9saWNpZXMuICovCj4gIAlmaWxlX25hbWUgPSBtYWxsb2MoUEFUSF9NQVgpOwo+ IC0JZm9yIChpID0gMDsgOyBpKyspIHsKPiArCWZvciAoaSA9IDA7IGkgPCBfX3Njc2lfaG9zdF9j bnQ7IGkrKykgewo+ICAJCWludDhfdCBwb2xpY3k7Cj4gIAo+IC0JCWlmICghcG1fZGF0YSkKPiAt CQkJcG9saWN5ID0gUE9MSUNZX01BWF9QRVJGT1JNQU5DRTsKPiAtCQllbHNlIGlmIChwbV9kYXRh W2ldID09IFBPTElDWV9VTktOT1dOKQo+ICsJCWlmIChfX3NhdGFfcG1fcG9saWNpZXNbaV0gPT0g UE9MSUNZX1VOS05PV04pCj4gIAkJCWNvbnRpbnVlOwo+ICAJCWVsc2UKPiAtCQkJcG9saWN5ID0g cG1fZGF0YVtpXTsKPiArCQkJcG9saWN5ID0gX19zYXRhX3BtX3BvbGljaWVzW2ldOwo+ICAKPiAg CQlzbnByaW50ZihmaWxlX25hbWUsIFBBVEhfTUFYLAo+ICAJCQkgIi9zeXMvY2xhc3Mvc2NzaV9o b3N0L2hvc3QlZC9saW5rX3Bvd2VyX21hbmFnZW1lbnRfcG9saWN5IiwKPiBAQCAtNDIxLDcgKzQy Myw0OCBAQCB2b2lkIGlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KGlu dDhfdCAqcG1fZGF0YSkKPiAgCQljbG9zZShmZCk7Cj4gIAl9Cj4gIAlmcmVlKGZpbGVfbmFtZSk7 Cj4gKwlmcmVlKF9fc2F0YV9wbV9wb2xpY2llcyk7Cj4gKwlfX3NhdGFfcG1fcG9saWNpZXMgPSBO VUxMOwo+ICB9Cj4gKwo+ICsvKioKPiArICogaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJf bWFuYWdlbWVudDoKPiArICoKPiArICogRW5hYmxlIHRoZSBtaW5fcG93ZXIgcG9saWN5IGZvciBT QVRBIGxpbmsgcG93ZXIgbWFuYWdlbWVudC4KPiArICogV2l0aG91dCB0aGlzIHdlIGNhbm5vdCBy ZWFjaCBkZWVwIHJ1bnRpbWUgcG93ZXIgc3RhdGVzLgo+ICsgKi8KPiArdm9pZCBpZ3RfcG1fZW5h YmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpCj4gK3sKPiArCS8qIENoZWNrIGlm IGhhcyBiZWVuIGFscmVhZHkgc2F2ZWQuICovCj4gKwlpZiAoX19zYXRhX3BtX3BvbGljaWVzKQo+ ICsJCXJldHVybjsKPiArCj4gKwkgX19pZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5h Z2VtZW50KCk7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtf cG93ZXJfbWFuYWdlbWVudDoKPiArICoKPiArICogUmVzdG9yZSB0aGUgbGluayBwb3dlciBtYW5h Z2VtZW50IHBvbGljaWVzIHRvIHRoZSB2YWx1ZXMKPiArICogcHJpb3IgdG8gZW5hYmxpbmcgbWlu X3Bvd2VyLgo+ICsgKgo+ICsgKiBDYXZlYXQ6IElmIHRoZSBzeXN0ZW0gc3VwcG9ydHMgaG90cGx1 Z2dpbmcgYW5kIGhvdHBsdWdnaW5nIHRha2VzCj4gKyAqICAgICAgICAgcGxhY2UgZHVyaW5nIG91 ciB0ZXN0aW5nIHNvIHRoYXQgdGhlIGhvc3RzIGNoYW5nZSBudW1iZXJzCj4gKyAqICAgICAgICAg d2UgbWlnaHQgcmVzdG9yZSB0aGUgc2V0dGluZ3MgdG8gdGhlIHdyb25nIGhvc3RzLgo+ICsgKi8K PiArdm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKQo+ ICt7Cj4gKwlpZiAoIV9fc2F0YV9wbV9wb2xpY2llcykKPiArCQlyZXR1cm47Cj4gKwo+ICsJIF9f aWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgX19pZ3RfcG1fc2F0YV9saW5rX3BtX2V4aXRfaGFuZGxlcihpbnQgc2lnKQo+ ICt7Cj4gKwlfX2lndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7Cj4g K30KPiArCj4gICNkZWZpbmUgUE9XRVJfRElSICIvc3lzL2RldmljZXMvcGNpMDAwMDowMC8wMDAw OjAwOjAyLjAvcG93ZXIiCj4gIC8qIFdlIGp1c3QgbGVhayB0aGlzIG9uIGV4aXQgLi4uICovCj4g IGludCBwbV9zdGF0dXNfZmQgPSAtMTsKPiBAQCAtNTg1LDYgKzYyOCwzNCBAQCBib29sIGlndF9z ZXR1cF9ydW50aW1lX3BtKHZvaWQpCj4gIAlyZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiArLyoqCj4g KyAqIGlndF9kaXNhYmxlX3J1bnRpbWVfcG06Cj4gKyAqCj4gKyAqIERpc2FibGUgdGhlIHJ1bnRp bWUgcG0gZm9yIGk5MTUgZGV2aWNlLgo+ICsgKiBpZ3RfZGlzYWJsZV9ydW50aW1lX3BtIGFzc3Vt ZXMgdGhhdCBpZ3Rfc2V0dXBfcnVudGltZV9wbSBoYXMgYWxyZWFkeQo+ICsgKiBjYWxsZWQgdG8g c2F2ZSBydW50aW1lIGF1dG9zdXNwZW5kIGFuZCBjb250cm9sIGF0dHJpYnV0ZXMuCj4gKyAqLwo+ ICt2b2lkIGlndF9kaXNhYmxlX3J1bnRpbWVfcG0odm9pZCkKPiArewo+ICsJaW50IGZkOwo+ICsJ c3NpemVfdCBzaXplOwo+ICsJY2hhciBidWZbNl07Cj4gKwo+ICsJaWd0X2Fzc2VydF9mZChwbV9z dGF0dXNfZmQpOwo+ICsKPiArCS8qIFdlIGtub3cgd2Ugc3VwcG9ydCBydW50aW1lIFBNLCBsZXQn cyB0cnkgdG8gZGlzYWJsZSBpdCBub3cuICovCj4gKwlmZCA9IG9wZW4oUE9XRVJfRElSICIvY29u dHJvbCIsIE9fUkRXUik7Cj4gKwlpZ3RfYXNzZXJ0X2YoZmQgPj0gMCwgIkNhbid0IG9wZW4gIiBQ T1dFUl9ESVIgIi9jb250cm9sXG4iKTsKPiArCj4gKwlzaXplID0gd3JpdGUoZmQsICJvblxuIiwg Myk7Cj4gKwlpZ3RfYXNzZXJ0KHNpemUgPT0gMyk7Cj4gKwlsc2VlayhmZCwgMCwgU0VFS19TRVQp Owo+ICsJc2l6ZSA9IHJlYWQoZmQsIGJ1ZiwgQVJSQVlfU0laRShidWYpKTsKPiArCWlndF9hc3Nl cnQoc2l6ZSA9PSAzKTsKPiArCWlndF9hc3NlcnQoc3RybmNtcChidWYsICJvblxuIiwgMykgPT0g MCk7Cj4gKwljbG9zZShmZCk7Cj4gK30KPiArCj4gIC8qKgo+ICAgKiBpZ3RfZ2V0X3J1bnRpbWVf cG1fc3RhdHVzOgo+ICAgKgo+IEBAIC02MjgsMyArNjk5LDUzIEBAIGJvb2wgaWd0X3dhaXRfZm9y X3BtX3N0YXR1cyhlbnVtIGlndF9ydW50aW1lX3BtX3N0YXR1cyBzdGF0dXMpCj4gIHsKPiAgCXJl dHVybiBpZ3Rfd2FpdChpZ3RfZ2V0X3J1bnRpbWVfcG1fc3RhdHVzKCkgPT0gc3RhdHVzLCAxMDAw MCwgMTAwKTsKPiAgfQo+ICsKPiArLyoqCj4gKyAqIGRtY19sb2FkZWQ6Cj4gKyAqIEBkZWJ1Z2Zz OiBmZCB0byB0aGUgZGVidWdmcyBkaXIuCj4gKwoKVGhlIERvY0Jvb2sgaGVhZGVyIGlzIG1pc2Zv cm1hdHRlZC4KCj4gKyAqIENoZWNrIHdoZXRoZXIgRE1DIEZXIGlzIGxvYWRlZCBvciBub3QuIERN QyBGVyBpcyByZXF1aXJlIGZvciBmZXcgRGlzcGxheSBDCj4gKyAqIHN0YXRlcyBsaWtlIERDNSBh bmQgREM2LiBGVyBkb2VzIHRoZSBDb250ZXh0IFNhdmUgYW5kIFJlc3RvcmUgZHVyaW5nIERpc3Bs YXkKPiArICogQyBTdGF0ZXMgZW50cnkgYW5kIGV4aXQuCj4gKyAqCj4gKyAqIFJldHVybnM6Cj4g KyAqIFRydWUgaWYgRE1DIEZXIGlzIGxvYWRlZCBvdGhlcndpc2UgZmFsc2UuCj4gKyAqLwo+ICti b29sIGlndF9wbV9kbWNfbG9hZGVkKGludCBkZWJ1Z2ZzKQo+ICt7Cj4gKwljaGFyIGJ1ZlsxNV07 Cj4gKwlpbnQgbGVuOwo+ICsKPiArCWxlbiA9IGlndF9zeXNmc19yZWFkKGRlYnVnZnMsICJpOTE1 X2RtY19pbmZvIiwgYnVmLCBzaXplb2YoYnVmKSAtIDEpOwo+ICsJaWYgKGxlbiA8IDApCj4gKwkJ cmV0dXJuIHRydWU7IC8qIG5vIENTUiBzdXBwb3J0LCBubyBETUMgcmVxdWlyZW1lbnQgKi8KPiAr Cj4gKwlidWZbbGVuXSA9ICdcMCc7Cj4gKwo+ICsJaWd0X2luZm8oIkRNQzogJXNcbiIsIGJ1Zik7 Cj4gKwlyZXR1cm4gc3Ryc3RyKGJ1ZiwgImZ3IGxvYWRlZDogeWVzIik7Cj4gK30KPiArCj4gKy8q Kgo+ICsgKiBpc19iaW9zX2xpbWl0c19wYzhfcGx1c19yZXNpZGVuY2llczoKCkZvciBsaWJyYXJ5 IGZ1bmN0aW9ucyB3ZSBuZWVkIGEgcHJvcGVyIHByZWZpeCBhbmQgSSB0aGluayBzb21ldGhpbmcg bGlrZQoKCWlndF9wbV9wYzhfcGx1c19yZXNpZGVuY2llc19kaXNhYmxlZAoKd291bGQgYmUgbW9y ZSBkZXNjcmlwdGl2ZS4KCj4gKwoKTWlzZm9ybWF0dGVkIERvY0Jvb2sgaGVhZGVyLgoKV2l0aCB0 aGUgYWJvdmUgZml4ZWQsIG9uIHRoZSB3aG9sZSBzZXJpZXM6ClJldmlld2VkLWJ5OiBJbXJlIERl YWsgPGltcmUuZGVha0BpbnRlbC5jb20+CgpOb3RlIHRoYXQgdGhlIG5ldyB0ZXN0cyB3aWxsIGZh aWwgY29uc2lzdGVuY3RseSBvbiBhIGJ1bmNoIG9mIG1hY2hpbmVzLApidXQgdGhvc2UgZmFpbHVy ZXMgYXJlIG1vc3QgcHJvYmFibHkgY2F1c2VkIGJ5IGFub3RoZXIgZGV2aWNlIGJsb2NraW5nIGEK bG93LXBvd2VyIHN0YXRlIChhbmQgdGh1cyBwcmV2ZW50aW5nIERDNiBlbnRyeS9leGl0KS4gSW1v IHdlIHNob3VsZApzdGlsbCBtZXJnZSB0aGVzZSBwYXRjaGVzIHNpbmNlIHdlIHdhbnQgdGhlIGNv dmVyYWdlIG9uIG1hY2hpbmVzIHcvbwpzdWNoIHByb2JsZW1hdGljIGRldmljZXMgYW5kIHdlIGNv dWxkIGZvbGxvdyB1cCB0cnlpbmcgdG8gZW5hYmxlIHRoZSBsb3cKcG93ZXIgc3RhdGVzIGZvciBv dGhlciBkZXZpY2VzIHRvbyBsYXRlciAoZm9yIGluc3RhbmNlIGJ5IHR3ZWFraW5nIHRoZQpjb3Jy ZXNwb25kaW5nIEJJT1MgcG93ZXIgc2V0dXAgc2V0dGluZ3MpLgoKPiArICogQ2hlY2sgd2hldGhl ciBCSU9TIGhhcyBkaXNhYmxlZCB0aGUgUEM4IHBhY2thZ2UgZGVlcGVyIHN0YXRlLgo+ICsgKgo+ ICsgKiBSZXR1cm5zOgo+ICsgKiBUcnVlIGlmIFBDOCsgcGFja2FnZSBkZWVwZXIgc3RhdGUgZW5h YmxlZCBvbiBtYWNoaW5lIG90aGVyd2lzZSBmYWxzZS4KPiArICovCj4gK2Jvb2wgaXNfYmlvc19s aW1pdHNfcGM4X3BsdXNfcmVzaWRlbmNpZXMoaW50IG1zcl9mZCkKPiArewo+ICsJaW50IHJjOwo+ ICsJdWludDY0X3QgdmFsOwo+ICsKPiArCXJjID0gcHJlYWQobXNyX2ZkLCAmdmFsLCBzaXplb2Yo dWludDY0X3QpLCBNU1JfUEtHX0NTVF9DT05GSUdfQ09OVFJPTCk7Cj4gKwlpZiAocmMgIT0gc2l6 ZW9mKHZhbCkpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJaWYgKCh2YWwgJiBQS0dfQ1NUX0xJTUlU X01BU0spIDwgUEtHX0NTVF9MSU1JVF9DOCkgewo+ICsJCWlndF9pbmZvKCJQS0cgQy1zdGF0ZXMg bGltaXRlZCBiZWxvdyBQQzggYnkgdGhlIEJJT1NcbiIpOwo+ICsJCXJldHVybiBmYWxzZTsKPiAr CX0KPiArCj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+IGRpZmYgLS1naXQgYS9saWIvaWd0X3BtLmgg Yi9saWIvaWd0X3BtLmgKPiBpbmRleCAxMGNjNjc5NC4uZjRkNmM0OTYgMTAwNjQ0Cj4gLS0tIGEv bGliL2lndF9wbS5oCj4gKysrIGIvbGliL2lndF9wbS5oCj4gQEAgLTI1LDggKzI1LDggQEAKPiAg I2RlZmluZSBJR1RfUE1fSAo+ICAKPiAgdm9pZCBpZ3RfcG1fZW5hYmxlX2F1ZGlvX3J1bnRpbWVf cG0odm9pZCk7Cj4gLWludDhfdCAqaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdl bWVudCh2b2lkKTsKPiAtdm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdl bWVudChpbnQ4X3QgKnBtX2RhdGEpOwo+ICt2b2lkIGlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bv d2VyX21hbmFnZW1lbnQodm9pZCk7Cj4gK3ZvaWQgaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bv d2VyX21hbmFnZW1lbnQodm9pZCk7Cj4gIAo+ICAvKioKPiAgICogaWd0X3J1bnRpbWVfcG1fc3Rh dHVzOgo+IEBAIC00Nyw4ICs0NywxMSBAQCBlbnVtIGlndF9ydW50aW1lX3BtX3N0YXR1cyB7Cj4g IH07Cj4gIAo+ICBib29sIGlndF9zZXR1cF9ydW50aW1lX3BtKHZvaWQpOwo+ICt2b2lkIGlndF9k aXNhYmxlX3J1bnRpbWVfcG0odm9pZCk7Cj4gIHZvaWQgaWd0X3Jlc3RvcmVfcnVudGltZV9wbSh2 b2lkKTsKPiAgZW51bSBpZ3RfcnVudGltZV9wbV9zdGF0dXMgaWd0X2dldF9ydW50aW1lX3BtX3N0 YXR1cyh2b2lkKTsKPiAgYm9vbCBpZ3Rfd2FpdF9mb3JfcG1fc3RhdHVzKGVudW0gaWd0X3J1bnRp bWVfcG1fc3RhdHVzIHN0YXR1cyk7Cj4gK2Jvb2wgaWd0X3BtX2RtY19sb2FkZWQoaW50IGRlYnVn ZnMpOwo+ICtib29sIGlzX2Jpb3NfbGltaXRzX3BjOF9wbHVzX3Jlc2lkZW5jaWVzKGludCBtc3Jf ZmQpOwo+ICAKPiAgI2VuZGlmIC8qIElHVF9QTV9IICovCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5 MTUvaTkxNV9wbV9iYWNrbGlnaHQuYyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQuYwo+ IGluZGV4IDRjMWJmZjViLi45YTVmNGMzNyAxMDA2NDQKPiAtLS0gYS90ZXN0cy9pOTE1L2k5MTVf cG1fYmFja2xpZ2h0LmMKPiArKysgYi90ZXN0cy9pOTE1L2k5MTVfcG1fYmFja2xpZ2h0LmMKPiBA QCAtNDcsNyArNDcsNiBAQCBzdHJ1Y3QgY29udGV4dCB7Cj4gICNkZWZpbmUgRkFERVNQRUVEIDEw MCAvKiBtaWxsaXNlY29uZHMgYmV0d2VlbiBzdGVwcyAqLwo+ICAKPiAgSUdUX1RFU1RfREVTQ1JJ UFRJT04oIkJhc2ljIGJhY2tsaWdodCBzeXNmcyB0ZXN0Iik7Cj4gLXN0YXRpYyBpbnQ4X3QgKnBt X2RhdGEgPSBOVUxMOwo+ICAKPiAgc3RhdGljIGludCBiYWNrbGlnaHRfcmVhZChpbnQgKnJlc3Vs dCwgY29uc3QgY2hhciAqZm5hbWUpCj4gIHsKPiBAQCAtMjM1LDcgKzIzNCw3IEBAIGlndF9tYWlu Cj4gIAkJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZmIpOwo+ICAKPiAgCQlpZ3RfZGlzcGxh eV9jb21taXQyKCZkaXNwbGF5LCBkaXNwbGF5LmlzX2F0b21pYyA/IENPTU1JVF9BVE9NSUMgOiBD T01NSVRfTEVHQUNZKTsKPiAtCQlwbV9kYXRhID0gaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93 ZXJfbWFuYWdlbWVudCgpOwo+ICsJCWlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFn ZW1lbnQoKTsKPiAgCX0KPiAgCj4gIAlpZ3Rfc3VidGVzdCgiYmFzaWMtYnJpZ2h0bmVzcyIpCj4g QEAgLTI1NSw4ICsyNTQsNyBAQCBpZ3RfbWFpbgo+ICAKPiAgCQlpZ3RfZGlzcGxheV9maW5pKCZk aXNwbGF5KTsKPiAgCQlpZ3RfcmVtb3ZlX2ZiKGRpc3BsYXkuZHJtX2ZkLCAmZmIpOwo+IC0JCWln dF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHBtX2RhdGEpOwo+IC0JCWZy ZWUocG1fZGF0YSk7Cj4gKwkJaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1l bnQoKTsKPiAgCQljbG9zZShkaXNwbGF5LmRybV9mZCk7Cj4gIAl9Cj4gIH0KPiBkaWZmIC0tZ2l0 IGEvdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5jIGIvdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5jCj4g aW5kZXggMjE2OGZmNzIuLmQwYTBiYzkwIDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2k5MTUvaTkxNV9w bV9ycG0uYwo+ICsrKyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9ycG0uYwo+IEBAIC01MiwxMSArNTIs NiBAQAo+ICAjaW5jbHVkZSAiaWd0X2RldmljZS5oIgo+ICAjaW5jbHVkZSAiaWd0X2VkaWQuaCIK PiAgCj4gLSNkZWZpbmUgTVNSX1BLR19DU1RfQ09ORklHX0NPTlRST0wJMHhFMgo+IC0vKiBIU1cv QkRXOiAqLwo+IC0jZGVmaW5lICBQS0dfQ1NUX0xJTUlUX01BU0sJCTB4Rgo+IC0jZGVmaW5lICBQ S0dfQ1NUX0xJTUlUX0M4CQkweDYKPiAtCj4gICNkZWZpbmUgTVNSX1BDOF9SRVMJMHg2MzAKPiAg I2RlZmluZSBNU1JfUEM5X1JFUwkweDYzMQo+ICAjZGVmaW5lIE1TUl9QQzEwX1JFUwkweDYzMgo+ IEBAIC0xMjMsOCArMTE4LDYgQEAgc3RydWN0IG1vZGVzZXRfcGFyYW1zIGxwc3BfbW9kZV9wYXJh bXM7Cj4gIHN0cnVjdCBtb2Rlc2V0X3BhcmFtcyBub25fbHBzcF9tb2RlX3BhcmFtczsKPiAgc3Ry dWN0IG1vZGVzZXRfcGFyYW1zICpkZWZhdWx0X21vZGVfcGFyYW1zOwo+ICAKPiAtc3RhdGljIGlu dDhfdCAqcG1fZGF0YSA9IE5VTEw7Cj4gLQo+ICBzdGF0aWMgaW50IG1vZHByb2JlKGNvbnN0IGNo YXIgKmRyaXZlcikKPiAgewo+ICAJcmV0dXJuIGlndF9rbW9kX2xvYWQoZHJpdmVyLCBOVUxMKTsK PiBAQCAtMTQ2LDE1ICsxMzksNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c19wYzhfcGx1c19yZXNp ZGVuY2llcyh2b2lkKQo+ICAJaWYgKHJjICE9IHNpemVvZih2YWwpKQo+ICAJCXJldHVybiBmYWxz ZTsKPiAgCj4gLQlyYyA9IHByZWFkKG1zcl9mZCwgJnZhbCwgc2l6ZW9mKHVpbnQ2NF90KSwgTVNS X1BLR19DU1RfQ09ORklHX0NPTlRST0wpOwo+IC0JaWYgKHJjICE9IHNpemVvZih2YWwpKQo+IC0J CXJldHVybiBmYWxzZTsKPiAtCWlmICgodmFsICYgUEtHX0NTVF9MSU1JVF9NQVNLKSA8IFBLR19D U1RfTElNSVRfQzgpIHsKPiAtCQlpZ3RfaW5mbygiUEtHIEMtc3RhdGVzIGxpbWl0ZWQgYmVsb3cg UEM4IGJ5IHRoZSBCSU9TXG4iKTsKPiAtCQlyZXR1cm4gZmFsc2U7Cj4gLQl9Cj4gLQo+IC0JcmV0 dXJuIHRydWU7Cj4gKwlyZXR1cm4gaXNfYmlvc19saW1pdHNfcGM4X3BsdXNfcmVzaWRlbmNpZXMo bXNyX2ZkKTsKPiAgfQo+ICAKPiAgc3RhdGljIHVpbnQ2NF90IGdldF9yZXNpZGVuY3kodWludDMy X3QgdHlwZSkKPiBAQCAtNzU1LDIxICs3NDAsNiBAQCBzdGF0aWMgdm9pZCBzZXR1cF9wYzgodm9p ZCkKPiAgCWhhc19wYzggPSB0cnVlOwo+ICB9Cj4gIAo+IC1zdGF0aWMgYm9vbCBkbWNfbG9hZGVk KHZvaWQpCj4gLXsKPiAtCWNoYXIgYnVmWzE1XTsKPiAtCWludCBsZW47Cj4gLQo+IC0JbGVuID0g aWd0X3N5c2ZzX3JlYWQoZGVidWdmcywgImk5MTVfZG1jX2luZm8iLCBidWYsIHNpemVvZihidWYp IC0gMSk7Cj4gLQlpZiAobGVuIDwgMCkKPiAtCSAgICByZXR1cm4gdHJ1ZTsgLyogbm8gQ1NSIHN1 cHBvcnQsIG5vIERNQyByZXF1aXJlbWVudCAqLwo+IC0KPiAtCWJ1ZltsZW5dID0gJ1wwJzsKPiAt Cj4gLQlpZ3RfaW5mbygiRE1DOiAlc1xuIiwgYnVmKTsKPiAtCXJldHVybiBzdHJzdHIoYnVmLCAi ZncgbG9hZGVkOiB5ZXMiKTsKPiAtfQo+IC0KPiAgc3RhdGljIHZvaWQgZHVtcF9maWxlKGludCBk aXIsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQo+ICB7Cj4gIAljaGFyICpjb250ZW50czsKPiBAQCAt Nzk2LDcgKzc2Niw3IEBAIHN0YXRpYyBib29sIHNldHVwX2Vudmlyb25tZW50KHZvaWQpCj4gIAo+ ICAJaW5pdF9tb2RlX3NldF9kYXRhKCZtc19kYXRhKTsKPiAgCj4gLQlwbV9kYXRhID0gaWd0X3Bt X2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOwo+ICsJaWd0X3BtX2VuYWJsZV9z YXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOwo+ICAKPiAgCWhhc19ydW50aW1lX3BtID0gaWd0 X3NldHVwX3J1bnRpbWVfcG0oKTsKPiAgCXNldHVwX3BjOCgpOwo+IEBAIC04MDQsNyArNzc0LDcg QEAgc3RhdGljIGJvb2wgc2V0dXBfZW52aXJvbm1lbnQodm9pZCkKPiAgCWlndF9pbmZvKCJSdW50 aW1lIFBNIHN1cHBvcnQ6ICVkXG4iLCBoYXNfcnVudGltZV9wbSk7Cj4gIAlpZ3RfaW5mbygiUEM4 IHJlc2lkZW5jeSBzdXBwb3J0OiAlZFxuIiwgaGFzX3BjOCk7Cj4gIAlpZ3RfcmVxdWlyZShoYXNf cnVudGltZV9wbSk7Cj4gLQlpZ3RfcmVxdWlyZShkbWNfbG9hZGVkKCkpOwo+ICsJaWd0X3JlcXVp cmUoaWd0X3BtX2RtY19sb2FkZWQoZGVidWdmcykpOwo+ICAKPiAgb3V0Ogo+ICAJZGlzYWJsZV9h bGxfc2NyZWVucygmbXNfZGF0YSk7Cj4gQEAgLTgyMSw4ICs3OTEsNyBAQCBzdGF0aWMgdm9pZCB0 ZWFyZG93bl9lbnZpcm9ubWVudCh2b2lkKQo+ICAKPiAgCWlndF9yZXN0b3JlX3J1bnRpbWVfcG0o KTsKPiAgCj4gLQlpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudChwbV9k YXRhKTsKPiAtCWZyZWUocG1fZGF0YSk7Cj4gKwlpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93 ZXJfbWFuYWdlbWVudCgpOwo+ICAKPiAgCWZpbmlfbW9kZV9zZXRfZGF0YSgmbXNfZGF0YSk7Cj4g IAo+IC0tIAo+IDIuMjEuMAo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1k ZXY=