From mboxrd@z Thu Jan 1 00:00:00 1970 From: Patchwork Subject: =?utf-8?q?=E2=9C=97_Fi=2ECI=2ECHECKPATCH=3A_warning_f?= =?utf-8?q?or_i915_vgpu_PV_to_improve_vgpu_performance?= Date: Tue, 23 Jul 2019 03:14:02 -0000 Message-ID: <20190723031402.5095.44663@emeril.freedesktop.org> References: <1563881524-147440-1-git-send-email-xiaolin.zhang@intel.com> Reply-To: intel-gfx@lists.freedesktop.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1563881524-147440-1-git-send-email-xiaolin.zhang@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Xiaolin Zhang Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org PT0gU2VyaWVzIERldGFpbHMgPT0KClNlcmllczogaTkxNSB2Z3B1IFBWIHRvIGltcHJvdmUgdmdw dSBwZXJmb3JtYW5jZQpVUkwgICA6IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9z ZXJpZXMvNjQwNDEvClN0YXRlIDogd2FybmluZwoKPT0gU3VtbWFyeSA9PQoKJCBkaW0gY2hlY2tw YXRjaCBvcmlnaW4vZHJtLXRpcAo5NjZkOTQ2NGZlZWQgZHJtL2k5MTU6IGludHJvZHVjZWQgdmdw dSBwdiBjYXBhYmlsaXR5Ci06OTE6IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25t ZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiM5MTogRklMRTogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV92Z3B1LmM6MTA1OgorCURSTV9JTkZPKCJWaXJ0dWFsIEdQVSBmb3IgSW50 ZWwgR1ZULWcgZGV0ZWN0ZWQgd2l0aCBwdl9jYXBzIDB4JXguXG4iLAorCQkJZGV2X3ByaXYtPnZn cHUucHZfY2Fwcyk7CgotOjExNTogQ0hFQ0s6UEFSRU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1l bnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzExNTogRklMRTogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV92Z3B1LmM6MzIzOgorYm9vbCBpbnRlbF92Z3B1X2NoZWNrX3B2X2NhcHMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQl2b2lkIF9faW9tZW0gKnNoYXJl ZF9hcmVhKQoKLToxNTM6IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNo b3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiMxNTM6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfdmdwdS5oOjU3OgorYm9vbCBpbnRlbF92Z3B1X2NoZWNrX3B2X2NhcHMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQl2b2lkIF9faW9tZW0gKnNoYXJlZF9hcmVh KTsKCnRvdGFsOiAwIGVycm9ycywgMCB3YXJuaW5ncywgMyBjaGVja3MsIDEwMCBsaW5lcyBjaGVj a2VkCjc1YWE0OTYxN2U4YyBkcm0vaTkxNTogdmdwdSBzaGFyZWQgbWVtb3J5IHNldHVwIGZvciBw diBvcHRpbWl6YXRpb24KLToxMDE6IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25t ZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiMxMDE6IEZJTEU6IGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdmdwdS5jOjMyMDoKK3N0YXRpYyBpbnQgaW50ZWxfdmdwdV9zZXR1cF9z aGFyZWRfcGFnZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCXZvaWQgX19p b21lbSAqc2hhcmVkX2FyZWEpCgotOjE1OTogQ0hFQ0s6QUxMT0NfU0laRU9GX1NUUlVDVDogUHJl ZmVyIGt6YWxsb2Moc2l6ZW9mKCpwdikuLi4pIG92ZXIga3phbGxvYyhzaXplb2Yoc3RydWN0IGk5 MTVfdmlydHVhbF9ncHVfcHYpLi4uKQojMTU5OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3ZncHUuYzozNzg6CisJcHYgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaTkxNV92aXJ0dWFs X2dwdV9wdiksIEdGUF9LRVJORUwpOwoKdG90YWw6IDAgZXJyb3JzLCAwIHdhcm5pbmdzLCAyIGNo ZWNrcywgMTU4IGxpbmVzIGNoZWNrZWQKYWJkN2FjOGViNDZhIGRybS9pOTE1OiB2Z3B1IHB2IGNv bW1hbmQgYnVmZmVyIHN1cHBvcnQKLTo1MTogQ0hFQ0s6UEFSRU5USEVTSVNfQUxJR05NRU5UOiBB bGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzUxOiBGSUxFOiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYzozMzM6CitzdGF0aWMgaW50IHdhaXRfZm9yX2Rlc2Nf dXBkYXRlKHN0cnVjdCB2Z3B1X3B2X2N0X2J1ZmZlcl9kZXNjICpkZXNjLAorCQl1MzIgZmVuY2Us IHUzMiAqc3RhdHVzKQoKLTo2MzogQ0hFQ0s6UEFSRU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1l bnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzYzOiBGSUxFOiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3ZncHUuYzozNDU6CisJCURSTV9FUlJPUigiQ1Q6IGZlbmNlICV1IGZhaWxl ZDsgcmVwb3J0ZWQgZmVuY2U9JXVcbiIsCisJCQkJZmVuY2UsIGRlc2MtPmZlbmNlKTsKCi06ODg6 IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVu IHBhcmVudGhlc2lzCiM4ODogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmM6 MzcwOgorc3RhdGljIGludCBwdl9jb21tYW5kX2J1ZmZlcl93cml0ZShzdHJ1Y3QgaTkxNV92aXJ0 dWFsX2dwdV9wdiAqcHYsCisJCWNvbnN0IHUzMiAqYWN0aW9uLCB1MzIgbGVuIC8qIGluIGR3b3Jk cyAqLywgdTMyIGZlbmNlKQoKLToxNTE6IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxp Z25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiMxNTE6IEZJTEU6IGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jOjQzMzoKK3N0YXRpYyBpbnQgcHZfc2VuZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCWNvbnN0IHUzMiAqYWN0aW9uLCB1MzIgbGVu LCB1MzIgKnN0YXR1cykKCi06MTg2OiBDSEVDSzpPUEVOX0VOREVEX0xJTkU6IExpbmVzIHNob3Vs ZCBub3QgZW5kIHdpdGggYSAnKCcKIzE4NjogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV92Z3B1LmM6NDY4Ogorc3RhdGljIGludCBpbnRlbF92Z3B1X3B2X3NlbmRfY29tbWFuZF9idWZm ZXIoCgotOjIwMzogQ0hFQ0s6UEFSRU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1lbnQgc2hvdWxk IG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzIwMzogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV92Z3B1LmM6NDg1OgorCQlEUk1fRVJST1IoIlBWOiBzZW5kIGFjdGlvbiAlI3ggcmV0dXJu ZWQgJWQgKCUjeClcbiIsCisJCQkJYWN0aW9uWzBdLCByZXQsIHJldCk7CgotOjIyNjogQ0hFQ0s6 U1BBQ0lORzogc3BhY2VzIHByZWZlcnJlZCBhcm91bmQgdGhhdCAnLycgKGN0eDpWeFYpCiMyMjY6 IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jOjU3MzoKKwlwdi0+Y3RiLmRl c2MtPnNpemUgPSBQQUdFX1NJWkUvMjsKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CgotOjI0NTogQ0hFQ0s6U1BBQ0lORzogc3BhY2VzIHByZWZlcnJlZCBhcm91bmQgdGhhdCAnLycg KGN0eDpWeFYpCiMyNDU6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oOjMy OgorI2RlZmluZSBQVl9ERVNDX09GRgkJKFBBR0VfU0laRS80KQogICAgICAgICAgICAgICAgICAg IAkJICAgICAgICAgIF4KCi06MjQ2OiBDSEVDSzpTUEFDSU5HOiBzcGFjZXMgcHJlZmVycmVkIGFy b3VuZCB0aGF0ICcvJyAoY3R4OlZ4VikKIzI0NjogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV92Z3B1Lmg6MzM6CisjZGVmaW5lIFBWX0NNRF9PRkYJCShQQUdFX1NJWkUvMikKICAgICAg ICAgICAgICAgICAgIAkJICAgICAgICAgIF4KCi06MzIzOiBDSEVDSzpQQVJFTlRIRVNJU19BTElH Tk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwojMzIzOiBGSUxF OiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaDoxMzA6CitpbnRlbF92Z3B1X3B2X3Nl bmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQl1MzIgKmFjdGlvbiwgdTMy IGxlbikKCnRvdGFsOiAwIGVycm9ycywgMCB3YXJuaW5ncywgMTAgY2hlY2tzLCAyOTkgbGluZXMg Y2hlY2tlZApiYzE4ZjExZDg4M2IgZHJtL2k5MTU6IHZncHUgcHBndHQgdXBkYXRlIHB2IG9wdGlt aXphdGlvbgotOjQyOiBDSEVDSzpMT0dJQ0FMX0NPTlRJTlVBVElPTlM6IExvZ2ljYWwgY29udGlu dWF0aW9ucyBzaG91bGQgYmUgb24gdGhlIHByZXZpb3VzIGxpbmUKIzQyOiBGSUxFOiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jOjE0MjM6CisJaWYgKChpbnRlbF92Z3B1X2FjdGl2ZShk ZXZfcHJpdikgJiYgIWludGVsX3ZncHVfaGFzX2h1Z2VfZ3R0KGRldl9wcml2KSkKKwkJfHwgaW50 ZWxfdmdwdV9lbmFibGVkX3B2X2NhcHMoZGV2X3ByaXYsIFBWX1BQR1RUX1VQREFURSkpCgotOjU2 OiBDSEVDSzpQQVJFTlRIRVNJU19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3Bl biBwYXJlbnRoZXNpcwojNTY6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jOjEwMDE6Cit2b2lkIGdlbjhfcHBndHRfY2xlYXIoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0sCiAJCQkgICAgIHU2NCBzdGFydCwgdTY0IGxlbmd0aCkKCi06NjU6IENIRUNLOlBBUkVO VEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lz CiM2NTogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmM6MTEwODoKK2lu dCBnZW44X3BwZ3R0X2FsbG9jKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCQkJICAg IHU2NCBzdGFydCwgdTY0IGxlbmd0aCkKCi06NzQ6IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVO VDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiM3NDogRklMRTogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmM6MTMyMToKK3ZvaWQgZ2VuOF9wcGd0dF9p bnNlcnRfNGx2bChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJCQkgICBzdHJ1Y3Qg aTkxNV92bWEgKnZtYSwKCi06OTg6IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25t ZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiM5ODogRklMRTogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0Lmg6NTgyOgordm9pZCBnZW44X3BwZ3R0X2NsZWFyKHN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAorCQl1NjQgc3RhcnQsIHU2NCBsZW5ndGgpOwoKLTox MDA6IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBv cGVuIHBhcmVudGhlc2lzCiMxMDA6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5oOjU4NDoKK3ZvaWQgZ2VuOF9wcGd0dF9pbnNlcnRfNGx2bChzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSwKKwkJc3RydWN0IGk5MTVfdm1hICp2bWEsCgotOjEwMzogQ0hFQ0s6UEFS RU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVz aXMKIzEwMzogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0Lmg6NTg3Ogor aW50IGdlbjhfcHBndHRfYWxsb2Moc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCisJCXU2 NCBzdGFydCwgdTY0IGxlbmd0aCk7CgotOjEyNzogQ0hFQ0s6UEFSRU5USEVTSVNfQUxJR05NRU5U OiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzEyNzogRklMRTogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmM6MzIwOgorc3RhdGljIGludCB2Z3B1X3BwZ3R0 X3B2X3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCXUzMiBhY3Rp b24sIHU2NCBwZHAsIHU2NCBzdGFydCwgdTY0IGxlbmd0aCwgdTMyIGNhY2hlX2xldmVsKQoKLTox NDQ6IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBv cGVuIHBhcmVudGhlc2lzCiMxNDQ6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdw dS5jOjMzNzoKK3N0YXRpYyB2b2lkIGdlbjhfcHBndHRfY2xlYXJfNGx2bF9wdihzdHJ1Y3QgaTkx NV9hZGRyZXNzX3NwYWNlICp2bSwKKwkJdTY0IHN0YXJ0LCB1NjQgbGVuZ3RoKQoKLToxNTE6IENI RUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBh cmVudGhlc2lzCiMxNTE6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jOjM0 NDoKKwl2Z3B1X3BwZ3R0X3B2X3VwZGF0ZShkZXZfcHJpdiwgUFZfQUNUSU9OX1BQR1RUX0w0X0NM RUFSLAorCQlweF9kbWEocHBndHQtPnBkKSwgc3RhcnQsIGxlbmd0aCwgMCk7CgotOjE1NTogQ0hF Q0s6UEFSRU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFy ZW50aGVzaXMKIzE1NTogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmM6MzQ4 Ogorc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9pbnNlcnRfNGx2bF9wdihzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSwKKwkJc3RydWN0IGk5MTVfdm1hICp2bWEsCgotOjE2NTogQ0hFQ0s6UEFS RU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVz aXMKIzE2NTogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmM6MzU4OgorCXZn cHVfcHBndHRfcHZfdXBkYXRlKGRldl9wcml2LCBQVl9BQ1RJT05fUFBHVFRfTDRfSU5TRVJULAor CQlweF9kbWEocHBndHQtPnBkKSwgc3RhcnQsIGxlbmd0aCwgY2FjaGVfbGV2ZWwpOwoKLToxNjk6 IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVu IHBhcmVudGhlc2lzCiMxNjk6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5j OjM2MjoKK3N0YXRpYyBpbnQgZ2VuOF9wcGd0dF9hbGxvY180bHZsX3B2KHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtLAorCQl1NjQgc3RhcnQsIHU2NCBsZW5ndGgpCgotOjE4NzogQ0hFQ0s6 UEFSRU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50 aGVzaXMKIzE4NzogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmM6MzgwOgor dm9pZCBpbnRlbF92Z3B1X2NvbmZpZ19wdl9jYXBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKKwkJZW51bSBwdl9jYXBzIGNhcCwgdm9pZCAqZGF0YSkKCi06MjM3OiBDSEVDSzpQ QVJFTlRIRVNJU19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRo ZXNpcwojMjM3OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaDoxMzk6Citp bnRlbF92Z3B1X2VuYWJsZWRfcHZfY2FwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCisJCWVudW0gcHZfY2FwcyBjYXApCgotOjI0MDogQ0hFQ0s6TE9HSUNBTF9DT05USU5VQVRJ T05TOiBMb2dpY2FsIGNvbnRpbnVhdGlvbnMgc2hvdWxkIGJlIG9uIHRoZSBwcmV2aW91cyBsaW5l CiMyNDA6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oOjE0MjoKKwlyZXR1 cm4gKGRldl9wcml2LT52Z3B1LmFjdGl2ZSkgJiYgaW50ZWxfdmdwdV9oYXNfcHZfY2FwcyhkZXZf cHJpdikKKwkJCSYmIChkZXZfcHJpdi0+dmdwdS5wdl9jYXBzICYgY2FwKTsKCi06MjUxOiBDSEVD SzpQQVJFTlRIRVNJU19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJl bnRoZXNpcwojMjUxOiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaDoxNjU6 Cit2b2lkIGludGVsX3ZncHVfY29uZmlnX3B2X2NhcHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAorCQllbnVtIHB2X2NhcHMgY2FwLCB2b2lkICpkYXRhKTsKCnRvdGFsOiAwIGVy cm9ycywgMCB3YXJuaW5ncywgMTcgY2hlY2tzLCAxOTAgbGluZXMgY2hlY2tlZAoyMjMxODE5ODQ5 YmIgZHJtL2k5MTU6IHZncHUgY29udGV4dCBzdWJtaXNzaW9uIHB2IG9wdGltaXphdGlvbgotOjEz NjogQ0hFQ0s6U1BBQ0lORzogc3BhY2VzIHByZWZlcnJlZCBhcm91bmQgdGhhdCAnLycgKGN0eDpW eFYpCiMxMzY6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oOjMzOgorI2Rl ZmluZSBQVl9FTFNQX09GRgkJKFBBR0VfU0laRS84KQogICAgICAgICAgICAgICAgICAgIAkJICAg ICAgICAgIF4KCi06MTY0OiBDSEVDSzpVTkNPTU1FTlRFRF9ERUZJTklUSU9OOiBzcGlubG9ja190 IGRlZmluaXRpb24gd2l0aG91dCBjb21tZW50CiMxNjQ6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfdmdwdS5oOjY3OgorCXNwaW5sb2NrX3QgbG9jazsKCi06MTg4OiBXQVJOSU5HOkZJ TEVfUEFUSF9DSEFOR0VTOiBhZGRlZCwgbW92ZWQgb3IgZGVsZXRlZCBmaWxlKHMpLCBkb2VzIE1B SU5UQUlORVJTIG5lZWQgdXBkYXRpbmc/CiMxODg6IApuZXcgZmlsZSBtb2RlIDEwMDY0NAoKLToy MDg6IENIRUNLOlNQQUNJTkc6IHNwYWNlcyBwcmVmZXJyZWQgYXJvdW5kIHRoYXQgJysnIChjdHg6 VnhWKQojMjA4OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wdl9zdWJtaXNzaW9u LmM6MTY6CisJcmVnX3N0YXRlW0NUWF9SSU5HX1RBSUwrMV0gPSBpbnRlbF9yaW5nX3NldF90YWls KHJxLT5yaW5nLCBycS0+dGFpbCk7CiAJICAgICAgICAgICAgICAgICAgICAgICBeCgotOjIxOTog Q0hFQ0s6UEFSRU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4g cGFyZW50aGVzaXMKIzIxOTogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHZfc3Vi bWlzc2lvbi5jOjI3Ogorc3RhdGljIHZvaWQgcHZfc3VibWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwKKwkgICAgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqKm91dCwKCi06MjQ4OiBD SEVDSzpCUkFDRVM6IEJsYW5rIGxpbmVzIGFyZW4ndCBuZWNlc3NhcnkgYmVmb3JlIGEgY2xvc2Ug YnJhY2UgJ30nCiMyNDg6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3B2X3N1Ym1p c3Npb24uYzo1NjoKKworfQoKLTozMTY6IENIRUNLOkxJTkVfU1BBQ0lORzogUGxlYXNlIGRvbid0 IHVzZSBtdWx0aXBsZSBibGFuayBsaW5lcwojMzE2OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wdl9zdWJtaXNzaW9uLmM6MTI0OgorCisKCnRvdGFsOiAwIGVycm9ycywgMSB3YXJu aW5ncywgNiBjaGVja3MsIDMxMSBsaW5lcyBjaGVja2VkCjY0YzE4ZTdhNzU3NyBkcm0vaTkxNS9n dnQ6IEdWVGcgaGFuZGxlIHB2X2NhcHMgUFZJTkZPIHJlZ2lzdGVyCmE3NWQ5ODAyODc0ZSBkcm0v aTkxNS9ndnQ6IEdWVGcgaGFuZGxlIHNoYXJlZF9wYWdlIHNldHVwCi06NTE6IENIRUNLOlBBUkVO VEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lz CiM1MTogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oOjY5MzoKK2ludCBpbnRl bF9ndnRfcmVhZF9zaGFyZWRfcGFnZShzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwKKwkJdW5zaWdu ZWQgaW50IG9mZnNldCwgdm9pZCAqYnVmLCB1bnNpZ25lZCBsb25nIGxlbik7CgotOjUzOiBDSEVD SzpQQVJFTlRIRVNJU19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJl bnRoZXNpcwojNTM6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaDo2OTU6Citp bnQgaW50ZWxfZ3Z0X3dyaXRlX3NoYXJlZF9wYWdlKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LAor CQl1bnNpZ25lZCBpbnQgb2Zmc2V0LCB2b2lkICpidWYsIHVuc2lnbmVkIGxvbmcgbGVuKTsKCi06 MTMxOiBDSEVDSzpQQVJFTlRIRVNJU19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2gg b3BlbiBwYXJlbnRoZXNpcwojMTMxOiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvdmdw dS5jOjYwMzoKK2ludCBpbnRlbF9ndnRfcmVhZF9zaGFyZWRfcGFnZShzdHJ1Y3QgaW50ZWxfdmdw dSAqdmdwdSwKKwkJdW5zaWduZWQgaW50IG9mZnNldCwgdm9pZCAqYnVmLCB1bnNpZ25lZCBsb25n IGxlbikKCi06MTUwOiBDSEVDSzpQQVJFTlRIRVNJU19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91 bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwojMTUwOiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvdmdwdS5jOjYyMjoKK2ludCBpbnRlbF9ndnRfd3JpdGVfc2hhcmVkX3BhZ2Uoc3RydWN0 IGludGVsX3ZncHUgKnZncHUsCisJCXVuc2lnbmVkIGludCBvZmZzZXQsIHZvaWQgKmJ1ZiwgdW5z aWduZWQgbG9uZyBsZW4pCgp0b3RhbDogMCBlcnJvcnMsIDAgd2FybmluZ3MsIDQgY2hlY2tzLCAx MjIgbGluZXMgY2hlY2tlZAowNDBkMDJlNjU5OGYgZHJtL2k5MTUvZ3Z0OiBHVlRnIHN1cHBvcnQg cHBndHQgcHYgb3B0aW1pemF0aW9uCi06ODM6IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDog QWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiM4MzogRklMRTogZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L2d0dC5jOjE4MzY6CisJCWd2dF92Z3B1X2VycigiZmFpbCB0byBj cmVhdGUgcHBndHQgZm9yIHBkcCAweCVsbHhcbiIsCisJCQkJcHhfZG1hKG1tLT5wcGd0dC0+cGQp KTsKCi06MTIyOiBDSEVDSzpNQUNST19BUkdfUkVVU0U6IE1hY3JvIGFyZ3VtZW50IHJldXNlICdl bmQnIC0gcG9zc2libGUgc2lkZS1lZmZlY3RzPwojMTIyOiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvZ3R0LmM6Mjg3NzoKKyNkZWZpbmUgcG1sNF9hZGRyX2VuZChhZGRyLCBlbmQpCQkJ CQlcCisoewl1bnNpZ25lZCBsb25nIF9fYm91bmRhcnkgPSBcCisJCQkoKGFkZHIpICsgR0VOOF9Q TUw0RV9TSVpFKSAmIEdFTjhfUE1MNEVfU0laRV9NQVNLOyBcCisJKF9fYm91bmRhcnkgPCAoZW5k KSkgPyBfX2JvdW5kYXJ5IDogKGVuZCk7CQlcCit9KQoKLToxMjg6IENIRUNLOk1BQ1JPX0FSR19S RVVTRTogTWFjcm8gYXJndW1lbnQgcmV1c2UgJ2VuZCcgLSBwb3NzaWJsZSBzaWRlLWVmZmVjdHM/ CiMxMjg6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndHQuYzoyODgzOgorI2RlZmlu ZSBwZHBfYWRkcl9lbmQoYWRkciwgZW5kKQkJCQkJCVwKKyh7CXVuc2lnbmVkIGxvbmcgX19ib3Vu ZGFyeSA9IFwKKwkJCSgoYWRkcikgKyBHRU44X1BEUEVfU0laRSkgJiBHRU44X1BEUEVfU0laRV9N QVNLOyBcCisJKF9fYm91bmRhcnkgPCAoZW5kKSkgPyBfX2JvdW5kYXJ5IDogKGVuZCk7CQlcCit9 KQoKLToxMzQ6IENIRUNLOk1BQ1JPX0FSR19SRVVTRTogTWFjcm8gYXJndW1lbnQgcmV1c2UgJ2Vu ZCcgLSBwb3NzaWJsZSBzaWRlLWVmZmVjdHM/CiMxMzQ6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d2dC9ndHQuYzoyODg5OgorI2RlZmluZSBwZF9hZGRyX2VuZChhZGRyLCBlbmQpCQkJCQkJ XAorKHsJdW5zaWduZWQgbG9uZyBfX2JvdW5kYXJ5ID0gXAorCQkJKChhZGRyKSArIEdFTjhfUERF X1NJWkUpICYgR0VOOF9QREVfU0laRV9NQVNLOwlcCisJKF9fYm91bmRhcnkgPCAoZW5kKSkgPyBf X2JvdW5kYXJ5IDogKGVuZCk7CQlcCit9KQoKLToxNDc6IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdO TUVOVDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiMxNDc6IEZJTEU6 IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndHQuYzoyOTAyOgorc3RhdGljIGludCB3YWxrX3B0 X3JhbmdlKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LCB1NjQgcHQsCisJCQkJdTY0IHN0YXJ0LCB1 NjQgZW5kLCBzdHJ1Y3QgcHBndHRfd2FsayAqd2FsaykKCi06MTYwOiBDSEVDSzpQQVJFTlRIRVNJ U19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwojMTYw OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3R0LmM6MjkxNToKKwlyZXQgPSBpbnRl bF9ndnRfaHlwZXJ2aXNvcl9yZWFkX2dwYSh2Z3B1LAorCQkocHQgJiBQQUdFX01BU0spICsgKHN0 YXJ0X2luZGV4IDw8IGluZm8tPmd0dF9lbnRyeV9zaXplX3NoaWZ0KSwKCi06MTgxOiBDSEVDSzpM SU5FX1NQQUNJTkc6IFBsZWFzZSBkb24ndCB1c2UgbXVsdGlwbGUgYmxhbmsgbGluZXMKIzE4MTog RklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d0dC5jOjI5MzY6CisKKwoKLToxODM6IENI RUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBh cmVudGhlc2lzCiMxODM6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndHQuYzoyOTM4 Ogorc3RhdGljIGludCB3YWxrX3BkX3JhbmdlKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LCB1NjQg cGQsCisJCQkJdTY0IHN0YXJ0LCB1NjQgZW5kLCBzdHJ1Y3QgcHBndHRfd2FsayAqd2FsaykKCi06 MTk1OiBDSEVDSzpQQVJFTlRIRVNJU19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2gg b3BlbiBwYXJlbnRoZXNpcwojMTk1OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3R0 LmM6Mjk1MDoKKwkJcmV0ID0gaW50ZWxfZ3Z0X2h5cGVydmlzb3JfcmVhZF9ncGEodmdwdSwKKwkJ CShwZCAmIFBBR0VfTUFTSykgKyAoaW5kZXggPDwKCi06MjA4OiBDSEVDSzpMSU5FX1NQQUNJTkc6 IFBsZWFzZSBkb24ndCB1c2UgbXVsdGlwbGUgYmxhbmsgbGluZXMKIzIwODogRklMRTogZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L2d0dC5jOjI5NjM6CisKKwoKLToyMTA6IENIRUNLOlBBUkVOVEhF U0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiMy MTA6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndHQuYzoyOTY1Ogorc3RhdGljIGlu dCB3YWxrX3BkcF9yYW5nZShzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwgdTY0IHBkcCwKKwkJCQkg IHU2NCBzdGFydCwgdTY0IGVuZCwgc3RydWN0IHBwZ3R0X3dhbGsgKndhbGspCgotOjIyMjogQ0hF Q0s6UEFSRU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFy ZW50aGVzaXMKIzIyMjogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d0dC5jOjI5Nzc6 CisJCXJldCA9IGludGVsX2d2dF9oeXBlcnZpc29yX3JlYWRfZ3BhKHZncHUsCisJCQkocGRwICYg UEFHRV9NQVNLKSArIChpbmRleCA8PAoKLToyMzQ6IENIRUNLOkxJTkVfU1BBQ0lORzogUGxlYXNl IGRvbid0IHVzZSBtdWx0aXBsZSBibGFuayBsaW5lcwojMjM0OiBGSUxFOiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvZ3R0LmM6Mjk4OToKKworCgotOjIzNjogQ0hFQ0s6UEFSRU5USEVTSVNfQUxJ R05NRU5UOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzIzNjogRklM RTogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d0dC5jOjI5OTE6CitzdGF0aWMgaW50IHdhbGtf cG1sNF9yYW5nZShzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwgdTY0IHBtbDQsCisJCQkJdTY0IHN0 YXJ0LCB1NjQgZW5kLCBzdHJ1Y3QgcHBndHRfd2FsayAqd2FsaykKCi06MjQ3OiBDSEVDSzpQQVJF TlRIRVNJU19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNp cwojMjQ3OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3R0LmM6MzAwMjoKKwkJcmV0 ID0gaW50ZWxfZ3Z0X2h5cGVydmlzb3JfcmVhZF9ncGEodmdwdSwKKwkJCShwbWw0ICYgUEFHRV9N QVNLKSArIChpbmRleCA8PAoKLToyNjA6IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxp Z25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiMyNjA6IEZJTEU6IGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9ndHQuYzozMDE1Ogorc3RhdGljIGludCBpbnRlbF92Z3B1X3B2X3Bw Z3R0X2luc2VydF80bHZsKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LAorCQlzdHJ1Y3QgaW50ZWxf dmdwdV9tbSAqbW0sCgotOjI3ODogQ0hFQ0s6UEFSRU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1l bnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzI3ODogRklMRTogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2d0dC5jOjMwMzM6CisJd2Fsay5tZm5zID0ga21hbGxvY19hcnJheShudW1f cGFnZXMsCisJCQlzaXplb2YodW5zaWduZWQgbG9uZyksIEdGUF9LRVJORUwpOwoKLTozMjM6IENI RUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBh cmVudGhlc2lzCiMzMjM6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndHQuYzozMDc4 OgoraW50IGludGVsX3ZncHVfaGFuZGxlX3B2X3BwZ3R0X3VwZGF0ZShzdHJ1Y3QgaW50ZWxfdmdw dSAqdmdwdSwKKwkJdTMyIGFjdGlvbiwgc3RydWN0IHB2X3BwZ3R0X3VwZGF0ZSAqcHZfcHBndHQp CgotOjM1NTogQ0hFQ0s6UEFSRU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1lbnQgc2hvdWxkIG1h dGNoIG9wZW4gcGFyZW50aGVzaXMKIzM1NTogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L2d0dC5jOjMxMTA6CisJCXJldCA9IGludGVsX3ZncHVfcHZfcHBndHRfaW5zZXJ0XzRsdmwodmdw dSwgbW0sCisJCQkJcGRwLCBzdGFydCwgbGVuZ3RoLCBjYWNoZV9sZXZlbCk7CgotOjM5NDogQ0hF Q0s6UEFSRU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFy ZW50aGVzaXMKIzM5NDogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d0dC5oOjI5MToK K2ludCBpbnRlbF92Z3B1X2hhbmRsZV9wdl9wcGd0dF91cGRhdGUoc3RydWN0IGludGVsX3ZncHUg KnZncHUsCisJCXUzMiBhY3Rpb24sIHN0cnVjdCBwdl9wcGd0dF91cGRhdGUgKnB2X3BwZ3R0KTsK Ci06NDA0OiBDSEVDSzpNQUNST19BUkdfUkVVU0U6IE1hY3JvIGFyZ3VtZW50IHJldXNlICd2Z3B1 JyAtIHBvc3NpYmxlIHNpZGUtZWZmZWN0cz8KIzQwNDogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Z0L2d2dC5oOjU2OgorI2RlZmluZSBWR1BVX1BWQ0FQKHZncHUsIGNhcCkJXAorCSgodmdw dV92cmVnX3QodmdwdSwgdmd0aWZfcmVnKHB2X2NhcHMpKSAmIChjYXApKSBcCisJCQkmJiB2Z3B1 LT5zaGFyZWRfcGFnZV9lbmFibGVkKQoKLTo0MDY6IENIRUNLOkxPR0lDQUxfQ09OVElOVUFUSU9O UzogTG9naWNhbCBjb250aW51YXRpb25zIHNob3VsZCBiZSBvbiB0aGUgcHJldmlvdXMgbGluZQoj NDA2OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0Lmg6NTg6CisJKCh2Z3B1X3Zy ZWdfdCh2Z3B1LCB2Z3RpZl9yZWcocHZfY2FwcykpICYgKGNhcCkpIFwKKwkJCSYmIHZncHUtPnNo YXJlZF9wYWdlX2VuYWJsZWQpCgotOjQzMDogQ0hFQ0s6UEFSRU5USEVTSVNfQUxJR05NRU5UOiBB bGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzQzMDogRklMRTogZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L2hhbmRsZXJzLmM6MTIyMzoKK3N0YXRpYyBpbnQgZmV0Y2hfcHZf Y29tbWFuZF9idWZmZXIoc3RydWN0IGludGVsX3ZncHUgKnZncHUsCisJCXN0cnVjdCB2Z3B1X3B2 X2N0X2J1ZmZlcl9kZXNjICpkZXNjLAoKLTo0NTE6IENIRUNLOlNQQUNJTkc6IHNwYWNlcyBwcmVm ZXJyZWQgYXJvdW5kIHRoYXQgJy8nIChjdHg6VnhWKQojNDUxOiBGSUxFOiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvaGFuZGxlcnMuYzoxMjQ0OgorCWhlYWQgPSBkZXNjLT5oZWFkLzQ7CiAJICAg ICAgICAgICAgICAgICBeCgotOjQ1MjogQ0hFQ0s6U1BBQ0lORzogc3BhY2VzIHByZWZlcnJlZCBh cm91bmQgdGhhdCAnLycgKGN0eDpWeFYpCiM0NTI6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9oYW5kbGVycy5jOjEyNDU6CisJdGFpbCA9IGRlc2MtPnRhaWwvNDsKIAkgICAgICAgICAg ICAgICAgIF4KCi06NDUzOiBDSEVDSzpTUEFDSU5HOiBzcGFjZXMgcHJlZmVycmVkIGFyb3VuZCB0 aGF0ICcvJyAoY3R4OlZ4VikKIzQ1MzogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2hh bmRsZXJzLmM6MTI0NjoKKwlzaXplID0gZGVzYy0+c2l6ZS80OwogCSAgICAgICAgICAgICAgICAg XgoKLTo0OTc6IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3VsZCBt YXRjaCBvcGVuIHBhcmVudGhlc2lzCiM0OTc6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9oYW5kbGVycy5jOjEyOTA6CisJCXJldCA9IGludGVsX2d2dF9yZWFkX3NoYXJlZF9wYWdlKHZn cHUsIG9mZiwgJmRhdGFbYXZhaWxdLAorCQkJCShsZW4gLSBhdmFpbCkgKiA0KTsKCi06NTM2OiBD SEVDSzpQQVJFTlRIRVNJU19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBw YXJlbnRoZXNpcwojNTM2OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaGFuZGxlcnMu YzoxMzI5OgorCXJldCA9IGludGVsX2d2dF93cml0ZV9zaGFyZWRfcGFnZSh2Z3B1LCBQVl9ERVND X09GRiwKKwkJCSZkZXNjLCBzaXplb2YoZGVzYykpOwoKdG90YWw6IDAgZXJyb3JzLCAwIHdhcm5p bmdzLCAyOCBjaGVja3MsIDUyMSBsaW5lcyBjaGVja2VkCjY3YmJjNTUwMjViZCBkcm0vaTkxNS9n dnQ6IEdWVGcgc3VwcG9ydCBjb250ZXh0IHN1Ym1pc3Npb24gcHYgb3B0aW1pemF0aW9uCi06NzI6 IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVu IHBhcmVudGhlc2lzCiM3MjogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2hhbmRsZXJz LmM6MTgyNjoKKwlpZiAoaW50ZWxfZ3Z0X3JlYWRfc2hhcmVkX3BhZ2UodmdwdSwgZGVzY19vZmYs CisJCQkmZXhlY2xpc3QtPmVsc3BfZHdvcmRzLmRhdGEsIDE2KSkKCi06OTM6IENIRUNLOlBBUkVO VEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lz CiM5MzogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2hhbmRsZXJzLmM6MTg1MDoKKwlp ZiAoVkdQVV9QVkNBUCh2Z3B1LCBQVl9TVUJNSVNTSU9OKSAmJgorCQkJZGF0YSA9PSBQVl9BQ1RJ T05fRUxTUF9TVUJNSVNTSU9OKQoKdG90YWw6IDAgZXJyb3JzLCAwIHdhcm5pbmdzLCAyIGNoZWNr cywgNjkgbGluZXMgY2hlY2tlZAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4