From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: References: <20190322092155.1656-1-chris@chris-wilson.co.uk> <20190322092155.1656-15-chris@chris-wilson.co.uk> From: Tvrtko Ursulin Message-ID: <68b853c9-970a-f901-cc5c-d9e5c796be35@linux.intel.com> Date: Tue, 26 Mar 2019 11:21:13 +0000 MIME-Version: 1.0 In-Reply-To: <20190322092155.1656-15-chris@chris-wilson.co.uk> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t 15/24] i915: Add gem_vm_create List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-ID: Ck9uIDIyLzAzLzIwMTkgMDk6MjEsIENocmlzIFdpbHNvbiB3cm90ZToKPiBFeGVyY2lzZSBiYXNp YyBjcmVhdGlvbiBhbmQgc3dhcHBpbmcgYmV0d2VlbiBuZXcgYWRkcmVzcyBzcGFjZXMuCj4gCj4g U2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4g LS0tCj4gICBsaWIvTWFrZWZpbGUuc291cmNlcyAgICAgICB8ICAgMiArCj4gICBsaWIvaTkxNS9n ZW1fdm0uYyAgICAgICAgICB8IDEzMCArKysrKysrKysrKysrKysrKysrKwo+ICAgbGliL2k5MTUv Z2VtX3ZtLmggICAgICAgICAgfCAgMzggKysrKysrCj4gICBsaWIvbWVzb24uYnVpbGQgICAgICAg ICAgICB8ICAgMSArCj4gICB0ZXN0cy9NYWtlZmlsZS5zb3VyY2VzICAgICB8ICAgMSArCj4gICB0 ZXN0cy9pOTE1L2dlbV92bV9jcmVhdGUuYyB8IDIzNiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCj4gICB0ZXN0cy9tZXNvbi5idWlsZCAgICAgICAgICB8ICAgMSArCj4gICA3 IGZpbGVzIGNoYW5nZWQsIDQwOSBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQg bGliL2k5MTUvZ2VtX3ZtLmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaTkxNS9nZW1fdm0u aAo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2k5MTUvZ2VtX3ZtX2NyZWF0ZS5jCj4gCj4g ZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzIGIvbGliL01ha2VmaWxlLnNvdXJjZXMK PiBpbmRleCBlMDAzNDdmOTQuLmE3MDc0MjA5YSAxMDA2NDQKPiAtLS0gYS9saWIvTWFrZWZpbGUu c291cmNlcwo+ICsrKyBiL2xpYi9NYWtlZmlsZS5zb3VyY2VzCj4gQEAgLTEzLDYgKzEzLDggQEAg bGliX3NvdXJjZV9saXN0ID0JIAlcCj4gICAJaTkxNS9nZW1fcmluZy5jCVwKPiAgIAlpOTE1L2dl bV9tbWFuLmMJXAo+ICAgCWk5MTUvZ2VtX21tYW4uaAlcCj4gKwlpOTE1L2dlbV92bS5jCVwKPiAr CWk5MTUvZ2VtX3ZtLmgJXAo+ICAgCWk5MTVfM2QuaAkJXAo+ICAgCWk5MTVfcmVnLmgJCVwKPiAg IAlpOTE1X3BjaWlkcy5oCQlcCj4gZGlmZiAtLWdpdCBhL2xpYi9pOTE1L2dlbV92bS5jIGIvbGli L2k5MTUvZ2VtX3ZtLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMC4u ZTBkNDZkNTA5Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi9pOTE1L2dlbV92bS5jCj4gQEAg LTAsMCArMSwxMzAgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9y YXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3 YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwK PiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9k aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29y IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo b20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiAr ICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY UFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsg KiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS IERFQUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8 ZXJybm8uaD4KPiArI2luY2x1ZGUgPHN0cmluZy5oPgo+ICsKPiArI2luY2x1ZGUgImlvY3RsX3dy YXBwZXJzLmgiCj4gKyNpbmNsdWRlICJkcm10ZXN0LmgiCj4gKwo+ICsjaW5jbHVkZSAiaTkxNS9n ZW1fdm0uaCIKPiArCj4gKy8qKgo+ICsgKiBTRUNUSU9OOmdlbV92bQo+ICsgKiBAc2hvcnRfZGVz Y3JpcHRpb246IEhlbHBlcnMgZm9yIGRlYWxpbmcgd2l0aCBhZGRyZXNzIHNwYWNlcyAodm0vR1RU KQo+ICsgKiBAdGl0bGU6IEdFTSBWaXJ0dWFsIE1lbW9yeQo+ICsgKgo+ICsgKiBUaGlzIGhlbHBl ciBsaWJyYXJ5IGNvbnRhaW5zIGZ1bmN0aW9ucyB1c2VkIGZvciBoYW5kbGluZyBnZW0gYWRkcmVz cwo+ICsgKiBzcGFjZXMuLgo+ICsgKi8KPiArCj4gKy8qKgo+ICsgKiBnZW1faGFzX3ZtOgo+ICsg KiBAaTkxNTogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKPiArICoKPiArICogUmV0dXJu czogd2hldGhlciBWTSBjcmVhdGlvbiBpcyBzdXBwb3J0ZWQgb3Igbm90Lgo+ICsgKi8KPiArYm9v bCBnZW1faGFzX3ZtKGludCBpOTE1KQo+ICt7Cj4gKwl1aW50MzJfdCB2bV9pZCA9IDA7Cj4gKwo+ ICsJX19nZW1fdm1fY3JlYXRlKGk5MTUsICZ2bV9pZCk7Cj4gKwlpZiAodm1faWQpCj4gKwkJZ2Vt X3ZtX2Rlc3Ryb3koaTkxNSwgdm1faWQpOwo+ICsKPiArCXJldHVybiB2bV9pZDsKPiArfQo+ICsK PiArLyoqCj4gKyAqIGdlbV9yZXF1aXJlX3ZtOgo+ICsgKiBAaTkxNTogb3BlbiBpOTE1IGRybSBm aWxlIGRlc2NyaXB0b3IKPiArICoKPiArICogVGhpcyBoZWxwZXIgd2lsbCBhdXRvbWF0aWNhbGx5 IHNraXAgdGhlIHRlc3Qgb24gcGxhdGZvcm1zIHdoZXJlIGFkZHJlc3MKPiArICogc3BhY2UgY3Jl YXRpb24gaXMgbm90IGF2YWlsYWJsZS4KPiArICovCj4gK3ZvaWQgZ2VtX3JlcXVpcmVfdm0oaW50 IGk5MTUpCj4gK3sKPiArCWlndF9yZXF1aXJlKGdlbV9oYXNfdm0oaTkxNSkpOwo+ICt9Cj4gKwo+ ICtpbnQgX19nZW1fdm1fY3JlYXRlKGludCBpOTE1LCB1aW50MzJfdCAqdm1faWQpCj4gK3sKPiAr ICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fdm1fY29udHJvbCBjdGwgPSB7fTsKPiArICAgICAg IGludCBlcnIgPSAwOwo+ICsKPiArICAgICAgIGlmIChpZ3RfaW9jdGwoaTkxNSwgRFJNX0lPQ1RM X0k5MTVfR0VNX1ZNX0NSRUFURSwgJmN0bCkgPT0gMCkgewo+ICsgICAgICAgICAgICAgICAqdm1f aWQgPSBjdGwudm1faWQ7Cj4gKyAgICAgICB9IGVsc2Ugewo+ICsJICAgICAgIGVyciA9IC1lcnJu bzsKPiArCSAgICAgICBpZ3RfYXNzdW1lKGVyciAhPSAwKTsKPiArICAgICAgIH0KPiArCj4gKyAg ICAgICBlcnJubyA9IDA7Cj4gKyAgICAgICByZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICsvKioKPiAr ICogZ2VtX3ZtX2NyZWF0ZToKPiArICogQGk5MTU6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlw dG9yCj4gKyAqCj4gKyAqIFRoaXMgd3JhcHMgdGhlIFZNX0NSRUFURSBpb2N0bCwgd2hpY2ggaXMg dXNlZCB0byBhbGxvY2F0ZSBhIG5ldwo+ICsgKiB2bV9zZXRfY2FjaGluZygpIHRoaXMgd3JhcHBl ciBza2lwcyBvbgoKYXV0by1jb21wbGV0ZT8gOikKCj4gKyAqIGtlcm5lbHMgYW5kIHBsYXRmb3Jt cyB3aGVyZSBhZGRyZXNzIHNwYWNlIHN1cHBvcnQgaXMgbm90IGF2YWlsYWJsZS4KPiArICoKPiAr ICogUmV0dXJuczogVGhlIGlkIG9mIHRoZSBhbGxvY2F0ZWQgYWRkcmVzcyBzcGFjZS4KPiArICov Cj4gK3VpbnQzMl90IGdlbV92bV9jcmVhdGUoaW50IGk5MTUpCj4gK3sKPiArCXVpbnQzMl90IHZt X2lkOwo+ICsKPiArCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fY3JlYXRlKGk5MTUsICZ2bV9pZCks IDApOwo+ICsJaWd0X2Fzc2VydCh2bV9pZCAhPSAwKTsKPiArCj4gKwlyZXR1cm4gdm1faWQ7Cj4g K30KPiArCj4gK2ludCBfX2dlbV92bV9kZXN0cm95KGludCBpOTE1LCB1aW50MzJfdCB2bV9pZCkK PiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV92bV9jb250cm9sIGN0bCA9IHsgLnZtX2lkID0g dm1faWQgfTsKPiArCWludCBlcnIgPSAwOwo+ICsKPiArCWlmIChpZ3RfaW9jdGwoaTkxNSwgRFJN X0lPQ1RMX0k5MTVfR0VNX1ZNX0RFU1RST1ksICZjdGwpKSB7Cj4gKwkJZXJyID0gLWVycm5vOwo+ ICsJCWlndF9hc3N1bWUoZXJyKTsKPiArCX0KPiArCj4gKwllcnJubyA9IDA7Cj4gKwlyZXR1cm4g ZXJyOwo+ICt9Cj4gKwo+ICsvKioKPiArICogZ2VtX3ZtX2Rlc3Ryb3k6Cj4gKyAqIEBpOTE1OiBv cGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgo+ICsgKiBAdm1faWQ6IGk5MTUgVk0gaWQKPiAr ICoKPiArICogVGhpcyB3cmFwcyB0aGUgVk1fREVTVFJPWSBpb2N0bCwgd2hpY2ggaXMgdXNlZCB0 byBmcmVlIGFuIGFkZHJlc3Mgc3BhY2UuCj4gKyAqLwo+ICt2b2lkIGdlbV92bV9kZXN0cm95KGlu dCBpOTE1LCB1aW50MzJfdCB2bV9pZCkKPiArewo+ICsJaWd0X2Fzc2VydF9lcShfX2dlbV92bV9k ZXN0cm95KGk5MTUsIHZtX2lkKSwgMCk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliL2k5MTUvZ2Vt X3ZtLmggYi9saWIvaTkxNS9nZW1fdm0uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMDAwLi4yN2FmODk5ZDQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL2k5MTUvZ2Vt X3ZtLmgKPiBAQCAtMCwwICsxLDM4IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE5IElu dGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4g KyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy c29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1 YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUg Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRo ZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQg U0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElO IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICog RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT RSBPUiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqLwo+ICsKPiAr I2lmbmRlZiBHRU1fVk1fSAo+ICsjZGVmaW5lIEdFTV9WTV9ICj4gKwo+ICsjaW5jbHVkZSA8c3Rk aW50Lmg+Cj4gKwo+ICtib29sIGdlbV9oYXNfdm0oaW50IGk5MTUpOwo+ICt2b2lkIGdlbV9yZXF1 aXJlX3ZtKGludCBpOTE1KTsKPiArCj4gK3VpbnQzMl90IGdlbV92bV9jcmVhdGUoaW50IGk5MTUp Owo+ICtpbnQgX19nZW1fdm1fY3JlYXRlKGludCBpOTE1LCB1aW50MzJfdCAqdm1faWQpOwo+ICsK PiArdm9pZCBnZW1fdm1fZGVzdHJveShpbnQgaTkxNSwgdWludDMyX3Qgdm1faWQpOwo+ICtpbnQg X19nZW1fdm1fZGVzdHJveShpbnQgaTkxNSwgdWludDMyX3Qgdm1faWQpOwo+ICsKPiArI2VuZGlm IC8qIEdFTV9WTV9IICovCj4gZGlmZiAtLWdpdCBhL2xpYi9tZXNvbi5idWlsZCBiL2xpYi9tZXNv bi5idWlsZAo+IGluZGV4IDg5ZGUwNmU2OS4uZjk1OTIyMzMwIDEwMDY0NAo+IC0tLSBhL2xpYi9t ZXNvbi5idWlsZAo+ICsrKyBiL2xpYi9tZXNvbi5idWlsZAo+IEBAIC01LDYgKzUsNyBAQCBsaWJf c291cmNlcyA9IFsKPiAgIAknaTkxNS9nZW1fc3VibWlzc2lvbi5jJywKPiAgIAknaTkxNS9nZW1f cmluZy5jJywKPiAgIAknaTkxNS9nZW1fbW1hbi5jJywKPiArCSdpOTE1L2dlbV92bS5jJywKPiAg IAknaWd0X2NvbG9yX2VuY29kaW5nLmMnLAo+ICAgCSdpZ3RfZGVidWdmcy5jJywKPiAgIAknaWd0 X2RldmljZS5jJywKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3Rz L01ha2VmaWxlLnNvdXJjZXMKPiBpbmRleCA3MWNjZjAwYWYuLjgwOWIyNTYxMiAxMDA2NDQKPiAt LS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNl cwo+IEBAIC0yMSw2ICsyMSw3IEBAIFRFU1RTX3Byb2dzID0gXAo+ICAgCWRybV9pbXBvcnRfZXhw b3J0IFwKPiAgIAlkcm1fbW0gXAo+ICAgCWRybV9yZWFkIFwKPiArCWk5MTUvZ2VtX3ZtX2NyZWF0 ZSBcCgpJdCBsb29rZWQgbGlrZSBzdHJhbmdlIHBsYWNlbWVudCBhdCBmaXJzdCBhbmQgdGhlbiBJ IG9wZW5lZCB0aGUgZmlsZSBhbmQgCmdvdCByZW1pbmRlZCBvZiB0aGUgaG9ycm9yLgoKPiAgIAlr bXNfM2QgXAo+ICAgCWttc19hZGRmYl9iYXNpYyBcCj4gICAJa21zX2F0b21pYyBcCj4gZGlmZiAt LWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX3ZtX2NyZWF0ZS5jIGIvdGVzdHMvaTkxNS9nZW1fdm1fY3Jl YXRlLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMC4uMDI2NGZhMzAx Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX3ZtX2NyZWF0ZS5jCj4gQEAg LTAsMCArMSwyMzYgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9y YXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3 YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwK PiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9k aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29y IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo b20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiAr ICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY UFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsg KiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS IERFQUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSAi aWd0LmgiCj4gKyNpbmNsdWRlICJpZ3RfZHVtbXlsb2FkLmgiCj4gKyNpbmNsdWRlICJpOTE1L2dl bV92bS5oIgo+ICsKPiArc3RhdGljIGludCBfX2dlbV92bV9jcmVhdGVfbG9jYWwoaW50IGk5MTUs IHN0cnVjdCBkcm1faTkxNV9nZW1fdm1fY29udHJvbCAqY3RsKQoKQmlrZXNoZWRkaW5nIG9ubHks IGJ1dCBsb2NhbCBzdWZmaXggc2NhcmVkIG1lIHlvdSBhcmUgdXNpbmcgbG9jYWwgaW9jdGwgCmRl ZmluaXRpb25zLiBPbiBjbG9zZXIgbG9vaywgc2luY2UgZnVuY3Rpb25zIGFyZSBsb2NhbCwgeW91 IGNvdWxkIGFmZm9yZCAKdG8gdXNlIG5hbWVzIGxpa2Ugdm1fY3JlYXRlL3ZtX2Rlc3Ryb3kuCgo+ ICt7Cj4gKwlpbnQgZXJyID0gMDsKPiArCWlmIChpZ3RfaW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0k5 MTVfR0VNX1ZNX0NSRUFURSwgY3RsKSkgewo+ICsJCWVyciA9IC1lcnJubzsKPiArCQlpZ3RfYXNz dW1lKGVycik7Cj4gKwl9Cj4gKwllcnJubyA9IDA7Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50IF9fZ2VtX3ZtX2Rlc3Ryb3lfbG9jYWwoaW50IGk5MTUsIHN0cnVjdCBkcm1f aTkxNV9nZW1fdm1fY29udHJvbCAqY3RsKQo+ICt7Cj4gKwlpbnQgZXJyID0gMDsKPiArCWlmIChp Z3RfaW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0k5MTVfR0VNX1ZNX0RFU1RST1ksIGN0bCkpIHsKPiAr CQllcnIgPSAtZXJybm87Cj4gKwkJaWd0X2Fzc3VtZShlcnIpOwo+ICsJfQo+ICsJZXJybm8gPSAw Owo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wgaGFzX3ZtKGludCBpOTE1 KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX2NvbnRyb2wgY3RsID0ge307Cj4gKwlp bnQgZXJyOwo+ICsKPiArCWVyciA9IF9fZ2VtX3ZtX2NyZWF0ZV9sb2NhbChpOTE1LCAmY3RsKTsK PiArCXN3aXRjaCAoZXJyKSB7Cj4gKwljYXNlIC1FSU5WQUw6IC8qIHVua25vd24gaW9jdGwgKi8K PiArCWNhc2UgLUVOT0RFVjogLyogIWZ1bGwtcHBndHQgKi8KPiArCQlyZXR1cm4gZmFsc2U7Cj4g Kwo+ICsJY2FzZSAwOgo+ICsJCWdlbV92bV9kZXN0cm95KGk5MTUsIGN0bC52bV9pZCk7Cj4gKwkJ cmV0dXJuIHRydWU7Cj4gKwo+ICsJZGVmYXVsdDoKPiArCQlpZ3RfZmFpbF9vbl9mKGVyciwgIlVu a25vd24gcmVzcG9uc2UgZnJvbSBWTV9DUkVBVEVcbiIpOwo+ICsJCXJldHVybiBmYWxzZTsKPiAr CX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaW52YWxpZF9jcmVhdGUoaW50IGk5MTUpCj4gK3sK PiArCXN0cnVjdCBkcm1faTkxNV9nZW1fdm1fY29udHJvbCBjdGwgPSB7fTsKPiArCXN0cnVjdCBp OTE1X3VzZXJfZXh0ZW5zaW9uIGV4dCA9IHsgLm5hbWUgPSAtMSB9Owo+ICsKPiArCWlndF9hc3Nl cnRfZXEoX19nZW1fdm1fY3JlYXRlX2xvY2FsKGk5MTUsICZjdGwpLCAwKTsKPiArCWdlbV92bV9k ZXN0cm95KGk5MTUsIGN0bC52bV9pZCk7Cj4gKwo+ICsJY3RsLnZtX2lkID0gMHhkZWFkYmVlZjsK PiArCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fY3JlYXRlX2xvY2FsKGk5MTUsICZjdGwpLCAwKTsK PiArCWdlbV92bV9kZXN0cm95KGk5MTUsIGN0bC52bV9pZCk7Cj4gKwljdGwudm1faWQgPSAwOwoK T2ggd2UgYWxsb3cgZ2FyYmFnZSBpbi4uIGhtLi4gcGVyaGFwcyBkaXNhbGxvdyB0aGF0PwoKT3Ro ZXJ3aXNlIGJvdGggdGVzdHMgaGVyZSBhcmUgbm90IGludmFsaWQgaW5wdXQvYmVoYXZpb3VyLiBG aXJzdCBpcyBhbHNvIApjb3ZlcmVkIGJ5IGhhc192bS4KCj4gKwo+ICsJY3RsLmZsYWdzID0gLTE7 Cj4gKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3ZtX2NyZWF0ZV9sb2NhbChpOTE1LCAmY3RsKSwgLUVJ TlZBTCk7Cj4gKwljdGwuZmxhZ3MgPSAwOwo+ICsKPiArCWN0bC5leHRlbnNpb25zID0gLTE7Cj4g KwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3ZtX2NyZWF0ZV9sb2NhbChpOTE1LCAmY3RsKSwgLUVGQVVM VCk7Cj4gKwljdGwuZXh0ZW5zaW9ucyA9IHRvX3VzZXJfcG9pbnRlcigmZXh0KTsKPiArCWlndF9h c3NlcnRfZXEoX19nZW1fdm1fY3JlYXRlX2xvY2FsKGk5MTUsICZjdGwpLCAtRUlOVkFMKTsKPiAr CWN0bC5leHRlbnNpb25zID0gMDsKCkNvdWxkIGFkZCBhIGxvb3AgcmVqZWN0aW9uIHRlc3QgYXMg d2VsbCwgZXZlbiB0aG91Z2ggdGhlIHVuZGVybHlpbmcgCmltcGxlbWVudGF0aW9uIGlzIHNoYXJl ZC4KCj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGludmFsaWRfZGVzdHJveShpbnQgaTkxNSkKPiAr ewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV92bV9jb250cm9sIGN0bCA9IHt9Owo+ICsKPiArCWln dF9hc3NlcnRfZXEoX19nZW1fdm1fZGVzdHJveV9sb2NhbChpOTE1LCAmY3RsKSwgLUVOT0VOVCk7 CgpTaG91bGQgd2UgaGF2ZSBpZCAwIGJlIC1FSU5WQUw/Cgo+ICsKPiArCWlndF9hc3NlcnRfZXEo X19nZW1fdm1fY3JlYXRlX2xvY2FsKGk5MTUsICZjdGwpLCAwKTsKPiArCWlndF9hc3NlcnRfZXEo X19nZW1fdm1fZGVzdHJveV9sb2NhbChpOTE1LCAmY3RsKSwgMCk7Cj4gKwlpZ3RfYXNzZXJ0X2Vx KF9fZ2VtX3ZtX2Rlc3Ryb3lfbG9jYWwoaTkxNSwgJmN0bCksIC1FTk9FTlQpOwo+ICsKPiArCWln dF9hc3NlcnRfZXEoX19nZW1fdm1fY3JlYXRlX2xvY2FsKGk5MTUsICZjdGwpLCAwKTsKPiArCWN0 bC52bV9pZCA9IGN0bC52bV9pZCArIDE7IC8qIFhYWCBhc3N1bWUgY3ljbGljIGFsbG9jYXRvciAq LwoKSSB0aGluayB0aGlzIGFjdHVhbGx5IGFzc3VtZXMsIGFuZCBjb3JyZWN0bHkgc28sIHRoYXQg dGhlIGZkIGlzIGNsZWFuIAppZS4gb25seSB0aGUgY3JlYXRlZCB2bV9pZCBoYXMgYmVlbiBhbGxv Y2F0ZWQuIFNvIGNvbW1lbnQgbmVlZHMgdG8gYmUgCmNvcnJlY3RlZCBJIHRoaW5rLgoKPiArCWln dF9hc3NlcnRfZXEoX19nZW1fdm1fZGVzdHJveV9sb2NhbChpOTE1LCAmY3RsKSwgLUVOT0VOVCk7 Cj4gKwljdGwudm1faWQgPSBjdGwudm1faWQgLSAxOwo+ICsJaWd0X2Fzc2VydF9lcShfX2dlbV92 bV9kZXN0cm95X2xvY2FsKGk5MTUsICZjdGwpLCAwKTsKPiArCj4gKwlpZ3RfYXNzZXJ0X2VxKF9f Z2VtX3ZtX2NyZWF0ZV9sb2NhbChpOTE1LCAmY3RsKSwgMCk7Cj4gKwljdGwuZmxhZ3MgPSAtMTsK PiArCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fZGVzdHJveV9sb2NhbChpOTE1LCAmY3RsKSwgLUVJ TlZBTCk7Cj4gKwljdGwuZmxhZ3MgPSAwOwo+ICsJaWd0X2Fzc2VydF9lcShfX2dlbV92bV9kZXN0 cm95X2xvY2FsKGk5MTUsICZjdGwpLCAwKTsKClNlY29uZCBjcmVhdGUtZGVzdHJveSBpcyByZWR1 bmRhbnQgYnV0IG9rYXkuCgo+ICsKPiArCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fY3JlYXRlX2xv Y2FsKGk5MTUsICZjdGwpLCAwKTsKPiArCWN0bC5leHRlbnNpb25zID0gLTE7Cj4gKwlpZ3RfYXNz ZXJ0X2VxKF9fZ2VtX3ZtX2Rlc3Ryb3lfbG9jYWwoaTkxNSwgJmN0bCksIC1FSU5WQUwpOwo+ICsJ Y3RsLmV4dGVuc2lvbnMgPSAwOwo+ICsJaWd0X2Fzc2VydF9lcShfX2dlbV92bV9kZXN0cm95X2xv Y2FsKGk5MTUsICZjdGwpLCAwKTsKPiArfQo+ICsKPiArc3RhdGljIHVpbnQzMl90IF9fYmF0Y2hf Y3JlYXRlKGludCBpOTE1LCB1aW50MzJfdCBvZmZzZXQpCj4gK3sKPiArCWNvbnN0IHVpbnQzMl90 IGJiZSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Cj4gKwl1aW50MzJfdCBoYW5kbGU7Cj4gKwo+ICsJ aGFuZGxlID0gZ2VtX2NyZWF0ZShpOTE1LCBBTElHTihvZmZzZXQgKyA0LCA0MDk2KSk7Cj4gKwln ZW1fd3JpdGUoaTkxNSwgaGFuZGxlLCBvZmZzZXQsICZiYmUsIHNpemVvZihiYmUpKTsKPiArCj4g KwlyZXR1cm4gaGFuZGxlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdWludDMyX3QgYmF0Y2hfY3JlYXRl KGludCBpOTE1KQo+ICt7Cj4gKwlyZXR1cm4gX19iYXRjaF9jcmVhdGUoaTkxNSwgMCk7Cj4gK30K Ck9pISA6RAoKPiArCj4gK3N0YXRpYyB2b2lkIGV4ZWNidWYoaW50IGk5MTUpCj4gK3sKPiArCXN0 cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIGJhdGNoID0gewo+ICsJCS5oYW5kbGUgPSBi YXRjaF9jcmVhdGUoaTkxNSksCj4gKwl9Owo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVm ZmVyMiBlYiA9IHsKPiArCQkuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJmJhdGNoKSwK PiArCQkuYnVmZmVyX2NvdW50ID0gMSwKPiArCX07Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2Nv bnRleHRfcGFyYW0gYXJnID0gewo+ICsJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9WTSwK PiArCX07Cj4gKwo+ICsJLyogRmlyc3QgdmVyaWZ5IHRoYXQgd2UgdHJ5IHRvIHVzZSAic29mdHBp bm5pbmciIGJ5IGRlZmF1bHQgKi8KPiArCWJhdGNoLm9mZnNldCA9IDQ4IDw8IDIwOwoKQ2hvaWNl IG9mIDQ4IGlzIGEgYml0IG1pc2xlYWRpbmcsIGJ1dCBva2F5LgoKPiArCWdlbV9leGVjYnVmKGk5 MTUsICZlYik7Cj4gKwlpZ3RfYXNzZXJ0X2VxX3U2NChiYXRjaC5vZmZzZXQsIDQ4IDw8IDIwKTsK PiArCj4gKwlhcmcudmFsdWUgPSBnZW1fdm1fY3JlYXRlKGk5MTUpOwo+ICsJZ2VtX2NvbnRleHRf c2V0X3BhcmFtKGk5MTUsICZhcmcpOwo+ICsJZ2VtX2V4ZWNidWYoaTkxNSwgJmViKTsKPiArCWln dF9hc3NlcnRfZXFfdTY0KGJhdGNoLm9mZnNldCwgNDggPDwgMjApOwoKTm90IHN1cmUgd2hhdCB0 aGUgb2Zmc2V0IGNoZWNrIHByb3ZlcyBpbiB0aGlzIGNhc2U/IEl0J3MgYSBuZXcgcHBndHQsIG9y IApldmVuIGlmIHdhcyBvbGQgb25lLiBTZWVtcyBpdCB3b3VsZCBuZXZlciBmYWlsPwoKPiArCWdl bV92bV9kZXN0cm95KGk5MTUsIGFyZy52YWx1ZSk7Cj4gKwo+ICsJYXJnLnZhbHVlID0gZ2VtX3Zt X2NyZWF0ZShpOTE1KTsKPiArCWdlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmYXJnKTsKPiAr CWJhdGNoLm9mZnNldCA9IDA7Cj4gKwlnZW1fZXhlY2J1ZihpOTE1LCAmZWIpOwo+ICsJaWd0X2Fz c2VydF9lcV91NjQoYmF0Y2gub2Zmc2V0LCAwKTsKPiArCWdlbV92bV9kZXN0cm95KGk5MTUsIGFy Zy52YWx1ZSk7Cj4gKwo+ICsJZ2VtX3N5bmMoaTkxNSwgYmF0Y2guaGFuZGxlKTsKPiArCWdlbV9j bG9zZShpOTE1LCBiYXRjaC5oYW5kbGUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBhc3luY19k ZXN0cm95KGludCBpOTE1KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFy YW0gYXJnID0gewo+ICsJCS5jdHhfaWQgPSBnZW1fY29udGV4dF9jcmVhdGUoaTkxNSksCj4gKwkJ LnZhbHVlID0gZ2VtX3ZtX2NyZWF0ZShpOTE1KSwKPiArCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRf UEFSQU1fVk0sCj4gKwl9Owo+ICsJaWd0X3NwaW5fdCAqc3BpblsyXTsKPiArCj4gKwlzcGluWzBd ID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGk5MTUsCj4gKwkJCQkgICAgIC5jdHggPSBhcmcuY3R4X2lk LAo+ICsJCQkJICAgICAuZmxhZ3MgPSBJR1RfU1BJTl9QT0xMX1JVTik7Cj4gKwlpZ3Rfc3Bpbl9i dXN5d2FpdF91bnRpbF9ydW5uaW5nKHNwaW5bMF0pOwo+ICsKPiArCWdlbV9jb250ZXh0X3NldF9w YXJhbShpOTE1LCAmYXJnKTsKPiArCXNwaW5bMV0gPSBfX2lndF9zcGluX2JhdGNoX25ldyhpOTE1 LCAuY3R4ID0gYXJnLmN0eF9pZCk7Cj4gKwo+ICsJaWd0X3NwaW5fYmF0Y2hfZW5kKHNwaW5bMF0p Owo+ICsJZ2VtX3N5bmMoaTkxNSwgc3BpblswXS0+aGFuZGxlKTsKPiArCj4gKwlnZW1fdm1fZGVz dHJveShpOTE1LCBhcmcudmFsdWUpOwo+ICsJZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBhcmcu Y3R4X2lkKTsKPiArCj4gKwlpZ3Rfc3Bpbl9iYXRjaF9lbmQoc3BpblsxXSk7Cj4gKwlnZW1fc3lu YyhpOTE1LCBzcGluWzFdLT5oYW5kbGUpOwo+ICsKPiArCWZvciAoaW50IGkgPSAwOyBpIDwgQVJS QVlfU0laRShzcGluKTsgaSsrKQo+ICsJCWlndF9zcGluX2JhdGNoX2ZyZWUoaTkxNSwgc3Bpbltp XSk7Cj4gK30KPiArCj4gK2lndF9tYWluCj4gK3sKPiArCWludCBpOTE1ID0gLTE7Cj4gKwo+ICsJ aWd0X2ZpeHR1cmUgewo+ICsJCWk5MTUgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsK PiArCQlpZ3RfcmVxdWlyZV9nZW0oaTkxNSk7Cj4gKwkJaWd0X3JlcXVpcmUoaGFzX3ZtKGk5MTUp KTsKPiArCX0KPiArCj4gKwlpZ3Rfc3VidGVzdCgiaW52YWxpZC1jcmVhdGUiKQo+ICsJCWludmFs aWRfY3JlYXRlKGk5MTUpOwo+ICsKPiArCWlndF9zdWJ0ZXN0KCJpbnZhbGlkLWRlc3Ryb3kiKQo+ ICsJCWludmFsaWRfZGVzdHJveShpOTE1KTsKPiArCj4gKwlpZ3Rfc3VidGVzdF9ncm91cCB7Cj4g KwkJaWd0X2ZpeHR1cmUgewo+ICsJCQlnZW1fY29udGV4dF9yZXF1aXJlX3BhcmFtKGk5MTUsIEk5 MTVfQ09OVEVYVF9QQVJBTV9WTSk7Cj4gKwkJfQo+ICsKPiArCQlpZ3Rfc3VidGVzdCgiZXhlY2J1 ZiIpCj4gKwkJCWV4ZWNidWYoaTkxNSk7Cj4gKwo+ICsJCWlndF9zdWJ0ZXN0KCJhc3luYy1kZXN0 cm95IikKPiArCQkJYXN5bmNfZGVzdHJveShpOTE1KTsKPiArCX0KPiArCj4gKwlpZ3RfZml4dHVy ZSB7Cj4gKwkJY2xvc2UoaTkxNSk7Cj4gKwl9Cj4gK30KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvbWVz b24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAo+IGluZGV4IDkwMTVmODA5ZS4uOTQ5ZWVmZDZm IDEwMDY0NAo+IC0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkCj4gKysrIGIvdGVzdHMvbWVzb24uYnVp bGQKPiBAQCAtMjA5LDYgKzIwOSw3IEBAIGk5MTVfcHJvZ3MgPSBbCj4gICAJJ2dlbV91bmZlbmNl X2FjdGl2ZV9idWZmZXJzJywKPiAgIAknZ2VtX3VucmVmX2FjdGl2ZV9idWZmZXJzJywKPiAgIAkn Z2VtX3VzZXJwdHJfYmxpdHMnLAo+ICsJJ2dlbV92bV9jcmVhdGUnLAo+ICAgCSdnZW1fd2FpdCcs Cj4gICAJJ2dlbV93b3JrYXJvdW5kcycsCj4gICAJJ2dlbV93cml0ZV9yZWFkX3Jpbmdfc3dpdGNo JywKPiAKClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p Z3QtZGV2