From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ilia Mirkin Subject: Re: [Nouveau] [RFC PATCH 6/8] nv50: add support for compute/graphics global performance counters Date: Thu, 25 Jun 2015 19:09:43 -0400 Message-ID: References: <1435006399-2088-1-git-send-email-samuel.pitoiset@gmail.com> <1435006399-2088-7-git-send-email-samuel.pitoiset@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1435006399-2088-7-git-send-email-samuel.pitoiset@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: mesa-dev-bounces@lists.freedesktop.org Sender: "mesa-dev" To: Samuel Pitoiset Cc: "nouveau@lists.freedesktop.org" , "mesa-dev@lists.freedesktop.org" List-Id: nouveau.vger.kernel.org V2hhdCdzIHdpdGggdGhlIFwlJ3MgZXZlcnl3aGVyZT8KCk9uIE1vbiwgSnVuIDIyLCAyMDE1IGF0 IDQ6NTMgUE0sIFNhbXVlbCBQaXRvaXNldAo8c2FtdWVsLnBpdG9pc2V0QGdtYWlsLmNvbT4gd3Jv dGU6Cj4gVGhpcyBjb21taXQgYWRkcyBzdXBwb3J0IGZvciBib3RoIGNvbXB1dGUgYW5kIGdyYXBo aWNzIGdsb2JhbAo+IHBlcmZvcm1hbmNlIGNvdW50ZXJzIHdoaWNoIGhhdmUgYmVlbiByZXZlcnNl IGVuZ2luZWVyZWQgd2l0aAo+IENVUFRJIChMaW51eCkgYW5kIFBlcmZLaXQgKFdpbmRvd3MpLgo+ Cj4gQ3VycmVudGx5LCBvbmx5IG9uZSBxdWVyeSB0eXBlIGNhbiBiZSBtb25pdG9yZWQgYXQgdGhl IHNhbWUgdGltZSBiZWNhdXNlCj4gdGhlIEdhbGxpdW0ncyBIVUQgZG9lc24ndCBmaXQgcHJldHR5 IHdlbGwuIFRoaXMgd2lsbCBiZSBpbXByb3ZlZCBsYXRlci4KPgo+IFNpZ25lZC1vZmYtYnk6IFNh bXVlbCBQaXRvaXNldCA8c2FtdWVsLnBpdG9pc2V0QGdtYWlsLmNvbT4KPiAtLS0KPiAgc3JjL2dh bGxpdW0vZHJpdmVycy9ub3V2ZWF1L252NTAvbnY1MF9xdWVyeS5jICB8IDEwNTcgKysrKysrKysr KysrKysrKysrKysrKystCj4gIHNyYy9nYWxsaXVtL2RyaXZlcnMvbm91dmVhdS9udjUwL252NTBf c2NyZWVuLmggfCAgIDM1ICsKPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMDg3IGluc2VydGlvbnMoKyks IDUgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2 ZWF1L252NTAvbnY1MF9xdWVyeS5jIGIvc3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2ZWF1L252NTAv bnY1MF9xdWVyeS5jCj4gaW5kZXggMTE2MjExMC4uYjlkMjkxNCAxMDA2NDQKPiAtLS0gYS9zcmMv Z2FsbGl1bS9kcml2ZXJzL25vdXZlYXUvbnY1MC9udjUwX3F1ZXJ5LmMKPiArKysgYi9zcmMvZ2Fs bGl1bS9kcml2ZXJzL25vdXZlYXUvbnY1MC9udjUwX3F1ZXJ5LmMKPiBAQCAtMjcsNiArMjcsOCBA QAo+ICAjaW5jbHVkZSAibnY1MC9udjUwX2NvbnRleHQuaCIKPiAgI2luY2x1ZGUgIm52X29iamVj dC54bWwuaCIKPgo+ICsjaW5jbHVkZSAibm91dmVhdV9wZXJmbW9uLmgiCj4gKwo+ICAjZGVmaW5l IE5WNTBfUVVFUllfU1RBVEVfUkVBRFkgICAwCj4gICNkZWZpbmUgTlY1MF9RVUVSWV9TVEFURV9B Q1RJVkUgIDEKPiAgI2RlZmluZSBOVjUwX1FVRVJZX1NUQVRFX0VOREVEICAgMgo+IEBAIC01MSwx MCArNTMsMjUgQEAgc3RydWN0IG52NTBfcXVlcnkgewo+ICAgICBib29sZWFuIGlzNjRiaXQ7Cj4g ICAgIHN0cnVjdCBub3V2ZWF1X21tX2FsbG9jYXRpb24gKm1tOwo+ICAgICBzdHJ1Y3Qgbm91dmVh dV9mZW5jZSAqZmVuY2U7Cj4gKyAgIHN0cnVjdCBub3V2ZWF1X29iamVjdCAqcGVyZmRvbTsKPiAg fTsKPgo+ICAjZGVmaW5lIE5WNTBfUVVFUllfQUxMT0NfU1BBQ0UgMjU2Cj4KPiArI2lmZGVmIERF QlVHCj4gK3N0YXRpYyB2b2lkIG52NTBfaHdfcG1fZHVtcF9wZXJmZG9tKHN0cnVjdCBudmlmX3Bl cmZkb21fdjAgKmFyZ3MpOwo+ICsjZW5kaWYKPiArCj4gK3N0YXRpYyBib29sZWFuCj4gK252NTBf aHdfcG1fcXVlcnlfY3JlYXRlKHN0cnVjdCBudjUwX2NvbnRleHQgKiwgc3RydWN0IG52NTBfcXVl cnkgKik7Cj4gK3N0YXRpYyB2b2lkCj4gK252NTBfaHdfcG1fcXVlcnlfZGVzdHJveShzdHJ1Y3Qg bnY1MF9jb250ZXh0ICosIHN0cnVjdCBudjUwX3F1ZXJ5ICopOwo+ICtzdGF0aWMgYm9vbGVhbgo+ ICtudjUwX2h3X3BtX3F1ZXJ5X2JlZ2luKHN0cnVjdCBudjUwX2NvbnRleHQgKiwgc3RydWN0IG52 NTBfcXVlcnkgKik7Cj4gK3N0YXRpYyB2b2lkIG52NTBfaHdfcG1fcXVlcnlfZW5kKHN0cnVjdCBu djUwX2NvbnRleHQgKiwgc3RydWN0IG52NTBfcXVlcnkgKik7Cj4gK3N0YXRpYyBib29sZWFuIG52 NTBfaHdfcG1fcXVlcnlfcmVzdWx0KHN0cnVjdCBudjUwX2NvbnRleHQgKiwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG52NTBfcXVlcnkgKiwgYm9vbGVhbiwg dm9pZCAqKTsKPiArCj4gIHN0YXRpYyBJTkxJTkUgc3RydWN0IG52NTBfcXVlcnkgKgo+ICBudjUw X3F1ZXJ5KHN0cnVjdCBwaXBlX3F1ZXJ5ICpwaXBlKQo+ICB7Cj4gQEAgLTk2LDEyICsxMTMsMTgg QEAgbnY1MF9xdWVyeV9hbGxvY2F0ZShzdHJ1Y3QgbnY1MF9jb250ZXh0ICpudjUwLCBzdHJ1Y3Qg bnY1MF9xdWVyeSAqcSwgaW50IHNpemUpCj4gIHN0YXRpYyB2b2lkCj4gIG52NTBfcXVlcnlfZGVz dHJveShzdHJ1Y3QgcGlwZV9jb250ZXh0ICpwaXBlLCBzdHJ1Y3QgcGlwZV9xdWVyeSAqcHEpCj4g IHsKPiArICAgc3RydWN0IG52NTBfY29udGV4dCAqbnY1MCA9IG52NTBfY29udGV4dChwaXBlKTsK PiArICAgc3RydWN0IG52NTBfcXVlcnkgKnEgPSBudjUwX3F1ZXJ5KHBxKTsKPiArCj4gICAgIGlm ICghcHEpCj4gICAgICAgIHJldHVybjsKPgo+IC0gICBudjUwX3F1ZXJ5X2FsbG9jYXRlKG52NTBf Y29udGV4dChwaXBlKSwgbnY1MF9xdWVyeShwcSksIDApOwo+IC0gICBub3V2ZWF1X2ZlbmNlX3Jl ZihOVUxMLCAmbnY1MF9xdWVyeShwcSktPmZlbmNlKTsKPiAtICAgRlJFRShudjUwX3F1ZXJ5KHBx KSk7Cj4gKyAgIGlmICgocS0+dHlwZSA+PSBOVjUwX0hXX1BNX1FVRVJZKDApICYmIHEtPnR5cGUg PD0gTlY1MF9IV19QTV9RVUVSWV9MQVNUKSkKPiArICAgICAgbnY1MF9od19wbV9xdWVyeV9kZXN0 cm95KG52NTAsIHEpOwo+ICsKPiArICAgbnY1MF9xdWVyeV9hbGxvY2F0ZShudjUwLCBxLCAwKTsK PiArICAgbm91dmVhdV9mZW5jZV9yZWYoTlVMTCwgJnEtPmZlbmNlKTsKPiArICAgRlJFRShxKTsK PiAgfQo+Cj4gIHN0YXRpYyBzdHJ1Y3QgcGlwZV9xdWVyeSAqCj4gQEAgLTEzMCw2ICsxNTMsMTEg QEAgbnY1MF9xdWVyeV9jcmVhdGUoc3RydWN0IHBpcGVfY29udGV4dCAqcGlwZSwgdW5zaWduZWQg dHlwZSwgdW5zaWduZWQgaW5kZXgpCj4gICAgICAgIHEtPmRhdGEgLT0gMzIgLyBzaXplb2YoKnEt PmRhdGEpOyAvKiB3ZSBhZHZhbmNlIGJlZm9yZSBxdWVyeV9iZWdpbiAhICovCj4gICAgIH0KPgo+ ICsgICBpZiAoKHEtPnR5cGUgPj0gTlY1MF9IV19QTV9RVUVSWSgwKSAmJiBxLT50eXBlIDw9IE5W NTBfSFdfUE1fUVVFUllfTEFTVCkpIHsKPiArICAgICAgaWYgKCFudjUwX2h3X3BtX3F1ZXJ5X2Ny ZWF0ZShudjUwLCBxKSkKPiArICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gKyAgIH0KPiArCj4gICAg IHJldHVybiAoc3RydWN0IHBpcGVfcXVlcnkgKilxOwo+ICB9Cj4KPiBAQCAtMTU0LDYgKzE4Miw3 IEBAIG52NTBfcXVlcnlfYmVnaW4oc3RydWN0IHBpcGVfY29udGV4dCAqcGlwZSwgc3RydWN0IHBp cGVfcXVlcnkgKnBxKQo+ICAgICBzdHJ1Y3QgbnY1MF9jb250ZXh0ICpudjUwID0gbnY1MF9jb250 ZXh0KHBpcGUpOwo+ICAgICBzdHJ1Y3Qgbm91dmVhdV9wdXNoYnVmICpwdXNoID0gbnY1MC0+YmFz ZS5wdXNoYnVmOwo+ICAgICBzdHJ1Y3QgbnY1MF9xdWVyeSAqcSA9IG52NTBfcXVlcnkocHEpOwo+ ICsgICBib29sZWFuIHJldCA9IFRSVUU7Cj4KPiAgICAgaWYgKCFwcSkKPiAgICAgICAgcmV0dXJu IEZBTFNFOwo+IEBAIC0yMTEsMTAgKzI0MCwxMyBAQCBudjUwX3F1ZXJ5X2JlZ2luKHN0cnVjdCBw aXBlX2NvbnRleHQgKnBpcGUsIHN0cnVjdCBwaXBlX3F1ZXJ5ICpwcSkKPiAgICAgICAgbnY1MF9x dWVyeV9nZXQocHVzaCwgcSwgMHgxMCwgMHgwMDAwNTAwMik7Cj4gICAgICAgIGJyZWFrOwo+ICAg ICBkZWZhdWx0Ogo+ICsgICAgICBpZiAoKHEtPnR5cGUgPj0gTlY1MF9IV19QTV9RVUVSWSgwKSAm JiBxLT50eXBlIDw9IE5WNTBfSFdfUE1fUVVFUllfTEFTVCkpIHsKPiArICAgICAgICAgcmV0ID0g bnY1MF9od19wbV9xdWVyeV9iZWdpbihudjUwLCBxKTsKPiArICAgICAgfQo+ICAgICAgICBicmVh azsKPiAgICAgfQo+ICAgICBxLT5zdGF0ZSA9IE5WNTBfUVVFUllfU1RBVEVfQUNUSVZFOwo+IC0g ICByZXR1cm4gdHJ1ZTsKPiArICAgcmV0dXJuIHJldDsKPiAgfQo+Cj4gIHN0YXRpYyB2b2lkCj4g QEAgLTI3NCw3ICszMDYsOSBAQCBudjUwX3F1ZXJ5X2VuZChzdHJ1Y3QgcGlwZV9jb250ZXh0ICpw aXBlLCBzdHJ1Y3QgcGlwZV9xdWVyeSAqcHEpCj4gICAgICAgIHEtPnN0YXRlID0gTlY1MF9RVUVS WV9TVEFURV9SRUFEWTsKPiAgICAgICAgYnJlYWs7Cj4gICAgIGRlZmF1bHQ6Cj4gLSAgICAgIGFz c2VydCgwKTsKPiArICAgICAgaWYgKChxLT50eXBlID49IE5WNTBfSFdfUE1fUVVFUlkoMCkgJiYg cS0+dHlwZSA8PSBOVjUwX0hXX1BNX1FVRVJZX0xBU1QpKSB7Cj4gKyAgICAgICAgIG52NTBfaHdf cG1fcXVlcnlfZW5kKG52NTAsIHEpOwo+ICsgICAgICB9Cj4gICAgICAgIGJyZWFrOwo+ICAgICB9 Cj4KPiBAQCAtMzA5LDYgKzM0MywxMCBAQCBudjUwX3F1ZXJ5X3Jlc3VsdChzdHJ1Y3QgcGlwZV9j b250ZXh0ICpwaXBlLCBzdHJ1Y3QgcGlwZV9xdWVyeSAqcHEsCj4gICAgIGlmICghcHEpCj4gICAg ICAgIHJldHVybiBGQUxTRTsKPgo+ICsgICBpZiAoKHEtPnR5cGUgPj0gTlY1MF9IV19QTV9RVUVS WSgwKSAmJiBxLT50eXBlIDw9IE5WNTBfSFdfUE1fUVVFUllfTEFTVCkpIHsKPiArICAgICAgcmV0 dXJuIG52NTBfaHdfcG1fcXVlcnlfcmVzdWx0KG52NTAsIHEsIHdhaXQsIHJlc3VsdCk7Cj4gKyAg IH0KPiArCj4gICAgIGlmIChxLT5zdGF0ZSAhPSBOVjUwX1FVRVJZX1NUQVRFX1JFQURZKQo+ICAg ICAgICBudjUwX3F1ZXJ5X3VwZGF0ZShxKTsKPgo+IEBAIC00ODgsNiArNTI2LDEwMTUgQEAgbnZh MF9zb190YXJnZXRfc2F2ZV9vZmZzZXQoc3RydWN0IHBpcGVfY29udGV4dCAqcGlwZSwKPiAgICAg bnY1MF9xdWVyeV9lbmQocGlwZSwgdGFyZy0+cHEpOwo+ICB9Cj4KPiArLyogPT09IEhBUkRXQVJF IEdMT0JBTCBQRVJGT1JNQU5DRSBDT1VOVEVSUyBmb3IgTlY1MCA9PT0gKi8KPiArCj4gK3N0cnVj dCBudjUwX2h3X3BtX3NvdXJjZV9jZmcKPiArewo+ICsgICBjb25zdCBjaGFyICpuYW1lOwo+ICsg ICB1aW50NjRfdCB2YWx1ZTsKPiArfTsKPiArCj4gK3N0cnVjdCBudjUwX2h3X3BtX3NpZ25hbF9j ZmcKPiArewo+ICsgICBjb25zdCBjaGFyICpuYW1lOwo+ICsgICBjb25zdCBzdHJ1Y3QgbnY1MF9o d19wbV9zb3VyY2VfY2ZnIHNyY1s4XTsKPiArfTsKPiArCj4gK3N0cnVjdCBudjUwX2h3X3BtX2Nv dW50ZXJfY2ZnCj4gK3sKPiArICAgdWludDE2X3QgbG9naWNfb3A7Cj4gKyAgIGNvbnN0IHN0cnVj dCBudjUwX2h3X3BtX3NpZ25hbF9jZmcgc2lnWzRdOwo+ICt9Owo+ICsKPiArZW51bSBudjUwX2h3 X3BtX3F1ZXJ5X2Rpc3BsYXkKPiArewo+ICsgICBOVjUwX0hXX1BNX0VWRU5UX0RJU1BMQVlfUkFX LAo+ICsgICBOVjUwX0hXX1BNX0VWRU5UX0RJU1BMQVlfUkFUSU8sCj4gK307Cj4gKwo+ICtlbnVt IG52NTBfaHdfcG1fcXVlcnlfY291bnQKPiArewo+ICsgICBOVjUwX0hXX1BNX0VWRU5UX0NPVU5U X1NJTVBMRSwKPiArICAgTlY1MF9IV19QTV9FVkVOVF9DT1VOVF9CNCwKPiArICAgTlY1MF9IV19Q TV9FVkVOVF9DT1VOVF9CNiwKPiArfTsKPiArCj4gK3N0cnVjdCBudjUwX2h3X3BtX2V2ZW50X2Nm Zwo+ICt7Cj4gKyAgIGNvbnN0IGNoYXIgKm5hbWU7Cj4gKyAgIGNvbnN0IGNoYXIgKmRlc2M7Cj4g KyAgIGVudW0gbnY1MF9od19wbV9xdWVyeV9kaXNwbGF5IGRpc3BsYXk7Cj4gKyAgIGVudW0gbnY1 MF9od19wbV9xdWVyeV9jb3VudCBjb3VudDsKPiArICAgdWludDhfdCBkb21haW47Cj4gK307Cj4g Kwo+ICtzdHJ1Y3QgbnY1MF9od19wbV9xdWVyeV9jZmcKPiArewo+ICsgICBjb25zdCBzdHJ1Y3Qg bnY1MF9od19wbV9ldmVudF9jZmcgKmV2ZW50Owo+ICsgICBjb25zdCBzdHJ1Y3QgbnY1MF9od19w bV9jb3VudGVyX2NmZyBjdHJbNF07Cj4gK307Cj4gKwo+ICsjZGVmaW5lIFNSQyhuYW1lLCB2YWwp IHsgbmFtZSwgdmFsIH0KPiArI2RlZmluZSBTSUcobmFtZSwgLi4uKSB7IG5hbWUsIHsgX19WQV9B UkdTX18gfSB9Cj4gKyNkZWZpbmUgQ1RSKGZ1bmMsIC4uLikgeyBmdW5jLCB7IF9fVkFfQVJHU19f IH0gfQo+ICsKPiArLyoKPiArICogR1BVCj4gKyAqLwo+ICsvKiBncHVfaWRsZSAqLwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IG52NTBfaHdfcG1fZXZlbnRfY2ZnCj4gK252NTBfZ3B1X2lkbGVfZXZl bnQgPQo+ICt7Cj4gKyAgIC5uYW1lICAgID0gImdwdV9pZGxlIiwKPiArICAgLmRlc2MgICAgPSAi VGhlIFwlIG9mIHRpbWUgdGhlIEdQVSBpcyBpZGxlL2J1c3kgc2luY2UgdGhlIGxhc3QgY2FsbC4g Igo+ICsgICAgICAgICAgICAgICJIYXZpbmcgdGhlIEdQVSBpZGxlIGF0IGFsbCBpcyBhIHdhc3Rl IG9mIHZhbHVhYmxlIHJlc291cmNlcy4gIgo+ICsgICAgICAgICAgICAgICJZb3Ugd2FudCB0byBi YWxhbmNlIHRoZSBHUFUgYW5kIENQVSB3b3JrbG9hZHMgc28gdGhhdCBubyBvbmUgIgo+ICsgICAg ICAgICAgICAgICJwcm9jZXNzb3IgaXMgc3RhcnZlZCBmb3Igd29yay4gVGltZSBtYW5hZ2VtZW50 IG9yIHVzaW5nICIKPiArICAgICAgICAgICAgICAibXVsdGl0aHJlYWRpbmcgaW4geW91ciBhcHBs aWNhdGlvbiBjYW4gaGVscCBiYWxhbmNlIENQVSBiYXNlZCAiCj4gKyAgICAgICAgICAgICAgInRh c2tzICh3b3JsZCBtYW5hZ2VtZW50LCBldGMuKSB3aXRoIHRoZSByZW5kZXJpbmcgcGlwZWxpbmUu IiwKPiArICAgLmRpc3BsYXkgPSBOVjUwX0hXX1BNX0VWRU5UX0RJU1BMQVlfUkFUSU8sCj4gKyAg IC5jb3VudCAgID0gTlY1MF9IV19QTV9FVkVOVF9DT1VOVF9TSU1QTEUsCj4gKyAgIC5kb21haW4g ID0gMSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbnY1MF9od19wbV9xdWVyeV9j ZmcKPiArbnY1MF9ncHVfaWRsZV9xdWVyeSA9Cj4gK3sKPiArICAgLmV2ZW50ICA9ICZudjUwX2dw dV9pZGxlX2V2ZW50LAo+ICsgICAuY3RyWzBdID0gQ1RSKDB4YWFhYSwgU0lHKCJwYzAxX2dyX2lk bGUiKSksCj4gK307Cj4gKwo+ICsvKgo+ICsgKiBJTlBVVCBBU1NFTUJMRVIKPiArICovCj4gKy8q IGlucHV0X2Fzc2VtYmxlcl9idXN5ICovCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbnY1MF9od19w bV9ldmVudF9jZmcKPiArbnY1MF9pYV9idXN5X2V2ZW50ID0KPiArewo+ICsgICAubmFtZSAgICA9 ICJpbnB1dF9hc3NlbWJsZXJfYnVzeSIsCj4gKyAgIC5kZXNjICAgID0gIlRoZSBcJSBvZiB0aW1l IHRoZSBpbnB1dCBhc3NlbWJsZXIgdW5pdCBpcyBidXN5LiBUaGlzIGlzIG1haW5seSAiCj4gKyAg ICAgICAgICAgICAgImltcGFjdGVkIGJ5IGJvdGggdGhlIG51bWJlciBvZiB2ZXJ0aWNlcyBwcm9j ZXNzZWQgYXMgd2VsbCBhcyAiCj4gKyAgICAgICAgICAgICAgInRoZSBzaXplIG9mIHRoZSBhdHRy aWJ1dGVzIG9uIHRob3NlIHZlcnRpY2VzLiBZb3UgY2FuIG9wdGltaXplICIKPiArICAgICAgICAg ICAgICAidGhpcyBieSByZWR1Y2luZyB2ZXJ0ZXggc2l6ZSBhcyBtdWNoIGFzIHBvc3NpYmxlIGFu ZCB1c2luZyAiCj4gKyAgICAgICAgICAgICAgImluZGV4ZWQgcHJpbWl0aXZlcyB0byB0YWtlIGFk dmFudGFnZSBvZiB0aGUgdmVydGV4IGNhY2hlLiIsCj4gKyAgIC5kaXNwbGF5ID0gTlY1MF9IV19Q TV9FVkVOVF9ESVNQTEFZX1JBVElPLAo+ICsgICAuY291bnQgICA9IE5WNTBfSFdfUE1fRVZFTlRf Q09VTlRfU0lNUExFLAo+ICsgICAuZG9tYWluICA9IDEsCj4gK307Cj4gKwo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IG52NTBfaHdfcG1fcXVlcnlfY2ZnCj4gK252NTBfaWFfYnVzeV9xdWVyeSA9Cj4g K3sKPiArICAgLmV2ZW50ICAgPSAmbnY1MF9pYV9idXN5X2V2ZW50LAo+ICsgICAuY3RyWzBdICA9 IENUUigweGY4ODgsIFNJRygicGMwMV92ZmV0Y2hfMTgiLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTUkMoInBncmFwaF92ZmV0Y2hfdW5rMGNfdW5rMCIsIDB4MSkpLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIFNJRygicGMwMV92ZmV0Y2hfMTciKSwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICBTSUcoInBjMDFfdmZldGNoXzAzIiksCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgU0lHKCJwYzAxX3ZmZXRjaF8wMiIpKSwKPiArfTsKPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgbnY1MF9od19wbV9xdWVyeV9jZmcKPiArbnZhMF9pYV9idXN5X3F1ZXJ5ID0K PiArewo+ICsgICAuZXZlbnQgICA9ICZudjUwX2lhX2J1c3lfZXZlbnQsCj4gKyAgIC5jdHJbMF0g ID0gQ1RSKDB4Zjg4OCwgU0lHKCJwYzAxX3ZmZXRjaF8xNSIsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFNSQygicGdyYXBoX3ZmZXRjaF91bmswY191bmswIiwgMHgxKSksCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgU0lHKCJwYzAxX3ZmZXRjaF8xNCIpLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgIFNJRygicGMwMV92ZmV0Y2hfMDMiKSwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICBTSUcoInBjMDFfdmZldGNoXzAyIikpLAo+ICt9Owo+ICsKPiArLyogaW5w dXRfYXNzZW1ibGVyX3dhaXRzX2Zvcl9mYiAqLwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG52NTBf aHdfcG1fZXZlbnRfY2ZnCj4gK252NTBfaWFfd2FpdHNfZm9yX2ZiX2V2ZW50ID0gewo+ICsgICAu bmFtZSAgICA9ICJpbnB1dF9hc3NlbWJsZXJfd2FpdHNfZm9yX2ZiIiwKPiArICAgLmRlc2MgICAg PSAiVGhpcyBpcyB0aGUgYW1vdW50IG9mIHRpbWUgdGhlIGlucHV0IGFzc2VtYmxlciB1bml0IHdh cyAiCj4gKyAgICAgICAgICAgICAgIndhaXRpbmcgZm9yIGRhdGEgZnJvbSB0aGUgZnJhbWUgYnVm ZmVyIHVuaXQuIiwKPiArICAgLmRpc3BsYXkgPSBOVjUwX0hXX1BNX0VWRU5UX0RJU1BMQVlfUkFU SU8sCj4gKyAgIC5jb3VudCAgID0gTlY1MF9IV19QTV9FVkVOVF9DT1VOVF9TSU1QTEUsCj4gKyAg IC5kb21haW4gID0gMSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbnY1MF9od19w bV9xdWVyeV9jZmcKPiArbnY1MF9pYV93YWl0c19mb3JfZmJfcXVlcnkgPQo+ICt7Cj4gKyAgIC5l dmVudCAgID0gJm52NTBfaWFfd2FpdHNfZm9yX2ZiX2V2ZW50LAo+ICsgICAuY3RyWzBdICA9IENU UigweGFhYWEsIFNJRygicGMwMV92ZmV0Y2hfMGUiLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTUkMoInBncmFwaF92ZmV0Y2hfdW5rMGNfdW5rMCIsIDB4MSkpKSwKPiArfTsKPiAr Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbnY1MF9od19wbV9xdWVyeV9jZmcKPiArbnZhMF9pYV93 YWl0c19mb3JfZmJfcXVlcnkgPQo+ICt7Cj4gKyAgIC5ldmVudCAgID0gJm52NTBfaWFfd2FpdHNf Zm9yX2ZiX2V2ZW50LAo+ICsgICAuY3RyWzBdICA9IENUUigweGFhYWEsIFNJRygicGMwMV92ZmV0 Y2hfMGIiLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTUkMoInBncmFwaF92ZmV0 Y2hfdW5rMGNfdW5rMCIsIDB4MSkpKSwKPiArfTsKPiArCj4gKy8qIHZlcnRleF9hdHRyaWJ1dGVf Y291bnQgKi8KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBudjUwX2h3X3BtX2V2ZW50X2NmZwo+ICtu djUwX3ZlcnRleF9hdHRyX2NvdW50X2V2ZW50ID0KPiArewo+ICsgICAubmFtZSAgICA9ICJ2ZXJ0 ZXhfYXR0cmlidXRlX2NvdW50IiwKPiArICAgLmRlc2MgICAgPSAiVGhlIG51bWJlciBvZiB2ZXJ0 ZXggYXR0cmlidXRlcyB0aGF0IGFyZSBmZXRjaGVkIGFuZCBwYXNzZWQgdG8gIgo+ICsgICAgICAg ICAgICAgICJ0aGUgZ2VvbWV0cnkgdW5pdCBpcyByZXR1cm5lZCBpbiB0aGlzIGNvdW50ZXIuIEEg bGFyZ2UgbnVtYmVyICIKPiArICAgICAgICAgICAgICAib2YgYXR0cmlidXRlcyAob3IgdW5hbGln bmVkIHZlcnRpY2VzKSBjYW4gaHVydCB2ZXJ0ZXggY2FjaGUgIgo+ICsgICAgICAgICAgICAgICJw ZXJmb3JtYW5jZSBhbmQgcmVkdWNlIHRoZSBvdmVyYWxsIHZlcnRleCBwcm9jZXNzaW5nICIKPiAr ICAgICAgICAgICAgICAiY2FwYWJpbGl0aWVzIG9mIHRoZSBwaXBlbGluZS4iLAo+ICsgICAuZGlz cGxheSA9IE5WNTBfSFdfUE1fRVZFTlRfRElTUExBWV9SQVcsCj4gKyAgIC5jb3VudCAgID0gTlY1 MF9IV19QTV9FVkVOVF9DT1VOVF9TSU1QTEUsCj4gKyAgIC5kb21haW4gID0gMSwKPiArfTsKPiAr Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbnY1MF9od19wbV9xdWVyeV9jZmcKPiArbnY1MF92ZXJ0 ZXhfYXR0cl9jb3VudF9xdWVyeSA9Cj4gK3sKPiArICAgLmV2ZW50ID0gJm52NTBfdmVydGV4X2F0 dHJfY291bnRfZXZlbnQsCj4gKyAgIC5jdHJbMF0gPSBDVFIoMHhmODg4LCBTSUcoInBjMDFfdmZl dGNoXzE4IiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTUkMoInBncmFwaF92ZmV0 Y2hfdW5rMGNfdW5rMCIsIDB4MSkpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgU0lHKCJw YzAxX3ZmZXRjaF8xNyIpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgU0lHKCJwYzAxX3Zm ZXRjaF8wMyIpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgU0lHKCJwYzAxX3ZmZXRjaF8w MiIpKSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbnY1MF9od19wbV9xdWVyeV9j ZmcKPiArbnZhMF92ZXJ0ZXhfYXR0cl9jb3VudF9xdWVyeSA9Cj4gK3sKPiArICAgLmV2ZW50ICA9 ICZudjUwX3ZlcnRleF9hdHRyX2NvdW50X2V2ZW50LAo+ICsgICAuY3RyWzBdID0gQ1RSKDB4Zjg4 OCwgU0lHKCJwYzAxX3ZmZXRjaF8xNSIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U1JDKCJwZ3JhcGhfdmZldGNoX3VuazBjX3VuazAiLCAweDEpKSwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgIFNJRygicGMwMV92ZmV0Y2hfMTQiKSwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgIFNJRygicGMwMV92ZmV0Y2hfMDMiKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIFNJ RygicGMwMV92ZmV0Y2hfMDIiKSksCj4gK307Cj4gKwo+ICsvKgo+ICsgKiBHRU9NCj4gKyAqLwo+ ICsvKiBnZW9tX3ZlcnRleF9pbl9jb3VudCAqLwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG52NTBf aHdfcG1fZXZlbnRfY2ZnCj4gK252NTBfZ2VvbV92ZXJ0ZXhfaW5fY291bnRfZXZlbnQgPQo+ICt7 Cj4gKyAgIC5uYW1lICAgID0gImdlb21fdmVydGV4X2luX2NvdW50IiwKPiArICAgLmRlc2MgICAg PSAiVGhlIG51bWJlciBvZiB2ZXJ0aWNlcyBpbnB1dCB0byB0aGUgZ2VvbSB1bml0LiIsCj4gKyAg IC5kaXNwbGF5ID0gTlY1MF9IV19QTV9FVkVOVF9ESVNQTEFZX1JBVywKPiArICAgLmNvdW50ICAg PSBOVjUwX0hXX1BNX0VWRU5UX0NPVU5UX0I0LAo+ICsgICAuZG9tYWluICA9IDEsCj4gK307Cj4g Kwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG52NTBfaHdfcG1fcXVlcnlfY2ZnCj4gK252NTBfZ2Vv bV92ZXJ0ZXhfaW5fY291bnRfcXVlcnkgPQo+ICt7Cj4gKyAgIC5ldmVudCAgPSAmbnY1MF9nZW9t X3ZlcnRleF9pbl9jb3VudF9ldmVudCwKPiArICAgLmN0clsxXSA9IENUUigweGZmZmYsIFNJRygi cGMwMV92ZmV0Y2hfMGUiLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNSQygicGdy YXBoX3ZmZXRjaF91bmswY191bmswIiwgMHgwKSksCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICBTSUcoInBjMDFfdmZldGNoXzBmIiksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBTSUco InBjMDFfdmZldGNoXzEwIiksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBTSUcoInBjMDFf dHJhaWxlciIpKSwKPiArICAgLmN0clsyXSA9IENUUigweDU1NTUsIFNJRygicGMwMV90cmFpbGVy IiksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBTSUcoInBjMDFfdHJhaWxlciIpLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgU0lHKCJwYzAxX3RyYWlsZXIiKSwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgIFNJRygicGMwMV90cmFpbGVyIikpLAo+ICt9Owo+ICsKPiArLyogZ2Vv bV92ZXJ0ZXhfb3V0X2NvdW50ICovCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbnY1MF9od19wbV9l dmVudF9jZmcKPiArbnY1MF9nZW9tX3ZlcnRleF9vdXRfY291bnRfZXZlbnQgPQo+ICt7Cj4gKyAg IC5uYW1lICAgID0gImdlb21fdmVydGV4X291dF9jb3VudCIsCj4gKyAgIC5kZXNjICAgID0gIlRo ZSBudW1iZXIgb2YgdmVydGljZXMgY29taW5nIG91dCBvZiB0aGUgZ2VvbSB1bml0IGFmdGVyIGFu eSAiCj4gKyAgICAgICAgICAgICAgImdlb21ldHJ5IHNoYWRlciBleHBhbnNpb24uIiwKPiArICAg LmRpc3BsYXkgPSBOVjUwX0hXX1BNX0VWRU5UX0RJU1BMQVlfUkFXLAo+ICsgICAuY291bnQgICA9 IE5WNTBfSFdfUE1fRVZFTlRfQ09VTlRfU0lNUExFLAo+ICsgICAuZG9tYWluICA9IDEsCj4gK307 Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG52NTBfaHdfcG1fcXVlcnlfY2ZnCj4gK252NTBf Z2VvbV92ZXJ0ZXhfb3V0X2NvdW50X3F1ZXJ5ID0KPiArewo+ICsgICAuZXZlbnQgID0gJm52NTBf Z2VvbV92ZXJ0ZXhfb3V0X2NvdW50X2V2ZW50LAo+ICsgICAuY3RyWzBdID0gQ1RSKDB4YWFhYSwg U0lHKCJwYzAxX3ZhdHRyXzAxIikpLAo+ICt9Owo+ICsKPiArLyogZ2VvbV9wcmltaXRpdmVfaW5f Y291bnQgKi8KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBudjUwX2h3X3BtX2V2ZW50X2NmZwo+ICtu djUwX2dlb21fcHJpbWl0aXZlX2luX2NvdW50X2V2ZW50ID0KPiArewo+ICsgICAubmFtZSAgICA9 ICJnZW9tX3ByaW1pdGl2ZV9pbl9jb3VudCIsCj4gKyAgIC5kZXNjICAgID0gIlRoZSBudW1iZXIg b2YgcHJpbWl0aXZlcyBpbnB1dCB0byB0aGUgZ2VvbSB1bml0LiIsCj4gKyAgIC5kaXNwbGF5ID0g TlY1MF9IV19QTV9FVkVOVF9ESVNQTEFZX1JBVywKPiArICAgLmNvdW50ICAgPSBOVjUwX0hXX1BN X0VWRU5UX0NPVU5UX1NJTVBMRSwKPiArICAgLmRvbWFpbiAgPSAxLAo+ICt9Owo+ICsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBudjUwX2h3X3BtX3F1ZXJ5X2NmZwo+ICtudjUwX2dlb21fcHJpbWl0 aXZlX2luX2NvdW50X3F1ZXJ5ID0KPiArewo+ICsgICAuZXZlbnQgID0gJm52NTBfZ2VvbV9wcmlt aXRpdmVfaW5fY291bnRfZXZlbnQsCj4gKyAgIC5jdHJbMF0gPSBDVFIoMHhhYWFhLCBTSUcoInBj MDFfdmZldGNoXzA4IiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTUkMoInBncmFw aF92ZmV0Y2hfdW5rMGNfdW5rMCIsIDB4MCkpKSwKPiArfTsKPiArCj4gKy8qIGdlb21fcHJpbWl0 aXZlX291dF9jb3VudCAqLwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG52NTBfaHdfcG1fZXZlbnRf Y2ZnCj4gK252NTBfZ2VvbV9wcmltaXRpdmVfb3V0X2NvdW50X2V2ZW50ID0KPiArewo+ICsgICAu bmFtZSAgICA9ICJnZW9tX3ByaW1pdGl2ZV9vdXRfY291bnQiLAo+ICsgICAuZGVzYyAgICA9ICJU aGUgbnVtYmVyIG9mIHByaW1pdGl2ZXMgY29taW5nIG91dCB0aGUgZ2VvbSB1bml0IGFmdGVyIGFu eSAiCj4gKyAgICAgICAgICAgICAgImdlb21ldHJ5IHNoYWRlciBleHBhbnNpb24uIiwKPiArICAg LmRpc3BsYXkgPSBOVjUwX0hXX1BNX0VWRU5UX0RJU1BMQVlfUkFXLAo+ICsgICAuY291bnQgICA9 IE5WNTBfSFdfUE1fRVZFTlRfQ09VTlRfU0lNUExFLAo+ICsgICAuZG9tYWluICA9IDEsCj4gK307 Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG52NTBfaHdfcG1fcXVlcnlfY2ZnCj4gK252NTBf Z2VvbV9wcmltaXRpdmVfb3V0X2NvdW50X3F1ZXJ5ID0KPiArewo+ICsgICAuZXZlbnQgID0gJm52 NTBfZ2VvbV9wcmltaXRpdmVfb3V0X2NvdW50X2V2ZW50LAo+ICsgICAuY3RyWzBdID0gQ1RSKDB4 YWFhYSwgU0lHKCJwYzAxX3ZhdHRyXzAwIikpLAo+ICt9Owo+ICsKPiArLyoKPiArICogU1RSRUFN IE9VVAo+ICsgKi8KPiArLyogc3RyZWFtX291dF9idXN5ICovCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgbnY1MF9od19wbV9ldmVudF9jZmcKPiArbnY1MF9zb19idXN5X2V2ZW50ID0KPiArewo+ICsg ICAubmFtZSAgICA9ICJzdHJlYW1fb3V0X2J1c3kiLAo+ICsgICAuZGVzYyAgICA9ICJUaGlzIHVu aXQgbWFuYWdlcyB0aGUgd3JpdGluZyBvZiB2ZXJ0aWNlcyB0byB0aGUgZnJhbWUgYnVmZmVyICIK PiArICAgICAgICAgICAgICAid2hlbiB1c2luZyBzdHJlYW0gb3V0LiBJZiBhIHNpZ25pZmljYW50 IG51bWJlciBvZiB2ZXJ0aWNlcyBhcmUgIgo+ICsgICAgICAgICAgICAgICJ3cml0dGVuLCB0aGlz IGNhbiBiZWNvbWUgYSBib3R0bGVuZWNrLiIsCj4gKyAgIC5kaXNwbGF5ID0gTlY1MF9IV19QTV9F VkVOVF9ESVNQTEFZX1JBVElPLAo+ICsgICAuY291bnQgICA9IE5WNTBfSFdfUE1fRVZFTlRfQ09V TlRfU0lNUExFLAo+ICsgICAuZG9tYWluICA9IDEsCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IG52NTBfaHdfcG1fcXVlcnlfY2ZnCj4gK252NTBfc29fYnVzeV9xdWVyeSA9Cj4gK3sK PiArICAgLmV2ZW50ICA9ICZudjUwX3NvX2J1c3lfZXZlbnQsCj4gKyAgIC5jdHJbMF0gPSBDVFIo MHg4ODg4LCBTSUcoInBjMDFfc3RybW91dF8wMCIpLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgU0lHKCJwYzAxX3N0cm1vdXRfMDEiKSksCj4gK307Cj4gKwo+ICsvKgo+ICsgKiBTRVRVUAo+ ICsgKi8KPiArLyogc2V0dXBfcHJpbWl0aXZlX2NvdW50ICovCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgbnY1MF9od19wbV9ldmVudF9jZmcKPiArbnY1MF9zZXR1cF9wcmltaXRpdmVfY291bnRfZXZl bnQgPQo+ICt7Cj4gKyAgIC5uYW1lICAgID0gInNldHVwX3ByaW1pdGl2ZV9jb3VudCIsCj4gKyAg IC5kZXNjICAgID0gIlJldHVybnMgdGhlIG51bWJlciBvZiBwcmltaXRpdmVzIHByb2Nlc3NlZCBp biB0aGUgZ2VvbWV0cnkgIgo+ICsgICAgICAgICAgICAgICJzdWJzeXN0ZW0uIFRoaXMgZXhwZXJp bWVudHMgY291bnRzIHBvaW50cywgbGluZXMgYW5kIHRyaWFuZ2xlcy4gIgo+ICsgICAgICAgICAg ICAgICJUbyBjb3VudCBvbmx5IHRyaWFuZ2xlcywgdXNlIHRoZSBzZXR1cF90cmlhbmdsZV9jb3Vu dCBjb3VudGVyLiAiCj4gKyAgICAgICAgICAgICAgIkJhbGFuY2UgdGhlc2UgY291bnRzIHdpdGgg dGhlIG51bWJlciBvZiBwaXhlbHMgYmVpbmcgZHJhd24gdG8gIgo+ICsgICAgICAgICAgICAgICJz ZWUgaWYgeW91IGNvdWxkIHNpbXBsaWZ5IHlvdXIgZ2VvbWV0cnkgYW5kIHVzZSAiCj4gKyAgICAg ICAgICAgICAgImJ1bXAvZGlzcGxhY2VtZW50IG1hcHMsIGZvciBleGFtcGxlLiIsCj4gKyAgIC5k aXNwbGF5ID0gTlY1MF9IV19QTV9FVkVOVF9ESVNQTEFZX1JBVywKPiArICAgLmNvdW50ICAgPSBO VjUwX0hXX1BNX0VWRU5UX0NPVU5UX1NJTVBMRSwKPiArICAgLmRvbWFpbiAgPSAxLAo+ICt9Owo+ ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBudjUwX2h3X3BtX3F1ZXJ5X2NmZwo+ICtudjUwX3Nl dHVwX3ByaW1pdGl2ZV9jb3VudF9xdWVyeSA9Cj4gK3sKPiArICAgLmV2ZW50ICA9ICZudjUwX3Nl dHVwX3ByaW1pdGl2ZV9jb3VudF9ldmVudCwKPiArICAgLmN0clswXSA9IENUUigweGFhYWEsIFNJ RygicGMwMV90cmFzdF8wMCIpKSwKPiArfTsKPiArCj4gKy8qIHNldHVwX3BvaW50X2NvdW50ICov Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbnY1MF9od19wbV9ldmVudF9jZmcKPiArbnY1MF9zZXR1 cF9wb2ludF9jb3VudF9ldmVudCA9Cj4gK3sKPiArICAgLm5hbWUgICAgPSAic2V0dXBfcG9pbnRf Y291bnQiLAo+ICsgICAuZGVzYyAgICA9ICJUaGUgbnVtYmVyIG9mIHBvaW50cyBzZWVuIGJ5IHRo ZSBwcmltaXRpdmUgc2V0dXAgdW5pdCAoanVzdCAiCj4gKyAgICAgICAgICAgICAgImJlZm9yZSBy YXN0ZXJpemF0aW9uKS4iLAo+ICsgICAuZGlzcGxheSA9IE5WNTBfSFdfUE1fRVZFTlRfRElTUExB WV9SQVcsCj4gKyAgIC5jb3VudCAgID0gTlY1MF9IV19QTV9FVkVOVF9DT1VOVF9TSU1QTEUsCj4g KyAgIC5kb21haW4gID0gMSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbnY1MF9o d19wbV9xdWVyeV9jZmcKPiArbnY1MF9zZXR1cF9wb2ludF9jb3VudF9xdWVyeSA9Cj4gK3sKPiAr ICAgLmV2ZW50ICA9ICZudjUwX3NldHVwX3BvaW50X2NvdW50X2V2ZW50LAo+ICsgICAuY3RyWzBd ID0gQ1RSKDB4ODA4MCwgU0lHKCJwYzAxX3RyYXN0XzAxIiksCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICBTSUcoInBjMDFfdHJhc3RfMDQiKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAg IFNJRygicGMwMV90cmFzdF8wNSIpKSwKPiArfTsKPiArCj4gKy8qIHNldHVwX2xpbmVfY291bnQg Ki8KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBudjUwX2h3X3BtX2V2ZW50X2NmZwo+ICtudjUwX3Nl dHVwX2xpbmVfY291bnRfZXZlbnQgPQo+ICt7Cj4gKyAgIC5uYW1lICAgID0gInNldHVwX2xpbmVf Y291bnQiLAo+ICsgICAuZGVzYyAgICA9ICJUaGUgbnVtYmVyIG9mIGxpbmVzIHNlZW4gYnkgdGhl IHByaW1pdGl2ZSBzZXR1cCB1bml0IChqdXN0ICIKPiArICAgICAgICAgICAgICAiYmVmb3JlIHJh c3Rlcml6YXRpb24pLiIsCj4gKyAgIC5kaXNwbGF5ID0gTlY1MF9IV19QTV9FVkVOVF9ESVNQTEFZ X1JBVywKPiArICAgLmNvdW50ICAgPSBOVjUwX0hXX1BNX0VWRU5UX0NPVU5UX1NJTVBMRSwKPiAr ICAgLmRvbWFpbiAgPSAxLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBudjUwX2h3 X3BtX3F1ZXJ5X2NmZwo+ICtudjUwX3NldHVwX2xpbmVfY291bnRfcXVlcnkgPQo+ICt7Cj4gKyAg IC5ldmVudCAgPSAmbnY1MF9zZXR1cF9saW5lX2NvdW50X2V2ZW50LAo+ICsgICAuY3RyWzBdID0g Q1RSKDB4ODA4MCwgU0lHKCJwYzAxX3RyYXN0XzAyIiksCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICBTSUcoInBjMDFfdHJhc3RfMDQiKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIFNJ RygicGMwMV90cmFzdF8wNSIpKSwKPiArfTsKPiArCj4gKy8qIHNldHVwX3RyaWFuZ2xlX2NvdW50 ICovCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbnY1MF9od19wbV9ldmVudF9jZmcKPiArbnY1MF9z ZXR1cF90cmlhbmdsZV9jb3VudF9ldmVudCA9Cj4gK3sKPiArICAgLm5hbWUgICAgPSAic2V0dXBf dHJpYW5nbGVfY291bnQiLAo+ICsgICAuZGVzYyAgICA9ICJSZXR1cm5zIHRoZSBudW1iZXIgb2Yg dHJpYW5nbGVzIHByb2Nlc3NlZCBpbiB0aGUgZ2VvbWV0cnkgIgo+ICsgICAgICAgICAgICAgICJz dWJzeXN0ZW0uIiwKPiArICAgLmRpc3BsYXkgPSBOVjUwX0hXX1BNX0VWRU5UX0RJU1BMQVlfUkFX LAo+ICsgICAuY291bnQgICA9IE5WNTBfSFdfUE1fRVZFTlRfQ09VTlRfU0lNUExFLAo+ICsgICAu ZG9tYWluICA9IDEsCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG52NTBfaHdfcG1f cXVlcnlfY2ZnCj4gK252NTBfc2V0dXBfdHJpYW5nbGVfY291bnRfcXVlcnkgPQo+ICt7Cj4gKyAg IC5ldmVudCAgPSAmbnY1MF9zZXR1cF90cmlhbmdsZV9jb3VudF9ldmVudCwKPiArICAgLmN0clsw XSA9IENUUigweDgwODAsIFNJRygicGMwMV90cmFzdF8wMyIpLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgU0lHKCJwYzAxX3RyYXN0XzA0IiksCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICBTSUcoInBjMDFfdHJhc3RfMDUiKSksCj4gK307Cj4gKwo+ICsvKiBzZXR1cF9wcmltaXRpdmVf Y3VsbGVkX2NvdW50ICovCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbnY1MF9od19wbV9ldmVudF9j ZmcKPiArbnY1MF9zZXR1cF9wcmltaXRpdmVfY3VsbGVkX2NvdW50X2V2ZW50ID0KPiArewo+ICsg ICAubmFtZSAgICA9ICJzZXR1cF9wcmltaXRpdmVfY3VsbGVkX2NvdW50IiwKPiArICAgLmRlc2Mg ICAgPSAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIHByaW1pdGl2ZXMgY3VsbGVkIGluIHByaW1pdGl2 ZSBzZXR1cC4gSWYgIgo+ICsgICAgICAgICAgICAgICJ5b3UgYXJlIHBlcmZvcm1pbmcgdmlld3Bv cnQgY3VsbGluZywgdGhpcyBnaXZlcyB5b3UgYW4gIgo+ICsgICAgICAgICAgICAgICJpbmRpY2F0 aW9uIG9mIHRoZSBhY2N1cmFjeSBvZiB0aGUgYWxnb3JpdGhtIGJlaW5nIHVzZWQsIGFuZCBjYW4g Igo+ICsgICAgICAgICAgICAgICJnaXZlIHlvdSBhbmQgaWRlYSBpZiB5b3UgbmVlZCB0byBpbXBy b3ZlcyB0aGlzIGN1bGxpbmcuIFRoaXMgIgo+ICsgICAgICAgICAgICAgICJpbmNsdWRlcyBwcmlt aXRpdmVzIGN1bGxlZCB3aGVuIHVzaW5nIGJhY2tmYWNlIGN1bGxpbmcuIERyYXdpbmcgIgo+ICsg ICAgICAgICAgICAgICJhIGZ1bGx5IHZpc2libGUgc3BoZXJlIG9uIHRoZSBzY3JlZW4gc2hvdWxk IGN1bGwgaGFsZiBvZiB0aGUgIgo+ICsgICAgICAgICAgICAgICJ0cmlhbmdsZXMgaWYgYmFja2Zh Y2UgY3VsbGluZyBpcyB0dXJuZWQgb24gYW5kIGFsbCB0aGUgIgo+ICsgICAgICAgICAgICAgICJ0 cmlhbmdsZXMgYXJlIG9yZGVyZWQgY29uc2lzdGVudGx5IChDVyBvciBDQ1cpLiIsCj4gKyAgIC5k aXNwbGF5ID0gTlY1MF9IV19QTV9FVkVOVF9ESVNQTEFZX1JBVywKPiArICAgLmNvdW50ICAgPSBO VjUwX0hXX1BNX0VWRU5UX0NPVU5UX1NJTVBMRSwKPiArICAgLmRvbWFpbiAgPSAxLAo+ICt9Owo+ ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBudjUwX2h3X3BtX3F1ZXJ5X2NmZwo+ICtudjUwX3Nl dHVwX3ByaW1pdGl2ZV9jdWxsZWRfY291bnRfcXVlcnkgPQo+ICt7Cj4gKyAgIC5ldmVudCAgPSAm bnY1MF9zZXR1cF9wcmltaXRpdmVfY3VsbGVkX2NvdW50X2V2ZW50LAo+ICsgICAuY3RyWzBdID0g Q1RSKDB4YWFhYSwgU0lHKCJwYzAxX3VuazAwIikpLAo+ICt9Owo+ICsKPiArLyoKPiArICogUkFT VEVSSVpFUgo+ICsgKi8KPiArLyogcmFzdF90aWxlc19raWxsZWRfYnlfemN1bGxfY291bnQgKi8K PiArc3RhdGljIGNvbnN0IHN0cnVjdCBudjUwX2h3X3BtX2V2ZW50X2NmZwo+ICtudjUwX3Jhc3Rf dGlsZXNfa2lsbGVkX2J5X3pjdWxsX2V2ZW50ID0KPiArewo+ICsgICAubmFtZSAgICA9ICJyYXN0 ZXJpemVyX3RpbGVzX2tpbGxlZF9ieV96Y3VsbF9jb3VudCIsCj4gKyAgIC5kZXNjICAgID0gIlRo ZSBudW1iZXIgb2YgcGl4ZWxzIGtpbGxlZCBieSB0aGUgemN1bGwgdW5pdCBpbiB0aGUgcmFzdGVy aXplci4iLAo+ICsgICAuZGlzcGxheSA9IE5WNTBfSFdfUE1fRVZFTlRfRElTUExBWV9SQVcsCj4g KyAgIC5jb3VudCAgID0gTlY1MF9IV19QTV9FVkVOVF9DT1VOVF9CNiwKPiArICAgLmRvbWFpbiAg PSAxLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBudjUwX2h3X3BtX3F1ZXJ5X2Nm Zwo+ICtudjUwX3Jhc3RfdGlsZXNfa2lsbGVkX2J5X3pjdWxsX3F1ZXJ5ID0KPiArewo+ICsgICAu ZXZlbnQgID0gJm52NTBfcmFzdF90aWxlc19raWxsZWRfYnlfemN1bGxfZXZlbnQsCj4gKyAgIC5j dHJbMV0gPSBDVFIoMHhmZmZmLCBTSUcoInBjMDFfemN1bGxfMDAiLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNSQygicGdyYXBoX3pjdWxsX3BtX3Vua2E0X3VuazAiLCAweDcpKSwK PiArICAgICAgICAgICAgICAgICAgICAgICAgIFNJRygicGMwMV96Y3VsbF8wMSIpLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgU0lHKCJwYzAxX3pjdWxsXzAyIiksCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICBTSUcoInBjMDFfemN1bGxfMDMiKSksCj4gKyAgIC5jdHJbMl0gPSBDVFIo MHg1NTU1LCBTSUcoInBjMDFfdHJhaWxlciIpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg U0lHKCJwYzAxX3RyYWlsZXIiKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIFNJRygicGMw MV96Y3VsbF8wNCIpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgU0lHKCJwYzAxX3pjdWxs XzA1IikpLAo+ICt9Owo+ICsKPiArLyogcmFzdF90aWxlc19pbl9jb3VudCAqLwo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IG52NTBfaHdfcG1fZXZlbnRfY2ZnCj4gK252NTBfcmFzdF90aWxlc19pbl9j b3VudF9ldmVudCA9Cj4gK3sKPiArICAgLm5hbWUgICAgPSAicmFzdGVyaXplcl90aWxlc19pbl9j b3VudCIsCj4gKyAgIC5kZXNjICAgID0gIkNvdW50IG9mIHRpbGVzIChlYWNoIG9mIHdoaWNoIGNv bnRhaW4gMS04IHBpeGVscykgc2VlbiBieSB0aGUgIgo+ICsgICAgICAgICAgICAgICJyYXN0ZXJp emVyIHN0YWdlLiIsCj4gKyAgIC5kaXNwbGF5ID0gTlY1MF9IV19QTV9FVkVOVF9ESVNQTEFZX1JB VywKPiArICAgLmNvdW50ICAgPSBOVjUwX0hXX1BNX0VWRU5UX0NPVU5UX0I2LAo+ICsgICAuZG9t YWluICA9IDEsCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG52NTBfaHdfcG1fcXVl cnlfY2ZnCj4gK252NTBfcmFzdF90aWxlc19pbl9jb3VudF9xdWVyeSA9Cj4gK3sKPiArICAgLmV2 ZW50ICA9ICZudjUwX3Jhc3RfdGlsZXNfaW5fY291bnRfZXZlbnQsCj4gKyAgIC5jdHJbMV0gPSBD VFIoMHhmZmZmLCBTSUcoInBjMDFfemN1bGxfMDAiLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFNSQygicGdyYXBoX3pjdWxsX3BtX3Vua2E0X3VuazAiLCAweDApKSwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgIFNJRygicGMwMV96Y3VsbF8wMSIpLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgU0lHKCJwYzAxX3pjdWxsXzAyIiksCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICBTSUcoInBjMDFfemN1bGxfMDMiKSksCj4gKyAgIC5jdHJbMl0gPSBDVFIoMHg1NTU1LCBT SUcoInBjMDFfdHJhaWxlciIpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgU0lHKCJwYzAx X3RyYWlsZXIiKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIFNJRygicGMwMV96Y3VsbF8w NCIpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgU0lHKCJwYzAxX3pjdWxsXzA1IikpLAo+ ICt9Owo+ICsKPiArLyoKPiArICogUk9QCj4gKyAqLwo+ICsvKiByb3BfYnVzeSAqLwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IG52NTBfaHdfcG1fZXZlbnRfY2ZnCj4gK252NTBfcm9wX2J1c3lfZXZl bnQgPQo+ICt7Cj4gKyAgIC5uYW1lICAgID0gInJvcF9idXN5IiwKPiArICAgLmRlc2MgICAgPSAi XCUgb2YgdGltZSB0aGF0IHRoZSBST1AgdW5pdCBpcyBhY3RpdmVseSBkb2luZyB3b3JrLiAiCj4g KyAgICAgICAgICAgICAgIlRoaXMgY2FuIGJlIGhpZ2ggaWYgYWxwaGEgYmxlbmRpbmcgaXMgdHVy bmVkIG9uLCBvZiBvdmVyZHJhdyAiCj4gKyAgICAgICAgICAgICAgImlzIGhpZ2gsIGV0Yy4iLAo+ ICsgICAuZGlzcGxheSA9IE5WNTBfSFdfUE1fRVZFTlRfRElTUExBWV9SQVRJTywKPiArICAgLmNv dW50ICAgPSBOVjUwX0hXX1BNX0VWRU5UX0NPVU5UX1NJTVBMRSwKPiArICAgLmRvbWFpbiAgPSAy LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBudjUwX2h3X3BtX3F1ZXJ5X2NmZwo+ ICtudjUwX3JvcF9idXN5X3F1ZXJ5ID0KPiArewo+ICsgICAuZXZlbnQgID0gJm52NTBfcm9wX2J1 c3lfZXZlbnQsCj4gKyAgIC5jdHJbMF0gPSBDVFIoMHhmODg4LCBTSUcoInBjMDJfcHJvcF8wMiIs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1JDKCJwZ3JhcGhfdHBjMF9wcm9wX3Bt X211eF9zZWwiLCAweDApKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIFNJRygicGMwMl9w cm9wXzAzIiksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBTSUcoInBjMDJfcHJvcF8wNCIp LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgU0lHKCJwYzAyX3Byb3BfMDUiKSksCj4gK307 Cj4gKwo+ICsvKiByb3Bfd2FpdHNfZm9yX2ZiICovCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbnY1 MF9od19wbV9ldmVudF9jZmcKPiArbnY1MF9yb3Bfd2FpdHNfZm9yX2ZiX2V2ZW50ID0KPiArewo+ ICsgICAubmFtZSAgICA9ICJyb3Bfd2FpdHNfZm9yX2ZiIiwKPiArICAgLmRlc2MgICAgPSAiVGhl IGFtb3VudCBvZiB0aW1lIHRoZSBibGVuZGluZyB1bml0IHNwZW50IHdhaXRpbmcgZm9yIGRhdGEg Igo+ICsgICAgICAgICAgICAgICJmcm9tIHRoZSBmcmFtZSBidWZmZXIgdW5pdC4gSWYgYmxlbmRp bmcgaXMgZW5hYmxlZCBhbmQgdGhlcmUgIgo+ICsgICAgICAgICAgICAgICJpcyBhIGxvdCBvZiB0 cmFmZmljIGhlcmUgKHNpbmNlIHRoaXMgaXMgYSByZWFkL21vZGlmeS93cml0ZSAiCj4gKyAgICAg ICAgICAgICAgIm9wZXJhdGlvbikgdGhpcyBjYW4gYmVjb21lIGEgYm90dGxlbmVjay4iLAo+ICsg ICAuZGlzcGxheSA9IE5WNTBfSFdfUE1fRVZFTlRfRElTUExBWV9SQVRJTywKPiArICAgLmNvdW50 ICAgPSBOVjUwX0hXX1BNX0VWRU5UX0NPVU5UX1NJTVBMRSwKPiArICAgLmRvbWFpbiAgPSAyLAo+ ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBudjUwX2h3X3BtX3F1ZXJ5X2NmZwo+ICtu djUwX3JvcF93YWl0c19mb3JfZmJfcXVlcnkgPQo+ICt7Cj4gKyAgIC5ldmVudCAgPSAmbnY1MF9y b3Bfd2FpdHNfZm9yX2ZiX2V2ZW50LAo+ICsgICAuY3RyWzBdID0gQ1RSKDB4MjJmMiwgU0lHKCJw YzAyX2Nyb3BfMDMiLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNSQygicGdyYXBo X3JvcDBfY3JvcF9wbV9tdXhfc2VsMCIsIDB4MCkpLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgU0lHKCJwYzAyX2Nyb3BfMDIiKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIFNJRygi cGMwMl96cm9wXzAzIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTUkMoInBncmFw aF9yb3AwX3pyb3BfcG1fbXV4X3NlbDAiLCAweDApKSwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgIFNJRygicGMwMl96cm9wXzAyIikpLAo+ICt9Owo+ICsKPiArLyogcm9wX3dhaXRzX2Zvcl9z aGFkZXIgKi8KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBudjUwX2h3X3BtX2V2ZW50X2NmZwo+ICtu djUwX3JvcF93YWl0c19mb3Jfc2hhZGVyX2V2ZW50ID0KPiArewo+ICsgICAubmFtZSAgICA9ICJy b3Bfd2FpdHNfZm9yX3NoYWRlciIsCj4gKyAgIC5kZXNjICAgID0gIlRoaXMgaXMgYSBtZWFzdXJl bWVudCBvZiBob3cgb2Z0ZW4gdGhlIGJsZW5kaW5nIHVuaXQgd2FzICIKPiArICAgICAgICAgICAg ICAid2FpdGluZyBvbiBuZXcgd29yayAoZnJhZ21lbnRzIHRvIGJlIHBsYWNlZCBpbnRvIHRoZSBy ZW5kZXIgIgo+ICsgICAgICAgICAgICAgICJ0YXJnZXQpLiBJZiB0aGUgcGl4ZWwgc2hhZGVycyBh cmUgcGFydGljdWxhcmx5IGV4cGVuc2l2ZSwgdGhlICIKPiArICAgICAgICAgICAgICAiUk9QIHVu aXQgY291bGQgYmUgc3RhcnZlZCB3YWl0aW5nIGZvciByZXN1bHRzLiIsCj4gKyAgIC5kaXNwbGF5 ID0gTlY1MF9IV19QTV9FVkVOVF9ESVNQTEFZX1JBVElPLAo+ICsgICAuY291bnQgICA9IE5WNTBf SFdfUE1fRVZFTlRfQ09VTlRfU0lNUExFLAo+ICsgICAuZG9tYWluICA9IDIsCj4gK307Cj4gKwo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IG52NTBfaHdfcG1fcXVlcnlfY2ZnCj4gK252NTBfcm9wX3dh aXRzX2Zvcl9zaGFkZXJfcXVlcnkgPQo+ICt7Cj4gKyAgIC5ldmVudCAgPSAmbnY1MF9yb3Bfd2Fp dHNfZm9yX3NoYWRlcl9ldmVudCwKPiArICAgLmN0clswXSA9IENUUigweDIyMjIsIFNJRygicGMw Ml9wcm9wXzYiLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNSQygicGdyYXBoX3Rw YzBfcHJvcF9wbV9tdXhfc2VsIiwgMHgwKSksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBT SUcoInBjMDJfcHJvcF83IikpLAo+ICt9Owo+ICsKPiArLyogcm9wX3NhbXBsZXNfa2lsbGVkX2J5 X2Vhcmx5el9jb3VudCAqLwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG52NTBfaHdfcG1fZXZlbnRf Y2ZnCj4gK252NTBfcm9wX3NhbXBsZXNfa2lsbGVkX2J5X2Vhcmx5el9ldmVudCA9Cj4gK3sKPiAr ICAgLm5hbWUgICAgPSAicm9wX3NhbXBsZXNfa2lsbGVkX2J5X2Vhcmx5el9jb3VudCIsCj4gKyAg IC5kZXNjICAgID0gIlRoaXMgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHBpeGVscyB0aGF0IHdlcmUg a2lsbGVkIGluIHRoZSAiCj4gKyAgICAgICAgICAgICAgImVhcmx5WiBoYXJkd2FyZS4gVGhpcyBz aWduYWwgd2lsbCBnaXZlIHlvdSBhbiBpZGVhIG9mLCBmb3IgIgo+ICsgICAgICAgICAgICAgICJp bnN0YW5jZSwgYSBaIG9ubHkgcGFzcyB3YXMgc3VjY2Vzc2Z1bCBpbiBzZXR0aW5nIHVwIHRoZSBk ZXB0aCAiCj4gKyAgICAgICAgICAgICAgImJ1ZmZlci4iLAo+ICsgICAuZGlzcGxheSA9IE5WNTBf SFdfUE1fRVZFTlRfRElTUExBWV9SQVcsCj4gKyAgIC5jb3VudCAgID0gTlY1MF9IV19QTV9FVkVO VF9DT1VOVF9CNiwKPiArICAgLmRvbWFpbiAgPSAyLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0 IHN0cnVjdCBudjUwX2h3X3BtX3F1ZXJ5X2NmZwo+ICtudjUwX3JvcF9zYW1wbGVzX2tpbGxlZF9i eV9lYXJseXpfcXVlcnkgPQo+ICt7Cj4gKyAgIC5ldmVudCAgPSAmbnY1MF9yb3Bfc2FtcGxlc19r aWxsZWRfYnlfZWFybHl6X2V2ZW50LAo+ICsgICAuY3RyWzFdID0gQ1RSKDB4ZmZmZiwgU0lHKCJw YzAyX3Byb3BfMDAiLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNSQygicGdyYXBo X3RwYzBfcHJvcF9wbV9tdXhfc2VsIiwgMHgxYSkpLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgU0lHKCJwYzAyX3Byb3BfMDEiKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIFNJRygi cGMwMl9wcm9wXzAyIiksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBTSUcoInBjMDJfcHJv cF8wMyIpKSwKPiArICAgLmN0clsyXSA9IENUUigweDU1NTUsIFNJRygicGMwMl9wcm9wXzA3Iiks Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBTSUcoInBjMDJfdHJhaWxlciIpLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgU0lHKCJwYzAyX3Byb3BfMDQiKSwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgIFNJRygicGMwMl9wcm9wXzA1IikpLAo+ICt9Owo+ICsKPiArLyogcm9wX3Nh bXBsZXNfa2lsbGVkX2J5X2xhdGV6X2NvdW50ICovCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbnY1 MF9od19wbV9ldmVudF9jZmcKPiArbnY1MF9yb3Bfc2FtcGxlc19raWxsZWRfYnlfbGF0ZXpfZXZl bnQgPQo+ICt7Cj4gKyAgIC5uYW1lICAgID0gInJvcF9zYW1wbGVzX2tpbGxlZF9ieV9sYXRlel9j b3VudCIsCj4gKyAgIC5kZXNjICAgID0gIlRoaXMgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHBpeGVs cyB0aGF0IHdlcmUga2lsbGVkIGFmdGVyIHRoZSAiCj4gKyAgICAgICAgICAgICAgInBpeGVsIHNo YWRlciByYW4uIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgZWFybHkgWiBpcyB1bmFibGUgdG8gIgo+ ICsgICAgICAgICAgICAgICJjdWxsIHRoZSBwaXhlbCBiZWNhdXNlIG9mIGFuIEFQSSBzZXR1cCBp c3N1ZSBsaWtlIGNoYW5naW5nIHRoZSAiCj4gKyAgICAgICAgICAgICAgIlogZGlyZWN0aW9uIG9y IG1vZGlmeWluZyBaIGluIHRoZSBwaXhlbCBzaGFkZXIuIiwKPiArICAgLmRpc3BsYXkgPSBOVjUw X0hXX1BNX0VWRU5UX0RJU1BMQVlfUkFXLAo+ICsgICAuY291bnQgICA9IE5WNTBfSFdfUE1fRVZF TlRfQ09VTlRfQjYsCj4gKyAgIC5kb21haW4gID0gMiwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgbnY1MF9od19wbV9xdWVyeV9jZmcKPiArbnY1MF9yb3Bfc2FtcGxlc19raWxsZWRf YnlfbGF0ZXpfcXVlcnkgPQo+ICt7Cj4gKyAgIC5ldmVudCAgPSAmbnY1MF9yb3Bfc2FtcGxlc19r aWxsZWRfYnlfbGF0ZXpfZXZlbnQsCj4gKyAgIC5jdHJbMV0gPSBDVFIoMHhmZmZmLCBTSUcoInBj MDJfcHJvcF8wMCIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1JDKCJwZ3JhcGhf dHBjMF9wcm9wX3BtX211eF9zZWwiLCAweDFiKSksCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICBTSUcoInBjMDJfcHJvcF8wMSIpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgU0lHKCJw YzAyX3Byb3BfMDIiKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIFNJRygicGMwMl9wcm9w XzAzIikpLAo+ICsgICAuY3RyWzJdID0gQ1RSKDB4NTU1NSwgU0lHKCJwYzAyX3Byb3BfMDciKSwK PiArICAgICAgICAgICAgICAgICAgICAgICAgIFNJRygicGMwMl90cmFpbGVyIiksCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICBTSUcoInBjMDJfcHJvcF8wNCIpLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgU0lHKCJwYzAyX3Byb3BfMDUiKSksCj4gK307Cj4gKwo+ICsvKgo+ICsgKiBU RVhUVVJFCj4gKyAqLwo+ICsvKiB0ZXhfY2FjaGVfbWlzcyAqLwo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IG52NTBfaHdfcG1fZXZlbnRfY2ZnCj4gK252NTBfdGV4X2NhY2hlX21pc3NfZXZlbnQgPQo+ ICt7Cj4gKyAgIC5uYW1lICAgID0gInRleF9jYWNoZV9taXNzIiwKPiArICAgLmRlc2MgICAgPSAi TnVtYmVyIG9mIHRleHR1cmUgY2FjaGUgbWlzc2VzLiIsCj4gKyAgIC5kaXNwbGF5ID0gTlY1MF9I V19QTV9FVkVOVF9ESVNQTEFZX1JBVywKPiArICAgLmNvdW50ICAgPSBOVjUwX0hXX1BNX0VWRU5U X0NPVU5UX1NJTVBMRSwKPiArICAgLmRvbWFpbiAgPSAyLAo+ICt9Owo+ICsKPiArc3RhdGljIGNv bnN0IHN0cnVjdCBudjUwX2h3X3BtX3F1ZXJ5X2NmZwo+ICtudjUwX3RleF9jYWNoZV9taXNzX3F1 ZXJ5ID0KPiArewo+ICsgICAuZXZlbnQgID0gJm52NTBfdGV4X2NhY2hlX21pc3NfZXZlbnQsCj4g KyAgIC5jdHJbMF0gPSBDVFIoMHhhYWFhLCBTSUcoInBjMDJfdGV4XzA0IiwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTUkMoInBncmFwaF90cGMwX3RleF91bmswOF91bmswIiwgMHgy MDApKSksCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG52NTBfaHdfcG1fcXVlcnlf Y2ZnCj4gK252ODRfdGV4X2NhY2hlX21pc3NfcXVlcnkgPQo+ICt7Cj4gKyAgIC5ldmVudCAgPSAm bnY1MF90ZXhfY2FjaGVfbWlzc19ldmVudCwKPiArICAgLmN0clswXSA9IENUUigweGFhYWEsIFNJ RygicGMwMl90ZXhfMDQiLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNSQygicGdy YXBoX3RwYzBfdGV4X3VuazA4X3VuazAiLCAweDgwMCkpKSwKPiArfTsKPiArCj4gKy8qIHRleF9j YWNoZV9oaXQgKi8KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBudjUwX2h3X3BtX2V2ZW50X2NmZwo+ ICtudjUwX3RleF9jYWNoZV9oaXRfZXZlbnQgPQo+ICt7Cj4gKyAgIC5uYW1lICAgID0gInRleF9j YWNoZV9oaXQiLAo+ICsgICAuZGVzYyAgICA9ICJOdW1iZXIgb2YgdGV4dHVyZSBjYWNoZSBoaXRz LiIsCj4gKyAgIC5kaXNwbGF5ID0gTlY1MF9IV19QTV9FVkVOVF9ESVNQTEFZX1JBVywKPiArICAg LmNvdW50ICAgPSBOVjUwX0hXX1BNX0VWRU5UX0NPVU5UX1NJTVBMRSwKPiArICAgLmRvbWFpbiAg PSAyLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBudjUwX2h3X3BtX3F1ZXJ5X2Nm Zwo+ICtudjUwX3RleF9jYWNoZV9oaXRfcXVlcnkgPQo+ICt7Cj4gKyAgIC5ldmVudCAgPSAmbnY1 MF90ZXhfY2FjaGVfaGl0X2V2ZW50LAo+ICsgICAuY3RyWzBdID0gQ1RSKDB4YWFhYSwgU0lHKCJw YzAyX3RleF8wNSIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1JDKCJwZ3JhcGhf dHBjMF90ZXhfdW5rMDhfdW5rMCIsIDB4MjAwKSkpLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0 IHN0cnVjdCBudjUwX2h3X3BtX3F1ZXJ5X2NmZwo+ICtudjg0X3RleF9jYWNoZV9oaXRfcXVlcnkg PQo+ICt7Cj4gKyAgIC5ldmVudCAgPSAmbnY1MF90ZXhfY2FjaGVfaGl0X2V2ZW50LAo+ICsgICAu Y3RyWzBdID0gQ1RSKDB4YWFhYSwgU0lHKCJwYzAyX3RleF8wNSIsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU1JDKCJwZ3JhcGhfdHBjMF90ZXhfdW5rMDhfdW5rMCIsIDB4ODAwKSkp LAo+ICt9Owo+ICsKPiArLyogdGV4X3dhaXRzX2Zvcl9mYiAqLwo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IG52NTBfaHdfcG1fZXZlbnRfY2ZnCj4gK252NTBfdGV4X3dhaXRzX2Zvcl9mYl9ldmVudCA9 Cj4gK3sKPiArICAgLm5hbWUgICAgPSAidGV4X3dhaXRzX2Zvcl9mYiIsCj4gKyAgIC5kZXNjICAg ID0gIlRoaXMgaXMgdGhlIGFtb3VudCBvZiB0aW1lIHRoZSB0ZXh0dXJlIHVuaXQgc3BlbnQgd2Fp dGluZyBvbiAiCj4gKyAgICAgICAgICAgICAgInNhbXBsZXMgdG8gcmV0dXJuIGZyb20gdGhlIGZy YW1lIGJ1ZmZlciB1bml0LiBJdCBpcyBhIHBvdGVudGlhbCAiCj4gKyAgICAgICAgICAgICAgImlu ZGljYXRpb24gb2YgcG9vciB0ZXh0dXJlIGNhY2hlIHV0aWxpemF0aW9uLiIsCj4gKyAgIC5kaXNw bGF5ID0gTlY1MF9IV19QTV9FVkVOVF9ESVNQTEFZX1JBVElPLAo+ICsgICAuY291bnQgICA9IE5W NTBfSFdfUE1fRVZFTlRfQ09VTlRfU0lNUExFLAo+ICsgICAuZG9tYWluICA9IDIsCj4gK307Cj4g Kwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG52NTBfaHdfcG1fcXVlcnlfY2ZnCj4gK252NTBfdGV4 X3dhaXRzX2Zvcl9mYl9xdWVyeSA9Cj4gK3sKPiArICAgLmV2ZW50ICA9ICZudjUwX3RleF93YWl0 c19mb3JfZmJfZXZlbnQsCj4gKyAgIC5jdHJbMF0gPSBDVFIoMHhhYWFhLCBTSUcoInBjMDJfdGV4 XzA2IiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTUkMoInBncmFwaF90cGMwX3Rl eF91bmswOF91bmswIiwgMHgyMDApKSksCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IG52NTBfaHdfcG1fcXVlcnlfY2ZnCj4gK252ODRfdGV4X3dhaXRzX2Zvcl9mYl9xdWVyeSA9Cj4g K3sKPiArICAgLmV2ZW50ICA9ICZudjUwX3RleF93YWl0c19mb3JfZmJfZXZlbnQsCj4gKyAgIC5j dHJbMF0gPSBDVFIoMHhhYWFhLCBTSUcoInBjMDJfdGV4XzA2IiwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTUkMoInBncmFwaF90cGMwX3RleF91bmswOF91bmswIiwgMHg4MDApKSks Cj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG52NTBfaHdfcG1fcXVlcnlfY2ZnICpu djUwX2h3X3BtX3F1ZXJpZXNbTlY1MF9IV19QTV9RVUVSWV9DT1VOVF07Cj4gKwo+ICsjZGVmaW5l IF9RKG4sIHEpIG52NTBfaHdfcG1fcXVlcmllc1tOVjUwX0hXX1BNX1FVRVJZXyMjbl0gPSAmcTsK PiArCj4gK3N0YXRpYyB2b2lkCj4gK252NTBfaWRlbnRpZnlfZXZlbnRzKHN0cnVjdCBudjUwX3Nj cmVlbiAqc2NyZWVuKQo+ICt7Cj4gKyAgX1EoR1BVX0lETEUsICAgICAgICAgICAgICAgICAgICAg IG52NTBfZ3B1X2lkbGVfcXVlcnkpOwo+ICsgIF9RKElBX0JVU1ksICAgICAgICAgICAgICAgICAg ICAgICBudjUwX2lhX2J1c3lfcXVlcnkpOwo+ICsgIF9RKElBX1dBSVRTX0ZPUl9GQiwgICAgICAg ICAgICAgICBudjUwX2lhX3dhaXRzX2Zvcl9mYl9xdWVyeSk7Cj4gKyAgX1EoVkVSVEVYX0FUVFJf Q09VTlQsICAgICAgICAgICAgIG52NTBfdmVydGV4X2F0dHJfY291bnRfcXVlcnkpOwo+ICsgIF9R KEdFT01fVkVSVEVYX0lOX0NPVU5ULCAgICAgICAgICBudjUwX2dlb21fdmVydGV4X2luX2NvdW50 X3F1ZXJ5KTsKPiArICBfUShHRU9NX1ZFUlRFWF9PVVRfQ09VTlQsICAgICAgICAgbnY1MF9nZW9t X3ZlcnRleF9vdXRfY291bnRfcXVlcnkpOwo+ICsgIF9RKEdFT01fUFJJTUlUSVZFX0lOX0NPVU5U LCAgICAgICBudjUwX2dlb21fcHJpbWl0aXZlX2luX2NvdW50X3F1ZXJ5KTsKPiArICBfUShHRU9N X1BSSU1JVElWRV9PVVRfQ09VTlQsICAgICAgbnY1MF9nZW9tX3ByaW1pdGl2ZV9vdXRfY291bnRf cXVlcnkpOwo+ICsgIF9RKFNPX0JVU1ksICAgICAgICAgICAgICAgICAgICAgICBudjUwX3NvX2J1 c3lfcXVlcnkpOwo+ICsgIF9RKFNFVFVQX1BSSU1JVElWRV9DT1VOVCwgICAgICAgICBudjUwX3Nl dHVwX3ByaW1pdGl2ZV9jb3VudF9xdWVyeSk7Cj4gKyAgX1EoU0VUVVBfUE9JTlRfQ09VTlQsICAg ICAgICAgICAgIG52NTBfc2V0dXBfcG9pbnRfY291bnRfcXVlcnkpOwo+ICsgIF9RKFNFVFVQX0xJ TkVfQ09VTlQsICAgICAgICAgICAgICBudjUwX3NldHVwX2xpbmVfY291bnRfcXVlcnkpOwo+ICsg IF9RKFNFVFVQX1RSSUFOR0xFX0NPVU5ULCAgICAgICAgICBudjUwX3NldHVwX3RyaWFuZ2xlX2Nv dW50X3F1ZXJ5KTsKPiArICBfUShTRVRVUF9QUklNSVRJVkVfQ1VMTEVEX0NPVU5ULCAgbnY1MF9z ZXR1cF9wcmltaXRpdmVfY3VsbGVkX2NvdW50X3F1ZXJ5KTsKPiArICBfUShSQVNUX1RJTEVTX0tJ TExFRF9CWV9aQ1VMTCwgICAgbnY1MF9yYXN0X3RpbGVzX2tpbGxlZF9ieV96Y3VsbF9xdWVyeSk7 Cj4gKyAgX1EoUkFTVF9USUxFU19JTl9DT1VOVCwgICAgICAgICAgIG52NTBfcmFzdF90aWxlc19p bl9jb3VudF9xdWVyeSk7Cj4gKyAgX1EoUk9QX0JVU1ksICAgICAgICAgICAgICAgICAgICAgIG52 NTBfcm9wX2J1c3lfcXVlcnkpOwo+ICsgIF9RKFJPUF9XQUlUU19GT1JfRkIsICAgICAgICAgICAg ICBudjUwX3JvcF93YWl0c19mb3JfZmJfcXVlcnkpOwo+ICsgIF9RKFJPUF9XQUlUU19GT1JfU0hB REVSLCAgICAgICAgICBudjUwX3JvcF93YWl0c19mb3Jfc2hhZGVyX3F1ZXJ5KTsKPiArICBfUShS T1BfU0FNUExFU19LSUxMRURfQllfRUFSTFlaLCAgbnY1MF9yb3Bfc2FtcGxlc19raWxsZWRfYnlf ZWFybHl6X3F1ZXJ5KTsKPiArICBfUShST1BfU0FNUExFU19LSUxMRURfQllfTEFURVosICAgbnY1 MF9yb3Bfc2FtcGxlc19raWxsZWRfYnlfbGF0ZXpfcXVlcnkgKTsKPiArICBfUShURVhfQ0FDSEVf TUlTUywgICAgICAgICAgICAgICAgbnY1MF90ZXhfY2FjaGVfbWlzc19xdWVyeSk7Cj4gKyAgX1Eo VEVYX0NBQ0hFX0hJVCwgICAgICAgICAgICAgICAgIG52NTBfdGV4X2NhY2hlX2hpdF9xdWVyeSk7 Cj4gKyAgX1EoVEVYX1dBSVRTX0ZPUl9GQiwgICAgICAgICAgICAgIG52NTBfdGV4X3dhaXRzX2Zv cl9mYl9xdWVyeSk7Cj4gKwo+ICsgICBpZiAoc2NyZWVuLT5iYXNlLmNsYXNzXzNkID49IE5WODRf M0RfQ0xBU1MpIHsKPiArICAgICAgLyogVmFyaWFudHMgZm9yIE5WODQrICovCj4gKyAgICAgIF9R KFRFWF9DQUNIRV9NSVNTLCAgIG52ODRfdGV4X2NhY2hlX21pc3NfcXVlcnkpOwo+ICsgICAgICBf UShURVhfQ0FDSEVfSElULCAgICBudjg0X3RleF9jYWNoZV9oaXRfcXVlcnkpOwo+ICsgICAgICBf UShURVhfV0FJVFNfRk9SX0ZCLCBudjg0X3RleF93YWl0c19mb3JfZmJfcXVlcnkpOwo+ICsgICB9 Cj4gKwo+ICsgICBpZiAoc2NyZWVuLT5iYXNlLmNsYXNzXzNkID49IE5WQTBfM0RfQ0xBU1MpIHsK PiArICAgICAgLyogVmFyaWFudHMgZm9yIE5WQTArICovCj4gKyAgICAgIF9RKElBX0JVU1ksICAg ICAgICAgICBudmEwX2lhX2J1c3lfcXVlcnkpOwo+ICsgICAgICBfUShJQV9XQUlUU19GT1JfRkIs ICAgbnZhMF9pYV93YWl0c19mb3JfZmJfcXVlcnkpOwo+ICsgICAgICBfUShWRVJURVhfQVRUUl9D T1VOVCwgbnZhMF92ZXJ0ZXhfYXR0cl9jb3VudF9xdWVyeSk7Cj4gKyAgIH0KPiArfQo+ICsKPiAr I3VuZGVmIF9RCj4gKwo+ICsjaWZkZWYgREVCVUcKPiArc3RhdGljIHZvaWQKPiArbnY1MF9od19w bV9kdW1wX3BlcmZkb20oc3RydWN0IG52aWZfcGVyZmRvbV92MCAqYXJncykKPiArewo+ICsgICBp bnQgaSwgaiwgazsKPiArCj4gKyAgIGRlYnVnX3ByaW50ZigiUEVSRkRPTSBDT05GSUdVUkFUSU9O OlxuIik7Cj4gKyAgIGRlYnVnX3ByaW50ZigiZG9tYWluZTogMHglMDJ4XG4iLCBhcmdzLT5kb21h aW4pOwo+ICsgICBkZWJ1Z19wcmludGYoIm1vZGU6IDB4JTAyeFxuIiwgYXJncy0+bW9kZSk7Cj4g KyAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKPiArICAgICAgdWludDMyX3Qgc2lnbmFsID0g MDsKPiArICAgICAgZm9yIChqID0gMDsgaiA8IDQ7IGorKykKPiArICAgICAgICAgc2lnbmFsIHw9 IGFyZ3MtPmN0cltpXS5zaWduYWxbal0gPDwgKGogKiA4KTsKPiArCj4gKyAgICAgIGRlYnVnX3By aW50ZigiY3RyWyVkXTogZnVuYyA9IDB4JTA0eCwgc2lnbmFsPTB4JTA4eFxuIiwKPiArICAgICAg ICAgICAgICAgICAgIGksIGFyZ3MtPmN0cltpXS5sb2dpY19vcCwgc2lnbmFsKTsKPiArCj4gKyAg ICAgIGZvciAoaiA9IDA7IGogPCA0OyBqKyspIHsKPiArICAgICAgICAgZm9yIChrID0gMDsgayA8 IDg7IGsrKykgewo+ICsgICAgICAgICAgICB1aW50MzJfdCBzb3VyY2UsIHZhbHVlOwo+ICsgICAg ICAgICAgICBpZiAoIWFyZ3MtPmN0cltpXS5zb3VyY2Vbal1ba10pCj4gKyAgICAgICAgICAgICAg IGNvbnRpbnVlOwo+ICsKPiArICAgICAgICAgICAgc291cmNlID0gYXJncy0+Y3RyW2ldLnNvdXJj ZVtqXVtrXTsKPiArICAgICAgICAgICAgdmFsdWUgID0gYXJncy0+Y3RyW2ldLnNvdXJjZVtqXVtr XSA+PiAzMjsKPiArICAgICAgICAgICAgZGVidWdfcHJpbnRmKCIgIHNyY1slZF1bJWRdOiBzb3Vy Y2UgPSAweCUwOHgsIHZhbHVlID0gMHglMDh4XG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgaiwgaywgc291cmNlLCB2YWx1ZSk7Cj4gKyAgICAgICAgIH0KPiArICAgICAgfQo+ICsgICB9 Cj4gK30KPiArI2VuZGlmCj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG52NTBfaHdfcG1fcXVl cnlfY2ZnICoKPiArbnY1MF9od19wbV9xdWVyeV9nZXRfY2ZnKHN0cnVjdCBudjUwX3NjcmVlbiAq c2NyZWVuLCB1aW50MzJfdCBxdWVyeV90eXBlKQo+ICt7Cj4gKyAgIHJldHVybiBudjUwX2h3X3Bt X3F1ZXJpZXNbcXVlcnlfdHlwZSAtIE5WNTBfSFdfUE1fUVVFUlkoMCldOwo+ICt9Cj4gKwo+ICtz dGF0aWMgYm9vbGVhbgo+ICtudjUwX2h3X3BtX3F1ZXJ5X2NyZWF0ZShzdHJ1Y3QgbnY1MF9jb250 ZXh0ICpudjUwLCBzdHJ1Y3QgbnY1MF9xdWVyeSAqcSkKPiArewo+ICsgICBzdHJ1Y3QgbnY1MF9z Y3JlZW4gKnNjcmVlbiA9IG52NTAtPnNjcmVlbjsKPiArICAgc3RydWN0IG5vdXZlYXVfcGVyZm1v biAqcGVyZm1vbiA9IHNjcmVlbi0+YmFzZS5wZXJmbW9uOwo+ICsgICBzdGF0aWMgY29uc3Qgc3Ry dWN0IG52NTBfaHdfcG1fcXVlcnlfY2ZnICpjZmc7Cj4gKyAgIHN0cnVjdCBudmlmX3BlcmZkb21f djAgYXJncyA9IHt9Owo+ICsgICBzdHJ1Y3Qgbm91dmVhdV9wZXJmbW9uX2RvbSAqZG9tOwo+ICsg ICBpbnQgaSwgaiwgazsKPiArICAgaW50IHJldDsKPiArCj4gKyAgIGlmICghc2NyZWVuLT5wbS5u dW1fYWN0aXZlKSB7Cj4gKyAgICAgIC8qIFRPRE86IEN1cnJlbnRseSwgb25seSBvbmUgcXVlcnkg dHlwZSBjYW4gYmUgbW9uaXRvcmVkIHNpbXVsdGFuZW91c2x5Cj4gKyAgICAgICAqIGJlY2F1c2Ug dGhlIEdhbGxpdW0ncyBIVUQgZG9lc24ndCBmaXQgd2VsbCB3aXRoIHRoZSBwZXJmZG9tIGludGVy ZmFjZS4KPiArICAgICAgICoKPiArICAgICAgICogV2l0aCB0d28gZGlmZmVyZW50IHF1ZXJ5IHR5 cGVzLCB0aGUgY3VycmVudCBzY2VuYXJpbyBpcyBhcyBmb2xsb3dzOgo+ICsgICAgICAgKiBDUkVB VEUgUTEsIEJFR0lOIFExLCBDUkVBVEUgUTIsIEJFR0lOIFEyLCBFTkQgUTEsIFJFU1VMVCBRMSwg QkVHSU4gUTEsCj4gKyAgICAgICAqIEVORCBRMiwgUkVTVUxUIFEyLCBCRUdJTiBRMiwgRU5EIFEx LCBhbmQgc28gb24uCj4gKyAgICAgICAqCj4gKyAgICAgICAqIFRoaXMgYmVoYXZpb3VyIGRvZXNu J3QgYWxsb3cgdG8gc2NoZWR1bGUgbXVsdGlwbGUgY291bnRlcnMgYmVjYXVzZQo+ICsgICAgICAg KiB3ZSBoYXZlIHRvIGRvIHRoYXQgYXQgcXVlcnkgY3JlYXRpb24gKGllLiB3aGVuIGEgcGVyZmRv bSBpcyBjcmVhdGVkKS4KPiArICAgICAgICoKPiArICAgICAgICogVG8gZ2V0IHJpZCBvZiB0aGlz IGxpbWl0YXRpb24sIGEgYmV0dGVyIHNjZW5hcmlvIHdvdWxkIGJlOgo+ICsgICAgICAgKiBDUkVB VEUgUTEsIENSRUFURSBRMiwgQkVHSU4gUTEsIEJFR0lOIFEyLCBFTkQgUTEsIEVORCBRMiwgUkVT VUxUIFExLAo+ICsgICAgICAgKiBSRVNVTFQgUTIsIEJFR0lOIFExLCBCRUdJTiBRMiwgRU5EIFEx LCBhbmQgc28gb24uCj4gKyAgICAgICAqCj4gKyAgICAgICAqIFdpdGggdGhpcyBraW5kIG9mIGJl aGF2aW91ciwgd2UgY291bGQgaW50cm9kdWNlCj4gKyAgICAgICAqIHtjcmVhdGUsYmVnaW4sZW5k fV9hbGxfcXVlcmllcygpIGZ1bmN0aW9ucyB0byBiZSBhYmxlIHRvIGNvbmZpZ3VyZQo+ICsgICAg ICAgKiBhbGwgcXVlcmllcyBpbiBvbmUgc2hvdC4KPiArICAgICAgICovCj4gKyAgICAgIHNjcmVl bi0+cG0ucXVlcnlfdHlwZSA9IHEtPnR5cGU7Cj4gKyAgIH0KPiArICAgc2NyZWVuLT5wbS5udW1f YWN0aXZlKys7Cj4gKwo+ICsgICBpZiAoc2NyZWVuLT5wbS5xdWVyeV90eXBlICE9IHEtPnR5cGUp IHsKPiArICAgICAgTk9VVkVBVV9FUlIoIk9ubHkgb25lIHF1ZXJ5IHR5cGUgY2FuIGJlIG1vbml0 b3JlZCBhdCB0aGUgc2FtZSB0aW1lISIpOwo+ICsgICAgICByZXR1cm4gRkFMU0U7Cj4gKyAgIH0K PiArCj4gKyAgIGNmZyA9IG52NTBfaHdfcG1fcXVlcnlfZ2V0X2NmZyhudjUwLT5zY3JlZW4sIHEt PnR5cGUpOwo+ICsKPiArICAgZG9tID0gbm91dmVhdV9wZXJmbW9uX2dldF9kb21fYnlfaWQocGVy Zm1vbiwgY2ZnLT5ldmVudC0+ZG9tYWluKTsKPiArICAgaWYgKCFkb20pIHsKPiArICAgICAgTk9V VkVBVV9FUlIoIkZhaWxlZCB0byBmaW5kIGRvbWFpbiAlZFxuIiwgY2ZnLT5ldmVudC0+ZG9tYWlu KTsKPiArICAgICAgcmV0dXJuIEZBTFNFOwo+ICsgICB9Cj4gKwo+ICsgICAvKiBjb25maWd1cmUg ZG9tYWluIGFuZCBjb3VudGluZyBtb2RlICovCj4gKyAgIGFyZ3MuZG9tYWluID0gZG9tLT5pZDsK PiArICAgYXJncy5tb2RlICAgPSBjZmctPmV2ZW50LT5jb3VudDsKPiArCj4gKyAgIC8qIGNvbmZp Z3VyZSBjb3VudGVycyBmb3IgdGhpcyBoYXJkd2FyZSBldmVudCAqLwo+ICsgICBmb3IgKGkgPSAw OyBpIDwgQVJSQVlfU0laRShjZmctPmN0cik7IGkrKykgewo+ICsgICAgICBjb25zdCBzdHJ1Y3Qg bnY1MF9od19wbV9jb3VudGVyX2NmZyAqc2N0ciA9ICZjZmctPmN0cltpXTsKPiArCj4gKyAgICAg IGlmICghc2N0ci0+bG9naWNfb3ApCj4gKyAgICAgICAgIGNvbnRpbnVlOwo+ICsgICAgICBhcmdz LmN0cltpXS5sb2dpY19vcCA9IHNjdHItPmxvZ2ljX29wOwo+ICsKPiArICAgICAgLyogY29uZmln dXJlIHNpZ25hbHMgZm9yIHRoaXMgY291bnRlciAqLwo+ICsgICAgICBmb3IgKGogPSAwOyBqIDwg QVJSQVlfU0laRShzY3RyLT5zaWcpOyBqKyspIHsKPiArICAgICAgICAgY29uc3Qgc3RydWN0IG52 NTBfaHdfcG1fc2lnbmFsX2NmZyAqc3NpZyA9ICZzY3RyLT5zaWdbal07Cj4gKyAgICAgICAgIHN0 cnVjdCBub3V2ZWF1X3BlcmZtb25fc2lnICpzaWc7Cj4gKwo+ICsgICAgICAgICBpZiAoIXNzaWct Pm5hbWUpCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsKPiArICAgICAgICAgc2lnID0gbm91 dmVhdV9wZXJmbW9uX2dldF9zaWdfYnlfbmFtZShkb20sIHNzaWctPm5hbWUpOwo+ICsgICAgICAg ICBpZiAoIXNpZykgewo+ICsgICAgICAgICAgICBOT1VWRUFVX0VSUigiRmFpbGVkIHRvIGZpbmQg c2lnbmFsICVzXG4iLCBzc2lnLT5uYW1lKTsKPiArICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwo+ ICsgICAgICAgICB9Cj4gKyAgICAgICAgIGFyZ3MuY3RyW2ldLnNpZ25hbFtqXSA9IHNpZy0+c2ln bmFsOwo+ICsKPiArICAgICAgICAgLyogY29uZmlndXJlIHNvdXJjZXMgZm9yIHRoaXMgc2lnbmFs ICovCj4gKyAgICAgICAgIGZvciAoayA9IDA7IGsgPCBBUlJBWV9TSVpFKHNzaWctPnNyYyk7IGsr Kykgewo+ICsgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbnY1MF9od19wbV9zb3VyY2VfY2ZnICpz c3JjID0gJnNzaWctPnNyY1trXTsKPiArICAgICAgICAgICAgc3RydWN0IG5vdXZlYXVfcGVyZm1v bl9zcmMgKnNyYzsKPiArCj4gKyAgICAgICAgICAgIGlmICghc3NyYy0+bmFtZSkKPiArICAgICAg ICAgICAgICAgY29udGludWU7Cj4gKwo+ICsgICAgICAgICAgICBzcmMgPSBub3V2ZWF1X3BlcmZt b25fZ2V0X3NyY19ieV9uYW1lKHNpZywgc3NyYy0+bmFtZSk7Cj4gKyAgICAgICAgICAgIGlmICgh c3JjKSB7Cj4gKyAgICAgICAgICAgICAgIE5PVVZFQVVfRVJSKCJGYWlsZWQgdG8gZmluZCBzb3Vy Y2UgJXNcbiIsIHNzcmMtPm5hbWUpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7Cj4g KyAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgYXJncy5jdHJbaV0uc291cmNlW2pdW2tdID0g KHNzcmMtPnZhbHVlIDw8IDMyKSB8IHNyYy0+aWQ7Cj4gKyAgICAgICAgIH0KPiArICAgICAgfQo+ ICsgICB9Cj4gKwo+ICsjaWZkZWYgREVCVUcKPiArICAgaWYgKGRlYnVnX2dldF9udW1fb3B0aW9u KCJOVjUwX1BNX0RFQlVHIiwgMCkpCj4gKyAgICAgIG52NTBfaHdfcG1fZHVtcF9wZXJmZG9tKCZh cmdzKTsKPiArI2VuZGlmCj4gKwo+ICsgICByZXQgPSBub3V2ZWF1X29iamVjdF9uZXcocGVyZm1v bi0+b2JqZWN0LCBwZXJmbW9uLT5oYW5kbGUrKywKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE5WSUZfSU9DVExfTkVXX1YwX1BFUkZET00sCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmYXJncywgc2l6ZW9mKGFyZ3MpLCAmcS0+cGVyZmRvbSk7Cj4gKyAgIGlmIChyZXQpIHsK PiArICAgICAgTk9VVkVBVV9FUlIoIkZhaWxlZCB0byBjcmVhdGUgcGVyZmRvbSBvYmplY3Q6ICVk XG4iLCByZXQpOwo+ICsgICAgICByZXR1cm4gRkFMU0U7Cj4gKyAgIH0KPiArCj4gKyAgIHJldHVy biBUUlVFOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICtudjUwX2h3X3BtX3F1ZXJ5X2Rlc3Ry b3koc3RydWN0IG52NTBfY29udGV4dCAqbnY1MCwgc3RydWN0IG52NTBfcXVlcnkgKnEpCj4gK3sK PiArICAgc3RydWN0IG52NTBfc2NyZWVuICpzY3JlZW4gPSBudjUwLT5zY3JlZW47Cj4gKwo+ICsg ICBub3V2ZWF1X29iamVjdF9kZWwoJnEtPnBlcmZkb20pOwo+ICsgICBzY3JlZW4tPnBtLm51bV9h Y3RpdmUtLTsKPiArfQo+ICsKPiArc3RhdGljIGJvb2xlYW4KPiArbnY1MF9od19wbV9xdWVyeV9i ZWdpbihzdHJ1Y3QgbnY1MF9jb250ZXh0ICpudjUwLCBzdHJ1Y3QgbnY1MF9xdWVyeSAqcSkKPiAr ewo+ICsgICBzdHJ1Y3Qgbm91dmVhdV9wdXNoYnVmICpwdXNoID0gbnY1MC0+YmFzZS5wdXNoYnVm Owo+ICsKPiArICAgLyogc3RhcnQgdGhlIG5leHQgYmF0Y2ggb2YgY291bnRlcnMgKi8KPiArICAg UFVTSF9TUEFDRShwdXNoLCAyKTsKPiArICAgQkVHSU5fTlYwNChwdXNoLCBTVUJDX1NXKDB4MDYw OCksIDEpOwo+ICsgICBQVVNIX0RBVEEgKHB1c2gsIHEtPnBlcmZkb20tPmhhbmRsZSk7Cj4gKwo+ ICsgICByZXR1cm4gVFJVRTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiArbnY1MF9od19wbV9x dWVyeV9lbmQoc3RydWN0IG52NTBfY29udGV4dCAqbnY1MCwgc3RydWN0IG52NTBfcXVlcnkgKnEp Cj4gK3sKPiArICAgc3RydWN0IG5vdXZlYXVfcHVzaGJ1ZiAqcHVzaCA9IG52NTAtPmJhc2UucHVz aGJ1ZjsKPiArICAgc3RydWN0IG52NTBfc2NyZWVuICpzY3JlZW4gPSBudjUwLT5zY3JlZW47Cj4g Kwo+ICsgICAvKiBzZXQgc2VxdWVuY2UgZmllbGQgKHVzZWQgdG8gY2hlY2sgaWYgcmVzdWx0IGlz IGF2YWlsYWJsZSkgKi8KPiArICAgcS0+c2VxdWVuY2UgPSArK3NjcmVlbi0+cG0uc2VxdWVuY2U7 Cj4gKwo+ICsgICAvKiBzYW1wbGUgdGhlIHByZXZpb3VzIGJhdGNoIG9mIGNvdW50ZXJzICovCj4g KyAgIFBVU0hfU1BBQ0UocHVzaCwgMik7Cj4gKyAgIEJFR0lOX05WMDQocHVzaCwgU1VCQ19TVygw eDA2MGMpLCAxKTsKPiArICAgUFVTSF9EQVRBIChwdXNoLCBxLT5wZXJmZG9tLT5oYW5kbGUpOwo+ ICsKPiArICAgLyogcmVhZCBiYWNrIGNvdW50ZXJzIHZhbHVlcyAqLwo+ICsgICBQVVNIX1NQQUNF KHB1c2gsIDIpOwoKRG8gdGhpcyBvbmNlIGFzIFBVU0hfU1BBQ0UoNCkuIE9yIGV2ZW4gYmV0dGVy LCBQVVNIX1NQQUNFKDMpIGFuZCBvbmx5CmRvIDEgYmVnaW4gd2l0aCBsZW5ndGggMi4KCj4gKyAg IEJFR0lOX05WMDQocHVzaCwgU1VCQ19TVygweDA3MDApLCAxKTsKPiArICAgUFVTSF9EQVRBIChw dXNoLCBzY3JlZW4tPnBtLnNlcXVlbmNlKTsKPiArfQo+ICsKPiArc3RhdGljIHZvbGF0aWxlIHZv aWQgKgo+ICtudjUwX250Znkoc3RydWN0IG52NTBfc2NyZWVuICpzY3JlZW4pCj4gK3sKPiArICAg c3RydWN0IG52MDRfbm90aWZ5ICpxdWVyeSA9IHNjcmVlbi0+cXVlcnktPmRhdGE7Cj4gKyAgIHN0 cnVjdCBub3V2ZWF1X2JvICpub3RpZnkgPSBzY3JlZW4tPm5vdGlmeV9ibzsKPiArCj4gKyAgIHJl dHVybiAoY2hhciAqKW5vdGlmeS0+bWFwICsgcXVlcnktPm9mZnNldDsKPiArfQo+ICsKPiArc3Rh dGljIElOTElORSB1aW50MzJfdAo+ICtudjUwX2h3X3BtX3F1ZXJ5X2dldF9vZmZzZXQoc3RydWN0 IG52NTBfcXVlcnkgKnEpCj4gK3sKPiArICAgcmV0dXJuICgxICsgKHEtPnNlcXVlbmNlICUgTlY1 MF9IV19QTV9SSU5HX0JVRkZFUl9NQVhfUVVFUklFUykgKgo+ICsgICAgICAgICAgIE5WNTBfSFdf UE1fUklOR19CVUZGRVJfTlVNX0RPTUFJTlMgKiA2KTsKPiArfQo+ICsKPiArc3RhdGljIElOTElO RSBib29sZWFuCj4gK252NTBfaHdfcG1fcXVlcnlfcmVhZF9kYXRhKHN0cnVjdCBudjUwX2NvbnRl eHQgKm52NTAsIHN0cnVjdCBudjUwX3F1ZXJ5ICpxLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICBib29sZWFuIHdhaXQsIHVpbnQzMl90IGN0cls0XSwgdWludDMyX3QgKmNsaykKPiArewo+ ICsgICB2b2xhdGlsZSB1aW50MzJfdCAqbnRmeSA9IG52NTBfbnRmeShudjUwLT5zY3JlZW4pOwo+ ICsgICB1aW50MzJfdCBvZmZzZXQgPSBudjUwX2h3X3BtX3F1ZXJ5X2dldF9vZmZzZXQocSk7Cj4g KyAgIGJvb2xlYW4gZm91bmQgPSBGQUxTRTsKPiArICAgaW50IGk7Cj4gKwo+ICsgICB3aGlsZSAo bnRmeVswXSA8IHEtPnNlcXVlbmNlKSB7Cj4gKyAgICAgIGlmICghd2FpdCkKPiArICAgICAgICAg cmV0dXJuIEZBTFNFOwo+ICsgICAgICB1c2xlZXAoMTAwKTsKPiArICAgfQoKWWVhaCB0aGlzIHdv bid0IGZseS4gVGFrZSBhIGxvb2sgYXQgbm91dmVhdV9mZW5jZV93YWl0IGZvciBpdCBkb2VzCnRo YXQuIEkgZG9uJ3Qgc3VwcG9zZSB5b3UgY2FuIGhvb2sgaW50byB0aGUgZmVuY2UgbWVjaGFuaXNt IGZvciBhbGwKdGhpcywgaW5zdGVhZCBvZiBpbXBsZW1lbnRpbmcgeW91ciBvd24gdmVyc2lvbiwg cmlnaHQ/CgpCVFcsIHdoYXQgbWFrZXMgc3VyZSB0aGF0IHRoZSBxdWVyeSBoYXMgYmVlbiBraWNr ZWQgb3V0PyBZb3UgbmV2ZXIgZG8KYSBQVVNIX0tJQ0sgdGhhdCBJIGNhbiBzZWUuLi4KCj4gKwo+ ICsgICBpZiAobnRmeVswXSA+IHEtPnNlcXVlbmNlICsgTlY1MF9IV19QTV9SSU5HX0JVRkZFUl9N QVhfUVVFUklFUyAtIDEpCj4gKyAgICAgIHJldHVybiBGQUxTRTsKPiArCj4gKyAgIGZvciAoaSA9 IDA7IGkgPCBOVjUwX0hXX1BNX1JJTkdfQlVGRkVSX05VTV9ET01BSU5TOyBpKyspIHsKPiArICAg ICAgaWYgKG50Znlbb2Zmc2V0ICsgaSAqIDZdID09IHEtPnBlcmZkb20tPmhhbmRsZSkgewo+ICsg ICAgICAgICBmb3VuZCA9IFRSVUU7Cj4gKyAgICAgICAgIGJyZWFrOwo+ICsgICAgICB9Cj4gKyAg IH0KPiArCj4gKyAgIGlmICghZm91bmQpIHsKPiArICAgICAgTk9VVkVBVV9FUlIoIkZhaWxlZCB0 byBmaW5kIHBlcmZkb20gb2JqZWN0ICUiIFBSSXU2NCAiIVxuIiwKPiArICAgICAgICAgICAgICAg ICAgcS0+cGVyZmRvbS0+aGFuZGxlKTsKPiArICAgICAgcmV0dXJuIEZBTFNFOwo+ICsgICB9Cj4g Kwo+ICsgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQo+ICsgICAgICBjdHJbaV0gPSBudGZ5W29m ZnNldCArIGkgKyAxXTsKPiArICAgKmNsayA9IG50Znlbb2Zmc2V0ICsgNV07Cj4gKwo+ICsgICBy ZXR1cm4gVFJVRTsKPiArfQo+ICsKPiArc3RhdGljIGJvb2xlYW4KPiArbnY1MF9od19wbV9xdWVy eV9yZXN1bHQoc3RydWN0IG52NTBfY29udGV4dCAqbnY1MCwgc3RydWN0IG52NTBfcXVlcnkgKnEs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gd2FpdCwgdm9pZCAqcmVzdWx0KQo+ ICt7Cj4gKyAgIHN0cnVjdCBudjUwX3NjcmVlbiAqc2NyZWVuID0gbnY1MC0+c2NyZWVuOwo+ICsg ICBjb25zdCBzdHJ1Y3QgbnY1MF9od19wbV9xdWVyeV9jZmcgKmNmZzsKPiArICAgdWludDMyX3Qg Y3RyWzRdLCBjbGs7Cj4gKyAgIHVpbnQ2NF90IHZhbHVlID0gMDsKPiArICAgaW50IHJldDsKPiAr Cj4gKyAgIHJldCA9IG52NTBfaHdfcG1fcXVlcnlfcmVhZF9kYXRhKG52NTAsIHEsIHdhaXQsIGN0 ciwgJmNsayk7Cj4gKyAgIGlmICghcmV0KQo+ICsgICAgICByZXR1cm4gRkFMU0U7Cj4gKwo+ICsg ICBjZmcgPSBudjUwX2h3X3BtX3F1ZXJ5X2dldF9jZmcoc2NyZWVuLCBxLT50eXBlKTsKPiArICAg aWYgKGNmZy0+ZXZlbnQtPmNvdW50ID09IE5WNTBfSFdfUE1fRVZFTlRfQ09VTlRfU0lNUExFKSB7 Cj4gKyAgICAgIC8qIFNJTVBMRSBoYXJkd2FyZSBldmVudHMgYXJlIHNhbXBsZWQgb24gUFJFX0NU Ui4gKi8KPiArICAgICAgdmFsdWUgPSBjdHJbMF07Cj4gKyAgIH0gZWxzZSB7Cj4gKyAgICAgIC8q IEVWRU5UX0I0L0VWRU5UX0I2IGhhcmR3YXJlIGV2ZW50cyBhcmUgc2FtcGxlZCBvbiBFVkVOVF9D VFIuICovCj4gKyAgICAgIHZhbHVlID0gY3RyWzJdOwo+ICsgICB9Cj4gKwo+ICsgICBpZiAoY2Zn LT5ldmVudC0+ZGlzcGxheSA9PSBOVjUwX0hXX1BNX0VWRU5UX0RJU1BMQVlfUkFUSU8pIHsKPiAr ICAgICAgaWYgKGNsaykKPiArICAgICAgICAgdmFsdWUgPSAodmFsdWUgKiAxMDApIC8gKGZsb2F0 KWNsazsKPiArICAgfQo+ICsKPiArICAgZnByaW50ZihzdGRlcnIsICJjdHJbMF09JWQsIGN0clsx XT0lZCwgY3RyWzJdPSVkLCBjdHJbM109JWQsIGNsaz0lZCwgdmFsPSVkXG4iLAo+ICsgICAgICAg ICAgIGN0clswXSwgY3RyWzFdLCBjdHJbMl0sIGN0clszXSwgY2xrLCB2YWx1ZSk7Cj4gKwo+ICsg ICAqKHVpbnQ2NF90ICopcmVzdWx0ID0gdmFsdWU7Cj4gKyAgIHJldHVybiBUUlVFOwo+ICt9Cj4g Kwo+ICB2b2lkCj4gIG52NTBfaW5pdF9xdWVyeV9mdW5jdGlvbnMoc3RydWN0IG52NTBfY29udGV4 dCAqbnY1MCkKPiAgewo+IGRpZmYgLS1naXQgYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL25vdXZlYXUv bnY1MC9udjUwX3NjcmVlbi5oIGIvc3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2ZWF1L252NTAvbnY1 MF9zY3JlZW4uaAo+IGluZGV4IDcxYTUyNDcuLjA0NDk2NTkgMTAwNjQ0Cj4gLS0tIGEvc3JjL2dh bGxpdW0vZHJpdmVycy9ub3V2ZWF1L252NTAvbnY1MF9zY3JlZW4uaAo+ICsrKyBiL3NyYy9nYWxs aXVtL2RyaXZlcnMvbm91dmVhdS9udjUwL252NTBfc2NyZWVuLmgKPiBAQCAtODksNiArODksMTIg QEAgc3RydWN0IG52NTBfc2NyZWVuIHsKPiAgICAgICAgc3RydWN0IG5vdXZlYXVfYm8gKmJvOwo+ ICAgICB9IGZlbmNlOwo+Cj4gKyAgIHN0cnVjdCB7Cj4gKyAgICAgIHVpbnQzMl90IHNlcXVlbmNl Owo+ICsgICAgICB1aW50MzJfdCBxdWVyeV90eXBlOwo+ICsgICAgICB1aW50MzJfdCBudW1fYWN0 aXZlOwo+ICsgICB9IHBtOwo+ICsKPiAgICAgc3RydWN0IG5vdXZlYXVfb2JqZWN0ICpzeW5jOwo+ ICAgICBzdHJ1Y3Qgbm91dmVhdV9vYmplY3QgKnF1ZXJ5Owo+Cj4gQEAgLTEwOCw2ICsxMTQsMzUg QEAgbnY1MF9zY3JlZW4oc3RydWN0IHBpcGVfc2NyZWVuICpzY3JlZW4pCj4gICAgIHJldHVybiAo c3RydWN0IG52NTBfc2NyZWVuICopc2NyZWVuOwo+ICB9Cj4KPiArLyogSGFyZHdhcmUgZ2xvYmFs IHBlcmZvcm1hbmNlIGNvdW50ZXJzLiAqLwo+ICsjZGVmaW5lIE5WNTBfSFdfUE1fUVVFUllfQ09V TlQgIDI0Cj4gKyNkZWZpbmUgTlY1MF9IV19QTV9RVUVSWShpKSAgICAoUElQRV9RVUVSWV9EUklW RVJfU1BFQ0lGSUMgKyAoaSkpCj4gKyNkZWZpbmUgTlY1MF9IV19QTV9RVUVSWV9MQVNUICAgTlY1 MF9IV19QTV9RVUVSWShOVjUwX0hXX1BNX1FVRVJZX0NPVU5UIC0gMSkKPiArI2RlZmluZSBOVjUw X0hXX1BNX1FVRVJZX0dQVV9JRExFICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKPiArI2Rl ZmluZSBOVjUwX0hXX1BNX1FVRVJZX0lBX0JVU1kgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDEKPiArI2RlZmluZSBOVjUwX0hXX1BNX1FVRVJZX0lBX1dBSVRTX0ZPUl9GQiAgICAgICAgICAg ICAgICAgICAgIDIKPiArI2RlZmluZSBOVjUwX0hXX1BNX1FVRVJZX1ZFUlRFWF9BVFRSX0NPVU5U ICAgICAgICAgICAgICAgICAgIDMKPiArI2RlZmluZSBOVjUwX0hXX1BNX1FVRVJZX0dFT01fVkVS VEVYX0lOX0NPVU5UICAgICAgICAgICAgICAgIDQKPiArI2RlZmluZSBOVjUwX0hXX1BNX1FVRVJZ X0dFT01fVkVSVEVYX09VVF9DT1VOVCAgICAgICAgICAgICAgIDUKPiArI2RlZmluZSBOVjUwX0hX X1BNX1FVRVJZX0dFT01fUFJJTUlUSVZFX0lOX0NPVU5UICAgICAgICAgICAgIDYKPiArI2RlZmlu ZSBOVjUwX0hXX1BNX1FVRVJZX0dFT01fUFJJTUlUSVZFX09VVF9DT1VOVCAgICAgICAgICAgIDcK PiArI2RlZmluZSBOVjUwX0hXX1BNX1FVRVJZX1NPX0JVU1kgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDgKPiArI2RlZmluZSBOVjUwX0hXX1BNX1FVRVJZX1NFVFVQX1BSSU1JVElWRV9DT1VO VCAgICAgICAgICAgICAgIDkKPiArI2RlZmluZSBOVjUwX0hXX1BNX1FVRVJZX1NFVFVQX1BPSU5U X0NPVU5UICAgICAgICAgICAgICAgICAgMTAKPiArI2RlZmluZSBOVjUwX0hXX1BNX1FVRVJZX1NF VFVQX0xJTkVfQ09VTlQgICAgICAgICAgICAgICAgICAgMTEKPiArI2RlZmluZSBOVjUwX0hXX1BN X1FVRVJZX1NFVFVQX1RSSUFOR0xFX0NPVU5UICAgICAgICAgICAgICAgMTIKPiArI2RlZmluZSBO VjUwX0hXX1BNX1FVRVJZX1NFVFVQX1BSSU1JVElWRV9DVUxMRURfQ09VTlQgICAgICAgMTMKPiAr I2RlZmluZSBOVjUwX0hXX1BNX1FVRVJZX1JBU1RfVElMRVNfS0lMTEVEX0JZX1pDVUxMICAgICAg ICAgMTQKPiArI2RlZmluZSBOVjUwX0hXX1BNX1FVRVJZX1JBU1RfVElMRVNfSU5fQ09VTlQgICAg ICAgICAgICAgICAgMTUKPiArI2RlZmluZSBOVjUwX0hXX1BNX1FVRVJZX1JPUF9CVVNZICAgICAg ICAgICAgICAgICAgICAgICAgICAgMTYKPiArI2RlZmluZSBOVjUwX0hXX1BNX1FVRVJZX1JPUF9X QUlUU19GT1JfRkIgICAgICAgICAgICAgICAgICAgMTcKPiArI2RlZmluZSBOVjUwX0hXX1BNX1FV RVJZX1JPUF9XQUlUU19GT1JfU0hBREVSICAgICAgICAgICAgICAgMTgKPiArI2RlZmluZSBOVjUw X0hXX1BNX1FVRVJZX1JPUF9TQU1QTEVTX0tJTExFRF9CWV9FQVJMWVogICAgICAgMTkKPiArI2Rl ZmluZSBOVjUwX0hXX1BNX1FVRVJZX1JPUF9TQU1QTEVTX0tJTExFRF9CWV9MQVRFWiAgICAgICAg MjAKPiArI2RlZmluZSBOVjUwX0hXX1BNX1FVRVJZX1RFWF9DQUNIRV9NSVNTICAgICAgICAgICAg ICAgICAgICAgMjEKPiArI2RlZmluZSBOVjUwX0hXX1BNX1FVRVJZX1RFWF9DQUNIRV9ISVQgICAg ICAgICAgICAgICAgICAgICAgMjIKPiArI2RlZmluZSBOVjUwX0hXX1BNX1FVRVJZX1RFWF9XQUlU U19GT1JfRkIgICAgICAgICAgICAgICAgICAgMjMKPiArCj4gIGJvb2xlYW4gbnY1MF9ibGl0dGVy X2NyZWF0ZShzdHJ1Y3QgbnY1MF9zY3JlZW4gKik7Cj4gIHZvaWQgbnY1MF9ibGl0dGVyX2Rlc3Ry b3koc3RydWN0IG52NTBfc2NyZWVuICopOwo+Cj4gLS0KPiAyLjQuNAo+Cj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBOb3V2ZWF1IG1haWxpbmcgbGlz dAo+IE5vdXZlYXVAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL25vdXZlYXUKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KbWVzYS1kZXYgbWFpbGluZyBsaXN0Cm1lc2EtZGV2QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vbWVzYS1kZXYK