Name: series-workflowwbqmv Phase: Failed StartedAt: 2026-08-26 14:50:18 +0000 UTC FinishedAt: 2026-08-26 15:25:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbqmv[0] Phase: Succeeded StartedAt: 2026-08-26 14:50:18 +0000 UTC FinishedAt: 2026-08-26 15:25:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbqmv[0].run-triage Phase: Succeeded StartedAt: 2026-08-26 14:50:18 +0000 UTC FinishedAt: 2026-08-26 15:25:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGl4Z2JldmYgZHJpdmVyIHRvIHN1cHBvcnQgcmVhZGluZyBsaW5rIHNwZWVkIGZyb20gUENJIGNvbmZpZyBzcGFjZSBzcGVjaWZpY2FsbHkgZm9yIEludGVsIEU2MTAgVmlydHVhbCBGdW5jdGlvbnMgb24gSHlwZXItViAoSVhHQkVfU1VCREVWX0lEX0U2MTBfVkZfSFYpLiBUaGlzIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIChJbnRlbCBFNjEwIE5JQykgcGFzc2VkIHRocm91Z2ggdmlhIEh5cGVyLVYsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNToyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI3YTU3NThjOGY1MzJjODQ4YzNlZjBmY2YwMmQ4MzY0MDQ0MzZhNGJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAyNiAxNToyNDoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jXG5pbmRleCA1MzdhNjBkNTI3NmYwLi41ZDBmYjRmNGQ5YTMzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jXG5AQCAtODMsNiAmIzQzOzgzLDE4IEBAIHN0YXRpYyBpbnQgaXhnYmV2Zl9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXG4ge1xuIFx0c3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG4mIzQzO1x0c3RydWN0IGl4Z2JlX2h3ICpodyA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlaHc7XG4mIzQzO1xuJiM0MztcdC8qIEh5cGVyLVYgRTYxMCBWRnM6IHJlYWQgY3VycmVudCBsaW5rIHNwZWVkIGZyb20gUENJIGNvbmZpZyBzcGFjZVxuJiM0MztcdCAqIG9uIGV2ZXJ5IGxpbmsgc3BlZWQgcXVlcnkuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGFkYXB0ZXItXHUwMDNlcGRldi1cdTAwM2VzdWJzeXN0ZW1fZGV2aWNlID09IElYR0JFX1NVQkRFVl9JRF9FNjEwX1ZGX0hWKSB7XG4mIzQzO1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2YWRhcHRlci1cdTAwM2VtYnhfbG9jayk7XG4mIzQzO1x0XHRody1cdTAwM2VtYWMuZ2V0X2xpbmtfc3RhdHVzID0gdHJ1ZTtcbiYjNDM7XHRcdGh3LVx1MDAzZW1hYy5vcHMuY2hlY2tfbGluayhodywgXHUwMDI2YWRhcHRlci1cdTAwM2VsaW5rX3NwZWVkLFxuJiM0MztcdFx0XHRcdCAgICAgICBcdTAwMjZhZGFwdGVyLVx1MDAzZWxpbmtfdXAsIGZhbHNlKTtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFkYXB0ZXItXHUwMDNlbWJ4X2xvY2spO1xuJiM0MztcdH1cbiBcbiBcdGV0aHRvb2xfbGlua19rc2V0dGluZ3NfemVyb19saW5rX21vZGUoY21kLCBzdXBwb3J0ZWQpO1xuIFx0ZXRodG9vbF9saW5rX2tzZXR0aW5nc19hZGRfbGlua19tb2RlKGNtZCwgc3VwcG9ydGVkLCAxMDAwMGJhc2VUX0Z1bGwpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvdmYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvdmYuY1xuaW5kZXggZjZkZjg2ZDEyNGI5ZS4uYTg0YjYyNjQxZTliYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvdmYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jXG5AQCAtMSwxNCAmIzQzOzEsMTcgQEBcbiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuIC8qIENvcHlyaWdodChjKSAxOTk5IC0gMjAyNCBJbnRlbCBDb3Jwb3JhdGlvbi4gKi9cbiBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiYjNDM7XG4gI2luY2x1ZGUgXCYjMzQ7dmYuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2l4Z2JldmYuaFwmIzM0O1xuIFxuLS8qIE9uIEh5cGVyLVYsIHRvIHJlc2V0LCB3ZSBuZWVkIHRvIHJlYWQgZnJvbSB0aGlzIG9mZnNldFxuLSAqIGZyb20gdGhlIFBDSSBjb25maWcgc3BhY2UuIFRoaXMgaXMgdGhlIG1lY2hhbmlzbSB1c2VkIG9uXG4tICogSHlwZXItViB0byBzdXBwb3J0IFBGL1ZGIGNvbW11bmljYXRpb24uXG4mIzQzOy8qIE9uIEh5cGVyLVYgdGhlIFBGL1ZGIGNvbW11bmljYXRpb24gaXMgdGhyb3VnaCBlbXVsYXRlZCBQQ0kgY29uZmlnXG4mIzQzOyAqIHNwYWNlLiBUaGUgcmVzZXQgYW5kIGxpbmsgc3RhdHVzIGFyZSBleHBvc2VkIGF0IHRoZSBvZmZzZXRzIGJlbG93LlxuICAqL1xuLSNkZWZpbmUgSVhHQkVfSFZfUkVTRVRfT0ZGU0VUICAgICAgICAgICAweDIwMVxuJiM0MzsjZGVmaW5lIElYR0JFX0hWX1JFU0VUX09GRlNFVFx0XHQweDIwMVxuJiM0MzsjZGVmaW5lIElYR0JFX0hWX0xJTktfU1RBVFVTX09GRlNFVFx0MHgyMDlcbiYjNDM7I2RlZmluZSBJWEdCRV9IVl9MSU5LX1NUQVRVU19TSVpFXHQ0XG4gXG4gc3RhdGljIGlubGluZSBzMzIgaXhnYmV2Zl93cml0ZV9tc2dfcmVhZF9hY2soc3RydWN0IGl4Z2JlX2h3ICpodywgdTMyICptc2csXG4gXHRcdFx0XHRcdCAgICAgdTMyICpyZXRtc2csIHUxNiBzaXplKVxuQEAgLTkwMSw2ICYjNDM7OTA0LDQwIEBAIHN0YXRpYyBzMzIgaXhnYmV2Zl9jaGVja19tYWNfbGlua192ZihzdHJ1Y3QgaXhnYmVfaHcgKmh3LFxuIFx0cmV0dXJuIHJldF92YWw7XG4gfVxuIFxuJiM0MzsvKipcbiYjNDM7ICogaXhnYmV2Zl9odl9yZWFkX2xpbmtzX2U2MTAgLSByZWFkIGxpbmsgc3RhdHVzIGZyb20gUENJIGNvbmZpZyBzcGFjZVxuJiM0MzsgKiBAaHc6IHBvaW50ZXIgdG8gaGFyZHdhcmUgc3RydWN0dXJlXG4mIzQzOyAqIEBsaW5rc19yZWc6IHBvaW50ZXIgdG8gc3RvcmUgcmVhZCB2YWx1ZVxuJiM0MzsgKlxuJiM0MzsgKiBPbiBIeXBlci1WIEU2MTAgVkZzIHRoZSBWRkxJTktTIHJlZ2lzdGVyIGRvZXMgbm90IGNhcnJ5IHZhbGlkIGxpbmsgc3BlZWQuXG4mIzQzOyAqIEluc3RlYWQsIGxpbmsgc3RhdHVzIGlzIGV4cG9zZWQgdGhyb3VnaCBlbXVsYXRlZCBQQ0kgY29uZmlnIHNwYWNlIGF0IG9mZnNldFxuJiM0MzsgKiAweDIwOSBpbiBWRkxJTktTIHJlZ2lzdGVyIGZvcm1hdC5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBzMzIgaXhnYmV2Zl9odl9yZWFkX2xpbmtzX2U2MTAoc3RydWN0IGl4Z2JlX2h3ICpodywgdTMyICpsaW5rc19yZWcpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gaHctXHUwMDNlYmFjaztcbiYjNDM7XHR1OCBkYXRhW0lYR0JFX0hWX0xJTktfU1RBVFVTX1NJWkVdO1xuJiM0MztcbiYjNDM7XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1BDSV9NTUNPTkZJRykpIHtcbiYjNDM7XHRcdGRldl9lcnJfb25jZShcdTAwMjZhZGFwdGVyLVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHQgICAgIFwmIzM0O2Nhbm5vdCByZWFkIGxpbmsgc3RhdHVzLCBQQ0lfTU1DT05GSUcgaXMgcmVxdWlyZWQgZm9yIEh5cGVyLVZcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIElYR0JFX0hWX0xJTktfU1RBVFVTX1NJWkU7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRpbnQgcmV0ID0gcGNpX3JlYWRfY29uZmlnX2J5dGUoYWRhcHRlci1cdTAwM2VwZGV2LFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIElYR0JFX0hWX0xJTktfU1RBVFVTX09GRlNFVCAmIzQzOyBpLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIFx1MDAyNmRhdGFbaV0pO1xuJiM0MztcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0cmV0dXJuIHBjaWJpb3NfZXJyX3RvX2Vycm5vKHJldCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQqbGlua3NfcmVnID0gZ2V0X3VuYWxpZ25lZF9sZTMyKGRhdGEpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIGl4Z2JldmZfaHZfY2hlY2tfbWFjX2xpbmtfdmYgLSBjaGVjayBsaW5rXG4gICogQGh3OiBwb2ludGVyIHRvIHByaXZhdGUgaGFyZHdhcmUgc3RydWN0XG5AQCAtOTA5LDYgJiM0Mzs5NDYsNyBAQCBzdGF0aWMgczMyIGl4Z2JldmZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodyxcbiAgKiBAYXV0b25lZ193YWl0X3RvX2NvbXBsZXRlOiB1bnVzZWRcbiAgKlxuICAqIEh5cGVyLVYgdmFyaWFudDsgdGhlcmUgaXMgbm8gbWFpbGJveCBjb21tdW5pY2F0aW9uLlxuJiM0MzsgKiBGb3IgRTYxMCBWRnMsIGxpbmsgc3RhdHVzIGlzIHJlYWQgZnJvbSBlbXVsYXRlZCBQQ0kgY29uZmlnIHNwYWNlLlxuICAqL1xuIHN0YXRpYyBzMzIgaXhnYmV2Zl9odl9jaGVja19tYWNfbGlua192ZihzdHJ1Y3QgaXhnYmVfaHcgKmh3LFxuIFx0XHRcdFx0XHRpeGdiZV9saW5rX3NwZWVkICpzcGVlZCxcbkBAIC05MjYsOCAmIzQzOzk2NCwxNiBAQCBzdGF0aWMgczMyIGl4Z2JldmZfaHZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodyxcbiBcdGlmICghbWFjLVx1MDAzZWdldF9saW5rX3N0YXR1cylcbiBcdFx0Z290byBvdXQ7XG4gXG4tXHQvKiBpZiBsaW5rIHN0YXR1cyBpcyBkb3duIG5vIHBvaW50IGluIGNoZWNraW5nIHRvIHNlZSBpZiBwZiBpcyB1cCAqL1xuLVx0bGlua3NfcmVnID0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX1ZGTElOS1MpO1xuJiM0MztcdGlmIChtYWMtXHUwMDNldHlwZSA9PSBpeGdiZV9tYWNfZTYxMF92Zikge1xuJiM0MztcdFx0aWYgKGl4Z2JldmZfaHZfcmVhZF9saW5rc19lNjEwKGh3LCBcdTAwMjZsaW5rc19yZWcpKSB7XG4mIzQzO1x0XHRcdCpsaW5rX3VwID0gZmFsc2U7XG4mIzQzO1x0XHRcdCpzcGVlZCA9IElYR0JFX0xJTktfU1BFRURfVU5LTk9XTjtcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGxpbmtzX3JlZyA9IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9WRkxJTktTKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKCEobGlua3NfcmVnIFx1MDAyNiBJWEdCRV9MSU5LU19VUCkpXG4gXHRcdGdvdG8gb3V0O1xuIFxuQEAgLTk0MSw4ICYjNDM7OTg3LDExIEBAIHN0YXRpYyBzMzIgaXhnYmV2Zl9odl9jaGVja19tYWNfbGlua192ZihzdHJ1Y3QgaXhnYmVfaHcgKmh3LFxuIFx0XHRcdHVkZWxheSgxMDApO1xuIFx0XHRcdGxpbmtzX3JlZyA9IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9WRkxJTktTKTtcbiBcbi1cdFx0XHRpZiAoIShsaW5rc19yZWcgXHUwMDI2IElYR0JFX0xJTktTX1VQKSlcbi1cdFx0XHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0XHRpZiAoIShsaW5rc19yZWcgXHUwMDI2IElYR0JFX0xJTktTX1VQKSkge1xuJiM0MztcdFx0XHRcdCpsaW5rX3VwID0gZmFsc2U7XG4mIzQzO1x0XHRcdFx0KnNwZWVkID0gSVhHQkVfTElOS19TUEVFRF9VTktOT1dOO1xuJiM0MztcdFx0XHRcdHJldHVybiAwO1xuJiM0MztcdFx0XHR9XG4gXHRcdH1cbiBcdH1cbiBcbkBAIC05NTYsNiAmIzQzOzEwMDUsOSBAQCBzdGF0aWMgczMyIGl4Z2JldmZfaHZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodyxcbiBcdGNhc2UgSVhHQkVfTElOS1NfU1BFRURfMTAwXzgyNTk5OlxuIFx0XHQqc3BlZWQgPSBJWEdCRV9MSU5LX1NQRUVEXzEwMF9GVUxMO1xuIFx0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0KnNwZWVkID0gSVhHQkVfTElOS19TUEVFRF9VTktOT1dOO1xuJiM0MztcdFx0YnJlYWs7XG4gXHR9XG4gXG4gXHQvKiBpZiB3ZSBwYXNzZWQgYWxsIHRoZSB0ZXN0cyBhYm92ZSB0aGVuIHRoZSBsaW5rIGlzIHVwIGFuZCB3ZSBub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjI0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaXhnYmV2ZiBkcml2ZXIgdG8gc3VwcG9ydCByZWFkaW5nIGxpbmsgc3BlZWQgZnJvbSBQQ0kgY29uZmlnIHNwYWNlIHNwZWNpZmljYWxseSBmb3IgSW50ZWwgRTYxMCBWaXJ0dWFsIEZ1bmN0aW9ucyBvbiBIeXBlci1WIChJWEdCRV9TVUJERVZfSURfRTYxMF9WRl9IVikuIFRoaXMgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKEludGVsIEU2MTAgTklDKSBwYXNzZWQgdGhyb3VnaCB2aWEgSHlwZXItViwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjdhNTc1OGM4ZjUzMmM4NDhjM2VmMGZjZjAyZDgzNjQwNDQzNmE0YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDI2IDE1OjI0OjI4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYwppbmRleCA1MzdhNjBkNTI3NmYwLi41ZDBmYjRmNGQ5YTMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYwpAQCAtODMsNiAmIzQzOzgzLDE4IEBAIHN0YXRpYyBpbnQgaXhnYmV2Zl9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIAkJCQkgICAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKQogewogCXN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpOwomIzQzOwlzdHJ1Y3QgaXhnYmVfaHcgKmh3ID0gJmFtcDthZGFwdGVyLSZndDtodzsKJiM0MzsKJiM0MzsJLyogSHlwZXItViBFNjEwIFZGczogcmVhZCBjdXJyZW50IGxpbmsgc3BlZWQgZnJvbSBQQ0kgY29uZmlnIHNwYWNlCiYjNDM7CSAqIG9uIGV2ZXJ5IGxpbmsgc3BlZWQgcXVlcnkuCiYjNDM7CSAqLwomIzQzOwlpZiAoYWRhcHRlci0mZ3Q7cGRldi0mZ3Q7c3Vic3lzdGVtX2RldmljZSA9PSBJWEdCRV9TVUJERVZfSURfRTYxMF9WRl9IVikgewomIzQzOwkJc3Bpbl9sb2NrX2JoKCZhbXA7YWRhcHRlci0mZ3Q7bWJ4X2xvY2spOwomIzQzOwkJaHctJmd0O21hYy5nZXRfbGlua19zdGF0dXMgPSB0cnVlOwomIzQzOwkJaHctJmd0O21hYy5vcHMuY2hlY2tfbGluayhodywgJmFtcDthZGFwdGVyLSZndDtsaW5rX3NwZWVkLAomIzQzOwkJCQkgICAgICAgJmFtcDthZGFwdGVyLSZndDtsaW5rX3VwLCBmYWxzZSk7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO2FkYXB0ZXItJmd0O21ieF9sb2NrKTsKJiM0MzsJfQogCiAJZXRodG9vbF9saW5rX2tzZXR0aW5nc196ZXJvX2xpbmtfbW9kZShjbWQsIHN1cHBvcnRlZCk7CiAJZXRodG9vbF9saW5rX2tzZXR0aW5nc19hZGRfbGlua19tb2RlKGNtZCwgc3VwcG9ydGVkLCAxMDAwMGJhc2VUX0Z1bGwpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jCmluZGV4IGY2ZGY4NmQxMjRiOWUuLmE4NGI2MjY0MWU5YmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvdmYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL3ZmLmMKQEAgLTEsMTQgJiM0MzsxLDE3IEBACiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAogLyogQ29weXJpZ2h0KGMpIDE5OTkgLSAyMDI0IEludGVsIENvcnBvcmF0aW9uLiAqLwogCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3VuYWxpZ25lZC5oJmd0OwomIzQzOwogI2luY2x1ZGUgJiMzNDt2Zi5oJiMzNDsKICNpbmNsdWRlICYjMzQ7aXhnYmV2Zi5oJiMzNDsKIAotLyogT24gSHlwZXItViwgdG8gcmVzZXQsIHdlIG5lZWQgdG8gcmVhZCBmcm9tIHRoaXMgb2Zmc2V0Ci0gKiBmcm9tIHRoZSBQQ0kgY29uZmlnIHNwYWNlLiBUaGlzIGlzIHRoZSBtZWNoYW5pc20gdXNlZCBvbgotICogSHlwZXItViB0byBzdXBwb3J0IFBGL1ZGIGNvbW11bmljYXRpb24uCiYjNDM7LyogT24gSHlwZXItViB0aGUgUEYvVkYgY29tbXVuaWNhdGlvbiBpcyB0aHJvdWdoIGVtdWxhdGVkIFBDSSBjb25maWcKJiM0MzsgKiBzcGFjZS4gVGhlIHJlc2V0IGFuZCBsaW5rIHN0YXR1cyBhcmUgZXhwb3NlZCBhdCB0aGUgb2Zmc2V0cyBiZWxvdy4KICAqLwotI2RlZmluZSBJWEdCRV9IVl9SRVNFVF9PRkZTRVQgICAgICAgICAgIDB4MjAxCiYjNDM7I2RlZmluZSBJWEdCRV9IVl9SRVNFVF9PRkZTRVQJCTB4MjAxCiYjNDM7I2RlZmluZSBJWEdCRV9IVl9MSU5LX1NUQVRVU19PRkZTRVQJMHgyMDkKJiM0MzsjZGVmaW5lIElYR0JFX0hWX0xJTktfU1RBVFVTX1NJWkUJNAogCiBzdGF0aWMgaW5saW5lIHMzMiBpeGdiZXZmX3dyaXRlX21zZ19yZWFkX2FjayhzdHJ1Y3QgaXhnYmVfaHcgKmh3LCB1MzIgKm1zZywKIAkJCQkJICAgICB1MzIgKnJldG1zZywgdTE2IHNpemUpCkBAIC05MDEsNiAmIzQzOzkwNCw0MCBAQCBzdGF0aWMgczMyIGl4Z2JldmZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodywKIAlyZXR1cm4gcmV0X3ZhbDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIGl4Z2JldmZfaHZfcmVhZF9saW5rc19lNjEwIC0gcmVhZCBsaW5rIHN0YXR1cyBmcm9tIFBDSSBjb25maWcgc3BhY2UKJiM0MzsgKiBAaHc6IHBvaW50ZXIgdG8gaGFyZHdhcmUgc3RydWN0dXJlCiYjNDM7ICogQGxpbmtzX3JlZzogcG9pbnRlciB0byBzdG9yZSByZWFkIHZhbHVlCiYjNDM7ICoKJiM0MzsgKiBPbiBIeXBlci1WIEU2MTAgVkZzIHRoZSBWRkxJTktTIHJlZ2lzdGVyIGRvZXMgbm90IGNhcnJ5IHZhbGlkIGxpbmsgc3BlZWQuCiYjNDM7ICogSW5zdGVhZCwgbGluayBzdGF0dXMgaXMgZXhwb3NlZCB0aHJvdWdoIGVtdWxhdGVkIFBDSSBjb25maWcgc3BhY2UgYXQgb2Zmc2V0CiYjNDM7ICogMHgyMDkgaW4gVkZMSU5LUyByZWdpc3RlciBmb3JtYXQuCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgomIzQzOyAqLwomIzQzO3N0YXRpYyBzMzIgaXhnYmV2Zl9odl9yZWFkX2xpbmtzX2U2MTAoc3RydWN0IGl4Z2JlX2h3ICpodywgdTMyICpsaW5rc19yZWcpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gaHctJmd0O2JhY2s7CiYjNDM7CXU4IGRhdGFbSVhHQkVfSFZfTElOS19TVEFUVVNfU0laRV07CiYjNDM7CiYjNDM7CWlmICghSVNfRU5BQkxFRChDT05GSUdfUENJX01NQ09ORklHKSkgewomIzQzOwkJZGV2X2Vycl9vbmNlKCZhbXA7YWRhcHRlci0mZ3Q7cGRldi0mZ3Q7ZGV2LAomIzQzOwkJCSAgICAgJiMzNDtjYW5ub3QgcmVhZCBsaW5rIHN0YXR1cywgUENJX01NQ09ORklHIGlzIHJlcXVpcmVkIGZvciBIeXBlci1WXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZm9yIChpbnQgaSA9IDA7IGkgJmx0OyBJWEdCRV9IVl9MSU5LX1NUQVRVU19TSVpFOyBpJiM0MzsmIzQzOykgewomIzQzOwkJaW50IHJldCA9IHBjaV9yZWFkX2NvbmZpZ19ieXRlKGFkYXB0ZXItJmd0O3BkZXYsCiYjNDM7CQkJCQkgICAgICAgSVhHQkVfSFZfTElOS19TVEFUVVNfT0ZGU0VUICYjNDM7IGksCiYjNDM7CQkJCQkgICAgICAgJmFtcDtkYXRhW2ldKTsKJiM0MzsJCWlmIChyZXQpCiYjNDM7CQkJcmV0dXJuIHBjaWJpb3NfZXJyX3RvX2Vycm5vKHJldCk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJKmxpbmtzX3JlZyA9IGdldF91bmFsaWduZWRfbGUzMihkYXRhKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogLyoqCiAgKiBpeGdiZXZmX2h2X2NoZWNrX21hY19saW5rX3ZmIC0gY2hlY2sgbGluawogICogQGh3OiBwb2ludGVyIHRvIHByaXZhdGUgaGFyZHdhcmUgc3RydWN0CkBAIC05MDksNiAmIzQzOzk0Niw3IEBAIHN0YXRpYyBzMzIgaXhnYmV2Zl9jaGVja19tYWNfbGlua192ZihzdHJ1Y3QgaXhnYmVfaHcgKmh3LAogICogQGF1dG9uZWdfd2FpdF90b19jb21wbGV0ZTogdW51c2VkCiAgKgogICogSHlwZXItViB2YXJpYW50OyB0aGVyZSBpcyBubyBtYWlsYm94IGNvbW11bmljYXRpb24uCiYjNDM7ICogRm9yIEU2MTAgVkZzLCBsaW5rIHN0YXR1cyBpcyByZWFkIGZyb20gZW11bGF0ZWQgUENJIGNvbmZpZyBzcGFjZS4KICAqLwogc3RhdGljIHMzMiBpeGdiZXZmX2h2X2NoZWNrX21hY19saW5rX3ZmKHN0cnVjdCBpeGdiZV9odyAqaHcsCiAJCQkJCWl4Z2JlX2xpbmtfc3BlZWQgKnNwZWVkLApAQCAtOTI2LDggJiM0Mzs5NjQsMTYgQEAgc3RhdGljIHMzMiBpeGdiZXZmX2h2X2NoZWNrX21hY19saW5rX3ZmKHN0cnVjdCBpeGdiZV9odyAqaHcsCiAJaWYgKCFtYWMtJmd0O2dldF9saW5rX3N0YXR1cykKIAkJZ290byBvdXQ7CiAKLQkvKiBpZiBsaW5rIHN0YXR1cyBpcyBkb3duIG5vIHBvaW50IGluIGNoZWNraW5nIHRvIHNlZSBpZiBwZiBpcyB1cCAqLwotCWxpbmtzX3JlZyA9IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9WRkxJTktTKTsKJiM0MzsJaWYgKG1hYy0mZ3Q7dHlwZSA9PSBpeGdiZV9tYWNfZTYxMF92ZikgewomIzQzOwkJaWYgKGl4Z2JldmZfaHZfcmVhZF9saW5rc19lNjEwKGh3LCAmYW1wO2xpbmtzX3JlZykpIHsKJiM0MzsJCQkqbGlua191cCA9IGZhbHNlOwomIzQzOwkJCSpzcGVlZCA9IElYR0JFX0xJTktfU1BFRURfVU5LTk9XTjsKJiM0MzsJCQlyZXR1cm4gMDsKJiM0MzsJCX0KJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWxpbmtzX3JlZyA9IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9WRkxJTktTKTsKJiM0MzsJfQomIzQzOwogCWlmICghKGxpbmtzX3JlZyAmYW1wOyBJWEdCRV9MSU5LU19VUCkpCiAJCWdvdG8gb3V0OwogCkBAIC05NDEsOCAmIzQzOzk4NywxMSBAQCBzdGF0aWMgczMyIGl4Z2JldmZfaHZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodywKIAkJCXVkZWxheSgxMDApOwogCQkJbGlua3NfcmVnID0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX1ZGTElOS1MpOwogCi0JCQlpZiAoIShsaW5rc19yZWcgJmFtcDsgSVhHQkVfTElOS1NfVVApKQotCQkJCWdvdG8gb3V0OwomIzQzOwkJCWlmICghKGxpbmtzX3JlZyAmYW1wOyBJWEdCRV9MSU5LU19VUCkpIHsKJiM0MzsJCQkJKmxpbmtfdXAgPSBmYWxzZTsKJiM0MzsJCQkJKnNwZWVkID0gSVhHQkVfTElOS19TUEVFRF9VTktOT1dOOwomIzQzOwkJCQlyZXR1cm4gMDsKJiM0MzsJCQl9CiAJCX0KIAl9CiAKQEAgLTk1Niw2ICYjNDM7MTAwNSw5IEBAIHN0YXRpYyBzMzIgaXhnYmV2Zl9odl9jaGVja19tYWNfbGlua192ZihzdHJ1Y3QgaXhnYmVfaHcgKmh3LAogCWNhc2UgSVhHQkVfTElOS1NfU1BFRURfMTAwXzgyNTk5OgogCQkqc3BlZWQgPSBJWEdCRV9MSU5LX1NQRUVEXzEwMF9GVUxMOwogCQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCSpzcGVlZCA9IElYR0JFX0xJTktfU1BFRURfVU5LTk9XTjsKJiM0MzsJCWJyZWFrOwogCX0KIAogCS8qIGlmIHdlIHBhc3NlZCBhbGwgdGhlIHRlc3RzIGFib3ZlIHRoZW4gdGhlIGxpbmsgaXMgdXAgYW5kIHdlIG5vCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTQKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA2MjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpeGdiZXZmIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IGltcHJvdmluZyB0aGUgYGl4Z2JldmZgIGRyaXZlciDigJMgdGhlIEludGVsIDEwIEdpZ2FiaXQgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXIuIEl0JiMzOTtzIHNwZWNpZmljYWxseSBhYm91dCBhZGRpbmcgdGhlIGFiaWxpdHkgdG8gcmVhZCBsaW5rIHNwZWVkIGluZm9ybWF0aW9uIGZyb20gdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIHdoZW4gaXQmIzM5O3MgcnVubmluZyBvbiBhIEh5cGVyLVYgRTYxMCBWRi4gVGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBhcmUgaW4gYGV0aHRvb2wuY2AgYW5kIGB2Zi5jYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIFRoZXkmIzM5O3ZlIHVwZGF0ZWQgYGl4Z2JldmZfZ2V0X2xpbmtfa3NldHRpbmdzYCB0byBncmFiIGxpbmsgc3BlZWQgZXZlcnkgdGltZSBpdCYjMzk7cyBxdWVyaWVkLCBidXQgb25seSB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgYElYR0JFX1NVQkRFVl9JRF9FNjEwX1ZGX0hWYCBzdWJkZXZpY2UuIFRoZXkmIzM5O3ZlIGFsc28gYWRkZWQgYSBuZXcgZnVuY3Rpb24sIGBpeGdiZXZmX2h2X3JlYWRfbGlua3NfZTYxMGAsIHRvIGhhbmRsZSByZWFkaW5nIHRoZSBsaW5rIHN0YXR1cyBmcm9tIFBDSSBjb25maWcgc3BhY2UuIEFuZCwgb2YgY291cnNlLCB0aGV5JiMzOTt2ZSBtb2RpZmllZCBgaXhnYmV2Zl9odl9jaGVja19tYWNfbGlua192ZmAgdG8gdXRpbGl6ZSB0aGF0IG5ldyBmdW5jdGlvbiBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgaXhnYmVfbWFjX2U2MTBfdmZgIGRldmljZS4KCk5vdywgbXkgbWluZCBpcyByYWNpbmcuIGBpeGdiZXZmYCBpcyBhIGRyaXZlciBmb3IgYSAqcGh5c2ljYWwqIG5ldHdvcmsgY2FyZCAoSW50ZWwgMTBHYkUgVkYpLCByaWdodD8gVGhlc2UgVkZzIGFyZSB0eXBpY2FsbHkgcGFzc2VkIHRocm91Z2ggdG8gdmlydHVhbCBtYWNoaW5lcy4gQnV0IHRoZSBkcml2ZXIgbGl2ZXMgb24gdGhlIGhvc3QgYW5kIGluIHRoZSBndWVzdCwgc28gaXMgdGhpcyBkcml2ZXIgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIGZ1bGx5IHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/CgpUeXBpY2FsbHksIFZGIGRyaXZlcnMgYXJlIHVzZWQgd2l0aGluIFZNcyB3aGVuIFNSLUlPViBpcyBpbiBwbGF5LiBCdXQsIEkgZG9uJiMzOTt0IHJlY2FsbCBRRU1VIGVtdWxhdGluZyBgaXhnYmV2ZmAgYnkgZGVmYXVsdC4gUUVNVSBoYW5kbGVzIGBlMTAwMGVgLCBgaWdiYCwgYW5kIGBlMTAwMGAsIGJ1dC4uLmRvZXMgaXQgaGF2ZSBhbiBlbXVsYXRpb24gZm9yIGBpeGdiZWAgb3IgYGl4Z2JldmZgPyBJIG5lZWQgdG8gY2hlY2sgdGhlIFFFTVUgc291cmNlIHRvIGJlIHN1cmUuIEkmIzM5O20gc2VlaW5nIGBody9uZXQvaWdiLmNgLCBgaHcvbmV0L2UxMDAwZS5jYCwgYGh3L25ldC9lMTAwMC5jYCBpbiBRRU1VLCBidXQgbm90IGBpeGdiZSpgLgoKTm8uIFFFTVUgZG9lc24mIzM5O3QgZGlyZWN0bHkgZW11bGF0ZSBgaXhnYmVgLiBJdCBzdXBwb3J0cyBgZTEwMDBlYCwgYGlnYmAsIGB2bXhuZXQzYCwgYHZpcnRpby1uZXRgLCBgcnRsODEzOWAsIGBwY25ldGAsIGBuZTJrX3BjaWAsIGBlZXBybzEwMGAsIGB0dWxpcGAsIGJ1dCBub3QgYGl4Z2JlYC4KClNvLCBkb2VzIFFFTVUgaGF2ZSAqYW55KiBgaXhnYmVgIGVtdWxhdGlvbj8gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIFFFTVUgc291cmNlIGNvZGUsIG9yIG1heWJlIHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSBmb3IgZnV6emluZyBlZmZvcnRzIHJlbGF0ZWQgdG8gYGl4Z2JldmZgLgoKV2FpdCwgdGhpcyBicmluZ3MgdXAgYW5vdGhlciBwb2ludC4gU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGZ1enogYGl4Z2JldmZgICp1bmxlc3MqIHRoZSBkZXZpY2UgaXMgZW11bGF0ZWQsIG9yIHdlIGhhdmUgYSB2aXJ0dWFsIGRldmljZSBwcmVzZW50ZWQgdG8gaXQuIFN5emthbGxlciBzdXBwb3J0cyB2YXJpb3VzIGRldmljZSBkcml2ZXJzLCBzdWNoIGFzIGBzeXotbWFjODAyMTFgIGFuZCBgc3l6LXVzYmAuIEJ1dCBmb3IgUENJIGRldmljZXMsIGl0IGhlYXZpbHkgcmVsaWVzIG9uIHRoZSBRRU1VIGVtdWxhdGlvbiBsYXllci4gRG9lcyBzeXprYWxsZXIgYWN0dWFsbHkgKnN1cHBvcnQqIGBpeGdiZXZmYCBhbmQgaGF2ZSBjb3ZlcmFnZSBmb3IgaXQ/IEkmIzM5O2xsIG5lZWQgdG8gZG8gYSBzZWFyY2ggdG8gbWFrZSBzdXJlLiBUaGlzIGNvdWxkIGluZmx1ZW5jZSB0aGUgY3JpdGljYWxpdHkgb2YgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpeGdiZXZmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNDg3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uLy5yZW5hbWVzLnR4dD04MTc9bmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9pbnRlbC9peGdiZSBuZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2l4Z2JlXG5Eb2N1bWVudGF0aW9uLy5yZW5hbWVzLnR4dDo4MTg6bmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9pbnRlbC9peGdiZXZmIG5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW50ZWwvaXhnYmV2ZlxuRG9jdW1lbnRhdGlvbi8ucmVuYW1lcy50eHQtODE5LW5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvbWFydmVsbC9vY3Rlb250eDIgbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4MlxuLS1cbkRvY3VtZW50YXRpb24vLnJlbmFtZXMudHh0PTg0Mz1uZXR3b3JraW5nL2l4Z2JlIG5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW50ZWwvaXhnYmVcbkRvY3VtZW50YXRpb24vLnJlbmFtZXMudHh0Ojg0NDpuZXR3b3JraW5nL2l4Z2JldmYgbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9pbnRlbC9peGdiZXZmXG5Eb2N1bWVudGF0aW9uLy5yZW5hbWVzLnR4dC04NDUtbmV0d29ya2luZy9uZXRkZXYtRkFRIHByb2Nlc3MvbWFpbnRhaW5lci1uZXRkZXZcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW5kZXgucnN0PTg9Q29udGVudHM6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2luZGV4LnJzdC0zOS0gICBpbnRlbC9peGdiZVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2luZGV4LnJzdDo0MDogICBpbnRlbC9peGdiZXZmXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW5kZXgucnN0LTQxLSAgIGludGVsL2k0MGVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIwMz1jb25maWcgSVhHQkVWRlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjEzLVx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjE0Olx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9pbnRlbC9peGdiZXZmLnJzdFx1MDAzZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMTYtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjE3Olx0ICB3aWxsIGJlIGNhbGxlZCBpeGdiZXZmLiAgTVNJLVggaW50ZXJydXB0IHN1cHBvcnQgaXMgcmVxdWlyZWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjE4LVx0ICBmb3IgdGhpcyBkcml2ZXIgdG8gd29yayBjb3JyZWN0bHkuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yMjA9Y29uZmlnIElYR0JFVkZfSVBTRUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIyNi1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjI3Olx0ICBFbmFibGUgc3VwcG9ydCBmb3IgSVBTZWMgb2ZmbG9hZCBpbiBpeGdiZXZmLmtvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIyOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfSVhHQkUpICYjNDM7PSBpeGdiZS9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19JWEdCRVZGKSAmIzQzOz0gaXhnYmV2Zi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19JNDBFKSAmIzQzOz0gaTQwZS9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oPTIxMj1zdHJ1Y3QgdmZfZGF0YV9zdG9yYWdlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oLTIzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlLmg6MjM1OmVudW0gaXhnYmV2Zl94Y2FzdF9tb2RlcyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oLTIzNi1cdElYR0JFVkZfWENBU1RfTU9ERV9OT05FID0gMCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL01ha2VmaWxlLTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0lYR0JFVkYpICYjNDM7PSBpeGdiZXZmLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvTWFrZWZpbGUtOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvTWFrZWZpbGU6OTppeGdiZXZmLXkgOj0gdmYubyBtYngubyBldGh0b29sLm8gaXhnYmV2Zl9tYWluLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvTWFrZWZpbGU6MTA6aXhnYmV2Zi0kKENPTkZJR19JWEdCRVZGX0lQU0VDKSAmIzQzOz0gaXBzZWMub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo0Oi8qIGV0aHRvb2wgc3VwcG9ydCBmb3IgaXhnYmV2ZiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjE4OiNpbmNsdWRlIFwmIzM0O2l4Z2JldmYuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM9MjI9c3RydWN0IGl4Z2JlX3N0YXRzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zMS1cdC50eXBlID0gSVhHQkVWRl9TVEFUUywgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjMyOlx0LnNpemVvZl9zdGF0ID0gc2l6ZW9mX2ZpZWxkKHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIsIF9zdGF0KSwgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjMzOlx0LnN0YXRfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IGl4Z2JldmZfYWRhcHRlciwgX3N0YXQpIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zNC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo0MzpzdGF0aWMgc3RydWN0IGl4Z2JlX3N0YXRzIGl4Z2JldmZfZ3N0cmluZ3Nfc3RhdHNbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQ0LVx0SVhHQkVWRl9ORVRERVZfU1RBVChyeF9wYWNrZXRzKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MC0jZGVmaW5lIElYR0JFVkZfUVVFVUVfU1RBVFNfTEVOICggXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjYxOlx0KCgoc3RydWN0IGl4Z2JldmZfYWRhcHRlciAqKW5ldGRldl9wcml2KG5ldGRldikpLVx1MDAzZW51bV90eF9xdWV1ZXMgJiM0MzsgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjYyOlx0ICgoc3RydWN0IGl4Z2JldmZfYWRhcHRlciAqKW5ldGRldl9wcml2KG5ldGRldikpLVx1MDAzZW51bV94ZHBfcXVldWVzICYjNDM7IFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo2MzpcdCAoKHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKiluZXRkZXZfcHJpdihuZXRkZXYpKS1cdTAwM2VudW1fcnhfcXVldWVzKSAqIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo2NDpcdCAoc2l6ZW9mKHN0cnVjdCBpeGdiZXZmX3N0YXRzKSAvIHNpemVvZih1NjQpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjY1OiNkZWZpbmUgSVhHQkVWRl9HTE9CQUxfU1RBVFNfTEVOIEFSUkFZX1NJWkUoaXhnYmV2Zl9nc3RyaW5nc19zdGF0cylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTY2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jPTY4PXN0YXRpYyBjb25zdCBjaGFyIGl4Z2JlX2dzdHJpbmdzX3Rlc3RbXVtFVEhfR1NUUklOR19MRU5dID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NzU6c3RhdGljIGNvbnN0IGNoYXIgaXhnYmV2Zl9wcml2X2ZsYWdzX3N0cmluZ3NbXVtFVEhfR1NUUklOR19MRU5dID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzYtI2RlZmluZSBJWEdCRVZGX1BSSVZfRkxBR1NfTEVHQUNZX1JYXHRCSVQoMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjgwOiNkZWZpbmUgSVhHQkVWRl9QUklWX0ZMQUdTX1NUUl9MRU4gQVJSQVlfU0laRShpeGdiZXZmX3ByaXZfZmxhZ3Nfc3RyaW5ncylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6ODI6c3RhdGljIGludCBpeGdiZXZmX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODMtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6ODU6XHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTg2LVx0c3RydWN0IGl4Z2JlX2h3ICpodyA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlaHc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTI5OnN0YXRpYyB1MzIgaXhnYmV2Zl9nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTEzMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoxMzE6XHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTEzMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xMzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoxMzY6c3RhdGljIHZvaWQgaXhnYmV2Zl9zZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTMyIGRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xMzcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTM4Olx0c3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xMzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTQzOnN0YXRpYyBpbnQgaXhnYmV2Zl9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTE0NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTQ5OnN0YXRpYyB2b2lkIGl4Z2JldmZfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTE1MC1cdFx0XHQgICAgIHN0cnVjdCBldGh0b29sX3JlZ3MgKnJlZ3MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTUyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjE1MzpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTU0LVx0c3RydWN0IGl4Z2JlX2h3ICpodyA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlaHc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xNTUtXHR1MzIgKnJlZ3NfYnVmZiA9IHA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoxNTY6XHR1MzIgcmVnc19sZW4gPSBpeGdiZXZmX2dldF9yZWdzX2xlbihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTU3LVx0dTggaTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0yMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoyMjM6c3RhdGljIHZvaWQgaXhnYmV2Zl9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMjI0LVx0XHRcdFx0c3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqZHJ2aW5mbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIyNS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoyMjY6XHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjIyODpcdHN0cnNjcHkoZHJ2aW5mby1cdTAwM2Vkcml2ZXIsIGl4Z2JldmZfZHJpdmVyX25hbWUsIHNpemVvZihkcnZpbmZvLVx1MDAzZWRyaXZlcikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMjI5LVx0c3Ryc2NweShkcnZpbmZvLVx1MDAzZWJ1c19pbmZvLCBwY2lfbmFtZShhZGFwdGVyLVx1MDAzZXBkZXYpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjIzNTpzdGF0aWMgdm9pZCBpeGdiZXZmX2dldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIzNi1cdFx0XHRcdCAgc3RydWN0IGV0aHRvb2xfcmluZ3BhcmFtICpyaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIzOS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoyNDA6XHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTI0MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0yNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoyNDg6c3RhdGljIGludCBpeGdiZXZmX3NldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTI0OS1cdFx0XHRcdCBzdHJ1Y3QgZXRodG9vbF9yaW5ncGFyYW0gKnJpbmcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMjUyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjI1MzpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MjU0Olx0c3RydWN0IGl4Z2JldmZfcmluZyAqdHhfcmluZyA9IE5VTEwsICpyeF9yaW5nID0gTlVMTDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTI1NS1cdHUzMiBuZXdfcnhfY291bnQsIG5ld190eF9jb3VudDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zMDItXHRcdFx0dHhfcmluZ1tpXS5jb3VudCA9IG5ld190eF9jb3VudDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjMwMzpcdFx0XHRlcnIgPSBpeGdiZXZmX3NldHVwX3R4X3Jlc291cmNlcyhcdTAwMjZ0eF9yaW5nW2ldKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTMwNC1cdFx0XHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzA2LVx0XHRcdFx0XHRpLS07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzozMDc6XHRcdFx0XHRcdGl4Z2JldmZfZnJlZV90eF9yZXNvdXJjZXMoXHUwMDI2dHhfcmluZ1tpXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zMDgtXHRcdFx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzIwLVx0XHRcdHR4X3JpbmdbaV0uY291bnQgPSBuZXdfdHhfY291bnQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzozMjE6XHRcdFx0ZXJyID0gaXhnYmV2Zl9zZXR1cF90eF9yZXNvdXJjZXMoXHUwMDI2dHhfcmluZ1tpXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zMjItXHRcdFx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTMyNC1cdFx0XHRcdFx0aS0tO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MzI1Olx0XHRcdFx0XHRpeGdiZXZmX2ZyZWVfdHhfcmVzb3VyY2VzKFx1MDAyNnR4X3JpbmdbaV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzI2LVx0XHRcdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTM1Mi1cdFx0XHRyeF9yaW5nW2ldLmNvdW50ID0gbmV3X3J4X2NvdW50O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MzUzOlx0XHRcdGVyciA9IGl4Z2JldmZfc2V0dXBfcnhfcmVzb3VyY2VzKGFkYXB0ZXIsIFx1MDAyNnJ4X3JpbmdbaV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzU0LVx0XHRcdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zNTYtXHRcdFx0XHRcdGktLTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjM1NzpcdFx0XHRcdFx0aXhnYmV2Zl9mcmVlX3J4X3Jlc291cmNlcyhcdTAwMjZyeF9yaW5nW2ldKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTM1OC1cdFx0XHRcdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zNjgtXHQvKiBicmluZyBpbnRlcmZhY2UgZG93biB0byBwcmVwYXJlIGZvciB1cGRhdGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjM2OTpcdGl4Z2JldmZfZG93bihhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTM3MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zNzMtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFkYXB0ZXItXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjM3NDpcdFx0XHRpeGdiZXZmX2ZyZWVfdHhfcmVzb3VyY2VzKGFkYXB0ZXItXHUwMDNldHhfcmluZ1tpXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zNzUtXHRcdFx0KmFkYXB0ZXItXHUwMDNldHhfcmluZ1tpXSA9IHR4X3JpbmdbaV07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzc5LVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBhZGFwdGVyLVx1MDAzZW51bV94ZHBfcXVldWVzOyBpJiM0MzsmIzQzOywgaiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjM4MDpcdFx0XHRpeGdiZXZmX2ZyZWVfdHhfcmVzb3VyY2VzKGFkYXB0ZXItXHUwMDNleGRwX3Jpbmdbal0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzgxLVx0XHRcdCphZGFwdGVyLVx1MDAzZXhkcF9yaW5nW2pdID0gdHhfcmluZ1tpXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zOTEtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFkYXB0ZXItXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjM5MjpcdFx0XHRpeGdiZXZmX2ZyZWVfcnhfcmVzb3VyY2VzKGFkYXB0ZXItXHUwMDNlcnhfcmluZ1tpXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zOTMtXHRcdFx0KmFkYXB0ZXItXHUwMDNlcnhfcmluZ1tpXSA9IHJ4X3JpbmdbaV07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDAxLVx0LyogcmVzdG9yZSBpbnRlcmZhY2UgdXNpbmcgbmV3IHZhbHVlcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDAyOlx0aXhnYmV2Zl91cChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQwMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00MDgtXHRcdCAgICAgaSBcdTAwM2MgYWRhcHRlci1cdTAwM2VudW1fdHhfcXVldWVzICYjNDM7IGFkYXB0ZXItXHUwMDNlbnVtX3hkcF9xdWV1ZXM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDA5Olx0XHRcdGl4Z2JldmZfZnJlZV90eF9yZXNvdXJjZXMoXHUwMDI2dHhfcmluZ1tpXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00MTAtXHRcdHZmcmVlKHR4X3JpbmcpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjQxNzpzdGF0aWMgaW50IGl4Z2JldmZfZ2V0X3NzZXRfY291bnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHN0cmluZ3NldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQxOC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDMxOnN0YXRpYyB2b2lkIGl4Z2JldmZfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQzMi1cdFx0XHRcdCAgICAgIHN0cnVjdCBldGh0b29sX3N0YXRzICpzdGF0cywgdTY0ICpkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDMzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjQzNDpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDM1LVx0c3RydWN0IHJ0bmxfbGlua19zdGF0czY0IHRlbXA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDM3LVx0dW5zaWduZWQgaW50IHN0YXJ0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDM4Olx0c3RydWN0IGl4Z2JldmZfcmluZyAqcmluZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQzOS1cdGludCBpLCBqO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQ0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjQ0MjpcdGl4Z2JldmZfdXBkYXRlX3N0YXRzKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDQzLVx0bmV0X3N0YXRzID0gZGV2X2dldF9zdGF0cyhuZXRkZXYsIFx1MDAyNnRlbXApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDQ0LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgSVhHQkVWRl9HTE9CQUxfU1RBVFNfTEVOOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDQ1Olx0XHRzd2l0Y2ggKGl4Z2JldmZfZ3N0cmluZ3Nfc3RhdHNbaV0udHlwZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDQ2LVx0XHRjYXNlIE5FVERFVl9TVEFUUzpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQ0Ny1cdFx0XHRwID0gKGNoYXIgKiluZXRfc3RhdHMgJiM0MztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjQ0ODpcdFx0XHRcdFx0aXhnYmV2Zl9nc3RyaW5nc19zdGF0c1tpXS5zdGF0X29mZnNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQ0OS1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00NTEtXHRcdFx0cCA9IChjaGFyICopYWRhcHRlciAmIzQzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDUyOlx0XHRcdFx0XHRpeGdiZXZmX2dzdHJpbmdzX3N0YXRzW2ldLnN0YXRfb2Zmc2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDUzLVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQ1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjQ1OTpcdFx0ZGF0YVtpXSA9IChpeGdiZXZmX2dzdHJpbmdzX3N0YXRzW2ldLnNpemVvZl9zdGF0ID09XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00NjAtXHRcdFx0ICAgc2l6ZW9mKHU2NCkpID8gKih1NjQgKilwIDogKih1MzIgKilwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTUxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjUxNTpzdGF0aWMgdm9pZCBpeGdiZXZmX2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHUzMiBzdHJpbmdzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy01MTYtXHRcdFx0XHR1OCAqZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTUxNy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo1MTg6XHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTUxOS1cdGNoYXIgKnAgPSAoY2hhciAqKWRhdGE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNTI4LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBJWEdCRVZGX0dMT0JBTF9TVEFUU19MRU47IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo1Mjk6XHRcdFx0bWVtY3B5KHAsIGl4Z2JldmZfZ3N0cmluZ3Nfc3RhdHNbaV0uc3RhdF9zdHJpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy01MzAtXHRcdFx0ICAgICAgIEVUSF9HU1RSSU5HX0xFTik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNTUzLVx0Y2FzZSBFVEhfU1NfUFJJVl9GTEFHUzpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjU1NDpcdFx0bWVtY3B5KGRhdGEsIGl4Z2JldmZfcHJpdl9mbGFnc19zdHJpbmdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNTU1LVx0XHQgICAgICAgSVhHQkVWRl9QUklWX0ZMQUdTX1NUUl9MRU4gKiBFVEhfR1NUUklOR19MRU4pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTU1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjU2MDpzdGF0aWMgaW50IGl4Z2JldmZfbGlua190ZXN0KHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIsIHU2NCAqZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTU2MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNTc0LS8qIGV0aHRvb2wgcmVnaXN0ZXIgdGVzdCBkYXRhICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo1NzU6c3RydWN0IGl4Z2JldmZfcmVnX3Rlc3Qge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNTc2LVx0dTE2IHJlZztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MDAtLyogZGVmYXVsdCBWRiByZWdpc3RlciB0ZXN0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo2MDE6c3RhdGljIGNvbnN0IHN0cnVjdCBpeGdiZXZmX3JlZ190ZXN0IHJlZ190ZXN0X3ZmW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MDItXHR7IElYR0JFX1ZGUkRCQUwoMCksIDIsIFBBVFRFUk5fVEVTVCwgMHhGRkZGRkY4MCwgMHhGRkZGRkY4MCB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jPTYxND1zdGF0aWMgY29uc3QgdTMyIHJlZ2lzdGVyX3Rlc3RfcGF0dGVybnNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo2MTg6c3RhdGljIGJvb2wgcmVnX3BhdHRlcm5fdGVzdChzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyLCB1NjQgKmRhdGEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MTktXHRcdFx0ICAgICBpbnQgcmVnLCB1MzIgbWFzaywgdTMyIHdyaXRlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTYyNy1cdGZvciAocGF0ID0gMDsgcGF0IFx1MDAzYyBBUlJBWV9TSVpFKHJlZ2lzdGVyX3Rlc3RfcGF0dGVybnMpOyBwYXQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo2Mjg6XHRcdGJlZm9yZSA9IGl4Z2JldmZfcmVhZF9yZWcoXHUwMDI2YWRhcHRlci1cdTAwM2VodywgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTYyOS1cdFx0aXhnYmVfd3JpdGVfcmVnKFx1MDAyNmFkYXB0ZXItXHUwMDNlaHcsIHJlZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTYzMC1cdFx0XHRcdHJlZ2lzdGVyX3Rlc3RfcGF0dGVybnNbcGF0XSBcdTAwMjYgd3JpdGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NjMxOlx0XHR2YWwgPSBpeGdiZXZmX3JlYWRfcmVnKFx1MDAyNmFkYXB0ZXItXHUwMDNlaHcsIHJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MzItXHRcdGlmICh2YWwgIT0gKHJlZ2lzdGVyX3Rlc3RfcGF0dGVybnNbcGF0XSBcdTAwMjYgd3JpdGUgXHUwMDI2IG1hc2spKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNjQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NjQ2OnN0YXRpYyBib29sIHJlZ19zZXRfYW5kX2NoZWNrKHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIsIHU2NCAqZGF0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTY0Ny1cdFx0XHQgICAgICBpbnQgcmVnLCB1MzIgbWFzaywgdTMyIHdyaXRlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTY1NC1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjY1NTpcdGJlZm9yZSA9IGl4Z2JldmZfcmVhZF9yZWcoXHUwMDI2YWRhcHRlci1cdTAwM2VodywgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTY1Ni1cdGl4Z2JlX3dyaXRlX3JlZyhcdTAwMjZhZGFwdGVyLVx1MDAzZWh3LCByZWcsIHdyaXRlIFx1MDAyNiBtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjY1NzpcdHZhbCA9IGl4Z2JldmZfcmVhZF9yZWcoXHUwMDI2YWRhcHRlci1cdTAwM2VodywgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTY1OC1cdGlmICgod3JpdGUgXHUwMDI2IG1hc2spICE9ICh2YWwgXHUwMDI2IG1hc2spKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNjY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NjY5OnN0YXRpYyBpbnQgaXhnYmV2Zl9yZWdfdGVzdChzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyLCB1NjQgKmRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02NzAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NjcxOlx0Y29uc3Qgc3RydWN0IGl4Z2JldmZfcmVnX3Rlc3QgKnRlc3Q7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02NzItXHR1MzIgaTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03MzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo3MzY6c3RhdGljIHZvaWQgaXhnYmV2Zl9kaWFnX3Rlc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTczNy1cdFx0XHQgICAgICBzdHJ1Y3QgZXRodG9vbF90ZXN0ICpldGhfdGVzdCwgdTY0ICpkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzM4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjczOTpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzQwLVx0Ym9vbCBpZl9ydW5uaW5nID0gbmV0aWZfcnVubmluZyhuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc1OC1cdFx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo3NTk6XHRcdGlmIChpeGdiZXZmX2xpbmtfdGVzdChhZGFwdGVyLCBcdTAwMjZkYXRhWzFdKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc2MC1cdFx0XHRldGhfdGVzdC1cdTAwM2VmbGFncyB8PSBFVEhfVEVTVF9GTF9GQUlMRUQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzYzLVx0XHRcdC8qIGluZGljYXRlIHdlJiMzOTtyZSBpbiB0ZXN0IG1vZGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc2NDpcdFx0XHRpeGdiZXZmX2Nsb3NlKG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03NjUtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc2NjpcdFx0XHRpeGdiZXZmX3Jlc2V0KGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzY4LVx0XHRod19kYmcoXHUwMDI2YWRhcHRlci1cdTAwM2VodywgXCYjMzQ7cmVnaXN0ZXIgdGVzdGluZyBzdGFydGluZ1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo3Njk6XHRcdGlmIChpeGdiZXZmX3JlZ190ZXN0KGFkYXB0ZXIsIFx1MDAyNmRhdGFbMF0pKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzcwLVx0XHRcdGV0aF90ZXN0LVx1MDAzZWZsYWdzIHw9IEVUSF9URVNUX0ZMX0ZBSUxFRDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc3MjpcdFx0aXhnYmV2Zl9yZXNldChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc3My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03NzUtXHRcdGlmIChpZl9ydW5uaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6Nzc2Olx0XHRcdGl4Z2JldmZfb3BlbihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzc3LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03NzktXHRcdC8qIE9ubGluZSB0ZXN0cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NzgwOlx0XHRpZiAoaXhnYmV2Zl9saW5rX3Rlc3QoYWRhcHRlciwgXHUwMDI2ZGF0YVsxXSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03ODEtXHRcdFx0ZXRoX3Rlc3QtXHUwMDNlZmxhZ3MgfD0gRVRIX1RFU1RfRkxfRkFJTEVEO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc5MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc5MTpzdGF0aWMgaW50IGl4Z2JldmZfbndheV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzkyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc5MzpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzk1LVx0aWYgKG5ldGlmX3J1bm5pbmcobmV0ZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc5NjpcdFx0aXhnYmV2Zl9yZWluaXRfbG9ja2VkKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzk3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTgwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjgwMTpzdGF0aWMgaW50IGl4Z2JldmZfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy04MDItXHRcdFx0XHRzdHJ1Y3QgZXRodG9vbF9jb2FsZXNjZSAqZWMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODA1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjgwNjpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODA3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTgyNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjgyNzpzdGF0aWMgaW50IGl4Z2JldmZfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy04MjgtXHRcdFx0XHRzdHJ1Y3QgZXRodG9vbF9jb2FsZXNjZSAqZWMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODMxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjgzMjpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6ODMzOlx0c3RydWN0IGl4Z2JldmZfcV92ZWN0b3IgKnFfdmVjdG9yO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODM0LVx0aW50IG51bV92ZWN0b3JzLCBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTg3NS1cdFx0XHRxX3ZlY3Rvci1cdTAwM2VpdHIgPSByeF9pdHJfcGFyYW07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo4NzY6XHRcdGl4Z2JldmZfd3JpdGVfZWl0cihxX3ZlY3Rvcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy04NzctXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6ODgyOnN0YXRpYyB1MzIgaXhnYmV2Zl9nZXRfcnhfcmluZ19jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODgzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjg4NDpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODg1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTg4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjg4OTpzdGF0aWMgdTMyIGl4Z2JldmZfZ2V0X3J4ZmhfaW5kaXJfc2l6ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODkwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjg5MTpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODkyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTg5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjg5OTpzdGF0aWMgdTMyIGl4Z2JldmZfZ2V0X3J4Zmhfa2V5X3NpemUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTkwMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTA0OnN0YXRpYyBpbnQgaXhnYmV2Zl9nZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTA1LVx0XHRcdCAgICBzdHJ1Y3QgZXRodG9vbF9yeGZoX3BhcmFtICpyeGZoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTA2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjkwNzpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTA4LVx0aW50IGVyciA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTE0LVx0XHRcdG1lbWNweShyeGZoLVx1MDAzZWtleSwgYWRhcHRlci1cdTAwM2Vyc3Nfa2V5LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTE1Olx0XHRcdCAgICAgICBpeGdiZXZmX2dldF9yeGZoX2tleV9zaXplKG5ldGRldikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTE2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTkzMS1cdFx0aWYgKHJ4ZmgtXHUwMDNlaW5kaXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5MzI6XHRcdFx0ZXJyID0gaXhnYmV2Zl9nZXRfcmV0YV9sb2NrZWQoXHUwMDI2YWRhcHRlci1cdTAwM2VodyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTkzMy1cdFx0XHRcdFx0XHQgICAgICByeGZoLVx1MDAzZWluZGlyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTkzNi1cdFx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IHJ4ZmgtXHUwMDNla2V5KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTM3Olx0XHRcdGVyciA9IGl4Z2JldmZfZ2V0X3Jzc19rZXlfbG9ja2VkKFx1MDAyNmFkYXB0ZXItXHUwMDNlaHcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy05MzgtXHRcdFx0XHRcdFx0XHQgcnhmaC1cdTAwM2VrZXkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk0NjpzdGF0aWMgdTMyIGl4Z2JldmZfZ2V0X3ByaXZfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk0Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5NDg6XHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk0OS1cdHUzMiBwcml2X2ZsYWdzID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy05NTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5NTc6c3RhdGljIGludCBpeGdiZXZmX3NldF9wcml2X2ZsYWdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHUzMiBwcml2X2ZsYWdzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTU4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk1OTpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTYwLVx0dW5zaWduZWQgaW50IGZsYWdzID0gYWRhcHRlci1cdTAwM2VmbGFncztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy05NzAtXHRcdGlmIChuZXRpZl9ydW5uaW5nKG5ldGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5NzE6XHRcdFx0aXhnYmV2Zl9yZWluaXRfbG9ja2VkKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTcyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk3NzpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGl4Z2JldmZfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy05NzgtXHQuc3VwcG9ydGVkX2NvYWxlc2NlX3BhcmFtcyA9IEVUSFRPT0xfQ09BTEVTQ0VfVVNFQ1MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5Nzk6XHQuZ2V0X2RydmluZm9cdFx0PSBpeGdiZXZmX2dldF9kcnZpbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTgwOlx0LmdldF9yZWdzX2xlblx0XHQ9IGl4Z2JldmZfZ2V0X3JlZ3NfbGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTgxOlx0LmdldF9yZWdzXHRcdD0gaXhnYmV2Zl9nZXRfcmVncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk4MjpcdC5ud2F5X3Jlc2V0XHRcdD0gaXhnYmV2Zl9ud2F5X3Jlc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTgzLVx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk4NDpcdC5nZXRfcmluZ3BhcmFtXHRcdD0gaXhnYmV2Zl9nZXRfcmluZ3BhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTg1Olx0LnNldF9yaW5ncGFyYW1cdFx0PSBpeGdiZXZmX3NldF9yaW5ncGFyYW0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5ODY6XHQuZ2V0X21zZ2xldmVsXHRcdD0gaXhnYmV2Zl9nZXRfbXNnbGV2ZWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5ODc6XHQuc2V0X21zZ2xldmVsXHRcdD0gaXhnYmV2Zl9zZXRfbXNnbGV2ZWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5ODg6XHQuc2VsZl90ZXN0XHRcdD0gaXhnYmV2Zl9kaWFnX3Rlc3QsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5ODk6XHQuZ2V0X3NzZXRfY291bnRcdFx0PSBpeGdiZXZmX2dldF9zc2V0X2NvdW50LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTkwOlx0LmdldF9zdHJpbmdzXHRcdD0gaXhnYmV2Zl9nZXRfc3RyaW5ncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk5MTpcdC5nZXRfZXRodG9vbF9zdGF0c1x0PSBpeGdiZXZmX2dldF9ldGh0b29sX3N0YXRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTkyOlx0LmdldF9jb2FsZXNjZVx0XHQ9IGl4Z2JldmZfZ2V0X2NvYWxlc2NlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTkzOlx0LnNldF9jb2FsZXNjZVx0XHQ9IGl4Z2JldmZfc2V0X2NvYWxlc2NlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTk0Olx0LmdldF9yeF9yaW5nX2NvdW50XHQ9IGl4Z2JldmZfZ2V0X3J4X3JpbmdfY291bnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5OTU6XHQuZ2V0X3J4ZmhfaW5kaXJfc2l6ZVx0PSBpeGdiZXZmX2dldF9yeGZoX2luZGlyX3NpemUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5OTY6XHQuZ2V0X3J4Zmhfa2V5X3NpemVcdD0gaXhnYmV2Zl9nZXRfcnhmaF9rZXlfc2l6ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk5NzpcdC5nZXRfcnhmaFx0XHQ9IGl4Z2JldmZfZ2V0X3J4ZmgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5OTg6XHQuZ2V0X2xpbmtfa3NldHRpbmdzXHQ9IGl4Z2JldmZfZ2V0X2xpbmtfa3NldHRpbmdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTk5Olx0LmdldF9wcml2X2ZsYWdzXHRcdD0gaXhnYmV2Zl9nZXRfcHJpdl9mbGFncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjEwMDA6XHQuc2V0X3ByaXZfZmxhZ3NcdFx0PSBpeGdiZXZmX3NldF9wcml2X2ZsYWdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTAwMS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTAwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjEwMDM6dm9pZCBpeGdiZXZmX3NldF9ldGh0b29sX29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTAwNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoxMDA1Olx0bmV0ZGV2LVx1MDAzZWV0aHRvb2xfb3BzID0gXHUwMDI2aXhnYmV2Zl9ldGh0b29sX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTEwMDYtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0zLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjQ6I2luY2x1ZGUgXCYjMzQ7aXhnYmV2Zi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtNS0jaW5jbHVkZSBcdTAwM2NuZXQveGZybS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jPTk9c3RhdGljIGNvbnN0IGNoYXIgYWVzX2djbV9uYW1lW10gPSBcJiMzNDtyZmM0MTA2KGdjbShhZXMpKVwmIzM0Oztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMTEtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTI6ICogaXhnYmV2Zl9pcHNlY19zZXRfcGZfc2EgLSBhc2sgdGhlIFBGIHRvIHNldCB1cCBhbiBTQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTEzLSAqIEBhZGFwdGVyOiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0xNy0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTg6c3RhdGljIGludCBpeGdiZXZmX2lwc2VjX3NldF9wZl9zYShzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTE5LVx0XHRcdFx0ICAgc3RydWN0IHhmcm1fc3RhdGUgKnhzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy00Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzo0MzpcdHJldCA9IGl4Z2JldmZfd3JpdGVfbWJ4KGh3LCBtc2didWYsIElYR0JFX1ZGTUFJTEJPWF9TSVpFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy00NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjQ3Olx0cmV0ID0gaXhnYmV2Zl9wb2xsX21ieChodywgbXNnYnVmLCAyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy00OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTYxLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjYyOiAqIGl4Z2JldmZfaXBzZWNfZGVsX3BmX3NhIC0gYXNrIHRoZSBQRiB0byBkZWxldGUgYW4gU0FcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy02My0gKiBAYWRhcHRlcjogYm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtNjctICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjY4OnN0YXRpYyBpbnQgaXhnYmV2Zl9pcHNlY19kZWxfcGZfc2Eoc3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciwgaW50IHBmc2EpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtNjkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy03OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzo4MDpcdGVyciA9IGl4Z2JldmZfd3JpdGVfbWJ4KGh3LCBtc2didWYsIDIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTgxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6ODQ6XHRlcnIgPSBpeGdiZXZmX3BvbGxfbWJ4KGh3LCBtc2didWYsIDIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTg1LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtOTMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6OTQ6ICogaXhnYmV2Zl9pcHNlY19yZXN0b3JlIC0gcmVzdG9yZSB0aGUgSVBzZWMgSFcgc2V0dGluZ3MgYWZ0ZXIgYSByZXNldFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTk1LSAqIEBhZGFwdGVyOiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0xMDAtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjEwMTp2b2lkIGl4Z2JldmZfaXBzZWNfcmVzdG9yZShzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTEwMi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTAzOlx0c3RydWN0IGl4Z2JldmZfaXBzZWMgKmlwc2VjID0gYWRhcHRlci1cdTAwM2VpcHNlYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0xMDQtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gYWRhcHRlci1cdTAwM2VuZXRkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTExNi1cdFx0aWYgKHItXHUwMDNldXNlZCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjExNzpcdFx0XHRyZXQgPSBpeGdiZXZmX2lwc2VjX3NldF9wZl9zYShhZGFwdGVyLCByLVx1MDAzZXhzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0xMTgtXHRcdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMTIzLVx0XHRpZiAodC1cdTAwM2V1c2VkKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTI0Olx0XHRcdHJldCA9IGl4Z2JldmZfaXBzZWNfc2V0X3BmX3NhKGFkYXB0ZXIsIHQtXHUwMDNleHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTEyNS1cdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0xMzItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTMzOiAqIGl4Z2JldmZfaXBzZWNfZmluZF9lbXB0eV9pZHggLSBmaW5kIHRoZSBmaXJzdCB1bnVzZWQgc2VjdXJpdHkgcGFyYW1ldGVyIGluZGV4XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMTM0LSAqIEBpcHNlYzogcG9pbnRlciB0byBJUHNlYyBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM9MTM5PXN0YXRpY1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjE0MDppbnQgaXhnYmV2Zl9pcHNlY19maW5kX2VtcHR5X2lkeChzdHJ1Y3QgaXhnYmV2Zl9pcHNlYyAqaXBzZWMsIGJvb2wgcnh0YWJsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0xNDEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0xNjctLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTY4OiAqIGl4Z2JldmZfaXBzZWNfZmluZF9yeF9zdGF0ZSAtIGZpbmQgdGhlIHN0YXRlIHRoYXQgbWF0Y2hlc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTE2OS0gKiBAaXBzZWM6IHBvaW50ZXIgdG8gSVBzZWMgc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jPTE3Nz1zdGF0aWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzoxNzg6c3RydWN0IHhmcm1fc3RhdGUgKml4Z2JldmZfaXBzZWNfZmluZF9yeF9zdGF0ZShzdHJ1Y3QgaXhnYmV2Zl9pcHNlYyAqaXBzZWMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMTc5LVx0XHRcdFx0XHQgICAgICAgX19iZTMyICpkYWRkciwgdTggcHJvdG8sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTIwMi0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzoyMDM6ICogaXhnYmV2Zl9pcHNlY19wYXJzZV9wcm90b19rZXlzIC0gZmluZCB0aGUga2V5IGFuZCBzYWx0IGJhc2VkIG9uIHRoZSBwcm90b2NvbFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTIwNC0gKiBAZGV2OiBwb2ludGVyIHRvIG5ldCBkZXZpY2UgdG8gcHJvZ3JhbVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0yMTEtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjIxMjpzdGF0aWMgaW50IGl4Z2JldmZfaXBzZWNfcGFyc2VfcHJvdG9fa2V5cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTIxMy1cdFx0XHRcdFx0ICBzdHJ1Y3QgeGZybV9zdGF0ZSAqeHMsXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTc2MAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDUxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGFuIGl4Z2JldmYgUGF0Y2gqKgoKT2theSwgc28gdGhlIG91dHB1dCBjb25maXJtcyBgaXhnYmV2ZmAgaXMgYW4gSW50ZWwgdmlydHVhbCBmdW5jdGlvbiBkcml2ZXIsIHJlc2lkaW5nIGluIHRoZSBleHBlY3RlZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9gIGRpcmVjdG9yeS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O1dhaXQsIFFFTVUgZG9lc24mIzM5O3QgbmF0aXZlbHkgZW11bGF0ZSBgaXhnYmV2ZmAgZGlyZWN0bHkuJiMzNDsgQnV0IHRoZW4sIEkgaGF2ZSB0byBjb25zaWRlcjogZG9lcyBRRU1VIG9mZmVyIGFueSBIeXBlci1WIGVtdWxhdGlvbiB0aGF0IG1pZ2h0IGluZGlyZWN0bHkgaW52b2x2ZSB0aGlzPyBIb2xkIG9uLCB0aGUgcGF0Y2ggc3BlY2lmaWNhbGx5IG1lbnRpb25zICYjMzQ7SHlwZXItViBFNjEwIFZGcyYjMzQ7LiBUaGF0JiMzOTtzIGEga2V5IGNsdWUuIERvZXMgUUVNVSBlbXVsYXRlICp0aG9zZSo/IE5vcGUuCgpUaGVuLCB0aGVyZSYjMzk7cyB0aGUgc3l6a2FsbGVyIGNvbm5lY3Rpb24sIEkgcmVjYWxsIHNlZWluZyBhIGBzeXotY2x1c3RlcmAgY29tbWl0IC0gaXQmIzM5O3MgYSBnb29kIHBvc3NpYmlsaXR5IHRoYXQgdGhpcyBkcml2ZXIgaXMgdGVzdGVkIGJ5IHN5emthbGxlci4KCkxldCYjMzk7cyByZWZlciB0byB0aGUgcHJvbXB0JiMzOTtzIGluc3RydWN0aW9uczogIEl0IHNheXMgJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgaWYgd2UgY2FuJiMzOTt0IGdldCB0byB0aGUgY29kZSwgYW5kIHRoaXMgaXMgZm9yIGFueSBzY2VuYXJpb3Mgbm90IHN1cHBvcnRlZC4gSW4gdGhhdCBjb250ZXh0LCBgaXhnYmV2ZmAgaXMgSW50ZWwmIzM5O3MgMTAgR2lnYWJpdCBQQ0kgRXhwcmVzcyBWaXJ0dWFsIEZ1bmN0aW9uLgoKU28sIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgY2FuIHRoaXMgY29kZSBwYXRoIGJlIHJlYWNoZWQgaW4gYSBRRU1VIGVudmlyb25tZW50PyBRRU1VIGVtdWxhdGVzIGBlMTAwMGAsIGBlMTAwMGVgLCBhbmQgYGlnYmAuIE9rYXksIHNvIGRvZXMgUUVNVSBlbXVsYXRlIGBpeGdiZWA/IExldCBtZSBjaGVjayB0aGUgUUVNVSBzb3VyY2UgY29kZSwgb3IgY29uc2lkZXIgd2hldGhlciBpdCYjMzk7cyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIuIFdhaXQsIGBpeGdiZWAgaXMgYSBzdGFuZGFyZCBJbnRlbCBOSUMsIHNpbWlsYXIgdG8gdGhlIG90aGVycy4gSSByZWNhbGwgdGhhdCBRRU1VIGRvZXMgZW11bGF0ZSBgaWdiYCBhbmQgYGUxMDAwZWAuLi4gYnV0IHdoYXQgYWJvdXQgYGl4Z2JlYD8KCkl0IHNlZW1zIFFFTVUgYWRkZWQgYGlnYmAgc3VwcG9ydCBmYWlybHkgcmVjZW50bHksIHNvIHRoYXQgbWFrZXMgbWUgcXVlc3Rpb24sIGRpZCBpdCBhZGQgYGl4Z2JlYCBhcyB3ZWxsPyBMZXQgbWUgc2VhcmNoLi4uIEFoLCBubywgaXQgc2VlbXMgUUVNVSBoYXMgYGUxMDAwYCwgYGUxMDAwZWAsIGBpZ2JgLiBTbywgbm8gYGl4Z2JlYCB5ZXQuLi4gRXZlbiBpZiBRRU1VICpkaWQqIGVtdWxhdGUgYGl4Z2JlYCwgdGhlIG1vcmUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXQgZW11bGF0ZXMgYGl4Z2JldmZgLiBUaGF0JiMzOTtzIHRoZSByZWFsIGNydXguCgpPa2F5LCB1bHRpbWF0ZWx5IHRoZSBxdWVzdGlvbiB0byBhbnN3ZXI6IENhbiBzeXprYWxsZXIgcmVhY2ggYGl4Z2JldmZgPyBUaGF0JiMzOTtzIHdoYXQgSSBuZWVkIHRvIGludmVzdGlnYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXhnYmV2ZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3N5cy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwODM5CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNjExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFRob3VnaHQgUHJvY2VzcyBvbiB0aGUgaXhnYmV2ZiBhbmQgU3l6a2FsbGVyIFNwZWMgSXNzdWUqKgoKT2theSwgc28gdGhlIGluaXRpYWwgdGFzayBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgSSYjMzk7dmUgaGl0IGEgc25hZy4gSSB3YXMgZ29pbmcgdG8gdXNlIGBncmVwcGVyYCB0byBzZWFyY2ggZm9yIHNvbWV0aGluZywgYnV0IHRoZW4gdGhlIHByb21wdCYjMzk7cyAqdmVyeSogc3BlY2lmaWMuIEl0JiMzOTtzIHRlbGxpbmcgbWUgSSBjYW4mIzM5O3QgdXNlIGBncmVwcGVyYCBvbiBgc3lzL2AgZmlsZXMgb3IgYW55dGhpbmcgd2l0aCBgc3l6X2AsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2Ug4oCTIHRob3NlIGFyZSBTeXprYWxsZXItc3BlY2lmaWMgZGVzY3JpcHRpb25zLCBub3QgYWN0dWFsIGtlcm5lbCBjb2RlLiBUaGUgaW5zdHJ1Y3Rpb25zIHBvaW50IG1lIHRvd2FyZHMgYHJlYWQtc3l6LXNwZWNgIGFuZCBgc3l6LWdyZXBwZXJgLCBidXQgYSBxdWljayBzY2FuIG9mIG15IGF2YWlsYWJsZSB0b29scyByZXZlYWxzLi4uIHRoZXkmIzM5O3JlIG5vdCB0aGVyZSEgVGhlIGxpc3Qgb25seSBnaXZlcyBtZSBgZ3JlcHBlcmAsIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAsIGByZWFkLWZpbGVgLCBhbmQgYHNldC1yZXN1bHRzYC4gU28gSSYjMzk7bSBlZmZlY3RpdmVseSBibG9ja2VkIGZyb20gc2VhcmNoaW5nIHRoZSBzeXprYWxsZXIgc3BlY3MsIHdoaWNoIGlzIHdoYXQgdGhlIGluc3RydWN0aW9ucyAqc2VlbSogdG8gd2FudC4gRmluZSwgSSYjMzk7bGwgaGF2ZSB0byBhZGFwdC4KCk5vdywgb24gdG8gdGhlIGBpeGdiZXZmYCBzaXR1YXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0JiMzOTtzIHJlYWNoYWJsZSBpbiBRRU1VLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoYXQgcGFydGljdWxhciBkZXZpY2UuIEkgcmVtZW1iZXIgaXQgZW11bGF0ZXMgdGhlIGBpZ2JgIGZhbWlseSwgYm90aCBQRiBhbmQgVkYuIEJ1dCBubywgd2FpdCwgUUVNVSAqZG9lc24mIzM5O3QqIGVtdWxhdGUgYGl4Z2JlYCBkaXJlY3RseS4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBRRU1VIGVtdWxhdGVzIGBpeGdiZWAgb3Igbm90LiBMZXQgbWUgY2hlY2sgdGhlIGtlcm5lbCBzb3VyY2UsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jYC4gT2theSwgbm93IEkgcmVjYWxsIHRoaXMgaXMgYW4gSW50ZWwgMTBHYkUgVkYgZHJpdmVyOyBpdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0byBmdW5jdGlvbi4gQWhhLCB0aGUgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0IHNwZWNpZmljYWxseSBtZW50aW9ucyAmIzM0O0h5cGVyLVYgRTYxMCBWRnMuJiMzNDsKCkU2MTAgaXMgYW4gSW50ZWwgRXRoZXJuZXQgQ29udHJvbGxlciwgbGlrZSBFODEwLiBDaGVja2luZyB0aGUgY29kZSwgaXQgdXNlcyBhIHNwZWNpZmljIHN1YnN5c3RlbSBJRDogYElYR0JFX1NVQkRFVl9JRF9FNjEwX1ZGX0hWYC4gVGhpcyBpcyBpbmNyZWRpYmx5IHNwZWNpZmljIOKAkyBhbiBJbnRlbCBFNjEwIFZGICpvbiBIeXBlci1WKi4gQ2FuIHRoaXMgZXZlbiBiZSBlbXVsYXRlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IFRoZSBhbnN3ZXIgaXMgbm8sIGl0JiMzOTtzIG5vdC4gSSYjMzk7bSBwcmV0dHkgc3VyZSBRRU1VIGRvZXNuJiMzOTt0IG9mZmVyIHRoYXQgbGV2ZWwgb2Ygc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLiBTbywgdGhpcyBwYXJ0aWN1bGFyIGNvZGUgcGF0aCByZWxhdGVkIHRvIEU2MTAgVkZzIG9uIEh5cGVyLVYgaXMgKnVucmVhY2hhYmxlKiBpbiBjb21tb24gdmlydHVhbGl6YXRpb24gc2V0dXBzLiBKdXN0IHRvIGJlIGNvbXBsZXRlbHkgdGhvcm91Z2gsIGxldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBgaXhnYmV2ZmAgaXNuJiMzOTt0IGVtdWxhdGVkIGluIHNvZnR3YXJlLiBOb3BlLCBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIE9rYXksIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSBmYWN0cywgY2hlY2tpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmNgIHRvIGxvb2sgYXQgd2hpY2ggUENJIElEcyBpdCBiaW5kcyB0by4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpeGdiZXZmX3BjaV90YmwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jPTQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXhnYmV2Zl9pbmZvICppeGdiZXZmX2luZm9fdGJsW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYy01Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmM6NTg6LyogaXhnYmV2Zl9wY2lfdGJsIC0gUENJIERldmljZSBJRCBUYWJsZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYy01OS0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmMtNjUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jOjY2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpeGdiZXZmX3BjaV90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmMtNjctXHR7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYy0xMDQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmM6MTA1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpeGdiZXZmX3BjaV90YmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYy0xMDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYz00NTYxPXN0YXRpYyB2b2lkIGl4Z2JldmZfYXNzaWduX25ldGRldl9vcHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jLTQ1NzAtICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jOjQ1NzE6ICogQGVudDogZW50cnkgaW4gaXhnYmV2Zl9wY2lfdGJsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jLTQ1NzItICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jPTQ5MTg9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGl4Z2JldmZfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYy00OTE5LVx0Lm5hbWVcdFx0PSBpeGdiZXZmX2RyaXZlcl9uYW1lLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYzo0OTIwOlx0LmlkX3RhYmxlXHQ9IGl4Z2JldmZfcGNpX3RibCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmMtNDkyMS1cdC5wcm9iZVx0XHQ9IGl4Z2JldmZfcHJvYmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4MTQKCQkJCQkJCW91dHB1dDogMTI4CgkJCQkJCQl0aG91Z2h0czogMzgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBgaXhnYmV2ZmAgZHJpdmVyIGhhcyBhIHZlcnkgc3BlY2lmaWMgYXR0YWNobWVudCB0byBQQ0kgSURzLCBhbmQgdGhpcyBwYXRjaCB0YXJnZXRzIGBJWEdCRV9TVUJERVZfSURfRTYxMF9WRl9IVmAsIHdoaWNoIGlzIHRoZSBIeXBlci1WIGZsYXZvciBvZiB0aGUgSW50ZWwgRTYxMCBWRi4gVGhlIHByb2JsZW0gaXMsIFFFTVUsIGFzIGl0IHN0YW5kcywgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgSW50ZWwgRTYxMCBWRnMuIFNvLCByaWdodCBvZmYgdGhlIGJhdCwgd2UgY2FuIHNheSB0aGF0IGluIGEgdHlwaWNhbCBRRU1VIGVudmlyb25tZW50LCB0aGUgY29kZSBpbiB0aGlzIHBhdGNoIGlzIHNpbXBseSB1bnJlYWNoYWJsZS4KCkV2ZW4gaWYgd2UgKmNvdWxkKiBnZXQgUUVNVSB0byBlbXVsYXRlIGBpeGdiZXZmYCwgaXQmIzM5O3MgaW5jcmVkaWJseSB1bmxpa2VseSB0aGF0IGl0IHdvdWxkIGFsc28gYWNjdXJhdGVseSBtb2RlbCB0aGUgSHlwZXItVi1zcGVjaWZpYyBiZWhhdmlvciBvZiB0aGUgRTYxMCBWRiYjMzk7cyBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZS4gVGhlIHBhdGNoIGludHJvZHVjZXMgY29uZGl0aW9uYWxzIGJhc2VkIG9uIHRoZSBzdWJzeXN0ZW0gZGV2aWNlIElEOgoKYGBgYwoJaWYgKGFkYXB0ZXItJmd0O3BkZXYtJmd0O3N1YnN5c3RlbV9kZXZpY2UgPT0gSVhHQkVfU1VCREVWX0lEX0U2MTBfVkZfSFYpIHsKYGBgCgphbmQgY2hlY2tzIGZvciB0aGUgbWFjIHR5cGU6CgpgYGBjCglpZiAobWFjLSZndDt0eXBlID09IGl4Z2JlX21hY19lNjEwX3ZmKSB7CgkJaWYgKGl4Z2JldmZfaHZfcmVhZF9saW5rc19lNjEwKGh3LCAmYW1wO2xpbmtzX3JlZykpIHsKYGBgCgpUaGVzZSBjaGVja3MgZXNzZW50aWFsbHkgZGVtYW5kIGVpdGhlciB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgY2FyZCBpdHNlbGYgb3IgYSBIeXBlci1WIGh5cGVydmlzb3IgdGhhdCYjMzk7cyBzcGVjaWZpY2FsbHkgcGFzc2luZyB0aHJvdWdoIHRoaXMgVkYuIFN5emthbGxlciBydW5uaW5nIGluIGEgR0NFL1FFTVUgc2V0dXAgaXNuJiMzOTt0IGdvaW5nIHRvIGhhdmUgdGhhdC4gSXQmIzM5O3Mgbm90IGdvaW5nIHRvIHNlZSB0aGlzLgoKVGhlcmVmb3JlLCBiZWNhdXNlIHRoaXMgcmVsaWVzIG9uIHNwZWNpZmljLCBub24tZW11bGF0ZWQgaGFyZHdhcmUsIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIGFtIGdvaW5nIHRvIG1hcmsgaXQgYXMgbm90IHdvcnRoIGZ1enppbmcuCgpMZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBBaCwgeWVzLCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBpeGdiZXZmX2dldF9saW5rX2tzZXR0aW5nc2AgYW5kIGBpeGdiZXZmX2h2X2NoZWNrX21hY19saW5rX3ZmYCwgYnV0IHRoZXkmIzM5O3JlICphbHNvKiBndWFyZGVkIGJ5IHRoZXNlIEU2MTAgVkYgY2hlY2tzLiBTbywgdGhlIGVudGlyZSBmdW5jdGlvbmFsIGNoYW5nZSBpcyB1bmV4ZWN1dGFibGUgaW4gdGhlIGRlZmF1bHQgUUVNVSBlbnZpcm9ubWVudC4gQ29uZmlybWVkOiBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaXhnYmV2ZiBkcml2ZXIgdG8gc3VwcG9ydCByZWFkaW5nIGxpbmsgc3BlZWQgZnJvbSBQQ0kgY29uZmlnIHNwYWNlIHNwZWNpZmljYWxseSBmb3IgSW50ZWwgRTYxMCBWaXJ0dWFsIEZ1bmN0aW9ucyBvbiBIeXBlci1WIChJWEdCRV9TVUJERVZfSURfRTYxMF9WRl9IVikuIFRoaXMgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKEludGVsIEU2MTAgTklDKSBwYXNzZWQgdGhyb3VnaCB2aWEgSHlwZXItViwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaXhnYmV2ZiBkcml2ZXIgdG8gc3VwcG9ydCByZWFkaW5nIGxpbmsgc3BlZWQgZnJvbSBQQ0kgY29uZmlnIHNwYWNlIHNwZWNpZmljYWxseSBmb3IgSW50ZWwgRTYxMCBWaXJ0dWFsIEZ1bmN0aW9ucyBvbiBIeXBlci1WIChJWEdCRV9TVUJERVZfSURfRTYxMF9WRl9IVikuIFRoaXMgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKEludGVsIEU2MTAgTklDKSBwYXNzZWQgdGhyb3VnaCB2aWEgSHlwZXItViwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNToyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6MjQ6MjkuNzgzNTk5NTM3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI0NTAwMzM0NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaXhnYmV2ZiBkcml2ZXIgdG8gc3VwcG9ydCByZWFkaW5nIGxpbmsgc3BlZWQgZnJvbSBQQ0kgY29uZmlnIHNwYWNlIHNwZWNpZmljYWxseSBmb3IgSW50ZWwgRTYxMCBWaXJ0dWFsIEZ1bmN0aW9ucyBvbiBIeXBlci1WIChJWEdCRV9TVUJERVZfSURfRTYxMF9WRl9IVikuIFRoaXMgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKEludGVsIEU2MTAgTklDKSBwYXNzZWQgdGhyb3VnaCB2aWEgSHlwZXItViwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNToyNDoyOS43ODM2MDU3MjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwODE4OTQ2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI3YTU3NThjOGY1MzJjODQ4YzNlZjBmY2YwMmQ4MzY0MDQ0MzZhNGJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMjYgMTU6MjQ6MjggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuY1xcbmluZGV4IDUzN2E2MGQ1Mjc2ZjAuLjVkMGZiNGY0ZDlhMzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuY1xcbkBAIC04Myw2ICs4MywxOCBAQCBzdGF0aWMgaW50IGl4Z2JldmZfZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXFxuIHtcXG4gXFx0c3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuK1xcdHN0cnVjdCBpeGdiZV9odyAqaHcgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHc7XFxuK1xcbitcXHQvKiBIeXBlci1WIEU2MTAgVkZzOiByZWFkIGN1cnJlbnQgbGluayBzcGVlZCBmcm9tIFBDSSBjb25maWcgc3BhY2VcXG4rXFx0ICogb24gZXZlcnkgbGluayBzcGVlZCBxdWVyeS5cXG4rXFx0ICovXFxuK1xcdGlmIChhZGFwdGVyLVxcdTAwM2VwZGV2LVxcdTAwM2VzdWJzeXN0ZW1fZGV2aWNlID09IElYR0JFX1NVQkRFVl9JRF9FNjEwX1ZGX0hWKSB7XFxuK1xcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YWRhcHRlci1cXHUwMDNlbWJ4X2xvY2spO1xcbitcXHRcXHRody1cXHUwMDNlbWFjLmdldF9saW5rX3N0YXR1cyA9IHRydWU7XFxuK1xcdFxcdGh3LVxcdTAwM2VtYWMub3BzLmNoZWNrX2xpbmsoaHcsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VsaW5rX3NwZWVkLFxcbitcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWxpbmtfdXAsIGZhbHNlKTtcXG4rXFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW1ieF9sb2NrKTtcXG4rXFx0fVxcbiBcXG4gXFx0ZXRodG9vbF9saW5rX2tzZXR0aW5nc196ZXJvX2xpbmtfbW9kZShjbWQsIHN1cHBvcnRlZCk7XFxuIFxcdGV0aHRvb2xfbGlua19rc2V0dGluZ3NfYWRkX2xpbmtfbW9kZShjbWQsIHN1cHBvcnRlZCwgMTAwMDBiYXNlVF9GdWxsKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jXFxuaW5kZXggZjZkZjg2ZDEyNGI5ZS4uYTg0YjYyNjQxZTliYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL3ZmLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL3ZmLmNcXG5AQCAtMSwxNCArMSwxNyBAQFxcbiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAvKiBDb3B5cmlnaHQoYykgMTk5OSAtIDIwMjQgSW50ZWwgQ29ycG9yYXRpb24uICovXFxuIFxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcXHUwMDNlXFxuK1xcbiAjaW5jbHVkZSBcXFwidmYuaFxcXCJcXG4gI2luY2x1ZGUgXFxcIml4Z2JldmYuaFxcXCJcXG4gXFxuLS8qIE9uIEh5cGVyLVYsIHRvIHJlc2V0LCB3ZSBuZWVkIHRvIHJlYWQgZnJvbSB0aGlzIG9mZnNldFxcbi0gKiBmcm9tIHRoZSBQQ0kgY29uZmlnIHNwYWNlLiBUaGlzIGlzIHRoZSBtZWNoYW5pc20gdXNlZCBvblxcbi0gKiBIeXBlci1WIHRvIHN1cHBvcnQgUEYvVkYgY29tbXVuaWNhdGlvbi5cXG4rLyogT24gSHlwZXItViB0aGUgUEYvVkYgY29tbXVuaWNhdGlvbiBpcyB0aHJvdWdoIGVtdWxhdGVkIFBDSSBjb25maWdcXG4rICogc3BhY2UuIFRoZSByZXNldCBhbmQgbGluayBzdGF0dXMgYXJlIGV4cG9zZWQgYXQgdGhlIG9mZnNldHMgYmVsb3cuXFxuICAqL1xcbi0jZGVmaW5lIElYR0JFX0hWX1JFU0VUX09GRlNFVCAgICAgICAgICAgMHgyMDFcXG4rI2RlZmluZSBJWEdCRV9IVl9SRVNFVF9PRkZTRVRcXHRcXHQweDIwMVxcbisjZGVmaW5lIElYR0JFX0hWX0xJTktfU1RBVFVTX09GRlNFVFxcdDB4MjA5XFxuKyNkZWZpbmUgSVhHQkVfSFZfTElOS19TVEFUVVNfU0laRVxcdDRcXG4gXFxuIHN0YXRpYyBpbmxpbmUgczMyIGl4Z2JldmZfd3JpdGVfbXNnX3JlYWRfYWNrKHN0cnVjdCBpeGdiZV9odyAqaHcsIHUzMiAqbXNnLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgIHUzMiAqcmV0bXNnLCB1MTYgc2l6ZSlcXG5AQCAtOTAxLDYgKzkwNCw0MCBAQCBzdGF0aWMgczMyIGl4Z2JldmZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodyxcXG4gXFx0cmV0dXJuIHJldF92YWw7XFxuIH1cXG4gXFxuKy8qKlxcbisgKiBpeGdiZXZmX2h2X3JlYWRfbGlua3NfZTYxMCAtIHJlYWQgbGluayBzdGF0dXMgZnJvbSBQQ0kgY29uZmlnIHNwYWNlXFxuKyAqIEBodzogcG9pbnRlciB0byBoYXJkd2FyZSBzdHJ1Y3R1cmVcXG4rICogQGxpbmtzX3JlZzogcG9pbnRlciB0byBzdG9yZSByZWFkIHZhbHVlXFxuKyAqXFxuKyAqIE9uIEh5cGVyLVYgRTYxMCBWRnMgdGhlIFZGTElOS1MgcmVnaXN0ZXIgZG9lcyBub3QgY2FycnkgdmFsaWQgbGluayBzcGVlZC5cXG4rICogSW5zdGVhZCwgbGluayBzdGF0dXMgaXMgZXhwb3NlZCB0aHJvdWdoIGVtdWxhdGVkIFBDSSBjb25maWcgc3BhY2UgYXQgb2Zmc2V0XFxuKyAqIDB4MjA5IGluIFZGTElOS1MgcmVnaXN0ZXIgZm9ybWF0LlxcbisgKlxcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLlxcbisgKi9cXG4rc3RhdGljIHMzMiBpeGdiZXZmX2h2X3JlYWRfbGlua3NfZTYxMChzdHJ1Y3QgaXhnYmVfaHcgKmh3LCB1MzIgKmxpbmtzX3JlZylcXG4re1xcbitcXHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gaHctXFx1MDAzZWJhY2s7XFxuK1xcdHU4IGRhdGFbSVhHQkVfSFZfTElOS19TVEFUVVNfU0laRV07XFxuK1xcbitcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1BDSV9NTUNPTkZJRykpIHtcXG4rXFx0XFx0ZGV2X2Vycl9vbmNlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdCAgICAgXFxcImNhbm5vdCByZWFkIGxpbmsgc3RhdHVzLCBQQ0lfTU1DT05GSUcgaXMgcmVxdWlyZWQgZm9yIEh5cGVyLVZcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdH1cXG4rXFxuK1xcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgSVhHQkVfSFZfTElOS19TVEFUVVNfU0laRTsgaSsrKSB7XFxuK1xcdFxcdGludCByZXQgPSBwY2lfcmVhZF9jb25maWdfYnl0ZShhZGFwdGVyLVxcdTAwM2VwZGV2LFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAgSVhHQkVfSFZfTElOS19TVEFUVVNfT0ZGU0VUICsgaSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZkYXRhW2ldKTtcXG4rXFx0XFx0aWYgKHJldClcXG4rXFx0XFx0XFx0cmV0dXJuIHBjaWJpb3NfZXJyX3RvX2Vycm5vKHJldCk7XFxuK1xcdH1cXG4rXFxuK1xcdCpsaW5rc19yZWcgPSBnZXRfdW5hbGlnbmVkX2xlMzIoZGF0YSk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiAvKipcXG4gICogaXhnYmV2Zl9odl9jaGVja19tYWNfbGlua192ZiAtIGNoZWNrIGxpbmtcXG4gICogQGh3OiBwb2ludGVyIHRvIHByaXZhdGUgaGFyZHdhcmUgc3RydWN0XFxuQEAgLTkwOSw2ICs5NDYsNyBAQCBzdGF0aWMgczMyIGl4Z2JldmZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodyxcXG4gICogQGF1dG9uZWdfd2FpdF90b19jb21wbGV0ZTogdW51c2VkXFxuICAqXFxuICAqIEh5cGVyLVYgdmFyaWFudDsgdGhlcmUgaXMgbm8gbWFpbGJveCBjb21tdW5pY2F0aW9uLlxcbisgKiBGb3IgRTYxMCBWRnMsIGxpbmsgc3RhdHVzIGlzIHJlYWQgZnJvbSBlbXVsYXRlZCBQQ0kgY29uZmlnIHNwYWNlLlxcbiAgKi9cXG4gc3RhdGljIHMzMiBpeGdiZXZmX2h2X2NoZWNrX21hY19saW5rX3ZmKHN0cnVjdCBpeGdiZV9odyAqaHcsXFxuIFxcdFxcdFxcdFxcdFxcdGl4Z2JlX2xpbmtfc3BlZWQgKnNwZWVkLFxcbkBAIC05MjYsOCArOTY0LDE2IEBAIHN0YXRpYyBzMzIgaXhnYmV2Zl9odl9jaGVja19tYWNfbGlua192ZihzdHJ1Y3QgaXhnYmVfaHcgKmh3LFxcbiBcXHRpZiAoIW1hYy1cXHUwMDNlZ2V0X2xpbmtfc3RhdHVzKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuLVxcdC8qIGlmIGxpbmsgc3RhdHVzIGlzIGRvd24gbm8gcG9pbnQgaW4gY2hlY2tpbmcgdG8gc2VlIGlmIHBmIGlzIHVwICovXFxuLVxcdGxpbmtzX3JlZyA9IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9WRkxJTktTKTtcXG4rXFx0aWYgKG1hYy1cXHUwMDNldHlwZSA9PSBpeGdiZV9tYWNfZTYxMF92Zikge1xcbitcXHRcXHRpZiAoaXhnYmV2Zl9odl9yZWFkX2xpbmtzX2U2MTAoaHcsIFxcdTAwMjZsaW5rc19yZWcpKSB7XFxuK1xcdFxcdFxcdCpsaW5rX3VwID0gZmFsc2U7XFxuK1xcdFxcdFxcdCpzcGVlZCA9IElYR0JFX0xJTktfU1BFRURfVU5LTk9XTjtcXG4rXFx0XFx0XFx0cmV0dXJuIDA7XFxuK1xcdFxcdH1cXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0bGlua3NfcmVnID0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX1ZGTElOS1MpO1xcbitcXHR9XFxuK1xcbiBcXHRpZiAoIShsaW5rc19yZWcgXFx1MDAyNiBJWEdCRV9MSU5LU19VUCkpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG5AQCAtOTQxLDggKzk4NywxMSBAQCBzdGF0aWMgczMyIGl4Z2JldmZfaHZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodyxcXG4gXFx0XFx0XFx0dWRlbGF5KDEwMCk7XFxuIFxcdFxcdFxcdGxpbmtzX3JlZyA9IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9WRkxJTktTKTtcXG4gXFxuLVxcdFxcdFxcdGlmICghKGxpbmtzX3JlZyBcXHUwMDI2IElYR0JFX0xJTktTX1VQKSlcXG4tXFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdFxcdGlmICghKGxpbmtzX3JlZyBcXHUwMDI2IElYR0JFX0xJTktTX1VQKSkge1xcbitcXHRcXHRcXHRcXHQqbGlua191cCA9IGZhbHNlO1xcbitcXHRcXHRcXHRcXHQqc3BlZWQgPSBJWEdCRV9MSU5LX1NQRUVEX1VOS05PV047XFxuK1xcdFxcdFxcdFxcdHJldHVybiAwO1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG5AQCAtOTU2LDYgKzEwMDUsOSBAQCBzdGF0aWMgczMyIGl4Z2JldmZfaHZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodyxcXG4gXFx0Y2FzZSBJWEdCRV9MSU5LU19TUEVFRF8xMDBfODI1OTk6XFxuIFxcdFxcdCpzcGVlZCA9IElYR0JFX0xJTktfU1BFRURfMTAwX0ZVTEw7XFxuIFxcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHQqc3BlZWQgPSBJWEdCRV9MSU5LX1NQRUVEX1VOS05PV047XFxuK1xcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIFxcbiBcXHQvKiBpZiB3ZSBwYXNzZWQgYWxsIHRoZSB0ZXN0cyBhYm92ZSB0aGVuIHRoZSBsaW5rIGlzIHVwIGFuZCB3ZSBub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNToyNDozMC4xOTIzNzA0M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjYyMDQxMDAwMTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaXhnYmV2ZiBkcml2ZXIgdG8gc3VwcG9ydCByZWFkaW5nIGxpbmsgc3BlZWQgZnJvbSBQQ0kgY29uZmlnIHNwYWNlIHNwZWNpZmljYWxseSBmb3IgSW50ZWwgRTYxMCBWaXJ0dWFsIEZ1bmN0aW9ucyBvbiBIeXBlci1WIChJWEdCRV9TVUJERVZfSURfRTYxMF9WRl9IVikuIFRoaXMgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKEludGVsIEU2MTAgTklDKSBwYXNzZWQgdGhyb3VnaCB2aWEgSHlwZXItViwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyN2E1NzU4YzhmNTMyYzg0OGMzZWYwZmNmMDJkODM2NDA0NDM2YTRiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMjYgMTU6MjQ6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jXG5pbmRleCA1MzdhNjBkNTI3NmYwLi41ZDBmYjRmNGQ5YTMzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jXG5AQCAtODMsNiArODMsMTggQEAgc3RhdGljIGludCBpeGdiZXZmX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbiB7XG4gXHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbitcdHN0cnVjdCBpeGdiZV9odyAqaHcgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZWh3O1xuK1xuK1x0LyogSHlwZXItViBFNjEwIFZGczogcmVhZCBjdXJyZW50IGxpbmsgc3BlZWQgZnJvbSBQQ0kgY29uZmlnIHNwYWNlXG4rXHQgKiBvbiBldmVyeSBsaW5rIHNwZWVkIHF1ZXJ5LlxuK1x0ICovXG4rXHRpZiAoYWRhcHRlci1cdTAwM2VwZGV2LVx1MDAzZXN1YnN5c3RlbV9kZXZpY2UgPT0gSVhHQkVfU1VCREVWX0lEX0U2MTBfVkZfSFYpIHtcbitcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFkYXB0ZXItXHUwMDNlbWJ4X2xvY2spO1xuK1x0XHRody1cdTAwM2VtYWMuZ2V0X2xpbmtfc3RhdHVzID0gdHJ1ZTtcbitcdFx0aHctXHUwMDNlbWFjLm9wcy5jaGVja19saW5rKGh3LCBcdTAwMjZhZGFwdGVyLVx1MDAzZWxpbmtfc3BlZWQsXG4rXHRcdFx0XHQgICAgICAgXHUwMDI2YWRhcHRlci1cdTAwM2VsaW5rX3VwLCBmYWxzZSk7XG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFkYXB0ZXItXHUwMDNlbWJ4X2xvY2spO1xuK1x0fVxuIFxuIFx0ZXRodG9vbF9saW5rX2tzZXR0aW5nc196ZXJvX2xpbmtfbW9kZShjbWQsIHN1cHBvcnRlZCk7XG4gXHRldGh0b29sX2xpbmtfa3NldHRpbmdzX2FkZF9saW5rX21vZGUoY21kLCBzdXBwb3J0ZWQsIDEwMDAwYmFzZVRfRnVsbCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jXG5pbmRleCBmNmRmODZkMTI0YjllLi5hODRiNjI2NDFlOWJjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL3ZmLmNcbkBAIC0xLDE0ICsxLDE3IEBAXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAvKiBDb3B5cmlnaHQoYykgMTk5OSAtIDIwMjQgSW50ZWwgQ29ycG9yYXRpb24uICovXG4gXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbitcbiAjaW5jbHVkZSBcInZmLmhcIlxuICNpbmNsdWRlIFwiaXhnYmV2Zi5oXCJcbiBcbi0vKiBPbiBIeXBlci1WLCB0byByZXNldCwgd2UgbmVlZCB0byByZWFkIGZyb20gdGhpcyBvZmZzZXRcbi0gKiBmcm9tIHRoZSBQQ0kgY29uZmlnIHNwYWNlLiBUaGlzIGlzIHRoZSBtZWNoYW5pc20gdXNlZCBvblxuLSAqIEh5cGVyLVYgdG8gc3VwcG9ydCBQRi9WRiBjb21tdW5pY2F0aW9uLlxuKy8qIE9uIEh5cGVyLVYgdGhlIFBGL1ZGIGNvbW11bmljYXRpb24gaXMgdGhyb3VnaCBlbXVsYXRlZCBQQ0kgY29uZmlnXG4rICogc3BhY2UuIFRoZSByZXNldCBhbmQgbGluayBzdGF0dXMgYXJlIGV4cG9zZWQgYXQgdGhlIG9mZnNldHMgYmVsb3cuXG4gICovXG4tI2RlZmluZSBJWEdCRV9IVl9SRVNFVF9PRkZTRVQgICAgICAgICAgIDB4MjAxXG4rI2RlZmluZSBJWEdCRV9IVl9SRVNFVF9PRkZTRVRcdFx0MHgyMDFcbisjZGVmaW5lIElYR0JFX0hWX0xJTktfU1RBVFVTX09GRlNFVFx0MHgyMDlcbisjZGVmaW5lIElYR0JFX0hWX0xJTktfU1RBVFVTX1NJWkVcdDRcbiBcbiBzdGF0aWMgaW5saW5lIHMzMiBpeGdiZXZmX3dyaXRlX21zZ19yZWFkX2FjayhzdHJ1Y3QgaXhnYmVfaHcgKmh3LCB1MzIgKm1zZyxcbiBcdFx0XHRcdFx0ICAgICB1MzIgKnJldG1zZywgdTE2IHNpemUpXG5AQCAtOTAxLDYgKzkwNCw0MCBAQCBzdGF0aWMgczMyIGl4Z2JldmZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodyxcbiBcdHJldHVybiByZXRfdmFsO1xuIH1cbiBcbisvKipcbisgKiBpeGdiZXZmX2h2X3JlYWRfbGlua3NfZTYxMCAtIHJlYWQgbGluayBzdGF0dXMgZnJvbSBQQ0kgY29uZmlnIHNwYWNlXG4rICogQGh3OiBwb2ludGVyIHRvIGhhcmR3YXJlIHN0cnVjdHVyZVxuKyAqIEBsaW5rc19yZWc6IHBvaW50ZXIgdG8gc3RvcmUgcmVhZCB2YWx1ZVxuKyAqXG4rICogT24gSHlwZXItViBFNjEwIFZGcyB0aGUgVkZMSU5LUyByZWdpc3RlciBkb2VzIG5vdCBjYXJyeSB2YWxpZCBsaW5rIHNwZWVkLlxuKyAqIEluc3RlYWQsIGxpbmsgc3RhdHVzIGlzIGV4cG9zZWQgdGhyb3VnaCBlbXVsYXRlZCBQQ0kgY29uZmlnIHNwYWNlIGF0IG9mZnNldFxuKyAqIDB4MjA5IGluIFZGTElOS1MgcmVnaXN0ZXIgZm9ybWF0LlxuKyAqXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS5cbisgKi9cbitzdGF0aWMgczMyIGl4Z2JldmZfaHZfcmVhZF9saW5rc19lNjEwKHN0cnVjdCBpeGdiZV9odyAqaHcsIHUzMiAqbGlua3NfcmVnKVxuK3tcbitcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBody1cdTAwM2ViYWNrO1xuK1x0dTggZGF0YVtJWEdCRV9IVl9MSU5LX1NUQVRVU19TSVpFXTtcbitcbitcdGlmICghSVNfRU5BQkxFRChDT05GSUdfUENJX01NQ09ORklHKSkge1xuK1x0XHRkZXZfZXJyX29uY2UoXHUwMDI2YWRhcHRlci1cdTAwM2VwZGV2LVx1MDAzZWRldixcbitcdFx0XHQgICAgIFwiY2Fubm90IHJlYWQgbGluayBzdGF0dXMsIFBDSV9NTUNPTkZJRyBpcyByZXF1aXJlZCBmb3IgSHlwZXItVlxcblwiKTtcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0fVxuK1xuK1x0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIElYR0JFX0hWX0xJTktfU1RBVFVTX1NJWkU7IGkrKykge1xuK1x0XHRpbnQgcmV0ID0gcGNpX3JlYWRfY29uZmlnX2J5dGUoYWRhcHRlci1cdTAwM2VwZGV2LFxuK1x0XHRcdFx0XHQgICAgICAgSVhHQkVfSFZfTElOS19TVEFUVVNfT0ZGU0VUICsgaSxcbitcdFx0XHRcdFx0ICAgICAgIFx1MDAyNmRhdGFbaV0pO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdHJldHVybiBwY2liaW9zX2Vycl90b19lcnJubyhyZXQpO1xuK1x0fVxuK1xuK1x0KmxpbmtzX3JlZyA9IGdldF91bmFsaWduZWRfbGUzMihkYXRhKTtcbitcdHJldHVybiAwO1xuK31cbitcbiAvKipcbiAgKiBpeGdiZXZmX2h2X2NoZWNrX21hY19saW5rX3ZmIC0gY2hlY2sgbGlua1xuICAqIEBodzogcG9pbnRlciB0byBwcml2YXRlIGhhcmR3YXJlIHN0cnVjdFxuQEAgLTkwOSw2ICs5NDYsNyBAQCBzdGF0aWMgczMyIGl4Z2JldmZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodyxcbiAgKiBAYXV0b25lZ193YWl0X3RvX2NvbXBsZXRlOiB1bnVzZWRcbiAgKlxuICAqIEh5cGVyLVYgdmFyaWFudDsgdGhlcmUgaXMgbm8gbWFpbGJveCBjb21tdW5pY2F0aW9uLlxuKyAqIEZvciBFNjEwIFZGcywgbGluayBzdGF0dXMgaXMgcmVhZCBmcm9tIGVtdWxhdGVkIFBDSSBjb25maWcgc3BhY2UuXG4gICovXG4gc3RhdGljIHMzMiBpeGdiZXZmX2h2X2NoZWNrX21hY19saW5rX3ZmKHN0cnVjdCBpeGdiZV9odyAqaHcsXG4gXHRcdFx0XHRcdGl4Z2JlX2xpbmtfc3BlZWQgKnNwZWVkLFxuQEAgLTkyNiw4ICs5NjQsMTYgQEAgc3RhdGljIHMzMiBpeGdiZXZmX2h2X2NoZWNrX21hY19saW5rX3ZmKHN0cnVjdCBpeGdiZV9odyAqaHcsXG4gXHRpZiAoIW1hYy1cdTAwM2VnZXRfbGlua19zdGF0dXMpXG4gXHRcdGdvdG8gb3V0O1xuIFxuLVx0LyogaWYgbGluayBzdGF0dXMgaXMgZG93biBubyBwb2ludCBpbiBjaGVja2luZyB0byBzZWUgaWYgcGYgaXMgdXAgKi9cbi1cdGxpbmtzX3JlZyA9IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9WRkxJTktTKTtcbitcdGlmIChtYWMtXHUwMDNldHlwZSA9PSBpeGdiZV9tYWNfZTYxMF92Zikge1xuK1x0XHRpZiAoaXhnYmV2Zl9odl9yZWFkX2xpbmtzX2U2MTAoaHcsIFx1MDAyNmxpbmtzX3JlZykpIHtcbitcdFx0XHQqbGlua191cCA9IGZhbHNlO1xuK1x0XHRcdCpzcGVlZCA9IElYR0JFX0xJTktfU1BFRURfVU5LTk9XTjtcbitcdFx0XHRyZXR1cm4gMDtcbitcdFx0fVxuK1x0fSBlbHNlIHtcbitcdFx0bGlua3NfcmVnID0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX1ZGTElOS1MpO1xuK1x0fVxuK1xuIFx0aWYgKCEobGlua3NfcmVnIFx1MDAyNiBJWEdCRV9MSU5LU19VUCkpXG4gXHRcdGdvdG8gb3V0O1xuIFxuQEAgLTk0MSw4ICs5ODcsMTEgQEAgc3RhdGljIHMzMiBpeGdiZXZmX2h2X2NoZWNrX21hY19saW5rX3ZmKHN0cnVjdCBpeGdiZV9odyAqaHcsXG4gXHRcdFx0dWRlbGF5KDEwMCk7XG4gXHRcdFx0bGlua3NfcmVnID0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX1ZGTElOS1MpO1xuIFxuLVx0XHRcdGlmICghKGxpbmtzX3JlZyBcdTAwMjYgSVhHQkVfTElOS1NfVVApKVxuLVx0XHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0aWYgKCEobGlua3NfcmVnIFx1MDAyNiBJWEdCRV9MSU5LU19VUCkpIHtcbitcdFx0XHRcdCpsaW5rX3VwID0gZmFsc2U7XG4rXHRcdFx0XHQqc3BlZWQgPSBJWEdCRV9MSU5LX1NQRUVEX1VOS05PV047XG4rXHRcdFx0XHRyZXR1cm4gMDtcbitcdFx0XHR9XG4gXHRcdH1cbiBcdH1cbiBcbkBAIC05NTYsNiArMTAwNSw5IEBAIHN0YXRpYyBzMzIgaXhnYmV2Zl9odl9jaGVja19tYWNfbGlua192ZihzdHJ1Y3QgaXhnYmVfaHcgKmh3LFxuIFx0Y2FzZSBJWEdCRV9MSU5LU19TUEVFRF8xMDBfODI1OTk6XG4gXHRcdCpzcGVlZCA9IElYR0JFX0xJTktfU1BFRURfMTAwX0ZVTEw7XG4gXHRcdGJyZWFrO1xuK1x0ZGVmYXVsdDpcbitcdFx0KnNwZWVkID0gSVhHQkVfTElOS19TUEVFRF9VTktOT1dOO1xuK1x0XHRicmVhaztcbiBcdH1cbiBcbiBcdC8qIGlmIHdlIHBhc3NlZCBhbGwgdGhlIHRlc3RzIGFib3ZlIHRoZW4gdGhlIGxpbmsgaXMgdXAgYW5kIHdlIG5vXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNToyNDozMC4xOTIzNzIyM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMjU5ODk5MTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaXhnYmV2ZiBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IGltcHJvdmluZyB0aGUgYGl4Z2JldmZgIGRyaXZlciDigJMgdGhlIEludGVsIDEwIEdpZ2FiaXQgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXIuIEl0J3Mgc3BlY2lmaWNhbGx5IGFib3V0IGFkZGluZyB0aGUgYWJpbGl0eSB0byByZWFkIGxpbmsgc3BlZWQgaW5mb3JtYXRpb24gZnJvbSB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2Ugd2hlbiBpdCdzIHJ1bm5pbmcgb24gYSBIeXBlci1WIEU2MTAgVkYuIFRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgYXJlIGluIGBldGh0b29sLmNgIGFuZCBgdmYuY2AsIHdoaWNoIG1ha2VzIHNlbnNlLiBUaGV5J3ZlIHVwZGF0ZWQgYGl4Z2JldmZfZ2V0X2xpbmtfa3NldHRpbmdzYCB0byBncmFiIGxpbmsgc3BlZWQgZXZlcnkgdGltZSBpdCdzIHF1ZXJpZWQsIGJ1dCBvbmx5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBgSVhHQkVfU1VCREVWX0lEX0U2MTBfVkZfSFZgIHN1YmRldmljZS4gVGhleSd2ZSBhbHNvIGFkZGVkIGEgbmV3IGZ1bmN0aW9uLCBgaXhnYmV2Zl9odl9yZWFkX2xpbmtzX2U2MTBgLCB0byBoYW5kbGUgcmVhZGluZyB0aGUgbGluayBzdGF0dXMgZnJvbSBQQ0kgY29uZmlnIHNwYWNlLiBBbmQsIG9mIGNvdXJzZSwgdGhleSd2ZSBtb2RpZmllZCBgaXhnYmV2Zl9odl9jaGVja19tYWNfbGlua192ZmAgdG8gdXRpbGl6ZSB0aGF0IG5ldyBmdW5jdGlvbiBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgaXhnYmVfbWFjX2U2MTBfdmZgIGRldmljZS5cblxuTm93LCBteSBtaW5kIGlzIHJhY2luZy4gYGl4Z2JldmZgIGlzIGEgZHJpdmVyIGZvciBhICpwaHlzaWNhbCogbmV0d29yayBjYXJkIChJbnRlbCAxMEdiRSBWRiksIHJpZ2h0PyBUaGVzZSBWRnMgYXJlIHR5cGljYWxseSBwYXNzZWQgdGhyb3VnaCB0byB2aXJ0dWFsIG1hY2hpbmVzLiBCdXQgdGhlIGRyaXZlciBsaXZlcyBvbiB0aGUgaG9zdCBhbmQgaW4gdGhlIGd1ZXN0LCBzbyBpcyB0aGlzIGRyaXZlciBldmVuICpyZWFjaGFibGUqIGluIGEgZnVsbHkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT9cblxuVHlwaWNhbGx5LCBWRiBkcml2ZXJzIGFyZSB1c2VkIHdpdGhpbiBWTXMgd2hlbiBTUi1JT1YgaXMgaW4gcGxheS4gQnV0LCBJIGRvbid0IHJlY2FsbCBRRU1VIGVtdWxhdGluZyBgaXhnYmV2ZmAgYnkgZGVmYXVsdC4gUUVNVSBoYW5kbGVzIGBlMTAwMGVgLCBgaWdiYCwgYW5kIGBlMTAwMGAsIGJ1dC4uLmRvZXMgaXQgaGF2ZSBhbiBlbXVsYXRpb24gZm9yIGBpeGdiZWAgb3IgYGl4Z2JldmZgPyBJIG5lZWQgdG8gY2hlY2sgdGhlIFFFTVUgc291cmNlIHRvIGJlIHN1cmUuIEknbSBzZWVpbmcgYGh3L25ldC9pZ2IuY2AsIGBody9uZXQvZTEwMDBlLmNgLCBgaHcvbmV0L2UxMDAwLmNgIGluIFFFTVUsIGJ1dCBub3QgYGl4Z2JlKmAuXG5cbk5vLiBRRU1VIGRvZXNuJ3QgZGlyZWN0bHkgZW11bGF0ZSBgaXhnYmVgLiBJdCBzdXBwb3J0cyBgZTEwMDBlYCwgYGlnYmAsIGB2bXhuZXQzYCwgYHZpcnRpby1uZXRgLCBgcnRsODEzOWAsIGBwY25ldGAsIGBuZTJrX3BjaWAsIGBlZXBybzEwMGAsIGB0dWxpcGAsIGJ1dCBub3QgYGl4Z2JlYC5cblxuU28sIGRvZXMgUUVNVSBoYXZlICphbnkqIGBpeGdiZWAgZW11bGF0aW9uPyBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBRRU1VIHNvdXJjZSBjb2RlLCBvciBtYXliZSBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgZm9yIGZ1enppbmcgZWZmb3J0cyByZWxhdGVkIHRvIGBpeGdiZXZmYC5cblxuV2FpdCwgdGhpcyBicmluZ3MgdXAgYW5vdGhlciBwb2ludC4gU3l6a2FsbGVyIGRvZXNuJ3QgZnV6eiBgaXhnYmV2ZmAgKnVubGVzcyogdGhlIGRldmljZSBpcyBlbXVsYXRlZCwgb3Igd2UgaGF2ZSBhIHZpcnR1YWwgZGV2aWNlIHByZXNlbnRlZCB0byBpdC4gU3l6a2FsbGVyIHN1cHBvcnRzIHZhcmlvdXMgZGV2aWNlIGRyaXZlcnMsIHN1Y2ggYXMgYHN5ei1tYWM4MDIxMWAgYW5kIGBzeXotdXNiYC4gQnV0IGZvciBQQ0kgZGV2aWNlcywgaXQgaGVhdmlseSByZWxpZXMgb24gdGhlIFFFTVUgZW11bGF0aW9uIGxheWVyLiBEb2VzIHN5emthbGxlciBhY3R1YWxseSAqc3VwcG9ydCogYGl4Z2JldmZgIGFuZCBoYXZlIGNvdmVyYWdlIGZvciBpdD8gSSdsbCBuZWVkIHRvIGRvIGEgc2VhcmNoIHRvIG1ha2Ugc3VyZS4gVGhpcyBjb3VsZCBpbmZsdWVuY2UgdGhlIGNyaXRpY2FsaXR5IG9mIHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NTQsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNToyNDo0My40NTIyNzgzMjFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkxODg3NzY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpeGdiZXZmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDM0ODcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vLnJlbmFtZXMudHh0PTgxNz1uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2ludGVsL2l4Z2JlIG5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW50ZWwvaXhnYmVcXG5Eb2N1bWVudGF0aW9uLy5yZW5hbWVzLnR4dDo4MTg6bmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9pbnRlbC9peGdiZXZmIG5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW50ZWwvaXhnYmV2ZlxcbkRvY3VtZW50YXRpb24vLnJlbmFtZXMudHh0LTgxOS1uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL21hcnZlbGwvb2N0ZW9udHgyIG5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDJcXG4tLVxcbkRvY3VtZW50YXRpb24vLnJlbmFtZXMudHh0PTg0Mz1uZXR3b3JraW5nL2l4Z2JlIG5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW50ZWwvaXhnYmVcXG5Eb2N1bWVudGF0aW9uLy5yZW5hbWVzLnR4dDo4NDQ6bmV0d29ya2luZy9peGdiZXZmIG5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW50ZWwvaXhnYmV2ZlxcbkRvY3VtZW50YXRpb24vLnJlbmFtZXMudHh0LTg0NS1uZXR3b3JraW5nL25ldGRldi1GQVEgcHJvY2Vzcy9tYWludGFpbmVyLW5ldGRldlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2luZGV4LnJzdD04PUNvbnRlbnRzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2luZGV4LnJzdC0zOS0gICBpbnRlbC9peGdiZVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9pbmRleC5yc3Q6NDA6ICAgaW50ZWwvaXhnYmV2ZlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9pbmRleC5yc3QtNDEtICAgaW50ZWwvaTQwZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yMDM9Y29uZmlnIElYR0JFVkZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjEzLVxcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyMTQ6XFx0ICBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi5yc3RcXHUwMDNlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjE2LVxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjE3OlxcdCAgd2lsbCBiZSBjYWxsZWQgaXhnYmV2Zi4gIE1TSS1YIGludGVycnVwdCBzdXBwb3J0IGlzIHJlcXVpcmVkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMTgtXFx0ICBmb3IgdGhpcyBkcml2ZXIgdG8gd29yayBjb3JyZWN0bHkuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIyMD1jb25maWcgSVhHQkVWRl9JUFNFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMjYtXFx0aGVscFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjI3OlxcdCAgRW5hYmxlIHN1cHBvcnQgZm9yIElQU2VjIG9mZmxvYWQgaW4gaXhnYmV2Zi5rb1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjI4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvTWFrZWZpbGU9MTU9b2JqLSQoQ09ORklHX0lYR0JFKSArPSBpeGdiZS9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfSVhHQkVWRikgKz0gaXhnYmV2Zi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9NYWtlZmlsZS0xNy1vYmotJChDT05GSUdfSTQwRSkgKz0gaTQwZS9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlLmg9MjEyPXN0cnVjdCB2Zl9kYXRhX3N0b3JhZ2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaC0yMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaDoyMzU6ZW51bSBpeGdiZXZmX3hjYXN0X21vZGVzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oLTIzNi1cXHRJWEdCRVZGX1hDQVNUX01PREVfTk9ORSA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL01ha2VmaWxlLTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19JWEdCRVZGKSArPSBpeGdiZXZmLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL01ha2VmaWxlLTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9NYWtlZmlsZTo5Oml4Z2JldmYteSA6PSB2Zi5vIG1ieC5vIGV0aHRvb2wubyBpeGdiZXZmX21haW4ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvTWFrZWZpbGU6MTA6aXhnYmV2Zi0kKENPTkZJR19JWEdCRVZGX0lQU0VDKSArPSBpcHNlYy5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjQ6LyogZXRodG9vbCBzdXBwb3J0IGZvciBpeGdiZXZmICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjE4OiNpbmNsdWRlIFxcXCJpeGdiZXZmLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYz0yMj1zdHJ1Y3QgaXhnYmVfc3RhdHMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzEtXFx0LnR5cGUgPSBJWEdCRVZGX1NUQVRTLCBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MzI6XFx0LnNpemVvZl9zdGF0ID0gc2l6ZW9mX2ZpZWxkKHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIsIF9zdGF0KSwgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjMzOlxcdC5zdGF0X29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIsIF9zdGF0KSBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDM6c3RhdGljIHN0cnVjdCBpeGdiZV9zdGF0cyBpeGdiZXZmX2dzdHJpbmdzX3N0YXRzW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDQtXFx0SVhHQkVWRl9ORVRERVZfU1RBVChyeF9wYWNrZXRzKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTYwLSNkZWZpbmUgSVhHQkVWRl9RVUVVRV9TVEFUU19MRU4gKCBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NjE6XFx0KCgoc3RydWN0IGl4Z2JldmZfYWRhcHRlciAqKW5ldGRldl9wcml2KG5ldGRldikpLVxcdTAwM2VudW1fdHhfcXVldWVzICsgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjYyOlxcdCAoKHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKiluZXRkZXZfcHJpdihuZXRkZXYpKS1cXHUwMDNlbnVtX3hkcF9xdWV1ZXMgKyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NjM6XFx0ICgoc3RydWN0IGl4Z2JldmZfYWRhcHRlciAqKW5ldGRldl9wcml2KG5ldGRldikpLVxcdTAwM2VudW1fcnhfcXVldWVzKSAqIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo2NDpcXHQgKHNpemVvZihzdHJ1Y3QgaXhnYmV2Zl9zdGF0cykgLyBzaXplb2YodTY0KSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NjU6I2RlZmluZSBJWEdCRVZGX0dMT0JBTF9TVEFUU19MRU4gQVJSQVlfU0laRShpeGdiZXZmX2dzdHJpbmdzX3N0YXRzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTY2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM9Njg9c3RhdGljIGNvbnN0IGNoYXIgaXhnYmVfZ3N0cmluZ3NfdGVzdFtdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo3NTpzdGF0aWMgY29uc3QgY2hhciBpeGdiZXZmX3ByaXZfZmxhZ3Nfc3RyaW5nc1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzYtI2RlZmluZSBJWEdCRVZGX1BSSVZfRkxBR1NfTEVHQUNZX1JYXFx0QklUKDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo4MDojZGVmaW5lIElYR0JFVkZfUFJJVl9GTEFHU19TVFJfTEVOIEFSUkFZX1NJWkUoaXhnYmV2Zl9wcml2X2ZsYWdzX3N0cmluZ3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6ODI6c3RhdGljIGludCBpeGdiZXZmX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTgzLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjg1OlxcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTg2LVxcdHN0cnVjdCBpeGdiZV9odyAqaHcgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTI5OnN0YXRpYyB1MzIgaXhnYmV2Zl9nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xMzAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjEzMTpcXHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xMzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xMzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTM2OnN0YXRpYyB2b2lkIGl4Z2JldmZfc2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHUzMiBkYXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTEzNy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTM4OlxcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTEzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTE0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoxNDM6c3RhdGljIGludCBpeGdiZXZmX2dldF9yZWdzX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTE0NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTQ5OnN0YXRpYyB2b2lkIGl4Z2JldmZfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xNTAtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9yZWdzICpyZWdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTUyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoxNTM6XFx0c3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTU0LVxcdHN0cnVjdCBpeGdiZV9odyAqaHcgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTU1LVxcdHUzMiAqcmVnc19idWZmID0gcDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoxNTY6XFx0dTMyIHJlZ3NfbGVuID0gaXhnYmV2Zl9nZXRfcmVnc19sZW4obmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xNTctXFx0dTggaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIyMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoyMjM6c3RhdGljIHZvaWQgaXhnYmV2Zl9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIyNC1cXHRcXHRcXHRcXHRzdHJ1Y3QgZXRodG9vbF9kcnZpbmZvICpkcnZpbmZvKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIyNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MjI2OlxcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoyMjg6XFx0c3Ryc2NweShkcnZpbmZvLVxcdTAwM2Vkcml2ZXIsIGl4Z2JldmZfZHJpdmVyX25hbWUsIHNpemVvZihkcnZpbmZvLVxcdTAwM2Vkcml2ZXIpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0yMjktXFx0c3Ryc2NweShkcnZpbmZvLVxcdTAwM2VidXNfaW5mbywgcGNpX25hbWUoYWRhcHRlci1cXHUwMDNlcGRldiksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0yMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MjM1OnN0YXRpYyB2b2lkIGl4Z2JldmZfZ2V0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIzNi1cXHRcXHRcXHRcXHQgIHN0cnVjdCBldGh0b29sX3JpbmdwYXJhbSAqcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIzOS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MjQwOlxcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTI0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTI0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoyNDg6c3RhdGljIGludCBpeGdiZXZmX3NldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0yNDktXFx0XFx0XFx0XFx0IHN0cnVjdCBldGh0b29sX3JpbmdwYXJhbSAqcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTI1Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MjUzOlxcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjI1NDpcXHRzdHJ1Y3QgaXhnYmV2Zl9yaW5nICp0eF9yaW5nID0gTlVMTCwgKnJ4X3JpbmcgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTI1NS1cXHR1MzIgbmV3X3J4X2NvdW50LCBuZXdfdHhfY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zMDItXFx0XFx0XFx0dHhfcmluZ1tpXS5jb3VudCA9IG5ld190eF9jb3VudDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzozMDM6XFx0XFx0XFx0ZXJyID0gaXhnYmV2Zl9zZXR1cF90eF9yZXNvdXJjZXMoXFx1MDAyNnR4X3JpbmdbaV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTMwNC1cXHRcXHRcXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zMDYtXFx0XFx0XFx0XFx0XFx0aS0tO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjMwNzpcXHRcXHRcXHRcXHRcXHRpeGdiZXZmX2ZyZWVfdHhfcmVzb3VyY2VzKFxcdTAwMjZ0eF9yaW5nW2ldKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zMDgtXFx0XFx0XFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzIwLVxcdFxcdFxcdHR4X3JpbmdbaV0uY291bnQgPSBuZXdfdHhfY291bnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MzIxOlxcdFxcdFxcdGVyciA9IGl4Z2JldmZfc2V0dXBfdHhfcmVzb3VyY2VzKFxcdTAwMjZ0eF9yaW5nW2ldKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zMjItXFx0XFx0XFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzI0LVxcdFxcdFxcdFxcdFxcdGktLTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzozMjU6XFx0XFx0XFx0XFx0XFx0aXhnYmV2Zl9mcmVlX3R4X3Jlc291cmNlcyhcXHUwMDI2dHhfcmluZ1tpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzI2LVxcdFxcdFxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTM1Mi1cXHRcXHRcXHRyeF9yaW5nW2ldLmNvdW50ID0gbmV3X3J4X2NvdW50O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjM1MzpcXHRcXHRcXHRlcnIgPSBpeGdiZXZmX3NldHVwX3J4X3Jlc291cmNlcyhhZGFwdGVyLCBcXHUwMDI2cnhfcmluZ1tpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzU0LVxcdFxcdFxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTM1Ni1cXHRcXHRcXHRcXHRcXHRpLS07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MzU3OlxcdFxcdFxcdFxcdFxcdGl4Z2JldmZfZnJlZV9yeF9yZXNvdXJjZXMoXFx1MDAyNnJ4X3JpbmdbaV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTM1OC1cXHRcXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zNjgtXFx0LyogYnJpbmcgaW50ZXJmYWNlIGRvd24gdG8gcHJlcGFyZSBmb3IgdXBkYXRlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MzY5OlxcdGl4Z2JldmZfZG93bihhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zNzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zNzMtXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjM3NDpcXHRcXHRcXHRpeGdiZXZmX2ZyZWVfdHhfcmVzb3VyY2VzKGFkYXB0ZXItXFx1MDAzZXR4X3JpbmdbaV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTM3NS1cXHRcXHRcXHQqYWRhcHRlci1cXHUwMDNldHhfcmluZ1tpXSA9IHR4X3JpbmdbaV07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zNzktXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZW51bV94ZHBfcXVldWVzOyBpKyssIGorKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjM4MDpcXHRcXHRcXHRpeGdiZXZmX2ZyZWVfdHhfcmVzb3VyY2VzKGFkYXB0ZXItXFx1MDAzZXhkcF9yaW5nW2pdKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zODEtXFx0XFx0XFx0KmFkYXB0ZXItXFx1MDAzZXhkcF9yaW5nW2pdID0gdHhfcmluZ1tpXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTM5MS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWRhcHRlci1cXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MzkyOlxcdFxcdFxcdGl4Z2JldmZfZnJlZV9yeF9yZXNvdXJjZXMoYWRhcHRlci1cXHUwMDNlcnhfcmluZ1tpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzkzLVxcdFxcdFxcdCphZGFwdGVyLVxcdTAwM2VyeF9yaW5nW2ldID0gcnhfcmluZ1tpXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQwMS1cXHQvKiByZXN0b3JlIGludGVyZmFjZSB1c2luZyBuZXcgdmFsdWVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDAyOlxcdGl4Z2JldmZfdXAoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDAzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDA4LVxcdFxcdCAgICAgaSBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZW51bV90eF9xdWV1ZXMgKyBhZGFwdGVyLVxcdTAwM2VudW1feGRwX3F1ZXVlczsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjQwOTpcXHRcXHRcXHRpeGdiZXZmX2ZyZWVfdHhfcmVzb3VyY2VzKFxcdTAwMjZ0eF9yaW5nW2ldKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00MTAtXFx0XFx0dmZyZWUodHhfcmluZyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDE3OnN0YXRpYyBpbnQgaXhnYmV2Zl9nZXRfc3NldF9jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgc3RyaW5nc2V0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQxOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00MzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDMxOnN0YXRpYyB2b2lkIGl4Z2JldmZfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00MzItXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGV0aHRvb2xfc3RhdHMgKnN0YXRzLCB1NjQgKmRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDMzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo0MzQ6XFx0c3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDM1LVxcdHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCB0ZW1wO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDM3LVxcdHVuc2lnbmVkIGludCBzdGFydDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo0Mzg6XFx0c3RydWN0IGl4Z2JldmZfcmluZyAqcmluZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00MzktXFx0aW50IGksIGo7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDQyOlxcdGl4Z2JldmZfdXBkYXRlX3N0YXRzKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQ0My1cXHRuZXRfc3RhdHMgPSBkZXZfZ2V0X3N0YXRzKG5ldGRldiwgXFx1MDAyNnRlbXApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQ0NC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgSVhHQkVWRl9HTE9CQUxfU1RBVFNfTEVOOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo0NDU6XFx0XFx0c3dpdGNoIChpeGdiZXZmX2dzdHJpbmdzX3N0YXRzW2ldLnR5cGUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00NDYtXFx0XFx0Y2FzZSBORVRERVZfU1RBVFM6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDQ3LVxcdFxcdFxcdHAgPSAoY2hhciAqKW5ldF9zdGF0cyArXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDQ4OlxcdFxcdFxcdFxcdFxcdGl4Z2JldmZfZ3N0cmluZ3Nfc3RhdHNbaV0uc3RhdF9vZmZzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDQ5LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDUxLVxcdFxcdFxcdHAgPSAoY2hhciAqKWFkYXB0ZXIgK1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjQ1MjpcXHRcXHRcXHRcXHRcXHRpeGdiZXZmX2dzdHJpbmdzX3N0YXRzW2ldLnN0YXRfb2Zmc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQ1My1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQ1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo0NTk6XFx0XFx0ZGF0YVtpXSA9IChpeGdiZXZmX2dzdHJpbmdzX3N0YXRzW2ldLnNpemVvZl9zdGF0ID09XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDYwLVxcdFxcdFxcdCAgIHNpemVvZih1NjQpKSA/ICoodTY0ICopcCA6ICoodTMyICopcDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTUxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo1MTU6c3RhdGljIHZvaWQgaXhnYmV2Zl9nZXRfc3RyaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1MzIgc3RyaW5nc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTUxNi1cXHRcXHRcXHRcXHR1OCAqZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy01MTcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjUxODpcXHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy01MTktXFx0Y2hhciAqcCA9IChjaGFyICopZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTUyOC1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgSVhHQkVWRl9HTE9CQUxfU1RBVFNfTEVOOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo1Mjk6XFx0XFx0XFx0bWVtY3B5KHAsIGl4Z2JldmZfZ3N0cmluZ3Nfc3RhdHNbaV0uc3RhdF9zdHJpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNTMwLVxcdFxcdFxcdCAgICAgICBFVEhfR1NUUklOR19MRU4pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNTUzLVxcdGNhc2UgRVRIX1NTX1BSSVZfRkxBR1M6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NTU0OlxcdFxcdG1lbWNweShkYXRhLCBpeGdiZXZmX3ByaXZfZmxhZ3Nfc3RyaW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy01NTUtXFx0XFx0ICAgICAgIElYR0JFVkZfUFJJVl9GTEFHU19TVFJfTEVOICogRVRIX0dTVFJJTkdfTEVOKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTU1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo1NjA6c3RhdGljIGludCBpeGdiZXZmX2xpbmtfdGVzdChzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyLCB1NjQgKmRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNTYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTU3NC0vKiBldGh0b29sIHJlZ2lzdGVyIHRlc3QgZGF0YSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjU3NTpzdHJ1Y3QgaXhnYmV2Zl9yZWdfdGVzdCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNTc2LVxcdHUxNiByZWc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MDAtLyogZGVmYXVsdCBWRiByZWdpc3RlciB0ZXN0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NjAxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXhnYmV2Zl9yZWdfdGVzdCByZWdfdGVzdF92ZltdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTYwMi1cXHR7IElYR0JFX1ZGUkRCQUwoMCksIDIsIFBBVFRFUk5fVEVTVCwgMHhGRkZGRkY4MCwgMHhGRkZGRkY4MCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM9NjE0PXN0YXRpYyBjb25zdCB1MzIgcmVnaXN0ZXJfdGVzdF9wYXR0ZXJuc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNjE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjYxODpzdGF0aWMgYm9vbCByZWdfcGF0dGVybl90ZXN0KHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIsIHU2NCAqZGF0YSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MTktXFx0XFx0XFx0ICAgICBpbnQgcmVnLCB1MzIgbWFzaywgdTMyIHdyaXRlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNjI3LVxcdGZvciAocGF0ID0gMDsgcGF0IFxcdTAwM2MgQVJSQVlfU0laRShyZWdpc3Rlcl90ZXN0X3BhdHRlcm5zKTsgcGF0KyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo2Mjg6XFx0XFx0YmVmb3JlID0gaXhnYmV2Zl9yZWFkX3JlZyhcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHcsIHJlZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNjI5LVxcdFxcdGl4Z2JlX3dyaXRlX3JlZyhcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHcsIHJlZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MzAtXFx0XFx0XFx0XFx0cmVnaXN0ZXJfdGVzdF9wYXR0ZXJuc1twYXRdIFxcdTAwMjYgd3JpdGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjYzMTpcXHRcXHR2YWwgPSBpeGdiZXZmX3JlYWRfcmVnKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodywgcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MzItXFx0XFx0aWYgKHZhbCAhPSAocmVnaXN0ZXJfdGVzdF9wYXR0ZXJuc1twYXRdIFxcdTAwMjYgd3JpdGUgXFx1MDAyNiBtYXNrKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNjQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjY0NjpzdGF0aWMgYm9vbCByZWdfc2V0X2FuZF9jaGVjayhzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyLCB1NjQgKmRhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNjQ3LVxcdFxcdFxcdCAgICAgIGludCByZWcsIHUzMiBtYXNrLCB1MzIgd3JpdGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02NTQtXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjY1NTpcXHRiZWZvcmUgPSBpeGdiZXZmX3JlYWRfcmVnKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodywgcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02NTYtXFx0aXhnYmVfd3JpdGVfcmVnKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodywgcmVnLCB3cml0ZSBcXHUwMDI2IG1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjY1NzpcXHR2YWwgPSBpeGdiZXZmX3JlYWRfcmVnKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodywgcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02NTgtXFx0aWYgKCh3cml0ZSBcXHUwMDI2IG1hc2spICE9ICh2YWwgXFx1MDAyNiBtYXNrKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNjY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjY2OTpzdGF0aWMgaW50IGl4Z2JldmZfcmVnX3Rlc3Qoc3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciwgdTY0ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTY3MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NjcxOlxcdGNvbnN0IHN0cnVjdCBpeGdiZXZmX3JlZ190ZXN0ICp0ZXN0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTY3Mi1cXHR1MzIgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTczNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo3MzY6c3RhdGljIHZvaWQgaXhnYmV2Zl9kaWFnX3Rlc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03MzctXFx0XFx0XFx0ICAgICAgc3RydWN0IGV0aHRvb2xfdGVzdCAqZXRoX3Rlc3QsIHU2NCAqZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03Mzgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjczOTpcXHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03NDAtXFx0Ym9vbCBpZl9ydW5uaW5nID0gbmV0aWZfcnVubmluZyhuZXRkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzU4LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc1OTpcXHRcXHRpZiAoaXhnYmV2Zl9saW5rX3Rlc3QoYWRhcHRlciwgXFx1MDAyNmRhdGFbMV0pKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc2MC1cXHRcXHRcXHRldGhfdGVzdC1cXHUwMDNlZmxhZ3MgfD0gRVRIX1RFU1RfRkxfRkFJTEVEO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzYzLVxcdFxcdFxcdC8qIGluZGljYXRlIHdlJ3JlIGluIHRlc3QgbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc2NDpcXHRcXHRcXHRpeGdiZXZmX2Nsb3NlKG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzY1LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo3NjY6XFx0XFx0XFx0aXhnYmV2Zl9yZXNldChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03NjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzY4LVxcdFxcdGh3X2RiZyhcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHcsIFxcXCJyZWdpc3RlciB0ZXN0aW5nIHN0YXJ0aW5nXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo3Njk6XFx0XFx0aWYgKGl4Z2JldmZfcmVnX3Rlc3QoYWRhcHRlciwgXFx1MDAyNmRhdGFbMF0pKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc3MC1cXHRcXHRcXHRldGhfdGVzdC1cXHUwMDNlZmxhZ3MgfD0gRVRIX1RFU1RfRkxfRkFJTEVEO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo3NzI6XFx0XFx0aXhnYmV2Zl9yZXNldChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03NzMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03NzUtXFx0XFx0aWYgKGlmX3J1bm5pbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6Nzc2OlxcdFxcdFxcdGl4Z2JldmZfb3BlbihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc3Ny1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzc5LVxcdFxcdC8qIE9ubGluZSB0ZXN0cyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc4MDpcXHRcXHRpZiAoaXhnYmV2Zl9saW5rX3Rlc3QoYWRhcHRlciwgXFx1MDAyNmRhdGFbMV0pKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc4MS1cXHRcXHRcXHRldGhfdGVzdC1cXHUwMDNlZmxhZ3MgfD0gRVRIX1RFU1RfRkxfRkFJTEVEO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzkwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc5MTpzdGF0aWMgaW50IGl4Z2JldmZfbndheV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc5Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NzkzOlxcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc5NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03OTUtXFx0aWYgKG5ldGlmX3J1bm5pbmcobmV0ZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo3OTY6XFx0XFx0aXhnYmV2Zl9yZWluaXRfbG9ja2VkKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc5Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTgwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo4MDE6c3RhdGljIGludCBpeGdiZXZmX2dldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTgwMi1cXHRcXHRcXHRcXHRzdHJ1Y3QgZXRodG9vbF9jb2FsZXNjZSAqZWMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy04MDUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjgwNjpcXHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy04MDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy04MjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6ODI3OnN0YXRpYyBpbnQgaXhnYmV2Zl9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy04MjgtXFx0XFx0XFx0XFx0c3RydWN0IGV0aHRvb2xfY29hbGVzY2UgKmVjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODMxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo4MzI6XFx0c3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6ODMzOlxcdHN0cnVjdCBpeGdiZXZmX3FfdmVjdG9yICpxX3ZlY3RvcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy04MzQtXFx0aW50IG51bV92ZWN0b3JzLCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODc1LVxcdFxcdFxcdHFfdmVjdG9yLVxcdTAwM2VpdHIgPSByeF9pdHJfcGFyYW07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6ODc2OlxcdFxcdGl4Z2JldmZfd3JpdGVfZWl0cihxX3ZlY3Rvcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODc3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTg4MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo4ODI6c3RhdGljIHUzMiBpeGdiZXZmX2dldF9yeF9yaW5nX2NvdW50KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODgzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo4ODQ6XFx0c3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODg1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjg4OTpzdGF0aWMgdTMyIGl4Z2JldmZfZ2V0X3J4ZmhfaW5kaXJfc2l6ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTg5MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6ODkxOlxcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTg5Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTg5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo4OTk6c3RhdGljIHUzMiBpeGdiZXZmX2dldF9yeGZoX2tleV9zaXplKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTAwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTkwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5MDQ6c3RhdGljIGludCBpeGdiZXZmX2dldF9yeGZoKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTA1LVxcdFxcdFxcdCAgICBzdHJ1Y3QgZXRodG9vbF9yeGZoX3BhcmFtICpyeGZoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTkwNi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTA3OlxcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTkwOC1cXHRpbnQgZXJyID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTkxNC1cXHRcXHRcXHRtZW1jcHkocnhmaC1cXHUwMDNla2V5LCBhZGFwdGVyLVxcdTAwM2Vyc3Nfa2V5LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjkxNTpcXHRcXHRcXHQgICAgICAgaXhnYmV2Zl9nZXRfcnhmaF9rZXlfc2l6ZShuZXRkZXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy05MTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy05MzEtXFx0XFx0aWYgKHJ4ZmgtXFx1MDAzZWluZGlyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjkzMjpcXHRcXHRcXHRlcnIgPSBpeGdiZXZmX2dldF9yZXRhX2xvY2tlZChcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTMzLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHJ4ZmgtXFx1MDAzZWluZGlyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTM2LVxcdFxcdGlmICghZXJyIFxcdTAwMjZcXHUwMDI2IHJ4ZmgtXFx1MDAzZWtleSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5Mzc6XFx0XFx0XFx0ZXJyID0gaXhnYmV2Zl9nZXRfcnNzX2tleV9sb2NrZWQoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWh3LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTkzOC1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgcnhmaC1cXHUwMDNla2V5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5NDY6c3RhdGljIHUzMiBpeGdiZXZmX2dldF9wcml2X2ZsYWdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTQ3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5NDg6XFx0c3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTQ5LVxcdHUzMiBwcml2X2ZsYWdzID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5NTc6c3RhdGljIGludCBpeGdiZXZmX3NldF9wcml2X2ZsYWdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHUzMiBwcml2X2ZsYWdzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk1OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTU5OlxcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk2MC1cXHR1bnNpZ25lZCBpbnQgZmxhZ3MgPSBhZGFwdGVyLVxcdTAwM2VmbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk3MC1cXHRcXHRpZiAobmV0aWZfcnVubmluZyhuZXRkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk3MTpcXHRcXHRcXHRpeGdiZXZmX3JlaW5pdF9sb2NrZWQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTcyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5Nzc6c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpeGdiZXZmX2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk3OC1cXHQuc3VwcG9ydGVkX2NvYWxlc2NlX3BhcmFtcyA9IEVUSFRPT0xfQ09BTEVTQ0VfVVNFQ1MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTc5OlxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gaXhnYmV2Zl9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5ODA6XFx0LmdldF9yZWdzX2xlblxcdFxcdD0gaXhnYmV2Zl9nZXRfcmVnc19sZW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTgxOlxcdC5nZXRfcmVnc1xcdFxcdD0gaXhnYmV2Zl9nZXRfcmVncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5ODI6XFx0Lm53YXlfcmVzZXRcXHRcXHQ9IGl4Z2JldmZfbndheV9yZXNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy05ODMtXFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk4NDpcXHQuZ2V0X3JpbmdwYXJhbVxcdFxcdD0gaXhnYmV2Zl9nZXRfcmluZ3BhcmFtLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk4NTpcXHQuc2V0X3JpbmdwYXJhbVxcdFxcdD0gaXhnYmV2Zl9zZXRfcmluZ3BhcmFtLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk4NjpcXHQuZ2V0X21zZ2xldmVsXFx0XFx0PSBpeGdiZXZmX2dldF9tc2dsZXZlbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5ODc6XFx0LnNldF9tc2dsZXZlbFxcdFxcdD0gaXhnYmV2Zl9zZXRfbXNnbGV2ZWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTg4OlxcdC5zZWxmX3Rlc3RcXHRcXHQ9IGl4Z2JldmZfZGlhZ190ZXN0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk4OTpcXHQuZ2V0X3NzZXRfY291bnRcXHRcXHQ9IGl4Z2JldmZfZ2V0X3NzZXRfY291bnQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTkwOlxcdC5nZXRfc3RyaW5nc1xcdFxcdD0gaXhnYmV2Zl9nZXRfc3RyaW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5OTE6XFx0LmdldF9ldGh0b29sX3N0YXRzXFx0PSBpeGdiZXZmX2dldF9ldGh0b29sX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk5MjpcXHQuZ2V0X2NvYWxlc2NlXFx0XFx0PSBpeGdiZXZmX2dldF9jb2FsZXNjZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5OTM6XFx0LnNldF9jb2FsZXNjZVxcdFxcdD0gaXhnYmV2Zl9zZXRfY29hbGVzY2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTk0OlxcdC5nZXRfcnhfcmluZ19jb3VudFxcdD0gaXhnYmV2Zl9nZXRfcnhfcmluZ19jb3VudCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5OTU6XFx0LmdldF9yeGZoX2luZGlyX3NpemVcXHQ9IGl4Z2JldmZfZ2V0X3J4ZmhfaW5kaXJfc2l6ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5OTY6XFx0LmdldF9yeGZoX2tleV9zaXplXFx0PSBpeGdiZXZmX2dldF9yeGZoX2tleV9zaXplLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk5NzpcXHQuZ2V0X3J4ZmhcXHRcXHQ9IGl4Z2JldmZfZ2V0X3J4ZmgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTk4OlxcdC5nZXRfbGlua19rc2V0dGluZ3NcXHQ9IGl4Z2JldmZfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk5OTpcXHQuZ2V0X3ByaXZfZmxhZ3NcXHRcXHQ9IGl4Z2JldmZfZ2V0X3ByaXZfZmxhZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTAwMDpcXHQuc2V0X3ByaXZfZmxhZ3NcXHRcXHQ9IGl4Z2JldmZfc2V0X3ByaXZfZmxhZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTAwMS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTEwMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTAwMzp2b2lkIGl4Z2JldmZfc2V0X2V0aHRvb2xfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTAwNC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTAwNTpcXHRuZXRkZXYtXFx1MDAzZWV0aHRvb2xfb3BzID0gXFx1MDAyNml4Z2JldmZfZXRodG9vbF9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTAwNi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6NDojaW5jbHVkZSBcXFwiaXhnYmV2Zi5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy01LSNpbmNsdWRlIFxcdTAwM2NuZXQveGZybS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jPTk9c3RhdGljIGNvbnN0IGNoYXIgYWVzX2djbV9uYW1lW10gPSBcXFwicmZjNDEwNihnY20oYWVzKSlcXFwiO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTExLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzoxMjogKiBpeGdiZXZmX2lwc2VjX3NldF9wZl9zYSAtIGFzayB0aGUgUEYgdG8gc2V0IHVwIGFuIFNBXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTEzLSAqIEBhZGFwdGVyOiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTE3LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTg6c3RhdGljIGludCBpeGdiZXZmX2lwc2VjX3NldF9wZl9zYShzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0xOS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgeGZybV9zdGF0ZSAqeHMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtNDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjQzOlxcdHJldCA9IGl4Z2JldmZfd3JpdGVfbWJ4KGh3LCBtc2didWYsIElYR0JFX1ZGTUFJTEJPWF9TSVpFKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtNDQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy00Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6NDc6XFx0cmV0ID0gaXhnYmV2Zl9wb2xsX21ieChodywgbXNnYnVmLCAyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtNDgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy02MS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6NjI6ICogaXhnYmV2Zl9pcHNlY19kZWxfcGZfc2EgLSBhc2sgdGhlIFBGIHRvIGRlbGV0ZSBhbiBTQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy02My0gKiBAYWRhcHRlcjogYm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy02Ny0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjY4OnN0YXRpYyBpbnQgaXhnYmV2Zl9pcHNlY19kZWxfcGZfc2Eoc3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciwgaW50IHBmc2EpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy03OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6ODA6XFx0ZXJyID0gaXhnYmV2Zl93cml0ZV9tYngoaHcsIG1zZ2J1ZiwgMik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTgxLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjg0OlxcdGVyciA9IGl4Z2JldmZfcG9sbF9tYngoaHcsIG1zZ2J1ZiwgMik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTg1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtOTMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjk0OiAqIGl4Z2JldmZfaXBzZWNfcmVzdG9yZSAtIHJlc3RvcmUgdGhlIElQc2VjIEhXIHNldHRpbmdzIGFmdGVyIGEgcmVzZXRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtOTUtICogQGFkYXB0ZXI6IGJvYXJkIHByaXZhdGUgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMTAwLSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTAxOnZvaWQgaXhnYmV2Zl9pcHNlY19yZXN0b3JlKHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTEwMi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjEwMzpcXHRzdHJ1Y3QgaXhnYmV2Zl9pcHNlYyAqaXBzZWMgPSBhZGFwdGVyLVxcdTAwM2VpcHNlYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMTA0LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBhZGFwdGVyLVxcdTAwM2VuZXRkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMTE2LVxcdFxcdGlmIChyLVxcdTAwM2V1c2VkKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjExNzpcXHRcXHRcXHRyZXQgPSBpeGdiZXZmX2lwc2VjX3NldF9wZl9zYShhZGFwdGVyLCByLVxcdTAwM2V4cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTExOC1cXHRcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0xMjMtXFx0XFx0aWYgKHQtXFx1MDAzZXVzZWQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTI0OlxcdFxcdFxcdHJldCA9IGl4Z2JldmZfaXBzZWNfc2V0X3BmX3NhKGFkYXB0ZXIsIHQtXFx1MDAzZXhzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMTI1LVxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTEzMi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTMzOiAqIGl4Z2JldmZfaXBzZWNfZmluZF9lbXB0eV9pZHggLSBmaW5kIHRoZSBmaXJzdCB1bnVzZWQgc2VjdXJpdHkgcGFyYW1ldGVyIGluZGV4XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTEzNC0gKiBAaXBzZWM6IHBvaW50ZXIgdG8gSVBzZWMgc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM9MTM5PXN0YXRpY1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzoxNDA6aW50IGl4Z2JldmZfaXBzZWNfZmluZF9lbXB0eV9pZHgoc3RydWN0IGl4Z2JldmZfaXBzZWMgKmlwc2VjLCBib29sIHJ4dGFibGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTE0MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMTY3LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzoxNjg6ICogaXhnYmV2Zl9pcHNlY19maW5kX3J4X3N0YXRlIC0gZmluZCB0aGUgc3RhdGUgdGhhdCBtYXRjaGVzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTE2OS0gKiBAaXBzZWM6IHBvaW50ZXIgdG8gSVBzZWMgc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM9MTc3PXN0YXRpY1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzoxNzg6c3RydWN0IHhmcm1fc3RhdGUgKml4Z2JldmZfaXBzZWNfZmluZF9yeF9zdGF0ZShzdHJ1Y3QgaXhnYmV2Zl9pcHNlYyAqaXBzZWMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTE3OS1cXHRcXHRcXHRcXHRcXHQgICAgICAgX19iZTMyICpkYWRkciwgdTggcHJvdG8sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMjAyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzoyMDM6ICogaXhnYmV2Zl9pcHNlY19wYXJzZV9wcm90b19rZXlzIC0gZmluZCB0aGUga2V5IGFuZCBzYWx0IGJhc2VkIG9uIHRoZSBwcm90b2NvbFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0yMDQtICogQGRldjogcG9pbnRlciB0byBuZXQgZGV2aWNlIHRvIHByb2dyYW1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0yMTEtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzoyMTI6c3RhdGljIGludCBpeGdiZXZmX2lwc2VjX3BhcnNlX3Byb3RvX2tleXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMjEzLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHhmcm1fc3RhdGUgKnhzLFxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNToyNDo0NS4zNzExNjAzMjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzI5MjM5MDI4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGFuIGl4Z2JldmYgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgb3V0cHV0IGNvbmZpcm1zIGBpeGdiZXZmYCBpcyBhbiBJbnRlbCB2aXJ0dWFsIGZ1bmN0aW9uIGRyaXZlciwgcmVzaWRpbmcgaW4gdGhlIGV4cGVjdGVkIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2AgZGlyZWN0b3J5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiV2FpdCwgUUVNVSBkb2Vzbid0IG5hdGl2ZWx5IGVtdWxhdGUgYGl4Z2JldmZgIGRpcmVjdGx5LlwiIEJ1dCB0aGVuLCBJIGhhdmUgdG8gY29uc2lkZXI6IGRvZXMgUUVNVSBvZmZlciBhbnkgSHlwZXItViBlbXVsYXRpb24gdGhhdCBtaWdodCBpbmRpcmVjdGx5IGludm9sdmUgdGhpcz8gSG9sZCBvbiwgdGhlIHBhdGNoIHNwZWNpZmljYWxseSBtZW50aW9ucyBcIkh5cGVyLVYgRTYxMCBWRnNcIi4gVGhhdCdzIGEga2V5IGNsdWUuIERvZXMgUUVNVSBlbXVsYXRlICp0aG9zZSo/IE5vcGUuXG5cblRoZW4sIHRoZXJlJ3MgdGhlIHN5emthbGxlciBjb25uZWN0aW9uLCBJIHJlY2FsbCBzZWVpbmcgYSBgc3l6LWNsdXN0ZXJgIGNvbW1pdCAtIGl0J3MgYSBnb29kIHBvc3NpYmlsaXR5IHRoYXQgdGhpcyBkcml2ZXIgaXMgdGVzdGVkIGJ5IHN5emthbGxlci5cblxuTGV0J3MgcmVmZXIgdG8gdGhlIHByb21wdCdzIGluc3RydWN0aW9uczogIEl0IHNheXMgXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlXCIgaWYgd2UgY2FuJ3QgZ2V0IHRvIHRoZSBjb2RlLCBhbmQgdGhpcyBpcyBmb3IgYW55IHNjZW5hcmlvcyBub3Qgc3VwcG9ydGVkLiBJbiB0aGF0IGNvbnRleHQsIGBpeGdiZXZmYCBpcyBJbnRlbCdzIDEwIEdpZ2FiaXQgUENJIEV4cHJlc3MgVmlydHVhbCBGdW5jdGlvbi5cblxuU28sIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgY2FuIHRoaXMgY29kZSBwYXRoIGJlIHJlYWNoZWQgaW4gYSBRRU1VIGVudmlyb25tZW50PyBRRU1VIGVtdWxhdGVzIGBlMTAwMGAsIGBlMTAwMGVgLCBhbmQgYGlnYmAuIE9rYXksIHNvIGRvZXMgUUVNVSBlbXVsYXRlIGBpeGdiZWA/IExldCBtZSBjaGVjayB0aGUgUUVNVSBzb3VyY2UgY29kZSwgb3IgY29uc2lkZXIgd2hldGhlciBpdCdzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlci4gV2FpdCwgYGl4Z2JlYCBpcyBhIHN0YW5kYXJkIEludGVsIE5JQywgc2ltaWxhciB0byB0aGUgb3RoZXJzLiBJIHJlY2FsbCB0aGF0IFFFTVUgZG9lcyBlbXVsYXRlIGBpZ2JgIGFuZCBgZTEwMDBlYC4uLiBidXQgd2hhdCBhYm91dCBgaXhnYmVgP1xuXG5JdCBzZWVtcyBRRU1VIGFkZGVkIGBpZ2JgIHN1cHBvcnQgZmFpcmx5IHJlY2VudGx5LCBzbyB0aGF0IG1ha2VzIG1lIHF1ZXN0aW9uLCBkaWQgaXQgYWRkIGBpeGdiZWAgYXMgd2VsbD8gTGV0IG1lIHNlYXJjaC4uLiBBaCwgbm8sIGl0IHNlZW1zIFFFTVUgaGFzIGBlMTAwMGAsIGBlMTAwMGVgLCBgaWdiYC4gU28sIG5vIGBpeGdiZWAgeWV0Li4uIEV2ZW4gaWYgUUVNVSAqZGlkKiBlbXVsYXRlIGBpeGdiZWAsIHRoZSBtb3JlIGltcG9ydGFudCBxdWVzdGlvbiBpcyB3aGV0aGVyIGl0IGVtdWxhdGVzIGBpeGdiZXZmYC4gVGhhdCdzIHRoZSByZWFsIGNydXguXG5cbk9rYXksIHVsdGltYXRlbHkgdGhlIHF1ZXN0aW9uIHRvIGFuc3dlcjogQ2FuIHN5emthbGxlciByZWFjaCBgaXhnYmV2ZmA/IFRoYXQncyB3aGF0IEkgbmVlZCB0byBpbnZlc3RpZ2F0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk3NjAsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6MjQ6NTguNjYzNTUyOTMxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDgzNTk4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpeGdiZXZmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInN5cy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjI0OjU4LjcxMjA0NDE5OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwNDYwODA3OTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFRob3VnaHQgUHJvY2VzcyBvbiB0aGUgaXhnYmV2ZiBhbmQgU3l6a2FsbGVyIFNwZWMgSXNzdWUqKlxuXG5Pa2F5LCBzbyB0aGUgaW5pdGlhbCB0YXNrIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIGJ1dCBJJ3ZlIGhpdCBhIHNuYWcuIEkgd2FzIGdvaW5nIHRvIHVzZSBgZ3JlcHBlcmAgdG8gc2VhcmNoIGZvciBzb21ldGhpbmcsIGJ1dCB0aGVuIHRoZSBwcm9tcHQncyAqdmVyeSogc3BlY2lmaWMuIEl0J3MgdGVsbGluZyBtZSBJIGNhbid0IHVzZSBgZ3JlcHBlcmAgb24gYHN5cy9gIGZpbGVzIG9yIGFueXRoaW5nIHdpdGggYHN5el9gLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIOKAkyB0aG9zZSBhcmUgU3l6a2FsbGVyLXNwZWNpZmljIGRlc2NyaXB0aW9ucywgbm90IGFjdHVhbCBrZXJuZWwgY29kZS4gVGhlIGluc3RydWN0aW9ucyBwb2ludCBtZSB0b3dhcmRzIGByZWFkLXN5ei1zcGVjYCBhbmQgYHN5ei1ncmVwcGVyYCwgYnV0IGEgcXVpY2sgc2NhbiBvZiBteSBhdmFpbGFibGUgdG9vbHMgcmV2ZWFscy4uLiB0aGV5J3JlIG5vdCB0aGVyZSEgVGhlIGxpc3Qgb25seSBnaXZlcyBtZSBgZ3JlcHBlcmAsIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAsIGByZWFkLWZpbGVgLCBhbmQgYHNldC1yZXN1bHRzYC4gU28gSSdtIGVmZmVjdGl2ZWx5IGJsb2NrZWQgZnJvbSBzZWFyY2hpbmcgdGhlIHN5emthbGxlciBzcGVjcywgd2hpY2ggaXMgd2hhdCB0aGUgaW5zdHJ1Y3Rpb25zICpzZWVtKiB0byB3YW50LiBGaW5lLCBJJ2xsIGhhdmUgdG8gYWRhcHQuXG5cbk5vdywgb24gdG8gdGhlIGBpeGdiZXZmYCBzaXR1YXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0J3MgcmVhY2hhYmxlIGluIFFFTVUuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdGhhdCBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGF0IHBhcnRpY3VsYXIgZGV2aWNlLiBJIHJlbWVtYmVyIGl0IGVtdWxhdGVzIHRoZSBgaWdiYCBmYW1pbHksIGJvdGggUEYgYW5kIFZGLiBCdXQgbm8sIHdhaXQsIFFFTVUgKmRvZXNuJ3QqIGVtdWxhdGUgYGl4Z2JlYCBkaXJlY3RseS4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBRRU1VIGVtdWxhdGVzIGBpeGdiZWAgb3Igbm90LiBMZXQgbWUgY2hlY2sgdGhlIGtlcm5lbCBzb3VyY2UsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jYC4gT2theSwgbm93IEkgcmVjYWxsIHRoaXMgaXMgYW4gSW50ZWwgMTBHYkUgVkYgZHJpdmVyOyBpdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0byBmdW5jdGlvbi4gQWhhLCB0aGUgcGF0Y2ggSSdtIGxvb2tpbmcgYXQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIFwiSHlwZXItViBFNjEwIFZGcy5cIlxuXG5FNjEwIGlzIGFuIEludGVsIEV0aGVybmV0IENvbnRyb2xsZXIsIGxpa2UgRTgxMC4gQ2hlY2tpbmcgdGhlIGNvZGUsIGl0IHVzZXMgYSBzcGVjaWZpYyBzdWJzeXN0ZW0gSUQ6IGBJWEdCRV9TVUJERVZfSURfRTYxMF9WRl9IVmAuIFRoaXMgaXMgaW5jcmVkaWJseSBzcGVjaWZpYyDigJMgYW4gSW50ZWwgRTYxMCBWRiAqb24gSHlwZXItViouIENhbiB0aGlzIGV2ZW4gYmUgZW11bGF0ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPyBUaGUgYW5zd2VyIGlzIG5vLCBpdCdzIG5vdC4gSSdtIHByZXR0eSBzdXJlIFFFTVUgZG9lc24ndCBvZmZlciB0aGF0IGxldmVsIG9mIHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbi4gU28sIHRoaXMgcGFydGljdWxhciBjb2RlIHBhdGggcmVsYXRlZCB0byBFNjEwIFZGcyBvbiBIeXBlci1WIGlzICp1bnJlYWNoYWJsZSogaW4gY29tbW9uIHZpcnR1YWxpemF0aW9uIHNldHVwcy4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IHRob3JvdWdoLCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoYXQgYGl4Z2JldmZgIGlzbid0IGVtdWxhdGVkIGluIHNvZnR3YXJlLiBOb3BlLCBpdCdzIGEgUENJIGRyaXZlci4gT2theSwgbGV0J3MganVzdCBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgZmFjdHMsIGNoZWNraW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jYCB0byBsb29rIGF0IHdoaWNoIFBDSSBJRHMgaXQgYmluZHMgdG8uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwODM5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjI1OjE5LjE3Mjg1NjAzN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTM2MjQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpeGdiZXZmX3BjaV90YmxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYz00ND1zdGF0aWMgY29uc3Qgc3RydWN0IGl4Z2JldmZfaW5mbyAqaXhnYmV2Zl9pbmZvX3RibFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYy01Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jOjU4Oi8qIGl4Z2JldmZfcGNpX3RibCAtIFBDSSBEZXZpY2UgSUQgVGFibGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jLTU5LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jLTY1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmM6NjY6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGl4Z2JldmZfcGNpX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmMtNjctXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYy0xMDQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jOjEwNTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaXhnYmV2Zl9wY2lfdGJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jLTEwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmM9NDU2MT1zdGF0aWMgdm9pZCBpeGdiZXZmX2Fzc2lnbl9uZXRkZXZfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jLTQ1NzAtICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYzo0NTcxOiAqIEBlbnQ6IGVudHJ5IGluIGl4Z2JldmZfcGNpX3RibFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmMtNDU3Mi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYz00OTE4PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpeGdiZXZmX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jLTQ5MTktXFx0Lm5hbWVcXHRcXHQ9IGl4Z2JldmZfZHJpdmVyX25hbWUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYzo0OTIwOlxcdC5pZF90YWJsZVxcdD0gaXhnYmV2Zl9wY2lfdGJsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmMtNDkyMS1cXHQucHJvYmVcXHRcXHQ9IGl4Z2JldmZfcHJvYmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjI1OjE5LjIxODIyMjg1NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMDE1MDE0ODQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBgaXhnYmV2ZmAgZHJpdmVyIGhhcyBhIHZlcnkgc3BlY2lmaWMgYXR0YWNobWVudCB0byBQQ0kgSURzLCBhbmQgdGhpcyBwYXRjaCB0YXJnZXRzIGBJWEdCRV9TVUJERVZfSURfRTYxMF9WRl9IVmAsIHdoaWNoIGlzIHRoZSBIeXBlci1WIGZsYXZvciBvZiB0aGUgSW50ZWwgRTYxMCBWRi4gVGhlIHByb2JsZW0gaXMsIFFFTVUsIGFzIGl0IHN0YW5kcywgZG9lc24ndCBlbXVsYXRlIHRoZSBJbnRlbCBFNjEwIFZGcy4gU28sIHJpZ2h0IG9mZiB0aGUgYmF0LCB3ZSBjYW4gc2F5IHRoYXQgaW4gYSB0eXBpY2FsIFFFTVUgZW52aXJvbm1lbnQsIHRoZSBjb2RlIGluIHRoaXMgcGF0Y2ggaXMgc2ltcGx5IHVucmVhY2hhYmxlLlxuXG5FdmVuIGlmIHdlICpjb3VsZCogZ2V0IFFFTVUgdG8gZW11bGF0ZSBgaXhnYmV2ZmAsIGl0J3MgaW5jcmVkaWJseSB1bmxpa2VseSB0aGF0IGl0IHdvdWxkIGFsc28gYWNjdXJhdGVseSBtb2RlbCB0aGUgSHlwZXItVi1zcGVjaWZpYyBiZWhhdmlvciBvZiB0aGUgRTYxMCBWRidzIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBjb25kaXRpb25hbHMgYmFzZWQgb24gdGhlIHN1YnN5c3RlbSBkZXZpY2UgSUQ6XG5cbmBgYGNcblx0aWYgKGFkYXB0ZXItXHUwMDNlcGRldi1cdTAwM2VzdWJzeXN0ZW1fZGV2aWNlID09IElYR0JFX1NVQkRFVl9JRF9FNjEwX1ZGX0hWKSB7XG5gYGBcblxuYW5kIGNoZWNrcyBmb3IgdGhlIG1hYyB0eXBlOlxuXG5gYGBjXG5cdGlmIChtYWMtXHUwMDNldHlwZSA9PSBpeGdiZV9tYWNfZTYxMF92Zikge1xuXHRcdGlmIChpeGdiZXZmX2h2X3JlYWRfbGlua3NfZTYxMChodywgXHUwMDI2bGlua3NfcmVnKSkge1xuYGBgXG5cblRoZXNlIGNoZWNrcyBlc3NlbnRpYWxseSBkZW1hbmQgZWl0aGVyIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBjYXJkIGl0c2VsZiBvciBhIEh5cGVyLVYgaHlwZXJ2aXNvciB0aGF0J3Mgc3BlY2lmaWNhbGx5IHBhc3NpbmcgdGhyb3VnaCB0aGlzIFZGLiBTeXprYWxsZXIgcnVubmluZyBpbiBhIEdDRS9RRU1VIHNldHVwIGlzbid0IGdvaW5nIHRvIGhhdmUgdGhhdC4gSXQncyBub3QgZ29pbmcgdG8gc2VlIHRoaXMuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIHJlbGllcyBvbiBzcGVjaWZpYywgbm9uLWVtdWxhdGVkIGhhcmR3YXJlLCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSSBhbSBnb2luZyB0byBtYXJrIGl0IGFzIG5vdCB3b3J0aCBmdXp6aW5nLlxuXG5MZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEFoLCB5ZXMsIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGl4Z2JldmZfZ2V0X2xpbmtfa3NldHRpbmdzYCBhbmQgYGl4Z2JldmZfaHZfY2hlY2tfbWFjX2xpbmtfdmZgLCBidXQgdGhleSdyZSAqYWxzbyogZ3VhcmRlZCBieSB0aGVzZSBFNjEwIFZGIGNoZWNrcy4gU28sIHRoZSBlbnRpcmUgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgdW5leGVjdXRhYmxlIGluIHRoZSBkZWZhdWx0IFFFTVUgZW52aXJvbm1lbnQuIENvbmZpcm1lZDogYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODE0LCJPdXRwdXRUb2tlbnMiOjEyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNToyNTozMi4yMzMyNDExNTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQ1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGl4Z2JldmYgZHJpdmVyIHRvIHN1cHBvcnQgcmVhZGluZyBsaW5rIHNwZWVkIGZyb20gUENJIGNvbmZpZyBzcGFjZSBzcGVjaWZpY2FsbHkgZm9yIEludGVsIEU2MTAgVmlydHVhbCBGdW5jdGlvbnMgb24gSHlwZXItViAoSVhHQkVfU1VCREVWX0lEX0U2MTBfVkZfSFYpLiBUaGlzIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIChJbnRlbCBFNjEwIE5JQykgcGFzc2VkIHRocm91Z2ggdmlhIEh5cGVyLVYsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGl4Z2JldmYgZHJpdmVyIHRvIHN1cHBvcnQgcmVhZGluZyBsaW5rIHNwZWVkIGZyb20gUENJIGNvbmZpZyBzcGFjZSBzcGVjaWZpY2FsbHkgZm9yIEludGVsIEU2MTAgVmlydHVhbCBGdW5jdGlvbnMgb24gSHlwZXItViAoSVhHQkVfU1VCREVWX0lEX0U2MTBfVkZfSFYpLiBUaGlzIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIChJbnRlbCBFNjEwIE5JQykgcGFzc2VkIHRocm91Z2ggdmlhIEh5cGVyLVYsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6MjU6MzIuMjMzNjExMzE3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwbqmv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-26 14:50:18 +0000 UTC FinishedAt: 2026-08-26 15:25:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGl4Z2JldmYgZHJpdmVyIHRvIHN1cHBvcnQgcmVhZGluZyBsaW5rIHNwZWVkIGZyb20gUENJIGNvbmZpZyBzcGFjZSBzcGVjaWZpY2FsbHkgZm9yIEludGVsIEU2MTAgVmlydHVhbCBGdW5jdGlvbnMgb24gSHlwZXItViAoSVhHQkVfU1VCREVWX0lEX0U2MTBfVkZfSFYpLiBUaGlzIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIChJbnRlbCBFNjEwIE5JQykgcGFzc2VkIHRocm91Z2ggdmlhIEh5cGVyLVYsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNToyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI3YTU3NThjOGY1MzJjODQ4YzNlZjBmY2YwMmQ4MzY0MDQ0MzZhNGJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAyNiAxNToyNDoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jXG5pbmRleCA1MzdhNjBkNTI3NmYwLi41ZDBmYjRmNGQ5YTMzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jXG5AQCAtODMsNiAmIzQzOzgzLDE4IEBAIHN0YXRpYyBpbnQgaXhnYmV2Zl9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXG4ge1xuIFx0c3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG4mIzQzO1x0c3RydWN0IGl4Z2JlX2h3ICpodyA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlaHc7XG4mIzQzO1xuJiM0MztcdC8qIEh5cGVyLVYgRTYxMCBWRnM6IHJlYWQgY3VycmVudCBsaW5rIHNwZWVkIGZyb20gUENJIGNvbmZpZyBzcGFjZVxuJiM0MztcdCAqIG9uIGV2ZXJ5IGxpbmsgc3BlZWQgcXVlcnkuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGFkYXB0ZXItXHUwMDNlcGRldi1cdTAwM2VzdWJzeXN0ZW1fZGV2aWNlID09IElYR0JFX1NVQkRFVl9JRF9FNjEwX1ZGX0hWKSB7XG4mIzQzO1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2YWRhcHRlci1cdTAwM2VtYnhfbG9jayk7XG4mIzQzO1x0XHRody1cdTAwM2VtYWMuZ2V0X2xpbmtfc3RhdHVzID0gdHJ1ZTtcbiYjNDM7XHRcdGh3LVx1MDAzZW1hYy5vcHMuY2hlY2tfbGluayhodywgXHUwMDI2YWRhcHRlci1cdTAwM2VsaW5rX3NwZWVkLFxuJiM0MztcdFx0XHRcdCAgICAgICBcdTAwMjZhZGFwdGVyLVx1MDAzZWxpbmtfdXAsIGZhbHNlKTtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFkYXB0ZXItXHUwMDNlbWJ4X2xvY2spO1xuJiM0MztcdH1cbiBcbiBcdGV0aHRvb2xfbGlua19rc2V0dGluZ3NfemVyb19saW5rX21vZGUoY21kLCBzdXBwb3J0ZWQpO1xuIFx0ZXRodG9vbF9saW5rX2tzZXR0aW5nc19hZGRfbGlua19tb2RlKGNtZCwgc3VwcG9ydGVkLCAxMDAwMGJhc2VUX0Z1bGwpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvdmYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvdmYuY1xuaW5kZXggZjZkZjg2ZDEyNGI5ZS4uYTg0YjYyNjQxZTliYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvdmYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jXG5AQCAtMSwxNCAmIzQzOzEsMTcgQEBcbiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuIC8qIENvcHlyaWdodChjKSAxOTk5IC0gMjAyNCBJbnRlbCBDb3Jwb3JhdGlvbi4gKi9cbiBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiYjNDM7XG4gI2luY2x1ZGUgXCYjMzQ7dmYuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2l4Z2JldmYuaFwmIzM0O1xuIFxuLS8qIE9uIEh5cGVyLVYsIHRvIHJlc2V0LCB3ZSBuZWVkIHRvIHJlYWQgZnJvbSB0aGlzIG9mZnNldFxuLSAqIGZyb20gdGhlIFBDSSBjb25maWcgc3BhY2UuIFRoaXMgaXMgdGhlIG1lY2hhbmlzbSB1c2VkIG9uXG4tICogSHlwZXItViB0byBzdXBwb3J0IFBGL1ZGIGNvbW11bmljYXRpb24uXG4mIzQzOy8qIE9uIEh5cGVyLVYgdGhlIFBGL1ZGIGNvbW11bmljYXRpb24gaXMgdGhyb3VnaCBlbXVsYXRlZCBQQ0kgY29uZmlnXG4mIzQzOyAqIHNwYWNlLiBUaGUgcmVzZXQgYW5kIGxpbmsgc3RhdHVzIGFyZSBleHBvc2VkIGF0IHRoZSBvZmZzZXRzIGJlbG93LlxuICAqL1xuLSNkZWZpbmUgSVhHQkVfSFZfUkVTRVRfT0ZGU0VUICAgICAgICAgICAweDIwMVxuJiM0MzsjZGVmaW5lIElYR0JFX0hWX1JFU0VUX09GRlNFVFx0XHQweDIwMVxuJiM0MzsjZGVmaW5lIElYR0JFX0hWX0xJTktfU1RBVFVTX09GRlNFVFx0MHgyMDlcbiYjNDM7I2RlZmluZSBJWEdCRV9IVl9MSU5LX1NUQVRVU19TSVpFXHQ0XG4gXG4gc3RhdGljIGlubGluZSBzMzIgaXhnYmV2Zl93cml0ZV9tc2dfcmVhZF9hY2soc3RydWN0IGl4Z2JlX2h3ICpodywgdTMyICptc2csXG4gXHRcdFx0XHRcdCAgICAgdTMyICpyZXRtc2csIHUxNiBzaXplKVxuQEAgLTkwMSw2ICYjNDM7OTA0LDQwIEBAIHN0YXRpYyBzMzIgaXhnYmV2Zl9jaGVja19tYWNfbGlua192ZihzdHJ1Y3QgaXhnYmVfaHcgKmh3LFxuIFx0cmV0dXJuIHJldF92YWw7XG4gfVxuIFxuJiM0MzsvKipcbiYjNDM7ICogaXhnYmV2Zl9odl9yZWFkX2xpbmtzX2U2MTAgLSByZWFkIGxpbmsgc3RhdHVzIGZyb20gUENJIGNvbmZpZyBzcGFjZVxuJiM0MzsgKiBAaHc6IHBvaW50ZXIgdG8gaGFyZHdhcmUgc3RydWN0dXJlXG4mIzQzOyAqIEBsaW5rc19yZWc6IHBvaW50ZXIgdG8gc3RvcmUgcmVhZCB2YWx1ZVxuJiM0MzsgKlxuJiM0MzsgKiBPbiBIeXBlci1WIEU2MTAgVkZzIHRoZSBWRkxJTktTIHJlZ2lzdGVyIGRvZXMgbm90IGNhcnJ5IHZhbGlkIGxpbmsgc3BlZWQuXG4mIzQzOyAqIEluc3RlYWQsIGxpbmsgc3RhdHVzIGlzIGV4cG9zZWQgdGhyb3VnaCBlbXVsYXRlZCBQQ0kgY29uZmlnIHNwYWNlIGF0IG9mZnNldFxuJiM0MzsgKiAweDIwOSBpbiBWRkxJTktTIHJlZ2lzdGVyIGZvcm1hdC5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBzMzIgaXhnYmV2Zl9odl9yZWFkX2xpbmtzX2U2MTAoc3RydWN0IGl4Z2JlX2h3ICpodywgdTMyICpsaW5rc19yZWcpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gaHctXHUwMDNlYmFjaztcbiYjNDM7XHR1OCBkYXRhW0lYR0JFX0hWX0xJTktfU1RBVFVTX1NJWkVdO1xuJiM0MztcbiYjNDM7XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1BDSV9NTUNPTkZJRykpIHtcbiYjNDM7XHRcdGRldl9lcnJfb25jZShcdTAwMjZhZGFwdGVyLVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHQgICAgIFwmIzM0O2Nhbm5vdCByZWFkIGxpbmsgc3RhdHVzLCBQQ0lfTU1DT05GSUcgaXMgcmVxdWlyZWQgZm9yIEh5cGVyLVZcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIElYR0JFX0hWX0xJTktfU1RBVFVTX1NJWkU7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRpbnQgcmV0ID0gcGNpX3JlYWRfY29uZmlnX2J5dGUoYWRhcHRlci1cdTAwM2VwZGV2LFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIElYR0JFX0hWX0xJTktfU1RBVFVTX09GRlNFVCAmIzQzOyBpLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIFx1MDAyNmRhdGFbaV0pO1xuJiM0MztcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0cmV0dXJuIHBjaWJpb3NfZXJyX3RvX2Vycm5vKHJldCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQqbGlua3NfcmVnID0gZ2V0X3VuYWxpZ25lZF9sZTMyKGRhdGEpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIGl4Z2JldmZfaHZfY2hlY2tfbWFjX2xpbmtfdmYgLSBjaGVjayBsaW5rXG4gICogQGh3OiBwb2ludGVyIHRvIHByaXZhdGUgaGFyZHdhcmUgc3RydWN0XG5AQCAtOTA5LDYgJiM0Mzs5NDYsNyBAQCBzdGF0aWMgczMyIGl4Z2JldmZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodyxcbiAgKiBAYXV0b25lZ193YWl0X3RvX2NvbXBsZXRlOiB1bnVzZWRcbiAgKlxuICAqIEh5cGVyLVYgdmFyaWFudDsgdGhlcmUgaXMgbm8gbWFpbGJveCBjb21tdW5pY2F0aW9uLlxuJiM0MzsgKiBGb3IgRTYxMCBWRnMsIGxpbmsgc3RhdHVzIGlzIHJlYWQgZnJvbSBlbXVsYXRlZCBQQ0kgY29uZmlnIHNwYWNlLlxuICAqL1xuIHN0YXRpYyBzMzIgaXhnYmV2Zl9odl9jaGVja19tYWNfbGlua192ZihzdHJ1Y3QgaXhnYmVfaHcgKmh3LFxuIFx0XHRcdFx0XHRpeGdiZV9saW5rX3NwZWVkICpzcGVlZCxcbkBAIC05MjYsOCAmIzQzOzk2NCwxNiBAQCBzdGF0aWMgczMyIGl4Z2JldmZfaHZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodyxcbiBcdGlmICghbWFjLVx1MDAzZWdldF9saW5rX3N0YXR1cylcbiBcdFx0Z290byBvdXQ7XG4gXG4tXHQvKiBpZiBsaW5rIHN0YXR1cyBpcyBkb3duIG5vIHBvaW50IGluIGNoZWNraW5nIHRvIHNlZSBpZiBwZiBpcyB1cCAqL1xuLVx0bGlua3NfcmVnID0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX1ZGTElOS1MpO1xuJiM0MztcdGlmIChtYWMtXHUwMDNldHlwZSA9PSBpeGdiZV9tYWNfZTYxMF92Zikge1xuJiM0MztcdFx0aWYgKGl4Z2JldmZfaHZfcmVhZF9saW5rc19lNjEwKGh3LCBcdTAwMjZsaW5rc19yZWcpKSB7XG4mIzQzO1x0XHRcdCpsaW5rX3VwID0gZmFsc2U7XG4mIzQzO1x0XHRcdCpzcGVlZCA9IElYR0JFX0xJTktfU1BFRURfVU5LTk9XTjtcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGxpbmtzX3JlZyA9IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9WRkxJTktTKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKCEobGlua3NfcmVnIFx1MDAyNiBJWEdCRV9MSU5LU19VUCkpXG4gXHRcdGdvdG8gb3V0O1xuIFxuQEAgLTk0MSw4ICYjNDM7OTg3LDExIEBAIHN0YXRpYyBzMzIgaXhnYmV2Zl9odl9jaGVja19tYWNfbGlua192ZihzdHJ1Y3QgaXhnYmVfaHcgKmh3LFxuIFx0XHRcdHVkZWxheSgxMDApO1xuIFx0XHRcdGxpbmtzX3JlZyA9IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9WRkxJTktTKTtcbiBcbi1cdFx0XHRpZiAoIShsaW5rc19yZWcgXHUwMDI2IElYR0JFX0xJTktTX1VQKSlcbi1cdFx0XHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0XHRpZiAoIShsaW5rc19yZWcgXHUwMDI2IElYR0JFX0xJTktTX1VQKSkge1xuJiM0MztcdFx0XHRcdCpsaW5rX3VwID0gZmFsc2U7XG4mIzQzO1x0XHRcdFx0KnNwZWVkID0gSVhHQkVfTElOS19TUEVFRF9VTktOT1dOO1xuJiM0MztcdFx0XHRcdHJldHVybiAwO1xuJiM0MztcdFx0XHR9XG4gXHRcdH1cbiBcdH1cbiBcbkBAIC05NTYsNiAmIzQzOzEwMDUsOSBAQCBzdGF0aWMgczMyIGl4Z2JldmZfaHZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodyxcbiBcdGNhc2UgSVhHQkVfTElOS1NfU1BFRURfMTAwXzgyNTk5OlxuIFx0XHQqc3BlZWQgPSBJWEdCRV9MSU5LX1NQRUVEXzEwMF9GVUxMO1xuIFx0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0KnNwZWVkID0gSVhHQkVfTElOS19TUEVFRF9VTktOT1dOO1xuJiM0MztcdFx0YnJlYWs7XG4gXHR9XG4gXG4gXHQvKiBpZiB3ZSBwYXNzZWQgYWxsIHRoZSB0ZXN0cyBhYm92ZSB0aGVuIHRoZSBsaW5rIGlzIHVwIGFuZCB3ZSBub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjI0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaXhnYmV2ZiBkcml2ZXIgdG8gc3VwcG9ydCByZWFkaW5nIGxpbmsgc3BlZWQgZnJvbSBQQ0kgY29uZmlnIHNwYWNlIHNwZWNpZmljYWxseSBmb3IgSW50ZWwgRTYxMCBWaXJ0dWFsIEZ1bmN0aW9ucyBvbiBIeXBlci1WIChJWEdCRV9TVUJERVZfSURfRTYxMF9WRl9IVikuIFRoaXMgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKEludGVsIEU2MTAgTklDKSBwYXNzZWQgdGhyb3VnaCB2aWEgSHlwZXItViwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjdhNTc1OGM4ZjUzMmM4NDhjM2VmMGZjZjAyZDgzNjQwNDQzNmE0YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDI2IDE1OjI0OjI4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYwppbmRleCA1MzdhNjBkNTI3NmYwLi41ZDBmYjRmNGQ5YTMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYwpAQCAtODMsNiAmIzQzOzgzLDE4IEBAIHN0YXRpYyBpbnQgaXhnYmV2Zl9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIAkJCQkgICAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKQogewogCXN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpOwomIzQzOwlzdHJ1Y3QgaXhnYmVfaHcgKmh3ID0gJmFtcDthZGFwdGVyLSZndDtodzsKJiM0MzsKJiM0MzsJLyogSHlwZXItViBFNjEwIFZGczogcmVhZCBjdXJyZW50IGxpbmsgc3BlZWQgZnJvbSBQQ0kgY29uZmlnIHNwYWNlCiYjNDM7CSAqIG9uIGV2ZXJ5IGxpbmsgc3BlZWQgcXVlcnkuCiYjNDM7CSAqLwomIzQzOwlpZiAoYWRhcHRlci0mZ3Q7cGRldi0mZ3Q7c3Vic3lzdGVtX2RldmljZSA9PSBJWEdCRV9TVUJERVZfSURfRTYxMF9WRl9IVikgewomIzQzOwkJc3Bpbl9sb2NrX2JoKCZhbXA7YWRhcHRlci0mZ3Q7bWJ4X2xvY2spOwomIzQzOwkJaHctJmd0O21hYy5nZXRfbGlua19zdGF0dXMgPSB0cnVlOwomIzQzOwkJaHctJmd0O21hYy5vcHMuY2hlY2tfbGluayhodywgJmFtcDthZGFwdGVyLSZndDtsaW5rX3NwZWVkLAomIzQzOwkJCQkgICAgICAgJmFtcDthZGFwdGVyLSZndDtsaW5rX3VwLCBmYWxzZSk7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO2FkYXB0ZXItJmd0O21ieF9sb2NrKTsKJiM0MzsJfQogCiAJZXRodG9vbF9saW5rX2tzZXR0aW5nc196ZXJvX2xpbmtfbW9kZShjbWQsIHN1cHBvcnRlZCk7CiAJZXRodG9vbF9saW5rX2tzZXR0aW5nc19hZGRfbGlua19tb2RlKGNtZCwgc3VwcG9ydGVkLCAxMDAwMGJhc2VUX0Z1bGwpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jCmluZGV4IGY2ZGY4NmQxMjRiOWUuLmE4NGI2MjY0MWU5YmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvdmYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL3ZmLmMKQEAgLTEsMTQgJiM0MzsxLDE3IEBACiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAogLyogQ29weXJpZ2h0KGMpIDE5OTkgLSAyMDI0IEludGVsIENvcnBvcmF0aW9uLiAqLwogCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3VuYWxpZ25lZC5oJmd0OwomIzQzOwogI2luY2x1ZGUgJiMzNDt2Zi5oJiMzNDsKICNpbmNsdWRlICYjMzQ7aXhnYmV2Zi5oJiMzNDsKIAotLyogT24gSHlwZXItViwgdG8gcmVzZXQsIHdlIG5lZWQgdG8gcmVhZCBmcm9tIHRoaXMgb2Zmc2V0Ci0gKiBmcm9tIHRoZSBQQ0kgY29uZmlnIHNwYWNlLiBUaGlzIGlzIHRoZSBtZWNoYW5pc20gdXNlZCBvbgotICogSHlwZXItViB0byBzdXBwb3J0IFBGL1ZGIGNvbW11bmljYXRpb24uCiYjNDM7LyogT24gSHlwZXItViB0aGUgUEYvVkYgY29tbXVuaWNhdGlvbiBpcyB0aHJvdWdoIGVtdWxhdGVkIFBDSSBjb25maWcKJiM0MzsgKiBzcGFjZS4gVGhlIHJlc2V0IGFuZCBsaW5rIHN0YXR1cyBhcmUgZXhwb3NlZCBhdCB0aGUgb2Zmc2V0cyBiZWxvdy4KICAqLwotI2RlZmluZSBJWEdCRV9IVl9SRVNFVF9PRkZTRVQgICAgICAgICAgIDB4MjAxCiYjNDM7I2RlZmluZSBJWEdCRV9IVl9SRVNFVF9PRkZTRVQJCTB4MjAxCiYjNDM7I2RlZmluZSBJWEdCRV9IVl9MSU5LX1NUQVRVU19PRkZTRVQJMHgyMDkKJiM0MzsjZGVmaW5lIElYR0JFX0hWX0xJTktfU1RBVFVTX1NJWkUJNAogCiBzdGF0aWMgaW5saW5lIHMzMiBpeGdiZXZmX3dyaXRlX21zZ19yZWFkX2FjayhzdHJ1Y3QgaXhnYmVfaHcgKmh3LCB1MzIgKm1zZywKIAkJCQkJICAgICB1MzIgKnJldG1zZywgdTE2IHNpemUpCkBAIC05MDEsNiAmIzQzOzkwNCw0MCBAQCBzdGF0aWMgczMyIGl4Z2JldmZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodywKIAlyZXR1cm4gcmV0X3ZhbDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIGl4Z2JldmZfaHZfcmVhZF9saW5rc19lNjEwIC0gcmVhZCBsaW5rIHN0YXR1cyBmcm9tIFBDSSBjb25maWcgc3BhY2UKJiM0MzsgKiBAaHc6IHBvaW50ZXIgdG8gaGFyZHdhcmUgc3RydWN0dXJlCiYjNDM7ICogQGxpbmtzX3JlZzogcG9pbnRlciB0byBzdG9yZSByZWFkIHZhbHVlCiYjNDM7ICoKJiM0MzsgKiBPbiBIeXBlci1WIEU2MTAgVkZzIHRoZSBWRkxJTktTIHJlZ2lzdGVyIGRvZXMgbm90IGNhcnJ5IHZhbGlkIGxpbmsgc3BlZWQuCiYjNDM7ICogSW5zdGVhZCwgbGluayBzdGF0dXMgaXMgZXhwb3NlZCB0aHJvdWdoIGVtdWxhdGVkIFBDSSBjb25maWcgc3BhY2UgYXQgb2Zmc2V0CiYjNDM7ICogMHgyMDkgaW4gVkZMSU5LUyByZWdpc3RlciBmb3JtYXQuCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgomIzQzOyAqLwomIzQzO3N0YXRpYyBzMzIgaXhnYmV2Zl9odl9yZWFkX2xpbmtzX2U2MTAoc3RydWN0IGl4Z2JlX2h3ICpodywgdTMyICpsaW5rc19yZWcpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gaHctJmd0O2JhY2s7CiYjNDM7CXU4IGRhdGFbSVhHQkVfSFZfTElOS19TVEFUVVNfU0laRV07CiYjNDM7CiYjNDM7CWlmICghSVNfRU5BQkxFRChDT05GSUdfUENJX01NQ09ORklHKSkgewomIzQzOwkJZGV2X2Vycl9vbmNlKCZhbXA7YWRhcHRlci0mZ3Q7cGRldi0mZ3Q7ZGV2LAomIzQzOwkJCSAgICAgJiMzNDtjYW5ub3QgcmVhZCBsaW5rIHN0YXR1cywgUENJX01NQ09ORklHIGlzIHJlcXVpcmVkIGZvciBIeXBlci1WXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZm9yIChpbnQgaSA9IDA7IGkgJmx0OyBJWEdCRV9IVl9MSU5LX1NUQVRVU19TSVpFOyBpJiM0MzsmIzQzOykgewomIzQzOwkJaW50IHJldCA9IHBjaV9yZWFkX2NvbmZpZ19ieXRlKGFkYXB0ZXItJmd0O3BkZXYsCiYjNDM7CQkJCQkgICAgICAgSVhHQkVfSFZfTElOS19TVEFUVVNfT0ZGU0VUICYjNDM7IGksCiYjNDM7CQkJCQkgICAgICAgJmFtcDtkYXRhW2ldKTsKJiM0MzsJCWlmIChyZXQpCiYjNDM7CQkJcmV0dXJuIHBjaWJpb3NfZXJyX3RvX2Vycm5vKHJldCk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJKmxpbmtzX3JlZyA9IGdldF91bmFsaWduZWRfbGUzMihkYXRhKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogLyoqCiAgKiBpeGdiZXZmX2h2X2NoZWNrX21hY19saW5rX3ZmIC0gY2hlY2sgbGluawogICogQGh3OiBwb2ludGVyIHRvIHByaXZhdGUgaGFyZHdhcmUgc3RydWN0CkBAIC05MDksNiAmIzQzOzk0Niw3IEBAIHN0YXRpYyBzMzIgaXhnYmV2Zl9jaGVja19tYWNfbGlua192ZihzdHJ1Y3QgaXhnYmVfaHcgKmh3LAogICogQGF1dG9uZWdfd2FpdF90b19jb21wbGV0ZTogdW51c2VkCiAgKgogICogSHlwZXItViB2YXJpYW50OyB0aGVyZSBpcyBubyBtYWlsYm94IGNvbW11bmljYXRpb24uCiYjNDM7ICogRm9yIEU2MTAgVkZzLCBsaW5rIHN0YXR1cyBpcyByZWFkIGZyb20gZW11bGF0ZWQgUENJIGNvbmZpZyBzcGFjZS4KICAqLwogc3RhdGljIHMzMiBpeGdiZXZmX2h2X2NoZWNrX21hY19saW5rX3ZmKHN0cnVjdCBpeGdiZV9odyAqaHcsCiAJCQkJCWl4Z2JlX2xpbmtfc3BlZWQgKnNwZWVkLApAQCAtOTI2LDggJiM0Mzs5NjQsMTYgQEAgc3RhdGljIHMzMiBpeGdiZXZmX2h2X2NoZWNrX21hY19saW5rX3ZmKHN0cnVjdCBpeGdiZV9odyAqaHcsCiAJaWYgKCFtYWMtJmd0O2dldF9saW5rX3N0YXR1cykKIAkJZ290byBvdXQ7CiAKLQkvKiBpZiBsaW5rIHN0YXR1cyBpcyBkb3duIG5vIHBvaW50IGluIGNoZWNraW5nIHRvIHNlZSBpZiBwZiBpcyB1cCAqLwotCWxpbmtzX3JlZyA9IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9WRkxJTktTKTsKJiM0MzsJaWYgKG1hYy0mZ3Q7dHlwZSA9PSBpeGdiZV9tYWNfZTYxMF92ZikgewomIzQzOwkJaWYgKGl4Z2JldmZfaHZfcmVhZF9saW5rc19lNjEwKGh3LCAmYW1wO2xpbmtzX3JlZykpIHsKJiM0MzsJCQkqbGlua191cCA9IGZhbHNlOwomIzQzOwkJCSpzcGVlZCA9IElYR0JFX0xJTktfU1BFRURfVU5LTk9XTjsKJiM0MzsJCQlyZXR1cm4gMDsKJiM0MzsJCX0KJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWxpbmtzX3JlZyA9IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9WRkxJTktTKTsKJiM0MzsJfQomIzQzOwogCWlmICghKGxpbmtzX3JlZyAmYW1wOyBJWEdCRV9MSU5LU19VUCkpCiAJCWdvdG8gb3V0OwogCkBAIC05NDEsOCAmIzQzOzk4NywxMSBAQCBzdGF0aWMgczMyIGl4Z2JldmZfaHZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodywKIAkJCXVkZWxheSgxMDApOwogCQkJbGlua3NfcmVnID0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX1ZGTElOS1MpOwogCi0JCQlpZiAoIShsaW5rc19yZWcgJmFtcDsgSVhHQkVfTElOS1NfVVApKQotCQkJCWdvdG8gb3V0OwomIzQzOwkJCWlmICghKGxpbmtzX3JlZyAmYW1wOyBJWEdCRV9MSU5LU19VUCkpIHsKJiM0MzsJCQkJKmxpbmtfdXAgPSBmYWxzZTsKJiM0MzsJCQkJKnNwZWVkID0gSVhHQkVfTElOS19TUEVFRF9VTktOT1dOOwomIzQzOwkJCQlyZXR1cm4gMDsKJiM0MzsJCQl9CiAJCX0KIAl9CiAKQEAgLTk1Niw2ICYjNDM7MTAwNSw5IEBAIHN0YXRpYyBzMzIgaXhnYmV2Zl9odl9jaGVja19tYWNfbGlua192ZihzdHJ1Y3QgaXhnYmVfaHcgKmh3LAogCWNhc2UgSVhHQkVfTElOS1NfU1BFRURfMTAwXzgyNTk5OgogCQkqc3BlZWQgPSBJWEdCRV9MSU5LX1NQRUVEXzEwMF9GVUxMOwogCQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCSpzcGVlZCA9IElYR0JFX0xJTktfU1BFRURfVU5LTk9XTjsKJiM0MzsJCWJyZWFrOwogCX0KIAogCS8qIGlmIHdlIHBhc3NlZCBhbGwgdGhlIHRlc3RzIGFib3ZlIHRoZW4gdGhlIGxpbmsgaXMgdXAgYW5kIHdlIG5vCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTQKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA2MjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpeGdiZXZmIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IGltcHJvdmluZyB0aGUgYGl4Z2JldmZgIGRyaXZlciDigJMgdGhlIEludGVsIDEwIEdpZ2FiaXQgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXIuIEl0JiMzOTtzIHNwZWNpZmljYWxseSBhYm91dCBhZGRpbmcgdGhlIGFiaWxpdHkgdG8gcmVhZCBsaW5rIHNwZWVkIGluZm9ybWF0aW9uIGZyb20gdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIHdoZW4gaXQmIzM5O3MgcnVubmluZyBvbiBhIEh5cGVyLVYgRTYxMCBWRi4gVGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBhcmUgaW4gYGV0aHRvb2wuY2AgYW5kIGB2Zi5jYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIFRoZXkmIzM5O3ZlIHVwZGF0ZWQgYGl4Z2JldmZfZ2V0X2xpbmtfa3NldHRpbmdzYCB0byBncmFiIGxpbmsgc3BlZWQgZXZlcnkgdGltZSBpdCYjMzk7cyBxdWVyaWVkLCBidXQgb25seSB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgYElYR0JFX1NVQkRFVl9JRF9FNjEwX1ZGX0hWYCBzdWJkZXZpY2UuIFRoZXkmIzM5O3ZlIGFsc28gYWRkZWQgYSBuZXcgZnVuY3Rpb24sIGBpeGdiZXZmX2h2X3JlYWRfbGlua3NfZTYxMGAsIHRvIGhhbmRsZSByZWFkaW5nIHRoZSBsaW5rIHN0YXR1cyBmcm9tIFBDSSBjb25maWcgc3BhY2UuIEFuZCwgb2YgY291cnNlLCB0aGV5JiMzOTt2ZSBtb2RpZmllZCBgaXhnYmV2Zl9odl9jaGVja19tYWNfbGlua192ZmAgdG8gdXRpbGl6ZSB0aGF0IG5ldyBmdW5jdGlvbiBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgaXhnYmVfbWFjX2U2MTBfdmZgIGRldmljZS4KCk5vdywgbXkgbWluZCBpcyByYWNpbmcuIGBpeGdiZXZmYCBpcyBhIGRyaXZlciBmb3IgYSAqcGh5c2ljYWwqIG5ldHdvcmsgY2FyZCAoSW50ZWwgMTBHYkUgVkYpLCByaWdodD8gVGhlc2UgVkZzIGFyZSB0eXBpY2FsbHkgcGFzc2VkIHRocm91Z2ggdG8gdmlydHVhbCBtYWNoaW5lcy4gQnV0IHRoZSBkcml2ZXIgbGl2ZXMgb24gdGhlIGhvc3QgYW5kIGluIHRoZSBndWVzdCwgc28gaXMgdGhpcyBkcml2ZXIgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIGZ1bGx5IHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/CgpUeXBpY2FsbHksIFZGIGRyaXZlcnMgYXJlIHVzZWQgd2l0aGluIFZNcyB3aGVuIFNSLUlPViBpcyBpbiBwbGF5LiBCdXQsIEkgZG9uJiMzOTt0IHJlY2FsbCBRRU1VIGVtdWxhdGluZyBgaXhnYmV2ZmAgYnkgZGVmYXVsdC4gUUVNVSBoYW5kbGVzIGBlMTAwMGVgLCBgaWdiYCwgYW5kIGBlMTAwMGAsIGJ1dC4uLmRvZXMgaXQgaGF2ZSBhbiBlbXVsYXRpb24gZm9yIGBpeGdiZWAgb3IgYGl4Z2JldmZgPyBJIG5lZWQgdG8gY2hlY2sgdGhlIFFFTVUgc291cmNlIHRvIGJlIHN1cmUuIEkmIzM5O20gc2VlaW5nIGBody9uZXQvaWdiLmNgLCBgaHcvbmV0L2UxMDAwZS5jYCwgYGh3L25ldC9lMTAwMC5jYCBpbiBRRU1VLCBidXQgbm90IGBpeGdiZSpgLgoKTm8uIFFFTVUgZG9lc24mIzM5O3QgZGlyZWN0bHkgZW11bGF0ZSBgaXhnYmVgLiBJdCBzdXBwb3J0cyBgZTEwMDBlYCwgYGlnYmAsIGB2bXhuZXQzYCwgYHZpcnRpby1uZXRgLCBgcnRsODEzOWAsIGBwY25ldGAsIGBuZTJrX3BjaWAsIGBlZXBybzEwMGAsIGB0dWxpcGAsIGJ1dCBub3QgYGl4Z2JlYC4KClNvLCBkb2VzIFFFTVUgaGF2ZSAqYW55KiBgaXhnYmVgIGVtdWxhdGlvbj8gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIFFFTVUgc291cmNlIGNvZGUsIG9yIG1heWJlIHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSBmb3IgZnV6emluZyBlZmZvcnRzIHJlbGF0ZWQgdG8gYGl4Z2JldmZgLgoKV2FpdCwgdGhpcyBicmluZ3MgdXAgYW5vdGhlciBwb2ludC4gU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGZ1enogYGl4Z2JldmZgICp1bmxlc3MqIHRoZSBkZXZpY2UgaXMgZW11bGF0ZWQsIG9yIHdlIGhhdmUgYSB2aXJ0dWFsIGRldmljZSBwcmVzZW50ZWQgdG8gaXQuIFN5emthbGxlciBzdXBwb3J0cyB2YXJpb3VzIGRldmljZSBkcml2ZXJzLCBzdWNoIGFzIGBzeXotbWFjODAyMTFgIGFuZCBgc3l6LXVzYmAuIEJ1dCBmb3IgUENJIGRldmljZXMsIGl0IGhlYXZpbHkgcmVsaWVzIG9uIHRoZSBRRU1VIGVtdWxhdGlvbiBsYXllci4gRG9lcyBzeXprYWxsZXIgYWN0dWFsbHkgKnN1cHBvcnQqIGBpeGdiZXZmYCBhbmQgaGF2ZSBjb3ZlcmFnZSBmb3IgaXQ/IEkmIzM5O2xsIG5lZWQgdG8gZG8gYSBzZWFyY2ggdG8gbWFrZSBzdXJlLiBUaGlzIGNvdWxkIGluZmx1ZW5jZSB0aGUgY3JpdGljYWxpdHkgb2YgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpeGdiZXZmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNDg3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uLy5yZW5hbWVzLnR4dD04MTc9bmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9pbnRlbC9peGdiZSBuZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2l4Z2JlXG5Eb2N1bWVudGF0aW9uLy5yZW5hbWVzLnR4dDo4MTg6bmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9pbnRlbC9peGdiZXZmIG5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW50ZWwvaXhnYmV2ZlxuRG9jdW1lbnRhdGlvbi8ucmVuYW1lcy50eHQtODE5LW5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvbWFydmVsbC9vY3Rlb250eDIgbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4MlxuLS1cbkRvY3VtZW50YXRpb24vLnJlbmFtZXMudHh0PTg0Mz1uZXR3b3JraW5nL2l4Z2JlIG5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW50ZWwvaXhnYmVcbkRvY3VtZW50YXRpb24vLnJlbmFtZXMudHh0Ojg0NDpuZXR3b3JraW5nL2l4Z2JldmYgbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9pbnRlbC9peGdiZXZmXG5Eb2N1bWVudGF0aW9uLy5yZW5hbWVzLnR4dC04NDUtbmV0d29ya2luZy9uZXRkZXYtRkFRIHByb2Nlc3MvbWFpbnRhaW5lci1uZXRkZXZcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW5kZXgucnN0PTg9Q29udGVudHM6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2luZGV4LnJzdC0zOS0gICBpbnRlbC9peGdiZVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2luZGV4LnJzdDo0MDogICBpbnRlbC9peGdiZXZmXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW5kZXgucnN0LTQxLSAgIGludGVsL2k0MGVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIwMz1jb25maWcgSVhHQkVWRlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjEzLVx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjE0Olx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9pbnRlbC9peGdiZXZmLnJzdFx1MDAzZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMTYtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjE3Olx0ICB3aWxsIGJlIGNhbGxlZCBpeGdiZXZmLiAgTVNJLVggaW50ZXJydXB0IHN1cHBvcnQgaXMgcmVxdWlyZWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjE4LVx0ICBmb3IgdGhpcyBkcml2ZXIgdG8gd29yayBjb3JyZWN0bHkuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yMjA9Y29uZmlnIElYR0JFVkZfSVBTRUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIyNi1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjI3Olx0ICBFbmFibGUgc3VwcG9ydCBmb3IgSVBTZWMgb2ZmbG9hZCBpbiBpeGdiZXZmLmtvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIyOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfSVhHQkUpICYjNDM7PSBpeGdiZS9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19JWEdCRVZGKSAmIzQzOz0gaXhnYmV2Zi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19JNDBFKSAmIzQzOz0gaTQwZS9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oPTIxMj1zdHJ1Y3QgdmZfZGF0YV9zdG9yYWdlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oLTIzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlLmg6MjM1OmVudW0gaXhnYmV2Zl94Y2FzdF9tb2RlcyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oLTIzNi1cdElYR0JFVkZfWENBU1RfTU9ERV9OT05FID0gMCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL01ha2VmaWxlLTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0lYR0JFVkYpICYjNDM7PSBpeGdiZXZmLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvTWFrZWZpbGUtOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvTWFrZWZpbGU6OTppeGdiZXZmLXkgOj0gdmYubyBtYngubyBldGh0b29sLm8gaXhnYmV2Zl9tYWluLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvTWFrZWZpbGU6MTA6aXhnYmV2Zi0kKENPTkZJR19JWEdCRVZGX0lQU0VDKSAmIzQzOz0gaXBzZWMub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo0Oi8qIGV0aHRvb2wgc3VwcG9ydCBmb3IgaXhnYmV2ZiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjE4OiNpbmNsdWRlIFwmIzM0O2l4Z2JldmYuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM9MjI9c3RydWN0IGl4Z2JlX3N0YXRzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zMS1cdC50eXBlID0gSVhHQkVWRl9TVEFUUywgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjMyOlx0LnNpemVvZl9zdGF0ID0gc2l6ZW9mX2ZpZWxkKHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIsIF9zdGF0KSwgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjMzOlx0LnN0YXRfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IGl4Z2JldmZfYWRhcHRlciwgX3N0YXQpIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zNC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo0MzpzdGF0aWMgc3RydWN0IGl4Z2JlX3N0YXRzIGl4Z2JldmZfZ3N0cmluZ3Nfc3RhdHNbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQ0LVx0SVhHQkVWRl9ORVRERVZfU1RBVChyeF9wYWNrZXRzKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MC0jZGVmaW5lIElYR0JFVkZfUVVFVUVfU1RBVFNfTEVOICggXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjYxOlx0KCgoc3RydWN0IGl4Z2JldmZfYWRhcHRlciAqKW5ldGRldl9wcml2KG5ldGRldikpLVx1MDAzZW51bV90eF9xdWV1ZXMgJiM0MzsgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjYyOlx0ICgoc3RydWN0IGl4Z2JldmZfYWRhcHRlciAqKW5ldGRldl9wcml2KG5ldGRldikpLVx1MDAzZW51bV94ZHBfcXVldWVzICYjNDM7IFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo2MzpcdCAoKHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKiluZXRkZXZfcHJpdihuZXRkZXYpKS1cdTAwM2VudW1fcnhfcXVldWVzKSAqIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo2NDpcdCAoc2l6ZW9mKHN0cnVjdCBpeGdiZXZmX3N0YXRzKSAvIHNpemVvZih1NjQpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjY1OiNkZWZpbmUgSVhHQkVWRl9HTE9CQUxfU1RBVFNfTEVOIEFSUkFZX1NJWkUoaXhnYmV2Zl9nc3RyaW5nc19zdGF0cylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTY2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jPTY4PXN0YXRpYyBjb25zdCBjaGFyIGl4Z2JlX2dzdHJpbmdzX3Rlc3RbXVtFVEhfR1NUUklOR19MRU5dID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NzU6c3RhdGljIGNvbnN0IGNoYXIgaXhnYmV2Zl9wcml2X2ZsYWdzX3N0cmluZ3NbXVtFVEhfR1NUUklOR19MRU5dID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzYtI2RlZmluZSBJWEdCRVZGX1BSSVZfRkxBR1NfTEVHQUNZX1JYXHRCSVQoMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjgwOiNkZWZpbmUgSVhHQkVWRl9QUklWX0ZMQUdTX1NUUl9MRU4gQVJSQVlfU0laRShpeGdiZXZmX3ByaXZfZmxhZ3Nfc3RyaW5ncylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6ODI6c3RhdGljIGludCBpeGdiZXZmX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODMtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6ODU6XHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTg2LVx0c3RydWN0IGl4Z2JlX2h3ICpodyA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlaHc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTI5OnN0YXRpYyB1MzIgaXhnYmV2Zl9nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTEzMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoxMzE6XHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTEzMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xMzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoxMzY6c3RhdGljIHZvaWQgaXhnYmV2Zl9zZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTMyIGRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xMzcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTM4Olx0c3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xMzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTQzOnN0YXRpYyBpbnQgaXhnYmV2Zl9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTE0NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTQ5OnN0YXRpYyB2b2lkIGl4Z2JldmZfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTE1MC1cdFx0XHQgICAgIHN0cnVjdCBldGh0b29sX3JlZ3MgKnJlZ3MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTUyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjE1MzpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTU0LVx0c3RydWN0IGl4Z2JlX2h3ICpodyA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlaHc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xNTUtXHR1MzIgKnJlZ3NfYnVmZiA9IHA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoxNTY6XHR1MzIgcmVnc19sZW4gPSBpeGdiZXZmX2dldF9yZWdzX2xlbihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTU3LVx0dTggaTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0yMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoyMjM6c3RhdGljIHZvaWQgaXhnYmV2Zl9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMjI0LVx0XHRcdFx0c3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqZHJ2aW5mbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIyNS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoyMjY6XHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjIyODpcdHN0cnNjcHkoZHJ2aW5mby1cdTAwM2Vkcml2ZXIsIGl4Z2JldmZfZHJpdmVyX25hbWUsIHNpemVvZihkcnZpbmZvLVx1MDAzZWRyaXZlcikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMjI5LVx0c3Ryc2NweShkcnZpbmZvLVx1MDAzZWJ1c19pbmZvLCBwY2lfbmFtZShhZGFwdGVyLVx1MDAzZXBkZXYpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjIzNTpzdGF0aWMgdm9pZCBpeGdiZXZmX2dldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIzNi1cdFx0XHRcdCAgc3RydWN0IGV0aHRvb2xfcmluZ3BhcmFtICpyaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIzOS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoyNDA6XHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTI0MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0yNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoyNDg6c3RhdGljIGludCBpeGdiZXZmX3NldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTI0OS1cdFx0XHRcdCBzdHJ1Y3QgZXRodG9vbF9yaW5ncGFyYW0gKnJpbmcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMjUyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjI1MzpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MjU0Olx0c3RydWN0IGl4Z2JldmZfcmluZyAqdHhfcmluZyA9IE5VTEwsICpyeF9yaW5nID0gTlVMTDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTI1NS1cdHUzMiBuZXdfcnhfY291bnQsIG5ld190eF9jb3VudDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zMDItXHRcdFx0dHhfcmluZ1tpXS5jb3VudCA9IG5ld190eF9jb3VudDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjMwMzpcdFx0XHRlcnIgPSBpeGdiZXZmX3NldHVwX3R4X3Jlc291cmNlcyhcdTAwMjZ0eF9yaW5nW2ldKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTMwNC1cdFx0XHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzA2LVx0XHRcdFx0XHRpLS07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzozMDc6XHRcdFx0XHRcdGl4Z2JldmZfZnJlZV90eF9yZXNvdXJjZXMoXHUwMDI2dHhfcmluZ1tpXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zMDgtXHRcdFx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzIwLVx0XHRcdHR4X3JpbmdbaV0uY291bnQgPSBuZXdfdHhfY291bnQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzozMjE6XHRcdFx0ZXJyID0gaXhnYmV2Zl9zZXR1cF90eF9yZXNvdXJjZXMoXHUwMDI2dHhfcmluZ1tpXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zMjItXHRcdFx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTMyNC1cdFx0XHRcdFx0aS0tO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MzI1Olx0XHRcdFx0XHRpeGdiZXZmX2ZyZWVfdHhfcmVzb3VyY2VzKFx1MDAyNnR4X3JpbmdbaV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzI2LVx0XHRcdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTM1Mi1cdFx0XHRyeF9yaW5nW2ldLmNvdW50ID0gbmV3X3J4X2NvdW50O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MzUzOlx0XHRcdGVyciA9IGl4Z2JldmZfc2V0dXBfcnhfcmVzb3VyY2VzKGFkYXB0ZXIsIFx1MDAyNnJ4X3JpbmdbaV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzU0LVx0XHRcdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zNTYtXHRcdFx0XHRcdGktLTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjM1NzpcdFx0XHRcdFx0aXhnYmV2Zl9mcmVlX3J4X3Jlc291cmNlcyhcdTAwMjZyeF9yaW5nW2ldKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTM1OC1cdFx0XHRcdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zNjgtXHQvKiBicmluZyBpbnRlcmZhY2UgZG93biB0byBwcmVwYXJlIGZvciB1cGRhdGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjM2OTpcdGl4Z2JldmZfZG93bihhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTM3MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zNzMtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFkYXB0ZXItXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjM3NDpcdFx0XHRpeGdiZXZmX2ZyZWVfdHhfcmVzb3VyY2VzKGFkYXB0ZXItXHUwMDNldHhfcmluZ1tpXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zNzUtXHRcdFx0KmFkYXB0ZXItXHUwMDNldHhfcmluZ1tpXSA9IHR4X3JpbmdbaV07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzc5LVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBhZGFwdGVyLVx1MDAzZW51bV94ZHBfcXVldWVzOyBpJiM0MzsmIzQzOywgaiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjM4MDpcdFx0XHRpeGdiZXZmX2ZyZWVfdHhfcmVzb3VyY2VzKGFkYXB0ZXItXHUwMDNleGRwX3Jpbmdbal0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzgxLVx0XHRcdCphZGFwdGVyLVx1MDAzZXhkcF9yaW5nW2pdID0gdHhfcmluZ1tpXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zOTEtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFkYXB0ZXItXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjM5MjpcdFx0XHRpeGdiZXZmX2ZyZWVfcnhfcmVzb3VyY2VzKGFkYXB0ZXItXHUwMDNlcnhfcmluZ1tpXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zOTMtXHRcdFx0KmFkYXB0ZXItXHUwMDNlcnhfcmluZ1tpXSA9IHJ4X3JpbmdbaV07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDAxLVx0LyogcmVzdG9yZSBpbnRlcmZhY2UgdXNpbmcgbmV3IHZhbHVlcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDAyOlx0aXhnYmV2Zl91cChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQwMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00MDgtXHRcdCAgICAgaSBcdTAwM2MgYWRhcHRlci1cdTAwM2VudW1fdHhfcXVldWVzICYjNDM7IGFkYXB0ZXItXHUwMDNlbnVtX3hkcF9xdWV1ZXM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDA5Olx0XHRcdGl4Z2JldmZfZnJlZV90eF9yZXNvdXJjZXMoXHUwMDI2dHhfcmluZ1tpXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00MTAtXHRcdHZmcmVlKHR4X3JpbmcpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjQxNzpzdGF0aWMgaW50IGl4Z2JldmZfZ2V0X3NzZXRfY291bnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHN0cmluZ3NldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQxOC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDMxOnN0YXRpYyB2b2lkIGl4Z2JldmZfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQzMi1cdFx0XHRcdCAgICAgIHN0cnVjdCBldGh0b29sX3N0YXRzICpzdGF0cywgdTY0ICpkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDMzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjQzNDpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDM1LVx0c3RydWN0IHJ0bmxfbGlua19zdGF0czY0IHRlbXA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDM3LVx0dW5zaWduZWQgaW50IHN0YXJ0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDM4Olx0c3RydWN0IGl4Z2JldmZfcmluZyAqcmluZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQzOS1cdGludCBpLCBqO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQ0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjQ0MjpcdGl4Z2JldmZfdXBkYXRlX3N0YXRzKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDQzLVx0bmV0X3N0YXRzID0gZGV2X2dldF9zdGF0cyhuZXRkZXYsIFx1MDAyNnRlbXApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDQ0LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgSVhHQkVWRl9HTE9CQUxfU1RBVFNfTEVOOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDQ1Olx0XHRzd2l0Y2ggKGl4Z2JldmZfZ3N0cmluZ3Nfc3RhdHNbaV0udHlwZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDQ2LVx0XHRjYXNlIE5FVERFVl9TVEFUUzpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQ0Ny1cdFx0XHRwID0gKGNoYXIgKiluZXRfc3RhdHMgJiM0MztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjQ0ODpcdFx0XHRcdFx0aXhnYmV2Zl9nc3RyaW5nc19zdGF0c1tpXS5zdGF0X29mZnNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQ0OS1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00NTEtXHRcdFx0cCA9IChjaGFyICopYWRhcHRlciAmIzQzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDUyOlx0XHRcdFx0XHRpeGdiZXZmX2dzdHJpbmdzX3N0YXRzW2ldLnN0YXRfb2Zmc2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDUzLVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQ1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjQ1OTpcdFx0ZGF0YVtpXSA9IChpeGdiZXZmX2dzdHJpbmdzX3N0YXRzW2ldLnNpemVvZl9zdGF0ID09XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00NjAtXHRcdFx0ICAgc2l6ZW9mKHU2NCkpID8gKih1NjQgKilwIDogKih1MzIgKilwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTUxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjUxNTpzdGF0aWMgdm9pZCBpeGdiZXZmX2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHUzMiBzdHJpbmdzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy01MTYtXHRcdFx0XHR1OCAqZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTUxNy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo1MTg6XHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTUxOS1cdGNoYXIgKnAgPSAoY2hhciAqKWRhdGE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNTI4LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBJWEdCRVZGX0dMT0JBTF9TVEFUU19MRU47IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo1Mjk6XHRcdFx0bWVtY3B5KHAsIGl4Z2JldmZfZ3N0cmluZ3Nfc3RhdHNbaV0uc3RhdF9zdHJpbmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy01MzAtXHRcdFx0ICAgICAgIEVUSF9HU1RSSU5HX0xFTik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNTUzLVx0Y2FzZSBFVEhfU1NfUFJJVl9GTEFHUzpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjU1NDpcdFx0bWVtY3B5KGRhdGEsIGl4Z2JldmZfcHJpdl9mbGFnc19zdHJpbmdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNTU1LVx0XHQgICAgICAgSVhHQkVWRl9QUklWX0ZMQUdTX1NUUl9MRU4gKiBFVEhfR1NUUklOR19MRU4pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTU1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjU2MDpzdGF0aWMgaW50IGl4Z2JldmZfbGlua190ZXN0KHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIsIHU2NCAqZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTU2MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNTc0LS8qIGV0aHRvb2wgcmVnaXN0ZXIgdGVzdCBkYXRhICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo1NzU6c3RydWN0IGl4Z2JldmZfcmVnX3Rlc3Qge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNTc2LVx0dTE2IHJlZztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MDAtLyogZGVmYXVsdCBWRiByZWdpc3RlciB0ZXN0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo2MDE6c3RhdGljIGNvbnN0IHN0cnVjdCBpeGdiZXZmX3JlZ190ZXN0IHJlZ190ZXN0X3ZmW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MDItXHR7IElYR0JFX1ZGUkRCQUwoMCksIDIsIFBBVFRFUk5fVEVTVCwgMHhGRkZGRkY4MCwgMHhGRkZGRkY4MCB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jPTYxND1zdGF0aWMgY29uc3QgdTMyIHJlZ2lzdGVyX3Rlc3RfcGF0dGVybnNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo2MTg6c3RhdGljIGJvb2wgcmVnX3BhdHRlcm5fdGVzdChzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyLCB1NjQgKmRhdGEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MTktXHRcdFx0ICAgICBpbnQgcmVnLCB1MzIgbWFzaywgdTMyIHdyaXRlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTYyNy1cdGZvciAocGF0ID0gMDsgcGF0IFx1MDAzYyBBUlJBWV9TSVpFKHJlZ2lzdGVyX3Rlc3RfcGF0dGVybnMpOyBwYXQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo2Mjg6XHRcdGJlZm9yZSA9IGl4Z2JldmZfcmVhZF9yZWcoXHUwMDI2YWRhcHRlci1cdTAwM2VodywgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTYyOS1cdFx0aXhnYmVfd3JpdGVfcmVnKFx1MDAyNmFkYXB0ZXItXHUwMDNlaHcsIHJlZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTYzMC1cdFx0XHRcdHJlZ2lzdGVyX3Rlc3RfcGF0dGVybnNbcGF0XSBcdTAwMjYgd3JpdGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NjMxOlx0XHR2YWwgPSBpeGdiZXZmX3JlYWRfcmVnKFx1MDAyNmFkYXB0ZXItXHUwMDNlaHcsIHJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MzItXHRcdGlmICh2YWwgIT0gKHJlZ2lzdGVyX3Rlc3RfcGF0dGVybnNbcGF0XSBcdTAwMjYgd3JpdGUgXHUwMDI2IG1hc2spKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNjQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NjQ2OnN0YXRpYyBib29sIHJlZ19zZXRfYW5kX2NoZWNrKHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIsIHU2NCAqZGF0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTY0Ny1cdFx0XHQgICAgICBpbnQgcmVnLCB1MzIgbWFzaywgdTMyIHdyaXRlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTY1NC1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjY1NTpcdGJlZm9yZSA9IGl4Z2JldmZfcmVhZF9yZWcoXHUwMDI2YWRhcHRlci1cdTAwM2VodywgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTY1Ni1cdGl4Z2JlX3dyaXRlX3JlZyhcdTAwMjZhZGFwdGVyLVx1MDAzZWh3LCByZWcsIHdyaXRlIFx1MDAyNiBtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjY1NzpcdHZhbCA9IGl4Z2JldmZfcmVhZF9yZWcoXHUwMDI2YWRhcHRlci1cdTAwM2VodywgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTY1OC1cdGlmICgod3JpdGUgXHUwMDI2IG1hc2spICE9ICh2YWwgXHUwMDI2IG1hc2spKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNjY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NjY5OnN0YXRpYyBpbnQgaXhnYmV2Zl9yZWdfdGVzdChzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyLCB1NjQgKmRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02NzAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NjcxOlx0Y29uc3Qgc3RydWN0IGl4Z2JldmZfcmVnX3Rlc3QgKnRlc3Q7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02NzItXHR1MzIgaTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03MzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo3MzY6c3RhdGljIHZvaWQgaXhnYmV2Zl9kaWFnX3Rlc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTczNy1cdFx0XHQgICAgICBzdHJ1Y3QgZXRodG9vbF90ZXN0ICpldGhfdGVzdCwgdTY0ICpkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzM4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjczOTpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzQwLVx0Ym9vbCBpZl9ydW5uaW5nID0gbmV0aWZfcnVubmluZyhuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc1OC1cdFx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo3NTk6XHRcdGlmIChpeGdiZXZmX2xpbmtfdGVzdChhZGFwdGVyLCBcdTAwMjZkYXRhWzFdKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc2MC1cdFx0XHRldGhfdGVzdC1cdTAwM2VmbGFncyB8PSBFVEhfVEVTVF9GTF9GQUlMRUQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzYzLVx0XHRcdC8qIGluZGljYXRlIHdlJiMzOTtyZSBpbiB0ZXN0IG1vZGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc2NDpcdFx0XHRpeGdiZXZmX2Nsb3NlKG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03NjUtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc2NjpcdFx0XHRpeGdiZXZmX3Jlc2V0KGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzY4LVx0XHRod19kYmcoXHUwMDI2YWRhcHRlci1cdTAwM2VodywgXCYjMzQ7cmVnaXN0ZXIgdGVzdGluZyBzdGFydGluZ1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo3Njk6XHRcdGlmIChpeGdiZXZmX3JlZ190ZXN0KGFkYXB0ZXIsIFx1MDAyNmRhdGFbMF0pKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzcwLVx0XHRcdGV0aF90ZXN0LVx1MDAzZWZsYWdzIHw9IEVUSF9URVNUX0ZMX0ZBSUxFRDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc3MjpcdFx0aXhnYmV2Zl9yZXNldChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc3My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03NzUtXHRcdGlmIChpZl9ydW5uaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6Nzc2Olx0XHRcdGl4Z2JldmZfb3BlbihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzc3LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03NzktXHRcdC8qIE9ubGluZSB0ZXN0cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NzgwOlx0XHRpZiAoaXhnYmV2Zl9saW5rX3Rlc3QoYWRhcHRlciwgXHUwMDI2ZGF0YVsxXSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03ODEtXHRcdFx0ZXRoX3Rlc3QtXHUwMDNlZmxhZ3MgfD0gRVRIX1RFU1RfRkxfRkFJTEVEO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc5MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc5MTpzdGF0aWMgaW50IGl4Z2JldmZfbndheV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzkyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc5MzpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzk1LVx0aWYgKG5ldGlmX3J1bm5pbmcobmV0ZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc5NjpcdFx0aXhnYmV2Zl9yZWluaXRfbG9ja2VkKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzk3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTgwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjgwMTpzdGF0aWMgaW50IGl4Z2JldmZfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy04MDItXHRcdFx0XHRzdHJ1Y3QgZXRodG9vbF9jb2FsZXNjZSAqZWMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODA1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjgwNjpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODA3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTgyNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjgyNzpzdGF0aWMgaW50IGl4Z2JldmZfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy04MjgtXHRcdFx0XHRzdHJ1Y3QgZXRodG9vbF9jb2FsZXNjZSAqZWMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODMxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjgzMjpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6ODMzOlx0c3RydWN0IGl4Z2JldmZfcV92ZWN0b3IgKnFfdmVjdG9yO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODM0LVx0aW50IG51bV92ZWN0b3JzLCBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTg3NS1cdFx0XHRxX3ZlY3Rvci1cdTAwM2VpdHIgPSByeF9pdHJfcGFyYW07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo4NzY6XHRcdGl4Z2JldmZfd3JpdGVfZWl0cihxX3ZlY3Rvcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy04NzctXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6ODgyOnN0YXRpYyB1MzIgaXhnYmV2Zl9nZXRfcnhfcmluZ19jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODgzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjg4NDpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODg1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTg4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjg4OTpzdGF0aWMgdTMyIGl4Z2JldmZfZ2V0X3J4ZmhfaW5kaXJfc2l6ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODkwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjg5MTpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODkyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTg5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjg5OTpzdGF0aWMgdTMyIGl4Z2JldmZfZ2V0X3J4Zmhfa2V5X3NpemUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTkwMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTA0OnN0YXRpYyBpbnQgaXhnYmV2Zl9nZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTA1LVx0XHRcdCAgICBzdHJ1Y3QgZXRodG9vbF9yeGZoX3BhcmFtICpyeGZoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTA2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjkwNzpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTA4LVx0aW50IGVyciA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTE0LVx0XHRcdG1lbWNweShyeGZoLVx1MDAzZWtleSwgYWRhcHRlci1cdTAwM2Vyc3Nfa2V5LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTE1Olx0XHRcdCAgICAgICBpeGdiZXZmX2dldF9yeGZoX2tleV9zaXplKG5ldGRldikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTE2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTkzMS1cdFx0aWYgKHJ4ZmgtXHUwMDNlaW5kaXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5MzI6XHRcdFx0ZXJyID0gaXhnYmV2Zl9nZXRfcmV0YV9sb2NrZWQoXHUwMDI2YWRhcHRlci1cdTAwM2VodyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTkzMy1cdFx0XHRcdFx0XHQgICAgICByeGZoLVx1MDAzZWluZGlyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTkzNi1cdFx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IHJ4ZmgtXHUwMDNla2V5KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTM3Olx0XHRcdGVyciA9IGl4Z2JldmZfZ2V0X3Jzc19rZXlfbG9ja2VkKFx1MDAyNmFkYXB0ZXItXHUwMDNlaHcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy05MzgtXHRcdFx0XHRcdFx0XHQgcnhmaC1cdTAwM2VrZXkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk0NjpzdGF0aWMgdTMyIGl4Z2JldmZfZ2V0X3ByaXZfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk0Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5NDg6XHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk0OS1cdHUzMiBwcml2X2ZsYWdzID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy05NTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5NTc6c3RhdGljIGludCBpeGdiZXZmX3NldF9wcml2X2ZsYWdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHUzMiBwcml2X2ZsYWdzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTU4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk1OTpcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTYwLVx0dW5zaWduZWQgaW50IGZsYWdzID0gYWRhcHRlci1cdTAwM2VmbGFncztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy05NzAtXHRcdGlmIChuZXRpZl9ydW5uaW5nKG5ldGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5NzE6XHRcdFx0aXhnYmV2Zl9yZWluaXRfbG9ja2VkKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTcyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk3NzpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGl4Z2JldmZfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy05NzgtXHQuc3VwcG9ydGVkX2NvYWxlc2NlX3BhcmFtcyA9IEVUSFRPT0xfQ09BTEVTQ0VfVVNFQ1MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5Nzk6XHQuZ2V0X2RydmluZm9cdFx0PSBpeGdiZXZmX2dldF9kcnZpbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTgwOlx0LmdldF9yZWdzX2xlblx0XHQ9IGl4Z2JldmZfZ2V0X3JlZ3NfbGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTgxOlx0LmdldF9yZWdzXHRcdD0gaXhnYmV2Zl9nZXRfcmVncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk4MjpcdC5ud2F5X3Jlc2V0XHRcdD0gaXhnYmV2Zl9ud2F5X3Jlc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTgzLVx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk4NDpcdC5nZXRfcmluZ3BhcmFtXHRcdD0gaXhnYmV2Zl9nZXRfcmluZ3BhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTg1Olx0LnNldF9yaW5ncGFyYW1cdFx0PSBpeGdiZXZmX3NldF9yaW5ncGFyYW0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5ODY6XHQuZ2V0X21zZ2xldmVsXHRcdD0gaXhnYmV2Zl9nZXRfbXNnbGV2ZWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5ODc6XHQuc2V0X21zZ2xldmVsXHRcdD0gaXhnYmV2Zl9zZXRfbXNnbGV2ZWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5ODg6XHQuc2VsZl90ZXN0XHRcdD0gaXhnYmV2Zl9kaWFnX3Rlc3QsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5ODk6XHQuZ2V0X3NzZXRfY291bnRcdFx0PSBpeGdiZXZmX2dldF9zc2V0X2NvdW50LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTkwOlx0LmdldF9zdHJpbmdzXHRcdD0gaXhnYmV2Zl9nZXRfc3RyaW5ncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk5MTpcdC5nZXRfZXRodG9vbF9zdGF0c1x0PSBpeGdiZXZmX2dldF9ldGh0b29sX3N0YXRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTkyOlx0LmdldF9jb2FsZXNjZVx0XHQ9IGl4Z2JldmZfZ2V0X2NvYWxlc2NlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTkzOlx0LnNldF9jb2FsZXNjZVx0XHQ9IGl4Z2JldmZfc2V0X2NvYWxlc2NlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTk0Olx0LmdldF9yeF9yaW5nX2NvdW50XHQ9IGl4Z2JldmZfZ2V0X3J4X3JpbmdfY291bnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5OTU6XHQuZ2V0X3J4ZmhfaW5kaXJfc2l6ZVx0PSBpeGdiZXZmX2dldF9yeGZoX2luZGlyX3NpemUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5OTY6XHQuZ2V0X3J4Zmhfa2V5X3NpemVcdD0gaXhnYmV2Zl9nZXRfcnhmaF9rZXlfc2l6ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk5NzpcdC5nZXRfcnhmaFx0XHQ9IGl4Z2JldmZfZ2V0X3J4ZmgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5OTg6XHQuZ2V0X2xpbmtfa3NldHRpbmdzXHQ9IGl4Z2JldmZfZ2V0X2xpbmtfa3NldHRpbmdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTk5Olx0LmdldF9wcml2X2ZsYWdzXHRcdD0gaXhnYmV2Zl9nZXRfcHJpdl9mbGFncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjEwMDA6XHQuc2V0X3ByaXZfZmxhZ3NcdFx0PSBpeGdiZXZmX3NldF9wcml2X2ZsYWdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTAwMS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTAwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjEwMDM6dm9pZCBpeGdiZXZmX3NldF9ldGh0b29sX29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTAwNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoxMDA1Olx0bmV0ZGV2LVx1MDAzZWV0aHRvb2xfb3BzID0gXHUwMDI2aXhnYmV2Zl9ldGh0b29sX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTEwMDYtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0zLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjQ6I2luY2x1ZGUgXCYjMzQ7aXhnYmV2Zi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtNS0jaW5jbHVkZSBcdTAwM2NuZXQveGZybS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jPTk9c3RhdGljIGNvbnN0IGNoYXIgYWVzX2djbV9uYW1lW10gPSBcJiMzNDtyZmM0MTA2KGdjbShhZXMpKVwmIzM0Oztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMTEtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTI6ICogaXhnYmV2Zl9pcHNlY19zZXRfcGZfc2EgLSBhc2sgdGhlIFBGIHRvIHNldCB1cCBhbiBTQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTEzLSAqIEBhZGFwdGVyOiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0xNy0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTg6c3RhdGljIGludCBpeGdiZXZmX2lwc2VjX3NldF9wZl9zYShzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTE5LVx0XHRcdFx0ICAgc3RydWN0IHhmcm1fc3RhdGUgKnhzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy00Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzo0MzpcdHJldCA9IGl4Z2JldmZfd3JpdGVfbWJ4KGh3LCBtc2didWYsIElYR0JFX1ZGTUFJTEJPWF9TSVpFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy00NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjQ3Olx0cmV0ID0gaXhnYmV2Zl9wb2xsX21ieChodywgbXNnYnVmLCAyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy00OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTYxLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjYyOiAqIGl4Z2JldmZfaXBzZWNfZGVsX3BmX3NhIC0gYXNrIHRoZSBQRiB0byBkZWxldGUgYW4gU0FcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy02My0gKiBAYWRhcHRlcjogYm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtNjctICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjY4OnN0YXRpYyBpbnQgaXhnYmV2Zl9pcHNlY19kZWxfcGZfc2Eoc3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciwgaW50IHBmc2EpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtNjkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy03OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzo4MDpcdGVyciA9IGl4Z2JldmZfd3JpdGVfbWJ4KGh3LCBtc2didWYsIDIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTgxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6ODQ6XHRlcnIgPSBpeGdiZXZmX3BvbGxfbWJ4KGh3LCBtc2didWYsIDIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTg1LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtOTMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6OTQ6ICogaXhnYmV2Zl9pcHNlY19yZXN0b3JlIC0gcmVzdG9yZSB0aGUgSVBzZWMgSFcgc2V0dGluZ3MgYWZ0ZXIgYSByZXNldFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTk1LSAqIEBhZGFwdGVyOiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0xMDAtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjEwMTp2b2lkIGl4Z2JldmZfaXBzZWNfcmVzdG9yZShzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTEwMi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTAzOlx0c3RydWN0IGl4Z2JldmZfaXBzZWMgKmlwc2VjID0gYWRhcHRlci1cdTAwM2VpcHNlYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0xMDQtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gYWRhcHRlci1cdTAwM2VuZXRkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTExNi1cdFx0aWYgKHItXHUwMDNldXNlZCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjExNzpcdFx0XHRyZXQgPSBpeGdiZXZmX2lwc2VjX3NldF9wZl9zYShhZGFwdGVyLCByLVx1MDAzZXhzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0xMTgtXHRcdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMTIzLVx0XHRpZiAodC1cdTAwM2V1c2VkKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTI0Olx0XHRcdHJldCA9IGl4Z2JldmZfaXBzZWNfc2V0X3BmX3NhKGFkYXB0ZXIsIHQtXHUwMDNleHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTEyNS1cdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0xMzItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTMzOiAqIGl4Z2JldmZfaXBzZWNfZmluZF9lbXB0eV9pZHggLSBmaW5kIHRoZSBmaXJzdCB1bnVzZWQgc2VjdXJpdHkgcGFyYW1ldGVyIGluZGV4XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMTM0LSAqIEBpcHNlYzogcG9pbnRlciB0byBJUHNlYyBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM9MTM5PXN0YXRpY1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjE0MDppbnQgaXhnYmV2Zl9pcHNlY19maW5kX2VtcHR5X2lkeChzdHJ1Y3QgaXhnYmV2Zl9pcHNlYyAqaXBzZWMsIGJvb2wgcnh0YWJsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0xNDEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0xNjctLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTY4OiAqIGl4Z2JldmZfaXBzZWNfZmluZF9yeF9zdGF0ZSAtIGZpbmQgdGhlIHN0YXRlIHRoYXQgbWF0Y2hlc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTE2OS0gKiBAaXBzZWM6IHBvaW50ZXIgdG8gSVBzZWMgc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jPTE3Nz1zdGF0aWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzoxNzg6c3RydWN0IHhmcm1fc3RhdGUgKml4Z2JldmZfaXBzZWNfZmluZF9yeF9zdGF0ZShzdHJ1Y3QgaXhnYmV2Zl9pcHNlYyAqaXBzZWMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMTc5LVx0XHRcdFx0XHQgICAgICAgX19iZTMyICpkYWRkciwgdTggcHJvdG8sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTIwMi0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzoyMDM6ICogaXhnYmV2Zl9pcHNlY19wYXJzZV9wcm90b19rZXlzIC0gZmluZCB0aGUga2V5IGFuZCBzYWx0IGJhc2VkIG9uIHRoZSBwcm90b2NvbFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTIwNC0gKiBAZGV2OiBwb2ludGVyIHRvIG5ldCBkZXZpY2UgdG8gcHJvZ3JhbVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0yMTEtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjIxMjpzdGF0aWMgaW50IGl4Z2JldmZfaXBzZWNfcGFyc2VfcHJvdG9fa2V5cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTIxMy1cdFx0XHRcdFx0ICBzdHJ1Y3QgeGZybV9zdGF0ZSAqeHMsXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTc2MAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDUxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGFuIGl4Z2JldmYgUGF0Y2gqKgoKT2theSwgc28gdGhlIG91dHB1dCBjb25maXJtcyBgaXhnYmV2ZmAgaXMgYW4gSW50ZWwgdmlydHVhbCBmdW5jdGlvbiBkcml2ZXIsIHJlc2lkaW5nIGluIHRoZSBleHBlY3RlZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9gIGRpcmVjdG9yeS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O1dhaXQsIFFFTVUgZG9lc24mIzM5O3QgbmF0aXZlbHkgZW11bGF0ZSBgaXhnYmV2ZmAgZGlyZWN0bHkuJiMzNDsgQnV0IHRoZW4sIEkgaGF2ZSB0byBjb25zaWRlcjogZG9lcyBRRU1VIG9mZmVyIGFueSBIeXBlci1WIGVtdWxhdGlvbiB0aGF0IG1pZ2h0IGluZGlyZWN0bHkgaW52b2x2ZSB0aGlzPyBIb2xkIG9uLCB0aGUgcGF0Y2ggc3BlY2lmaWNhbGx5IG1lbnRpb25zICYjMzQ7SHlwZXItViBFNjEwIFZGcyYjMzQ7LiBUaGF0JiMzOTtzIGEga2V5IGNsdWUuIERvZXMgUUVNVSBlbXVsYXRlICp0aG9zZSo/IE5vcGUuCgpUaGVuLCB0aGVyZSYjMzk7cyB0aGUgc3l6a2FsbGVyIGNvbm5lY3Rpb24sIEkgcmVjYWxsIHNlZWluZyBhIGBzeXotY2x1c3RlcmAgY29tbWl0IC0gaXQmIzM5O3MgYSBnb29kIHBvc3NpYmlsaXR5IHRoYXQgdGhpcyBkcml2ZXIgaXMgdGVzdGVkIGJ5IHN5emthbGxlci4KCkxldCYjMzk7cyByZWZlciB0byB0aGUgcHJvbXB0JiMzOTtzIGluc3RydWN0aW9uczogIEl0IHNheXMgJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgaWYgd2UgY2FuJiMzOTt0IGdldCB0byB0aGUgY29kZSwgYW5kIHRoaXMgaXMgZm9yIGFueSBzY2VuYXJpb3Mgbm90IHN1cHBvcnRlZC4gSW4gdGhhdCBjb250ZXh0LCBgaXhnYmV2ZmAgaXMgSW50ZWwmIzM5O3MgMTAgR2lnYWJpdCBQQ0kgRXhwcmVzcyBWaXJ0dWFsIEZ1bmN0aW9uLgoKU28sIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgY2FuIHRoaXMgY29kZSBwYXRoIGJlIHJlYWNoZWQgaW4gYSBRRU1VIGVudmlyb25tZW50PyBRRU1VIGVtdWxhdGVzIGBlMTAwMGAsIGBlMTAwMGVgLCBhbmQgYGlnYmAuIE9rYXksIHNvIGRvZXMgUUVNVSBlbXVsYXRlIGBpeGdiZWA/IExldCBtZSBjaGVjayB0aGUgUUVNVSBzb3VyY2UgY29kZSwgb3IgY29uc2lkZXIgd2hldGhlciBpdCYjMzk7cyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIuIFdhaXQsIGBpeGdiZWAgaXMgYSBzdGFuZGFyZCBJbnRlbCBOSUMsIHNpbWlsYXIgdG8gdGhlIG90aGVycy4gSSByZWNhbGwgdGhhdCBRRU1VIGRvZXMgZW11bGF0ZSBgaWdiYCBhbmQgYGUxMDAwZWAuLi4gYnV0IHdoYXQgYWJvdXQgYGl4Z2JlYD8KCkl0IHNlZW1zIFFFTVUgYWRkZWQgYGlnYmAgc3VwcG9ydCBmYWlybHkgcmVjZW50bHksIHNvIHRoYXQgbWFrZXMgbWUgcXVlc3Rpb24sIGRpZCBpdCBhZGQgYGl4Z2JlYCBhcyB3ZWxsPyBMZXQgbWUgc2VhcmNoLi4uIEFoLCBubywgaXQgc2VlbXMgUUVNVSBoYXMgYGUxMDAwYCwgYGUxMDAwZWAsIGBpZ2JgLiBTbywgbm8gYGl4Z2JlYCB5ZXQuLi4gRXZlbiBpZiBRRU1VICpkaWQqIGVtdWxhdGUgYGl4Z2JlYCwgdGhlIG1vcmUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXQgZW11bGF0ZXMgYGl4Z2JldmZgLiBUaGF0JiMzOTtzIHRoZSByZWFsIGNydXguCgpPa2F5LCB1bHRpbWF0ZWx5IHRoZSBxdWVzdGlvbiB0byBhbnN3ZXI6IENhbiBzeXprYWxsZXIgcmVhY2ggYGl4Z2JldmZgPyBUaGF0JiMzOTtzIHdoYXQgSSBuZWVkIHRvIGludmVzdGlnYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXhnYmV2ZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3N5cy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwODM5CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNjExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFRob3VnaHQgUHJvY2VzcyBvbiB0aGUgaXhnYmV2ZiBhbmQgU3l6a2FsbGVyIFNwZWMgSXNzdWUqKgoKT2theSwgc28gdGhlIGluaXRpYWwgdGFzayBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgSSYjMzk7dmUgaGl0IGEgc25hZy4gSSB3YXMgZ29pbmcgdG8gdXNlIGBncmVwcGVyYCB0byBzZWFyY2ggZm9yIHNvbWV0aGluZywgYnV0IHRoZW4gdGhlIHByb21wdCYjMzk7cyAqdmVyeSogc3BlY2lmaWMuIEl0JiMzOTtzIHRlbGxpbmcgbWUgSSBjYW4mIzM5O3QgdXNlIGBncmVwcGVyYCBvbiBgc3lzL2AgZmlsZXMgb3IgYW55dGhpbmcgd2l0aCBgc3l6X2AsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2Ug4oCTIHRob3NlIGFyZSBTeXprYWxsZXItc3BlY2lmaWMgZGVzY3JpcHRpb25zLCBub3QgYWN0dWFsIGtlcm5lbCBjb2RlLiBUaGUgaW5zdHJ1Y3Rpb25zIHBvaW50IG1lIHRvd2FyZHMgYHJlYWQtc3l6LXNwZWNgIGFuZCBgc3l6LWdyZXBwZXJgLCBidXQgYSBxdWljayBzY2FuIG9mIG15IGF2YWlsYWJsZSB0b29scyByZXZlYWxzLi4uIHRoZXkmIzM5O3JlIG5vdCB0aGVyZSEgVGhlIGxpc3Qgb25seSBnaXZlcyBtZSBgZ3JlcHBlcmAsIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAsIGByZWFkLWZpbGVgLCBhbmQgYHNldC1yZXN1bHRzYC4gU28gSSYjMzk7bSBlZmZlY3RpdmVseSBibG9ja2VkIGZyb20gc2VhcmNoaW5nIHRoZSBzeXprYWxsZXIgc3BlY3MsIHdoaWNoIGlzIHdoYXQgdGhlIGluc3RydWN0aW9ucyAqc2VlbSogdG8gd2FudC4gRmluZSwgSSYjMzk7bGwgaGF2ZSB0byBhZGFwdC4KCk5vdywgb24gdG8gdGhlIGBpeGdiZXZmYCBzaXR1YXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0JiMzOTtzIHJlYWNoYWJsZSBpbiBRRU1VLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoYXQgcGFydGljdWxhciBkZXZpY2UuIEkgcmVtZW1iZXIgaXQgZW11bGF0ZXMgdGhlIGBpZ2JgIGZhbWlseSwgYm90aCBQRiBhbmQgVkYuIEJ1dCBubywgd2FpdCwgUUVNVSAqZG9lc24mIzM5O3QqIGVtdWxhdGUgYGl4Z2JlYCBkaXJlY3RseS4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBRRU1VIGVtdWxhdGVzIGBpeGdiZWAgb3Igbm90LiBMZXQgbWUgY2hlY2sgdGhlIGtlcm5lbCBzb3VyY2UsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jYC4gT2theSwgbm93IEkgcmVjYWxsIHRoaXMgaXMgYW4gSW50ZWwgMTBHYkUgVkYgZHJpdmVyOyBpdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0byBmdW5jdGlvbi4gQWhhLCB0aGUgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0IHNwZWNpZmljYWxseSBtZW50aW9ucyAmIzM0O0h5cGVyLVYgRTYxMCBWRnMuJiMzNDsKCkU2MTAgaXMgYW4gSW50ZWwgRXRoZXJuZXQgQ29udHJvbGxlciwgbGlrZSBFODEwLiBDaGVja2luZyB0aGUgY29kZSwgaXQgdXNlcyBhIHNwZWNpZmljIHN1YnN5c3RlbSBJRDogYElYR0JFX1NVQkRFVl9JRF9FNjEwX1ZGX0hWYC4gVGhpcyBpcyBpbmNyZWRpYmx5IHNwZWNpZmljIOKAkyBhbiBJbnRlbCBFNjEwIFZGICpvbiBIeXBlci1WKi4gQ2FuIHRoaXMgZXZlbiBiZSBlbXVsYXRlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IFRoZSBhbnN3ZXIgaXMgbm8sIGl0JiMzOTtzIG5vdC4gSSYjMzk7bSBwcmV0dHkgc3VyZSBRRU1VIGRvZXNuJiMzOTt0IG9mZmVyIHRoYXQgbGV2ZWwgb2Ygc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLiBTbywgdGhpcyBwYXJ0aWN1bGFyIGNvZGUgcGF0aCByZWxhdGVkIHRvIEU2MTAgVkZzIG9uIEh5cGVyLVYgaXMgKnVucmVhY2hhYmxlKiBpbiBjb21tb24gdmlydHVhbGl6YXRpb24gc2V0dXBzLiBKdXN0IHRvIGJlIGNvbXBsZXRlbHkgdGhvcm91Z2gsIGxldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBgaXhnYmV2ZmAgaXNuJiMzOTt0IGVtdWxhdGVkIGluIHNvZnR3YXJlLiBOb3BlLCBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIE9rYXksIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSBmYWN0cywgY2hlY2tpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmNgIHRvIGxvb2sgYXQgd2hpY2ggUENJIElEcyBpdCBiaW5kcyB0by4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpeGdiZXZmX3BjaV90YmwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jPTQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXhnYmV2Zl9pbmZvICppeGdiZXZmX2luZm9fdGJsW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYy01Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmM6NTg6LyogaXhnYmV2Zl9wY2lfdGJsIC0gUENJIERldmljZSBJRCBUYWJsZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYy01OS0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmMtNjUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jOjY2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpeGdiZXZmX3BjaV90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmMtNjctXHR7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYy0xMDQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmM6MTA1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpeGdiZXZmX3BjaV90YmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYy0xMDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYz00NTYxPXN0YXRpYyB2b2lkIGl4Z2JldmZfYXNzaWduX25ldGRldl9vcHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jLTQ1NzAtICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jOjQ1NzE6ICogQGVudDogZW50cnkgaW4gaXhnYmV2Zl9wY2lfdGJsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jLTQ1NzItICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jPTQ5MTg9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGl4Z2JldmZfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYy00OTE5LVx0Lm5hbWVcdFx0PSBpeGdiZXZmX2RyaXZlcl9uYW1lLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYzo0OTIwOlx0LmlkX3RhYmxlXHQ9IGl4Z2JldmZfcGNpX3RibCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmMtNDkyMS1cdC5wcm9iZVx0XHQ9IGl4Z2JldmZfcHJvYmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4MTQKCQkJCQkJCW91dHB1dDogMTI4CgkJCQkJCQl0aG91Z2h0czogMzgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBgaXhnYmV2ZmAgZHJpdmVyIGhhcyBhIHZlcnkgc3BlY2lmaWMgYXR0YWNobWVudCB0byBQQ0kgSURzLCBhbmQgdGhpcyBwYXRjaCB0YXJnZXRzIGBJWEdCRV9TVUJERVZfSURfRTYxMF9WRl9IVmAsIHdoaWNoIGlzIHRoZSBIeXBlci1WIGZsYXZvciBvZiB0aGUgSW50ZWwgRTYxMCBWRi4gVGhlIHByb2JsZW0gaXMsIFFFTVUsIGFzIGl0IHN0YW5kcywgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgSW50ZWwgRTYxMCBWRnMuIFNvLCByaWdodCBvZmYgdGhlIGJhdCwgd2UgY2FuIHNheSB0aGF0IGluIGEgdHlwaWNhbCBRRU1VIGVudmlyb25tZW50LCB0aGUgY29kZSBpbiB0aGlzIHBhdGNoIGlzIHNpbXBseSB1bnJlYWNoYWJsZS4KCkV2ZW4gaWYgd2UgKmNvdWxkKiBnZXQgUUVNVSB0byBlbXVsYXRlIGBpeGdiZXZmYCwgaXQmIzM5O3MgaW5jcmVkaWJseSB1bmxpa2VseSB0aGF0IGl0IHdvdWxkIGFsc28gYWNjdXJhdGVseSBtb2RlbCB0aGUgSHlwZXItVi1zcGVjaWZpYyBiZWhhdmlvciBvZiB0aGUgRTYxMCBWRiYjMzk7cyBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZS4gVGhlIHBhdGNoIGludHJvZHVjZXMgY29uZGl0aW9uYWxzIGJhc2VkIG9uIHRoZSBzdWJzeXN0ZW0gZGV2aWNlIElEOgoKYGBgYwoJaWYgKGFkYXB0ZXItJmd0O3BkZXYtJmd0O3N1YnN5c3RlbV9kZXZpY2UgPT0gSVhHQkVfU1VCREVWX0lEX0U2MTBfVkZfSFYpIHsKYGBgCgphbmQgY2hlY2tzIGZvciB0aGUgbWFjIHR5cGU6CgpgYGBjCglpZiAobWFjLSZndDt0eXBlID09IGl4Z2JlX21hY19lNjEwX3ZmKSB7CgkJaWYgKGl4Z2JldmZfaHZfcmVhZF9saW5rc19lNjEwKGh3LCAmYW1wO2xpbmtzX3JlZykpIHsKYGBgCgpUaGVzZSBjaGVja3MgZXNzZW50aWFsbHkgZGVtYW5kIGVpdGhlciB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgY2FyZCBpdHNlbGYgb3IgYSBIeXBlci1WIGh5cGVydmlzb3IgdGhhdCYjMzk7cyBzcGVjaWZpY2FsbHkgcGFzc2luZyB0aHJvdWdoIHRoaXMgVkYuIFN5emthbGxlciBydW5uaW5nIGluIGEgR0NFL1FFTVUgc2V0dXAgaXNuJiMzOTt0IGdvaW5nIHRvIGhhdmUgdGhhdC4gSXQmIzM5O3Mgbm90IGdvaW5nIHRvIHNlZSB0aGlzLgoKVGhlcmVmb3JlLCBiZWNhdXNlIHRoaXMgcmVsaWVzIG9uIHNwZWNpZmljLCBub24tZW11bGF0ZWQgaGFyZHdhcmUsIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIGFtIGdvaW5nIHRvIG1hcmsgaXQgYXMgbm90IHdvcnRoIGZ1enppbmcuCgpMZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBBaCwgeWVzLCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBpeGdiZXZmX2dldF9saW5rX2tzZXR0aW5nc2AgYW5kIGBpeGdiZXZmX2h2X2NoZWNrX21hY19saW5rX3ZmYCwgYnV0IHRoZXkmIzM5O3JlICphbHNvKiBndWFyZGVkIGJ5IHRoZXNlIEU2MTAgVkYgY2hlY2tzLiBTbywgdGhlIGVudGlyZSBmdW5jdGlvbmFsIGNoYW5nZSBpcyB1bmV4ZWN1dGFibGUgaW4gdGhlIGRlZmF1bHQgUUVNVSBlbnZpcm9ubWVudC4gQ29uZmlybWVkOiBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaXhnYmV2ZiBkcml2ZXIgdG8gc3VwcG9ydCByZWFkaW5nIGxpbmsgc3BlZWQgZnJvbSBQQ0kgY29uZmlnIHNwYWNlIHNwZWNpZmljYWxseSBmb3IgSW50ZWwgRTYxMCBWaXJ0dWFsIEZ1bmN0aW9ucyBvbiBIeXBlci1WIChJWEdCRV9TVUJERVZfSURfRTYxMF9WRl9IVikuIFRoaXMgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKEludGVsIEU2MTAgTklDKSBwYXNzZWQgdGhyb3VnaCB2aWEgSHlwZXItViwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaXhnYmV2ZiBkcml2ZXIgdG8gc3VwcG9ydCByZWFkaW5nIGxpbmsgc3BlZWQgZnJvbSBQQ0kgY29uZmlnIHNwYWNlIHNwZWNpZmljYWxseSBmb3IgSW50ZWwgRTYxMCBWaXJ0dWFsIEZ1bmN0aW9ucyBvbiBIeXBlci1WIChJWEdCRV9TVUJERVZfSURfRTYxMF9WRl9IVikuIFRoaXMgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKEludGVsIEU2MTAgTklDKSBwYXNzZWQgdGhyb3VnaCB2aWEgSHlwZXItViwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNToyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6MjQ6MjkuNzgzNTk5NTM3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI0NTAwMzM0NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaXhnYmV2ZiBkcml2ZXIgdG8gc3VwcG9ydCByZWFkaW5nIGxpbmsgc3BlZWQgZnJvbSBQQ0kgY29uZmlnIHNwYWNlIHNwZWNpZmljYWxseSBmb3IgSW50ZWwgRTYxMCBWaXJ0dWFsIEZ1bmN0aW9ucyBvbiBIeXBlci1WIChJWEdCRV9TVUJERVZfSURfRTYxMF9WRl9IVikuIFRoaXMgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKEludGVsIEU2MTAgTklDKSBwYXNzZWQgdGhyb3VnaCB2aWEgSHlwZXItViwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNToyNDoyOS43ODM2MDU3MjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwODE4OTQ2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI3YTU3NThjOGY1MzJjODQ4YzNlZjBmY2YwMmQ4MzY0MDQ0MzZhNGJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMjYgMTU6MjQ6MjggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuY1xcbmluZGV4IDUzN2E2MGQ1Mjc2ZjAuLjVkMGZiNGY0ZDlhMzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuY1xcbkBAIC04Myw2ICs4MywxOCBAQCBzdGF0aWMgaW50IGl4Z2JldmZfZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXFxuIHtcXG4gXFx0c3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuK1xcdHN0cnVjdCBpeGdiZV9odyAqaHcgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHc7XFxuK1xcbitcXHQvKiBIeXBlci1WIEU2MTAgVkZzOiByZWFkIGN1cnJlbnQgbGluayBzcGVlZCBmcm9tIFBDSSBjb25maWcgc3BhY2VcXG4rXFx0ICogb24gZXZlcnkgbGluayBzcGVlZCBxdWVyeS5cXG4rXFx0ICovXFxuK1xcdGlmIChhZGFwdGVyLVxcdTAwM2VwZGV2LVxcdTAwM2VzdWJzeXN0ZW1fZGV2aWNlID09IElYR0JFX1NVQkRFVl9JRF9FNjEwX1ZGX0hWKSB7XFxuK1xcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YWRhcHRlci1cXHUwMDNlbWJ4X2xvY2spO1xcbitcXHRcXHRody1cXHUwMDNlbWFjLmdldF9saW5rX3N0YXR1cyA9IHRydWU7XFxuK1xcdFxcdGh3LVxcdTAwM2VtYWMub3BzLmNoZWNrX2xpbmsoaHcsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VsaW5rX3NwZWVkLFxcbitcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWxpbmtfdXAsIGZhbHNlKTtcXG4rXFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW1ieF9sb2NrKTtcXG4rXFx0fVxcbiBcXG4gXFx0ZXRodG9vbF9saW5rX2tzZXR0aW5nc196ZXJvX2xpbmtfbW9kZShjbWQsIHN1cHBvcnRlZCk7XFxuIFxcdGV0aHRvb2xfbGlua19rc2V0dGluZ3NfYWRkX2xpbmtfbW9kZShjbWQsIHN1cHBvcnRlZCwgMTAwMDBiYXNlVF9GdWxsKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jXFxuaW5kZXggZjZkZjg2ZDEyNGI5ZS4uYTg0YjYyNjQxZTliYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL3ZmLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL3ZmLmNcXG5AQCAtMSwxNCArMSwxNyBAQFxcbiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAvKiBDb3B5cmlnaHQoYykgMTk5OSAtIDIwMjQgSW50ZWwgQ29ycG9yYXRpb24uICovXFxuIFxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcXHUwMDNlXFxuK1xcbiAjaW5jbHVkZSBcXFwidmYuaFxcXCJcXG4gI2luY2x1ZGUgXFxcIml4Z2JldmYuaFxcXCJcXG4gXFxuLS8qIE9uIEh5cGVyLVYsIHRvIHJlc2V0LCB3ZSBuZWVkIHRvIHJlYWQgZnJvbSB0aGlzIG9mZnNldFxcbi0gKiBmcm9tIHRoZSBQQ0kgY29uZmlnIHNwYWNlLiBUaGlzIGlzIHRoZSBtZWNoYW5pc20gdXNlZCBvblxcbi0gKiBIeXBlci1WIHRvIHN1cHBvcnQgUEYvVkYgY29tbXVuaWNhdGlvbi5cXG4rLyogT24gSHlwZXItViB0aGUgUEYvVkYgY29tbXVuaWNhdGlvbiBpcyB0aHJvdWdoIGVtdWxhdGVkIFBDSSBjb25maWdcXG4rICogc3BhY2UuIFRoZSByZXNldCBhbmQgbGluayBzdGF0dXMgYXJlIGV4cG9zZWQgYXQgdGhlIG9mZnNldHMgYmVsb3cuXFxuICAqL1xcbi0jZGVmaW5lIElYR0JFX0hWX1JFU0VUX09GRlNFVCAgICAgICAgICAgMHgyMDFcXG4rI2RlZmluZSBJWEdCRV9IVl9SRVNFVF9PRkZTRVRcXHRcXHQweDIwMVxcbisjZGVmaW5lIElYR0JFX0hWX0xJTktfU1RBVFVTX09GRlNFVFxcdDB4MjA5XFxuKyNkZWZpbmUgSVhHQkVfSFZfTElOS19TVEFUVVNfU0laRVxcdDRcXG4gXFxuIHN0YXRpYyBpbmxpbmUgczMyIGl4Z2JldmZfd3JpdGVfbXNnX3JlYWRfYWNrKHN0cnVjdCBpeGdiZV9odyAqaHcsIHUzMiAqbXNnLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgIHUzMiAqcmV0bXNnLCB1MTYgc2l6ZSlcXG5AQCAtOTAxLDYgKzkwNCw0MCBAQCBzdGF0aWMgczMyIGl4Z2JldmZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodyxcXG4gXFx0cmV0dXJuIHJldF92YWw7XFxuIH1cXG4gXFxuKy8qKlxcbisgKiBpeGdiZXZmX2h2X3JlYWRfbGlua3NfZTYxMCAtIHJlYWQgbGluayBzdGF0dXMgZnJvbSBQQ0kgY29uZmlnIHNwYWNlXFxuKyAqIEBodzogcG9pbnRlciB0byBoYXJkd2FyZSBzdHJ1Y3R1cmVcXG4rICogQGxpbmtzX3JlZzogcG9pbnRlciB0byBzdG9yZSByZWFkIHZhbHVlXFxuKyAqXFxuKyAqIE9uIEh5cGVyLVYgRTYxMCBWRnMgdGhlIFZGTElOS1MgcmVnaXN0ZXIgZG9lcyBub3QgY2FycnkgdmFsaWQgbGluayBzcGVlZC5cXG4rICogSW5zdGVhZCwgbGluayBzdGF0dXMgaXMgZXhwb3NlZCB0aHJvdWdoIGVtdWxhdGVkIFBDSSBjb25maWcgc3BhY2UgYXQgb2Zmc2V0XFxuKyAqIDB4MjA5IGluIFZGTElOS1MgcmVnaXN0ZXIgZm9ybWF0LlxcbisgKlxcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLlxcbisgKi9cXG4rc3RhdGljIHMzMiBpeGdiZXZmX2h2X3JlYWRfbGlua3NfZTYxMChzdHJ1Y3QgaXhnYmVfaHcgKmh3LCB1MzIgKmxpbmtzX3JlZylcXG4re1xcbitcXHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gaHctXFx1MDAzZWJhY2s7XFxuK1xcdHU4IGRhdGFbSVhHQkVfSFZfTElOS19TVEFUVVNfU0laRV07XFxuK1xcbitcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1BDSV9NTUNPTkZJRykpIHtcXG4rXFx0XFx0ZGV2X2Vycl9vbmNlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdCAgICAgXFxcImNhbm5vdCByZWFkIGxpbmsgc3RhdHVzLCBQQ0lfTU1DT05GSUcgaXMgcmVxdWlyZWQgZm9yIEh5cGVyLVZcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdH1cXG4rXFxuK1xcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgSVhHQkVfSFZfTElOS19TVEFUVVNfU0laRTsgaSsrKSB7XFxuK1xcdFxcdGludCByZXQgPSBwY2lfcmVhZF9jb25maWdfYnl0ZShhZGFwdGVyLVxcdTAwM2VwZGV2LFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAgSVhHQkVfSFZfTElOS19TVEFUVVNfT0ZGU0VUICsgaSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZkYXRhW2ldKTtcXG4rXFx0XFx0aWYgKHJldClcXG4rXFx0XFx0XFx0cmV0dXJuIHBjaWJpb3NfZXJyX3RvX2Vycm5vKHJldCk7XFxuK1xcdH1cXG4rXFxuK1xcdCpsaW5rc19yZWcgPSBnZXRfdW5hbGlnbmVkX2xlMzIoZGF0YSk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiAvKipcXG4gICogaXhnYmV2Zl9odl9jaGVja19tYWNfbGlua192ZiAtIGNoZWNrIGxpbmtcXG4gICogQGh3OiBwb2ludGVyIHRvIHByaXZhdGUgaGFyZHdhcmUgc3RydWN0XFxuQEAgLTkwOSw2ICs5NDYsNyBAQCBzdGF0aWMgczMyIGl4Z2JldmZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodyxcXG4gICogQGF1dG9uZWdfd2FpdF90b19jb21wbGV0ZTogdW51c2VkXFxuICAqXFxuICAqIEh5cGVyLVYgdmFyaWFudDsgdGhlcmUgaXMgbm8gbWFpbGJveCBjb21tdW5pY2F0aW9uLlxcbisgKiBGb3IgRTYxMCBWRnMsIGxpbmsgc3RhdHVzIGlzIHJlYWQgZnJvbSBlbXVsYXRlZCBQQ0kgY29uZmlnIHNwYWNlLlxcbiAgKi9cXG4gc3RhdGljIHMzMiBpeGdiZXZmX2h2X2NoZWNrX21hY19saW5rX3ZmKHN0cnVjdCBpeGdiZV9odyAqaHcsXFxuIFxcdFxcdFxcdFxcdFxcdGl4Z2JlX2xpbmtfc3BlZWQgKnNwZWVkLFxcbkBAIC05MjYsOCArOTY0LDE2IEBAIHN0YXRpYyBzMzIgaXhnYmV2Zl9odl9jaGVja19tYWNfbGlua192ZihzdHJ1Y3QgaXhnYmVfaHcgKmh3LFxcbiBcXHRpZiAoIW1hYy1cXHUwMDNlZ2V0X2xpbmtfc3RhdHVzKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuLVxcdC8qIGlmIGxpbmsgc3RhdHVzIGlzIGRvd24gbm8gcG9pbnQgaW4gY2hlY2tpbmcgdG8gc2VlIGlmIHBmIGlzIHVwICovXFxuLVxcdGxpbmtzX3JlZyA9IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9WRkxJTktTKTtcXG4rXFx0aWYgKG1hYy1cXHUwMDNldHlwZSA9PSBpeGdiZV9tYWNfZTYxMF92Zikge1xcbitcXHRcXHRpZiAoaXhnYmV2Zl9odl9yZWFkX2xpbmtzX2U2MTAoaHcsIFxcdTAwMjZsaW5rc19yZWcpKSB7XFxuK1xcdFxcdFxcdCpsaW5rX3VwID0gZmFsc2U7XFxuK1xcdFxcdFxcdCpzcGVlZCA9IElYR0JFX0xJTktfU1BFRURfVU5LTk9XTjtcXG4rXFx0XFx0XFx0cmV0dXJuIDA7XFxuK1xcdFxcdH1cXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0bGlua3NfcmVnID0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX1ZGTElOS1MpO1xcbitcXHR9XFxuK1xcbiBcXHRpZiAoIShsaW5rc19yZWcgXFx1MDAyNiBJWEdCRV9MSU5LU19VUCkpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG5AQCAtOTQxLDggKzk4NywxMSBAQCBzdGF0aWMgczMyIGl4Z2JldmZfaHZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodyxcXG4gXFx0XFx0XFx0dWRlbGF5KDEwMCk7XFxuIFxcdFxcdFxcdGxpbmtzX3JlZyA9IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9WRkxJTktTKTtcXG4gXFxuLVxcdFxcdFxcdGlmICghKGxpbmtzX3JlZyBcXHUwMDI2IElYR0JFX0xJTktTX1VQKSlcXG4tXFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdFxcdGlmICghKGxpbmtzX3JlZyBcXHUwMDI2IElYR0JFX0xJTktTX1VQKSkge1xcbitcXHRcXHRcXHRcXHQqbGlua191cCA9IGZhbHNlO1xcbitcXHRcXHRcXHRcXHQqc3BlZWQgPSBJWEdCRV9MSU5LX1NQRUVEX1VOS05PV047XFxuK1xcdFxcdFxcdFxcdHJldHVybiAwO1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG5AQCAtOTU2LDYgKzEwMDUsOSBAQCBzdGF0aWMgczMyIGl4Z2JldmZfaHZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodyxcXG4gXFx0Y2FzZSBJWEdCRV9MSU5LU19TUEVFRF8xMDBfODI1OTk6XFxuIFxcdFxcdCpzcGVlZCA9IElYR0JFX0xJTktfU1BFRURfMTAwX0ZVTEw7XFxuIFxcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHQqc3BlZWQgPSBJWEdCRV9MSU5LX1NQRUVEX1VOS05PV047XFxuK1xcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIFxcbiBcXHQvKiBpZiB3ZSBwYXNzZWQgYWxsIHRoZSB0ZXN0cyBhYm92ZSB0aGVuIHRoZSBsaW5rIGlzIHVwIGFuZCB3ZSBub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNToyNDozMC4xOTIzNzA0M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjYyMDQxMDAwMTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaXhnYmV2ZiBkcml2ZXIgdG8gc3VwcG9ydCByZWFkaW5nIGxpbmsgc3BlZWQgZnJvbSBQQ0kgY29uZmlnIHNwYWNlIHNwZWNpZmljYWxseSBmb3IgSW50ZWwgRTYxMCBWaXJ0dWFsIEZ1bmN0aW9ucyBvbiBIeXBlci1WIChJWEdCRV9TVUJERVZfSURfRTYxMF9WRl9IVikuIFRoaXMgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKEludGVsIEU2MTAgTklDKSBwYXNzZWQgdGhyb3VnaCB2aWEgSHlwZXItViwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyN2E1NzU4YzhmNTMyYzg0OGMzZWYwZmNmMDJkODM2NDA0NDM2YTRiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMjYgMTU6MjQ6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jXG5pbmRleCA1MzdhNjBkNTI3NmYwLi41ZDBmYjRmNGQ5YTMzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jXG5AQCAtODMsNiArODMsMTggQEAgc3RhdGljIGludCBpeGdiZXZmX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbiB7XG4gXHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbitcdHN0cnVjdCBpeGdiZV9odyAqaHcgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZWh3O1xuK1xuK1x0LyogSHlwZXItViBFNjEwIFZGczogcmVhZCBjdXJyZW50IGxpbmsgc3BlZWQgZnJvbSBQQ0kgY29uZmlnIHNwYWNlXG4rXHQgKiBvbiBldmVyeSBsaW5rIHNwZWVkIHF1ZXJ5LlxuK1x0ICovXG4rXHRpZiAoYWRhcHRlci1cdTAwM2VwZGV2LVx1MDAzZXN1YnN5c3RlbV9kZXZpY2UgPT0gSVhHQkVfU1VCREVWX0lEX0U2MTBfVkZfSFYpIHtcbitcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFkYXB0ZXItXHUwMDNlbWJ4X2xvY2spO1xuK1x0XHRody1cdTAwM2VtYWMuZ2V0X2xpbmtfc3RhdHVzID0gdHJ1ZTtcbitcdFx0aHctXHUwMDNlbWFjLm9wcy5jaGVja19saW5rKGh3LCBcdTAwMjZhZGFwdGVyLVx1MDAzZWxpbmtfc3BlZWQsXG4rXHRcdFx0XHQgICAgICAgXHUwMDI2YWRhcHRlci1cdTAwM2VsaW5rX3VwLCBmYWxzZSk7XG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFkYXB0ZXItXHUwMDNlbWJ4X2xvY2spO1xuK1x0fVxuIFxuIFx0ZXRodG9vbF9saW5rX2tzZXR0aW5nc196ZXJvX2xpbmtfbW9kZShjbWQsIHN1cHBvcnRlZCk7XG4gXHRldGh0b29sX2xpbmtfa3NldHRpbmdzX2FkZF9saW5rX21vZGUoY21kLCBzdXBwb3J0ZWQsIDEwMDAwYmFzZVRfRnVsbCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jXG5pbmRleCBmNmRmODZkMTI0YjllLi5hODRiNjI2NDFlOWJjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL3ZmLmNcbkBAIC0xLDE0ICsxLDE3IEBAXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAvKiBDb3B5cmlnaHQoYykgMTk5OSAtIDIwMjQgSW50ZWwgQ29ycG9yYXRpb24uICovXG4gXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbitcbiAjaW5jbHVkZSBcInZmLmhcIlxuICNpbmNsdWRlIFwiaXhnYmV2Zi5oXCJcbiBcbi0vKiBPbiBIeXBlci1WLCB0byByZXNldCwgd2UgbmVlZCB0byByZWFkIGZyb20gdGhpcyBvZmZzZXRcbi0gKiBmcm9tIHRoZSBQQ0kgY29uZmlnIHNwYWNlLiBUaGlzIGlzIHRoZSBtZWNoYW5pc20gdXNlZCBvblxuLSAqIEh5cGVyLVYgdG8gc3VwcG9ydCBQRi9WRiBjb21tdW5pY2F0aW9uLlxuKy8qIE9uIEh5cGVyLVYgdGhlIFBGL1ZGIGNvbW11bmljYXRpb24gaXMgdGhyb3VnaCBlbXVsYXRlZCBQQ0kgY29uZmlnXG4rICogc3BhY2UuIFRoZSByZXNldCBhbmQgbGluayBzdGF0dXMgYXJlIGV4cG9zZWQgYXQgdGhlIG9mZnNldHMgYmVsb3cuXG4gICovXG4tI2RlZmluZSBJWEdCRV9IVl9SRVNFVF9PRkZTRVQgICAgICAgICAgIDB4MjAxXG4rI2RlZmluZSBJWEdCRV9IVl9SRVNFVF9PRkZTRVRcdFx0MHgyMDFcbisjZGVmaW5lIElYR0JFX0hWX0xJTktfU1RBVFVTX09GRlNFVFx0MHgyMDlcbisjZGVmaW5lIElYR0JFX0hWX0xJTktfU1RBVFVTX1NJWkVcdDRcbiBcbiBzdGF0aWMgaW5saW5lIHMzMiBpeGdiZXZmX3dyaXRlX21zZ19yZWFkX2FjayhzdHJ1Y3QgaXhnYmVfaHcgKmh3LCB1MzIgKm1zZyxcbiBcdFx0XHRcdFx0ICAgICB1MzIgKnJldG1zZywgdTE2IHNpemUpXG5AQCAtOTAxLDYgKzkwNCw0MCBAQCBzdGF0aWMgczMyIGl4Z2JldmZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodyxcbiBcdHJldHVybiByZXRfdmFsO1xuIH1cbiBcbisvKipcbisgKiBpeGdiZXZmX2h2X3JlYWRfbGlua3NfZTYxMCAtIHJlYWQgbGluayBzdGF0dXMgZnJvbSBQQ0kgY29uZmlnIHNwYWNlXG4rICogQGh3OiBwb2ludGVyIHRvIGhhcmR3YXJlIHN0cnVjdHVyZVxuKyAqIEBsaW5rc19yZWc6IHBvaW50ZXIgdG8gc3RvcmUgcmVhZCB2YWx1ZVxuKyAqXG4rICogT24gSHlwZXItViBFNjEwIFZGcyB0aGUgVkZMSU5LUyByZWdpc3RlciBkb2VzIG5vdCBjYXJyeSB2YWxpZCBsaW5rIHNwZWVkLlxuKyAqIEluc3RlYWQsIGxpbmsgc3RhdHVzIGlzIGV4cG9zZWQgdGhyb3VnaCBlbXVsYXRlZCBQQ0kgY29uZmlnIHNwYWNlIGF0IG9mZnNldFxuKyAqIDB4MjA5IGluIFZGTElOS1MgcmVnaXN0ZXIgZm9ybWF0LlxuKyAqXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS5cbisgKi9cbitzdGF0aWMgczMyIGl4Z2JldmZfaHZfcmVhZF9saW5rc19lNjEwKHN0cnVjdCBpeGdiZV9odyAqaHcsIHUzMiAqbGlua3NfcmVnKVxuK3tcbitcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBody1cdTAwM2ViYWNrO1xuK1x0dTggZGF0YVtJWEdCRV9IVl9MSU5LX1NUQVRVU19TSVpFXTtcbitcbitcdGlmICghSVNfRU5BQkxFRChDT05GSUdfUENJX01NQ09ORklHKSkge1xuK1x0XHRkZXZfZXJyX29uY2UoXHUwMDI2YWRhcHRlci1cdTAwM2VwZGV2LVx1MDAzZWRldixcbitcdFx0XHQgICAgIFwiY2Fubm90IHJlYWQgbGluayBzdGF0dXMsIFBDSV9NTUNPTkZJRyBpcyByZXF1aXJlZCBmb3IgSHlwZXItVlxcblwiKTtcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0fVxuK1xuK1x0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIElYR0JFX0hWX0xJTktfU1RBVFVTX1NJWkU7IGkrKykge1xuK1x0XHRpbnQgcmV0ID0gcGNpX3JlYWRfY29uZmlnX2J5dGUoYWRhcHRlci1cdTAwM2VwZGV2LFxuK1x0XHRcdFx0XHQgICAgICAgSVhHQkVfSFZfTElOS19TVEFUVVNfT0ZGU0VUICsgaSxcbitcdFx0XHRcdFx0ICAgICAgIFx1MDAyNmRhdGFbaV0pO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdHJldHVybiBwY2liaW9zX2Vycl90b19lcnJubyhyZXQpO1xuK1x0fVxuK1xuK1x0KmxpbmtzX3JlZyA9IGdldF91bmFsaWduZWRfbGUzMihkYXRhKTtcbitcdHJldHVybiAwO1xuK31cbitcbiAvKipcbiAgKiBpeGdiZXZmX2h2X2NoZWNrX21hY19saW5rX3ZmIC0gY2hlY2sgbGlua1xuICAqIEBodzogcG9pbnRlciB0byBwcml2YXRlIGhhcmR3YXJlIHN0cnVjdFxuQEAgLTkwOSw2ICs5NDYsNyBAQCBzdGF0aWMgczMyIGl4Z2JldmZfY2hlY2tfbWFjX2xpbmtfdmYoc3RydWN0IGl4Z2JlX2h3ICpodyxcbiAgKiBAYXV0b25lZ193YWl0X3RvX2NvbXBsZXRlOiB1bnVzZWRcbiAgKlxuICAqIEh5cGVyLVYgdmFyaWFudDsgdGhlcmUgaXMgbm8gbWFpbGJveCBjb21tdW5pY2F0aW9uLlxuKyAqIEZvciBFNjEwIFZGcywgbGluayBzdGF0dXMgaXMgcmVhZCBmcm9tIGVtdWxhdGVkIFBDSSBjb25maWcgc3BhY2UuXG4gICovXG4gc3RhdGljIHMzMiBpeGdiZXZmX2h2X2NoZWNrX21hY19saW5rX3ZmKHN0cnVjdCBpeGdiZV9odyAqaHcsXG4gXHRcdFx0XHRcdGl4Z2JlX2xpbmtfc3BlZWQgKnNwZWVkLFxuQEAgLTkyNiw4ICs5NjQsMTYgQEAgc3RhdGljIHMzMiBpeGdiZXZmX2h2X2NoZWNrX21hY19saW5rX3ZmKHN0cnVjdCBpeGdiZV9odyAqaHcsXG4gXHRpZiAoIW1hYy1cdTAwM2VnZXRfbGlua19zdGF0dXMpXG4gXHRcdGdvdG8gb3V0O1xuIFxuLVx0LyogaWYgbGluayBzdGF0dXMgaXMgZG93biBubyBwb2ludCBpbiBjaGVja2luZyB0byBzZWUgaWYgcGYgaXMgdXAgKi9cbi1cdGxpbmtzX3JlZyA9IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9WRkxJTktTKTtcbitcdGlmIChtYWMtXHUwMDNldHlwZSA9PSBpeGdiZV9tYWNfZTYxMF92Zikge1xuK1x0XHRpZiAoaXhnYmV2Zl9odl9yZWFkX2xpbmtzX2U2MTAoaHcsIFx1MDAyNmxpbmtzX3JlZykpIHtcbitcdFx0XHQqbGlua191cCA9IGZhbHNlO1xuK1x0XHRcdCpzcGVlZCA9IElYR0JFX0xJTktfU1BFRURfVU5LTk9XTjtcbitcdFx0XHRyZXR1cm4gMDtcbitcdFx0fVxuK1x0fSBlbHNlIHtcbitcdFx0bGlua3NfcmVnID0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX1ZGTElOS1MpO1xuK1x0fVxuK1xuIFx0aWYgKCEobGlua3NfcmVnIFx1MDAyNiBJWEdCRV9MSU5LU19VUCkpXG4gXHRcdGdvdG8gb3V0O1xuIFxuQEAgLTk0MSw4ICs5ODcsMTEgQEAgc3RhdGljIHMzMiBpeGdiZXZmX2h2X2NoZWNrX21hY19saW5rX3ZmKHN0cnVjdCBpeGdiZV9odyAqaHcsXG4gXHRcdFx0dWRlbGF5KDEwMCk7XG4gXHRcdFx0bGlua3NfcmVnID0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX1ZGTElOS1MpO1xuIFxuLVx0XHRcdGlmICghKGxpbmtzX3JlZyBcdTAwMjYgSVhHQkVfTElOS1NfVVApKVxuLVx0XHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0aWYgKCEobGlua3NfcmVnIFx1MDAyNiBJWEdCRV9MSU5LU19VUCkpIHtcbitcdFx0XHRcdCpsaW5rX3VwID0gZmFsc2U7XG4rXHRcdFx0XHQqc3BlZWQgPSBJWEdCRV9MSU5LX1NQRUVEX1VOS05PV047XG4rXHRcdFx0XHRyZXR1cm4gMDtcbitcdFx0XHR9XG4gXHRcdH1cbiBcdH1cbiBcbkBAIC05NTYsNiArMTAwNSw5IEBAIHN0YXRpYyBzMzIgaXhnYmV2Zl9odl9jaGVja19tYWNfbGlua192ZihzdHJ1Y3QgaXhnYmVfaHcgKmh3LFxuIFx0Y2FzZSBJWEdCRV9MSU5LU19TUEVFRF8xMDBfODI1OTk6XG4gXHRcdCpzcGVlZCA9IElYR0JFX0xJTktfU1BFRURfMTAwX0ZVTEw7XG4gXHRcdGJyZWFrO1xuK1x0ZGVmYXVsdDpcbitcdFx0KnNwZWVkID0gSVhHQkVfTElOS19TUEVFRF9VTktOT1dOO1xuK1x0XHRicmVhaztcbiBcdH1cbiBcbiBcdC8qIGlmIHdlIHBhc3NlZCBhbGwgdGhlIHRlc3RzIGFib3ZlIHRoZW4gdGhlIGxpbmsgaXMgdXAgYW5kIHdlIG5vXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNToyNDozMC4xOTIzNzIyM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMjU5ODk5MTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaXhnYmV2ZiBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IGltcHJvdmluZyB0aGUgYGl4Z2JldmZgIGRyaXZlciDigJMgdGhlIEludGVsIDEwIEdpZ2FiaXQgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXIuIEl0J3Mgc3BlY2lmaWNhbGx5IGFib3V0IGFkZGluZyB0aGUgYWJpbGl0eSB0byByZWFkIGxpbmsgc3BlZWQgaW5mb3JtYXRpb24gZnJvbSB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2Ugd2hlbiBpdCdzIHJ1bm5pbmcgb24gYSBIeXBlci1WIEU2MTAgVkYuIFRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgYXJlIGluIGBldGh0b29sLmNgIGFuZCBgdmYuY2AsIHdoaWNoIG1ha2VzIHNlbnNlLiBUaGV5J3ZlIHVwZGF0ZWQgYGl4Z2JldmZfZ2V0X2xpbmtfa3NldHRpbmdzYCB0byBncmFiIGxpbmsgc3BlZWQgZXZlcnkgdGltZSBpdCdzIHF1ZXJpZWQsIGJ1dCBvbmx5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBgSVhHQkVfU1VCREVWX0lEX0U2MTBfVkZfSFZgIHN1YmRldmljZS4gVGhleSd2ZSBhbHNvIGFkZGVkIGEgbmV3IGZ1bmN0aW9uLCBgaXhnYmV2Zl9odl9yZWFkX2xpbmtzX2U2MTBgLCB0byBoYW5kbGUgcmVhZGluZyB0aGUgbGluayBzdGF0dXMgZnJvbSBQQ0kgY29uZmlnIHNwYWNlLiBBbmQsIG9mIGNvdXJzZSwgdGhleSd2ZSBtb2RpZmllZCBgaXhnYmV2Zl9odl9jaGVja19tYWNfbGlua192ZmAgdG8gdXRpbGl6ZSB0aGF0IG5ldyBmdW5jdGlvbiBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgaXhnYmVfbWFjX2U2MTBfdmZgIGRldmljZS5cblxuTm93LCBteSBtaW5kIGlzIHJhY2luZy4gYGl4Z2JldmZgIGlzIGEgZHJpdmVyIGZvciBhICpwaHlzaWNhbCogbmV0d29yayBjYXJkIChJbnRlbCAxMEdiRSBWRiksIHJpZ2h0PyBUaGVzZSBWRnMgYXJlIHR5cGljYWxseSBwYXNzZWQgdGhyb3VnaCB0byB2aXJ0dWFsIG1hY2hpbmVzLiBCdXQgdGhlIGRyaXZlciBsaXZlcyBvbiB0aGUgaG9zdCBhbmQgaW4gdGhlIGd1ZXN0LCBzbyBpcyB0aGlzIGRyaXZlciBldmVuICpyZWFjaGFibGUqIGluIGEgZnVsbHkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT9cblxuVHlwaWNhbGx5LCBWRiBkcml2ZXJzIGFyZSB1c2VkIHdpdGhpbiBWTXMgd2hlbiBTUi1JT1YgaXMgaW4gcGxheS4gQnV0LCBJIGRvbid0IHJlY2FsbCBRRU1VIGVtdWxhdGluZyBgaXhnYmV2ZmAgYnkgZGVmYXVsdC4gUUVNVSBoYW5kbGVzIGBlMTAwMGVgLCBgaWdiYCwgYW5kIGBlMTAwMGAsIGJ1dC4uLmRvZXMgaXQgaGF2ZSBhbiBlbXVsYXRpb24gZm9yIGBpeGdiZWAgb3IgYGl4Z2JldmZgPyBJIG5lZWQgdG8gY2hlY2sgdGhlIFFFTVUgc291cmNlIHRvIGJlIHN1cmUuIEknbSBzZWVpbmcgYGh3L25ldC9pZ2IuY2AsIGBody9uZXQvZTEwMDBlLmNgLCBgaHcvbmV0L2UxMDAwLmNgIGluIFFFTVUsIGJ1dCBub3QgYGl4Z2JlKmAuXG5cbk5vLiBRRU1VIGRvZXNuJ3QgZGlyZWN0bHkgZW11bGF0ZSBgaXhnYmVgLiBJdCBzdXBwb3J0cyBgZTEwMDBlYCwgYGlnYmAsIGB2bXhuZXQzYCwgYHZpcnRpby1uZXRgLCBgcnRsODEzOWAsIGBwY25ldGAsIGBuZTJrX3BjaWAsIGBlZXBybzEwMGAsIGB0dWxpcGAsIGJ1dCBub3QgYGl4Z2JlYC5cblxuU28sIGRvZXMgUUVNVSBoYXZlICphbnkqIGBpeGdiZWAgZW11bGF0aW9uPyBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBRRU1VIHNvdXJjZSBjb2RlLCBvciBtYXliZSBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgZm9yIGZ1enppbmcgZWZmb3J0cyByZWxhdGVkIHRvIGBpeGdiZXZmYC5cblxuV2FpdCwgdGhpcyBicmluZ3MgdXAgYW5vdGhlciBwb2ludC4gU3l6a2FsbGVyIGRvZXNuJ3QgZnV6eiBgaXhnYmV2ZmAgKnVubGVzcyogdGhlIGRldmljZSBpcyBlbXVsYXRlZCwgb3Igd2UgaGF2ZSBhIHZpcnR1YWwgZGV2aWNlIHByZXNlbnRlZCB0byBpdC4gU3l6a2FsbGVyIHN1cHBvcnRzIHZhcmlvdXMgZGV2aWNlIGRyaXZlcnMsIHN1Y2ggYXMgYHN5ei1tYWM4MDIxMWAgYW5kIGBzeXotdXNiYC4gQnV0IGZvciBQQ0kgZGV2aWNlcywgaXQgaGVhdmlseSByZWxpZXMgb24gdGhlIFFFTVUgZW11bGF0aW9uIGxheWVyLiBEb2VzIHN5emthbGxlciBhY3R1YWxseSAqc3VwcG9ydCogYGl4Z2JldmZgIGFuZCBoYXZlIGNvdmVyYWdlIGZvciBpdD8gSSdsbCBuZWVkIHRvIGRvIGEgc2VhcmNoIHRvIG1ha2Ugc3VyZS4gVGhpcyBjb3VsZCBpbmZsdWVuY2UgdGhlIGNyaXRpY2FsaXR5IG9mIHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NTQsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNToyNDo0My40NTIyNzgzMjFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkxODg3NzY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpeGdiZXZmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDM0ODcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vLnJlbmFtZXMudHh0PTgxNz1uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2ludGVsL2l4Z2JlIG5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW50ZWwvaXhnYmVcXG5Eb2N1bWVudGF0aW9uLy5yZW5hbWVzLnR4dDo4MTg6bmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9pbnRlbC9peGdiZXZmIG5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW50ZWwvaXhnYmV2ZlxcbkRvY3VtZW50YXRpb24vLnJlbmFtZXMudHh0LTgxOS1uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL21hcnZlbGwvb2N0ZW9udHgyIG5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDJcXG4tLVxcbkRvY3VtZW50YXRpb24vLnJlbmFtZXMudHh0PTg0Mz1uZXR3b3JraW5nL2l4Z2JlIG5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW50ZWwvaXhnYmVcXG5Eb2N1bWVudGF0aW9uLy5yZW5hbWVzLnR4dDo4NDQ6bmV0d29ya2luZy9peGdiZXZmIG5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW50ZWwvaXhnYmV2ZlxcbkRvY3VtZW50YXRpb24vLnJlbmFtZXMudHh0LTg0NS1uZXR3b3JraW5nL25ldGRldi1GQVEgcHJvY2Vzcy9tYWludGFpbmVyLW5ldGRldlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2luZGV4LnJzdD04PUNvbnRlbnRzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2luZGV4LnJzdC0zOS0gICBpbnRlbC9peGdiZVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9pbmRleC5yc3Q6NDA6ICAgaW50ZWwvaXhnYmV2ZlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9pbmRleC5yc3QtNDEtICAgaW50ZWwvaTQwZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yMDM9Y29uZmlnIElYR0JFVkZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjEzLVxcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyMTQ6XFx0ICBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi5yc3RcXHUwMDNlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjE2LVxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjE3OlxcdCAgd2lsbCBiZSBjYWxsZWQgaXhnYmV2Zi4gIE1TSS1YIGludGVycnVwdCBzdXBwb3J0IGlzIHJlcXVpcmVkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMTgtXFx0ICBmb3IgdGhpcyBkcml2ZXIgdG8gd29yayBjb3JyZWN0bHkuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIyMD1jb25maWcgSVhHQkVWRl9JUFNFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMjYtXFx0aGVscFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjI3OlxcdCAgRW5hYmxlIHN1cHBvcnQgZm9yIElQU2VjIG9mZmxvYWQgaW4gaXhnYmV2Zi5rb1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjI4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvTWFrZWZpbGU9MTU9b2JqLSQoQ09ORklHX0lYR0JFKSArPSBpeGdiZS9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfSVhHQkVWRikgKz0gaXhnYmV2Zi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9NYWtlZmlsZS0xNy1vYmotJChDT05GSUdfSTQwRSkgKz0gaTQwZS9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlLmg9MjEyPXN0cnVjdCB2Zl9kYXRhX3N0b3JhZ2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaC0yMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaDoyMzU6ZW51bSBpeGdiZXZmX3hjYXN0X21vZGVzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oLTIzNi1cXHRJWEdCRVZGX1hDQVNUX01PREVfTk9ORSA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL01ha2VmaWxlLTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19JWEdCRVZGKSArPSBpeGdiZXZmLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL01ha2VmaWxlLTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9NYWtlZmlsZTo5Oml4Z2JldmYteSA6PSB2Zi5vIG1ieC5vIGV0aHRvb2wubyBpeGdiZXZmX21haW4ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvTWFrZWZpbGU6MTA6aXhnYmV2Zi0kKENPTkZJR19JWEdCRVZGX0lQU0VDKSArPSBpcHNlYy5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjQ6LyogZXRodG9vbCBzdXBwb3J0IGZvciBpeGdiZXZmICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjE4OiNpbmNsdWRlIFxcXCJpeGdiZXZmLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYz0yMj1zdHJ1Y3QgaXhnYmVfc3RhdHMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzEtXFx0LnR5cGUgPSBJWEdCRVZGX1NUQVRTLCBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MzI6XFx0LnNpemVvZl9zdGF0ID0gc2l6ZW9mX2ZpZWxkKHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIsIF9zdGF0KSwgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjMzOlxcdC5zdGF0X29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIsIF9zdGF0KSBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDM6c3RhdGljIHN0cnVjdCBpeGdiZV9zdGF0cyBpeGdiZXZmX2dzdHJpbmdzX3N0YXRzW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDQtXFx0SVhHQkVWRl9ORVRERVZfU1RBVChyeF9wYWNrZXRzKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTYwLSNkZWZpbmUgSVhHQkVWRl9RVUVVRV9TVEFUU19MRU4gKCBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NjE6XFx0KCgoc3RydWN0IGl4Z2JldmZfYWRhcHRlciAqKW5ldGRldl9wcml2KG5ldGRldikpLVxcdTAwM2VudW1fdHhfcXVldWVzICsgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjYyOlxcdCAoKHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKiluZXRkZXZfcHJpdihuZXRkZXYpKS1cXHUwMDNlbnVtX3hkcF9xdWV1ZXMgKyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NjM6XFx0ICgoc3RydWN0IGl4Z2JldmZfYWRhcHRlciAqKW5ldGRldl9wcml2KG5ldGRldikpLVxcdTAwM2VudW1fcnhfcXVldWVzKSAqIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo2NDpcXHQgKHNpemVvZihzdHJ1Y3QgaXhnYmV2Zl9zdGF0cykgLyBzaXplb2YodTY0KSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NjU6I2RlZmluZSBJWEdCRVZGX0dMT0JBTF9TVEFUU19MRU4gQVJSQVlfU0laRShpeGdiZXZmX2dzdHJpbmdzX3N0YXRzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTY2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM9Njg9c3RhdGljIGNvbnN0IGNoYXIgaXhnYmVfZ3N0cmluZ3NfdGVzdFtdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo3NTpzdGF0aWMgY29uc3QgY2hhciBpeGdiZXZmX3ByaXZfZmxhZ3Nfc3RyaW5nc1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzYtI2RlZmluZSBJWEdCRVZGX1BSSVZfRkxBR1NfTEVHQUNZX1JYXFx0QklUKDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo4MDojZGVmaW5lIElYR0JFVkZfUFJJVl9GTEFHU19TVFJfTEVOIEFSUkFZX1NJWkUoaXhnYmV2Zl9wcml2X2ZsYWdzX3N0cmluZ3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6ODI6c3RhdGljIGludCBpeGdiZXZmX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTgzLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjg1OlxcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTg2LVxcdHN0cnVjdCBpeGdiZV9odyAqaHcgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTI5OnN0YXRpYyB1MzIgaXhnYmV2Zl9nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xMzAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjEzMTpcXHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xMzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xMzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTM2OnN0YXRpYyB2b2lkIGl4Z2JldmZfc2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHUzMiBkYXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTEzNy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTM4OlxcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTEzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTE0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoxNDM6c3RhdGljIGludCBpeGdiZXZmX2dldF9yZWdzX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTE0NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTQ5OnN0YXRpYyB2b2lkIGl4Z2JldmZfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xNTAtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9yZWdzICpyZWdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTUyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoxNTM6XFx0c3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTU0LVxcdHN0cnVjdCBpeGdiZV9odyAqaHcgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTU1LVxcdHUzMiAqcmVnc19idWZmID0gcDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoxNTY6XFx0dTMyIHJlZ3NfbGVuID0gaXhnYmV2Zl9nZXRfcmVnc19sZW4obmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0xNTctXFx0dTggaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIyMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoyMjM6c3RhdGljIHZvaWQgaXhnYmV2Zl9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIyNC1cXHRcXHRcXHRcXHRzdHJ1Y3QgZXRodG9vbF9kcnZpbmZvICpkcnZpbmZvKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIyNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MjI2OlxcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoyMjg6XFx0c3Ryc2NweShkcnZpbmZvLVxcdTAwM2Vkcml2ZXIsIGl4Z2JldmZfZHJpdmVyX25hbWUsIHNpemVvZihkcnZpbmZvLVxcdTAwM2Vkcml2ZXIpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0yMjktXFx0c3Ryc2NweShkcnZpbmZvLVxcdTAwM2VidXNfaW5mbywgcGNpX25hbWUoYWRhcHRlci1cXHUwMDNlcGRldiksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0yMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MjM1OnN0YXRpYyB2b2lkIGl4Z2JldmZfZ2V0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIzNi1cXHRcXHRcXHRcXHQgIHN0cnVjdCBldGh0b29sX3JpbmdwYXJhbSAqcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTIzOS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MjQwOlxcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTI0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTI0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzoyNDg6c3RhdGljIGludCBpeGdiZXZmX3NldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0yNDktXFx0XFx0XFx0XFx0IHN0cnVjdCBldGh0b29sX3JpbmdwYXJhbSAqcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTI1Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MjUzOlxcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjI1NDpcXHRzdHJ1Y3QgaXhnYmV2Zl9yaW5nICp0eF9yaW5nID0gTlVMTCwgKnJ4X3JpbmcgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTI1NS1cXHR1MzIgbmV3X3J4X2NvdW50LCBuZXdfdHhfY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zMDItXFx0XFx0XFx0dHhfcmluZ1tpXS5jb3VudCA9IG5ld190eF9jb3VudDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzozMDM6XFx0XFx0XFx0ZXJyID0gaXhnYmV2Zl9zZXR1cF90eF9yZXNvdXJjZXMoXFx1MDAyNnR4X3JpbmdbaV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTMwNC1cXHRcXHRcXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zMDYtXFx0XFx0XFx0XFx0XFx0aS0tO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjMwNzpcXHRcXHRcXHRcXHRcXHRpeGdiZXZmX2ZyZWVfdHhfcmVzb3VyY2VzKFxcdTAwMjZ0eF9yaW5nW2ldKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zMDgtXFx0XFx0XFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzIwLVxcdFxcdFxcdHR4X3JpbmdbaV0uY291bnQgPSBuZXdfdHhfY291bnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MzIxOlxcdFxcdFxcdGVyciA9IGl4Z2JldmZfc2V0dXBfdHhfcmVzb3VyY2VzKFxcdTAwMjZ0eF9yaW5nW2ldKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zMjItXFx0XFx0XFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzI0LVxcdFxcdFxcdFxcdFxcdGktLTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzozMjU6XFx0XFx0XFx0XFx0XFx0aXhnYmV2Zl9mcmVlX3R4X3Jlc291cmNlcyhcXHUwMDI2dHhfcmluZ1tpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzI2LVxcdFxcdFxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTM1Mi1cXHRcXHRcXHRyeF9yaW5nW2ldLmNvdW50ID0gbmV3X3J4X2NvdW50O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjM1MzpcXHRcXHRcXHRlcnIgPSBpeGdiZXZmX3NldHVwX3J4X3Jlc291cmNlcyhhZGFwdGVyLCBcXHUwMDI2cnhfcmluZ1tpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzU0LVxcdFxcdFxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTM1Ni1cXHRcXHRcXHRcXHRcXHRpLS07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MzU3OlxcdFxcdFxcdFxcdFxcdGl4Z2JldmZfZnJlZV9yeF9yZXNvdXJjZXMoXFx1MDAyNnJ4X3JpbmdbaV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTM1OC1cXHRcXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zNjgtXFx0LyogYnJpbmcgaW50ZXJmYWNlIGRvd24gdG8gcHJlcGFyZSBmb3IgdXBkYXRlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MzY5OlxcdGl4Z2JldmZfZG93bihhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zNzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zNzMtXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjM3NDpcXHRcXHRcXHRpeGdiZXZmX2ZyZWVfdHhfcmVzb3VyY2VzKGFkYXB0ZXItXFx1MDAzZXR4X3JpbmdbaV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTM3NS1cXHRcXHRcXHQqYWRhcHRlci1cXHUwMDNldHhfcmluZ1tpXSA9IHR4X3JpbmdbaV07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zNzktXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZW51bV94ZHBfcXVldWVzOyBpKyssIGorKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjM4MDpcXHRcXHRcXHRpeGdiZXZmX2ZyZWVfdHhfcmVzb3VyY2VzKGFkYXB0ZXItXFx1MDAzZXhkcF9yaW5nW2pdKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy0zODEtXFx0XFx0XFx0KmFkYXB0ZXItXFx1MDAzZXhkcF9yaW5nW2pdID0gdHhfcmluZ1tpXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTM5MS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWRhcHRlci1cXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MzkyOlxcdFxcdFxcdGl4Z2JldmZfZnJlZV9yeF9yZXNvdXJjZXMoYWRhcHRlci1cXHUwMDNlcnhfcmluZ1tpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMzkzLVxcdFxcdFxcdCphZGFwdGVyLVxcdTAwM2VyeF9yaW5nW2ldID0gcnhfcmluZ1tpXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQwMS1cXHQvKiByZXN0b3JlIGludGVyZmFjZSB1c2luZyBuZXcgdmFsdWVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDAyOlxcdGl4Z2JldmZfdXAoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDAzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDA4LVxcdFxcdCAgICAgaSBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZW51bV90eF9xdWV1ZXMgKyBhZGFwdGVyLVxcdTAwM2VudW1feGRwX3F1ZXVlczsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjQwOTpcXHRcXHRcXHRpeGdiZXZmX2ZyZWVfdHhfcmVzb3VyY2VzKFxcdTAwMjZ0eF9yaW5nW2ldKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00MTAtXFx0XFx0dmZyZWUodHhfcmluZyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDE3OnN0YXRpYyBpbnQgaXhnYmV2Zl9nZXRfc3NldF9jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgc3RyaW5nc2V0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQxOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00MzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDMxOnN0YXRpYyB2b2lkIGl4Z2JldmZfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00MzItXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGV0aHRvb2xfc3RhdHMgKnN0YXRzLCB1NjQgKmRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDMzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo0MzQ6XFx0c3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDM1LVxcdHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCB0ZW1wO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDM3LVxcdHVuc2lnbmVkIGludCBzdGFydDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo0Mzg6XFx0c3RydWN0IGl4Z2JldmZfcmluZyAqcmluZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00MzktXFx0aW50IGksIGo7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDQyOlxcdGl4Z2JldmZfdXBkYXRlX3N0YXRzKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQ0My1cXHRuZXRfc3RhdHMgPSBkZXZfZ2V0X3N0YXRzKG5ldGRldiwgXFx1MDAyNnRlbXApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQ0NC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgSVhHQkVWRl9HTE9CQUxfU1RBVFNfTEVOOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo0NDU6XFx0XFx0c3dpdGNoIChpeGdiZXZmX2dzdHJpbmdzX3N0YXRzW2ldLnR5cGUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy00NDYtXFx0XFx0Y2FzZSBORVRERVZfU1RBVFM6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDQ3LVxcdFxcdFxcdHAgPSAoY2hhciAqKW5ldF9zdGF0cyArXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NDQ4OlxcdFxcdFxcdFxcdFxcdGl4Z2JldmZfZ3N0cmluZ3Nfc3RhdHNbaV0uc3RhdF9vZmZzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDQ5LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDUxLVxcdFxcdFxcdHAgPSAoY2hhciAqKWFkYXB0ZXIgK1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjQ1MjpcXHRcXHRcXHRcXHRcXHRpeGdiZXZmX2dzdHJpbmdzX3N0YXRzW2ldLnN0YXRfb2Zmc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQ1My1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTQ1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo0NTk6XFx0XFx0ZGF0YVtpXSA9IChpeGdiZXZmX2dzdHJpbmdzX3N0YXRzW2ldLnNpemVvZl9zdGF0ID09XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNDYwLVxcdFxcdFxcdCAgIHNpemVvZih1NjQpKSA/ICoodTY0ICopcCA6ICoodTMyICopcDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTUxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo1MTU6c3RhdGljIHZvaWQgaXhnYmV2Zl9nZXRfc3RyaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1MzIgc3RyaW5nc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTUxNi1cXHRcXHRcXHRcXHR1OCAqZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy01MTcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjUxODpcXHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy01MTktXFx0Y2hhciAqcCA9IChjaGFyICopZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTUyOC1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgSVhHQkVWRl9HTE9CQUxfU1RBVFNfTEVOOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo1Mjk6XFx0XFx0XFx0bWVtY3B5KHAsIGl4Z2JldmZfZ3N0cmluZ3Nfc3RhdHNbaV0uc3RhdF9zdHJpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNTMwLVxcdFxcdFxcdCAgICAgICBFVEhfR1NUUklOR19MRU4pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNTUzLVxcdGNhc2UgRVRIX1NTX1BSSVZfRkxBR1M6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NTU0OlxcdFxcdG1lbWNweShkYXRhLCBpeGdiZXZmX3ByaXZfZmxhZ3Nfc3RyaW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy01NTUtXFx0XFx0ICAgICAgIElYR0JFVkZfUFJJVl9GTEFHU19TVFJfTEVOICogRVRIX0dTVFJJTkdfTEVOKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTU1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo1NjA6c3RhdGljIGludCBpeGdiZXZmX2xpbmtfdGVzdChzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyLCB1NjQgKmRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNTYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTU3NC0vKiBldGh0b29sIHJlZ2lzdGVyIHRlc3QgZGF0YSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjU3NTpzdHJ1Y3QgaXhnYmV2Zl9yZWdfdGVzdCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNTc2LVxcdHUxNiByZWc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MDAtLyogZGVmYXVsdCBWRiByZWdpc3RlciB0ZXN0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NjAxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXhnYmV2Zl9yZWdfdGVzdCByZWdfdGVzdF92ZltdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTYwMi1cXHR7IElYR0JFX1ZGUkRCQUwoMCksIDIsIFBBVFRFUk5fVEVTVCwgMHhGRkZGRkY4MCwgMHhGRkZGRkY4MCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM9NjE0PXN0YXRpYyBjb25zdCB1MzIgcmVnaXN0ZXJfdGVzdF9wYXR0ZXJuc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNjE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjYxODpzdGF0aWMgYm9vbCByZWdfcGF0dGVybl90ZXN0KHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIsIHU2NCAqZGF0YSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MTktXFx0XFx0XFx0ICAgICBpbnQgcmVnLCB1MzIgbWFzaywgdTMyIHdyaXRlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNjI3LVxcdGZvciAocGF0ID0gMDsgcGF0IFxcdTAwM2MgQVJSQVlfU0laRShyZWdpc3Rlcl90ZXN0X3BhdHRlcm5zKTsgcGF0KyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo2Mjg6XFx0XFx0YmVmb3JlID0gaXhnYmV2Zl9yZWFkX3JlZyhcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHcsIHJlZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNjI5LVxcdFxcdGl4Z2JlX3dyaXRlX3JlZyhcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHcsIHJlZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MzAtXFx0XFx0XFx0XFx0cmVnaXN0ZXJfdGVzdF9wYXR0ZXJuc1twYXRdIFxcdTAwMjYgd3JpdGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjYzMTpcXHRcXHR2YWwgPSBpeGdiZXZmX3JlYWRfcmVnKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodywgcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02MzItXFx0XFx0aWYgKHZhbCAhPSAocmVnaXN0ZXJfdGVzdF9wYXR0ZXJuc1twYXRdIFxcdTAwMjYgd3JpdGUgXFx1MDAyNiBtYXNrKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNjQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjY0NjpzdGF0aWMgYm9vbCByZWdfc2V0X2FuZF9jaGVjayhzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyLCB1NjQgKmRhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNjQ3LVxcdFxcdFxcdCAgICAgIGludCByZWcsIHUzMiBtYXNrLCB1MzIgd3JpdGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02NTQtXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjY1NTpcXHRiZWZvcmUgPSBpeGdiZXZmX3JlYWRfcmVnKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodywgcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02NTYtXFx0aXhnYmVfd3JpdGVfcmVnKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodywgcmVnLCB3cml0ZSBcXHUwMDI2IG1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjY1NzpcXHR2YWwgPSBpeGdiZXZmX3JlYWRfcmVnKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodywgcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy02NTgtXFx0aWYgKCh3cml0ZSBcXHUwMDI2IG1hc2spICE9ICh2YWwgXFx1MDAyNiBtYXNrKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNjY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjY2OTpzdGF0aWMgaW50IGl4Z2JldmZfcmVnX3Rlc3Qoc3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciwgdTY0ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTY3MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NjcxOlxcdGNvbnN0IHN0cnVjdCBpeGdiZXZmX3JlZ190ZXN0ICp0ZXN0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTY3Mi1cXHR1MzIgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTczNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo3MzY6c3RhdGljIHZvaWQgaXhnYmV2Zl9kaWFnX3Rlc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03MzctXFx0XFx0XFx0ICAgICAgc3RydWN0IGV0aHRvb2xfdGVzdCAqZXRoX3Rlc3QsIHU2NCAqZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03Mzgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjczOTpcXHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03NDAtXFx0Ym9vbCBpZl9ydW5uaW5nID0gbmV0aWZfcnVubmluZyhuZXRkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzU4LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc1OTpcXHRcXHRpZiAoaXhnYmV2Zl9saW5rX3Rlc3QoYWRhcHRlciwgXFx1MDAyNmRhdGFbMV0pKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc2MC1cXHRcXHRcXHRldGhfdGVzdC1cXHUwMDNlZmxhZ3MgfD0gRVRIX1RFU1RfRkxfRkFJTEVEO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzYzLVxcdFxcdFxcdC8qIGluZGljYXRlIHdlJ3JlIGluIHRlc3QgbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc2NDpcXHRcXHRcXHRpeGdiZXZmX2Nsb3NlKG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzY1LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo3NjY6XFx0XFx0XFx0aXhnYmV2Zl9yZXNldChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03NjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzY4LVxcdFxcdGh3X2RiZyhcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHcsIFxcXCJyZWdpc3RlciB0ZXN0aW5nIHN0YXJ0aW5nXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo3Njk6XFx0XFx0aWYgKGl4Z2JldmZfcmVnX3Rlc3QoYWRhcHRlciwgXFx1MDAyNmRhdGFbMF0pKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc3MC1cXHRcXHRcXHRldGhfdGVzdC1cXHUwMDNlZmxhZ3MgfD0gRVRIX1RFU1RfRkxfRkFJTEVEO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo3NzI6XFx0XFx0aXhnYmV2Zl9yZXNldChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03NzMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03NzUtXFx0XFx0aWYgKGlmX3J1bm5pbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6Nzc2OlxcdFxcdFxcdGl4Z2JldmZfb3BlbihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc3Ny1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzc5LVxcdFxcdC8qIE9ubGluZSB0ZXN0cyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc4MDpcXHRcXHRpZiAoaXhnYmV2Zl9saW5rX3Rlc3QoYWRhcHRlciwgXFx1MDAyNmRhdGFbMV0pKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc4MS1cXHRcXHRcXHRldGhfdGVzdC1cXHUwMDNlZmxhZ3MgfD0gRVRIX1RFU1RfRkxfRkFJTEVEO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtNzkwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjc5MTpzdGF0aWMgaW50IGl4Z2JldmZfbndheV9yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc5Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6NzkzOlxcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc5NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy03OTUtXFx0aWYgKG5ldGlmX3J1bm5pbmcobmV0ZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo3OTY6XFx0XFx0aXhnYmV2Zl9yZWluaXRfbG9ja2VkKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTc5Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTgwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo4MDE6c3RhdGljIGludCBpeGdiZXZmX2dldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTgwMi1cXHRcXHRcXHRcXHRzdHJ1Y3QgZXRodG9vbF9jb2FsZXNjZSAqZWMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy04MDUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjgwNjpcXHRzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy04MDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy04MjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6ODI3OnN0YXRpYyBpbnQgaXhnYmV2Zl9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy04MjgtXFx0XFx0XFx0XFx0c3RydWN0IGV0aHRvb2xfY29hbGVzY2UgKmVjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODMxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo4MzI6XFx0c3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6ODMzOlxcdHN0cnVjdCBpeGdiZXZmX3FfdmVjdG9yICpxX3ZlY3RvcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy04MzQtXFx0aW50IG51bV92ZWN0b3JzLCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODc1LVxcdFxcdFxcdHFfdmVjdG9yLVxcdTAwM2VpdHIgPSByeF9pdHJfcGFyYW07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6ODc2OlxcdFxcdGl4Z2JldmZfd3JpdGVfZWl0cihxX3ZlY3Rvcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODc3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTg4MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo4ODI6c3RhdGljIHUzMiBpeGdiZXZmX2dldF9yeF9yaW5nX2NvdW50KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODgzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo4ODQ6XFx0c3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODg1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtODg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjg4OTpzdGF0aWMgdTMyIGl4Z2JldmZfZ2V0X3J4ZmhfaW5kaXJfc2l6ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTg5MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6ODkxOlxcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTg5Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTg5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo4OTk6c3RhdGljIHUzMiBpeGdiZXZmX2dldF9yeGZoX2tleV9zaXplKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTAwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTkwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5MDQ6c3RhdGljIGludCBpeGdiZXZmX2dldF9yeGZoKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTA1LVxcdFxcdFxcdCAgICBzdHJ1Y3QgZXRodG9vbF9yeGZoX3BhcmFtICpyeGZoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTkwNi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTA3OlxcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTkwOC1cXHRpbnQgZXJyID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTkxNC1cXHRcXHRcXHRtZW1jcHkocnhmaC1cXHUwMDNla2V5LCBhZGFwdGVyLVxcdTAwM2Vyc3Nfa2V5LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjkxNTpcXHRcXHRcXHQgICAgICAgaXhnYmV2Zl9nZXRfcnhmaF9rZXlfc2l6ZShuZXRkZXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy05MTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy05MzEtXFx0XFx0aWYgKHJ4ZmgtXFx1MDAzZWluZGlyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjkzMjpcXHRcXHRcXHRlcnIgPSBpeGdiZXZmX2dldF9yZXRhX2xvY2tlZChcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTMzLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHJ4ZmgtXFx1MDAzZWluZGlyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTM2LVxcdFxcdGlmICghZXJyIFxcdTAwMjZcXHUwMDI2IHJ4ZmgtXFx1MDAzZWtleSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5Mzc6XFx0XFx0XFx0ZXJyID0gaXhnYmV2Zl9nZXRfcnNzX2tleV9sb2NrZWQoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWh3LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTkzOC1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgcnhmaC1cXHUwMDNla2V5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5NDY6c3RhdGljIHUzMiBpeGdiZXZmX2dldF9wcml2X2ZsYWdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTQ3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5NDg6XFx0c3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTQ5LVxcdHUzMiBwcml2X2ZsYWdzID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5NTc6c3RhdGljIGludCBpeGdiZXZmX3NldF9wcml2X2ZsYWdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHUzMiBwcml2X2ZsYWdzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk1OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTU5OlxcdHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk2MC1cXHR1bnNpZ25lZCBpbnQgZmxhZ3MgPSBhZGFwdGVyLVxcdTAwM2VmbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk3MC1cXHRcXHRpZiAobmV0aWZfcnVubmluZyhuZXRkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk3MTpcXHRcXHRcXHRpeGdiZXZmX3JlaW5pdF9sb2NrZWQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtOTcyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5Nzc6c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpeGdiZXZmX2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTk3OC1cXHQuc3VwcG9ydGVkX2NvYWxlc2NlX3BhcmFtcyA9IEVUSFRPT0xfQ09BTEVTQ0VfVVNFQ1MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTc5OlxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gaXhnYmV2Zl9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5ODA6XFx0LmdldF9yZWdzX2xlblxcdFxcdD0gaXhnYmV2Zl9nZXRfcmVnc19sZW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTgxOlxcdC5nZXRfcmVnc1xcdFxcdD0gaXhnYmV2Zl9nZXRfcmVncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5ODI6XFx0Lm53YXlfcmVzZXRcXHRcXHQ9IGl4Z2JldmZfbndheV9yZXNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYy05ODMtXFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk4NDpcXHQuZ2V0X3JpbmdwYXJhbVxcdFxcdD0gaXhnYmV2Zl9nZXRfcmluZ3BhcmFtLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk4NTpcXHQuc2V0X3JpbmdwYXJhbVxcdFxcdD0gaXhnYmV2Zl9zZXRfcmluZ3BhcmFtLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk4NjpcXHQuZ2V0X21zZ2xldmVsXFx0XFx0PSBpeGdiZXZmX2dldF9tc2dsZXZlbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5ODc6XFx0LnNldF9tc2dsZXZlbFxcdFxcdD0gaXhnYmV2Zl9zZXRfbXNnbGV2ZWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTg4OlxcdC5zZWxmX3Rlc3RcXHRcXHQ9IGl4Z2JldmZfZGlhZ190ZXN0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk4OTpcXHQuZ2V0X3NzZXRfY291bnRcXHRcXHQ9IGl4Z2JldmZfZ2V0X3NzZXRfY291bnQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTkwOlxcdC5nZXRfc3RyaW5nc1xcdFxcdD0gaXhnYmV2Zl9nZXRfc3RyaW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5OTE6XFx0LmdldF9ldGh0b29sX3N0YXRzXFx0PSBpeGdiZXZmX2dldF9ldGh0b29sX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk5MjpcXHQuZ2V0X2NvYWxlc2NlXFx0XFx0PSBpeGdiZXZmX2dldF9jb2FsZXNjZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5OTM6XFx0LnNldF9jb2FsZXNjZVxcdFxcdD0gaXhnYmV2Zl9zZXRfY29hbGVzY2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTk0OlxcdC5nZXRfcnhfcmluZ19jb3VudFxcdD0gaXhnYmV2Zl9nZXRfcnhfcmluZ19jb3VudCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5OTU6XFx0LmdldF9yeGZoX2luZGlyX3NpemVcXHQ9IGl4Z2JldmZfZ2V0X3J4ZmhfaW5kaXJfc2l6ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2V0aHRvb2wuYzo5OTY6XFx0LmdldF9yeGZoX2tleV9zaXplXFx0PSBpeGdiZXZmX2dldF9yeGZoX2tleV9zaXplLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk5NzpcXHQuZ2V0X3J4ZmhcXHRcXHQ9IGl4Z2JldmZfZ2V0X3J4ZmgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6OTk4OlxcdC5nZXRfbGlua19rc2V0dGluZ3NcXHQ9IGl4Z2JldmZfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jOjk5OTpcXHQuZ2V0X3ByaXZfZmxhZ3NcXHRcXHQ9IGl4Z2JldmZfZ2V0X3ByaXZfZmxhZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTAwMDpcXHQuc2V0X3ByaXZfZmxhZ3NcXHRcXHQ9IGl4Z2JldmZfc2V0X3ByaXZfZmxhZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTAwMS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvZXRodG9vbC5jLTEwMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTAwMzp2b2lkIGl4Z2JldmZfc2V0X2V0aHRvb2xfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTAwNC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmM6MTAwNTpcXHRuZXRkZXYtXFx1MDAzZWV0aHRvb2xfb3BzID0gXFx1MDAyNml4Z2JldmZfZXRodG9vbF9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9ldGh0b29sLmMtMTAwNi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6NDojaW5jbHVkZSBcXFwiaXhnYmV2Zi5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy01LSNpbmNsdWRlIFxcdTAwM2NuZXQveGZybS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jPTk9c3RhdGljIGNvbnN0IGNoYXIgYWVzX2djbV9uYW1lW10gPSBcXFwicmZjNDEwNihnY20oYWVzKSlcXFwiO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTExLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzoxMjogKiBpeGdiZXZmX2lwc2VjX3NldF9wZl9zYSAtIGFzayB0aGUgUEYgdG8gc2V0IHVwIGFuIFNBXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTEzLSAqIEBhZGFwdGVyOiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTE3LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTg6c3RhdGljIGludCBpeGdiZXZmX2lwc2VjX3NldF9wZl9zYShzdHJ1Y3QgaXhnYmV2Zl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0xOS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgeGZybV9zdGF0ZSAqeHMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtNDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjQzOlxcdHJldCA9IGl4Z2JldmZfd3JpdGVfbWJ4KGh3LCBtc2didWYsIElYR0JFX1ZGTUFJTEJPWF9TSVpFKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtNDQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy00Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6NDc6XFx0cmV0ID0gaXhnYmV2Zl9wb2xsX21ieChodywgbXNnYnVmLCAyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtNDgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy02MS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6NjI6ICogaXhnYmV2Zl9pcHNlY19kZWxfcGZfc2EgLSBhc2sgdGhlIFBGIHRvIGRlbGV0ZSBhbiBTQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy02My0gKiBAYWRhcHRlcjogYm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy02Ny0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjY4OnN0YXRpYyBpbnQgaXhnYmV2Zl9pcHNlY19kZWxfcGZfc2Eoc3RydWN0IGl4Z2JldmZfYWRhcHRlciAqYWRhcHRlciwgaW50IHBmc2EpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy03OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6ODA6XFx0ZXJyID0gaXhnYmV2Zl93cml0ZV9tYngoaHcsIG1zZ2J1ZiwgMik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTgxLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjg0OlxcdGVyciA9IGl4Z2JldmZfcG9sbF9tYngoaHcsIG1zZ2J1ZiwgMik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTg1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtOTMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjk0OiAqIGl4Z2JldmZfaXBzZWNfcmVzdG9yZSAtIHJlc3RvcmUgdGhlIElQc2VjIEhXIHNldHRpbmdzIGFmdGVyIGEgcmVzZXRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtOTUtICogQGFkYXB0ZXI6IGJvYXJkIHByaXZhdGUgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMTAwLSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTAxOnZvaWQgaXhnYmV2Zl9pcHNlY19yZXN0b3JlKHN0cnVjdCBpeGdiZXZmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTEwMi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjEwMzpcXHRzdHJ1Y3QgaXhnYmV2Zl9pcHNlYyAqaXBzZWMgPSBhZGFwdGVyLVxcdTAwM2VpcHNlYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMTA0LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBhZGFwdGVyLVxcdTAwM2VuZXRkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMTE2LVxcdFxcdGlmIChyLVxcdTAwM2V1c2VkKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jOjExNzpcXHRcXHRcXHRyZXQgPSBpeGdiZXZmX2lwc2VjX3NldF9wZl9zYShhZGFwdGVyLCByLVxcdTAwM2V4cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTExOC1cXHRcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0xMjMtXFx0XFx0aWYgKHQtXFx1MDAzZXVzZWQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTI0OlxcdFxcdFxcdHJldCA9IGl4Z2JldmZfaXBzZWNfc2V0X3BmX3NhKGFkYXB0ZXIsIHQtXFx1MDAzZXhzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMTI1LVxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTEzMi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM6MTMzOiAqIGl4Z2JldmZfaXBzZWNfZmluZF9lbXB0eV9pZHggLSBmaW5kIHRoZSBmaXJzdCB1bnVzZWQgc2VjdXJpdHkgcGFyYW1ldGVyIGluZGV4XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTEzNC0gKiBAaXBzZWM6IHBvaW50ZXIgdG8gSVBzZWMgc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM9MTM5PXN0YXRpY1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzoxNDA6aW50IGl4Z2JldmZfaXBzZWNfZmluZF9lbXB0eV9pZHgoc3RydWN0IGl4Z2JldmZfaXBzZWMgKmlwc2VjLCBib29sIHJ4dGFibGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTE0MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMTY3LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzoxNjg6ICogaXhnYmV2Zl9pcHNlY19maW5kX3J4X3N0YXRlIC0gZmluZCB0aGUgc3RhdGUgdGhhdCBtYXRjaGVzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTE2OS0gKiBAaXBzZWM6IHBvaW50ZXIgdG8gSVBzZWMgc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmM9MTc3PXN0YXRpY1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzoxNzg6c3RydWN0IHhmcm1fc3RhdGUgKml4Z2JldmZfaXBzZWNfZmluZF9yeF9zdGF0ZShzdHJ1Y3QgaXhnYmV2Zl9pcHNlYyAqaXBzZWMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9pcHNlYy5jLTE3OS1cXHRcXHRcXHRcXHRcXHQgICAgICAgX19iZTMyICpkYWRkciwgdTggcHJvdG8sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMjAyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzoyMDM6ICogaXhnYmV2Zl9pcHNlY19wYXJzZV9wcm90b19rZXlzIC0gZmluZCB0aGUga2V5IGFuZCBzYWx0IGJhc2VkIG9uIHRoZSBwcm90b2NvbFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0yMDQtICogQGRldjogcG9pbnRlciB0byBuZXQgZGV2aWNlIHRvIHByb2dyYW1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYy0yMTEtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXBzZWMuYzoyMTI6c3RhdGljIGludCBpeGdiZXZmX2lwc2VjX3BhcnNlX3Byb3RvX2tleXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2lwc2VjLmMtMjEzLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHhmcm1fc3RhdGUgKnhzLFxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNToyNDo0NS4zNzExNjAzMjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzI5MjM5MDI4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGFuIGl4Z2JldmYgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgb3V0cHV0IGNvbmZpcm1zIGBpeGdiZXZmYCBpcyBhbiBJbnRlbCB2aXJ0dWFsIGZ1bmN0aW9uIGRyaXZlciwgcmVzaWRpbmcgaW4gdGhlIGV4cGVjdGVkIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2AgZGlyZWN0b3J5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiV2FpdCwgUUVNVSBkb2Vzbid0IG5hdGl2ZWx5IGVtdWxhdGUgYGl4Z2JldmZgIGRpcmVjdGx5LlwiIEJ1dCB0aGVuLCBJIGhhdmUgdG8gY29uc2lkZXI6IGRvZXMgUUVNVSBvZmZlciBhbnkgSHlwZXItViBlbXVsYXRpb24gdGhhdCBtaWdodCBpbmRpcmVjdGx5IGludm9sdmUgdGhpcz8gSG9sZCBvbiwgdGhlIHBhdGNoIHNwZWNpZmljYWxseSBtZW50aW9ucyBcIkh5cGVyLVYgRTYxMCBWRnNcIi4gVGhhdCdzIGEga2V5IGNsdWUuIERvZXMgUUVNVSBlbXVsYXRlICp0aG9zZSo/IE5vcGUuXG5cblRoZW4sIHRoZXJlJ3MgdGhlIHN5emthbGxlciBjb25uZWN0aW9uLCBJIHJlY2FsbCBzZWVpbmcgYSBgc3l6LWNsdXN0ZXJgIGNvbW1pdCAtIGl0J3MgYSBnb29kIHBvc3NpYmlsaXR5IHRoYXQgdGhpcyBkcml2ZXIgaXMgdGVzdGVkIGJ5IHN5emthbGxlci5cblxuTGV0J3MgcmVmZXIgdG8gdGhlIHByb21wdCdzIGluc3RydWN0aW9uczogIEl0IHNheXMgXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlXCIgaWYgd2UgY2FuJ3QgZ2V0IHRvIHRoZSBjb2RlLCBhbmQgdGhpcyBpcyBmb3IgYW55IHNjZW5hcmlvcyBub3Qgc3VwcG9ydGVkLiBJbiB0aGF0IGNvbnRleHQsIGBpeGdiZXZmYCBpcyBJbnRlbCdzIDEwIEdpZ2FiaXQgUENJIEV4cHJlc3MgVmlydHVhbCBGdW5jdGlvbi5cblxuU28sIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgY2FuIHRoaXMgY29kZSBwYXRoIGJlIHJlYWNoZWQgaW4gYSBRRU1VIGVudmlyb25tZW50PyBRRU1VIGVtdWxhdGVzIGBlMTAwMGAsIGBlMTAwMGVgLCBhbmQgYGlnYmAuIE9rYXksIHNvIGRvZXMgUUVNVSBlbXVsYXRlIGBpeGdiZWA/IExldCBtZSBjaGVjayB0aGUgUUVNVSBzb3VyY2UgY29kZSwgb3IgY29uc2lkZXIgd2hldGhlciBpdCdzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlci4gV2FpdCwgYGl4Z2JlYCBpcyBhIHN0YW5kYXJkIEludGVsIE5JQywgc2ltaWxhciB0byB0aGUgb3RoZXJzLiBJIHJlY2FsbCB0aGF0IFFFTVUgZG9lcyBlbXVsYXRlIGBpZ2JgIGFuZCBgZTEwMDBlYC4uLiBidXQgd2hhdCBhYm91dCBgaXhnYmVgP1xuXG5JdCBzZWVtcyBRRU1VIGFkZGVkIGBpZ2JgIHN1cHBvcnQgZmFpcmx5IHJlY2VudGx5LCBzbyB0aGF0IG1ha2VzIG1lIHF1ZXN0aW9uLCBkaWQgaXQgYWRkIGBpeGdiZWAgYXMgd2VsbD8gTGV0IG1lIHNlYXJjaC4uLiBBaCwgbm8sIGl0IHNlZW1zIFFFTVUgaGFzIGBlMTAwMGAsIGBlMTAwMGVgLCBgaWdiYC4gU28sIG5vIGBpeGdiZWAgeWV0Li4uIEV2ZW4gaWYgUUVNVSAqZGlkKiBlbXVsYXRlIGBpeGdiZWAsIHRoZSBtb3JlIGltcG9ydGFudCBxdWVzdGlvbiBpcyB3aGV0aGVyIGl0IGVtdWxhdGVzIGBpeGdiZXZmYC4gVGhhdCdzIHRoZSByZWFsIGNydXguXG5cbk9rYXksIHVsdGltYXRlbHkgdGhlIHF1ZXN0aW9uIHRvIGFuc3dlcjogQ2FuIHN5emthbGxlciByZWFjaCBgaXhnYmV2ZmA/IFRoYXQncyB3aGF0IEkgbmVlZCB0byBpbnZlc3RpZ2F0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk3NjAsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6MjQ6NTguNjYzNTUyOTMxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDgzNTk4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpeGdiZXZmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInN5cy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjI0OjU4LjcxMjA0NDE5OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwNDYwODA3OTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFRob3VnaHQgUHJvY2VzcyBvbiB0aGUgaXhnYmV2ZiBhbmQgU3l6a2FsbGVyIFNwZWMgSXNzdWUqKlxuXG5Pa2F5LCBzbyB0aGUgaW5pdGlhbCB0YXNrIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIGJ1dCBJJ3ZlIGhpdCBhIHNuYWcuIEkgd2FzIGdvaW5nIHRvIHVzZSBgZ3JlcHBlcmAgdG8gc2VhcmNoIGZvciBzb21ldGhpbmcsIGJ1dCB0aGVuIHRoZSBwcm9tcHQncyAqdmVyeSogc3BlY2lmaWMuIEl0J3MgdGVsbGluZyBtZSBJIGNhbid0IHVzZSBgZ3JlcHBlcmAgb24gYHN5cy9gIGZpbGVzIG9yIGFueXRoaW5nIHdpdGggYHN5el9gLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIOKAkyB0aG9zZSBhcmUgU3l6a2FsbGVyLXNwZWNpZmljIGRlc2NyaXB0aW9ucywgbm90IGFjdHVhbCBrZXJuZWwgY29kZS4gVGhlIGluc3RydWN0aW9ucyBwb2ludCBtZSB0b3dhcmRzIGByZWFkLXN5ei1zcGVjYCBhbmQgYHN5ei1ncmVwcGVyYCwgYnV0IGEgcXVpY2sgc2NhbiBvZiBteSBhdmFpbGFibGUgdG9vbHMgcmV2ZWFscy4uLiB0aGV5J3JlIG5vdCB0aGVyZSEgVGhlIGxpc3Qgb25seSBnaXZlcyBtZSBgZ3JlcHBlcmAsIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAsIGByZWFkLWZpbGVgLCBhbmQgYHNldC1yZXN1bHRzYC4gU28gSSdtIGVmZmVjdGl2ZWx5IGJsb2NrZWQgZnJvbSBzZWFyY2hpbmcgdGhlIHN5emthbGxlciBzcGVjcywgd2hpY2ggaXMgd2hhdCB0aGUgaW5zdHJ1Y3Rpb25zICpzZWVtKiB0byB3YW50LiBGaW5lLCBJJ2xsIGhhdmUgdG8gYWRhcHQuXG5cbk5vdywgb24gdG8gdGhlIGBpeGdiZXZmYCBzaXR1YXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0J3MgcmVhY2hhYmxlIGluIFFFTVUuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdGhhdCBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGF0IHBhcnRpY3VsYXIgZGV2aWNlLiBJIHJlbWVtYmVyIGl0IGVtdWxhdGVzIHRoZSBgaWdiYCBmYW1pbHksIGJvdGggUEYgYW5kIFZGLiBCdXQgbm8sIHdhaXQsIFFFTVUgKmRvZXNuJ3QqIGVtdWxhdGUgYGl4Z2JlYCBkaXJlY3RseS4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBRRU1VIGVtdWxhdGVzIGBpeGdiZWAgb3Igbm90LiBMZXQgbWUgY2hlY2sgdGhlIGtlcm5lbCBzb3VyY2UsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi92Zi5jYC4gT2theSwgbm93IEkgcmVjYWxsIHRoaXMgaXMgYW4gSW50ZWwgMTBHYkUgVkYgZHJpdmVyOyBpdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0byBmdW5jdGlvbi4gQWhhLCB0aGUgcGF0Y2ggSSdtIGxvb2tpbmcgYXQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIFwiSHlwZXItViBFNjEwIFZGcy5cIlxuXG5FNjEwIGlzIGFuIEludGVsIEV0aGVybmV0IENvbnRyb2xsZXIsIGxpa2UgRTgxMC4gQ2hlY2tpbmcgdGhlIGNvZGUsIGl0IHVzZXMgYSBzcGVjaWZpYyBzdWJzeXN0ZW0gSUQ6IGBJWEdCRV9TVUJERVZfSURfRTYxMF9WRl9IVmAuIFRoaXMgaXMgaW5jcmVkaWJseSBzcGVjaWZpYyDigJMgYW4gSW50ZWwgRTYxMCBWRiAqb24gSHlwZXItViouIENhbiB0aGlzIGV2ZW4gYmUgZW11bGF0ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPyBUaGUgYW5zd2VyIGlzIG5vLCBpdCdzIG5vdC4gSSdtIHByZXR0eSBzdXJlIFFFTVUgZG9lc24ndCBvZmZlciB0aGF0IGxldmVsIG9mIHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbi4gU28sIHRoaXMgcGFydGljdWxhciBjb2RlIHBhdGggcmVsYXRlZCB0byBFNjEwIFZGcyBvbiBIeXBlci1WIGlzICp1bnJlYWNoYWJsZSogaW4gY29tbW9uIHZpcnR1YWxpemF0aW9uIHNldHVwcy4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IHRob3JvdWdoLCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoYXQgYGl4Z2JldmZgIGlzbid0IGVtdWxhdGVkIGluIHNvZnR3YXJlLiBOb3BlLCBpdCdzIGEgUENJIGRyaXZlci4gT2theSwgbGV0J3MganVzdCBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgZmFjdHMsIGNoZWNraW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jYCB0byBsb29rIGF0IHdoaWNoIFBDSSBJRHMgaXQgYmluZHMgdG8uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwODM5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjI1OjE5LjE3Mjg1NjAzN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTM2MjQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpeGdiZXZmX3BjaV90YmxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYz00ND1zdGF0aWMgY29uc3Qgc3RydWN0IGl4Z2JldmZfaW5mbyAqaXhnYmV2Zl9pbmZvX3RibFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYy01Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jOjU4Oi8qIGl4Z2JldmZfcGNpX3RibCAtIFBDSSBEZXZpY2UgSUQgVGFibGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jLTU5LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jLTY1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmM6NjY6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGl4Z2JldmZfcGNpX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmMtNjctXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYy0xMDQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jOjEwNTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaXhnYmV2Zl9wY2lfdGJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jLTEwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmM9NDU2MT1zdGF0aWMgdm9pZCBpeGdiZXZmX2Fzc2lnbl9uZXRkZXZfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jLTQ1NzAtICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYzo0NTcxOiAqIEBlbnQ6IGVudHJ5IGluIGl4Z2JldmZfcGNpX3RibFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmMtNDU3Mi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYz00OTE4PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpeGdiZXZmX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jLTQ5MTktXFx0Lm5hbWVcXHRcXHQ9IGl4Z2JldmZfZHJpdmVyX25hbWUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmV2Zi9peGdiZXZmX21haW4uYzo0OTIwOlxcdC5pZF90YWJsZVxcdD0gaXhnYmV2Zl9wY2lfdGJsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JldmYvaXhnYmV2Zl9tYWluLmMtNDkyMS1cXHQucHJvYmVcXHRcXHQ9IGl4Z2JldmZfcHJvYmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjI1OjE5LjIxODIyMjg1NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMDE1MDE0ODQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBgaXhnYmV2ZmAgZHJpdmVyIGhhcyBhIHZlcnkgc3BlY2lmaWMgYXR0YWNobWVudCB0byBQQ0kgSURzLCBhbmQgdGhpcyBwYXRjaCB0YXJnZXRzIGBJWEdCRV9TVUJERVZfSURfRTYxMF9WRl9IVmAsIHdoaWNoIGlzIHRoZSBIeXBlci1WIGZsYXZvciBvZiB0aGUgSW50ZWwgRTYxMCBWRi4gVGhlIHByb2JsZW0gaXMsIFFFTVUsIGFzIGl0IHN0YW5kcywgZG9lc24ndCBlbXVsYXRlIHRoZSBJbnRlbCBFNjEwIFZGcy4gU28sIHJpZ2h0IG9mZiB0aGUgYmF0LCB3ZSBjYW4gc2F5IHRoYXQgaW4gYSB0eXBpY2FsIFFFTVUgZW52aXJvbm1lbnQsIHRoZSBjb2RlIGluIHRoaXMgcGF0Y2ggaXMgc2ltcGx5IHVucmVhY2hhYmxlLlxuXG5FdmVuIGlmIHdlICpjb3VsZCogZ2V0IFFFTVUgdG8gZW11bGF0ZSBgaXhnYmV2ZmAsIGl0J3MgaW5jcmVkaWJseSB1bmxpa2VseSB0aGF0IGl0IHdvdWxkIGFsc28gYWNjdXJhdGVseSBtb2RlbCB0aGUgSHlwZXItVi1zcGVjaWZpYyBiZWhhdmlvciBvZiB0aGUgRTYxMCBWRidzIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBjb25kaXRpb25hbHMgYmFzZWQgb24gdGhlIHN1YnN5c3RlbSBkZXZpY2UgSUQ6XG5cbmBgYGNcblx0aWYgKGFkYXB0ZXItXHUwMDNlcGRldi1cdTAwM2VzdWJzeXN0ZW1fZGV2aWNlID09IElYR0JFX1NVQkRFVl9JRF9FNjEwX1ZGX0hWKSB7XG5gYGBcblxuYW5kIGNoZWNrcyBmb3IgdGhlIG1hYyB0eXBlOlxuXG5gYGBjXG5cdGlmIChtYWMtXHUwMDNldHlwZSA9PSBpeGdiZV9tYWNfZTYxMF92Zikge1xuXHRcdGlmIChpeGdiZXZmX2h2X3JlYWRfbGlua3NfZTYxMChodywgXHUwMDI2bGlua3NfcmVnKSkge1xuYGBgXG5cblRoZXNlIGNoZWNrcyBlc3NlbnRpYWxseSBkZW1hbmQgZWl0aGVyIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBjYXJkIGl0c2VsZiBvciBhIEh5cGVyLVYgaHlwZXJ2aXNvciB0aGF0J3Mgc3BlY2lmaWNhbGx5IHBhc3NpbmcgdGhyb3VnaCB0aGlzIFZGLiBTeXprYWxsZXIgcnVubmluZyBpbiBhIEdDRS9RRU1VIHNldHVwIGlzbid0IGdvaW5nIHRvIGhhdmUgdGhhdC4gSXQncyBub3QgZ29pbmcgdG8gc2VlIHRoaXMuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIHJlbGllcyBvbiBzcGVjaWZpYywgbm9uLWVtdWxhdGVkIGhhcmR3YXJlLCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSSBhbSBnb2luZyB0byBtYXJrIGl0IGFzIG5vdCB3b3J0aCBmdXp6aW5nLlxuXG5MZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEFoLCB5ZXMsIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGl4Z2JldmZfZ2V0X2xpbmtfa3NldHRpbmdzYCBhbmQgYGl4Z2JldmZfaHZfY2hlY2tfbWFjX2xpbmtfdmZgLCBidXQgdGhleSdyZSAqYWxzbyogZ3VhcmRlZCBieSB0aGVzZSBFNjEwIFZGIGNoZWNrcy4gU28sIHRoZSBlbnRpcmUgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgdW5leGVjdXRhYmxlIGluIHRoZSBkZWZhdWx0IFFFTVUgZW52aXJvbm1lbnQuIENvbmZpcm1lZDogYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODE0LCJPdXRwdXRUb2tlbnMiOjEyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNToyNTozMi4yMzMyNDExNTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQ1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGl4Z2JldmYgZHJpdmVyIHRvIHN1cHBvcnQgcmVhZGluZyBsaW5rIHNwZWVkIGZyb20gUENJIGNvbmZpZyBzcGFjZSBzcGVjaWZpY2FsbHkgZm9yIEludGVsIEU2MTAgVmlydHVhbCBGdW5jdGlvbnMgb24gSHlwZXItViAoSVhHQkVfU1VCREVWX0lEX0U2MTBfVkZfSFYpLiBUaGlzIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIChJbnRlbCBFNjEwIE5JQykgcGFzc2VkIHRocm91Z2ggdmlhIEh5cGVyLVYsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGl4Z2JldmYgZHJpdmVyIHRvIHN1cHBvcnQgcmVhZGluZyBsaW5rIHNwZWVkIGZyb20gUENJIGNvbmZpZyBzcGFjZSBzcGVjaWZpY2FsbHkgZm9yIEludGVsIEU2MTAgVmlydHVhbCBGdW5jdGlvbnMgb24gSHlwZXItViAoSVhHQkVfU1VCREVWX0lEX0U2MTBfVkZfSFYpLiBUaGlzIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIChJbnRlbCBFNjEwIE5JQykgcGFzc2VkIHRocm91Z2ggdmlhIEh5cGVyLVYsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6MjU6MzIuMjMzNjExMzE3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwbqmv[1] Phase: Running StartedAt: 2026-08-26 15:25:43 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbqmv[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-26 15:25:43 +0000 UTC FinishedAt: 2026-08-26 15:25:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}