From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH i-g-t 05/12] i915: Exercise creating context with shared GTT Date: Thu, 23 May 2019 14:39:00 +0100 Message-ID: References: <20190522113712.23512-1-chris@chris-wilson.co.uk> <20190522113712.23512-5-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190522113712.23512-5-chris@chris-wilson.co.uk> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDIyLzA1LzIwMTkgMTI6MzcsIENocmlzIFdpbHNvbiB3cm90ZToKPiB2MjogVGVzdCBlYWNo IHNoYXJlZCBjb250ZXh0IGlzIGl0cyBvd24gdGltZWxpbmUgYW5kIGFsbG93cyByZXF1ZXN0Cj4g cmVvcmRlcmluZyBiZXR3ZWVuIHNoYXJlZCBjb250ZXh0cy4KPiB2MzogVXNlIHRoZSBtb2Rlcm4g aW50ZXJmYWNlIHRvIHVzZSBwaHlzaWNhbCBlbmdpbmVzIGZvciB0ZXN0aW5nCj4gc2luZ2xlLXRp bWVsaW5lIGFsb25nIGVhY2ggcmVhbCBlbmdpbmUuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IEpvb25hcyBMYWh0aW5lbiA8 am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2 cnRrby51cnN1bGluQGludGVsLmNvbT4KPiBDYzogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFs YUBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hhbC53YWpkZWN6 a29AaW50ZWwuY29tPgo+IC0tLQo+ICAgbGliL2k5MTUvZ2VtX2NvbnRleHQuYyAgICAgICAgfCAg NzAgKysrCj4gICBsaWIvaTkxNS9nZW1fY29udGV4dC5oICAgICAgICB8ICAxMyArCj4gICB0ZXN0 cy9NYWtlZmlsZS5zb3VyY2VzICAgICAgICB8ICAgMSArCj4gICB0ZXN0cy9pOTE1L2dlbV9jdHhf c2hhcmVkLmMgICB8IDgzOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICB0 ZXN0cy9pOTE1L2dlbV9leGVjX3doaXNwZXIuYyB8ICAzMiArLQo+ICAgdGVzdHMvbWVzb24uYnVp bGQgICAgICAgICAgICAgfCAgIDEgKwo+ICAgNiBmaWxlcyBjaGFuZ2VkLCA5NDYgaW5zZXJ0aW9u cygrKSwgOSBkZWxldGlvbnMoLSkKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dl bV9jdHhfc2hhcmVkLmMKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL2k5MTUvZ2VtX2NvbnRleHQuYyBi L2xpYi9pOTE1L2dlbV9jb250ZXh0LmMKPiBpbmRleCBmOTRkODljYjQuLjBjOTFiZmI1MyAxMDA2 NDQKPiAtLS0gYS9saWIvaTkxNS9nZW1fY29udGV4dC5jCj4gKysrIGIvbGliL2k5MTUvZ2VtX2Nv bnRleHQuYwo+IEBAIC0yNzIsNiArMjcyLDc2IEBAIHZvaWQgZ2VtX2NvbnRleHRfc2V0X3ByaW9y aXR5KGludCBmZCwgdWludDMyX3QgY3R4X2lkLCBpbnQgcHJpbykKPiAgIAlpZ3RfYXNzZXJ0X2Vx KF9fZ2VtX2NvbnRleHRfc2V0X3ByaW9yaXR5KGZkLCBjdHhfaWQsIHByaW8pLCAwKTsKPiAgIH0K PiAgIAo+ICtpbnQKPiArX19nZW1fY29udGV4dF9jbG9uZShpbnQgaTkxNSwKPiArCQkgICAgdWlu dDMyX3Qgc3JjLCB1bnNpZ25lZCBpbnQgc2hhcmUsCj4gKwkJICAgIHVuc2lnbmVkIGludCBmbGFn cywKPiArCQkgICAgdWludDMyX3QgKm91dCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9j b250ZXh0X2NyZWF0ZV9leHRfY2xvbmUgY2xvbmUgPSB7Cj4gKwkJeyAubmFtZSA9IEk5MTVfQ09O VEVYVF9DUkVBVEVfRVhUX0NMT05FIH0sCj4gKwkJLmNsb25lX2lkID0gc3JjLAo+ICsJCS5mbGFn cyA9IHNoYXJlLAo+ICsJfTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVf ZXh0IGFyZyA9IHsKPiArCQkuZmxhZ3MgPSBmbGFncyB8IEk5MTVfQ09OVEVYVF9DUkVBVEVfRkxB R1NfVVNFX0VYVEVOU0lPTlMsCj4gKwkJLmV4dGVuc2lvbnMgPSB0b191c2VyX3BvaW50ZXIoJmNs b25lKSwKPiArCX07Cj4gKwlpbnQgZXJyID0gMDsKPiArCj4gKwlpZiAoaWd0X2lvY3RsKGk5MTUs IERSTV9JT0NUTF9JOTE1X0dFTV9DT05URVhUX0NSRUFURV9FWFQsICZhcmcpKSB7Cj4gKwkJZXJy ID0gLWVycm5vOwo+ICsJCWlndF9hc3N1bWUoZXJyKTsKPiArCX0KPiArCj4gKwkqb3V0ID0gYXJn LmN0eF9pZDsKPiArCj4gKwllcnJubyA9IDA7Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtz dGF0aWMgYm9vbCBfX2dlbV9jb250ZXh0X2hhcyhpbnQgaTkxNSwgdWludDMyX3Qgc2hhcmUsIHVu c2lnbmVkIGludCBmbGFncykKPiArewo+ICsJdWludDMyX3QgY3R4Owo+ICsKPiArCV9fZ2VtX2Nv bnRleHRfY2xvbmUoaTkxNSwgMCwgc2hhcmUsIGZsYWdzLCAmY3R4KTsKPiArCWlmIChjdHgpCj4g KwkJZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBjdHgpOwo+ICsKPiArCWVycm5vID0gMDsKPiAr CXJldHVybiBjdHg7Cj4gK30KPiArCj4gK2Jvb2wgZ2VtX2NvbnRleHRzX2hhc19zaGFyZWRfZ3R0 KGludCBpOTE1KQo+ICt7Cj4gKwlyZXR1cm4gX19nZW1fY29udGV4dF9oYXMoaTkxNSwgSTkxNV9D T05URVhUX0NMT05FX1ZNLCAwKTsKPiArfQo+ICsKPiArYm9vbCBnZW1faGFzX3F1ZXVlcyhpbnQg aTkxNSkKPiArewo+ICsJcmV0dXJuIF9fZ2VtX2NvbnRleHRfaGFzKGk5MTUsCj4gKwkJCQkgSTkx NV9DT05URVhUX0NMT05FX1ZNLAo+ICsJCQkJIEk5MTVfQ09OVEVYVF9DUkVBVEVfRkxBR1NfU0lO R0xFX1RJTUVMSU5FKTsKPiArfQo+ICsKPiArdWludDMyX3QgZ2VtX2NvbnRleHRfY2xvbmUoaW50 IGk5MTUsCj4gKwkJCSAgIHVpbnQzMl90IHNyYywgdW5zaWduZWQgaW50IHNoYXJlLAo+ICsJCQkg ICB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gK3sKPiArCXVpbnQzMl90IGN0eDsKPiArCj4gKwlpZ3Rf YXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfY2xvbmUoaTkxNSwgc3JjLCBzaGFyZSwgZmxhZ3MsICZj dHgpLCAwKTsKPiArCj4gKwlyZXR1cm4gY3R4Owo+ICt9Cj4gKwo+ICt1aW50MzJfdCBnZW1fcXVl dWVfY3JlYXRlKGludCBpOTE1KQo+ICt7Cj4gKwlyZXR1cm4gZ2VtX2NvbnRleHRfY2xvbmUoaTkx NSwgMCwKPiArCQkJCSBJOTE1X0NPTlRFWFRfQ0xPTkVfVk0sCj4gKwkJCQkgSTkxNV9DT05URVhU X0NSRUFURV9GTEFHU19TSU5HTEVfVElNRUxJTkUpOwo+ICt9Cj4gKwo+ICAgYm9vbCBnZW1fY29u dGV4dF9oYXNfZW5naW5lKGludCBmZCwgdWludDMyX3QgY3R4LCB1aW50NjRfdCBlbmdpbmUpCj4g ICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgZXhlYyA9IHt9Owo+IGRp ZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fY29udGV4dC5oIGIvbGliL2k5MTUvZ2VtX2NvbnRleHQu aAo+IGluZGV4IGEwNTI3MTRkNC4uODA0M2MzNDAxIDEwMDY0NAo+IC0tLSBhL2xpYi9pOTE1L2dl bV9jb250ZXh0LmgKPiArKysgYi9saWIvaTkxNS9nZW1fY29udGV4dC5oCj4gQEAgLTI5LDYgKzI5 LDE5IEBAIGludCBfX2dlbV9jb250ZXh0X2NyZWF0ZShpbnQgZmQsIHVpbnQzMl90ICpjdHhfaWQp Owo+ICAgdm9pZCBnZW1fY29udGV4dF9kZXN0cm95KGludCBmZCwgdWludDMyX3QgY3R4X2lkKTsK PiAgIGludCBfX2dlbV9jb250ZXh0X2Rlc3Ryb3koaW50IGZkLCB1aW50MzJfdCBjdHhfaWQpOwo+ ICAgCj4gK2ludCBfX2dlbV9jb250ZXh0X2Nsb25lKGludCBpOTE1LAo+ICsJCQl1aW50MzJfdCBz cmMsIHVuc2lnbmVkIGludCBzaGFyZSwKPiArCQkJdW5zaWduZWQgaW50IGZsYWdzLAo+ICsJCQl1 aW50MzJfdCAqb3V0KTsKPiArdWludDMyX3QgZ2VtX2NvbnRleHRfY2xvbmUoaW50IGk5MTUsCj4g KwkJCSAgIHVpbnQzMl90IHNyYywgdW5zaWduZWQgaW50IHNoYXJlLAo+ICsJCQkgICB1bnNpZ25l ZCBpbnQgZmxhZ3MpOwo+ICsKPiArdWludDMyX3QgZ2VtX3F1ZXVlX2NyZWF0ZShpbnQgaTkxNSk7 Cj4gKwo+ICtib29sIGdlbV9jb250ZXh0c19oYXNfc2hhcmVkX2d0dChpbnQgaTkxNSk7Cj4gK2Jv b2wgZ2VtX2hhc19xdWV1ZXMoaW50IGk5MTUpOwo+ICsKPiAgIGJvb2wgZ2VtX2hhc19jb250ZXh0 cyhpbnQgZmQpOwo+ICAgdm9pZCBnZW1fcmVxdWlyZV9jb250ZXh0cyhpbnQgZmQpOwo+ICAgdm9p ZCBnZW1fY29udGV4dF9yZXF1aXJlX2Jhbm5hYmxlKGludCBmZCk7Cj4gZGlmZiAtLWdpdCBhL3Rl c3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gaW5kZXggNTk0 OTdmYjRkLi41YTU2NTMwNzkgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+ ICsrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiBAQCAtMjIsNiArMjIsNyBAQCBURVNUU19w cm9ncyA9IFwKPiAgIAlkcm1fbW0gXAo+ICAgCWRybV9yZWFkIFwKPiAgIAlpOTE1L2dlbV9jdHhf Y2xvbmUgXAo+ICsJaTkxNS9nZW1fY3R4X3NoYXJlZCBcCj4gICAJaTkxNS9nZW1fdm1fY3JlYXRl IFwKPiAgIAlrbXNfM2QgXAo+ICAgCWttc19hZGRmYl9iYXNpYyBcCj4gZGlmZiAtLWdpdCBhL3Rl c3RzL2k5MTUvZ2VtX2N0eF9zaGFyZWQuYyBiL3Rlc3RzL2k5MTUvZ2VtX2N0eF9zaGFyZWQuYwo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwLi5kNDE1MjJkYWMKPiAtLS0g L2Rldi9udWxsCj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fY3R4X3NoYXJlZC5jCj4gQEAgLTAsMCAr MSw4MzggQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOSBJbnRlbCBDb3Jwb3Jh dGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsg KiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAq IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKi8KPiArCj4gKyNpbmNs dWRlICJpZ3QuaCIKPiArCj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4KPiArI2luY2x1ZGUgPHN0ZGxp Yi5oPgo+ICsjaW5jbHVkZSA8c3RkaW50Lmg+Cj4gKyNpbmNsdWRlIDxzdGRpby5oPgo+ICsjaW5j bHVkZSA8c3RyaW5nLmg+Cj4gKyNpbmNsdWRlIDxmY250bC5oPgo+ICsjaW5jbHVkZSA8aW50dHlw ZXMuaD4KPiArI2luY2x1ZGUgPGVycm5vLmg+Cj4gKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgo+ICsj aW5jbHVkZSA8c3lzL2lvY3RsLmg+Cj4gKyNpbmNsdWRlIDxzeXMvdGltZS5oPgo+ICsKPiArI2lu Y2x1ZGUgPGRybS5oPgo+ICsKPiArI2luY2x1ZGUgImlndF9yYW5kLmgiCj4gKyNpbmNsdWRlICJp Z3RfdmdlbS5oIgo+ICsjaW5jbHVkZSAic3luY19maWxlLmgiCj4gKwo+ICsjZGVmaW5lIExPIDAK PiArI2RlZmluZSBISSAxCj4gKyNkZWZpbmUgTk9JU0UgMgo+ICsKPiArI2RlZmluZSBNQVhfUFJJ TyBMT0NBTF9JOTE1X0NPTlRFWFRfTUFYX1VTRVJfUFJJT1JJVFkKPiArI2RlZmluZSBNSU5fUFJJ TyBMT0NBTF9JOTE1X0NPTlRFWFRfTUlOX1VTRVJfUFJJT1JJVFkKPiArCj4gK3N0YXRpYyBpbnQg cHJpb3JpdGllc1tdID0gewo+ICsJW0xPXSA9IE1JTl9QUklPIC8gMiwKPiArCVtISV0gPSBNQVhf UFJJTyAvIDIsCj4gK307Cj4gKwo+ICsjZGVmaW5lIE1BWF9FTFNQX1FMRU4gMTYKPiArCj4gK0lH VF9URVNUX0RFU0NSSVBUSU9OKCJUZXN0IHNoYXJlZCBjb250ZXh0cy4iKTsKPiArCj4gK3N0YXRp YyB2b2lkIGNyZWF0ZV9zaGFyZWRfZ3R0KGludCBpOTE1LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4g KyNkZWZpbmUgREVUQUNIRUQgMHgxCj4gK3sKPiArCWNvbnN0IHVpbnQzMl90IGJiZSA9IE1JX0JB VENIX0JVRkZFUl9FTkQ7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmog PSB7Cj4gKwkJLmhhbmRsZSA9IGdlbV9jcmVhdGUoaTkxNSwgNDA5NiksCj4gKwl9Owo+ICsJc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmID0gewo+ICsJCS5idWZmZXJzX3B0 ciA9IHRvX3VzZXJfcG9pbnRlcigmb2JqKSwKPiArCQkuYnVmZmVyX2NvdW50ID0gMSwKPiArCX07 Cj4gKwl1aW50MzJfdCBwYXJlbnQsIGNoaWxkOwo+ICsKPiArCWdlbV93cml0ZShpOTE1LCBvYmou aGFuZGxlLCAwLCAmYmJlLCBzaXplb2YoYmJlKSk7Cj4gKwlnZW1fZXhlY2J1ZihpOTE1LCAmZXhl Y2J1Zik7Cj4gKwlnZW1fc3luYyhpOTE1LCBvYmouaGFuZGxlKTsKPiArCj4gKwljaGlsZCA9IGZs YWdzICYgREVUQUNIRUQgPyBnZW1fY29udGV4dF9jcmVhdGUoaTkxNSkgOiAwOwo+ICsJaWd0X3Vu dGlsX3RpbWVvdXQoMikgewo+ICsJCXBhcmVudCA9IGZsYWdzICYgREVUQUNIRUQgPyBjaGlsZCA6 IDA7Cj4gKwkJY2hpbGQgPSBnZW1fY29udGV4dF9jbG9uZShpOTE1LAo+ICsJCQkJCSAgcGFyZW50 LCBJOTE1X0NPTlRFWFRfQ0xPTkVfVk0sCj4gKwkJCQkJICAwKTsKPiArCQlleGVjYnVmLnJzdmQx ID0gY2hpbGQ7Cj4gKwkJZ2VtX2V4ZWNidWYoaTkxNSwgJmV4ZWNidWYpOwo+ICsKPiArCQlpZiAo ZmxhZ3MgJiBERVRBQ0hFRCkgewo+ICsJCQlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIHBhcmVu dCk7Cj4gKwkJCWdlbV9leGVjYnVmKGk5MTUsICZleGVjYnVmKTsKPiArCQl9IGVsc2Ugewo+ICsJ CQlwYXJlbnQgPSBjaGlsZDsKPiArCQkJZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBwYXJlbnQp Owo+ICsJCX0KPiArCj4gKwkJZXhlY2J1Zi5yc3ZkMSA9IHBhcmVudDsKPiArCQlpZ3RfYXNzZXJ0 X2VxKF9fZ2VtX2V4ZWNidWYoaTkxNSwgJmV4ZWNidWYpLCAtRU5PRU5UKTsKPiArCQlpZ3RfYXNz ZXJ0X2VxKF9fZ2VtX2NvbnRleHRfY2xvbmUoaTkxNSwKPiArCQkJCQkJICBwYXJlbnQsIEk5MTVf Q09OVEVYVF9DTE9ORV9WTSwKPiArCQkJCQkJICAwLCAmcGFyZW50KSwgLUVOT0VOVCk7Cj4gKwl9 Cj4gKwlpZiAoZmxhZ3MgJiBERVRBQ0hFRCkKPiArCQlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUs IGNoaWxkKTsKPiArCj4gKwlnZW1fc3luYyhpOTE1LCBvYmouaGFuZGxlKTsKPiArCWdlbV9jbG9z ZShpOTE1LCBvYmouaGFuZGxlKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZGlzam9pbnRfdGlt ZWxpbmVzKGludCBpOTE1KQo+ICt7Cj4gKwlJR1RfQ09SS19IQU5ETEUoY29yayk7Cj4gKwlpZ3Rf c3Bpbl90ICpzcGluWzJdOwo+ICsJdWludDMyX3QgcGx1ZywgY2hpbGQ7Cj4gKwo+ICsJaWd0X3Jl cXVpcmUoZ2VtX2hhc19leGVjbGlzdHMoaTkxNSkpOwo+ICsKPiArCS8qCj4gKwkgKiBFYWNoIGNv bnRleHQsIGFsdGhvdWdoIHRoZXkgc2hhcmUgYSB2bSwgYXJlIGV4cGVjdGVkIHRvIGJlCj4gKwkg KiBkaXN0aW5jdCB0aW1lbGluZXMuIEEgcmVxdWVzdCBxdWV1ZWQgdG8gb25lIGNvbnRleHQgc2hv dWxkIGJlCj4gKwkgKiBpbmRlcGVuZGVudCBvZiBhbnkgc2hhcmVkIGNvbnRleHRzLgo+ICsJICov Cj4gKwljaGlsZCA9IGdlbV9jb250ZXh0X2Nsb25lKGk5MTUsIDAsIEk5MTVfQ09OVEVYVF9DTE9O RV9WTSwgMCk7Cj4gKwlwbHVnID0gaWd0X2NvcmtfcGx1ZygmY29yaywgaTkxNSk7Cj4gKwo+ICsJ c3BpblswXSA9IF9faWd0X3NwaW5fbmV3KGk5MTUsIC5jdHggPSAwLCAuZGVwZW5kZW5jeSA9IHBs dWcpOwo+ICsJc3BpblsxXSA9IF9faWd0X3NwaW5fbmV3KGk5MTUsIC5jdHggPSBjaGlsZCk7Cj4g Kwo+ICsJLyogV2FpdCBmb3IgdGhlIHNlY29uZCBzcGlubmVyLCB3aWxsIGhhbmcgaWYgc3R1Y2sg YmVoaW5kIHRoZSBmaXJzdCAqLwo+ICsJaWd0X3NwaW5fZW5kKHNwaW5bMV0pOwo+ICsJZ2VtX3N5 bmMoaTkxNSwgc3BpblsxXS0+aGFuZGxlKTsKPiArCj4gKwlpZ3RfY29ya191bnBsdWcoJmNvcmsp Owo+ICsKPiArCWlndF9zcGluX2ZyZWUoaTkxNSwgc3BpblsxXSk7Cj4gKwlpZ3Rfc3Bpbl9mcmVl KGk5MTUsIHNwaW5bMF0pOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBleGhhdXN0X3NoYXJlZF9n dHQoaW50IGk5MTUsIHVuc2lnbmVkIGludCBmbGFncykKPiArI2RlZmluZSBFWEhBVVNUX0xSQyAw eDEKPiArewo+ICsJaTkxNSA9IGdlbV9yZW9wZW5fZHJpdmVyKGk5MTUpOwo+ICsKPiArCWlndF9m b3JrKHBpZCwgMSkgewo+ICsJCWNvbnN0IHVpbnQzMl90IGJiZSA9IE1JX0JBVENIX0JVRkZFUl9F TkQ7Cj4gKwkJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqID0gewo+ICsJCQku aGFuZGxlID0gZ2VtX2NyZWF0ZShpOTE1LCA0MDk2KQo+ICsJCX07Cj4gKwkJc3RydWN0IGRybV9p OTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmID0gewo+ICsJCQkuYnVmZmVyc19wdHIgPSB0b191 c2VyX3BvaW50ZXIoJm9iaiksCj4gKwkJCS5idWZmZXJfY291bnQgPSAxLAo+ICsJCX07Cj4gKwkJ dWludDMyX3QgcGFyZW50LCBjaGlsZDsKPiArCQl1bnNpZ25lZCBsb25nIGNvdW50ID0gMDsKPiAr CQlpbnQgZXJyOwo+ICsKPiArCQlnZW1fd3JpdGUoaTkxNSwgb2JqLmhhbmRsZSwgMCwgJmJiZSwg c2l6ZW9mKGJiZSkpOwo+ICsKPiArCQljaGlsZCA9IDA7Cj4gKwkJZm9yICg7Oykgewo+ICsJCQlw YXJlbnQgPSBjaGlsZDsKPiArCQkJZXJyID0gX19nZW1fY29udGV4dF9jbG9uZShpOTE1LAo+ICsJ CQkJCQkgIHBhcmVudCwgSTkxNV9DT05URVhUX0NMT05FX1ZNLAo+ICsJCQkJCQkgIDAsICZjaGls ZCk7Cj4gKwkJCWlmIChlcnIpCj4gKwkJCQlicmVhazsKPiArCj4gKwkJCWlmIChmbGFncyAmIEVY SEFVU1RfTFJDKSB7Cj4gKwkJCQlleGVjYnVmLnJzdmQxID0gY2hpbGQ7Cj4gKwkJCQllcnIgPSBf X2dlbV9leGVjYnVmKGk5MTUsICZleGVjYnVmKTsKPiArCQkJCWlmIChlcnIpCj4gKwkJCQkJYnJl YWs7Cj4gKwkJCX0KPiArCj4gKwkJCWNvdW50Kys7Cj4gKwkJfQo+ICsJCWdlbV9zeW5jKGk5MTUs IG9iai5oYW5kbGUpOwo+ICsKPiArCQlpZ3RfaW5mbygiQ3JlYXRlZCAlbHUgc2hhcmVkIGNvbnRl eHRzLCBiZWZvcmUgJWQgKCVzKVxuIiwKPiArCQkJIGNvdW50LCBlcnIsIHN0cmVycm9yKC1lcnIp KTsKPiArCX0KPiArCWNsb3NlKGk5MTUpOwo+ICsJaWd0X3dhaXRjaGlsZHJlbigpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBleGVjX3NoYXJlZF9ndHQoaW50IGk5MTUsIHVuc2lnbmVkIGludCBy aW5nKQo+ICt7Cj4gKwljb25zdCBpbnQgZ2VuID0gaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2 aWQoaTkxNSkpOwo+ICsJY29uc3QgdWludDMyX3QgYmJlID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsK PiArCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iaiA9IHsKPiArCQkuaGFuZGxl ID0gZ2VtX2NyZWF0ZShpOTE1LCA0MDk2KQo+ICsJfTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY2J1ZmZlcjIgZXhlY2J1ZiA9IHsKPiArCQkuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50 ZXIoJm9iaiksCj4gKwkJLmJ1ZmZlcl9jb3VudCA9IDEsCj4gKwkJLmZsYWdzID0gcmluZywKPiAr CX07Cj4gKwl1aW50MzJfdCBzY3JhdGNoID0gb2JqLmhhbmRsZTsKPiArCXVpbnQzMl90IGJhdGNo WzE2XTsKPiArCWludCBpOwo+ICsKPiArCWdlbV9yZXF1aXJlX3JpbmcoaTkxNSwgcmluZyk7Cj4g KwlpZ3RfcmVxdWlyZShnZW1fY2FuX3N0b3JlX2R3b3JkKGk5MTUsIHJpbmcpKTsKPiArCj4gKwkv KiBMb2FkIG9iamVjdCBpbnRvIHBsYWNlIGluIHRoZSBHVFQgKi8KPiArCWdlbV93cml0ZShpOTE1 LCBvYmouaGFuZGxlLCAwLCAmYmJlLCBzaXplb2YoYmJlKSk7Cj4gKwlnZW1fZXhlY2J1ZihpOTE1 LCAmZXhlY2J1Zik7Cj4gKwo+ICsJLyogUHJlc3VtZSBub3RoaW5nIGNhdXNlcyBhbiBldmljdGlv biBpbiB0aGUgbWVhbnRpbWUgKi8KPiArCj4gKwlvYmouaGFuZGxlID0gZ2VtX2NyZWF0ZShpOTE1 LCA0MDk2KTsKPiArCj4gKwlpID0gMDsKPiArCWJhdGNoW2ldID0gTUlfU1RPUkVfRFdPUkRfSU1N IHwgKGdlbiA8IDYgPyAxIDw8IDIyIDogMCk7Cj4gKwlpZiAoZ2VuID49IDgpIHsKPiArCQliYXRj aFsrK2ldID0gb2JqLm9mZnNldDsKPiArCQliYXRjaFsrK2ldID0gMDsKPiArCX0gZWxzZSBpZiAo Z2VuID49IDQpIHsKPiArCQliYXRjaFsrK2ldID0gMDsKPiArCQliYXRjaFsrK2ldID0gb2JqLm9m ZnNldDsKPiArCX0gZWxzZSB7Cj4gKwkJYmF0Y2hbaV0tLTsKPiArCQliYXRjaFsrK2ldID0gb2Jq Lm9mZnNldDsKPiArCX0KPiArCWJhdGNoWysraV0gPSAweGMwZmZlZTsKPiArCWJhdGNoWysraV0g PSBNSV9CQVRDSF9CVUZGRVJfRU5EOwo+ICsJZ2VtX3dyaXRlKGk5MTUsIG9iai5oYW5kbGUsIDAs IGJhdGNoLCBzaXplb2YoYmF0Y2gpKTsKPiArCj4gKwlvYmoub2Zmc2V0ICs9IDQwOTY7IC8qIG1h a2Ugc3VyZSB3ZSBkb24ndCBjYXVzZSBhbiBldmljdGlvbiEgKi8KPiArCW9iai5mbGFncyB8PSBF WEVDX09CSkVDVF9QSU5ORUQ7Cj4gKwlleGVjYnVmLnJzdmQxID0gZ2VtX2NvbnRleHRfY2xvbmUo aTkxNSwgMCwgSTkxNV9DT05URVhUX0NMT05FX1ZNLCAwKTsKPiArCWlmIChnZW4gPiAzICYmIGdl biA8IDYpCj4gKwkJZXhlY2J1Zi5mbGFncyB8PSBJOTE1X0VYRUNfU0VDVVJFOwo+ICsKPiArCWdl bV9leGVjYnVmKGk5MTUsICZleGVjYnVmKTsKPiArCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwg ZXhlY2J1Zi5yc3ZkMSk7Cj4gKwlnZW1fc3luYyhpOTE1LCBvYmouaGFuZGxlKTsgLyogd3JpdGUg aGF6YXJkIGxpZXMgKi8KPiArCWdlbV9jbG9zZShpOTE1LCBvYmouaGFuZGxlKTsKPiArCj4gKwln ZW1fcmVhZChpOTE1LCBzY3JhdGNoLCAwLCBiYXRjaCwgc2l6ZW9mKHVpbnQzMl90KSk7Cj4gKwln ZW1fY2xvc2UoaTkxNSwgc2NyYXRjaCk7Cj4gKwo+ICsJaWd0X2Fzc2VydF9lcV91MzIoKmJhdGNo LCAweGMwZmZlZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbm9wX3N5bmMoaW50IGk5MTUsIHVp bnQzMl90IGN0eCwgdW5zaWduZWQgaW50IHJpbmcsIGludDY0X3QgdGltZW91dCkKPiArewo+ICsJ Y29uc3QgdWludDMyX3QgYmJlID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKPiArCXN0cnVjdCBkcm1f aTkxNV9nZW1fZXhlY19vYmplY3QyIG9iaiA9IHsKPiArCQkuaGFuZGxlID0gZ2VtX2NyZWF0ZShp OTE1LCA0MDk2KSwKPiArCX07Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4 ZWNidWYgPSB7Cj4gKwkJLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKCZvYmopLAo+ICsJ CS5idWZmZXJfY291bnQgPSAxLAo+ICsJCS5mbGFncyA9IHJpbmcsCj4gKwkJLnJzdmQxID0gY3R4 LAo+ICsJfTsKPiArCWludCBlcnI7Cj4gKwo+ICsJZ2VtX3dyaXRlKGk5MTUsIG9iai5oYW5kbGUs IDAsICZiYmUsIHNpemVvZihiYmUpKTsKPiArCWdlbV9leGVjYnVmKGk5MTUsICZleGVjYnVmKTsK PiArCWVyciA9IGdlbV93YWl0KGk5MTUsIG9iai5oYW5kbGUsICZ0aW1lb3V0KTsKPiArCWdlbV9j bG9zZShpOTE1LCBvYmouaGFuZGxlKTsKPiArCj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtz dGF0aWMgYm9vbCBoYXNfc2luZ2xlX3RpbWVsaW5lKGludCBpOTE1KQo+ICt7Cj4gKwl1aW50MzJf dCBjdHg7Cj4gKwo+ICsJX19nZW1fY29udGV4dF9jbG9uZShpOTE1LCAwLCAwLAo+ICsJCQkgICAg STkxNV9DT05URVhUX0NSRUFURV9GTEFHU19TSU5HTEVfVElNRUxJTkUsCj4gKwkJCSAgICAmY3R4 KTsKPiArCWlmIChjdHgpCj4gKwkJZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBjdHgpOwo+ICsK PiArCXJldHVybiBjdHggIT0gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgc2luZ2xlX3RpbWVs aW5lKGludCBpOTE1KQo+ICt7Cj4gKwljb25zdCB1aW50MzJfdCBiYmUgPSBNSV9CQVRDSF9CVUZG RVJfRU5EOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqID0gewo+ICsJ CS5oYW5kbGUgPSBnZW1fY3JlYXRlKGk5MTUsIDQwOTYpLAo+ICsJfTsKPiArCXN0cnVjdCBkcm1f aTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZiA9IHsKPiArCQkuYnVmZmVyc19wdHIgPSB0b191 c2VyX3BvaW50ZXIoJm9iaiksCj4gKwkJLmJ1ZmZlcl9jb3VudCA9IDEsCj4gKwl9Owo+ICsJc3Ry dWN0IHN5bmNfZmVuY2VfaW5mbyByaW5nc1sxNl07Cj4gKwlzdHJ1Y3Qgc3luY19maWxlX2luZm8g c3luY19maWxlX2luZm8gPSB7Cj4gKwkJLm51bV9mZW5jZXMgPSAxLAo+ICsJfTsKPiArCXVuc2ln bmVkIGludCBlbmdpbmU7Cj4gKwlpbnQgbjsKPiArCj4gKwlpZ3RfcmVxdWlyZShoYXNfc2luZ2xl X3RpbWVsaW5lKGk5MTUpKTsKPiArCj4gKwlnZW1fd3JpdGUoaTkxNSwgb2JqLmhhbmRsZSwgMCwg JmJiZSwgc2l6ZW9mKGJiZSkpOwo+ICsJZ2VtX2V4ZWNidWYoaTkxNSwgJmV4ZWNidWYpOwo+ICsJ Z2VtX3N5bmMoaTkxNSwgb2JqLmhhbmRsZSk7Cj4gKwo+ICsJLyoKPiArCSAqIEZvciBhICJzaW5n bGUgdGltZWxpbmUiIGNvbnRleHQsIGVhY2ggcmluZyBpcyBvbiB0aGUgY29tbW9uCj4gKwkgKiB0 aW1lbGluZSwgdW5saWtlIGEgbm9ybWFsIGNvbnRleHQgd2hlcmUgZWFjaCByaW5nIGhhcyBhbgo+ ICsJICogaW5kZXBlbmRlbnQgdGltZWxpbmUuIFRoYXQgaXMgbm8gbWF0dGVyIHdoaWNoIGVuZ2lu ZSB3ZSBzdWJtaXQKPiArCSAqIHRvLCBpdCByZXBvcnRzIHRoZSBzYW1lIHRpbWVsaW5lIG5hbWUg YW5kIGZlbmNlIGNvbnRleHQuIEhvd2V2ZXIsCj4gKwkgKiB0aGUgZmVuY2UgY29udGV4dCBpcyBu b3QgcmVwb3J0ZWQgdGhyb3VnaCB0aGUgc3luY19mZW5jZV9pbmZvLgo+ICsJICovCj4gKwlleGVj YnVmLnJzdmQxID0KPiArCQlnZW1fY29udGV4dF9jbG9uZShpOTE1LCAwLCAwLAo+ICsJCQkJICBJ OTE1X0NPTlRFWFRfQ1JFQVRFX0ZMQUdTX1NJTkdMRV9USU1FTElORSk7Cj4gKwlleGVjYnVmLmZs YWdzID0gSTkxNV9FWEVDX0ZFTkNFX09VVDsKPiArCW4gPSAwOwo+ICsJZm9yX2VhY2hfZW5naW5l KGk5MTUsIGVuZ2luZSkgewo+ICsJCWdlbV9leGVjYnVmX3dyKGk5MTUsICZleGVjYnVmKTsKPiAr CQlzeW5jX2ZpbGVfaW5mby5zeW5jX2ZlbmNlX2luZm8gPSB0b191c2VyX3BvaW50ZXIoJnJpbmdz W25dKTsKPiArCQlkb19pb2N0bChleGVjYnVmLnJzdmQyID4+IDMyLCBTWU5DX0lPQ19GSUxFX0lO Rk8sICZzeW5jX2ZpbGVfaW5mbyk7Cj4gKwkJY2xvc2UoZXhlY2J1Zi5yc3ZkMiA+PiAzMik7Cj4g Kwo+ICsJCWlndF9pbmZvKCJyaW5nWyVkXSBmZW5jZTogJXMgJXNcbiIsCj4gKwkJCSBuLCByaW5n c1tuXS5kcml2ZXJfbmFtZSwgcmluZ3Nbbl0ub2JqX25hbWUpOwo+ICsJCW4rKzsKPiArCX0KPiAr CWdlbV9zeW5jKGk5MTUsIG9iai5oYW5kbGUpOwo+ICsJZ2VtX2Nsb3NlKGk5MTUsIG9iai5oYW5k bGUpOwo+ICsKPiArCWZvciAoaW50IGkgPSAxOyBpIDwgbjsgaSsrKSB7Cj4gKwkJaWd0X2Fzc2Vy dCghc3RyY21wKHJpbmdzWzBdLmRyaXZlcl9uYW1lLCByaW5nc1tpXS5kcml2ZXJfbmFtZSkpOwo+ ICsJCWlndF9hc3NlcnQoIXN0cmNtcChyaW5nc1swXS5vYmpfbmFtZSwgcmluZ3NbaV0ub2JqX25h bWUpKTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZXhlY19zaW5nbGVfdGltZWxpbmUo aW50IGk5MTUsIHVuc2lnbmVkIGludCBlbmdpbmUpCj4gK3sKPiArCXVuc2lnbmVkIGludCBvdGhl cjsKPiArCWlndF9zcGluX3QgKnNwaW47Cj4gKwl1aW50MzJfdCBjdHg7Cj4gKwo+ICsJaWd0X3Jl cXVpcmUoZ2VtX3JpbmdfaGFzX3BoeXNpY2FsX2VuZ2luZShpOTE1LCBlbmdpbmUpKTsKPiArCWln dF9yZXF1aXJlKGhhc19zaW5nbGVfdGltZWxpbmUoaTkxNSkpOwo+ICsKPiArCS8qCj4gKwkgKiBP biBhbiBvcmRpbmFyeSBjb250ZXh0LCBhIGJsb2NrYWdlIG9uIG9uZSBlbmdpbmUgZG9lc24ndCBw cmV2ZW50Cj4gKwkgKiBleGVjdXRpb24gb24gYW4gb3RoZXIuCj4gKwkgKi8KPiArCWN0eCA9IDA7 Cj4gKwlzcGluID0gTlVMTDsKPiArCWZvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShpOTE1LCBvdGhl cikgewo+ICsJCWlmIChvdGhlciA9PSBlbmdpbmUpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlp ZiAoc3BpbiA9PSBOVUxMKSB7Cj4gKwkJCXNwaW4gPSBfX2lndF9zcGluX25ldyhpOTE1LCAuY3R4 ID0gY3R4LCAuZW5naW5lID0gb3RoZXIpOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCXN0cnVjdCBkcm1f aTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZiA9IHsKPiArCQkJCS5idWZmZXJzX3B0ciA9IHNw aW4tPmV4ZWNidWYuYnVmZmVyc19wdHIsCj4gKwkJCQkuYnVmZmVyX2NvdW50ID0gc3Bpbi0+ZXhl Y2J1Zi5idWZmZXJfY291bnQsCj4gKwkJCQkuZmxhZ3MgPSBvdGhlciwKPiArCQkJCS5yc3ZkMSA9 IGN0eCwKPiArCQkJfTsKPiArCQkJZ2VtX2V4ZWNidWYoaTkxNSwgJmV4ZWNidWYpOwo+ICsJCX0K PiArCX0KPiArCWlndF9yZXF1aXJlKHNwaW4pOwo+ICsJaWd0X2Fzc2VydF9lcShub3Bfc3luYyhp OTE1LCBjdHgsIGVuZ2luZSwgTlNFQ19QRVJfU0VDKSwgMCk7Cj4gKwlpZ3Rfc3Bpbl9mcmVlKGk5 MTUsIHNwaW4pOwo+ICsKPiArCS8qCj4gKwkgKiBCdXQgaWYgd2UgY3JlYXRlIGEgY29udGV4dCB3 aXRoIGp1c3QgYSBzaW5nbGUgc2hhcmVkIHRpbWVsaW5lLAo+ICsJICogdGhlbiBpdCB3aWxsIGJs b2NrIHdhaXRpbmcgZm9yIHRoZSBlYXJsaWVyIHJlcXVlc3RzIG9uIHRoZQo+ICsJICogb3RoZXIg ZW5naW5lcy4KPiArCSAqLwo+ICsJY3R4ID0gZ2VtX2NvbnRleHRfY2xvbmUoaTkxNSwgMCwgMCwK PiArCQkJCUk5MTVfQ09OVEVYVF9DUkVBVEVfRkxBR1NfU0lOR0xFX1RJTUVMSU5FKTsKPiArCXNw aW4gPSBOVUxMOwo+ICsJZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGk5MTUsIG90aGVyKSB7Cj4g KwkJaWYgKG90aGVyID09IGVuZ2luZSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWlmIChzcGlu ID09IE5VTEwpIHsKPiArCQkJc3BpbiA9IF9faWd0X3NwaW5fbmV3KGk5MTUsIC5jdHggPSBjdHgs IC5lbmdpbmUgPSBvdGhlcik7Cj4gKwkJfSBlbHNlIHsKPiArCQkJc3RydWN0IGRybV9pOTE1X2dl bV9leGVjYnVmZmVyMiBleGVjYnVmID0gewo+ICsJCQkJLmJ1ZmZlcnNfcHRyID0gc3Bpbi0+ZXhl Y2J1Zi5idWZmZXJzX3B0ciwKPiArCQkJCS5idWZmZXJfY291bnQgPSBzcGluLT5leGVjYnVmLmJ1 ZmZlcl9jb3VudCwKPiArCQkJCS5mbGFncyA9IG90aGVyLAo+ICsJCQkJLnJzdmQxID0gY3R4LAo+ ICsJCQl9Owo+ICsJCQlnZW1fZXhlY2J1ZihpOTE1LCAmZXhlY2J1Zik7Cj4gKwkJfQo+ICsJfQo+ ICsJaWd0X2Fzc2VydChzcGluKTsKPiArCWlndF9hc3NlcnRfZXEobm9wX3N5bmMoaTkxNSwgY3R4 LCBlbmdpbmUsIE5TRUNfUEVSX1NFQyksIC1FVElNRSk7Cj4gKwlpZ3Rfc3Bpbl9mcmVlKGk5MTUs IHNwaW4pOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBzdG9yZV9kd29yZChpbnQgaTkxNSwgdWlu dDMyX3QgY3R4LCB1bnNpZ25lZCByaW5nLAo+ICsJCQl1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90 IG9mZnNldCwgdWludDMyX3QgdmFsdWUsCj4gKwkJCXVpbnQzMl90IGNvcmssIHVuc2lnbmVkIHdy aXRlX2RvbWFpbikKPiArewo+ICsJY29uc3QgaW50IGdlbiA9IGludGVsX2dlbihpbnRlbF9nZXRf ZHJtX2RldmlkKGk5MTUpKTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9i alszXTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvYzsKPiAr CXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKPiArCXVpbnQzMl90IGJh dGNoWzE2XTsKPiArCWludCBpOwo+ICsKPiArCW1lbXNldCgmZXhlY2J1ZiwgMCwgc2l6ZW9mKGV4 ZWNidWYpKTsKPiArCWV4ZWNidWYuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIob2JqICsg IWNvcmspOwo+ICsJZXhlY2J1Zi5idWZmZXJfY291bnQgPSAyICsgISFjb3JrOwo+ICsJZXhlY2J1 Zi5mbGFncyA9IHJpbmc7Cj4gKwlpZiAoZ2VuIDwgNikKPiArCQlleGVjYnVmLmZsYWdzIHw9IEk5 MTVfRVhFQ19TRUNVUkU7Cj4gKwlleGVjYnVmLnJzdmQxID0gY3R4Owo+ICsKPiArCW1lbXNldChv YmosIDAsIHNpemVvZihvYmopKTsKPiArCW9ialswXS5oYW5kbGUgPSBjb3JrOwo+ICsJb2JqWzFd LmhhbmRsZSA9IHRhcmdldDsKPiArCW9ialsyXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGk5MTUsIDQw OTYpOwo+ICsKPiArCW1lbXNldCgmcmVsb2MsIDAsIHNpemVvZihyZWxvYykpOwo+ICsJcmVsb2Mu dGFyZ2V0X2hhbmRsZSA9IG9ialsxXS5oYW5kbGU7Cj4gKwlyZWxvYy5wcmVzdW1lZF9vZmZzZXQg PSAwOwo+ICsJcmVsb2Mub2Zmc2V0ID0gc2l6ZW9mKHVpbnQzMl90KTsKPiArCXJlbG9jLmRlbHRh ID0gb2Zmc2V0Owo+ICsJcmVsb2MucmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX0lOU1RS VUNUSU9OOwo+ICsJcmVsb2Mud3JpdGVfZG9tYWluID0gd3JpdGVfZG9tYWluOwo+ICsJb2JqWzJd LnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJnJlbG9jKTsKPiArCW9ialsyXS5yZWxvY2F0 aW9uX2NvdW50ID0gMTsKPiArCj4gKwlpID0gMDsKPiArCWJhdGNoW2ldID0gTUlfU1RPUkVfRFdP UkRfSU1NIHwgKGdlbiA8IDYgPyAxIDw8IDIyIDogMCk7Cj4gKwlpZiAoZ2VuID49IDgpIHsKPiAr CQliYXRjaFsrK2ldID0gb2Zmc2V0Owo+ICsJCWJhdGNoWysraV0gPSAwOwo+ICsJfSBlbHNlIGlm IChnZW4gPj0gNCkgewo+ICsJCWJhdGNoWysraV0gPSAwOwo+ICsJCWJhdGNoWysraV0gPSBvZmZz ZXQ7Cj4gKwkJcmVsb2Mub2Zmc2V0ICs9IHNpemVvZih1aW50MzJfdCk7Cj4gKwl9IGVsc2Ugewo+ ICsJCWJhdGNoW2ldLS07Cj4gKwkJYmF0Y2hbKytpXSA9IG9mZnNldDsKPiArCX0KPiArCWJhdGNo WysraV0gPSB2YWx1ZTsKPiArCWJhdGNoWysraV0gPSBNSV9CQVRDSF9CVUZGRVJfRU5EOwo+ICsJ Z2VtX3dyaXRlKGk5MTUsIG9ialsyXS5oYW5kbGUsIDAsIGJhdGNoLCBzaXplb2YoYmF0Y2gpKTsK PiArCWdlbV9leGVjYnVmKGk5MTUsICZleGVjYnVmKTsKPiArCWdlbV9jbG9zZShpOTE1LCBvYmpb Ml0uaGFuZGxlKTsKPiArfQo+ICsKPiArc3RhdGljIHVpbnQzMl90IGNyZWF0ZV9oaWdoZXN0X3By aW9yaXR5KGludCBpOTE1KQo+ICt7Cj4gKwl1aW50MzJfdCBjdHggPSBnZW1fY29udGV4dF9jcmVh dGUoaTkxNSk7Cj4gKwo+ICsJLyoKPiArCSAqIElmIHRoZXJlIGlzIG5vIHByaW9yaXR5IHN1cHBv cnQsIGFsbCBjb250ZXh0cyB3aWxsIGhhdmUgZXF1YWwKPiArCSAqIHByaW9yaXR5IChhbmQgdGhl cmVmb3JlIHRoZSBtYXggdXNlciBwcmlvcml0eSksIHNvIG5vIGNvbnRleHQKPiArCSAqIGNhbiBv dmVydGFrZSB1cywgYW5kIHdlIGVmZmVjdGl2ZWx5IGNhbiBmb3JtIGEgcGx1Zy4KPiArCSAqLwo+ ICsJX19nZW1fY29udGV4dF9zZXRfcHJpb3JpdHkoaTkxNSwgY3R4LCBNQVhfUFJJTyk7Cj4gKwo+ ICsJcmV0dXJuIGN0eDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdW5wbHVnX3Nob3dfcXVldWUo aW50IGk5MTUsIHN0cnVjdCBpZ3RfY29yayAqYywgdW5zaWduZWQgaW50IGVuZ2luZSkKPiArewo+ ICsJaWd0X3NwaW5fdCAqc3BpbltNQVhfRUxTUF9RTEVOXTsKPiArCj4gKwlmb3IgKGludCBuID0g MDsgbiA8IEFSUkFZX1NJWkUoc3Bpbik7IG4rKykgewo+ICsJCWNvbnN0IHN0cnVjdCBpZ3Rfc3Bp bl9mYWN0b3J5IG9wdHMgPSB7Cj4gKwkJCS5jdHggPSBjcmVhdGVfaGlnaGVzdF9wcmlvcml0eShp OTE1KSwKPiArCQkJLmVuZ2luZSA9IGVuZ2luZSwKPiArCQl9Owo+ICsJCXNwaW5bbl0gPSBfX2ln dF9zcGluX2ZhY3RvcnkoaTkxNSwgJm9wdHMpOwo+ICsJCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkx NSwgb3B0cy5jdHgpOwo+ICsJfQo+ICsKPiArCWlndF9jb3JrX3VucGx1ZyhjKTsgLyogYmF0Y2hl cyB3aWxsIG5vdyBiZSBxdWV1ZWQgb24gdGhlIGVuZ2luZSAqLwo+ICsJaWd0X2RlYnVnZnNfZHVt cChpOTE1LCAiaTkxNV9lbmdpbmVfaW5mbyIpOwo+ICsKPiArCWZvciAoaW50IG4gPSAwOyBuIDwg QVJSQVlfU0laRShzcGluKTsgbisrKQo+ICsJCWlndF9zcGluX2ZyZWUoaTkxNSwgc3BpbltuXSk7 Cj4gK30KPiArCj4gK3N0YXRpYyB1aW50MzJfdCBzdG9yZV90aW1lc3RhbXAoaW50IGk5MTUsCj4g KwkJCQl1aW50MzJfdCBjdHgsIHVuc2lnbmVkIHJpbmcsCj4gKwkJCQl1bnNpZ25lZCBtbWlvX2Jh c2UpCj4gK3sKPiArCWNvbnN0IGJvb2wgcjY0YiA9IGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2Rl dmlkKGk5MTUpKSA+PSA4Owo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2Jq ID0gewo+ICsJCS5oYW5kbGUgPSBnZW1fY3JlYXRlKGk5MTUsIDQwOTYpLAo+ICsJCS5yZWxvY2F0 aW9uX2NvdW50ID0gMSwKPiArCX07Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25f ZW50cnkgcmVsb2MgPSB7Cj4gKwkJLnRhcmdldF9oYW5kbGUgPSBvYmouaGFuZGxlLAo+ICsJCS5v ZmZzZXQgPSAyICogc2l6ZW9mKHVpbnQzMl90KSwKPiArCQkuZGVsdGEgPSA0MDkyLAo+ICsJCS5y ZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT04sCj4gKwl9Owo+ICsJc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmID0gewo+ICsJCS5idWZmZXJzX3B0 ciA9IHRvX3VzZXJfcG9pbnRlcigmb2JqKSwKPiArCQkuYnVmZmVyX2NvdW50ID0gMSwKPiArCQku ZmxhZ3MgPSByaW5nLAo+ICsJCS5yc3ZkMSA9IGN0eCwKPiArCX07Cj4gKwl1aW50MzJfdCBiYXRj aFtdID0gewo+ICsJCTB4MjQgPDwgMjMgfCAoMSArIHI2NGIpLCAvKiBTUk0gKi8KPiArCQltbWlv X2Jhc2UgKyAweDM1OCwKPiArCQk0MDkyLAo+ICsJCTAsCj4gKwkJTUlfQkFUQ0hfQlVGRkVSX0VO RAo+ICsJfTsKPiArCj4gKwlpZ3RfcmVxdWlyZShpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZp ZChpOTE1KSkgPj0gNyk7Cj4gKwo+ICsJZ2VtX3dyaXRlKGk5MTUsIG9iai5oYW5kbGUsIDAsIGJh dGNoLCBzaXplb2YoYmF0Y2gpKTsKPiArCW9iai5yZWxvY3NfcHRyID0gdG9fdXNlcl9wb2ludGVy KCZyZWxvYyk7Cj4gKwo+ICsJZ2VtX2V4ZWNidWYoaTkxNSwgJmV4ZWNidWYpOwo+ICsKPiArCXJl dHVybiBvYmouaGFuZGxlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpbmRlcGVuZGVudChpbnQg aTkxNSwgdW5zaWduZWQgcmluZywgdW5zaWduZWQgZmxhZ3MpCj4gK3sKPiArCXVpbnQzMl90IGhh bmRsZVtBUlJBWV9TSVpFKHByaW9yaXRpZXMpXTsKPiArCWlndF9zcGluX3QgKnNwaW5bTUFYX0VM U1BfUUxFTl07Cj4gKwl1bnNpZ25lZCBpbnQgbW1pb19iYXNlOwo+ICsKPiArCS8qIFhYWCBpOTE1 X3F1ZXJ5KCkhICovCj4gKwlzd2l0Y2ggKHJpbmcpIHsKPiArCWNhc2UgSTkxNV9FWEVDX0RFRkFV TFQ6Cj4gKwljYXNlIEk5MTVfRVhFQ19SRU5ERVI6Cj4gKwkJbW1pb19iYXNlID0gMHgyMDAwOwo+ ICsJCWJyZWFrOwo+ICsjaWYgMAo+ICsJY2FzZSBJOTE1X0VYRUNfQlNEOgo+ICsJCW1taW9fYmFz ZSA9IDB4MTIwMDA7Cj4gKwkJYnJlYWs7Cj4gKyNlbmRpZgo+ICsJY2FzZSBJOTE1X0VYRUNfQkxU Ogo+ICsJCW1taW9fYmFzZSA9IDB4MjIwMDA7Cj4gKwkJYnJlYWs7Cj4gKwo+ICsJY2FzZSBJOTE1 X0VYRUNfVkVCT1g6Cj4gKwkJaWYgKGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGk5MTUp KSA+PSAxMSkKPiArCQkJbW1pb19iYXNlID0gMHgxZDgwMDA7Cj4gKwkJZWxzZQo+ICsJCQltbWlv X2Jhc2UgPSAweDFhMDAwOwo+ICsJCWJyZWFrOwo+ICsKPiArCWRlZmF1bHQ6Cj4gKwkJaWd0X3Nr aXAoIm1taW8gYmFzZSBub3Qga25vd25cbiIpOwo+ICsJfQo+ICsKPiArCWZvciAoaW50IG4gPSAw OyBuIDwgQVJSQVlfU0laRShzcGluKTsgbisrKSB7Cj4gKwkJY29uc3Qgc3RydWN0IGlndF9zcGlu X2ZhY3Rvcnkgb3B0cyA9IHsKPiArCQkJLmN0eCA9IGNyZWF0ZV9oaWdoZXN0X3ByaW9yaXR5KGk5 MTUpLAo+ICsJCQkuZW5naW5lID0gcmluZywKPiArCQl9Owo+ICsJCXNwaW5bbl0gPSBfX2lndF9z cGluX2ZhY3RvcnkoaTkxNSwgJm9wdHMpOwo+ICsJCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwg b3B0cy5jdHgpOwo+ICsJfQo+ICsKPiArCWZvciAoaW50IGkgPSAwOyBpIDwgQVJSQVlfU0laRShw cmlvcml0aWVzKTsgaSsrKSB7Cj4gKwkJdWludDMyX3QgY3R4ID0gZ2VtX3F1ZXVlX2NyZWF0ZShp OTE1KTsKPiArCQlnZW1fY29udGV4dF9zZXRfcHJpb3JpdHkoaTkxNSwgY3R4LCBwcmlvcml0aWVz W2ldKTsKPiArCQloYW5kbGVbaV0gPSBzdG9yZV90aW1lc3RhbXAoaTkxNSwgY3R4LCByaW5nLCBt bWlvX2Jhc2UpOwo+ICsJCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3R4KTsKPiArCX0KPiAr Cj4gKwlmb3IgKGludCBuID0gMDsgbiA8IEFSUkFZX1NJWkUoc3Bpbik7IG4rKykKPiArCQlpZ3Rf c3Bpbl9mcmVlKGk5MTUsIHNwaW5bbl0pOwo+ICsKPiArCWZvciAoaW50IGkgPSAwOyBpIDwgQVJS QVlfU0laRShwcmlvcml0aWVzKTsgaSsrKSB7Cj4gKwkJdWludDMyX3QgKnB0cjsKPiArCj4gKwkJ cHRyID0gZ2VtX21tYXBfX2d0dChpOTE1LCBoYW5kbGVbaV0sIDQwOTYsIFBST1RfUkVBRCk7Cj4g KwkJZ2VtX3NldF9kb21haW4oaTkxNSwgaGFuZGxlW2ldLCAvKiBubyB3cml0ZSBoYXphcmQgbGll cyEgKi8KPiArCQkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RPTUFJTl9H VFQpOwo+ICsJCWdlbV9jbG9zZShpOTE1LCBoYW5kbGVbaV0pOwo+ICsKPiArCQloYW5kbGVbaV0g PSBwdHJbMTAyM107CgpNeSBsYXN0IHJlYWwgY29uY2VybiBpcyB0aGlzIDEwMjMgYW5kIG1hdGNo aW5nIDQwOTIgaW4gc3RvcmVfdGltZXN0YW1wLgoKI2RlZmluZSBUSU1FU1RBTVBfT0ZGU0VUX0RX ICgxMDIzKQoKQW5kIHVzaW5nIGl0IGF0IGJvdGggc2l0ZXMgd291bGQgc29ydCB0aGF0IG91dC4g U28gd2l0aCB0aGF0OgoKUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxp bkBpbnRlbC5jb20+CgpSZWdhcmRzLAoKVHZydGtvCgo+ICsJCW11bm1hcChwdHIsIDQwOTYpOwo+ ICsKPiArCQlpZ3RfZGVidWcoImN0eFslZF0gLnByaW89JWQsIHRpbWVzdGFtcD0ldVxuIiwKPiAr CQkJICBpLCBwcmlvcml0aWVzW2ldLCBoYW5kbGVbaV0pOwo+ICsJfQo+ICsKPiArCWlndF9hc3Nl cnQoKGludDMyX3QpKGhhbmRsZVtISV0gLSBoYW5kbGVbTE9dKSA8IDApOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCByZW9yZGVyKGludCBpOTE1LCB1bnNpZ25lZCByaW5nLCB1bnNpZ25lZCBmbGFn cykKPiArI2RlZmluZSBFUVVBTCAxCj4gK3sKPiArCUlHVF9DT1JLX0hBTkRMRShjb3JrKTsKPiAr CXVpbnQzMl90IHNjcmF0Y2g7Cj4gKwl1aW50MzJfdCAqcHRyOwo+ICsJdWludDMyX3QgY3R4WzJd Owo+ICsJdWludDMyX3QgcGx1ZzsKPiArCj4gKwljdHhbTE9dID0gZ2VtX3F1ZXVlX2NyZWF0ZShp OTE1KTsKPiArCWdlbV9jb250ZXh0X3NldF9wcmlvcml0eShpOTE1LCBjdHhbTE9dLCBNSU5fUFJJ Tyk7Cj4gKwo+ICsJY3R4W0hJXSA9IGdlbV9xdWV1ZV9jcmVhdGUoaTkxNSk7Cj4gKwlnZW1fY29u dGV4dF9zZXRfcHJpb3JpdHkoaTkxNSwgY3R4W0hJXSwgZmxhZ3MgJiBFUVVBTCA/IE1JTl9QUklP IDogMCk7Cj4gKwo+ICsJc2NyYXRjaCA9IGdlbV9jcmVhdGUoaTkxNSwgNDA5Nik7Cj4gKwlwbHVn ID0gaWd0X2NvcmtfcGx1ZygmY29yaywgaTkxNSk7Cj4gKwo+ICsJLyogV2UgZXhwZWN0IHRoZSBo aWdoIHByaW9yaXR5IGNvbnRleHQgdG8gYmUgZXhlY3V0ZWQgZmlyc3QsIGFuZAo+ICsJICogc28g dGhlIGZpbmFsIHJlc3VsdCB3aWxsIGJlIHZhbHVlIGZyb20gdGhlIGxvdyBwcmlvcml0eSBjb250 ZXh0Lgo+ICsJICovCj4gKwlzdG9yZV9kd29yZChpOTE1LCBjdHhbTE9dLCByaW5nLCBzY3JhdGNo LCAwLCBjdHhbTE9dLCBwbHVnLCAwKTsKPiArCXN0b3JlX2R3b3JkKGk5MTUsIGN0eFtISV0sIHJp bmcsIHNjcmF0Y2gsIDAsIGN0eFtISV0sIHBsdWcsIDApOwo+ICsKPiArCXVucGx1Z19zaG93X3F1 ZXVlKGk5MTUsICZjb3JrLCByaW5nKTsKPiArCWdlbV9jbG9zZShpOTE1LCBwbHVnKTsKPiArCj4g KwlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGN0eFtMT10pOwo+ICsJZ2VtX2NvbnRleHRfZGVz dHJveShpOTE1LCBjdHhbSEldKTsKPiArCj4gKwlwdHIgPSBnZW1fbW1hcF9fZ3R0KGk5MTUsIHNj cmF0Y2gsIDQwOTYsIFBST1RfUkVBRCk7Cj4gKwlnZW1fc2V0X2RvbWFpbihpOTE1LCBzY3JhdGNo LCAvKiBubyB3cml0ZSBoYXphcmQgbGllcyEgKi8KPiArCQkgICAgICAgSTkxNV9HRU1fRE9NQUlO X0dUVCwgSTkxNV9HRU1fRE9NQUlOX0dUVCk7Cj4gKwlnZW1fY2xvc2UoaTkxNSwgc2NyYXRjaCk7 Cj4gKwo+ICsJaWYgKGZsYWdzICYgRVFVQUwpIC8qIGVxdWFsIHByaW9yaXR5LCByZXN1bHQgd2ls bCBiZSBmaWZvICovCj4gKwkJaWd0X2Fzc2VydF9lcV91MzIocHRyWzBdLCBjdHhbSEldKTsKPiAr CWVsc2UKPiArCQlpZ3RfYXNzZXJ0X2VxX3UzMihwdHJbMF0sIGN0eFtMT10pOwo+ICsJbXVubWFw KHB0ciwgNDA5Nik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHByb21vdGlvbihpbnQgaTkxNSwg dW5zaWduZWQgcmluZykKPiArewo+ICsJSUdUX0NPUktfSEFORExFKGNvcmspOwo+ICsJdWludDMy X3QgcmVzdWx0LCBkZXA7Cj4gKwl1aW50MzJfdCAqcHRyOwo+ICsJdWludDMyX3QgY3R4WzNdOwo+ ICsJdWludDMyX3QgcGx1ZzsKPiArCj4gKwljdHhbTE9dID0gZ2VtX3F1ZXVlX2NyZWF0ZShpOTE1 KTsKPiArCWdlbV9jb250ZXh0X3NldF9wcmlvcml0eShpOTE1LCBjdHhbTE9dLCBNSU5fUFJJTyk7 Cj4gKwo+ICsJY3R4W0hJXSA9IGdlbV9xdWV1ZV9jcmVhdGUoaTkxNSk7Cj4gKwlnZW1fY29udGV4 dF9zZXRfcHJpb3JpdHkoaTkxNSwgY3R4W0hJXSwgMCk7Cj4gKwo+ICsJY3R4W05PSVNFXSA9IGdl bV9xdWV1ZV9jcmVhdGUoaTkxNSk7Cj4gKwlnZW1fY29udGV4dF9zZXRfcHJpb3JpdHkoaTkxNSwg Y3R4W05PSVNFXSwgTUlOX1BSSU8vMik7Cj4gKwo+ICsJcmVzdWx0ID0gZ2VtX2NyZWF0ZShpOTE1 LCA0MDk2KTsKPiArCWRlcCA9IGdlbV9jcmVhdGUoaTkxNSwgNDA5Nik7Cj4gKwo+ICsJcGx1ZyA9 IGlndF9jb3JrX3BsdWcoJmNvcmssIGk5MTUpOwo+ICsKPiArCS8qIEV4cGVjdCB0aGF0IEhJIHBy b21vdGVzIExPLCBzbyB0aGUgb3JkZXIgd2lsbCBiZSBMTywgSEksIE5PSVNFLgo+ICsJICoKPiAr CSAqIGZpZm8gd291bGQgYmUgTk9JU0UsIExPLCBISS4KPiArCSAqIHN0cmljdCBwcmlvcml0eSB3 b3VsZCBiZSAgSEksIE5PSVNFLCBMTwo+ICsJICovCj4gKwlzdG9yZV9kd29yZChpOTE1LCBjdHhb Tk9JU0VdLCByaW5nLCByZXN1bHQsIDAsIGN0eFtOT0lTRV0sIHBsdWcsIDApOwo+ICsJc3RvcmVf ZHdvcmQoaTkxNSwgY3R4W0xPXSwgcmluZywgcmVzdWx0LCAwLCBjdHhbTE9dLCBwbHVnLCAwKTsK PiArCj4gKwkvKiBsaW5rIExPIDwtPiBISSB2aWEgYSBkZXBlbmRlbmN5IG9uIGFub3RoZXIgYnVm ZmVyICovCj4gKwlzdG9yZV9kd29yZChpOTE1LCBjdHhbTE9dLCByaW5nLCBkZXAsIDAsIGN0eFtM T10sIDAsIEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTik7Cj4gKwlzdG9yZV9kd29yZChpOTE1 LCBjdHhbSEldLCByaW5nLCBkZXAsIDAsIGN0eFtISV0sIDAsIDApOwo+ICsKPiArCXN0b3JlX2R3 b3JkKGk5MTUsIGN0eFtISV0sIHJpbmcsIHJlc3VsdCwgMCwgY3R4W0hJXSwgMCwgMCk7Cj4gKwo+ ICsJdW5wbHVnX3Nob3dfcXVldWUoaTkxNSwgJmNvcmssIHJpbmcpOwo+ICsJZ2VtX2Nsb3NlKGk5 MTUsIHBsdWcpOwo+ICsKPiArCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3R4W05PSVNFXSk7 Cj4gKwlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGN0eFtMT10pOwo+ICsJZ2VtX2NvbnRleHRf ZGVzdHJveShpOTE1LCBjdHhbSEldKTsKPiArCj4gKwlwdHIgPSBnZW1fbW1hcF9fZ3R0KGk5MTUs IGRlcCwgNDA5NiwgUFJPVF9SRUFEKTsKPiArCWdlbV9zZXRfZG9tYWluKGk5MTUsIGRlcCwgLyog bm8gd3JpdGUgaGF6YXJkIGxpZXMhICovCj4gKwkJCUk5MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVf R0VNX0RPTUFJTl9HVFQpOwo+ICsJZ2VtX2Nsb3NlKGk5MTUsIGRlcCk7Cj4gKwo+ICsJaWd0X2Fz c2VydF9lcV91MzIocHRyWzBdLCBjdHhbSEldKTsKPiArCW11bm1hcChwdHIsIDQwOTYpOwo+ICsK PiArCXB0ciA9IGdlbV9tbWFwX19ndHQoaTkxNSwgcmVzdWx0LCA0MDk2LCBQUk9UX1JFQUQpOwo+ ICsJZ2VtX3NldF9kb21haW4oaTkxNSwgcmVzdWx0LCAvKiBubyB3cml0ZSBoYXphcmQgbGllcyEg Ki8KPiArCQkJSTkxNV9HRU1fRE9NQUlOX0dUVCwgSTkxNV9HRU1fRE9NQUlOX0dUVCk7Cj4gKwln ZW1fY2xvc2UoaTkxNSwgcmVzdWx0KTsKPiArCj4gKwlpZ3RfYXNzZXJ0X2VxX3UzMihwdHJbMF0s IGN0eFtOT0lTRV0pOwo+ICsJbXVubWFwKHB0ciwgNDA5Nik7Cj4gK30KPiArCj4gK3N0YXRpYyB2 b2lkIHNtb2tldGVzdChpbnQgaTkxNSwgdW5zaWduZWQgcmluZywgdW5zaWduZWQgdGltZW91dCkK PiArewo+ICsJY29uc3QgaW50IG5jcHVzID0gc3lzY29uZihfU0NfTlBST0NFU1NPUlNfT05MTik7 Cj4gKwl1bnNpZ25lZCBlbmdpbmVzWzE2XTsKPiArCXVuc2lnbmVkIG5lbmdpbmU7Cj4gKwl1bnNp Z25lZCBlbmdpbmU7Cj4gKwl1aW50MzJfdCBzY3JhdGNoOwo+ICsJdWludDMyX3QgKnB0cjsKPiAr Cj4gKwluZW5naW5lID0gMDsKPiArCWZvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShpOTE1LCBlbmdp bmUpCj4gKwkJZW5naW5lc1tuZW5naW5lKytdID0gZW5naW5lOwo+ICsJaWd0X3JlcXVpcmUobmVu Z2luZSk7Cj4gKwo+ICsJc2NyYXRjaCA9IGdlbV9jcmVhdGUoaTkxNSwgNDA5Nik7Cj4gKwlpZ3Rf Zm9yayhjaGlsZCwgbmNwdXMpIHsKPiArCQl1bnNpZ25lZCBsb25nIGNvdW50ID0gMDsKPiArCQl1 aW50MzJfdCBjdHg7Cj4gKwo+ICsJCWhhcnNfcGV0cnVza2FfZjU0XzFfcmFuZG9tX3BlcnR1cmIo Y2hpbGQpOwo+ICsKPiArCQljdHggPSBnZW1fcXVldWVfY3JlYXRlKGk5MTUpOwo+ICsJCWlndF91 bnRpbF90aW1lb3V0KHRpbWVvdXQpIHsKPiArCQkJaW50IHByaW87Cj4gKwo+ICsJCQlwcmlvID0g aGFyc19wZXRydXNrYV9mNTRfMV9yYW5kb21fdW5zYWZlX21heChNQVhfUFJJTyAtIE1JTl9QUklP KSArIE1JTl9QUklPOwo+ICsJCQlnZW1fY29udGV4dF9zZXRfcHJpb3JpdHkoaTkxNSwgY3R4LCBw cmlvKTsKPiArCj4gKwkJCWVuZ2luZSA9IGVuZ2luZXNbaGFyc19wZXRydXNrYV9mNTRfMV9yYW5k b21fdW5zYWZlX21heChuZW5naW5lKV07Cj4gKwkJCXN0b3JlX2R3b3JkKGk5MTUsIGN0eCwgZW5n aW5lLCBzY3JhdGNoLAo+ICsJCQkJICAgIDgqY2hpbGQgKyAwLCB+Y2hpbGQsCj4gKwkJCQkgICAg MCwgMCk7Cj4gKwkJCWZvciAodW5zaWduZWQgaW50IHN0ZXAgPSAwOyBzdGVwIDwgODsgc3RlcCsr KQo+ICsJCQkJc3RvcmVfZHdvcmQoaTkxNSwgY3R4LCBlbmdpbmUsIHNjcmF0Y2gsCj4gKwkJCQkJ ICAgIDgqY2hpbGQgKyA0LCBjb3VudCsrLAo+ICsJCQkJCSAgICAwLCAwKTsKPiArCQl9Cj4gKwkJ Z2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBjdHgpOwo+ICsJfQo+ICsJaWd0X3dhaXRjaGlsZHJl bigpOwo+ICsKPiArCXB0ciA9IGdlbV9tbWFwX19ndHQoaTkxNSwgc2NyYXRjaCwgNDA5NiwgUFJP VF9SRUFEKTsKPiArCWdlbV9zZXRfZG9tYWluKGk5MTUsIHNjcmF0Y2gsIC8qIG5vIHdyaXRlIGhh emFyZCBsaWVzISAqLwo+ICsJCQlJOTE1X0dFTV9ET01BSU5fR1RULCBJOTE1X0dFTV9ET01BSU5f R1RUKTsKPiArCWdlbV9jbG9zZShpOTE1LCBzY3JhdGNoKTsKPiArCj4gKwlmb3IgKHVuc2lnbmVk IG4gPSAwOyBuIDwgbmNwdXM7IG4rKykgewo+ICsJCWlndF9hc3NlcnRfZXFfdTMyKHB0clsyKm5d LCB+bik7Cj4gKwkJLyoKPiArCQkgKiBOb3RlIHRoaXMgY291bnQgaXMgYXBwcm94aW1hdGUgZHVl IHRvIHVuY29uc3RyYWluZWQKPiArCQkgKiBvcmRlcmluZyBvZiB0aGUgZHdvcmQgd3JpdGVzIGJl dHdlZW4gZW5naW5lcy4KPiArCQkgKgo+ICsJCSAqIFRha2UgdGhlIHJlc3VsdCB3aXRoIGEgcGlu Y2ggb2Ygc2FsdC4KPiArCQkgKi8KPiArCQlpZ3RfaW5mbygiQ2hpbGRbJWRdIGNvbXBsZXRlZCAl dSBjeWNsZXNcbiIsICBuLCBwdHJbMipuKzFdKTsKPiArCX0KPiArCW11bm1hcChwdHIsIDQwOTYp Owo+ICt9Cj4gKwo+ICtpZ3RfbWFpbgo+ICt7Cj4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZSAqZTsKPiArCWludCBpOTE1ID0gLTE7Cj4gKwo+ICsJaWd0X2ZpeHR1cmUgewo+ ICsJCWk5MTUgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKPiArCQlpZ3RfcmVxdWly ZV9nZW0oaTkxNSk7Cj4gKwl9Cj4gKwo+ICsJaWd0X3N1YnRlc3RfZ3JvdXAgewo+ICsJCWlndF9m aXh0dXJlIHsKPiArCQkJaWd0X3JlcXVpcmUoZ2VtX2NvbnRleHRzX2hhc19zaGFyZWRfZ3R0KGk5 MTUpKTsKPiArCQkJaWd0X2ZvcmtfaGFuZ19kZXRlY3RvcihpOTE1KTsKPiArCQl9Cj4gKwo+ICsJ CWlndF9zdWJ0ZXN0KCJjcmVhdGUtc2hhcmVkLWd0dCIpCj4gKwkJCWNyZWF0ZV9zaGFyZWRfZ3R0 KGk5MTUsIDApOwo+ICsKPiArCQlpZ3Rfc3VidGVzdCgiZGV0YWNoZWQtc2hhcmVkLWd0dCIpCj4g KwkJCWNyZWF0ZV9zaGFyZWRfZ3R0KGk5MTUsIERFVEFDSEVEKTsKPiArCj4gKwkJaWd0X3N1YnRl c3QoImRpc2pvaW50LXRpbWVsaW5lcyIpCj4gKwkJCWRpc2pvaW50X3RpbWVsaW5lcyhpOTE1KTsK PiArCj4gKwkJaWd0X3N1YnRlc3QoInNpbmdsZS10aW1lbGluZSIpCj4gKwkJCXNpbmdsZV90aW1l bGluZShpOTE1KTsKPiArCj4gKwkJaWd0X3N1YnRlc3QoImV4aGF1c3Qtc2hhcmVkLWd0dCIpCj4g KwkJCWV4aGF1c3Rfc2hhcmVkX2d0dChpOTE1LCAwKTsKPiArCj4gKwkJaWd0X3N1YnRlc3QoImV4 aGF1c3Qtc2hhcmVkLWd0dC1scmMiKQo+ICsJCQlleGhhdXN0X3NoYXJlZF9ndHQoaTkxNSwgRVhI QVVTVF9MUkMpOwo+ICsKPiArCQlmb3IgKGUgPSBpbnRlbF9leGVjdXRpb25fZW5naW5lczsgZS0+ bmFtZTsgZSsrKSB7Cj4gKwkJCWlndF9zdWJ0ZXN0X2YoImV4ZWMtc2hhcmVkLWd0dC0lcyIsIGUt Pm5hbWUpCj4gKwkJCQlleGVjX3NoYXJlZF9ndHQoaTkxNSwgZS0+ZXhlY19pZCB8IGUtPmZsYWdz KTsKPiArCj4gKwkJCWlndF9zdWJ0ZXN0X2YoImV4ZWMtc2luZ2xlLXRpbWVsaW5lLSVzIiwgZS0+ bmFtZSkKPiArCQkJCWV4ZWNfc2luZ2xlX3RpbWVsaW5lKGk5MTUsCj4gKwkJCQkJCSAgICAgZS0+ ZXhlY19pZCB8IGUtPmZsYWdzKTsKPiArCj4gKwkJCS8qCj4gKwkJCSAqIENoZWNrIHRoYXQgdGhl IHNoYXJlZCBjb250ZXh0cyBvcGVyYXRlIGluZGVwZW5kZW50bHksCj4gKwkJCSAqIHRoYXQgaXMg cmVxdWVzdHMgb24gb25lICgicXVldWUiKSBjYW4gYmUgc2NoZWR1bGVkCj4gKwkJCSAqIGFyb3Vu ZCBhbm90aGVyIHF1ZXVlLiBXZSBvbmx5IGNoZWNrIHRoZSBiYXNpY3MgaGVyZSwKPiArCQkJICog ZW5vdWdoIHRvIHJlZHVjZSB0aGUgcXVldWUgaW50byBqdXN0IGFub3RoZXIgY29udGV4dCwKPiAr CQkJICogYW5kIHNvIHJlbHkgb24gZ2VtX2V4ZWNfc2NoZWR1bGUgdG8gcHJvdmUgdGhlIHJlc3Qu Cj4gKwkJCSAqLwo+ICsJCQlpZ3Rfc3VidGVzdF9ncm91cCB7Cj4gKwkJCQlpZ3RfZml4dHVyZSB7 Cj4gKwkJCQkJZ2VtX3JlcXVpcmVfcmluZyhpOTE1LCBlLT5leGVjX2lkIHwgZS0+ZmxhZ3MpOwo+ ICsJCQkJCWlndF9yZXF1aXJlKGdlbV9jYW5fc3RvcmVfZHdvcmQoaTkxNSwgZS0+ZXhlY19pZCkg fCBlLT5mbGFncyk7Cj4gKwkJCQkJaWd0X3JlcXVpcmUoZ2VtX3NjaGVkdWxlcl9lbmFibGVkKGk5 MTUpKTsKPiArCQkJCQlpZ3RfcmVxdWlyZShnZW1fc2NoZWR1bGVyX2hhc19jdHhfcHJpb3JpdHko aTkxNSkpOwo+ICsJCQkJfQo+ICsKPiArCQkJCWlndF9zdWJ0ZXN0X2YoIlEtaW5kZXBlbmRlbnQt JXMiLCBlLT5uYW1lKQo+ICsJCQkJCWluZGVwZW5kZW50KGk5MTUsIGUtPmV4ZWNfaWQgfCBlLT5m bGFncywgMCk7Cj4gKwo+ICsJCQkJaWd0X3N1YnRlc3RfZigiUS1pbi1vcmRlci0lcyIsIGUtPm5h bWUpCj4gKwkJCQkJcmVvcmRlcihpOTE1LCBlLT5leGVjX2lkIHwgZS0+ZmxhZ3MsIEVRVUFMKTsK PiArCj4gKwkJCQlpZ3Rfc3VidGVzdF9mKCJRLW91dC1vcmRlci0lcyIsIGUtPm5hbWUpCj4gKwkJ CQkJcmVvcmRlcihpOTE1LCBlLT5leGVjX2lkIHwgZS0+ZmxhZ3MsIDApOwo+ICsKPiArCQkJCWln dF9zdWJ0ZXN0X2YoIlEtcHJvbW90aW9uLSVzIiwgZS0+bmFtZSkKPiArCQkJCQlwcm9tb3Rpb24o aTkxNSwgZS0+ZXhlY19pZCB8IGUtPmZsYWdzKTsKPiArCj4gKwkJCQlpZ3Rfc3VidGVzdF9mKCJR LXNtb2tldGVzdC0lcyIsIGUtPm5hbWUpCj4gKwkJCQkJc21va2V0ZXN0KGk5MTUsIGUtPmV4ZWNf aWQgfCBlLT5mbGFncywgNSk7Cj4gKwkJCX0KPiArCQl9Cj4gKwo+ICsJCWlndF9zdWJ0ZXN0KCJR LXNtb2tldGVzdC1hbGwiKSB7Cj4gKwkJCWlndF9yZXF1aXJlKGdlbV9zY2hlZHVsZXJfZW5hYmxl ZChpOTE1KSk7Cj4gKwkJCWlndF9yZXF1aXJlKGdlbV9zY2hlZHVsZXJfaGFzX2N0eF9wcmlvcml0 eShpOTE1KSk7Cj4gKwkJCXNtb2tldGVzdChpOTE1LCAtMSwgMzApOwo+ICsJCX0KPiArCj4gKwkJ aWd0X2ZpeHR1cmUgewo+ICsJCQlpZ3Rfc3RvcF9oYW5nX2RldGVjdG9yKCk7Cj4gKwkJfQo+ICsJ fQo+ICt9Cj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfd2hpc3Blci5jIGIvdGVz dHMvaTkxNS9nZW1fZXhlY193aGlzcGVyLmMKPiBpbmRleCAzOTY2MDRkMzEuLjQ4MGQ4ZTg3MyAx MDA2NDQKPiAtLS0gYS90ZXN0cy9pOTE1L2dlbV9leGVjX3doaXNwZXIuYwo+ICsrKyBiL3Rlc3Rz L2k5MTUvZ2VtX2V4ZWNfd2hpc3Blci5jCj4gQEAgLTc4LDYgKzc4LDcgQEAgc3RhdGljIHZvaWQg dmVyaWZ5X3JlbG9jKGludCBmZCwgdWludDMyX3QgaGFuZGxlLAo+ICAgI2RlZmluZSBIQU5HIDB4 MjAKPiAgICNkZWZpbmUgU1lOQyAweDQwCj4gICAjZGVmaW5lIFBSSU9SSVRZIDB4ODAKPiArI2Rl ZmluZSBRVUVVRVMgMHgxMDAKPiAgIAo+ICAgc3RydWN0IGhhbmcgewo+ICAgCXN0cnVjdCBkcm1f aTkxNV9nZW1fZXhlY19vYmplY3QyIG9iajsKPiBAQCAtMTYyLDcgKzE2Myw3IEBAIHN0YXRpYyB2 b2lkIGN0eF9zZXRfcmFuZG9tX3ByaW9yaXR5KGludCBmZCwgdWludDMyX3QgY3R4KQo+ICAgewo+ ICAgCWludCBwcmlvID0gaGFyc19wZXRydXNrYV9mNTRfMV9yYW5kb21fdW5zYWZlX21heCgxMDI0 KSAtIDUxMjsKPiAgIAlnZW1fY29udGV4dF9zZXRfcHJpb3JpdHkoZmQsIGN0eCwgcHJpbyk7Cj4g LX07Cj4gK30KPiAgIAo+ICAgc3RhdGljIHZvaWQgd2hpc3BlcihpbnQgZmQsIHVuc2lnbmVkIGVu Z2luZSwgdW5zaWduZWQgZmxhZ3MpCj4gICB7Cj4gQEAgLTIxNyw2ICsyMTgsOSBAQCBzdGF0aWMg dm9pZCB3aGlzcGVyKGludCBmZCwgdW5zaWduZWQgZW5naW5lLCB1bnNpZ25lZCBmbGFncykKPiAg IAlpZiAoZmxhZ3MgJiBDT05URVhUUykKPiAgIAkJZ2VtX3JlcXVpcmVfY29udGV4dHMoZmQpOwo+ ICAgCj4gKwlpZiAoZmxhZ3MgJiBRVUVVRVMpCj4gKwkJaWd0X3JlcXVpcmUoZ2VtX2hhc19xdWV1 ZXMoZmQpKTsKPiArCj4gICAJaWYgKGZsYWdzICYgSEFORykKPiAgIAkJaW5pdF9oYW5nKCZoYW5n KTsKPiAgIAo+IEBAIC0yODEsNiArMjg1LDEwIEBAIHN0YXRpYyB2b2lkIHdoaXNwZXIoaW50IGZk LCB1bnNpZ25lZCBlbmdpbmUsIHVuc2lnbmVkIGZsYWdzKQo+ICAgCQkJZm9yIChuID0gMDsgbiA8 IDY0OyBuKyspCj4gICAJCQkJY29udGV4dHNbbl0gPSBnZW1fY29udGV4dF9jcmVhdGUoZmQpOwo+ ICAgCQl9Cj4gKwkJaWYgKGZsYWdzICYgUVVFVUVTKSB7Cj4gKwkJCWZvciAobiA9IDA7IG4gPCA2 NDsgbisrKQo+ICsJCQkJY29udGV4dHNbbl0gPSBnZW1fcXVldWVfY3JlYXRlKGZkKTsKPiArCQl9 Cj4gICAJCWlmIChmbGFncyAmIEZEUykgewo+ICAgCQkJZm9yIChuID0gMDsgbiA8IDY0OyBuKysp Cj4gICAJCQkJZmRzW25dID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7Cj4gQEAgLTM5 MSw3ICszOTksNyBAQCBzdGF0aWMgdm9pZCB3aGlzcGVyKGludCBmZCwgdW5zaWduZWQgZW5naW5l LCB1bnNpZ25lZCBmbGFncykKPiAgIAkJCQkJCWV4ZWNidWYuZmxhZ3MgJj0gfkVOR0lORV9NQVNL Owo+ICAgCQkJCQkJZXhlY2J1Zi5mbGFncyB8PSBlbmdpbmVzW3JhbmQoKSAlIG5lbmdpbmVdOwo+ ICAgCQkJCQl9Cj4gLQkJCQkJaWYgKGZsYWdzICYgQ09OVEVYVFMpIHsKPiArCQkJCQlpZiAoZmxh Z3MgJiAoQ09OVEVYVFMgfCBRVUVVRVMpKSB7Cj4gICAJCQkJCQlleGVjYnVmLnJzdmQxID0gY29u dGV4dHNbcmFuZCgpICUgNjRdOwo+ICAgCQkJCQkJaWYgKGZsYWdzICYgUFJJT1JJVFkpCj4gICAJ CQkJCQkJY3R4X3NldF9yYW5kb21fcHJpb3JpdHkodGhpc19mZCwgZXhlY2J1Zi5yc3ZkMSk7Cj4g QEAgLTQ3NCw3ICs0ODIsNyBAQCBzdGF0aWMgdm9pZCB3aGlzcGVyKGludCBmZCwgdW5zaWduZWQg ZW5naW5lLCB1bnNpZ25lZCBmbGFncykKPiAgIAkJCWZvciAobiA9IDA7IG4gPCA2NDsgbisrKQo+ ICAgCQkJCWNsb3NlKGZkc1tuXSk7Cj4gICAJCX0KPiAtCQlpZiAoZmxhZ3MgJiBDT05URVhUUykg ewo+ICsJCWlmIChmbGFncyAmIChDT05URVhUUyB8IFFVRVVFUykpIHsKPiAgIAkJCWZvciAobiA9 IDA7IG4gPCA2NDsgbisrKQo+ICAgCQkJCWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGNvbnRleHRz W25dKTsKPiAgIAkJfQo+IEBAIC01MTAsMTggKzUxOCwyNCBAQCBpZ3RfbWFpbgo+ICAgCQl7ICJj aGFpbi1mb3JrZWQiLCBDSEFJTiB8IEZPUktFRCB9LAo+ICAgCQl7ICJjaGFpbi1pbnRlcnJ1cHRp YmxlIiwgQ0hBSU4gfCBJTlRFUlJVUFRJQkxFIH0sCj4gICAJCXsgImNoYWluLXN5bmMiLCBDSEFJ TiB8IFNZTkMgfSwKPiAtCQl7ICJjb250ZXh0cyIsIENPTlRFWFRTIH0sCj4gLQkJeyAiY29udGV4 dHMtaW50ZXJydXB0aWJsZSIsIENPTlRFWFRTIHwgSU5URVJSVVBUSUJMRX0sCj4gLQkJeyAiY29u dGV4dHMtZm9ya2VkIiwgQ09OVEVYVFMgfCBGT1JLRUR9LAo+IC0JCXsgImNvbnRleHRzLXByaW9y aXR5IiwgQ09OVEVYVFMgfCBGT1JLRUQgfCBQUklPUklUWSB9LAo+IC0JCXsgImNvbnRleHRzLWNo YWluIiwgQ09OVEVYVFMgfCBDSEFJTiB9LAo+IC0JCXsgImNvbnRleHRzLXN5bmMiLCBDT05URVhU UyB8IFNZTkMgfSwKPiAgIAkJeyAiZmRzIiwgRkRTIH0sCj4gICAJCXsgImZkcy1pbnRlcnJ1cHRp YmxlIiwgRkRTIHwgSU5URVJSVVBUSUJMRX0sCj4gICAJCXsgImZkcy1mb3JrZWQiLCBGRFMgfCBG T1JLRUR9LAo+ICAgCQl7ICJmZHMtcHJpb3JpdHkiLCBGRFMgfCBGT1JLRUQgfCBQUklPUklUWSB9 LAo+ICAgCQl7ICJmZHMtY2hhaW4iLCBGRFMgfCBDSEFJTn0sCj4gICAJCXsgImZkcy1zeW5jIiwg RkRTIHwgU1lOQ30sCj4gKwkJeyAiY29udGV4dHMiLCBDT05URVhUUyB9LAo+ICsJCXsgImNvbnRl eHRzLWludGVycnVwdGlibGUiLCBDT05URVhUUyB8IElOVEVSUlVQVElCTEV9LAo+ICsJCXsgImNv bnRleHRzLWZvcmtlZCIsIENPTlRFWFRTIHwgRk9SS0VEfSwKPiArCQl7ICJjb250ZXh0cy1wcmlv cml0eSIsIENPTlRFWFRTIHwgRk9SS0VEIHwgUFJJT1JJVFkgfSwKPiArCQl7ICJjb250ZXh0cy1j aGFpbiIsIENPTlRFWFRTIHwgQ0hBSU4gfSwKPiArCQl7ICJjb250ZXh0cy1zeW5jIiwgQ09OVEVY VFMgfCBTWU5DIH0sCj4gKwkJeyAicXVldWVzIiwgUVVFVUVTIH0sCj4gKwkJeyAicXVldWVzLWlu dGVycnVwdGlibGUiLCBRVUVVRVMgfCBJTlRFUlJVUFRJQkxFfSwKPiArCQl7ICJxdWV1ZXMtZm9y a2VkIiwgUVVFVUVTIHwgRk9SS0VEfSwKPiArCQl7ICJxdWV1ZXMtcHJpb3JpdHkiLCBRVUVVRVMg fCBGT1JLRUQgfCBQUklPUklUWSB9LAo+ICsJCXsgInF1ZXVlcy1jaGFpbiIsIFFVRVVFUyB8IENI QUlOIH0sCj4gKwkJeyAicXVldWVzLXN5bmMiLCBRVUVVRVMgfCBTWU5DIH0sCj4gICAJCXsgTlVM TCB9Cj4gICAJfTsKPiAgIAlpbnQgZmQ7Cj4gZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxk IGIvdGVzdHMvbWVzb24uYnVpbGQKPiBpbmRleCA5NDcyMDYxNDkuLmZhYjJhODI4YiAxMDA2NDQK PiAtLS0gYS90ZXN0cy9tZXNvbi5idWlsZAo+ICsrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCj4gQEAg LTExOSw2ICsxMTksNyBAQCBpOTE1X3Byb2dzID0gWwo+ICAgCSdnZW1fY3R4X2V4ZWMnLAo+ICAg CSdnZW1fY3R4X2lzb2xhdGlvbicsCj4gICAJJ2dlbV9jdHhfcGFyYW0nLAo+ICsJJ2dlbV9jdHhf c2hhcmVkJywKPiAgIAknZ2VtX2N0eF9zd2l0Y2gnLAo+ICAgCSdnZW1fY3R4X3RocmFzaCcsCj4g ICAJJ2dlbV9kb3VibGVfaXJxX2xvb3AnLAo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZng=