Name: series-workflowvxb7g Phase: Failed StartedAt: 2026-07-25 13:09:09 +0000 UTC FinishedAt: 2026-07-25 13:22:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvxb7g[0] Phase: Succeeded StartedAt: 2026-07-25 13:09:09 +0000 UTC FinishedAt: 2026-07-25 13:22:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvxb7g[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 13:09:09 +0000 UTC FinishedAt: 2026-07-25 13:22:36 +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+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBnZW5lcmljIHBoeWxpbmtfcGNzX2xvb3BiYWNrIGZ1bmN0aW9uIGFuZCBjYWxscyBpdCBmcm9tIHRoZSBzdG1tYWMgZHJpdmVyJiMzOTtzIHNlbGZ0ZXN0LiBIb3dldmVyLCB0aGVyZSBhcmUgbm8gaW1wbGVtZW50YXRpb25zIG9mIHRoZSBwY3NfbG9vcGJhY2sgY2FsbGJhY2sgaW4gYW55IFBDUyBkcml2ZXJzIGluIHRoZSB0cmVlLCBtZWFuaW5nIHBoeWxpbmtfcGNzX2xvb3BiYWNrIHdpbGwgYWx3YXlzIHRyaXZpYWxseSByZXR1cm4gLUVPUE5PVFNVUFAuIEFkZGl0aW9uYWxseSwgdGhlIHN0bW1hYyBkcml2ZXIgaXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIE1BQ3MgKGUuZy4sIFN5bm9wc3lzIERXTUFDKSB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIHNlbGZ0ZXN0IHVucmVhY2hhYmxlIGR1cmluZyBnZW5lcmljIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjNmZDRmMDVlMzlhMDJiZDAzMzU1MGEzOTdkOTM1NDRkY2MxZGQwZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDEzOjIxOjE4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuY1xuaW5kZXggMjllODI0YmQ5MGNhNmIuLmU2YWM1MTAxOGE2NTBkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmNcbkBAIC0zNzcsMjAgJiM0MzszNzcsMzYgQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF9tYWNfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfcGh5X2xvb3BiYWNrKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiB7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3BhY2tldF9hdHRycyBhdHRyID0geyB9O1xuJiM0MztcdHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzO1xuIFx0aW50IHJldDtcbiBcbi1cdGlmICghcHJpdi1cdTAwM2VkZXYtXHUwMDNlcGh5ZGV2KVxuLVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlZGV2LVx1MDAzZXBoeWRldikge1xuJiM0MztcdFx0cmV0ID0gcGh5X2xvb3BiYWNrKHByaXYtXHUwMDNlZGV2LVx1MDAzZXBoeWRldiwgdHJ1ZSwgMCk7XG4mIzQzO1x0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0cmV0ID0gcGh5X2xvb3BiYWNrKHByaXYtXHUwMDNlZGV2LVx1MDAzZXBoeWRldiwgdHJ1ZSwgMCk7XG4tXHRpZiAocmV0KVxuJiM0MztcdFx0YXR0ci5kc3QgPSBwcml2LVx1MDAzZWRldi1cdTAwM2VkZXZfYWRkcjtcbiYjNDM7XHRcdHJldCA9IF9fc3RtbWFjX3Rlc3RfbG9vcGJhY2socHJpdiwgXHUwMDI2YXR0cik7XG4mIzQzO1xuJiM0MztcdFx0cGh5X2xvb3BiYWNrKHByaXYtXHUwMDNlZGV2LVx1MDAzZXBoeWRldiwgZmFsc2UsIDApO1xuIFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiBcbi1cdGF0dHIuZHN0ID0gcHJpdi1cdTAwM2VkZXYtXHUwMDNlZGV2X2FkZHI7XG4tXHRyZXQgPSBfX3N0bW1hY190ZXN0X2xvb3BiYWNrKHByaXYsIFx1MDAyNmF0dHIpO1xuJiM0MztcdC8qIFVzZSBQQ1MgbG9vcGJhY2sgZm9yIGludGVyZmFjZXMgd2l0aG91dCBhbiBleHRlcm5hbCBQSFkuICovXG4mIzQzO1x0cGNzID0gcHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcztcbiYjNDM7XHRpZiAocGNzKSB7XG4mIzQzO1x0XHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIHRydWUpO1xuJiM0MztcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiBcbi1cdHBoeV9sb29wYmFjayhwcml2LVx1MDAzZWRldi1cdTAwM2VwaHlkZXYsIGZhbHNlLCAwKTtcbi1cdHJldHVybiByZXQ7XG4mIzQzO1x0XHRhdHRyLmRzdCA9IHByaXYtXHUwMDNlZGV2LVx1MDAzZWRldl9hZGRyO1xuJiM0MztcdFx0cmV0ID0gX19zdG1tYWNfdGVzdF9sb29wYmFjayhwcml2LCBcdTAwMjZhdHRyKTtcbiYjNDM7XG4mIzQzO1x0XHRwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIGZhbHNlKTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gfVxuIFxuIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfbW1jKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbkBAIC0xOTg2LDYgJiM0MzsyMDAyLDggQEAgdm9pZCBzdG1tYWNfc2VsZnRlc3RfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0cmV0ID0gLUVPUE5PVFNVUFA7XG4gXHRcdFx0aWYgKGRldi1cdTAwM2VwaHlkZXYpXG4gXHRcdFx0XHRyZXQgPSBwaHlfbG9vcGJhY2soZGV2LVx1MDAzZXBoeWRldiwgdHJ1ZSwgMCk7XG4mIzQzO1x0XHRcdGVsc2UgaWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4mIzQzO1x0XHRcdFx0cmV0ID0gcGh5bGlua19wY3NfbG9vcGJhY2socHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcywgdHJ1ZSk7XG4gXHRcdFx0aWYgKCFyZXQpXG4gXHRcdFx0XHRicmVhaztcbiBcdFx0XHRmYWxsdGhyb3VnaDtcbkBAIC0yMDE5LDYgJiM0MzsyMDM3LDggQEAgdm9pZCBzdG1tYWNfc2VsZnRlc3RfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0cmV0ID0gLUVPUE5PVFNVUFA7XG4gXHRcdFx0aWYgKGRldi1cdTAwM2VwaHlkZXYpXG4gXHRcdFx0XHRyZXQgPSBwaHlfbG9vcGJhY2soZGV2LVx1MDAzZXBoeWRldiwgZmFsc2UsIDApO1xuJiM0MztcdFx0XHRlbHNlIGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuJiM0MztcdFx0XHRcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MsIGZhbHNlKTtcbiBcdFx0XHRpZiAoIXJldClcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdGZhbGx0aHJvdWdoO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5pbmRleCA1OWRmZTM1YWZhNTRmYy4uYTdmNzhjODI5MTNhZWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtOTk3LDYgJiM0Mzs5OTcsMjUgQEAgaW50IHBoeWxpbmtfcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcGNzX3ByZV9pbml0KTtcbiBcbiYjNDM7LyoqXG4mIzQzOyAqIHBoeWxpbmtfcGNzX2xvb3BiYWNrKCkgLSBFbmFibGUgb3IgZGlzYWJsZSBsb29wYmFjayBhdCB0aGUgUENTXG4mIzQzOyAqIEBwY3M6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjcy5cbiYjNDM7ICogQGVuYWJsZTogdHJ1ZSB0byBlbmFibGUgbG9vcGJhY2ssIGZhbHNlIHRvIGRpc2FibGVcbiYjNDM7ICpcbiYjNDM7ICogRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgbW9kZSBhdCB0aGUgUENTIGxldmVsLiBUaGlzIGlzIHVzZWQgYnkgTUFDXG4mIzQzOyAqIGRyaXZlcnMgZm9yIHNlbGZ0ZXN0IHB1cnBvc2VzIHdoZW4gbm8gZXh0ZXJuYWwgUEhZIGlzIHByZXNlbnQuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuXG4mIzQzOyAqL1xuJiM0MztpbnQgcGh5bGlua19wY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKHBjcy1cdTAwM2VvcHMtXHUwMDNlcGNzX2xvb3BiYWNrKVxuJiM0MztcdFx0cmV0dXJuIHBjcy1cdTAwM2VvcHMtXHUwMDNlcGNzX2xvb3BiYWNrKHBjcywgZW5hYmxlKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcGNzX2xvb3BiYWNrKTtcbiYjNDM7XG4gc3RhdGljIHZvaWQgcGh5bGlua19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rICpwbCxcbiBcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG4ge1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5bGluay5oIGIvaW5jbHVkZS9saW51eC9waHlsaW5rLmhcbmluZGV4IDJiYzBkYjNkNTJhYzhkLi42NmM3MDE2ZDRhY2RjYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGh5bGluay5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaFxuQEAgLTUxOCw2ICYjNDM7NTE4LDcgQEAgc3RydWN0IHBoeWxpbmtfcGNzIHtcbiAgKlx0XHQgICAgdGhlIE1BQy5cbiAgKiBAcGNzX3ByZV9pbml0OiBjb25maWd1cmUgUENTIGNvbXBvbmVudHMgbmVjZXNzYXJ5IGZvciBNQUMgaGFyZHdhcmVcbiAgKiAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiBlLmcuIFJYIGNsb2NrIGZvciBzdG1tYWMuXG4mIzQzOyAqIEBwY3NfbG9vcGJhY2s6IGVuYWJsZS9kaXNhYmxlIGxvb3BiYWNrIG1vZGUgYXQgdGhlIFBDUy5cbiAgKi9cbiBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHtcbiBcdGludCAoKnBjc192YWxpZGF0ZSkoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZCxcbkBAIC01NDIsNiAmIzQzOzU0Myw3IEBAIHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMge1xuIFx0dm9pZCAoKnBjc19kaXNhYmxlX2VlZSkoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xuIFx0dm9pZCAoKnBjc19lbmFibGVfZWVlKShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XG4gXHRpbnQgKCpwY3NfcHJlX2luaXQpKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcbiYjNDM7XHRpbnQgKCpwY3NfbG9vcGJhY2spKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSk7XG4gfTtcbiBcbiAjaWYgMCAvKiBGb3Iga2VybmVsLWRvYyBwdXJwb3NlcyBvbmx5LiAqL1xuQEAgLTcxNyw4ICYjNDM7NzE5LDIyIEBAIHZvaWQgcGNzX2VuYWJsZV9lZWUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xuICAqL1xuIGludCBwY3NfcHJlX2luaXQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xuIFxuJiM0MzsvKipcbiYjNDM7ICogcGNzX2xvb3BiYWNrKCkgLSBFbmFibGUgb3IgZGlzYWJsZSBsb29wYmFjayBhdCB0aGUgUENTXG4mIzQzOyAqIEBwY3M6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjcy5cbiYjNDM7ICogQGVuYWJsZTogdHJ1ZSB0byBlbmFibGUgbG9vcGJhY2ssIGZhbHNlIHRvIGRpc2FibGVcbiYjNDM7ICpcbiYjNDM7ICogRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgbW9kZSBhdCB0aGUgUENTIGxldmVsLiBUaGlzIGlzIHVzZWQgYnkgTUFDXG4mIzQzOyAqIGRyaXZlcnMgZm9yIHNlbGZ0ZXN0IHB1cnBvc2VzIHdoZW4gbm8gZXh0ZXJuYWwgUEhZIGlzIHByZXNlbnQuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS5cbiYjNDM7ICovXG4mIzQzO2ludCBwY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKTtcbiYjNDM7XG4gI2VuZGlmXG4gXG4mIzQzO2ludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xuJiM0MztcbiBzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICosXG4gXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICosXG4gXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGdlbmVyaWMgcGh5bGlua19wY3NfbG9vcGJhY2sgZnVuY3Rpb24gYW5kIGNhbGxzIGl0IGZyb20gdGhlIHN0bW1hYyBkcml2ZXImIzM5O3Mgc2VsZnRlc3QuIEhvd2V2ZXIsIHRoZXJlIGFyZSBubyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHBjc19sb29wYmFjayBjYWxsYmFjayBpbiBhbnkgUENTIGRyaXZlcnMgaW4gdGhlIHRyZWUsIG1lYW5pbmcgcGh5bGlua19wY3NfbG9vcGJhY2sgd2lsbCBhbHdheXMgdHJpdmlhbGx5IHJldHVybiAtRU9QTk9UU1VQUC4gQWRkaXRpb25hbGx5LCB0aGUgc3RtbWFjIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgTUFDcyAoZS5nLiwgU3lub3BzeXMgRFdNQUMpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgc2VsZnRlc3QgdW5yZWFjaGFibGUgZHVyaW5nIGdlbmVyaWMgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2M2ZkNGYwNWUzOWEwMmJkMDMzNTUwYTM5N2Q5MzU0NGRjYzFkZDBlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMjUgMTM6MjE6MTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMKaW5kZXggMjllODI0YmQ5MGNhNmIuLmU2YWM1MTAxOGE2NTBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jCkBAIC0zNzcsMjAgJiM0MzszNzcsMzYgQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF9tYWNfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogc3RhdGljIGludCBzdG1tYWNfdGVzdF9waHlfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogewogCXN0cnVjdCBzdG1tYWNfcGFja2V0X2F0dHJzIGF0dHIgPSB7IH07CiYjNDM7CXN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzOwogCWludCByZXQ7CiAKLQlpZiAoIXByaXYtJmd0O2Rldi0mZ3Q7cGh5ZGV2KQotCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CWlmIChwcml2LSZndDtkZXYtJmd0O3BoeWRldikgewomIzQzOwkJcmV0ID0gcGh5X2xvb3BiYWNrKHByaXYtJmd0O2Rldi0mZ3Q7cGh5ZGV2LCB0cnVlLCAwKTsKJiM0MzsJCWlmIChyZXQpCiYjNDM7CQkJcmV0dXJuIHJldDsKIAotCXJldCA9IHBoeV9sb29wYmFjayhwcml2LSZndDtkZXYtJmd0O3BoeWRldiwgdHJ1ZSwgMCk7Ci0JaWYgKHJldCkKJiM0MzsJCWF0dHIuZHN0ID0gcHJpdi0mZ3Q7ZGV2LSZndDtkZXZfYWRkcjsKJiM0MzsJCXJldCA9IF9fc3RtbWFjX3Rlc3RfbG9vcGJhY2socHJpdiwgJmFtcDthdHRyKTsKJiM0MzsKJiM0MzsJCXBoeV9sb29wYmFjayhwcml2LSZndDtkZXYtJmd0O3BoeWRldiwgZmFsc2UsIDApOwogCQlyZXR1cm4gcmV0OwomIzQzOwl9CiAKLQlhdHRyLmRzdCA9IHByaXYtJmd0O2Rldi0mZ3Q7ZGV2X2FkZHI7Ci0JcmV0ID0gX19zdG1tYWNfdGVzdF9sb29wYmFjayhwcml2LCAmYW1wO2F0dHIpOwomIzQzOwkvKiBVc2UgUENTIGxvb3BiYWNrIGZvciBpbnRlcmZhY2VzIHdpdGhvdXQgYW4gZXh0ZXJuYWwgUEhZLiAqLwomIzQzOwlwY3MgPSBwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3M7CiYjNDM7CWlmIChwY3MpIHsKJiM0MzsJCXJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHBjcywgdHJ1ZSk7CiYjNDM7CQlpZiAocmV0KQomIzQzOwkJCXJldHVybiByZXQ7CiAKLQlwaHlfbG9vcGJhY2socHJpdi0mZ3Q7ZGV2LSZndDtwaHlkZXYsIGZhbHNlLCAwKTsKLQlyZXR1cm4gcmV0OwomIzQzOwkJYXR0ci5kc3QgPSBwcml2LSZndDtkZXYtJmd0O2Rldl9hZGRyOwomIzQzOwkJcmV0ID0gX19zdG1tYWNfdGVzdF9sb29wYmFjayhwcml2LCAmYW1wO2F0dHIpOwomIzQzOwomIzQzOwkJcGh5bGlua19wY3NfbG9vcGJhY2socGNzLCBmYWxzZSk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAtRU9QTk9UU1VQUDsKIH0KIAogc3RhdGljIGludCBzdG1tYWNfdGVzdF9tbWMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQpAQCAtMTk4Niw2ICYjNDM7MjAwMiw4IEBAIHZvaWQgc3RtbWFjX3NlbGZ0ZXN0X3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJcmV0ID0gLUVPUE5PVFNVUFA7CiAJCQlpZiAoZGV2LSZndDtwaHlkZXYpCiAJCQkJcmV0ID0gcGh5X2xvb3BiYWNrKGRldi0mZ3Q7cGh5ZGV2LCB0cnVlLCAwKTsKJiM0MzsJCQllbHNlIGlmIChwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MpCiYjNDM7CQkJCXJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3BjcywgdHJ1ZSk7CiAJCQlpZiAoIXJldCkKIAkJCQlicmVhazsKIAkJCWZhbGx0aHJvdWdoOwpAQCAtMjAxOSw2ICYjNDM7MjAzNyw4IEBAIHZvaWQgc3RtbWFjX3NlbGZ0ZXN0X3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJcmV0ID0gLUVPUE5PVFNVUFA7CiAJCQlpZiAoZGV2LSZndDtwaHlkZXYpCiAJCQkJcmV0ID0gcGh5X2xvb3BiYWNrKGRldi0mZ3Q7cGh5ZGV2LCBmYWxzZSwgMCk7CiYjNDM7CQkJZWxzZSBpZiAocHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzKQomIzQzOwkJCQlyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MsIGZhbHNlKTsKIAkJCWlmICghcmV0KQogCQkJCWJyZWFrOwogCQkJZmFsbHRocm91Z2g7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwppbmRleCA1OWRmZTM1YWZhNTRmYy4uYTdmNzhjODI5MTNhZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwpAQCAtOTk3LDYgJiM0Mzs5OTcsMjUgQEAgaW50IHBoeWxpbmtfcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Bjc19wcmVfaW5pdCk7CiAKJiM0MzsvKioKJiM0MzsgKiBwaHlsaW5rX3Bjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDUwomIzQzOyAqIEBwY3M6IGEgcG9pbnRlciB0byBhICZhbXA7c3RydWN0IHBoeWxpbmtfcGNzLgomIzQzOyAqIEBlbmFibGU6IHRydWUgdG8gZW5hYmxlIGxvb3BiYWNrLCBmYWxzZSB0byBkaXNhYmxlCiYjNDM7ICoKJiM0MzsgKiBFbmFibGUgb3IgZGlzYWJsZSBsb29wYmFjayBtb2RlIGF0IHRoZSBQQ1MgbGV2ZWwuIFRoaXMgaXMgdXNlZCBieSBNQUMKJiM0MzsgKiBkcml2ZXJzIGZvciBzZWxmdGVzdCBwdXJwb3NlcyB3aGVuIG5vIGV4dGVybmFsIFBIWSBpcyBwcmVzZW50LgomIzQzOyAqCiYjNDM7ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KJiM0MzsgKi8KJiM0MztpbnQgcGh5bGlua19wY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKQomIzQzO3sKJiM0MzsJaWYgKHBjcy0mZ3Q7b3BzLSZndDtwY3NfbG9vcGJhY2spCiYjNDM7CQlyZXR1cm4gcGNzLSZndDtvcHMtJmd0O3Bjc19sb29wYmFjayhwY3MsIGVuYWJsZSk7CiYjNDM7CiYjNDM7CXJldHVybiAtRU9QTk9UU1VQUDsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfbG9vcGJhY2spOwomIzQzOwogc3RhdGljIHZvaWQgcGh5bGlua19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rICpwbCwKIAkJCSAgICAgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSkKIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5bGluay5oIGIvaW5jbHVkZS9saW51eC9waHlsaW5rLmgKaW5kZXggMmJjMGRiM2Q1MmFjOGQuLjY2YzcwMTZkNGFjZGNiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaApAQCAtNTE4LDYgJiM0Mzs1MTgsNyBAQCBzdHJ1Y3QgcGh5bGlua19wY3MgewogICoJCSAgICB0aGUgTUFDLgogICogQHBjc19wcmVfaW5pdDogY29uZmlndXJlIFBDUyBjb21wb25lbnRzIG5lY2Vzc2FyeSBmb3IgTUFDIGhhcmR3YXJlCiAgKiAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiBlLmcuIFJYIGNsb2NrIGZvciBzdG1tYWMuCiYjNDM7ICogQHBjc19sb29wYmFjazogZW5hYmxlL2Rpc2FibGUgbG9vcGJhY2sgbW9kZSBhdCB0aGUgUENTLgogICovCiBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHsKIAlpbnQgKCpwY3NfdmFsaWRhdGUpKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQsCkBAIC01NDIsNiAmIzQzOzU0Myw3IEBAIHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgewogCXZvaWQgKCpwY3NfZGlzYWJsZV9lZWUpKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTsKIAl2b2lkICgqcGNzX2VuYWJsZV9lZWUpKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTsKIAlpbnQgKCpwY3NfcHJlX2luaXQpKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTsKJiM0MzsJaW50ICgqcGNzX2xvb3BiYWNrKShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpOwogfTsKIAogI2lmIDAgLyogRm9yIGtlcm5lbC1kb2MgcHVycG9zZXMgb25seS4gKi8KQEAgLTcxNyw4ICYjNDM7NzE5LDIyIEBAIHZvaWQgcGNzX2VuYWJsZV9lZWUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpOwogICovCiBpbnQgcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTsKIAomIzQzOy8qKgomIzQzOyAqIHBjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDUwomIzQzOyAqIEBwY3M6IGEgcG9pbnRlciB0byBhICZhbXA7c3RydWN0IHBoeWxpbmtfcGNzLgomIzQzOyAqIEBlbmFibGU6IHRydWUgdG8gZW5hYmxlIGxvb3BiYWNrLCBmYWxzZSB0byBkaXNhYmxlCiYjNDM7ICoKJiM0MzsgKiBFbmFibGUgb3IgZGlzYWJsZSBsb29wYmFjayBtb2RlIGF0IHRoZSBQQ1MgbGV2ZWwuIFRoaXMgaXMgdXNlZCBieSBNQUMKJiM0MzsgKiBkcml2ZXJzIGZvciBzZWxmdGVzdCBwdXJwb3NlcyB3aGVuIG5vIGV4dGVybmFsIFBIWSBpcyBwcmVzZW50LgomIzQzOyAqCiYjNDM7ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgomIzQzOyAqLwomIzQzO2ludCBwY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKTsKJiM0MzsKICNlbmRpZgogCiYjNDM7aW50IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSk7CiYjNDM7CiBzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICosCiAJCQkgICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKiwKIAkJCSAgICAgICBwaHlfaW50ZXJmYWNlX3QsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MDQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgYHN0bW1hY2AgU2VsZi1UZXN0cyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBzdG1tYWNfc2VsZnRlc3RzLmNgLCBgcGh5bGluay5jYCwgYW5kIGBwaHlsaW5rLmhgLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGFkZGluZyBgcGh5bGlua19wY3NfbG9vcGJhY2tgLCBhbmQgdGhlIGludGVudGlvbiBpcyB0byBlbmFibGUgUENTIGxvb3BiYWNrIHNwZWNpZmljYWxseSB3aGVuIGFuIGV4dGVybmFsIFBIWSBpc24mIzM5O3QgcHJlc2VudCwgd2hpY2ggaXMgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIHNlbGYtdGVzdHMgZm9yIHRoZSBgc3RtbWFjYCBkcml2ZXIuIFJpZ2h0IGF3YXksIG15IGJyYWluIGdvZXMgdG8gJiMzNDtJcyB0aGlzIGV2ZW4gdGVzdGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8mIzM0Oy4KCmBzdG1tYWNgIGlzIHR5cGljYWxseSB0aWVkIHRvIHNwZWNpZmljIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldCBNQUMgaGFyZHdhcmUsIHNvIFFFTVUgaXMgdXN1YWxseSBhIHN0aWNraW5nIHBvaW50IHVubGVzcyB0aGVyZSYjMzk7cyBhbiBlbXVsYXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUsIG9yIGlmIGl04oCZcyBhIGdlbmVyaWMgZHJpdmVyLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBRRU1VIGVtdWxhdGVzIGBzdG1tYWNgLiBJIGtub3cgUUVNVSAqZG9lcyogaGF2ZSBuZXR3b3JrIGRldmljZSBlbXVsYXRpb25zLCBidXQgaXMgYHN0bW1hY2Agb25lIG9mIHRoZW0/IE1hbnkgQVJNIFNvQ3MgdXRpbGl6ZSBgc3RtbWFjYCDigJMgQWxsd2lubmVyLCBSb2NrY2hpcCwgQW1sb2dpYywgZXRjLiDigJMgYW5kIFFFTVUgbWlnaHQgZW11bGF0ZSAqc29tZSogb2YgdGhvc2UgU29DcywgYnV0IHN5emthbGxlciB1c3VhbGx5IHRhcmdldHMgeDg2XzY0IG9yIGdlbmVyaWMgQVJNNjQgdmlydCBtYWNoaW5lcywgc28gdGhhdCYjMzk7cyBub3QgaGVscGluZy4KCkhtbSwgd2FpdC4gYHBoeWxpbmtfcGNzX2xvb3BiYWNrYCBpcyBhICpwaHlsaW5rKiBmdW5jdGlvbiwgc28gaXQmIzM5O3MgdGVjaG5pY2FsbHkgZ2VuZXJpYywgdGhvdWdoIGN1cnJlbnRseSBpdCYjMzk7cyBvbmx5IGJlaW5nIHVzZWQgYnkgYHN0bW1hY2AuIE9rYXksIHNvIGxldCYjMzk7cyBjaGVjayBpZiB0aGUgYHN0bW1hY2Agc2VsZi10ZXN0cyBhcmUgYWN0dWFsbHkgcmVhY2hhYmxlLiBPaCwgcmlnaHQsIGl0JiMzOTtzIGBzdG1tYWNfc2VsZnRlc3RzLmNgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBldGh0b29sIHNlbGYtdGVzdCBzdWl0ZS4gVGhhdCYjMzk7cyBnb29kLgoKU28sIGhvdyBjYW4gSSB0cmlnZ2VyIGBzdG1tYWNfdGVzdF9waHlfbG9vcGJhY2tgPyBJdCBsb29rcyBsaWtlIEkgbmVlZCB0byBkaWcgaW50byB0aGUga2VybmVsIGNvbmZpZ3MgdG8gc2VlIGlmIGBzdG1tYWNgIGlzIGV2ZW4gZW5hYmxlZCBhbmQgaWYgdGhlIHRlc3RzIGFyZSBidWlsdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDX0VUSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjY2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkFzc2Vzc2luZyB0aGUgYFNUTU1BQ19FVEhgIERyaXZlciYjMzk7cyBBcmNoaXRlY3R1cmUqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRldGVybWluZSB0aGUgYXJjaGl0ZWN0dXJhbCBuYXR1cmUgb2YgdGhpcyBgU1RNTUFDX0VUSGAgdGhpbmcuIElzIGl0IGRlc2lnbmVkIGFzIGEgUENJLWJhc2VkIGRyaXZlciwgb3IgaXMgaXQgbW9yZSBvZiBhIHBsYXRmb3JtIGRyaXZlciwgdGllZCBjbG9zZWx5IHRvIHRoZSBoYXJkd2FyZSBkZXNpZ24gb2YgYSBzcGVjaWZpYyBTb0Mgb3Igc3lzdGVtPyBVbmRlcnN0YW5kaW5nIHRoYXQgZnVuZGFtZW50YWwgZGlzdGluY3Rpb24gd2lsbCBoZWF2aWx5IGluZmx1ZW5jZSBob3cgSSBhcHByb2FjaCB1bmRlcnN0YW5kaW5nIGl0cyBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIG92ZXJhbGwgaW50ZXJhY3Rpb24gd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBzdHJ1Y3R1cmUgaXQgdGFyZ2V0cyB0byBiZWdpbiB0byBhc3Nlc3MgaXRzIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgYW5kIGludGVncmF0aW9uIGNvbXBsZXhpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IEhBU19ETUFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NTpcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NjpcdGRlcGVuZHMgb24gRVRIVE9PTF9ORVRMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTctXHRzZWxlY3QgTUlJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yMD1jb25maWcgU1RNTUFDX1NFTEZURVNUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0c1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMjpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMy1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9NDQ9Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00Ny1cdHNlbGVjdCBNSUlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDg6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQ5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9NjA9Y29uZmlnIERXTUFDX0FOQVJJT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTYyLVx0ZGVmYXVsdCBBUkNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NjM6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNjQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz02OT1jb25maWcgRFdNQUNfRUlDNzcwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy03MC1cdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgZm9yIEVzd2luIGVpYzc3MDAgZXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjcxOlx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0RNQSBcdTAwMjZcdTAwMjYgQVJDSF9FU1dJTiB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNzItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz03OD1jb25maWcgRFdNQUNfSU5HRU5JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctODAtXHRkZWZhdWx0IE1BQ0hfSU5HRU5JQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo4MTpcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IEhBU19JT01FTSBcdTAwMjZcdTAwMjYgKE1BQ0hfSU5HRU5JQyB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTgyLVx0c2VsZWN0IE1GRF9TWVNDT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTkwPWNvbmZpZyBEV01BQ19JUFE4MDZYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy05Mi1cdGRlZmF1bHQgQVJDSF9RQ09NXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjkzOlx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUUNPTSB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTk0LVx0c2VsZWN0IE1GRF9TWVNDT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTEwNj1jb25maWcgRFdNQUNfTFBDMThYWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTA4LVx0ZGVmYXVsdCBBUkNIX0xQQzE4WFhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTA5Olx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTFBDMThYWCB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTExMC1cdHNlbGVjdCBNRkRfU1lTQ09OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMTQ9Y29uZmlnIERXTUFDX01FRElBVEVLXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTExNS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UMjd4eCBHTUFDIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTE2Olx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTUVESUFURUsgfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMTctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMjI9Y29uZmlnIERXTUFDX01FU09OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMjQtXHRkZWZhdWx0IEFSQ0hfTUVTT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTI1Olx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgQ09NTU9OX0NMSyBcdTAwMjZcdTAwMjYgKEFSQ0hfTUVTT04gfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMjYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMzM9Y29uZmlnIERXTUFDX05VVk9UT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEzNS1cdGRlZmF1bHQgQVJDSF9NQTM1XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEzNjpcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX01BMzUgfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMzctXHRzZWxlY3QgTUZEX1NZU0NPTlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTQ1PWNvbmZpZyBEV01BQ19RQ09NX0VUSFFPU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTQ3LVx0ZGVmYXVsdCBBUkNIX1FDT01cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTQ4Olx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUUNPTSB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0OS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE1NT1jb25maWcgRFdNQUNfUkVORVNBU19HQkVUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTU3LVx0ZGVmYXVsdCBBUkNIX1JFTkVTQVNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTU4Olx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUkVORVNBUyB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE1OS1cdHNlbGVjdCBQQ1NfUlpOMV9NSUlDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNjg9Y29uZmlnIERXTUFDX1JPQ0tDSElQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNzAtXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTcxOlx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNzItXHRzZWxlY3QgTUZEX1NZU0NPTlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTc5PWNvbmZpZyBEV01BQ19SWk4xXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xODEtXHRkZWZhdWx0IEFSQ0hfUlpOMVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxODI6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9SWk4xIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTgzLVx0c2VsZWN0IFBDU19SWk4xX01JSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE5MT1jb25maWcgRFdNQUNfUzMyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOTMtXHRkZWZhdWx0IEFSQ0hfUzMyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE5NDpcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1MzMiB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE5NS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIwMz1jb25maWcgRFdNQUNfU09DRlBHQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjA1LVx0ZGVmYXVsdCBBUkNIX0lOVEVMX1NPQ0ZQR0FcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjA2Olx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfSU5URUxfU09DRlBHQSB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIwNy1cdHNlbGVjdCBNRkRfU1lTQ09OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yMTg9Y29uZmlnIERXTUFDX1NPUEhHT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMTktXHR0cmlzdGF0ZSBcJiMzNDtTb3BoZ28gZHdtYWMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMjA6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TT1BIR08gfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMjEtXHRkZWZhdWx0IG0gaWYgQVJDSF9TT1BIR09cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIyOT1jb25maWcgRFdNQUNfU1BBQ0VNSVRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjMwLVx0dHJpc3RhdGUgXCYjMzQ7U3BhY2VtaXQgZHdtYWMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMzE6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TUEFDRU1JVCB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIzMi1cdHNlbGVjdCBNRkRfU1lTQ09OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNDE9Y29uZmlnIERXTUFDX1NUQVJGSVZFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI0Mi1cdHRyaXN0YXRlIFwmIzM0O1N0YXJGaXZlIGR3bWFjIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjQzOlx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1RBUkZJVkUgfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNDQtXHRzZWxlY3QgTUZEX1NZU0NPTlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjUzPWNvbmZpZyBEV01BQ19TVElcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI1NS1cdGRlZmF1bHQgQVJDSF9TVElcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjU2Olx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1RJIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjU3LVx0c2VsZWN0IE1GRF9TWVNDT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI2NT1jb25maWcgRFdNQUNfU1RNMzJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI2Ny1cdGRlZmF1bHQgQVJDSF9TVE0zMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNjg6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IChBUkNIX1NUTTMyIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjY5LVx0c2VsZWN0IE1GRF9TWVNDT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI3Nz1jb25maWcgRFdNQUNfU1VOWElcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI3OS1cdGRlZmF1bHQgQVJDSF9TVU5YSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyODA6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4MS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI4OD1jb25maWcgRFdNQUNfU1VOOElcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI5MC1cdGRlZmF1bHQgQVJDSF9TVU5YSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTE6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI5Mi1cdHNlbGVjdCBNRElPX0JVU19NVVhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMwMD1jb25maWcgRFdNQUNfU1VONTVJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMDItXHRkZWZhdWx0IEFSQ0hfU1VOWElcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzAzOlx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1VOWEkgfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMDQtXHRzZWxlY3QgTURJT19CVVNfTVVYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMTI9Y29uZmlnIERXTUFDX1RIRUFEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMxMy1cdHRyaXN0YXRlIFwmIzM0O1QtSEVBRCBkd21hYyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMxNDpcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1RIRUFEIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzE1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzIyPWNvbmZpZyBEV01BQ19JTVg4XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMjQtXHRkZWZhdWx0IEFSQ0hfTVhDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMyNTpcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX01YQyB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMyNi1cdHNlbGVjdCBNRkRfU1lTQ09OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMzQ9Y29uZmlnIERXTUFDX0lOVEVMX1BMQVRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzM1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgZHdtYWMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMzY6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBDT01NT05fQ0xLXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMzNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM0ND1jb25maWcgRFdNQUNfTE9PTkdTT04xXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNDYtXHRkZWZhdWx0IE1BQ0hfTE9PTkdTT04zMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNDc6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoTUFDSF9MT09OR1NPTjMyIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzQ4LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzU1PWNvbmZpZyBEV01BQ19URUdSQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNTYtXHR0cmlzdGF0ZSBcJiMzNDtOVklESUEgVGVncmEgTUdCRSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM1NzpcdGRlcGVuZHMgb24gQVJDSF9URUdSQSB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzU4LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzY0PWNvbmZpZyBEV01BQ19WSVNDT05USVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzY2LVx0ZGVmYXVsdCBBUkNIX1ZJU0NPTlRJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM2NzpcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IENPTU1PTl9DTEsgXHUwMDI2XHUwMDI2IChBUkNIX1ZJU0NPTlRJIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzY4LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzc4PWNvbmZpZyBEV01BQ19JTlRFTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzgwLVx0ZGVmYXVsdCBYODZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzgxOlx0ZGVwZW5kcyBvbiBYODYgXHUwMDI2XHUwMDI2IFBDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozODI6XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzgzOlx0ZGVwZW5kcyBvbiBBQ1BJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM4NC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM4OD1jb25maWcgRFdNQUNfTE9PTkdTT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5MC1cdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM5MTpcdGRlcGVuZHMgb24gKE1BQ0hfTE9PTkdTT042NCB8fCBDT01QSUxFX1RFU1QpIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzkyOlx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5My1cdHNlbGVjdCBTVE1NQUNfTElCUENJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zOTktXHR0cmlzdGF0ZSBcJiMzNDtNb3RvcmNvbW0gUENJIERXTUFDIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDAwOlx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDAxLVx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTQwNz1jb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwOTpcdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQxMDpcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MTEtXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1MjMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA1NzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmcgYW4gYHN0bW1hY2AgRHJpdmVyIHZpYSBTeXprYWxsZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBtaW5kIGp1bXBzIHRvIGhvdyB3ZSBjb3VsZCBmdXp6IHRoaXMgd2l0aCBzeXprYWxsZXIuIEkgc2VlIGBTVE1NQUNfUENJYCBhbmQgYERXTUFDX0lOVEVMYCwgd2hpY2ggYXJlIFBDSSBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgZm9yIGBzdG1tYWNgLiBOb3csIGBEV01BQ19JTlRFTGAgZGVwZW5kcyBvbiBYODYsIFBDSSwgQ09NTU9OX0NMSywgYW5kIEFDUEkuIFJpZ2h0IGF3YXksIHRoYXQgdGVsbHMgbWUgaXQgKmNvdWxkKiBiZSBwcmVzZW50IG9uIHNvbWUgeDg2IHBsYXRmb3Jtcy4gVGhlIGJpZyBxdWVzdGlvbiBpcywgd2lsbCBRRU1VIGVtdWxhdGUgaXQ/IE5vcm1hbGx5LCBuby4gUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIGBzdG1tYWNgIFBDSSBkZXZpY2VzIG91dCBvZiB0aGUgYm94LgoKQnV0IHdhaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSB0aGlzIHZpcnR1YWwgUENJIGRldmljZSBmdXp6aW5nIGZyYW1ld29yayB1c2luZyBgc3l6X3BjaV9kZXZpY2VgLiBDb3VsZCB3ZSB1c2UgdGhhdCBoZXJlPyBUaGUgY2F0Y2ggaXMsIGBzdG1tYWNgIGlzbiYjMzk7dCBhIGdlbmVyaWMgUENJIGRldmljZS4gSXQmIzM5O3MgdGllZCB0byBzcGVjaWZpYyBJbnRlbCBTb0NzIGxpa2UgRWxraGFydCBMYWtlIG9yIFF1YXJrLiBUaGF0IHNhaWQsIHN5emthbGxlciBjYW4gdGVjaG5pY2FsbHkgZnV6eiAqYW55KiBQQ0kgZGV2aWNlIGlmIGl0JiMzOTtzIGNvbXBpbGVkIGluLiBJdCBjYW4gaW5qZWN0IFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIGFuZCBNTUlPL1BJTyBhY2Nlc3NlcyB0aHJvdWdoIGBzeXpfcGNpX2RldmljZWAgb3IgYHN5el9rdm1fc2V0dXBfY3B1YC4gVGhlIHByb2JsZW0gaXMgdGhhdCB0aGUgcHJvbXB0IG1lbnRpb25zIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLCB3aGljaCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIElzIGBzdG1tYWNgIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGNhcmQ/CgpOby4gYHN0bW1hY2AgaXMgYSBNQUMgSVAgYmxvY2ssIGEgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMsIGludGVncmF0ZWQgaW50byBtYW55IFNvQ3MuIEl0JiMzOTtzIGFuIEV0aGVybmV0IGNvbnRyb2xsZXIsIG5vdCBhIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVLiBPa2F5LCB0aGF0JiMzOTtzIGdvb2QuCgpCdXQgbm93IEkgc2VlIHRoZSBwYXRjaCBpcyBpbiBgc3RtbWFjX3NlbGZ0ZXN0cy5jYCwgdHJpZ2dlcmVkIHZpYSBldGh0b29sIHNlbGZ0ZXN0LiBUaGF0JiMzOTtzIGEgZGlmZmVyZW50IGJlYXN0LiBUbyB0cmlnZ2VyICp0aGF0KiwgdGhlIGRyaXZlciBoYXMgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LCBhIGBuZXRfZGV2aWNlYCBoYXMgdG8gcmVnaXN0ZXIsIGFuZCAqdGhlbiogZXRodG9vbCBoYXMgdG8gYmUgY2FsbGVkLiBDYW4gc3l6a2FsbGVyIGV2ZW4gKnByb2JlKiB0aGUgYHN0bW1hY2AgZHJpdmVyPyBJZiBpdCYjMzk7cyBhIFBDSSBkZXZpY2UsIGl0IGNhbiB0cnkgdG8gcHJvYmUgaXQgd2l0aCB0aGUgcmlnaHQgUENJIElELiBIb3dldmVyLCBwcm9iaW5nIGFuIEV0aGVybmV0IGNvbnRyb2xsZXIgaXMgY29tcGxleC4gSXQgbmVlZHMgRE1BIHNldHVwLCBpbnRlcnJ1cHRzLCB0aGUgY29ycmVjdCBNTUlPIHJlZ2lzdGVycyBjb25maWd1cmVkLiBJdCYjMzk7cyB0cmlja3kgdG8gZ2V0IGEgY29tcGxleCBkcml2ZXIgdG8gZnVsbHkgcHJvYmUgYW5kIHJlZ2lzdGVyIGEgYG5ldF9kZXZpY2VgIGp1c3QgZnJvbSBmdXp6aW5nIE1NSU8sIHVubGVzcyB0aGVyZSBpcyBhIHNwZWNpZmljIGVtdWxhdGlvbiBsaWtlIGUxMDAwZSwgcnRsODEzOSwgb3Igdm14bmV0My4KCkRvZXMgc3l6a2FsbGVyIGhhdmUgYSBwc2V1ZG8tZGV2aWNlIGZvciBzdG1tYWM/IE5vcGUuIElzIGBzdG1tYWNgIHJlYWNoYWJsZSB2aWEgdmhjaSBvciBzaW1pbGFyPyBOby4gT2theSwgYmFjayB0byB0aGUgZHJhd2luZyBib2FyZC4KCldhaXQsIGBwaHlsaW5rX3Bjc19sb29wYmFja2AgaXMgYSBnZW5lcmljIHBoeWxpbmsgZnVuY3Rpb24uIEl0ICpjb3VsZCogYmUgdXNlZCBieSBvdGhlciBkcml2ZXJzLCBidXQgdGhlIHBhdGNoICpvbmx5KiBhZGRzIGl0IGFuZCB1c2VzIGl0IGluIGBzdG1tYWNgLiBJJiMzOTtsbCBoYXZlIHRvIGRvdWJsZS1jaGVjayBpZiBgcGh5bGlua19wY3NfbG9vcGJhY2tgIGlzIHVzZWQgYW55d2hlcmUgZWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rX3Bjc19sb29wYmFjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM9Mzc3PXN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfcGh5X2xvb3BiYWNrKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMzk3LVx0aWYgKHBjcykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjM5ODpcdFx0cmV0ID0gcGh5bGlua19wY3NfbG9vcGJhY2socGNzLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0zOTktXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTQwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzo0MDU6XHRcdHBoeWxpbmtfcGNzX2xvb3BiYWNrKHBjcywgZmFsc2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTQwNi1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM9MTk3ND12b2lkIHN0bW1hY19zZWxmdGVzdF9ydW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMjAwNS1cdFx0XHRlbHNlIGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjIwMDY6XHRcdFx0XHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDA3LVx0XHRcdGlmICghcmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDQwLVx0XHRcdGVsc2UgaWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MjA0MTpcdFx0XHRcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDQyLVx0XHRcdGlmICghcmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9OTk4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcGNzX3ByZV9pbml0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMDAtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMDE6ICogcGh5bGlua19wY3NfbG9vcGJhY2soKSAtIEVuYWJsZSBvciBkaXNhYmxlIGxvb3BiYWNrIGF0IHRoZSBQQ1NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAwMi0gKiBAcGNzOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3MuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDA5LSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDEwOmludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMTEte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAxNi19XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTc6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfbG9vcGJhY2spO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE4LVxuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTczMj1pbnQgcGNzX2xvb3BiYWNrKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSk7XG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzM1LVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6NzM2OmludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzM3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNzU4CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgUmVhY2ggb2YgYHBjc19sb29wYmFja2AgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSBzZWUgdGhpcyBgcGNzX2xvb3BiYWNrYCBmdW5jdGlvbiBpcyBvbmx5IGJlaW5nIHV0aWxpemVkIHdpdGhpbiBgc3RtbWFjX3NlbGZ0ZXN0cy5jYC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2hldGhlciBvciBub3Qgc3l6a2FsbGVyIGlzIGNhcGFibGUgb2YgdHJpZ2dlcmluZyBleGVjdXRpb24gd2l0aGluIHRoYXQgc3BlY2lmaWMgZmlsZS4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIHF1ZXN0aW9uLiBJZiBpdCBjYW4mIzM5O3QsIHRoZW4gdGhpcyBjb2RlIHBhdGggaXMgZXNzZW50aWFsbHkgdW5yZWFjaGFibGUgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIGFuZCBteSBlZmZvcnQgaXMgd2FzdGVkLgoKVGhlcmVmb3JlLCBJIG5lZWQgdG8gZXhwYW5kIG15IHNlYXJjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHdpZGVyIHVzYWdlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LiBJcyB0aGVyZSBhbm90aGVyIGRyaXZlciB3aGljaCBhbHNvIGltcGxlbWVudHMgYHBjc19sb29wYmFja2AgdXNpbmcgYHBoeWxpbmtfcGNzX29wc2A/IFRoYXQgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyBhIGdlbmVyYWwgcGF0dGVybi4gT3IsIHBlcmhhcHMsIGl0IGlzIG1vcmUgbmFycm93LCBhcyBpdCBzZWVtcy4gTXkgcHJpbWFyeSBnb2FsIGlzIHRvIGFzc2VzcyB0aGUgcG90ZW50aWFsIGZvciBidWcgZGlzY292ZXJ5IHZpYSBmdXp6aW5nLiBUaGlzIGZpcnN0IHN0ZXAgdGVsbHMgbWUgdG8gbG9vayBmb3Igb3RoZXIgaW1wbGVtZW50YXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY3NfbG9vcGJhY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oPTE0MTQ9dW5pb24gbXhsODYyeHhfeHBjc19hbl93b3JkIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQyOC0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxNDI5OiAqIGVudW0gbXhsODYyeHhfeHBjc19sb29wYmFja19tb2RlIC0gWFBDUyBsb29wYmFjayBtb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQzMC0gKiBATVhMODYyWFhfWFBDU19MQl9ESVNBQkxFOiBkaXNhYmxlIGFsbCBsb29wYmFja1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xNDM1LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjE0MzY6ZW51bSBteGw4NjJ4eF94cGNzX2xvb3BiYWNrX21vZGUge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE0MzctXHRNWEw4NjJYWF9YUENTX0xCX0RJU0FCTEUgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0zNzc9c3RhdGljIGludCBzdG1tYWNfdGVzdF9waHlfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0zOTctXHRpZiAocGNzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6Mzk4Olx0XHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIHRydWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTM5OS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtNDA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjQwNTpcdFx0cGh5bGlua19wY3NfbG9vcGJhY2socGNzLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtNDA2LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0xOTc0PXZvaWQgc3RtbWFjX3NlbGZ0ZXN0X3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDA1LVx0XHRcdGVsc2UgaWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MjAwNjpcdFx0XHRcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MsIHRydWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwMDctXHRcdFx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwNDAtXHRcdFx0ZWxzZSBpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoyMDQxOlx0XHRcdFx0cmV0ID0gcGh5bGlua19wY3NfbG9vcGJhY2socHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcywgZmFsc2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwNDItXHRcdFx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz05OTg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfcHJlX2luaXQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAwMC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAwMTogKiBwaHlsaW5rX3Bjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDU1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDAyLSAqIEBwY3M6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjcy5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMDktICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTA6aW50IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAxMS17XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTI6XHRpZiAocGNzLVx1MDAzZW9wcy1cdTAwM2VwY3NfbG9vcGJhY2spXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTM6XHRcdHJldHVybiBwY3MtXHUwMDNlb3BzLVx1MDAzZXBjc19sb29wYmFjayhwY3MsIGVuYWJsZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMTQtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE2LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAxNzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Bjc19sb29wYmFjayk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMTgtXG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg9NDk0PXN0cnVjdCBwaHlsaW5rX3BjcyB7XG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNTIwLSAqICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIGUuZy4gUlggY2xvY2sgZm9yIHN0bW1hYy5cbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjUyMTogKiBAcGNzX2xvb3BiYWNrOiBlbmFibGUvZGlzYWJsZSBsb29wYmFjayBtb2RlIGF0IHRoZSBQQ1MuXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC01MjItICovXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD01MjM9c3RydWN0IHBoeWxpbmtfcGNzX29wcyB7XG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNTQ1LVx0aW50ICgqcGNzX3ByZV9pbml0KShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo1NDY6XHRpbnQgKCpwY3NfbG9vcGJhY2spKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSk7XG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC01NDctfTtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD03MjA9aW50IHBjc19wcmVfaW5pdChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzIyLS8qKlxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6NzIzOiAqIHBjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDU1xuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzI0LSAqIEBwY3M6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjcy5cbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MzEtICovXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MzI6aW50IHBjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzMzLVxuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczNS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjczNjppbnQgcGh5bGlua19wY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKTtcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM3MjUKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqSW52ZXN0aWdhdGluZyBgcGNzX2xvb3BiYWNrYCBpbiBgcGh5bGlua19wY3Nfb3BzYCoqCgpIbW0sIGhvbGQgb24gYSBzZWNvbmQuIFNvbWV0aGluZyBkb2VzbiYjMzk7dCBmZWVsIHJpZ2h0LiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IHRoZSBgcGNzX2xvb3BiYWNrYCBmdW5jdGlvbmFsaXR5IHdvdWxkIGJlIGltcGxlbWVudGVkIHNvbWV3aGVyZSwgYnV0IG5vdyBJJiMzOTttIGRvdWJ0aW5nIHRoYXQuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYHBoeWxpbmtfcGNzX29wc2Agc3RydWN0dXJlIOKAkyBkb2VzIGFueSAqYWN0dWFsKiBkcml2ZXIsIGluIGEgcmVhbC13b3JsZCBzY2VuYXJpbywgYWN0dWFsbHkgcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBmb3IgdGhhdCBtZW1iZXIsIGBwY3NfbG9vcGJhY2tgPyBJdCYjMzk7cyBtYWtpbmcgbWUgd29uZGVyIGlmIEkmIzM5O20gbWlzc2luZyBzb21ldGhpbmcsIG9yIHBlcmhhcHMgbWlzaW50ZXJwcmV0aW5nIGl0cyB1c2UgY2FzZS4KCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gVGhlIGJlc3Qgd2F5IHRvIGNsYXJpZnkgdGhpcyB3b3VsZCBiZSB0byBnbyBhbmQgc2VhcmNoIGZvciB3aGVyZSB0aGUgYHBjc19sb29wYmFja2AgbWVtYmVyIGlzIGJlaW5nIGFzc2lnbmVkLCB3aGV0aGVyIGl0IGJlIGluIGEgZHJpdmVyIGRpcmVjdGx5LCBvciBwb3RlbnRpYWxseSwgdGhyb3VnaCBzb21lIHNvcnQgb2YgaGlnaGVyLWxldmVsIGFic3RyYWN0aW9uLiBJIG5lZWQgdG8ga25vdyBkZWZpbml0aXZlbHkgaWYgaXQmIzM5O3MgYmVpbmcgdXNlZCBhbmQsIGlmIHNvLCBob3cuIExldCBtZSBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XFwucGNzX2xvb3BiYWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQwMzMKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhbiBleHBlcnQ6CgoqKlJlZmluaW5nIE15IFNlYXJjaCBmb3IgYHBjc19sb29wYmFja2AqKgoKQWxyaWdodCwgSSYjMzk7bSBhdCBhIHBvaW50IHdoZXJlIEkgbmVlZCB0byByZXZpc2l0IHRoZSBgcGNzX2xvb3BiYWNrYCB0ZXJtIHdpdGhpbiB0aGUgY29kZSBiYXNlLiBJJiMzOTt2ZSBsaWtlbHkgZW5jb3VudGVyZWQgaXQgYmVmb3JlLCBwZXJoYXBzIGluIGEgc3BlY2lmaWMgY29udGV4dCBvciBtb2R1bGUsIGJ1dCBJIHdhbnQgdG8gY2FzdCBhIHdpZGVyIG5ldCB0aGlzIHRpbWUuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gTXkgaW5pdGlhbCBzZWFyY2ggbWlnaHQgaGF2ZSBiZWVuIHRvbyBuYXJyb3csIG9yIG1heWJlIEkgZGlkbiYjMzk7dCBmdWxseSBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSB0ZXJtIGluIHJlbGF0aW9uIHRvIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4gVGhlcmVmb3JlLCBJJiMzOTttIGdvaW5nIHRvIGluaXRpYXRlIGFub3RoZXIsIG1vcmUgY29tcHJlaGVuc2l2ZSBzZWFyY2gsIGRpZ2dpbmcgZGVlcGVyIGludG8gdGhlIGVudGlyZSBjb2RlIHRyZWUgdG8gZW5zdXJlIEkgaGF2ZW4mIzM5O3Qgb3Zlcmxvb2tlZCBhbnkgcmVsZXZhbnQgaW5zdGFuY2VzIG9yIGFzc29jaWF0ZWQgaW1wbGVtZW50YXRpb25zLiBJJiMzOTttIGFpbWluZyBmb3IgYSBob2xpc3RpYyB1bmRlcnN0YW5kaW5nLCBhIHZpZXcgb2YgdGhlIGZvcmVzdCwgbm90IGp1c3QgYSBmZXcgdHJlZXMuIEl0JiMzOTtzIHRpbWUgdG8gcmVmaW5lIG15IG1lbnRhbCBtb2RlbCBieSBicm9hZGVuaW5nIHRoZSBzY29wZSBvZiBteSBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY3NfbG9vcGJhY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oPTE0MTQ9dW5pb24gbXhsODYyeHhfeHBjc19hbl93b3JkIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQyOC0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxNDI5OiAqIGVudW0gbXhsODYyeHhfeHBjc19sb29wYmFja19tb2RlIC0gWFBDUyBsb29wYmFjayBtb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQzMC0gKiBATVhMODYyWFhfWFBDU19MQl9ESVNBQkxFOiBkaXNhYmxlIGFsbCBsb29wYmFja1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xNDM1LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjE0MzY6ZW51bSBteGw4NjJ4eF94cGNzX2xvb3BiYWNrX21vZGUge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE0MzctXHRNWEw4NjJYWF9YUENTX0xCX0RJU0FCTEUgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0zNzc9c3RhdGljIGludCBzdG1tYWNfdGVzdF9waHlfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0zOTctXHRpZiAocGNzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6Mzk4Olx0XHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIHRydWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTM5OS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtNDA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjQwNTpcdFx0cGh5bGlua19wY3NfbG9vcGJhY2socGNzLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtNDA2LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0xOTc0PXZvaWQgc3RtbWFjX3NlbGZ0ZXN0X3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDA1LVx0XHRcdGVsc2UgaWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MjAwNjpcdFx0XHRcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MsIHRydWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwMDctXHRcdFx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwNDAtXHRcdFx0ZWxzZSBpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoyMDQxOlx0XHRcdFx0cmV0ID0gcGh5bGlua19wY3NfbG9vcGJhY2socHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcywgZmFsc2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwNDItXHRcdFx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz05OTg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfcHJlX2luaXQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAwMC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAwMTogKiBwaHlsaW5rX3Bjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDU1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDAyLSAqIEBwY3M6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjcy5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMDktICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTA6aW50IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAxMS17XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTI6XHRpZiAocGNzLVx1MDAzZW9wcy1cdTAwM2VwY3NfbG9vcGJhY2spXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTM6XHRcdHJldHVybiBwY3MtXHUwMDNlb3BzLVx1MDAzZXBjc19sb29wYmFjayhwY3MsIGVuYWJsZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMTQtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE2LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAxNzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Bjc19sb29wYmFjayk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMTgtXG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg9NDk0PXN0cnVjdCBwaHlsaW5rX3BjcyB7XG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNTIwLSAqICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIGUuZy4gUlggY2xvY2sgZm9yIHN0bW1hYy5cbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjUyMTogKiBAcGNzX2xvb3BiYWNrOiBlbmFibGUvZGlzYWJsZSBsb29wYmFjayBtb2RlIGF0IHRoZSBQQ1MuXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC01MjItICovXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD01MjM9c3RydWN0IHBoeWxpbmtfcGNzX29wcyB7XG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNTQ1LVx0aW50ICgqcGNzX3ByZV9pbml0KShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo1NDY6XHRpbnQgKCpwY3NfbG9vcGJhY2spKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSk7XG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC01NDctfTtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD03MjA9aW50IHBjc19wcmVfaW5pdChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzIyLS8qKlxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6NzIzOiAqIHBjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDU1xuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzI0LSAqIEBwY3M6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjcy5cbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MzEtICovXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MzI6aW50IHBjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzMzLVxuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczNS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjczNjppbnQgcGh5bGlua19wY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKTtcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU5NjIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0MDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgcGNzX2xvb3BiYWNrYCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBhIHBvdGVudGlhbCBpc3N1ZS4gSWYgbm8gZHJpdmVyIGFjdHVhbGx5ICppbXBsZW1lbnRzKiBgcGNzX2xvb3BiYWNrYCwgdGhlbiB0aGUgZnVuY3Rpb24gYHBoeWxpbmtfcGNzX2xvb3BiYWNrYCBpcyBqdXN0IGdvaW5nIHRvIHJldHVybiBgLUVPUE5PVFNVUFBgLiBUaGF0JiMzOTtzIGEgcHJvYmxlbSwgaXNuJiMzOTt0IGl0PyBMZXQmIzM5O3MgdmVyaWZ5LiBGaXJzdCwgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGBwY3NfbG9vcGJhY2tgIGluIHRoZSBzZXJpZXMgb2YgcGF0Y2hlcy4KCkxvb2tpbmcgYXQgdGhlIGRpZmYsIGl0IG9ubHkgdG91Y2hlcyBgc3RtbWFjX3NlbGZ0ZXN0cy5jYCwgYHBoeWxpbmsuY2AsIGFuZCBgcGh5bGluay5oYC4gSXMgdGhlIGltcGxlbWVudGF0aW9uICpzb21ld2hlcmUgZWxzZSogaW4gdGhlIHRyZWU/IE1heWJlIGl0JiMzOTtzIGluIGEgZGlmZmVyZW50IGZpbGU/IEkgZGlkIGEgZnVsbCB0cmVlIHNlYXJjaCBmb3IgYHBjc19sb29wYmFja2AgYW5kIGZvdW5kIG5vdGhpbmcsIG5vIGFzc2lnbm1lbnRzIGF0IGFsbCwgbm8gYC5wY3NfbG9vcGJhY2sgPSAuLi5gLiBIbW0sIGxldCBtZSBkb3VibGUtY2hlY2sgdGhhdDsgbWF5YmUgaXQmIzM5O3MgdXNpbmcgZGlmZmVyZW50IHN5bnRheCBsaWtlIGBvcHMtJmd0O3Bjc19sb29wYmFjayA9IC4uLmAgb3IgaW5pdGlhbGl6ZWQgYXMgYSBzdHJ1Y3QgbWVtYmVyLiBTdGlsbCBub3RoaW5nLgoKSSByYW4gYW5vdGhlciBzZWFyY2gsIGp1c3QgdG8gYmUgc3VyZSwgYW5kIHRoZSBvbmx5IG1hdGNoZXMgYXJlIGluIGBteGw4NjJ4eC1hcGkuaGAgKGFuIGVudW0pLCB0aGUgZmlsZXMgaW4gdGhlIGRpZmYsIGFuZCBub3RoaW5nIGVsc2UuIFRoZXJlIGlzIGxpdGVyYWxseSBubyBkcml2ZXIgdGhhdCAqYWN0dWFsbHkqIGltcGxlbWVudHMgYHBjc19sb29wYmFja2AhCgpTbywgaWYgdGhlcmUmIzM5O3Mgbm8gaW1wbGVtZW50YXRpb24sIHRoZW4gYHBoeWxpbmtfcGNzX2xvb3BiYWNrYCBqdXN0IHJldHVybnMgYC1FT1BOT1RTVVBQYCBhbmQgZG9lcyBub3RoaW5nLiBJcyBpdCBldmVuIHdvcnRoIGZ1enppbmcgaWYgaXQmIzM5O3MganVzdCBhIHdyYXBwZXIgZnVuY3Rpb24gdGhhdCBhbHdheXMgcmV0dXJucyBhbiBlcnJvcj8gSXQmIzM5O3Mgbm90IHJlYWxseSB0ZXN0YWJsZSBvciBmdW5jdGlvbmFsIGluIHRoYXQgY2FzZS4gV2FpdCwgbWF5YmUgdGhlIGltcGxlbWVudGF0aW9uIGlzIG5hbWVkIGRpZmZlcmVudGx5PyBObywgdGhlIHN0cnVjdCBtZW1iZXIgaXMgYHBjc19sb29wYmFja2AuIElmIGl0IHdlcmUgaW5pdGlhbGl6ZWQsIGl0IHdvdWxkIGhhdmUgdG8gYmUgbmFtZWQgYHBjc19sb29wYmFja2AgaW4gdGhlIHN0cnVjdCBpbml0aWFsaXplci4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUsIEkmIzM5O20gZ29pbmcgdG8gc2NhbiB0aGUgYGRyaXZlcnMvbmV0L3Bjcy9gIGRpcmVjdG9yeSBmb3IgYW55IHJlZmVyZW5jZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNzX2xvb3BiYWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2ODQxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipDaGVja2luZyBmb3IgTG9vcGJhY2sgRnVuY3Rpb25hbGl0eSBpbiBTVE1NQUMgRHJpdmVyKioKCkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzIG5ldHdvcmtpbmcgaXNzdWUsIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgZXhpc3RlbmNlIGFuZCBzdHJ1Y3R1cmUgb2YgYW55IGxvb3BiYWNrIGZ1bmN0aW9uYWxpdHkgcmVsYXRlZCB0byB0aGUgU1RNTUFDIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGEgYHBjc19sb29wYmFja2AgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIGEgcHJldHR5IHN0YW5kYXJkIHdheSB0byB0ZXN0IHRoZSBwaHlzaWNhbCBsYXllciBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8ga25vdyBpZiB0aGVyZSYjMzk7cyBhbiBleGlzdGluZyBgcGNzX2xvb3BiYWNrYCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9gIGRpcmVjdG9yeS4gSWYgb25lIGV4aXN0cywgaXQgcHJvdmlkZXMgYSBuaWNlIHNhbml0eSBjaGVjayBmb3IgUEhZIGNvbmZpZ3VyYXRpb24gYW5kIE1BQy1QSFkgY29tbXVuaWNhdGlvbiB0aGF0IEkgY2FuIGxldmVyYWdlLiBJZiBpdCBpcyBhbHJlYWR5IHRoZXJlLCBpdCBjYW4gc2F2ZSBtZSBzb21lIGVmZm9ydCBpbiBkZXRlcm1pbmluZyBpZiBJIG5lZWQgdG8gaW1wbGVtZW50IG15IG93biB0ZXN0LiBTbywgSSB3aWxsIGNoZWNrIHRoYXQgZGlyZWN0b3J5IGFuZCB0aGUgc3BlY2lmaWMgbmFtZSB0byBkZXRlcm1pbmUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Bjc19sb29wYmFjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM9Mzc3PXN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfcGh5X2xvb3BiYWNrKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMzk3LVx0aWYgKHBjcykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjM5ODpcdFx0cmV0ID0gcGh5bGlua19wY3NfbG9vcGJhY2socGNzLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0zOTktXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTQwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzo0MDU6XHRcdHBoeWxpbmtfcGNzX2xvb3BiYWNrKHBjcywgZmFsc2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTQwNi1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM9MTk3ND12b2lkIHN0bW1hY19zZWxmdGVzdF9ydW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMjAwNS1cdFx0XHRlbHNlIGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjIwMDY6XHRcdFx0XHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDA3LVx0XHRcdGlmICghcmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDQwLVx0XHRcdGVsc2UgaWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MjA0MTpcdFx0XHRcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDQyLVx0XHRcdGlmICghcmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzcwNwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDEyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIExvb3BiYWNrIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBgcGNzX2xvb3BiYWNrYCBmdW5jdGlvbiBpdHNlbGYgaXNuJiMzOTt0IGFjdHVhbGx5ICpkZWZpbmVkKiBoZXJlLCB3aGljaCBpcyBvZGQuIFRoaXMgcGF0Y2gganVzdCBzZXRzIHVwIHRoZSBncm91bmR3b3JrIGFuZCBjYWxscyB0aGUgZnVuY3Rpb24gd2l0aGluIGBzdG1tYWNfc2VsZnRlc3RzLmNgLiBIbW0sIG1heWJlIGl0JiMzOTtzIGluIGEgY29tcGFuaW9uIHBhdGNoIGluIHRoZSBzZXJpZXMsIGJ1dCB0aGUgcHJvbXB0IHNheXMgZXZlcnl0aGluZyYjMzk7cyBhbHJlYWR5IGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgaGVhZCBjb21taXQuIFRoYXQgc3VnZ2VzdHMgaXQgKnNob3VsZCogYmUgaW4gdGhlIHRyZWUuCgpMZXQgbWUganVzdCBkbyBhIHF1aWNrIGBncmVwYCB0aHJvdWdoIHRoZSBlbnRpcmUgY29kZWJhc2UsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBJZiBJIGNvbWUgdXAgZW1wdHksIHRoZW4gdGhhdCYjMzk7cyBjb25maXJtYXRpb24g4oCTIHRoZXJlJiMzOTtzIG5vIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBvZiBgcGNzX2xvb3BiYWNrYC4gTWF5YmUgaXQmIzM5O3MgaGlkZGVuIGVsc2V3aGVyZSwgYnV0IGl0IHNlZW1zIHVubGlrZWx5LiBKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBhbHNvIGNoZWNrIHVuZGVyIGBkcml2ZXJzL25ldC9waHkvYCB0byBzZWUgaWYgaXQmIzM5O3MgaGlkaW5nIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY3NfbG9vcGJhY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9OTk4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcGNzX3ByZV9pbml0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMDAtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMDE6ICogcGh5bGlua19wY3NfbG9vcGJhY2soKSAtIEVuYWJsZSBvciBkaXNhYmxlIGxvb3BiYWNrIGF0IHRoZSBQQ1NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAwMi0gKiBAcGNzOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3MuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDA5LSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDEwOmludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMTEte1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDEyOlx0aWYgKHBjcy1cdTAwM2VvcHMtXHUwMDNlcGNzX2xvb3BiYWNrKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDEzOlx0XHRyZXR1cm4gcGNzLVx1MDAzZW9wcy1cdTAwM2VwY3NfbG9vcGJhY2socGNzLCBlbmFibGUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE0LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAxNi19XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTc6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfbG9vcGJhY2spO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODQxMAoJCQkJCQkJb3V0cHV0OiAxNDUKCQkJCQkJCXRob3VnaHRzOiA0MTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBBbmFseXNpczogVW5yZWFjaGFibGUgQ29kZSBQYXRoIGluIHN0bW1hYyBEcml2ZXIqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgc2VlLCB0aGUgYHBoeWxpbmtfcGNzX2xvb3BiYWNrYCBmdW5jdGlvbiBpcyBlc3NlbnRpYWxseSBhIHBsYWNlaG9sZGVyOyBpdCYjMzk7cyBkZXNpZ25lZCB0byByZXR1cm4gYC1FT1BOT1RTVVBQYCBhY3Jvc3MgdGhlIGJvYXJkLiBUaGUgY29kZSBpbiBgc3RtbWFjX3NlbGZ0ZXN0cy5jYCBhdHRlbXB0cyB0byB1dGlsaXplIHRoaXMsIGJ1dCBpdCBpbW1lZGlhdGVseSByZXR1cm5zIHRoZSBlcnJvci4gVGhpcyBtZWFucyB0aGUgbmV3IGNvZGUgcGF0aCB3aXRoaW4gYHN0bW1hY190ZXN0X3BoeV9sb29wYmFja2AgaXMgYSBkZWFkIGVuZC4gSSYjMzk7bSBub3Qgc2VlaW5nIGFueSBuZXcsIGludGVyZXN0aW5nIGZ1bmN0aW9uYWxpdHkgaGVyZS4gSXQmIzM5O3MgZXNzZW50aWFsbHkgYSBuby1vcCB0aGF0IHByb21wdGx5IHNpZ25hbHMgYW4gdW5zdXBwb3J0ZWQgb3BlcmF0aW9uLgoKRnVydGhlcm1vcmUsIGFuZCB0aGlzIGlzIGNydWNpYWwsIHRoZSBgc3RtbWFjYCBkcml2ZXIgaXRzZWxmIGlzIHRhcmdldGVkIGF0IHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUuIFJlYWNoaW5nIHRoaXMgY29kZSBkdXJpbmcgZnV6emluZyBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAgaXMgZ29pbmcgdG8gYmUgaW5jcmVkaWJseSBkaWZmaWN1bHQsIGlmIG5vdCBpbXBvc3NpYmxlLCB3aXRob3V0IGEgaGlnaGx5IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiBlbnZpcm9ubWVudC4gRXZlbiBpZiBJICpjb3VsZCogcmVhY2ggaXQsIEkmIzM5O2QganVzdCBiZSBoaXR0aW5nIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGVycm9yLiBUaGUgcmlzay1yZXdhcmQgcmF0aW8gaXMgbm90IHRoZXJlLiBUaGUgYWRkZWQgY29tcGxleGl0eSBvZiBzZXR0aW5nIHVwIGEgcmVsZXZhbnQgZnV6emluZyBlbnZpcm9ubWVudCB3aXRoIGhhcmR3YXJlIGVtdWxhdGlvbiB3b3VsZCBvdXR3ZWlnaCB0aGUgZ2Fpbi4gU28sIHNpbmNlIHRoZSBuZXcgY29kZSBwYXRoIGp1c3QgcmV0dXJucyBhbiBlcnJvciwgYW5kIHRoZSBzdG1tYWMgZHJpdmVyIGlzIGRpZmZpY3VsdCB0byByZWFjaCwgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYCB3aXRob3V0IGEgc2Vjb25kIHRob3VnaHQuIEkmIzM5O3ZlIGRvdWJsZSBjaGVja2VkIGZvciByZWFjaGFiaWxpdHksIGFuZCBJIGRvbiYjMzk7dCBzZWUgYW55IHZhbHVlIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGdlbmVyaWMgcGh5bGlua19wY3NfbG9vcGJhY2sgZnVuY3Rpb24gYW5kIGNhbGxzIGl0IGZyb20gdGhlIHN0bW1hYyBkcml2ZXImIzM5O3Mgc2VsZnRlc3QuIEhvd2V2ZXIsIHRoZXJlIGFyZSBubyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHBjc19sb29wYmFjayBjYWxsYmFjayBpbiBhbnkgUENTIGRyaXZlcnMgaW4gdGhlIHRyZWUsIG1lYW5pbmcgcGh5bGlua19wY3NfbG9vcGJhY2sgd2lsbCBhbHdheXMgdHJpdmlhbGx5IHJldHVybiAtRU9QTk9UU1VQUC4gQWRkaXRpb25hbGx5LCB0aGUgc3RtbWFjIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgTUFDcyAoZS5nLiwgU3lub3BzeXMgRFdNQUMpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgc2VsZnRlc3QgdW5yZWFjaGFibGUgZHVyaW5nIGdlbmVyaWMgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBnZW5lcmljIHBoeWxpbmtfcGNzX2xvb3BiYWNrIGZ1bmN0aW9uIGFuZCBjYWxscyBpdCBmcm9tIHRoZSBzdG1tYWMgZHJpdmVyJiMzOTtzIHNlbGZ0ZXN0LiBIb3dldmVyLCB0aGVyZSBhcmUgbm8gaW1wbGVtZW50YXRpb25zIG9mIHRoZSBwY3NfbG9vcGJhY2sgY2FsbGJhY2sgaW4gYW55IFBDUyBkcml2ZXJzIGluIHRoZSB0cmVlLCBtZWFuaW5nIHBoeWxpbmtfcGNzX2xvb3BiYWNrIHdpbGwgYWx3YXlzIHRyaXZpYWxseSByZXR1cm4gLUVPUE5PVFNVUFAuIEFkZGl0aW9uYWxseSwgdGhlIHN0bW1hYyBkcml2ZXIgaXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIE1BQ3MgKGUuZy4sIFN5bm9wc3lzIERXTUFDKSB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIHNlbGZ0ZXN0IHVucmVhY2hhYmxlIGR1cmluZyBnZW5lcmljIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjE6MjAuMzM2NTIyMDQyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM5OTgwODQxNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBnZW5lcmljIHBoeWxpbmtfcGNzX2xvb3BiYWNrIGZ1bmN0aW9uIGFuZCBjYWxscyBpdCBmcm9tIHRoZSBzdG1tYWMgZHJpdmVyJ3Mgc2VsZnRlc3QuIEhvd2V2ZXIsIHRoZXJlIGFyZSBubyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHBjc19sb29wYmFjayBjYWxsYmFjayBpbiBhbnkgUENTIGRyaXZlcnMgaW4gdGhlIHRyZWUsIG1lYW5pbmcgcGh5bGlua19wY3NfbG9vcGJhY2sgd2lsbCBhbHdheXMgdHJpdmlhbGx5IHJldHVybiAtRU9QTk9UU1VQUC4gQWRkaXRpb25hbGx5LCB0aGUgc3RtbWFjIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgTUFDcyAoZS5nLiwgU3lub3BzeXMgRFdNQUMpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgc2VsZnRlc3QgdW5yZWFjaGFibGUgZHVyaW5nIGdlbmVyaWMgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjIxOjIwLjMzNjUyNzk2MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk4NTI5MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjNmZDRmMDVlMzlhMDJiZDAzMzU1MGEzOTdkOTM1NDRkY2MxZGQwZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMzoyMToxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmNcXG5pbmRleCAyOWU4MjRiZDkwY2E2Yi4uZTZhYzUxMDE4YTY1MGQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jXFxuQEAgLTM3NywyMCArMzc3LDM2IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfbWFjX2xvb3BiYWNrKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gc3RhdGljIGludCBzdG1tYWNfdGVzdF9waHlfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiB7XFxuIFxcdHN0cnVjdCBzdG1tYWNfcGFja2V0X2F0dHJzIGF0dHIgPSB7IH07XFxuK1xcdHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4tXFx0aWYgKCFwcml2LVxcdTAwM2VkZXYtXFx1MDAzZXBoeWRldilcXG4tXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbitcXHRpZiAocHJpdi1cXHUwMDNlZGV2LVxcdTAwM2VwaHlkZXYpIHtcXG4rXFx0XFx0cmV0ID0gcGh5X2xvb3BiYWNrKHByaXYtXFx1MDAzZWRldi1cXHUwMDNlcGh5ZGV2LCB0cnVlLCAwKTtcXG4rXFx0XFx0aWYgKHJldClcXG4rXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuLVxcdHJldCA9IHBoeV9sb29wYmFjayhwcml2LVxcdTAwM2VkZXYtXFx1MDAzZXBoeWRldiwgdHJ1ZSwgMCk7XFxuLVxcdGlmIChyZXQpXFxuK1xcdFxcdGF0dHIuZHN0ID0gcHJpdi1cXHUwMDNlZGV2LVxcdTAwM2VkZXZfYWRkcjtcXG4rXFx0XFx0cmV0ID0gX19zdG1tYWNfdGVzdF9sb29wYmFjayhwcml2LCBcXHUwMDI2YXR0cik7XFxuK1xcbitcXHRcXHRwaHlfbG9vcGJhY2socHJpdi1cXHUwMDNlZGV2LVxcdTAwM2VwaHlkZXYsIGZhbHNlLCAwKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbiBcXG4tXFx0YXR0ci5kc3QgPSBwcml2LVxcdTAwM2VkZXYtXFx1MDAzZWRldl9hZGRyO1xcbi1cXHRyZXQgPSBfX3N0bW1hY190ZXN0X2xvb3BiYWNrKHByaXYsIFxcdTAwMjZhdHRyKTtcXG4rXFx0LyogVXNlIFBDUyBsb29wYmFjayBmb3IgaW50ZXJmYWNlcyB3aXRob3V0IGFuIGV4dGVybmFsIFBIWS4gKi9cXG4rXFx0cGNzID0gcHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzO1xcbitcXHRpZiAocGNzKSB7XFxuK1xcdFxcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHBjcywgdHJ1ZSk7XFxuK1xcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRwaHlfbG9vcGJhY2socHJpdi1cXHUwMDNlZGV2LVxcdTAwM2VwaHlkZXYsIGZhbHNlLCAwKTtcXG4tXFx0cmV0dXJuIHJldDtcXG4rXFx0XFx0YXR0ci5kc3QgPSBwcml2LVxcdTAwM2VkZXYtXFx1MDAzZWRldl9hZGRyO1xcbitcXHRcXHRyZXQgPSBfX3N0bW1hY190ZXN0X2xvb3BiYWNrKHByaXYsIFxcdTAwMjZhdHRyKTtcXG4rXFxuK1xcdFxcdHBoeWxpbmtfcGNzX2xvb3BiYWNrKHBjcywgZmFsc2UpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfbW1jKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG5AQCAtMTk4Niw2ICsyMDAyLDggQEAgdm9pZCBzdG1tYWNfc2VsZnRlc3RfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdHJldCA9IC1FT1BOT1RTVVBQO1xcbiBcXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VwaHlkZXYpXFxuIFxcdFxcdFxcdFxcdHJldCA9IHBoeV9sb29wYmFjayhkZXYtXFx1MDAzZXBoeWRldiwgdHJ1ZSwgMCk7XFxuK1xcdFxcdFxcdGVsc2UgaWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG4rXFx0XFx0XFx0XFx0cmV0ID0gcGh5bGlua19wY3NfbG9vcGJhY2socHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzLCB0cnVlKTtcXG4gXFx0XFx0XFx0aWYgKCFyZXQpXFxuIFxcdFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRcXHRmYWxsdGhyb3VnaDtcXG5AQCAtMjAxOSw2ICsyMDM3LDggQEAgdm9pZCBzdG1tYWNfc2VsZnRlc3RfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdHJldCA9IC1FT1BOT1RTVVBQO1xcbiBcXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VwaHlkZXYpXFxuIFxcdFxcdFxcdFxcdHJldCA9IHBoeV9sb29wYmFjayhkZXYtXFx1MDAzZXBoeWRldiwgZmFsc2UsIDApO1xcbitcXHRcXHRcXHRlbHNlIGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuK1xcdFxcdFxcdFxcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcywgZmFsc2UpO1xcbiBcXHRcXHRcXHRpZiAoIXJldClcXG4gXFx0XFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdFxcdGZhbGx0aHJvdWdoO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbmluZGV4IDU5ZGZlMzVhZmE1NGZjLi5hN2Y3OGM4MjkxM2FlZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbkBAIC05OTcsNiArOTk3LDI1IEBAIGludCBwaHlsaW5rX3Bjc19wcmVfaW5pdChzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcGNzX3ByZV9pbml0KTtcXG4gXFxuKy8qKlxcbisgKiBwaHlsaW5rX3Bjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDU1xcbisgKiBAcGNzOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmtfcGNzLlxcbisgKiBAZW5hYmxlOiB0cnVlIHRvIGVuYWJsZSBsb29wYmFjaywgZmFsc2UgdG8gZGlzYWJsZVxcbisgKlxcbisgKiBFbmFibGUgb3IgZGlzYWJsZSBsb29wYmFjayBtb2RlIGF0IHRoZSBQQ1MgbGV2ZWwuIFRoaXMgaXMgdXNlZCBieSBNQUNcXG4rICogZHJpdmVycyBmb3Igc2VsZnRlc3QgcHVycG9zZXMgd2hlbiBubyBleHRlcm5hbCBQSFkgaXMgcHJlc2VudC5cXG4rICpcXG4rICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS5cXG4rICovXFxuK2ludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpXFxuK3tcXG4rXFx0aWYgKHBjcy1cXHUwMDNlb3BzLVxcdTAwM2VwY3NfbG9vcGJhY2spXFxuK1xcdFxcdHJldHVybiBwY3MtXFx1MDAzZW9wcy1cXHUwMDNlcGNzX2xvb3BiYWNrKHBjcywgZW5hYmxlKTtcXG4rXFxuK1xcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Bjc19sb29wYmFjayk7XFxuK1xcbiBzdGF0aWMgdm9pZCBwaHlsaW5rX21hY19jb25maWcoc3RydWN0IHBoeWxpbmsgKnBsLFxcbiBcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHlsaW5rLmggYi9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaFxcbmluZGV4IDJiYzBkYjNkNTJhYzhkLi42NmM3MDE2ZDRhY2RjYiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvcGh5bGluay5oXFxuQEAgLTUxOCw2ICs1MTgsNyBAQCBzdHJ1Y3QgcGh5bGlua19wY3Mge1xcbiAgKlxcdFxcdCAgICB0aGUgTUFDLlxcbiAgKiBAcGNzX3ByZV9pbml0OiBjb25maWd1cmUgUENTIGNvbXBvbmVudHMgbmVjZXNzYXJ5IGZvciBNQUMgaGFyZHdhcmVcXG4gICogICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gZS5nLiBSWCBjbG9jayBmb3Igc3RtbWFjLlxcbisgKiBAcGNzX2xvb3BiYWNrOiBlbmFibGUvZGlzYWJsZSBsb29wYmFjayBtb2RlIGF0IHRoZSBQQ1MuXFxuICAqL1xcbiBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHtcXG4gXFx0aW50ICgqcGNzX3ZhbGlkYXRlKShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkLFxcbkBAIC01NDIsNiArNTQzLDcgQEAgc3RydWN0IHBoeWxpbmtfcGNzX29wcyB7XFxuIFxcdHZvaWQgKCpwY3NfZGlzYWJsZV9lZWUpKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcXG4gXFx0dm9pZCAoKnBjc19lbmFibGVfZWVlKShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XFxuIFxcdGludCAoKnBjc19wcmVfaW5pdCkoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xcbitcXHRpbnQgKCpwY3NfbG9vcGJhY2spKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSk7XFxuIH07XFxuIFxcbiAjaWYgMCAvKiBGb3Iga2VybmVsLWRvYyBwdXJwb3NlcyBvbmx5LiAqL1xcbkBAIC03MTcsOCArNzE5LDIyIEBAIHZvaWQgcGNzX2VuYWJsZV9lZWUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xcbiAgKi9cXG4gaW50IHBjc19wcmVfaW5pdChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XFxuIFxcbisvKipcXG4rICogcGNzX2xvb3BiYWNrKCkgLSBFbmFibGUgb3IgZGlzYWJsZSBsb29wYmFjayBhdCB0aGUgUENTXFxuKyAqIEBwY3M6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3MuXFxuKyAqIEBlbmFibGU6IHRydWUgdG8gZW5hYmxlIGxvb3BiYWNrLCBmYWxzZSB0byBkaXNhYmxlXFxuKyAqXFxuKyAqIEVuYWJsZSBvciBkaXNhYmxlIGxvb3BiYWNrIG1vZGUgYXQgdGhlIFBDUyBsZXZlbC4gVGhpcyBpcyB1c2VkIGJ5IE1BQ1xcbisgKiBkcml2ZXJzIGZvciBzZWxmdGVzdCBwdXJwb3NlcyB3aGVuIG5vIGV4dGVybmFsIFBIWSBpcyBwcmVzZW50LlxcbisgKlxcbisgKiBSZXR1cm5zIDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuXFxuKyAqL1xcbitpbnQgcGNzX2xvb3BiYWNrKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSk7XFxuK1xcbiAjZW5kaWZcXG4gXFxuK2ludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xcbitcXG4gc3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqLFxcbiBcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKixcXG4gXFx0XFx0XFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjE6MjAuOTM3MTA1OTcxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjMzOTc0OTMyOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBnZW5lcmljIHBoeWxpbmtfcGNzX2xvb3BiYWNrIGZ1bmN0aW9uIGFuZCBjYWxscyBpdCBmcm9tIHRoZSBzdG1tYWMgZHJpdmVyJ3Mgc2VsZnRlc3QuIEhvd2V2ZXIsIHRoZXJlIGFyZSBubyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHBjc19sb29wYmFjayBjYWxsYmFjayBpbiBhbnkgUENTIGRyaXZlcnMgaW4gdGhlIHRyZWUsIG1lYW5pbmcgcGh5bGlua19wY3NfbG9vcGJhY2sgd2lsbCBhbHdheXMgdHJpdmlhbGx5IHJldHVybiAtRU9QTk9UU1VQUC4gQWRkaXRpb25hbGx5LCB0aGUgc3RtbWFjIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgTUFDcyAoZS5nLiwgU3lub3BzeXMgRFdNQUMpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgc2VsZnRlc3QgdW5yZWFjaGFibGUgZHVyaW5nIGdlbmVyaWMgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDYzZmQ0ZjA1ZTM5YTAyYmQwMzM1NTBhMzk3ZDkzNTQ0ZGNjMWRkMGVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMzoyMToxOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuY1xuaW5kZXggMjllODI0YmQ5MGNhNmIuLmU2YWM1MTAxOGE2NTBkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmNcbkBAIC0zNzcsMjAgKzM3NywzNiBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X21hY19sb29wYmFjayhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gc3RhdGljIGludCBzdG1tYWNfdGVzdF9waHlfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHtcbiBcdHN0cnVjdCBzdG1tYWNfcGFja2V0X2F0dHJzIGF0dHIgPSB7IH07XG4rXHRzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcztcbiBcdGludCByZXQ7XG4gXG4tXHRpZiAoIXByaXYtXHUwMDNlZGV2LVx1MDAzZXBoeWRldilcbi1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0aWYgKHByaXYtXHUwMDNlZGV2LVx1MDAzZXBoeWRldikge1xuK1x0XHRyZXQgPSBwaHlfbG9vcGJhY2socHJpdi1cdTAwM2VkZXYtXHUwMDNlcGh5ZGV2LCB0cnVlLCAwKTtcbitcdFx0aWYgKHJldClcbitcdFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0cmV0ID0gcGh5X2xvb3BiYWNrKHByaXYtXHUwMDNlZGV2LVx1MDAzZXBoeWRldiwgdHJ1ZSwgMCk7XG4tXHRpZiAocmV0KVxuK1x0XHRhdHRyLmRzdCA9IHByaXYtXHUwMDNlZGV2LVx1MDAzZWRldl9hZGRyO1xuK1x0XHRyZXQgPSBfX3N0bW1hY190ZXN0X2xvb3BiYWNrKHByaXYsIFx1MDAyNmF0dHIpO1xuK1xuK1x0XHRwaHlfbG9vcGJhY2socHJpdi1cdTAwM2VkZXYtXHUwMDNlcGh5ZGV2LCBmYWxzZSwgMCk7XG4gXHRcdHJldHVybiByZXQ7XG4rXHR9XG4gXG4tXHRhdHRyLmRzdCA9IHByaXYtXHUwMDNlZGV2LVx1MDAzZWRldl9hZGRyO1xuLVx0cmV0ID0gX19zdG1tYWNfdGVzdF9sb29wYmFjayhwcml2LCBcdTAwMjZhdHRyKTtcbitcdC8qIFVzZSBQQ1MgbG9vcGJhY2sgZm9yIGludGVyZmFjZXMgd2l0aG91dCBhbiBleHRlcm5hbCBQSFkuICovXG4rXHRwY3MgPSBwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzO1xuK1x0aWYgKHBjcykge1xuK1x0XHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIHRydWUpO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdHJldHVybiByZXQ7XG4gXG4tXHRwaHlfbG9vcGJhY2socHJpdi1cdTAwM2VkZXYtXHUwMDNlcGh5ZGV2LCBmYWxzZSwgMCk7XG4tXHRyZXR1cm4gcmV0O1xuK1x0XHRhdHRyLmRzdCA9IHByaXYtXHUwMDNlZGV2LVx1MDAzZWRldl9hZGRyO1xuK1x0XHRyZXQgPSBfX3N0bW1hY190ZXN0X2xvb3BiYWNrKHByaXYsIFx1MDAyNmF0dHIpO1xuK1xuK1x0XHRwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIGZhbHNlKTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHJldHVybiAtRU9QTk9UU1VQUDtcbiB9XG4gXG4gc3RhdGljIGludCBzdG1tYWNfdGVzdF9tbWMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuQEAgLTE5ODYsNiArMjAwMiw4IEBAIHZvaWQgc3RtbWFjX3NlbGZ0ZXN0X3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdHJldCA9IC1FT1BOT1RTVVBQO1xuIFx0XHRcdGlmIChkZXYtXHUwMDNlcGh5ZGV2KVxuIFx0XHRcdFx0cmV0ID0gcGh5X2xvb3BiYWNrKGRldi1cdTAwM2VwaHlkZXYsIHRydWUsIDApO1xuK1x0XHRcdGVsc2UgaWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4rXHRcdFx0XHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzLCB0cnVlKTtcbiBcdFx0XHRpZiAoIXJldClcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdGZhbGx0aHJvdWdoO1xuQEAgLTIwMTksNiArMjAzNyw4IEBAIHZvaWQgc3RtbWFjX3NlbGZ0ZXN0X3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdHJldCA9IC1FT1BOT1RTVVBQO1xuIFx0XHRcdGlmIChkZXYtXHUwMDNlcGh5ZGV2KVxuIFx0XHRcdFx0cmV0ID0gcGh5X2xvb3BiYWNrKGRldi1cdTAwM2VwaHlkZXYsIGZhbHNlLCAwKTtcbitcdFx0XHRlbHNlIGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuK1x0XHRcdFx0cmV0ID0gcGh5bGlua19wY3NfbG9vcGJhY2socHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcywgZmFsc2UpO1xuIFx0XHRcdGlmICghcmV0KVxuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0ZmFsbHRocm91Z2g7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDU5ZGZlMzVhZmE1NGZjLi5hN2Y3OGM4MjkxM2FlZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC05OTcsNiArOTk3LDI1IEBAIGludCBwaHlsaW5rX3Bjc19wcmVfaW5pdChzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Bjc19wcmVfaW5pdCk7XG4gXG4rLyoqXG4rICogcGh5bGlua19wY3NfbG9vcGJhY2soKSAtIEVuYWJsZSBvciBkaXNhYmxlIGxvb3BiYWNrIGF0IHRoZSBQQ1NcbisgKiBAcGNzOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3MuXG4rICogQGVuYWJsZTogdHJ1ZSB0byBlbmFibGUgbG9vcGJhY2ssIGZhbHNlIHRvIGRpc2FibGVcbisgKlxuKyAqIEVuYWJsZSBvciBkaXNhYmxlIGxvb3BiYWNrIG1vZGUgYXQgdGhlIFBDUyBsZXZlbC4gVGhpcyBpcyB1c2VkIGJ5IE1BQ1xuKyAqIGRyaXZlcnMgZm9yIHNlbGZ0ZXN0IHB1cnBvc2VzIHdoZW4gbm8gZXh0ZXJuYWwgUEhZIGlzIHByZXNlbnQuXG4rICpcbisgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLlxuKyAqL1xuK2ludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpXG4re1xuK1x0aWYgKHBjcy1cdTAwM2VvcHMtXHUwMDNlcGNzX2xvb3BiYWNrKVxuK1x0XHRyZXR1cm4gcGNzLVx1MDAzZW9wcy1cdTAwM2VwY3NfbG9vcGJhY2socGNzLCBlbmFibGUpO1xuK1xuK1x0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Bjc19sb29wYmFjayk7XG4rXG4gc3RhdGljIHZvaWQgcGh5bGlua19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rICpwbCxcbiBcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG4ge1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5bGluay5oIGIvaW5jbHVkZS9saW51eC9waHlsaW5rLmhcbmluZGV4IDJiYzBkYjNkNTJhYzhkLi42NmM3MDE2ZDRhY2RjYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGh5bGluay5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaFxuQEAgLTUxOCw2ICs1MTgsNyBAQCBzdHJ1Y3QgcGh5bGlua19wY3Mge1xuICAqXHRcdCAgICB0aGUgTUFDLlxuICAqIEBwY3NfcHJlX2luaXQ6IGNvbmZpZ3VyZSBQQ1MgY29tcG9uZW50cyBuZWNlc3NhcnkgZm9yIE1BQyBoYXJkd2FyZVxuICAqICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIGUuZy4gUlggY2xvY2sgZm9yIHN0bW1hYy5cbisgKiBAcGNzX2xvb3BiYWNrOiBlbmFibGUvZGlzYWJsZSBsb29wYmFjayBtb2RlIGF0IHRoZSBQQ1MuXG4gICovXG4gc3RydWN0IHBoeWxpbmtfcGNzX29wcyB7XG4gXHRpbnQgKCpwY3NfdmFsaWRhdGUpKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQsXG5AQCAtNTQyLDYgKzU0Myw3IEBAIHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMge1xuIFx0dm9pZCAoKnBjc19kaXNhYmxlX2VlZSkoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xuIFx0dm9pZCAoKnBjc19lbmFibGVfZWVlKShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XG4gXHRpbnQgKCpwY3NfcHJlX2luaXQpKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcbitcdGludCAoKnBjc19sb29wYmFjaykoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKTtcbiB9O1xuIFxuICNpZiAwIC8qIEZvciBrZXJuZWwtZG9jIHB1cnBvc2VzIG9ubHkuICovXG5AQCAtNzE3LDggKzcxOSwyMiBAQCB2b2lkIHBjc19lbmFibGVfZWVlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcbiAgKi9cbiBpbnQgcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcbiBcbisvKipcbisgKiBwY3NfbG9vcGJhY2soKSAtIEVuYWJsZSBvciBkaXNhYmxlIGxvb3BiYWNrIGF0IHRoZSBQQ1NcbisgKiBAcGNzOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3MuXG4rICogQGVuYWJsZTogdHJ1ZSB0byBlbmFibGUgbG9vcGJhY2ssIGZhbHNlIHRvIGRpc2FibGVcbisgKlxuKyAqIEVuYWJsZSBvciBkaXNhYmxlIGxvb3BiYWNrIG1vZGUgYXQgdGhlIFBDUyBsZXZlbC4gVGhpcyBpcyB1c2VkIGJ5IE1BQ1xuKyAqIGRyaXZlcnMgZm9yIHNlbGZ0ZXN0IHB1cnBvc2VzIHdoZW4gbm8gZXh0ZXJuYWwgUEhZIGlzIHByZXNlbnQuXG4rICpcbisgKiBSZXR1cm5zIDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuXG4rICovXG4raW50IHBjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xuK1xuICNlbmRpZlxuIFxuK2ludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xuK1xuIHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rX2NyZWF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKixcbiBcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKixcbiBcdFx0XHQgICAgICAgcGh5X2ludGVyZmFjZV90LFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjE6MjAuOTM3MTA4MDExWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjkxNTI0NzYyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBgc3RtbWFjYCBTZWxmLVRlc3RzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgc3RtbWFjX3NlbGZ0ZXN0cy5jYCwgYHBoeWxpbmsuY2AsIGFuZCBgcGh5bGluay5oYC4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIGFkZGluZyBgcGh5bGlua19wY3NfbG9vcGJhY2tgLCBhbmQgdGhlIGludGVudGlvbiBpcyB0byBlbmFibGUgUENTIGxvb3BiYWNrIHNwZWNpZmljYWxseSB3aGVuIGFuIGV4dGVybmFsIFBIWSBpc24ndCBwcmVzZW50LCB3aGljaCBpcyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgc2VsZi10ZXN0cyBmb3IgdGhlIGBzdG1tYWNgIGRyaXZlci4gUmlnaHQgYXdheSwgbXkgYnJhaW4gZ29lcyB0byBcIklzIHRoaXMgZXZlbiB0ZXN0YWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50P1wiLlxuXG5gc3RtbWFjYCBpcyB0eXBpY2FsbHkgdGllZCB0byBzcGVjaWZpYyBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGhhcmR3YXJlLCBzbyBRRU1VIGlzIHVzdWFsbHkgYSBzdGlja2luZyBwb2ludCB1bmxlc3MgdGhlcmUncyBhbiBlbXVsYXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUsIG9yIGlmIGl04oCZcyBhIGdlbmVyaWMgZHJpdmVyLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBRRU1VIGVtdWxhdGVzIGBzdG1tYWNgLiBJIGtub3cgUUVNVSAqZG9lcyogaGF2ZSBuZXR3b3JrIGRldmljZSBlbXVsYXRpb25zLCBidXQgaXMgYHN0bW1hY2Agb25lIG9mIHRoZW0/IE1hbnkgQVJNIFNvQ3MgdXRpbGl6ZSBgc3RtbWFjYCDigJMgQWxsd2lubmVyLCBSb2NrY2hpcCwgQW1sb2dpYywgZXRjLiDigJMgYW5kIFFFTVUgbWlnaHQgZW11bGF0ZSAqc29tZSogb2YgdGhvc2UgU29DcywgYnV0IHN5emthbGxlciB1c3VhbGx5IHRhcmdldHMgeDg2XzY0IG9yIGdlbmVyaWMgQVJNNjQgdmlydCBtYWNoaW5lcywgc28gdGhhdCdzIG5vdCBoZWxwaW5nLlxuXG5IbW0sIHdhaXQuIGBwaHlsaW5rX3Bjc19sb29wYmFja2AgaXMgYSAqcGh5bGluayogZnVuY3Rpb24sIHNvIGl0J3MgdGVjaG5pY2FsbHkgZ2VuZXJpYywgdGhvdWdoIGN1cnJlbnRseSBpdCdzIG9ubHkgYmVpbmcgdXNlZCBieSBgc3RtbWFjYC4gT2theSwgc28gbGV0J3MgY2hlY2sgaWYgdGhlIGBzdG1tYWNgIHNlbGYtdGVzdHMgYXJlIGFjdHVhbGx5IHJlYWNoYWJsZS4gT2gsIHJpZ2h0LCBpdCdzIGBzdG1tYWNfc2VsZnRlc3RzLmNgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBldGh0b29sIHNlbGYtdGVzdCBzdWl0ZS4gVGhhdCdzIGdvb2QuXG5cblNvLCBob3cgY2FuIEkgdHJpZ2dlciBgc3RtbWFjX3Rlc3RfcGh5X2xvb3BiYWNrYD8gSXQgbG9va3MgbGlrZSBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGtlcm5lbCBjb25maWdzIHRvIHNlZSBpZiBgc3RtbWFjYCBpcyBldmVuIGVuYWJsZWQgYW5kIGlmIHRoZSB0ZXN0cyBhcmUgYnVpbHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MDQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzoyMToyNy44NTIzNTczODhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5MjI1NzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfRVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzoyMToyNy45NjE1ODY3OTJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzI4Nzc4MjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqQXNzZXNzaW5nIHRoZSBgU1RNTUFDX0VUSGAgRHJpdmVyJ3MgQXJjaGl0ZWN0dXJlKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIHRoZSBhcmNoaXRlY3R1cmFsIG5hdHVyZSBvZiB0aGlzIGBTVE1NQUNfRVRIYCB0aGluZy4gSXMgaXQgZGVzaWduZWQgYXMgYSBQQ0ktYmFzZWQgZHJpdmVyLCBvciBpcyBpdCBtb3JlIG9mIGEgcGxhdGZvcm0gZHJpdmVyLCB0aWVkIGNsb3NlbHkgdG8gdGhlIGhhcmR3YXJlIGRlc2lnbiBvZiBhIHNwZWNpZmljIFNvQyBvciBzeXN0ZW0/IFVuZGVyc3RhbmRpbmcgdGhhdCBmdW5kYW1lbnRhbCBkaXN0aW5jdGlvbiB3aWxsIGhlYXZpbHkgaW5mbHVlbmNlIGhvdyBJIGFwcHJvYWNoIHVuZGVyc3RhbmRpbmcgaXRzIGluaXRpYWxpemF0aW9uLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgb3ZlcmFsbCBpbnRlcmFjdGlvbiB3aXRoIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIHN0cnVjdHVyZSBpdCB0YXJnZXRzIHRvIGJlZ2luIHRvIGFzc2VzcyBpdHMgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcyBhbmQgaW50ZWdyYXRpb24gY29tcGxleGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjY2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjE6MzAuNjkwMzY3NTU5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjcyNDc4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yPWNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjU6XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NjpcXHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNy1cXHRzZWxlY3QgTUlJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIwPWNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjI6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMy1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9NDQ9Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQ3LVxcdHNlbGVjdCBNSUlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQ4OlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz02MD1jb25maWcgRFdNQUNfQU5BUklPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy02Mi1cXHRkZWZhdWx0IEFSQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NjM6XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTY0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Njk9Y29uZmlnIERXTUFDX0VJQzc3MDBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTcwLVxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IGZvciBFc3dpbiBlaWM3NzAwIGV0aGVybmV0IGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjcxOlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQSBcXHUwMDI2XFx1MDAyNiBBUkNIX0VTV0lOIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNzItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz03OD1jb25maWcgRFdNQUNfSU5HRU5JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy04MC1cXHRkZWZhdWx0IE1BQ0hfSU5HRU5JQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6ODE6XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgKE1BQ0hfSU5HRU5JQyB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy04Mi1cXHRzZWxlY3QgTUZEX1NZU0NPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz05MD1jb25maWcgRFdNQUNfSVBRODA2WFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy05Mi1cXHRkZWZhdWx0IEFSQ0hfUUNPTVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6OTM6XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTk0LVxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTEwNj1jb25maWcgRFdNQUNfTFBDMThYWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMDgtXFx0ZGVmYXVsdCBBUkNIX0xQQzE4WFhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEwOTpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX0xQQzE4WFggfHwgQ09NUElMRV9URVNUKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTEwLVxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTExND1jb25maWcgRFdNQUNfTUVESUFURUtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTExNS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQyN3h4IEdNQUMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjExNjpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX01FRElBVEVLIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTExNy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTEyMj1jb25maWcgRFdNQUNfTUVTT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTI0LVxcdGRlZmF1bHQgQVJDSF9NRVNPTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTI1OlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgQ09NTU9OX0NMSyBcXHUwMDI2XFx1MDAyNiAoQVJDSF9NRVNPTiB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMjYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMzM9Y29uZmlnIERXTUFDX05VVk9UT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTM1LVxcdGRlZmF1bHQgQVJDSF9NQTM1XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMzY6XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9NQTM1IHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEzNy1cXHRzZWxlY3QgTUZEX1NZU0NPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNDU9Y29uZmlnIERXTUFDX1FDT01fRVRIUU9TXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0Ny1cXHRkZWZhdWx0IEFSQ0hfUUNPTVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTQ4OlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfUUNPTSB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNDktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNTU9Y29uZmlnIERXTUFDX1JFTkVTQVNfR0JFVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTU3LVxcdGRlZmF1bHQgQVJDSF9SRU5FU0FTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNTg6XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9SRU5FU0FTIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE1OS1cXHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNjg9Y29uZmlnIERXTUFDX1JPQ0tDSElQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3MC1cXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE3MTpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1JPQ0tDSElQIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3Mi1cXHRzZWxlY3QgTUZEX1NZU0NPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNzk9Y29uZmlnIERXTUFDX1JaTjFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTgxLVxcdGRlZmF1bHQgQVJDSF9SWk4xXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxODI6XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9SWk4xIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE4My1cXHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xOTE9Y29uZmlnIERXTUFDX1MzMlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOTMtXFx0ZGVmYXVsdCBBUkNIX1MzMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTk0OlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfUzMyIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE5NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIwMz1jb25maWcgRFdNQUNfU09DRlBHQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMDUtXFx0ZGVmYXVsdCBBUkNIX0lOVEVMX1NPQ0ZQR0FcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIwNjpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX0lOVEVMX1NPQ0ZQR0EgfHwgQ09NUElMRV9URVNUKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjA3LVxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIxOD1jb25maWcgRFdNQUNfU09QSEdPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMTktXFx0dHJpc3RhdGUgXFxcIlNvcGhnbyBkd21hYyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjIwOlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU09QSEdPIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIyMS1cXHRkZWZhdWx0IG0gaWYgQVJDSF9TT1BIR09cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjI5PWNvbmZpZyBEV01BQ19TUEFDRU1JVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjMwLVxcdHRyaXN0YXRlIFxcXCJTcGFjZW1pdCBkd21hYyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjMxOlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1BBQ0VNSVQgfHwgQ09NUElMRV9URVNUKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjMyLVxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI0MT1jb25maWcgRFdNQUNfU1RBUkZJVkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI0Mi1cXHR0cmlzdGF0ZSBcXFwiU3RhckZpdmUgZHdtYWMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI0MzpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NUQVJGSVZFIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI0NC1cXHRzZWxlY3QgTUZEX1NZU0NPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNTM9Y29uZmlnIERXTUFDX1NUSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNTUtXFx0ZGVmYXVsdCBBUkNIX1NUSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjU2OlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1RJIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI1Ny1cXHRzZWxlY3QgTUZEX1NZU0NPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNjU9Y29uZmlnIERXTUFDX1NUTTMyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI2Ny1cXHRkZWZhdWx0IEFSQ0hfU1RNMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI2ODpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVE0zMiB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNjktXFx0c2VsZWN0IE1GRF9TWVNDT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjc3PWNvbmZpZyBEV01BQ19TVU5YSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNzktXFx0ZGVmYXVsdCBBUkNIX1NVTlhJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyODA6XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yODEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yODg9Y29uZmlnIERXTUFDX1NVTjhJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI5MC1cXHRkZWZhdWx0IEFSQ0hfU1VOWElcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI5MTpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI5Mi1cXHRzZWxlY3QgTURJT19CVVNfTVVYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMwMD1jb25maWcgRFdNQUNfU1VONTVJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwMi1cXHRkZWZhdWx0IEFSQ0hfU1VOWElcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMwMzpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwNC1cXHRzZWxlY3QgTURJT19CVVNfTVVYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMxMj1jb25maWcgRFdNQUNfVEhFQURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMxMy1cXHR0cmlzdGF0ZSBcXFwiVC1IRUFEIGR3bWFjIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMTQ6XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9USEVBRCB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMTUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMjI9Y29uZmlnIERXTUFDX0lNWDhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzI0LVxcdGRlZmF1bHQgQVJDSF9NWENcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMyNTpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX01YQyB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMjYtXFx0c2VsZWN0IE1GRF9TWVNDT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzM0PWNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMzUtXFx0dHJpc3RhdGUgXFxcIkludGVsIGR3bWFjIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMzY6XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBDT01NT05fQ0xLXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNDQ9Y29uZmlnIERXTUFDX0xPT05HU09OMVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNDYtXFx0ZGVmYXVsdCBNQUNIX0xPT05HU09OMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM0NzpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChNQUNIX0xPT05HU09OMzIgfHwgQ09NUElMRV9URVNUKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzQ4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzU1PWNvbmZpZyBEV01BQ19URUdSQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzU2LVxcdHRyaXN0YXRlIFxcXCJOVklESUEgVGVncmEgTUdCRSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzU3OlxcdGRlcGVuZHMgb24gQVJDSF9URUdSQSB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM1OC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM2ND1jb25maWcgRFdNQUNfVklTQ09OVElcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzY2LVxcdGRlZmF1bHQgQVJDSF9WSVNDT05USVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzY3OlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgQ09NTU9OX0NMSyBcXHUwMDI2XFx1MDAyNiAoQVJDSF9WSVNDT05USSB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNjgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzg9Y29uZmlnIERXTUFDX0lOVEVMXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM4MC1cXHRkZWZhdWx0IFg4NlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzgxOlxcdGRlcGVuZHMgb24gWDg2IFxcdTAwMjZcXHUwMDI2IFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzgyOlxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzgzOlxcdGRlcGVuZHMgb24gQUNQSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzg0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzg4PWNvbmZpZyBEV01BQ19MT09OR1NPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zOTAtXFx0ZGVmYXVsdCBNQUNIX0xPT05HU09ONjRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM5MTpcXHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM5MjpcXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5My1cXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzk5LVxcdHRyaXN0YXRlIFxcXCJNb3RvcmNvbW0gUENJIERXTUFDIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDA6XFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwMS1cXHRzZWxlY3QgTU9UT1JDT01NX1BIWVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz00MDc9Y29uZmlnIFNUTU1BQ19QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwOTpcXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDEwOlxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDExLVxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjIxOjMwLjc5NzA5OTQ1NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0NjA1MzM4ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmcgYW4gYHN0bW1hY2AgRHJpdmVyIHZpYSBTeXprYWxsZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgbWluZCBqdW1wcyB0byBob3cgd2UgY291bGQgZnV6eiB0aGlzIHdpdGggc3l6a2FsbGVyLiBJIHNlZSBgU1RNTUFDX1BDSWAgYW5kIGBEV01BQ19JTlRFTGAsIHdoaWNoIGFyZSBQQ0kgZHJpdmVycywgc3BlY2lmaWNhbGx5IGZvciBgc3RtbWFjYC4gTm93LCBgRFdNQUNfSU5URUxgIGRlcGVuZHMgb24gWDg2LCBQQ0ksIENPTU1PTl9DTEssIGFuZCBBQ1BJLiBSaWdodCBhd2F5LCB0aGF0IHRlbGxzIG1lIGl0ICpjb3VsZCogYmUgcHJlc2VudCBvbiBzb21lIHg4NiBwbGF0Zm9ybXMuIFRoZSBiaWcgcXVlc3Rpb24gaXMsIHdpbGwgUUVNVSBlbXVsYXRlIGl0PyBOb3JtYWxseSwgbm8uIFFFTVUgZG9lc24ndCBlbXVsYXRlIGBzdG1tYWNgIFBDSSBkZXZpY2VzIG91dCBvZiB0aGUgYm94LlxuXG5CdXQgd2FpdCwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHRoaXMgdmlydHVhbCBQQ0kgZGV2aWNlIGZ1enppbmcgZnJhbWV3b3JrIHVzaW5nIGBzeXpfcGNpX2RldmljZWAuIENvdWxkIHdlIHVzZSB0aGF0IGhlcmU/IFRoZSBjYXRjaCBpcywgYHN0bW1hY2AgaXNuJ3QgYSBnZW5lcmljIFBDSSBkZXZpY2UuIEl0J3MgdGllZCB0byBzcGVjaWZpYyBJbnRlbCBTb0NzIGxpa2UgRWxraGFydCBMYWtlIG9yIFF1YXJrLiBUaGF0IHNhaWQsIHN5emthbGxlciBjYW4gdGVjaG5pY2FsbHkgZnV6eiAqYW55KiBQQ0kgZGV2aWNlIGlmIGl0J3MgY29tcGlsZWQgaW4uIEl0IGNhbiBpbmplY3QgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIE1NSU8vUElPIGFjY2Vzc2VzIHRocm91Z2ggYHN5el9wY2lfZGV2aWNlYCBvciBgc3l6X2t2bV9zZXR1cF9jcHVgLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBwcm9tcHQgbWVudGlvbnMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMsIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gSXMgYHN0bW1hY2AgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgY2FyZD9cblxuTm8uIGBzdG1tYWNgIGlzIGEgTUFDIElQIGJsb2NrLCBhIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDLCBpbnRlZ3JhdGVkIGludG8gbWFueSBTb0NzLiBJdCdzIGFuIEV0aGVybmV0IGNvbnRyb2xsZXIsIG5vdCBhIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVLiBPa2F5LCB0aGF0J3MgZ29vZC5cblxuQnV0IG5vdyBJIHNlZSB0aGUgcGF0Y2ggaXMgaW4gYHN0bW1hY19zZWxmdGVzdHMuY2AsIHRyaWdnZXJlZCB2aWEgZXRodG9vbCBzZWxmdGVzdC4gVGhhdCdzIGEgZGlmZmVyZW50IGJlYXN0LiBUbyB0cmlnZ2VyICp0aGF0KiwgdGhlIGRyaXZlciBoYXMgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LCBhIGBuZXRfZGV2aWNlYCBoYXMgdG8gcmVnaXN0ZXIsIGFuZCAqdGhlbiogZXRodG9vbCBoYXMgdG8gYmUgY2FsbGVkLiBDYW4gc3l6a2FsbGVyIGV2ZW4gKnByb2JlKiB0aGUgYHN0bW1hY2AgZHJpdmVyPyBJZiBpdCdzIGEgUENJIGRldmljZSwgaXQgY2FuIHRyeSB0byBwcm9iZSBpdCB3aXRoIHRoZSByaWdodCBQQ0kgSUQuIEhvd2V2ZXIsIHByb2JpbmcgYW4gRXRoZXJuZXQgY29udHJvbGxlciBpcyBjb21wbGV4LiBJdCBuZWVkcyBETUEgc2V0dXAsIGludGVycnVwdHMsIHRoZSBjb3JyZWN0IE1NSU8gcmVnaXN0ZXJzIGNvbmZpZ3VyZWQuIEl0J3MgdHJpY2t5IHRvIGdldCBhIGNvbXBsZXggZHJpdmVyIHRvIGZ1bGx5IHByb2JlIGFuZCByZWdpc3RlciBhIGBuZXRfZGV2aWNlYCBqdXN0IGZyb20gZnV6emluZyBNTUlPLCB1bmxlc3MgdGhlcmUgaXMgYSBzcGVjaWZpYyBlbXVsYXRpb24gbGlrZSBlMTAwMGUsIHJ0bDgxMzksIG9yIHZteG5ldDMuXG5cbkRvZXMgc3l6a2FsbGVyIGhhdmUgYSBwc2V1ZG8tZGV2aWNlIGZvciBzdG1tYWM/IE5vcGUuIElzIGBzdG1tYWNgIHJlYWNoYWJsZSB2aWEgdmhjaSBvciBzaW1pbGFyPyBOby4gT2theSwgYmFjayB0byB0aGUgZHJhd2luZyBib2FyZC5cblxuV2FpdCwgYHBoeWxpbmtfcGNzX2xvb3BiYWNrYCBpcyBhIGdlbmVyaWMgcGh5bGluayBmdW5jdGlvbi4gSXQgKmNvdWxkKiBiZSB1c2VkIGJ5IG90aGVyIGRyaXZlcnMsIGJ1dCB0aGUgcGF0Y2ggKm9ubHkqIGFkZHMgaXQgYW5kIHVzZXMgaXQgaW4gYHN0bW1hY2AuIEknbGwgaGF2ZSB0byBkb3VibGUtY2hlY2sgaWYgYHBoeWxpbmtfcGNzX2xvb3BiYWNrYCBpcyB1c2VkIGFueXdoZXJlIGVsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1MjMsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjE6NDAuMjU3NjM1NjY3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxODgwMDIzNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19wY3NfbG9vcGJhY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0zNzc9c3RhdGljIGludCBzdG1tYWNfdGVzdF9waHlfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTM5Ny1cXHRpZiAocGNzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjM5ODpcXHRcXHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIHRydWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0zOTktXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy00MDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjQwNTpcXHRcXHRwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtNDA2LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM9MTk3ND12b2lkIHN0bW1hY19zZWxmdGVzdF9ydW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDA1LVxcdFxcdFxcdGVsc2UgaWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MjAwNjpcXHRcXHRcXHRcXHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MsIHRydWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDA3LVxcdFxcdFxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwNDAtXFx0XFx0XFx0ZWxzZSBpZiAocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoyMDQxOlxcdFxcdFxcdFxcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDQyLVxcdFxcdFxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz05OTg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfcHJlX2luaXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDAwLS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAwMTogKiBwaHlsaW5rX3Bjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDU1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAwMi0gKiBAcGNzOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmtfcGNzLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDA5LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAxMDppbnQgcGh5bGlua19wY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAxMS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMTYtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAxNzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Bjc19sb29wYmFjayk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE4LVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg9NzMyPWludCBwY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczNS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MzY6aW50IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSk7XFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzM3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzoyMTo0My40NDU2NDQ4NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NDQ4ODgwOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgUmVhY2ggb2YgYHBjc19sb29wYmFja2AgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGlzIGBwY3NfbG9vcGJhY2tgIGZ1bmN0aW9uIGlzIG9ubHkgYmVpbmcgdXRpbGl6ZWQgd2l0aGluIGBzdG1tYWNfc2VsZnRlc3RzLmNgLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB3aGV0aGVyIG9yIG5vdCBzeXprYWxsZXIgaXMgY2FwYWJsZSBvZiB0cmlnZ2VyaW5nIGV4ZWN1dGlvbiB3aXRoaW4gdGhhdCBzcGVjaWZpYyBmaWxlLiBUaGF0J3MgYSBjcml0aWNhbCBxdWVzdGlvbi4gSWYgaXQgY2FuJ3QsIHRoZW4gdGhpcyBjb2RlIHBhdGggaXMgZXNzZW50aWFsbHkgdW5yZWFjaGFibGUgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIGFuZCBteSBlZmZvcnQgaXMgd2FzdGVkLlxuXG5UaGVyZWZvcmUsIEkgbmVlZCB0byBleHBhbmQgbXkgc2VhcmNoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgd2lkZXIgdXNhZ2UgYW5kIHBvdGVudGlhbCBpbXBhY3QuIElzIHRoZXJlIGFub3RoZXIgZHJpdmVyIHdoaWNoIGFsc28gaW1wbGVtZW50cyBgcGNzX2xvb3BiYWNrYCB1c2luZyBgcGh5bGlua19wY3Nfb3BzYD8gVGhhdCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBpZiB0aGlzIGlzIGEgZ2VuZXJhbCBwYXR0ZXJuLiBPciwgcGVyaGFwcywgaXQgaXMgbW9yZSBuYXJyb3csIGFzIGl0IHNlZW1zLiBNeSBwcmltYXJ5IGdvYWwgaXMgdG8gYXNzZXNzIHRoZSBwb3RlbnRpYWwgZm9yIGJ1ZyBkaXNjb3ZlcnkgdmlhIGZ1enppbmcuIFRoaXMgZmlyc3Qgc3RlcCB0ZWxscyBtZSB0byBsb29rIGZvciBvdGhlciBpbXBsZW1lbnRhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNzU4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjE6NDcuODkwNTQ1MzI3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzgwOTM2MDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjc19sb29wYmFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oPTE0MTQ9dW5pb24gbXhsODYyeHhfeHBjc19hbl93b3JkIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xNDI4LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxNDI5OiAqIGVudW0gbXhsODYyeHhfeHBjc19sb29wYmFja19tb2RlIC0gWFBDUyBsb29wYmFjayBtb2RlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE0MzAtICogQE1YTDg2MlhYX1hQQ1NfTEJfRElTQUJMRTogZGlzYWJsZSBhbGwgbG9vcGJhY2tcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xNDM1LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxNDM2OmVudW0gbXhsODYyeHhfeHBjc19sb29wYmFja19tb2RlIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQzNy1cXHRNWEw4NjJYWF9YUENTX0xCX0RJU0FCTEUgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jPTM3Nz1zdGF0aWMgaW50IHN0bW1hY190ZXN0X3BoeV9sb29wYmFjayhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMzk3LVxcdGlmIChwY3MpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6Mzk4OlxcdFxcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHBjcywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTM5OS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTQwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6NDA1OlxcdFxcdHBoeWxpbmtfcGNzX2xvb3BiYWNrKHBjcywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy00MDYtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0xOTc0PXZvaWQgc3RtbWFjX3NlbGZ0ZXN0X3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwMDUtXFx0XFx0XFx0ZWxzZSBpZiAocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoyMDA2OlxcdFxcdFxcdFxcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwMDctXFx0XFx0XFx0aWYgKCFyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMjA0MC1cXHRcXHRcXHRlbHNlIGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjIwNDE6XFx0XFx0XFx0XFx0cmV0ID0gcGh5bGlua19wY3NfbG9vcGJhY2socHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwNDItXFx0XFx0XFx0aWYgKCFyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTk5OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Bjc19wcmVfaW5pdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMDAtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDAxOiAqIHBoeWxpbmtfcGNzX2xvb3BiYWNrKCkgLSBFbmFibGUgb3IgZGlzYWJsZSBsb29wYmFjayBhdCB0aGUgUENTXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDAyLSAqIEBwY3M6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3MuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMDktICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDEwOmludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDExLXtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTI6XFx0aWYgKHBjcy1cXHUwMDNlb3BzLVxcdTAwM2VwY3NfbG9vcGJhY2spXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDEzOlxcdFxcdHJldHVybiBwY3MtXFx1MDAzZW9wcy1cXHUwMDNlcGNzX2xvb3BiYWNrKHBjcywgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMTQtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMTYtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAxNzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Bjc19sb29wYmFjayk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE4LVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg9NDk0PXN0cnVjdCBwaHlsaW5rX3BjcyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC01MjAtICogICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gZS5nLiBSWCBjbG9jayBmb3Igc3RtbWFjLlxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjUyMTogKiBAcGNzX2xvb3BiYWNrOiBlbmFibGUvZGlzYWJsZSBsb29wYmFjayBtb2RlIGF0IHRoZSBQQ1MuXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNTIyLSAqL1xcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTUyMz1zdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTU0NS1cXHRpbnQgKCpwY3NfcHJlX2luaXQpKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo1NDY6XFx0aW50ICgqcGNzX2xvb3BiYWNrKShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTU0Ny19O1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg9NzIwPWludCBwY3NfcHJlX2luaXQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzIyLS8qKlxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjcyMzogKiBwY3NfbG9vcGJhY2soKSAtIEVuYWJsZSBvciBkaXNhYmxlIGxvb3BiYWNrIGF0IHRoZSBQQ1NcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MjQtICogQHBjczogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjcy5cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczMS0gKi9cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MzI6aW50IHBjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczMy1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczNS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MzY6aW50IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSk7XFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzM3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzoyMTo1MC42NzE0ODY1NzFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4NDgwNDgwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuKipJbnZlc3RpZ2F0aW5nIGBwY3NfbG9vcGJhY2tgIGluIGBwaHlsaW5rX3Bjc19vcHNgKipcblxuSG1tLCBob2xkIG9uIGEgc2Vjb25kLiBTb21ldGhpbmcgZG9lc24ndCBmZWVsIHJpZ2h0LiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IHRoZSBgcGNzX2xvb3BiYWNrYCBmdW5jdGlvbmFsaXR5IHdvdWxkIGJlIGltcGxlbWVudGVkIHNvbWV3aGVyZSwgYnV0IG5vdyBJJ20gZG91YnRpbmcgdGhhdC4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGBwaHlsaW5rX3Bjc19vcHNgIHN0cnVjdHVyZSDigJMgZG9lcyBhbnkgKmFjdHVhbCogZHJpdmVyLCBpbiBhIHJlYWwtd29ybGQgc2NlbmFyaW8sIGFjdHVhbGx5IHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gZm9yIHRoYXQgbWVtYmVyLCBgcGNzX2xvb3BiYWNrYD8gSXQncyBtYWtpbmcgbWUgd29uZGVyIGlmIEknbSBtaXNzaW5nIHNvbWV0aGluZywgb3IgcGVyaGFwcyBtaXNpbnRlcnByZXRpbmcgaXRzIHVzZSBjYXNlLlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIFRoZSBiZXN0IHdheSB0byBjbGFyaWZ5IHRoaXMgd291bGQgYmUgdG8gZ28gYW5kIHNlYXJjaCBmb3Igd2hlcmUgdGhlIGBwY3NfbG9vcGJhY2tgIG1lbWJlciBpcyBiZWluZyBhc3NpZ25lZCwgd2hldGhlciBpdCBiZSBpbiBhIGRyaXZlciBkaXJlY3RseSwgb3IgcG90ZW50aWFsbHksIHRocm91Z2ggc29tZSBzb3J0IG9mIGhpZ2hlci1sZXZlbCBhYnN0cmFjdGlvbi4gSSBuZWVkIHRvIGtub3cgZGVmaW5pdGl2ZWx5IGlmIGl0J3MgYmVpbmcgdXNlZCBhbmQsIGlmIHNvLCBob3cuIExldCBtZSBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzI1LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjE6NTQuNDU2MjkzOTYzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQ1ODM1NTMyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJcXFxcLnBjc19sb29wYmFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjIxOjU2LjkwMjEzNzM2NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTkxNDkzNzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhbiBleHBlcnQ6XG5cbioqUmVmaW5pbmcgTXkgU2VhcmNoIGZvciBgcGNzX2xvb3BiYWNrYCoqXG5cbkFscmlnaHQsIEknbSBhdCBhIHBvaW50IHdoZXJlIEkgbmVlZCB0byByZXZpc2l0IHRoZSBgcGNzX2xvb3BiYWNrYCB0ZXJtIHdpdGhpbiB0aGUgY29kZSBiYXNlLiBJJ3ZlIGxpa2VseSBlbmNvdW50ZXJlZCBpdCBiZWZvcmUsIHBlcmhhcHMgaW4gYSBzcGVjaWZpYyBjb250ZXh0IG9yIG1vZHVsZSwgYnV0IEkgd2FudCB0byBjYXN0IGEgd2lkZXIgbmV0IHRoaXMgdGltZS4gSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBNeSBpbml0aWFsIHNlYXJjaCBtaWdodCBoYXZlIGJlZW4gdG9vIG5hcnJvdywgb3IgbWF5YmUgSSBkaWRuJ3QgZnVsbHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgdGVybSBpbiByZWxhdGlvbiB0byB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIFRoZXJlZm9yZSwgSSdtIGdvaW5nIHRvIGluaXRpYXRlIGFub3RoZXIsIG1vcmUgY29tcHJlaGVuc2l2ZSBzZWFyY2gsIGRpZ2dpbmcgZGVlcGVyIGludG8gdGhlIGVudGlyZSBjb2RlIHRyZWUgdG8gZW5zdXJlIEkgaGF2ZW4ndCBvdmVybG9va2VkIGFueSByZWxldmFudCBpbnN0YW5jZXMgb3IgYXNzb2NpYXRlZCBpbXBsZW1lbnRhdGlvbnMuIEknbSBhaW1pbmcgZm9yIGEgaG9saXN0aWMgdW5kZXJzdGFuZGluZywgYSB2aWV3IG9mIHRoZSBmb3Jlc3QsIG5vdCBqdXN0IGEgZmV3IHRyZWVzLiBJdCdzIHRpbWUgdG8gcmVmaW5lIG15IG1lbnRhbCBtb2RlbCBieSBicm9hZGVuaW5nIHRoZSBzY29wZSBvZiBteSBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDAzMywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjIyOjAwLjA5MzYzNDMwN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyNjg2NjkxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY3NfbG9vcGJhY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaD0xNDE0PXVuaW9uIG14bDg2Mnh4X3hwY3NfYW5fd29yZCB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQyOC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTQyOTogKiBlbnVtIG14bDg2Mnh4X3hwY3NfbG9vcGJhY2tfbW9kZSAtIFhQQ1MgbG9vcGJhY2sgbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xNDMwLSAqIEBNWEw4NjJYWF9YUENTX0xCX0RJU0FCTEU6IGRpc2FibGUgYWxsIGxvb3BiYWNrXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQzNS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTQzNjplbnVtIG14bDg2Mnh4X3hwY3NfbG9vcGJhY2tfbW9kZSB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE0MzctXFx0TVhMODYyWFhfWFBDU19MQl9ESVNBQkxFID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0zNzc9c3RhdGljIGludCBzdG1tYWNfdGVzdF9waHlfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTM5Ny1cXHRpZiAocGNzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjM5ODpcXHRcXHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIHRydWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0zOTktXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy00MDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjQwNTpcXHRcXHRwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtNDA2LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM9MTk3ND12b2lkIHN0bW1hY19zZWxmdGVzdF9ydW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDA1LVxcdFxcdFxcdGVsc2UgaWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MjAwNjpcXHRcXHRcXHRcXHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MsIHRydWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDA3LVxcdFxcdFxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwNDAtXFx0XFx0XFx0ZWxzZSBpZiAocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoyMDQxOlxcdFxcdFxcdFxcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDQyLVxcdFxcdFxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz05OTg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfcHJlX2luaXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDAwLS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAwMTogKiBwaHlsaW5rX3Bjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDU1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAwMi0gKiBAcGNzOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmtfcGNzLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDA5LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAxMDppbnQgcGh5bGlua19wY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAxMS17XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDEyOlxcdGlmIChwY3MtXFx1MDAzZW9wcy1cXHUwMDNlcGNzX2xvb3BiYWNrKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAxMzpcXHRcXHRyZXR1cm4gcGNzLVxcdTAwM2VvcHMtXFx1MDAzZXBjc19sb29wYmFjayhwY3MsIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE0LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE2LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTc6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfbG9vcGJhY2spO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAxOC1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTQ5ND1zdHJ1Y3QgcGh5bGlua19wY3Mge1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNTIwLSAqICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIGUuZy4gUlggY2xvY2sgZm9yIHN0bW1hYy5cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo1MjE6ICogQHBjc19sb29wYmFjazogZW5hYmxlL2Rpc2FibGUgbG9vcGJhY2sgbW9kZSBhdCB0aGUgUENTLlxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTUyMi0gKi9cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD01MjM9c3RydWN0IHBoeWxpbmtfcGNzX29wcyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC01NDUtXFx0aW50ICgqcGNzX3ByZV9pbml0KShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6NTQ2OlxcdGludCAoKnBjc19sb29wYmFjaykoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKTtcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC01NDctfTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTcyMD1pbnQgcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTcyMi0vKipcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MjM6ICogcGNzX2xvb3BiYWNrKCkgLSBFbmFibGUgb3IgZGlzYWJsZSBsb29wYmFjayBhdCB0aGUgUENTXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzI0LSAqIEBwY3M6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3MuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MzEtICovXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6NzMyOmludCBwY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKTtcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MzMtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MzUtXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6NzM2OmludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjI6MDIuMzIwNTA4NzVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk0MjYyOTc5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBwY3NfbG9vcGJhY2tgIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBhIHBvdGVudGlhbCBpc3N1ZS4gSWYgbm8gZHJpdmVyIGFjdHVhbGx5ICppbXBsZW1lbnRzKiBgcGNzX2xvb3BiYWNrYCwgdGhlbiB0aGUgZnVuY3Rpb24gYHBoeWxpbmtfcGNzX2xvb3BiYWNrYCBpcyBqdXN0IGdvaW5nIHRvIHJldHVybiBgLUVPUE5PVFNVUFBgLiBUaGF0J3MgYSBwcm9ibGVtLCBpc24ndCBpdD8gTGV0J3MgdmVyaWZ5LiBGaXJzdCwgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGBwY3NfbG9vcGJhY2tgIGluIHRoZSBzZXJpZXMgb2YgcGF0Y2hlcy5cblxuTG9va2luZyBhdCB0aGUgZGlmZiwgaXQgb25seSB0b3VjaGVzIGBzdG1tYWNfc2VsZnRlc3RzLmNgLCBgcGh5bGluay5jYCwgYW5kIGBwaHlsaW5rLmhgLiBJcyB0aGUgaW1wbGVtZW50YXRpb24gKnNvbWV3aGVyZSBlbHNlKiBpbiB0aGUgdHJlZT8gTWF5YmUgaXQncyBpbiBhIGRpZmZlcmVudCBmaWxlPyBJIGRpZCBhIGZ1bGwgdHJlZSBzZWFyY2ggZm9yIGBwY3NfbG9vcGJhY2tgIGFuZCBmb3VuZCBub3RoaW5nLCBubyBhc3NpZ25tZW50cyBhdCBhbGwsIG5vIGAucGNzX2xvb3BiYWNrID0gLi4uYC4gSG1tLCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoYXQ7IG1heWJlIGl0J3MgdXNpbmcgZGlmZmVyZW50IHN5bnRheCBsaWtlIGBvcHMtXHUwMDNlcGNzX2xvb3BiYWNrID0gLi4uYCBvciBpbml0aWFsaXplZCBhcyBhIHN0cnVjdCBtZW1iZXIuIFN0aWxsIG5vdGhpbmcuXG5cbkkgcmFuIGFub3RoZXIgc2VhcmNoLCBqdXN0IHRvIGJlIHN1cmUsIGFuZCB0aGUgb25seSBtYXRjaGVzIGFyZSBpbiBgbXhsODYyeHgtYXBpLmhgIChhbiBlbnVtKSwgdGhlIGZpbGVzIGluIHRoZSBkaWZmLCBhbmQgbm90aGluZyBlbHNlLiBUaGVyZSBpcyBsaXRlcmFsbHkgbm8gZHJpdmVyIHRoYXQgKmFjdHVhbGx5KiBpbXBsZW1lbnRzIGBwY3NfbG9vcGJhY2tgIVxuXG5TbywgaWYgdGhlcmUncyBubyBpbXBsZW1lbnRhdGlvbiwgdGhlbiBgcGh5bGlua19wY3NfbG9vcGJhY2tgIGp1c3QgcmV0dXJucyBgLUVPUE5PVFNVUFBgIGFuZCBkb2VzIG5vdGhpbmcuIElzIGl0IGV2ZW4gd29ydGggZnV6emluZyBpZiBpdCdzIGp1c3QgYSB3cmFwcGVyIGZ1bmN0aW9uIHRoYXQgYWx3YXlzIHJldHVybnMgYW4gZXJyb3I/IEl0J3Mgbm90IHJlYWxseSB0ZXN0YWJsZSBvciBmdW5jdGlvbmFsIGluIHRoYXQgY2FzZS4gV2FpdCwgbWF5YmUgdGhlIGltcGxlbWVudGF0aW9uIGlzIG5hbWVkIGRpZmZlcmVudGx5PyBObywgdGhlIHN0cnVjdCBtZW1iZXIgaXMgYHBjc19sb29wYmFja2AuIElmIGl0IHdlcmUgaW5pdGlhbGl6ZWQsIGl0IHdvdWxkIGhhdmUgdG8gYmUgbmFtZWQgYHBjc19sb29wYmFja2AgaW4gdGhlIHN0cnVjdCBpbml0aWFsaXplci4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUsIEknbSBnb2luZyB0byBzY2FuIHRoZSBgZHJpdmVycy9uZXQvcGNzL2AgZGlyZWN0b3J5IGZvciBhbnkgcmVmZXJlbmNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU5NjIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjI6MDkuMjYzMTQwMTA2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY5NjcyOTIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjc19sb29wYmFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wY3MvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzoyMjowOS40MjAxMTY0NThaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM5MjY2MTk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkNoZWNraW5nIGZvciBMb29wYmFjayBGdW5jdGlvbmFsaXR5IGluIFNUTU1BQyBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcyBuZXR3b3JraW5nIGlzc3VlLCBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIGV4aXN0ZW5jZSBhbmQgc3RydWN0dXJlIG9mIGFueSBsb29wYmFjayBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gdGhlIFNUTU1BQyBkcml2ZXIuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IGEgYHBjc19sb29wYmFja2AgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIGEgcHJldHR5IHN0YW5kYXJkIHdheSB0byB0ZXN0IHRoZSBwaHlzaWNhbCBsYXllciBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8ga25vdyBpZiB0aGVyZSdzIGFuIGV4aXN0aW5nIGBwY3NfbG9vcGJhY2tgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2AgZGlyZWN0b3J5LiBJZiBvbmUgZXhpc3RzLCBpdCBwcm92aWRlcyBhIG5pY2Ugc2FuaXR5IGNoZWNrIGZvciBQSFkgY29uZmlndXJhdGlvbiBhbmQgTUFDLVBIWSBjb21tdW5pY2F0aW9uIHRoYXQgSSBjYW4gbGV2ZXJhZ2UuIElmIGl0IGlzIGFscmVhZHkgdGhlcmUsIGl0IGNhbiBzYXZlIG1lIHNvbWUgZWZmb3J0IGluIGRldGVybWluaW5nIGlmIEkgbmVlZCB0byBpbXBsZW1lbnQgbXkgb3duIHRlc3QuIFNvLCBJIHdpbGwgY2hlY2sgdGhhdCBkaXJlY3RvcnkgYW5kIHRoZSBzcGVjaWZpYyBuYW1lIHRvIGRldGVybWluZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY4NDEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzoyMjoxMi44MTI3ODExNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxNDU3NjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjc19sb29wYmFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jPTM3Nz1zdGF0aWMgaW50IHN0bW1hY190ZXN0X3BoeV9sb29wYmFjayhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMzk3LVxcdGlmIChwY3MpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6Mzk4OlxcdFxcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHBjcywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTM5OS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTQwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6NDA1OlxcdFxcdHBoeWxpbmtfcGNzX2xvb3BiYWNrKHBjcywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy00MDYtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0xOTc0PXZvaWQgc3RtbWFjX3NlbGZ0ZXN0X3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwMDUtXFx0XFx0XFx0ZWxzZSBpZiAocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoyMDA2OlxcdFxcdFxcdFxcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwMDctXFx0XFx0XFx0aWYgKCFyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMjA0MC1cXHRcXHRcXHRlbHNlIGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjIwNDE6XFx0XFx0XFx0XFx0cmV0ID0gcGh5bGlua19wY3NfbG9vcGJhY2socHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwNDItXFx0XFx0XFx0aWYgKCFyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjIyOjEzLjA0NDI0NDk0OFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDE5MTAwNDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTG9vcGJhY2sgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBgcGNzX2xvb3BiYWNrYCBmdW5jdGlvbiBpdHNlbGYgaXNuJ3QgYWN0dWFsbHkgKmRlZmluZWQqIGhlcmUsIHdoaWNoIGlzIG9kZC4gVGhpcyBwYXRjaCBqdXN0IHNldHMgdXAgdGhlIGdyb3VuZHdvcmsgYW5kIGNhbGxzIHRoZSBmdW5jdGlvbiB3aXRoaW4gYHN0bW1hY19zZWxmdGVzdHMuY2AuIEhtbSwgbWF5YmUgaXQncyBpbiBhIGNvbXBhbmlvbiBwYXRjaCBpbiB0aGUgc2VyaWVzLCBidXQgdGhlIHByb21wdCBzYXlzIGV2ZXJ5dGhpbmcncyBhbHJlYWR5IGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgaGVhZCBjb21taXQuIFRoYXQgc3VnZ2VzdHMgaXQgKnNob3VsZCogYmUgaW4gdGhlIHRyZWUuXG5cbkxldCBtZSBqdXN0IGRvIGEgcXVpY2sgYGdyZXBgIHRocm91Z2ggdGhlIGVudGlyZSBjb2RlYmFzZSwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIElmIEkgY29tZSB1cCBlbXB0eSwgdGhlbiB0aGF0J3MgY29uZmlybWF0aW9uIOKAkyB0aGVyZSdzIG5vIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBvZiBgcGNzX2xvb3BiYWNrYC4gTWF5YmUgaXQncyBoaWRkZW4gZWxzZXdoZXJlLCBidXQgaXQgc2VlbXMgdW5saWtlbHkuIEp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGFsc28gY2hlY2sgdW5kZXIgYGRyaXZlcnMvbmV0L3BoeS9gIHRvIHNlZSBpZiBpdCdzIGhpZGluZyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc3MDcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjI6MTcuMDYzMzQ3ODM3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTU5Nzg4OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNzX2xvb3BiYWNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz05OTg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfcHJlX2luaXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDAwLS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAwMTogKiBwaHlsaW5rX3Bjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDU1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAwMi0gKiBAcGNzOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmtfcGNzLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDA5LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAxMDppbnQgcGh5bGlua19wY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAxMS17XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDEyOlxcdGlmIChwY3MtXFx1MDAzZW9wcy1cXHUwMDNlcGNzX2xvb3BiYWNrKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAxMzpcXHRcXHRyZXR1cm4gcGNzLVxcdTAwM2VvcHMtXFx1MDAzZXBjc19sb29wYmFjayhwY3MsIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE0LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE2LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTc6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfbG9vcGJhY2spO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAxOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjI6MTcuMzU5MzMwNzgyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5NzUyMzQ4NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBBbmFseXNpczogVW5yZWFjaGFibGUgQ29kZSBQYXRoIGluIHN0bW1hYyBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSwgdGhlIGBwaHlsaW5rX3Bjc19sb29wYmFja2AgZnVuY3Rpb24gaXMgZXNzZW50aWFsbHkgYSBwbGFjZWhvbGRlcjsgaXQncyBkZXNpZ25lZCB0byByZXR1cm4gYC1FT1BOT1RTVVBQYCBhY3Jvc3MgdGhlIGJvYXJkLiBUaGUgY29kZSBpbiBgc3RtbWFjX3NlbGZ0ZXN0cy5jYCBhdHRlbXB0cyB0byB1dGlsaXplIHRoaXMsIGJ1dCBpdCBpbW1lZGlhdGVseSByZXR1cm5zIHRoZSBlcnJvci4gVGhpcyBtZWFucyB0aGUgbmV3IGNvZGUgcGF0aCB3aXRoaW4gYHN0bW1hY190ZXN0X3BoeV9sb29wYmFja2AgaXMgYSBkZWFkIGVuZC4gSSdtIG5vdCBzZWVpbmcgYW55IG5ldywgaW50ZXJlc3RpbmcgZnVuY3Rpb25hbGl0eSBoZXJlLiBJdCdzIGVzc2VudGlhbGx5IGEgbm8tb3AgdGhhdCBwcm9tcHRseSBzaWduYWxzIGFuIHVuc3VwcG9ydGVkIG9wZXJhdGlvbi5cblxuRnVydGhlcm1vcmUsIGFuZCB0aGlzIGlzIGNydWNpYWwsIHRoZSBgc3RtbWFjYCBkcml2ZXIgaXRzZWxmIGlzIHRhcmdldGVkIGF0IHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUuIFJlYWNoaW5nIHRoaXMgY29kZSBkdXJpbmcgZnV6emluZyBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAgaXMgZ29pbmcgdG8gYmUgaW5jcmVkaWJseSBkaWZmaWN1bHQsIGlmIG5vdCBpbXBvc3NpYmxlLCB3aXRob3V0IGEgaGlnaGx5IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiBlbnZpcm9ubWVudC4gRXZlbiBpZiBJICpjb3VsZCogcmVhY2ggaXQsIEknZCBqdXN0IGJlIGhpdHRpbmcgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gZXJyb3IuIFRoZSByaXNrLXJld2FyZCByYXRpbyBpcyBub3QgdGhlcmUuIFRoZSBhZGRlZCBjb21wbGV4aXR5IG9mIHNldHRpbmcgdXAgYSByZWxldmFudCBmdXp6aW5nIGVudmlyb25tZW50IHdpdGggaGFyZHdhcmUgZW11bGF0aW9uIHdvdWxkIG91dHdlaWdoIHRoZSBnYWluLiBTbywgc2luY2UgdGhlIG5ldyBjb2RlIHBhdGgganVzdCByZXR1cm5zIGFuIGVycm9yLCBhbmQgdGhlIHN0bW1hYyBkcml2ZXIgaXMgZGlmZmljdWx0IHRvIHJlYWNoLCBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAgd2l0aG91dCBhIHNlY29uZCB0aG91Z2h0LiBJJ3ZlIGRvdWJsZSBjaGVja2VkIGZvciByZWFjaGFiaWxpdHksIGFuZCBJIGRvbid0IHNlZSBhbnkgdmFsdWUgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0MTAsIk91dHB1dFRva2VucyI6MTQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjIyOjI0LjMzNDU2ODIzNloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBnZW5lcmljIHBoeWxpbmtfcGNzX2xvb3BiYWNrIGZ1bmN0aW9uIGFuZCBjYWxscyBpdCBmcm9tIHRoZSBzdG1tYWMgZHJpdmVyJ3Mgc2VsZnRlc3QuIEhvd2V2ZXIsIHRoZXJlIGFyZSBubyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHBjc19sb29wYmFjayBjYWxsYmFjayBpbiBhbnkgUENTIGRyaXZlcnMgaW4gdGhlIHRyZWUsIG1lYW5pbmcgcGh5bGlua19wY3NfbG9vcGJhY2sgd2lsbCBhbHdheXMgdHJpdmlhbGx5IHJldHVybiAtRU9QTk9UU1VQUC4gQWRkaXRpb25hbGx5LCB0aGUgc3RtbWFjIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgTUFDcyAoZS5nLiwgU3lub3BzeXMgRFdNQUMpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgc2VsZnRlc3QgdW5yZWFjaGFibGUgZHVyaW5nIGdlbmVyaWMgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBnZW5lcmljIHBoeWxpbmtfcGNzX2xvb3BiYWNrIGZ1bmN0aW9uIGFuZCBjYWxscyBpdCBmcm9tIHRoZSBzdG1tYWMgZHJpdmVyJ3Mgc2VsZnRlc3QuIEhvd2V2ZXIsIHRoZXJlIGFyZSBubyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHBjc19sb29wYmFjayBjYWxsYmFjayBpbiBhbnkgUENTIGRyaXZlcnMgaW4gdGhlIHRyZWUsIG1lYW5pbmcgcGh5bGlua19wY3NfbG9vcGJhY2sgd2lsbCBhbHdheXMgdHJpdmlhbGx5IHJldHVybiAtRU9QTk9UU1VQUC4gQWRkaXRpb25hbGx5LCB0aGUgc3RtbWFjIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgTUFDcyAoZS5nLiwgU3lub3BzeXMgRFdNQUMpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgc2VsZnRlc3QgdW5yZWFjaGFibGUgZHVyaW5nIGdlbmVyaWMgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowvxb7g[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 13:09:09 +0000 UTC FinishedAt: 2026-07-25 13:22:25 +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+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBnZW5lcmljIHBoeWxpbmtfcGNzX2xvb3BiYWNrIGZ1bmN0aW9uIGFuZCBjYWxscyBpdCBmcm9tIHRoZSBzdG1tYWMgZHJpdmVyJiMzOTtzIHNlbGZ0ZXN0LiBIb3dldmVyLCB0aGVyZSBhcmUgbm8gaW1wbGVtZW50YXRpb25zIG9mIHRoZSBwY3NfbG9vcGJhY2sgY2FsbGJhY2sgaW4gYW55IFBDUyBkcml2ZXJzIGluIHRoZSB0cmVlLCBtZWFuaW5nIHBoeWxpbmtfcGNzX2xvb3BiYWNrIHdpbGwgYWx3YXlzIHRyaXZpYWxseSByZXR1cm4gLUVPUE5PVFNVUFAuIEFkZGl0aW9uYWxseSwgdGhlIHN0bW1hYyBkcml2ZXIgaXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIE1BQ3MgKGUuZy4sIFN5bm9wc3lzIERXTUFDKSB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIHNlbGZ0ZXN0IHVucmVhY2hhYmxlIGR1cmluZyBnZW5lcmljIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjNmZDRmMDVlMzlhMDJiZDAzMzU1MGEzOTdkOTM1NDRkY2MxZGQwZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDEzOjIxOjE4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuY1xuaW5kZXggMjllODI0YmQ5MGNhNmIuLmU2YWM1MTAxOGE2NTBkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmNcbkBAIC0zNzcsMjAgJiM0MzszNzcsMzYgQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF9tYWNfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfcGh5X2xvb3BiYWNrKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiB7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3BhY2tldF9hdHRycyBhdHRyID0geyB9O1xuJiM0MztcdHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzO1xuIFx0aW50IHJldDtcbiBcbi1cdGlmICghcHJpdi1cdTAwM2VkZXYtXHUwMDNlcGh5ZGV2KVxuLVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlZGV2LVx1MDAzZXBoeWRldikge1xuJiM0MztcdFx0cmV0ID0gcGh5X2xvb3BiYWNrKHByaXYtXHUwMDNlZGV2LVx1MDAzZXBoeWRldiwgdHJ1ZSwgMCk7XG4mIzQzO1x0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0cmV0ID0gcGh5X2xvb3BiYWNrKHByaXYtXHUwMDNlZGV2LVx1MDAzZXBoeWRldiwgdHJ1ZSwgMCk7XG4tXHRpZiAocmV0KVxuJiM0MztcdFx0YXR0ci5kc3QgPSBwcml2LVx1MDAzZWRldi1cdTAwM2VkZXZfYWRkcjtcbiYjNDM7XHRcdHJldCA9IF9fc3RtbWFjX3Rlc3RfbG9vcGJhY2socHJpdiwgXHUwMDI2YXR0cik7XG4mIzQzO1xuJiM0MztcdFx0cGh5X2xvb3BiYWNrKHByaXYtXHUwMDNlZGV2LVx1MDAzZXBoeWRldiwgZmFsc2UsIDApO1xuIFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiBcbi1cdGF0dHIuZHN0ID0gcHJpdi1cdTAwM2VkZXYtXHUwMDNlZGV2X2FkZHI7XG4tXHRyZXQgPSBfX3N0bW1hY190ZXN0X2xvb3BiYWNrKHByaXYsIFx1MDAyNmF0dHIpO1xuJiM0MztcdC8qIFVzZSBQQ1MgbG9vcGJhY2sgZm9yIGludGVyZmFjZXMgd2l0aG91dCBhbiBleHRlcm5hbCBQSFkuICovXG4mIzQzO1x0cGNzID0gcHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcztcbiYjNDM7XHRpZiAocGNzKSB7XG4mIzQzO1x0XHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIHRydWUpO1xuJiM0MztcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiBcbi1cdHBoeV9sb29wYmFjayhwcml2LVx1MDAzZWRldi1cdTAwM2VwaHlkZXYsIGZhbHNlLCAwKTtcbi1cdHJldHVybiByZXQ7XG4mIzQzO1x0XHRhdHRyLmRzdCA9IHByaXYtXHUwMDNlZGV2LVx1MDAzZWRldl9hZGRyO1xuJiM0MztcdFx0cmV0ID0gX19zdG1tYWNfdGVzdF9sb29wYmFjayhwcml2LCBcdTAwMjZhdHRyKTtcbiYjNDM7XG4mIzQzO1x0XHRwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIGZhbHNlKTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gfVxuIFxuIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfbW1jKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbkBAIC0xOTg2LDYgJiM0MzsyMDAyLDggQEAgdm9pZCBzdG1tYWNfc2VsZnRlc3RfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0cmV0ID0gLUVPUE5PVFNVUFA7XG4gXHRcdFx0aWYgKGRldi1cdTAwM2VwaHlkZXYpXG4gXHRcdFx0XHRyZXQgPSBwaHlfbG9vcGJhY2soZGV2LVx1MDAzZXBoeWRldiwgdHJ1ZSwgMCk7XG4mIzQzO1x0XHRcdGVsc2UgaWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4mIzQzO1x0XHRcdFx0cmV0ID0gcGh5bGlua19wY3NfbG9vcGJhY2socHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcywgdHJ1ZSk7XG4gXHRcdFx0aWYgKCFyZXQpXG4gXHRcdFx0XHRicmVhaztcbiBcdFx0XHRmYWxsdGhyb3VnaDtcbkBAIC0yMDE5LDYgJiM0MzsyMDM3LDggQEAgdm9pZCBzdG1tYWNfc2VsZnRlc3RfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0cmV0ID0gLUVPUE5PVFNVUFA7XG4gXHRcdFx0aWYgKGRldi1cdTAwM2VwaHlkZXYpXG4gXHRcdFx0XHRyZXQgPSBwaHlfbG9vcGJhY2soZGV2LVx1MDAzZXBoeWRldiwgZmFsc2UsIDApO1xuJiM0MztcdFx0XHRlbHNlIGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuJiM0MztcdFx0XHRcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MsIGZhbHNlKTtcbiBcdFx0XHRpZiAoIXJldClcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdGZhbGx0aHJvdWdoO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5pbmRleCA1OWRmZTM1YWZhNTRmYy4uYTdmNzhjODI5MTNhZWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtOTk3LDYgJiM0Mzs5OTcsMjUgQEAgaW50IHBoeWxpbmtfcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcGNzX3ByZV9pbml0KTtcbiBcbiYjNDM7LyoqXG4mIzQzOyAqIHBoeWxpbmtfcGNzX2xvb3BiYWNrKCkgLSBFbmFibGUgb3IgZGlzYWJsZSBsb29wYmFjayBhdCB0aGUgUENTXG4mIzQzOyAqIEBwY3M6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjcy5cbiYjNDM7ICogQGVuYWJsZTogdHJ1ZSB0byBlbmFibGUgbG9vcGJhY2ssIGZhbHNlIHRvIGRpc2FibGVcbiYjNDM7ICpcbiYjNDM7ICogRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgbW9kZSBhdCB0aGUgUENTIGxldmVsLiBUaGlzIGlzIHVzZWQgYnkgTUFDXG4mIzQzOyAqIGRyaXZlcnMgZm9yIHNlbGZ0ZXN0IHB1cnBvc2VzIHdoZW4gbm8gZXh0ZXJuYWwgUEhZIGlzIHByZXNlbnQuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuXG4mIzQzOyAqL1xuJiM0MztpbnQgcGh5bGlua19wY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKHBjcy1cdTAwM2VvcHMtXHUwMDNlcGNzX2xvb3BiYWNrKVxuJiM0MztcdFx0cmV0dXJuIHBjcy1cdTAwM2VvcHMtXHUwMDNlcGNzX2xvb3BiYWNrKHBjcywgZW5hYmxlKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcGNzX2xvb3BiYWNrKTtcbiYjNDM7XG4gc3RhdGljIHZvaWQgcGh5bGlua19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rICpwbCxcbiBcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG4ge1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5bGluay5oIGIvaW5jbHVkZS9saW51eC9waHlsaW5rLmhcbmluZGV4IDJiYzBkYjNkNTJhYzhkLi42NmM3MDE2ZDRhY2RjYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGh5bGluay5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaFxuQEAgLTUxOCw2ICYjNDM7NTE4LDcgQEAgc3RydWN0IHBoeWxpbmtfcGNzIHtcbiAgKlx0XHQgICAgdGhlIE1BQy5cbiAgKiBAcGNzX3ByZV9pbml0OiBjb25maWd1cmUgUENTIGNvbXBvbmVudHMgbmVjZXNzYXJ5IGZvciBNQUMgaGFyZHdhcmVcbiAgKiAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiBlLmcuIFJYIGNsb2NrIGZvciBzdG1tYWMuXG4mIzQzOyAqIEBwY3NfbG9vcGJhY2s6IGVuYWJsZS9kaXNhYmxlIGxvb3BiYWNrIG1vZGUgYXQgdGhlIFBDUy5cbiAgKi9cbiBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHtcbiBcdGludCAoKnBjc192YWxpZGF0ZSkoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZCxcbkBAIC01NDIsNiAmIzQzOzU0Myw3IEBAIHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMge1xuIFx0dm9pZCAoKnBjc19kaXNhYmxlX2VlZSkoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xuIFx0dm9pZCAoKnBjc19lbmFibGVfZWVlKShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XG4gXHRpbnQgKCpwY3NfcHJlX2luaXQpKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcbiYjNDM7XHRpbnQgKCpwY3NfbG9vcGJhY2spKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSk7XG4gfTtcbiBcbiAjaWYgMCAvKiBGb3Iga2VybmVsLWRvYyBwdXJwb3NlcyBvbmx5LiAqL1xuQEAgLTcxNyw4ICYjNDM7NzE5LDIyIEBAIHZvaWQgcGNzX2VuYWJsZV9lZWUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xuICAqL1xuIGludCBwY3NfcHJlX2luaXQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xuIFxuJiM0MzsvKipcbiYjNDM7ICogcGNzX2xvb3BiYWNrKCkgLSBFbmFibGUgb3IgZGlzYWJsZSBsb29wYmFjayBhdCB0aGUgUENTXG4mIzQzOyAqIEBwY3M6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjcy5cbiYjNDM7ICogQGVuYWJsZTogdHJ1ZSB0byBlbmFibGUgbG9vcGJhY2ssIGZhbHNlIHRvIGRpc2FibGVcbiYjNDM7ICpcbiYjNDM7ICogRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgbW9kZSBhdCB0aGUgUENTIGxldmVsLiBUaGlzIGlzIHVzZWQgYnkgTUFDXG4mIzQzOyAqIGRyaXZlcnMgZm9yIHNlbGZ0ZXN0IHB1cnBvc2VzIHdoZW4gbm8gZXh0ZXJuYWwgUEhZIGlzIHByZXNlbnQuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS5cbiYjNDM7ICovXG4mIzQzO2ludCBwY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKTtcbiYjNDM7XG4gI2VuZGlmXG4gXG4mIzQzO2ludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xuJiM0MztcbiBzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICosXG4gXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICosXG4gXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGdlbmVyaWMgcGh5bGlua19wY3NfbG9vcGJhY2sgZnVuY3Rpb24gYW5kIGNhbGxzIGl0IGZyb20gdGhlIHN0bW1hYyBkcml2ZXImIzM5O3Mgc2VsZnRlc3QuIEhvd2V2ZXIsIHRoZXJlIGFyZSBubyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHBjc19sb29wYmFjayBjYWxsYmFjayBpbiBhbnkgUENTIGRyaXZlcnMgaW4gdGhlIHRyZWUsIG1lYW5pbmcgcGh5bGlua19wY3NfbG9vcGJhY2sgd2lsbCBhbHdheXMgdHJpdmlhbGx5IHJldHVybiAtRU9QTk9UU1VQUC4gQWRkaXRpb25hbGx5LCB0aGUgc3RtbWFjIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgTUFDcyAoZS5nLiwgU3lub3BzeXMgRFdNQUMpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgc2VsZnRlc3QgdW5yZWFjaGFibGUgZHVyaW5nIGdlbmVyaWMgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2M2ZkNGYwNWUzOWEwMmJkMDMzNTUwYTM5N2Q5MzU0NGRjYzFkZDBlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMjUgMTM6MjE6MTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMKaW5kZXggMjllODI0YmQ5MGNhNmIuLmU2YWM1MTAxOGE2NTBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jCkBAIC0zNzcsMjAgJiM0MzszNzcsMzYgQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF9tYWNfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogc3RhdGljIGludCBzdG1tYWNfdGVzdF9waHlfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogewogCXN0cnVjdCBzdG1tYWNfcGFja2V0X2F0dHJzIGF0dHIgPSB7IH07CiYjNDM7CXN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzOwogCWludCByZXQ7CiAKLQlpZiAoIXByaXYtJmd0O2Rldi0mZ3Q7cGh5ZGV2KQotCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CWlmIChwcml2LSZndDtkZXYtJmd0O3BoeWRldikgewomIzQzOwkJcmV0ID0gcGh5X2xvb3BiYWNrKHByaXYtJmd0O2Rldi0mZ3Q7cGh5ZGV2LCB0cnVlLCAwKTsKJiM0MzsJCWlmIChyZXQpCiYjNDM7CQkJcmV0dXJuIHJldDsKIAotCXJldCA9IHBoeV9sb29wYmFjayhwcml2LSZndDtkZXYtJmd0O3BoeWRldiwgdHJ1ZSwgMCk7Ci0JaWYgKHJldCkKJiM0MzsJCWF0dHIuZHN0ID0gcHJpdi0mZ3Q7ZGV2LSZndDtkZXZfYWRkcjsKJiM0MzsJCXJldCA9IF9fc3RtbWFjX3Rlc3RfbG9vcGJhY2socHJpdiwgJmFtcDthdHRyKTsKJiM0MzsKJiM0MzsJCXBoeV9sb29wYmFjayhwcml2LSZndDtkZXYtJmd0O3BoeWRldiwgZmFsc2UsIDApOwogCQlyZXR1cm4gcmV0OwomIzQzOwl9CiAKLQlhdHRyLmRzdCA9IHByaXYtJmd0O2Rldi0mZ3Q7ZGV2X2FkZHI7Ci0JcmV0ID0gX19zdG1tYWNfdGVzdF9sb29wYmFjayhwcml2LCAmYW1wO2F0dHIpOwomIzQzOwkvKiBVc2UgUENTIGxvb3BiYWNrIGZvciBpbnRlcmZhY2VzIHdpdGhvdXQgYW4gZXh0ZXJuYWwgUEhZLiAqLwomIzQzOwlwY3MgPSBwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3M7CiYjNDM7CWlmIChwY3MpIHsKJiM0MzsJCXJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHBjcywgdHJ1ZSk7CiYjNDM7CQlpZiAocmV0KQomIzQzOwkJCXJldHVybiByZXQ7CiAKLQlwaHlfbG9vcGJhY2socHJpdi0mZ3Q7ZGV2LSZndDtwaHlkZXYsIGZhbHNlLCAwKTsKLQlyZXR1cm4gcmV0OwomIzQzOwkJYXR0ci5kc3QgPSBwcml2LSZndDtkZXYtJmd0O2Rldl9hZGRyOwomIzQzOwkJcmV0ID0gX19zdG1tYWNfdGVzdF9sb29wYmFjayhwcml2LCAmYW1wO2F0dHIpOwomIzQzOwomIzQzOwkJcGh5bGlua19wY3NfbG9vcGJhY2socGNzLCBmYWxzZSk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAtRU9QTk9UU1VQUDsKIH0KIAogc3RhdGljIGludCBzdG1tYWNfdGVzdF9tbWMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQpAQCAtMTk4Niw2ICYjNDM7MjAwMiw4IEBAIHZvaWQgc3RtbWFjX3NlbGZ0ZXN0X3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJcmV0ID0gLUVPUE5PVFNVUFA7CiAJCQlpZiAoZGV2LSZndDtwaHlkZXYpCiAJCQkJcmV0ID0gcGh5X2xvb3BiYWNrKGRldi0mZ3Q7cGh5ZGV2LCB0cnVlLCAwKTsKJiM0MzsJCQllbHNlIGlmIChwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MpCiYjNDM7CQkJCXJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3BjcywgdHJ1ZSk7CiAJCQlpZiAoIXJldCkKIAkJCQlicmVhazsKIAkJCWZhbGx0aHJvdWdoOwpAQCAtMjAxOSw2ICYjNDM7MjAzNyw4IEBAIHZvaWQgc3RtbWFjX3NlbGZ0ZXN0X3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJcmV0ID0gLUVPUE5PVFNVUFA7CiAJCQlpZiAoZGV2LSZndDtwaHlkZXYpCiAJCQkJcmV0ID0gcGh5X2xvb3BiYWNrKGRldi0mZ3Q7cGh5ZGV2LCBmYWxzZSwgMCk7CiYjNDM7CQkJZWxzZSBpZiAocHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzKQomIzQzOwkJCQlyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MsIGZhbHNlKTsKIAkJCWlmICghcmV0KQogCQkJCWJyZWFrOwogCQkJZmFsbHRocm91Z2g7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwppbmRleCA1OWRmZTM1YWZhNTRmYy4uYTdmNzhjODI5MTNhZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwpAQCAtOTk3LDYgJiM0Mzs5OTcsMjUgQEAgaW50IHBoeWxpbmtfcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Bjc19wcmVfaW5pdCk7CiAKJiM0MzsvKioKJiM0MzsgKiBwaHlsaW5rX3Bjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDUwomIzQzOyAqIEBwY3M6IGEgcG9pbnRlciB0byBhICZhbXA7c3RydWN0IHBoeWxpbmtfcGNzLgomIzQzOyAqIEBlbmFibGU6IHRydWUgdG8gZW5hYmxlIGxvb3BiYWNrLCBmYWxzZSB0byBkaXNhYmxlCiYjNDM7ICoKJiM0MzsgKiBFbmFibGUgb3IgZGlzYWJsZSBsb29wYmFjayBtb2RlIGF0IHRoZSBQQ1MgbGV2ZWwuIFRoaXMgaXMgdXNlZCBieSBNQUMKJiM0MzsgKiBkcml2ZXJzIGZvciBzZWxmdGVzdCBwdXJwb3NlcyB3aGVuIG5vIGV4dGVybmFsIFBIWSBpcyBwcmVzZW50LgomIzQzOyAqCiYjNDM7ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KJiM0MzsgKi8KJiM0MztpbnQgcGh5bGlua19wY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKQomIzQzO3sKJiM0MzsJaWYgKHBjcy0mZ3Q7b3BzLSZndDtwY3NfbG9vcGJhY2spCiYjNDM7CQlyZXR1cm4gcGNzLSZndDtvcHMtJmd0O3Bjc19sb29wYmFjayhwY3MsIGVuYWJsZSk7CiYjNDM7CiYjNDM7CXJldHVybiAtRU9QTk9UU1VQUDsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfbG9vcGJhY2spOwomIzQzOwogc3RhdGljIHZvaWQgcGh5bGlua19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rICpwbCwKIAkJCSAgICAgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSkKIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5bGluay5oIGIvaW5jbHVkZS9saW51eC9waHlsaW5rLmgKaW5kZXggMmJjMGRiM2Q1MmFjOGQuLjY2YzcwMTZkNGFjZGNiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaApAQCAtNTE4LDYgJiM0Mzs1MTgsNyBAQCBzdHJ1Y3QgcGh5bGlua19wY3MgewogICoJCSAgICB0aGUgTUFDLgogICogQHBjc19wcmVfaW5pdDogY29uZmlndXJlIFBDUyBjb21wb25lbnRzIG5lY2Vzc2FyeSBmb3IgTUFDIGhhcmR3YXJlCiAgKiAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiBlLmcuIFJYIGNsb2NrIGZvciBzdG1tYWMuCiYjNDM7ICogQHBjc19sb29wYmFjazogZW5hYmxlL2Rpc2FibGUgbG9vcGJhY2sgbW9kZSBhdCB0aGUgUENTLgogICovCiBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHsKIAlpbnQgKCpwY3NfdmFsaWRhdGUpKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQsCkBAIC01NDIsNiAmIzQzOzU0Myw3IEBAIHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgewogCXZvaWQgKCpwY3NfZGlzYWJsZV9lZWUpKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTsKIAl2b2lkICgqcGNzX2VuYWJsZV9lZWUpKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTsKIAlpbnQgKCpwY3NfcHJlX2luaXQpKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTsKJiM0MzsJaW50ICgqcGNzX2xvb3BiYWNrKShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpOwogfTsKIAogI2lmIDAgLyogRm9yIGtlcm5lbC1kb2MgcHVycG9zZXMgb25seS4gKi8KQEAgLTcxNyw4ICYjNDM7NzE5LDIyIEBAIHZvaWQgcGNzX2VuYWJsZV9lZWUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpOwogICovCiBpbnQgcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTsKIAomIzQzOy8qKgomIzQzOyAqIHBjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDUwomIzQzOyAqIEBwY3M6IGEgcG9pbnRlciB0byBhICZhbXA7c3RydWN0IHBoeWxpbmtfcGNzLgomIzQzOyAqIEBlbmFibGU6IHRydWUgdG8gZW5hYmxlIGxvb3BiYWNrLCBmYWxzZSB0byBkaXNhYmxlCiYjNDM7ICoKJiM0MzsgKiBFbmFibGUgb3IgZGlzYWJsZSBsb29wYmFjayBtb2RlIGF0IHRoZSBQQ1MgbGV2ZWwuIFRoaXMgaXMgdXNlZCBieSBNQUMKJiM0MzsgKiBkcml2ZXJzIGZvciBzZWxmdGVzdCBwdXJwb3NlcyB3aGVuIG5vIGV4dGVybmFsIFBIWSBpcyBwcmVzZW50LgomIzQzOyAqCiYjNDM7ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgomIzQzOyAqLwomIzQzO2ludCBwY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKTsKJiM0MzsKICNlbmRpZgogCiYjNDM7aW50IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSk7CiYjNDM7CiBzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICosCiAJCQkgICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKiwKIAkJCSAgICAgICBwaHlfaW50ZXJmYWNlX3QsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MDQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgYHN0bW1hY2AgU2VsZi1UZXN0cyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBzdG1tYWNfc2VsZnRlc3RzLmNgLCBgcGh5bGluay5jYCwgYW5kIGBwaHlsaW5rLmhgLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGFkZGluZyBgcGh5bGlua19wY3NfbG9vcGJhY2tgLCBhbmQgdGhlIGludGVudGlvbiBpcyB0byBlbmFibGUgUENTIGxvb3BiYWNrIHNwZWNpZmljYWxseSB3aGVuIGFuIGV4dGVybmFsIFBIWSBpc24mIzM5O3QgcHJlc2VudCwgd2hpY2ggaXMgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIHNlbGYtdGVzdHMgZm9yIHRoZSBgc3RtbWFjYCBkcml2ZXIuIFJpZ2h0IGF3YXksIG15IGJyYWluIGdvZXMgdG8gJiMzNDtJcyB0aGlzIGV2ZW4gdGVzdGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8mIzM0Oy4KCmBzdG1tYWNgIGlzIHR5cGljYWxseSB0aWVkIHRvIHNwZWNpZmljIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldCBNQUMgaGFyZHdhcmUsIHNvIFFFTVUgaXMgdXN1YWxseSBhIHN0aWNraW5nIHBvaW50IHVubGVzcyB0aGVyZSYjMzk7cyBhbiBlbXVsYXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUsIG9yIGlmIGl04oCZcyBhIGdlbmVyaWMgZHJpdmVyLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBRRU1VIGVtdWxhdGVzIGBzdG1tYWNgLiBJIGtub3cgUUVNVSAqZG9lcyogaGF2ZSBuZXR3b3JrIGRldmljZSBlbXVsYXRpb25zLCBidXQgaXMgYHN0bW1hY2Agb25lIG9mIHRoZW0/IE1hbnkgQVJNIFNvQ3MgdXRpbGl6ZSBgc3RtbWFjYCDigJMgQWxsd2lubmVyLCBSb2NrY2hpcCwgQW1sb2dpYywgZXRjLiDigJMgYW5kIFFFTVUgbWlnaHQgZW11bGF0ZSAqc29tZSogb2YgdGhvc2UgU29DcywgYnV0IHN5emthbGxlciB1c3VhbGx5IHRhcmdldHMgeDg2XzY0IG9yIGdlbmVyaWMgQVJNNjQgdmlydCBtYWNoaW5lcywgc28gdGhhdCYjMzk7cyBub3QgaGVscGluZy4KCkhtbSwgd2FpdC4gYHBoeWxpbmtfcGNzX2xvb3BiYWNrYCBpcyBhICpwaHlsaW5rKiBmdW5jdGlvbiwgc28gaXQmIzM5O3MgdGVjaG5pY2FsbHkgZ2VuZXJpYywgdGhvdWdoIGN1cnJlbnRseSBpdCYjMzk7cyBvbmx5IGJlaW5nIHVzZWQgYnkgYHN0bW1hY2AuIE9rYXksIHNvIGxldCYjMzk7cyBjaGVjayBpZiB0aGUgYHN0bW1hY2Agc2VsZi10ZXN0cyBhcmUgYWN0dWFsbHkgcmVhY2hhYmxlLiBPaCwgcmlnaHQsIGl0JiMzOTtzIGBzdG1tYWNfc2VsZnRlc3RzLmNgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBldGh0b29sIHNlbGYtdGVzdCBzdWl0ZS4gVGhhdCYjMzk7cyBnb29kLgoKU28sIGhvdyBjYW4gSSB0cmlnZ2VyIGBzdG1tYWNfdGVzdF9waHlfbG9vcGJhY2tgPyBJdCBsb29rcyBsaWtlIEkgbmVlZCB0byBkaWcgaW50byB0aGUga2VybmVsIGNvbmZpZ3MgdG8gc2VlIGlmIGBzdG1tYWNgIGlzIGV2ZW4gZW5hYmxlZCBhbmQgaWYgdGhlIHRlc3RzIGFyZSBidWlsdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDX0VUSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjY2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkFzc2Vzc2luZyB0aGUgYFNUTU1BQ19FVEhgIERyaXZlciYjMzk7cyBBcmNoaXRlY3R1cmUqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRldGVybWluZSB0aGUgYXJjaGl0ZWN0dXJhbCBuYXR1cmUgb2YgdGhpcyBgU1RNTUFDX0VUSGAgdGhpbmcuIElzIGl0IGRlc2lnbmVkIGFzIGEgUENJLWJhc2VkIGRyaXZlciwgb3IgaXMgaXQgbW9yZSBvZiBhIHBsYXRmb3JtIGRyaXZlciwgdGllZCBjbG9zZWx5IHRvIHRoZSBoYXJkd2FyZSBkZXNpZ24gb2YgYSBzcGVjaWZpYyBTb0Mgb3Igc3lzdGVtPyBVbmRlcnN0YW5kaW5nIHRoYXQgZnVuZGFtZW50YWwgZGlzdGluY3Rpb24gd2lsbCBoZWF2aWx5IGluZmx1ZW5jZSBob3cgSSBhcHByb2FjaCB1bmRlcnN0YW5kaW5nIGl0cyBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIG92ZXJhbGwgaW50ZXJhY3Rpb24gd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBzdHJ1Y3R1cmUgaXQgdGFyZ2V0cyB0byBiZWdpbiB0byBhc3Nlc3MgaXRzIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgYW5kIGludGVncmF0aW9uIGNvbXBsZXhpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IEhBU19ETUFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NTpcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NjpcdGRlcGVuZHMgb24gRVRIVE9PTF9ORVRMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTctXHRzZWxlY3QgTUlJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yMD1jb25maWcgU1RNTUFDX1NFTEZURVNUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0c1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMjpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMy1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9NDQ9Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00Ny1cdHNlbGVjdCBNSUlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDg6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQ5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9NjA9Y29uZmlnIERXTUFDX0FOQVJJT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTYyLVx0ZGVmYXVsdCBBUkNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NjM6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNjQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz02OT1jb25maWcgRFdNQUNfRUlDNzcwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy03MC1cdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgZm9yIEVzd2luIGVpYzc3MDAgZXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjcxOlx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0RNQSBcdTAwMjZcdTAwMjYgQVJDSF9FU1dJTiB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNzItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz03OD1jb25maWcgRFdNQUNfSU5HRU5JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctODAtXHRkZWZhdWx0IE1BQ0hfSU5HRU5JQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo4MTpcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IEhBU19JT01FTSBcdTAwMjZcdTAwMjYgKE1BQ0hfSU5HRU5JQyB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTgyLVx0c2VsZWN0IE1GRF9TWVNDT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTkwPWNvbmZpZyBEV01BQ19JUFE4MDZYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy05Mi1cdGRlZmF1bHQgQVJDSF9RQ09NXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjkzOlx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUUNPTSB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTk0LVx0c2VsZWN0IE1GRF9TWVNDT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTEwNj1jb25maWcgRFdNQUNfTFBDMThYWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTA4LVx0ZGVmYXVsdCBBUkNIX0xQQzE4WFhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTA5Olx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTFBDMThYWCB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTExMC1cdHNlbGVjdCBNRkRfU1lTQ09OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMTQ9Y29uZmlnIERXTUFDX01FRElBVEVLXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTExNS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UMjd4eCBHTUFDIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTE2Olx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTUVESUFURUsgfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMTctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMjI9Y29uZmlnIERXTUFDX01FU09OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMjQtXHRkZWZhdWx0IEFSQ0hfTUVTT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTI1Olx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgQ09NTU9OX0NMSyBcdTAwMjZcdTAwMjYgKEFSQ0hfTUVTT04gfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMjYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMzM9Y29uZmlnIERXTUFDX05VVk9UT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEzNS1cdGRlZmF1bHQgQVJDSF9NQTM1XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEzNjpcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX01BMzUgfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMzctXHRzZWxlY3QgTUZEX1NZU0NPTlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTQ1PWNvbmZpZyBEV01BQ19RQ09NX0VUSFFPU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTQ3LVx0ZGVmYXVsdCBBUkNIX1FDT01cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTQ4Olx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUUNPTSB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0OS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE1NT1jb25maWcgRFdNQUNfUkVORVNBU19HQkVUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTU3LVx0ZGVmYXVsdCBBUkNIX1JFTkVTQVNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTU4Olx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUkVORVNBUyB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE1OS1cdHNlbGVjdCBQQ1NfUlpOMV9NSUlDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNjg9Y29uZmlnIERXTUFDX1JPQ0tDSElQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNzAtXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTcxOlx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNzItXHRzZWxlY3QgTUZEX1NZU0NPTlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTc5PWNvbmZpZyBEV01BQ19SWk4xXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xODEtXHRkZWZhdWx0IEFSQ0hfUlpOMVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxODI6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9SWk4xIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTgzLVx0c2VsZWN0IFBDU19SWk4xX01JSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE5MT1jb25maWcgRFdNQUNfUzMyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOTMtXHRkZWZhdWx0IEFSQ0hfUzMyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE5NDpcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1MzMiB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE5NS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIwMz1jb25maWcgRFdNQUNfU09DRlBHQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjA1LVx0ZGVmYXVsdCBBUkNIX0lOVEVMX1NPQ0ZQR0FcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjA2Olx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfSU5URUxfU09DRlBHQSB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIwNy1cdHNlbGVjdCBNRkRfU1lTQ09OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yMTg9Y29uZmlnIERXTUFDX1NPUEhHT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMTktXHR0cmlzdGF0ZSBcJiMzNDtTb3BoZ28gZHdtYWMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMjA6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TT1BIR08gfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMjEtXHRkZWZhdWx0IG0gaWYgQVJDSF9TT1BIR09cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIyOT1jb25maWcgRFdNQUNfU1BBQ0VNSVRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjMwLVx0dHJpc3RhdGUgXCYjMzQ7U3BhY2VtaXQgZHdtYWMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMzE6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TUEFDRU1JVCB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIzMi1cdHNlbGVjdCBNRkRfU1lTQ09OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNDE9Y29uZmlnIERXTUFDX1NUQVJGSVZFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI0Mi1cdHRyaXN0YXRlIFwmIzM0O1N0YXJGaXZlIGR3bWFjIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjQzOlx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1RBUkZJVkUgfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNDQtXHRzZWxlY3QgTUZEX1NZU0NPTlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjUzPWNvbmZpZyBEV01BQ19TVElcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI1NS1cdGRlZmF1bHQgQVJDSF9TVElcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjU2Olx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1RJIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjU3LVx0c2VsZWN0IE1GRF9TWVNDT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI2NT1jb25maWcgRFdNQUNfU1RNMzJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI2Ny1cdGRlZmF1bHQgQVJDSF9TVE0zMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNjg6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IChBUkNIX1NUTTMyIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjY5LVx0c2VsZWN0IE1GRF9TWVNDT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI3Nz1jb25maWcgRFdNQUNfU1VOWElcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI3OS1cdGRlZmF1bHQgQVJDSF9TVU5YSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyODA6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4MS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI4OD1jb25maWcgRFdNQUNfU1VOOElcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI5MC1cdGRlZmF1bHQgQVJDSF9TVU5YSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTE6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI5Mi1cdHNlbGVjdCBNRElPX0JVU19NVVhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMwMD1jb25maWcgRFdNQUNfU1VONTVJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMDItXHRkZWZhdWx0IEFSQ0hfU1VOWElcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzAzOlx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1VOWEkgfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMDQtXHRzZWxlY3QgTURJT19CVVNfTVVYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMTI9Y29uZmlnIERXTUFDX1RIRUFEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMxMy1cdHRyaXN0YXRlIFwmIzM0O1QtSEVBRCBkd21hYyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMxNDpcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1RIRUFEIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzE1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzIyPWNvbmZpZyBEV01BQ19JTVg4XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMjQtXHRkZWZhdWx0IEFSQ0hfTVhDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMyNTpcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX01YQyB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMyNi1cdHNlbGVjdCBNRkRfU1lTQ09OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMzQ9Y29uZmlnIERXTUFDX0lOVEVMX1BMQVRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzM1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgZHdtYWMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMzY6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBDT01NT05fQ0xLXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMzNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM0ND1jb25maWcgRFdNQUNfTE9PTkdTT04xXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNDYtXHRkZWZhdWx0IE1BQ0hfTE9PTkdTT04zMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNDc6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoTUFDSF9MT09OR1NPTjMyIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzQ4LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzU1PWNvbmZpZyBEV01BQ19URUdSQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNTYtXHR0cmlzdGF0ZSBcJiMzNDtOVklESUEgVGVncmEgTUdCRSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM1NzpcdGRlcGVuZHMgb24gQVJDSF9URUdSQSB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzU4LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzY0PWNvbmZpZyBEV01BQ19WSVNDT05USVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzY2LVx0ZGVmYXVsdCBBUkNIX1ZJU0NPTlRJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM2NzpcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IENPTU1PTl9DTEsgXHUwMDI2XHUwMDI2IChBUkNIX1ZJU0NPTlRJIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzY4LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzc4PWNvbmZpZyBEV01BQ19JTlRFTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzgwLVx0ZGVmYXVsdCBYODZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzgxOlx0ZGVwZW5kcyBvbiBYODYgXHUwMDI2XHUwMDI2IFBDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozODI6XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzgzOlx0ZGVwZW5kcyBvbiBBQ1BJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM4NC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM4OD1jb25maWcgRFdNQUNfTE9PTkdTT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5MC1cdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM5MTpcdGRlcGVuZHMgb24gKE1BQ0hfTE9PTkdTT042NCB8fCBDT01QSUxFX1RFU1QpIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzkyOlx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5My1cdHNlbGVjdCBTVE1NQUNfTElCUENJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zOTktXHR0cmlzdGF0ZSBcJiMzNDtNb3RvcmNvbW0gUENJIERXTUFDIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDAwOlx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDAxLVx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTQwNz1jb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwOTpcdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQxMDpcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MTEtXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1MjMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA1NzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmcgYW4gYHN0bW1hY2AgRHJpdmVyIHZpYSBTeXprYWxsZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBtaW5kIGp1bXBzIHRvIGhvdyB3ZSBjb3VsZCBmdXp6IHRoaXMgd2l0aCBzeXprYWxsZXIuIEkgc2VlIGBTVE1NQUNfUENJYCBhbmQgYERXTUFDX0lOVEVMYCwgd2hpY2ggYXJlIFBDSSBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgZm9yIGBzdG1tYWNgLiBOb3csIGBEV01BQ19JTlRFTGAgZGVwZW5kcyBvbiBYODYsIFBDSSwgQ09NTU9OX0NMSywgYW5kIEFDUEkuIFJpZ2h0IGF3YXksIHRoYXQgdGVsbHMgbWUgaXQgKmNvdWxkKiBiZSBwcmVzZW50IG9uIHNvbWUgeDg2IHBsYXRmb3Jtcy4gVGhlIGJpZyBxdWVzdGlvbiBpcywgd2lsbCBRRU1VIGVtdWxhdGUgaXQ/IE5vcm1hbGx5LCBuby4gUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIGBzdG1tYWNgIFBDSSBkZXZpY2VzIG91dCBvZiB0aGUgYm94LgoKQnV0IHdhaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSB0aGlzIHZpcnR1YWwgUENJIGRldmljZSBmdXp6aW5nIGZyYW1ld29yayB1c2luZyBgc3l6X3BjaV9kZXZpY2VgLiBDb3VsZCB3ZSB1c2UgdGhhdCBoZXJlPyBUaGUgY2F0Y2ggaXMsIGBzdG1tYWNgIGlzbiYjMzk7dCBhIGdlbmVyaWMgUENJIGRldmljZS4gSXQmIzM5O3MgdGllZCB0byBzcGVjaWZpYyBJbnRlbCBTb0NzIGxpa2UgRWxraGFydCBMYWtlIG9yIFF1YXJrLiBUaGF0IHNhaWQsIHN5emthbGxlciBjYW4gdGVjaG5pY2FsbHkgZnV6eiAqYW55KiBQQ0kgZGV2aWNlIGlmIGl0JiMzOTtzIGNvbXBpbGVkIGluLiBJdCBjYW4gaW5qZWN0IFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIGFuZCBNTUlPL1BJTyBhY2Nlc3NlcyB0aHJvdWdoIGBzeXpfcGNpX2RldmljZWAgb3IgYHN5el9rdm1fc2V0dXBfY3B1YC4gVGhlIHByb2JsZW0gaXMgdGhhdCB0aGUgcHJvbXB0IG1lbnRpb25zIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLCB3aGljaCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIElzIGBzdG1tYWNgIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGNhcmQ/CgpOby4gYHN0bW1hY2AgaXMgYSBNQUMgSVAgYmxvY2ssIGEgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMsIGludGVncmF0ZWQgaW50byBtYW55IFNvQ3MuIEl0JiMzOTtzIGFuIEV0aGVybmV0IGNvbnRyb2xsZXIsIG5vdCBhIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVLiBPa2F5LCB0aGF0JiMzOTtzIGdvb2QuCgpCdXQgbm93IEkgc2VlIHRoZSBwYXRjaCBpcyBpbiBgc3RtbWFjX3NlbGZ0ZXN0cy5jYCwgdHJpZ2dlcmVkIHZpYSBldGh0b29sIHNlbGZ0ZXN0LiBUaGF0JiMzOTtzIGEgZGlmZmVyZW50IGJlYXN0LiBUbyB0cmlnZ2VyICp0aGF0KiwgdGhlIGRyaXZlciBoYXMgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LCBhIGBuZXRfZGV2aWNlYCBoYXMgdG8gcmVnaXN0ZXIsIGFuZCAqdGhlbiogZXRodG9vbCBoYXMgdG8gYmUgY2FsbGVkLiBDYW4gc3l6a2FsbGVyIGV2ZW4gKnByb2JlKiB0aGUgYHN0bW1hY2AgZHJpdmVyPyBJZiBpdCYjMzk7cyBhIFBDSSBkZXZpY2UsIGl0IGNhbiB0cnkgdG8gcHJvYmUgaXQgd2l0aCB0aGUgcmlnaHQgUENJIElELiBIb3dldmVyLCBwcm9iaW5nIGFuIEV0aGVybmV0IGNvbnRyb2xsZXIgaXMgY29tcGxleC4gSXQgbmVlZHMgRE1BIHNldHVwLCBpbnRlcnJ1cHRzLCB0aGUgY29ycmVjdCBNTUlPIHJlZ2lzdGVycyBjb25maWd1cmVkLiBJdCYjMzk7cyB0cmlja3kgdG8gZ2V0IGEgY29tcGxleCBkcml2ZXIgdG8gZnVsbHkgcHJvYmUgYW5kIHJlZ2lzdGVyIGEgYG5ldF9kZXZpY2VgIGp1c3QgZnJvbSBmdXp6aW5nIE1NSU8sIHVubGVzcyB0aGVyZSBpcyBhIHNwZWNpZmljIGVtdWxhdGlvbiBsaWtlIGUxMDAwZSwgcnRsODEzOSwgb3Igdm14bmV0My4KCkRvZXMgc3l6a2FsbGVyIGhhdmUgYSBwc2V1ZG8tZGV2aWNlIGZvciBzdG1tYWM/IE5vcGUuIElzIGBzdG1tYWNgIHJlYWNoYWJsZSB2aWEgdmhjaSBvciBzaW1pbGFyPyBOby4gT2theSwgYmFjayB0byB0aGUgZHJhd2luZyBib2FyZC4KCldhaXQsIGBwaHlsaW5rX3Bjc19sb29wYmFja2AgaXMgYSBnZW5lcmljIHBoeWxpbmsgZnVuY3Rpb24uIEl0ICpjb3VsZCogYmUgdXNlZCBieSBvdGhlciBkcml2ZXJzLCBidXQgdGhlIHBhdGNoICpvbmx5KiBhZGRzIGl0IGFuZCB1c2VzIGl0IGluIGBzdG1tYWNgLiBJJiMzOTtsbCBoYXZlIHRvIGRvdWJsZS1jaGVjayBpZiBgcGh5bGlua19wY3NfbG9vcGJhY2tgIGlzIHVzZWQgYW55d2hlcmUgZWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rX3Bjc19sb29wYmFjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM9Mzc3PXN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfcGh5X2xvb3BiYWNrKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMzk3LVx0aWYgKHBjcykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjM5ODpcdFx0cmV0ID0gcGh5bGlua19wY3NfbG9vcGJhY2socGNzLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0zOTktXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTQwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzo0MDU6XHRcdHBoeWxpbmtfcGNzX2xvb3BiYWNrKHBjcywgZmFsc2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTQwNi1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM9MTk3ND12b2lkIHN0bW1hY19zZWxmdGVzdF9ydW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMjAwNS1cdFx0XHRlbHNlIGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjIwMDY6XHRcdFx0XHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDA3LVx0XHRcdGlmICghcmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDQwLVx0XHRcdGVsc2UgaWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MjA0MTpcdFx0XHRcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDQyLVx0XHRcdGlmICghcmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9OTk4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcGNzX3ByZV9pbml0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMDAtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMDE6ICogcGh5bGlua19wY3NfbG9vcGJhY2soKSAtIEVuYWJsZSBvciBkaXNhYmxlIGxvb3BiYWNrIGF0IHRoZSBQQ1NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAwMi0gKiBAcGNzOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3MuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDA5LSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDEwOmludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMTEte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAxNi19XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTc6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfbG9vcGJhY2spO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE4LVxuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTczMj1pbnQgcGNzX2xvb3BiYWNrKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSk7XG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzM1LVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6NzM2OmludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzM3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNzU4CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgUmVhY2ggb2YgYHBjc19sb29wYmFja2AgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSBzZWUgdGhpcyBgcGNzX2xvb3BiYWNrYCBmdW5jdGlvbiBpcyBvbmx5IGJlaW5nIHV0aWxpemVkIHdpdGhpbiBgc3RtbWFjX3NlbGZ0ZXN0cy5jYC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2hldGhlciBvciBub3Qgc3l6a2FsbGVyIGlzIGNhcGFibGUgb2YgdHJpZ2dlcmluZyBleGVjdXRpb24gd2l0aGluIHRoYXQgc3BlY2lmaWMgZmlsZS4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIHF1ZXN0aW9uLiBJZiBpdCBjYW4mIzM5O3QsIHRoZW4gdGhpcyBjb2RlIHBhdGggaXMgZXNzZW50aWFsbHkgdW5yZWFjaGFibGUgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIGFuZCBteSBlZmZvcnQgaXMgd2FzdGVkLgoKVGhlcmVmb3JlLCBJIG5lZWQgdG8gZXhwYW5kIG15IHNlYXJjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHdpZGVyIHVzYWdlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LiBJcyB0aGVyZSBhbm90aGVyIGRyaXZlciB3aGljaCBhbHNvIGltcGxlbWVudHMgYHBjc19sb29wYmFja2AgdXNpbmcgYHBoeWxpbmtfcGNzX29wc2A/IFRoYXQgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyBhIGdlbmVyYWwgcGF0dGVybi4gT3IsIHBlcmhhcHMsIGl0IGlzIG1vcmUgbmFycm93LCBhcyBpdCBzZWVtcy4gTXkgcHJpbWFyeSBnb2FsIGlzIHRvIGFzc2VzcyB0aGUgcG90ZW50aWFsIGZvciBidWcgZGlzY292ZXJ5IHZpYSBmdXp6aW5nLiBUaGlzIGZpcnN0IHN0ZXAgdGVsbHMgbWUgdG8gbG9vayBmb3Igb3RoZXIgaW1wbGVtZW50YXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY3NfbG9vcGJhY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oPTE0MTQ9dW5pb24gbXhsODYyeHhfeHBjc19hbl93b3JkIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQyOC0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxNDI5OiAqIGVudW0gbXhsODYyeHhfeHBjc19sb29wYmFja19tb2RlIC0gWFBDUyBsb29wYmFjayBtb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQzMC0gKiBATVhMODYyWFhfWFBDU19MQl9ESVNBQkxFOiBkaXNhYmxlIGFsbCBsb29wYmFja1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xNDM1LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjE0MzY6ZW51bSBteGw4NjJ4eF94cGNzX2xvb3BiYWNrX21vZGUge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE0MzctXHRNWEw4NjJYWF9YUENTX0xCX0RJU0FCTEUgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0zNzc9c3RhdGljIGludCBzdG1tYWNfdGVzdF9waHlfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0zOTctXHRpZiAocGNzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6Mzk4Olx0XHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIHRydWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTM5OS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtNDA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjQwNTpcdFx0cGh5bGlua19wY3NfbG9vcGJhY2socGNzLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtNDA2LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0xOTc0PXZvaWQgc3RtbWFjX3NlbGZ0ZXN0X3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDA1LVx0XHRcdGVsc2UgaWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MjAwNjpcdFx0XHRcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MsIHRydWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwMDctXHRcdFx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwNDAtXHRcdFx0ZWxzZSBpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoyMDQxOlx0XHRcdFx0cmV0ID0gcGh5bGlua19wY3NfbG9vcGJhY2socHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcywgZmFsc2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwNDItXHRcdFx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz05OTg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfcHJlX2luaXQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAwMC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAwMTogKiBwaHlsaW5rX3Bjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDU1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDAyLSAqIEBwY3M6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjcy5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMDktICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTA6aW50IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAxMS17XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTI6XHRpZiAocGNzLVx1MDAzZW9wcy1cdTAwM2VwY3NfbG9vcGJhY2spXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTM6XHRcdHJldHVybiBwY3MtXHUwMDNlb3BzLVx1MDAzZXBjc19sb29wYmFjayhwY3MsIGVuYWJsZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMTQtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE2LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAxNzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Bjc19sb29wYmFjayk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMTgtXG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg9NDk0PXN0cnVjdCBwaHlsaW5rX3BjcyB7XG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNTIwLSAqICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIGUuZy4gUlggY2xvY2sgZm9yIHN0bW1hYy5cbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjUyMTogKiBAcGNzX2xvb3BiYWNrOiBlbmFibGUvZGlzYWJsZSBsb29wYmFjayBtb2RlIGF0IHRoZSBQQ1MuXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC01MjItICovXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD01MjM9c3RydWN0IHBoeWxpbmtfcGNzX29wcyB7XG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNTQ1LVx0aW50ICgqcGNzX3ByZV9pbml0KShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo1NDY6XHRpbnQgKCpwY3NfbG9vcGJhY2spKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSk7XG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC01NDctfTtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD03MjA9aW50IHBjc19wcmVfaW5pdChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzIyLS8qKlxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6NzIzOiAqIHBjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDU1xuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzI0LSAqIEBwY3M6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjcy5cbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MzEtICovXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MzI6aW50IHBjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzMzLVxuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczNS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjczNjppbnQgcGh5bGlua19wY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKTtcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM3MjUKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqSW52ZXN0aWdhdGluZyBgcGNzX2xvb3BiYWNrYCBpbiBgcGh5bGlua19wY3Nfb3BzYCoqCgpIbW0sIGhvbGQgb24gYSBzZWNvbmQuIFNvbWV0aGluZyBkb2VzbiYjMzk7dCBmZWVsIHJpZ2h0LiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IHRoZSBgcGNzX2xvb3BiYWNrYCBmdW5jdGlvbmFsaXR5IHdvdWxkIGJlIGltcGxlbWVudGVkIHNvbWV3aGVyZSwgYnV0IG5vdyBJJiMzOTttIGRvdWJ0aW5nIHRoYXQuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYHBoeWxpbmtfcGNzX29wc2Agc3RydWN0dXJlIOKAkyBkb2VzIGFueSAqYWN0dWFsKiBkcml2ZXIsIGluIGEgcmVhbC13b3JsZCBzY2VuYXJpbywgYWN0dWFsbHkgcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBmb3IgdGhhdCBtZW1iZXIsIGBwY3NfbG9vcGJhY2tgPyBJdCYjMzk7cyBtYWtpbmcgbWUgd29uZGVyIGlmIEkmIzM5O20gbWlzc2luZyBzb21ldGhpbmcsIG9yIHBlcmhhcHMgbWlzaW50ZXJwcmV0aW5nIGl0cyB1c2UgY2FzZS4KCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gVGhlIGJlc3Qgd2F5IHRvIGNsYXJpZnkgdGhpcyB3b3VsZCBiZSB0byBnbyBhbmQgc2VhcmNoIGZvciB3aGVyZSB0aGUgYHBjc19sb29wYmFja2AgbWVtYmVyIGlzIGJlaW5nIGFzc2lnbmVkLCB3aGV0aGVyIGl0IGJlIGluIGEgZHJpdmVyIGRpcmVjdGx5LCBvciBwb3RlbnRpYWxseSwgdGhyb3VnaCBzb21lIHNvcnQgb2YgaGlnaGVyLWxldmVsIGFic3RyYWN0aW9uLiBJIG5lZWQgdG8ga25vdyBkZWZpbml0aXZlbHkgaWYgaXQmIzM5O3MgYmVpbmcgdXNlZCBhbmQsIGlmIHNvLCBob3cuIExldCBtZSBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XFwucGNzX2xvb3BiYWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQwMzMKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhbiBleHBlcnQ6CgoqKlJlZmluaW5nIE15IFNlYXJjaCBmb3IgYHBjc19sb29wYmFja2AqKgoKQWxyaWdodCwgSSYjMzk7bSBhdCBhIHBvaW50IHdoZXJlIEkgbmVlZCB0byByZXZpc2l0IHRoZSBgcGNzX2xvb3BiYWNrYCB0ZXJtIHdpdGhpbiB0aGUgY29kZSBiYXNlLiBJJiMzOTt2ZSBsaWtlbHkgZW5jb3VudGVyZWQgaXQgYmVmb3JlLCBwZXJoYXBzIGluIGEgc3BlY2lmaWMgY29udGV4dCBvciBtb2R1bGUsIGJ1dCBJIHdhbnQgdG8gY2FzdCBhIHdpZGVyIG5ldCB0aGlzIHRpbWUuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gTXkgaW5pdGlhbCBzZWFyY2ggbWlnaHQgaGF2ZSBiZWVuIHRvbyBuYXJyb3csIG9yIG1heWJlIEkgZGlkbiYjMzk7dCBmdWxseSBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSB0ZXJtIGluIHJlbGF0aW9uIHRvIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4gVGhlcmVmb3JlLCBJJiMzOTttIGdvaW5nIHRvIGluaXRpYXRlIGFub3RoZXIsIG1vcmUgY29tcHJlaGVuc2l2ZSBzZWFyY2gsIGRpZ2dpbmcgZGVlcGVyIGludG8gdGhlIGVudGlyZSBjb2RlIHRyZWUgdG8gZW5zdXJlIEkgaGF2ZW4mIzM5O3Qgb3Zlcmxvb2tlZCBhbnkgcmVsZXZhbnQgaW5zdGFuY2VzIG9yIGFzc29jaWF0ZWQgaW1wbGVtZW50YXRpb25zLiBJJiMzOTttIGFpbWluZyBmb3IgYSBob2xpc3RpYyB1bmRlcnN0YW5kaW5nLCBhIHZpZXcgb2YgdGhlIGZvcmVzdCwgbm90IGp1c3QgYSBmZXcgdHJlZXMuIEl0JiMzOTtzIHRpbWUgdG8gcmVmaW5lIG15IG1lbnRhbCBtb2RlbCBieSBicm9hZGVuaW5nIHRoZSBzY29wZSBvZiBteSBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY3NfbG9vcGJhY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oPTE0MTQ9dW5pb24gbXhsODYyeHhfeHBjc19hbl93b3JkIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQyOC0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxNDI5OiAqIGVudW0gbXhsODYyeHhfeHBjc19sb29wYmFja19tb2RlIC0gWFBDUyBsb29wYmFjayBtb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQzMC0gKiBATVhMODYyWFhfWFBDU19MQl9ESVNBQkxFOiBkaXNhYmxlIGFsbCBsb29wYmFja1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xNDM1LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjE0MzY6ZW51bSBteGw4NjJ4eF94cGNzX2xvb3BiYWNrX21vZGUge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE0MzctXHRNWEw4NjJYWF9YUENTX0xCX0RJU0FCTEUgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0zNzc9c3RhdGljIGludCBzdG1tYWNfdGVzdF9waHlfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0zOTctXHRpZiAocGNzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6Mzk4Olx0XHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIHRydWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTM5OS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtNDA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjQwNTpcdFx0cGh5bGlua19wY3NfbG9vcGJhY2socGNzLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtNDA2LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0xOTc0PXZvaWQgc3RtbWFjX3NlbGZ0ZXN0X3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDA1LVx0XHRcdGVsc2UgaWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MjAwNjpcdFx0XHRcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MsIHRydWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwMDctXHRcdFx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwNDAtXHRcdFx0ZWxzZSBpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoyMDQxOlx0XHRcdFx0cmV0ID0gcGh5bGlua19wY3NfbG9vcGJhY2socHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcywgZmFsc2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwNDItXHRcdFx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz05OTg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfcHJlX2luaXQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAwMC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAwMTogKiBwaHlsaW5rX3Bjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDU1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDAyLSAqIEBwY3M6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjcy5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMDktICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTA6aW50IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAxMS17XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTI6XHRpZiAocGNzLVx1MDAzZW9wcy1cdTAwM2VwY3NfbG9vcGJhY2spXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTM6XHRcdHJldHVybiBwY3MtXHUwMDNlb3BzLVx1MDAzZXBjc19sb29wYmFjayhwY3MsIGVuYWJsZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMTQtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE2LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAxNzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Bjc19sb29wYmFjayk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMTgtXG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg9NDk0PXN0cnVjdCBwaHlsaW5rX3BjcyB7XG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNTIwLSAqICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIGUuZy4gUlggY2xvY2sgZm9yIHN0bW1hYy5cbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjUyMTogKiBAcGNzX2xvb3BiYWNrOiBlbmFibGUvZGlzYWJsZSBsb29wYmFjayBtb2RlIGF0IHRoZSBQQ1MuXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC01MjItICovXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD01MjM9c3RydWN0IHBoeWxpbmtfcGNzX29wcyB7XG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNTQ1LVx0aW50ICgqcGNzX3ByZV9pbml0KShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo1NDY6XHRpbnQgKCpwY3NfbG9vcGJhY2spKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSk7XG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC01NDctfTtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD03MjA9aW50IHBjc19wcmVfaW5pdChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzIyLS8qKlxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6NzIzOiAqIHBjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDU1xuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzI0LSAqIEBwY3M6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjcy5cbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MzEtICovXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MzI6aW50IHBjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzMzLVxuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczNS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjczNjppbnQgcGh5bGlua19wY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKTtcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTM6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU5NjIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0MDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgcGNzX2xvb3BiYWNrYCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBhIHBvdGVudGlhbCBpc3N1ZS4gSWYgbm8gZHJpdmVyIGFjdHVhbGx5ICppbXBsZW1lbnRzKiBgcGNzX2xvb3BiYWNrYCwgdGhlbiB0aGUgZnVuY3Rpb24gYHBoeWxpbmtfcGNzX2xvb3BiYWNrYCBpcyBqdXN0IGdvaW5nIHRvIHJldHVybiBgLUVPUE5PVFNVUFBgLiBUaGF0JiMzOTtzIGEgcHJvYmxlbSwgaXNuJiMzOTt0IGl0PyBMZXQmIzM5O3MgdmVyaWZ5LiBGaXJzdCwgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGBwY3NfbG9vcGJhY2tgIGluIHRoZSBzZXJpZXMgb2YgcGF0Y2hlcy4KCkxvb2tpbmcgYXQgdGhlIGRpZmYsIGl0IG9ubHkgdG91Y2hlcyBgc3RtbWFjX3NlbGZ0ZXN0cy5jYCwgYHBoeWxpbmsuY2AsIGFuZCBgcGh5bGluay5oYC4gSXMgdGhlIGltcGxlbWVudGF0aW9uICpzb21ld2hlcmUgZWxzZSogaW4gdGhlIHRyZWU/IE1heWJlIGl0JiMzOTtzIGluIGEgZGlmZmVyZW50IGZpbGU/IEkgZGlkIGEgZnVsbCB0cmVlIHNlYXJjaCBmb3IgYHBjc19sb29wYmFja2AgYW5kIGZvdW5kIG5vdGhpbmcsIG5vIGFzc2lnbm1lbnRzIGF0IGFsbCwgbm8gYC5wY3NfbG9vcGJhY2sgPSAuLi5gLiBIbW0sIGxldCBtZSBkb3VibGUtY2hlY2sgdGhhdDsgbWF5YmUgaXQmIzM5O3MgdXNpbmcgZGlmZmVyZW50IHN5bnRheCBsaWtlIGBvcHMtJmd0O3Bjc19sb29wYmFjayA9IC4uLmAgb3IgaW5pdGlhbGl6ZWQgYXMgYSBzdHJ1Y3QgbWVtYmVyLiBTdGlsbCBub3RoaW5nLgoKSSByYW4gYW5vdGhlciBzZWFyY2gsIGp1c3QgdG8gYmUgc3VyZSwgYW5kIHRoZSBvbmx5IG1hdGNoZXMgYXJlIGluIGBteGw4NjJ4eC1hcGkuaGAgKGFuIGVudW0pLCB0aGUgZmlsZXMgaW4gdGhlIGRpZmYsIGFuZCBub3RoaW5nIGVsc2UuIFRoZXJlIGlzIGxpdGVyYWxseSBubyBkcml2ZXIgdGhhdCAqYWN0dWFsbHkqIGltcGxlbWVudHMgYHBjc19sb29wYmFja2AhCgpTbywgaWYgdGhlcmUmIzM5O3Mgbm8gaW1wbGVtZW50YXRpb24sIHRoZW4gYHBoeWxpbmtfcGNzX2xvb3BiYWNrYCBqdXN0IHJldHVybnMgYC1FT1BOT1RTVVBQYCBhbmQgZG9lcyBub3RoaW5nLiBJcyBpdCBldmVuIHdvcnRoIGZ1enppbmcgaWYgaXQmIzM5O3MganVzdCBhIHdyYXBwZXIgZnVuY3Rpb24gdGhhdCBhbHdheXMgcmV0dXJucyBhbiBlcnJvcj8gSXQmIzM5O3Mgbm90IHJlYWxseSB0ZXN0YWJsZSBvciBmdW5jdGlvbmFsIGluIHRoYXQgY2FzZS4gV2FpdCwgbWF5YmUgdGhlIGltcGxlbWVudGF0aW9uIGlzIG5hbWVkIGRpZmZlcmVudGx5PyBObywgdGhlIHN0cnVjdCBtZW1iZXIgaXMgYHBjc19sb29wYmFja2AuIElmIGl0IHdlcmUgaW5pdGlhbGl6ZWQsIGl0IHdvdWxkIGhhdmUgdG8gYmUgbmFtZWQgYHBjc19sb29wYmFja2AgaW4gdGhlIHN0cnVjdCBpbml0aWFsaXplci4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUsIEkmIzM5O20gZ29pbmcgdG8gc2NhbiB0aGUgYGRyaXZlcnMvbmV0L3Bjcy9gIGRpcmVjdG9yeSBmb3IgYW55IHJlZmVyZW5jZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNzX2xvb3BiYWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2ODQxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipDaGVja2luZyBmb3IgTG9vcGJhY2sgRnVuY3Rpb25hbGl0eSBpbiBTVE1NQUMgRHJpdmVyKioKCkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzIG5ldHdvcmtpbmcgaXNzdWUsIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgZXhpc3RlbmNlIGFuZCBzdHJ1Y3R1cmUgb2YgYW55IGxvb3BiYWNrIGZ1bmN0aW9uYWxpdHkgcmVsYXRlZCB0byB0aGUgU1RNTUFDIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGEgYHBjc19sb29wYmFja2AgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIGEgcHJldHR5IHN0YW5kYXJkIHdheSB0byB0ZXN0IHRoZSBwaHlzaWNhbCBsYXllciBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8ga25vdyBpZiB0aGVyZSYjMzk7cyBhbiBleGlzdGluZyBgcGNzX2xvb3BiYWNrYCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9gIGRpcmVjdG9yeS4gSWYgb25lIGV4aXN0cywgaXQgcHJvdmlkZXMgYSBuaWNlIHNhbml0eSBjaGVjayBmb3IgUEhZIGNvbmZpZ3VyYXRpb24gYW5kIE1BQy1QSFkgY29tbXVuaWNhdGlvbiB0aGF0IEkgY2FuIGxldmVyYWdlLiBJZiBpdCBpcyBhbHJlYWR5IHRoZXJlLCBpdCBjYW4gc2F2ZSBtZSBzb21lIGVmZm9ydCBpbiBkZXRlcm1pbmluZyBpZiBJIG5lZWQgdG8gaW1wbGVtZW50IG15IG93biB0ZXN0LiBTbywgSSB3aWxsIGNoZWNrIHRoYXQgZGlyZWN0b3J5IGFuZCB0aGUgc3BlY2lmaWMgbmFtZSB0byBkZXRlcm1pbmUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Bjc19sb29wYmFjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM9Mzc3PXN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfcGh5X2xvb3BiYWNrKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMzk3LVx0aWYgKHBjcykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjM5ODpcdFx0cmV0ID0gcGh5bGlua19wY3NfbG9vcGJhY2socGNzLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0zOTktXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTQwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzo0MDU6XHRcdHBoeWxpbmtfcGNzX2xvb3BiYWNrKHBjcywgZmFsc2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTQwNi1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM9MTk3ND12b2lkIHN0bW1hY19zZWxmdGVzdF9ydW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMjAwNS1cdFx0XHRlbHNlIGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjIwMDY6XHRcdFx0XHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDA3LVx0XHRcdGlmICghcmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDQwLVx0XHRcdGVsc2UgaWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MjA0MTpcdFx0XHRcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDQyLVx0XHRcdGlmICghcmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzcwNwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDEyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIExvb3BiYWNrIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBgcGNzX2xvb3BiYWNrYCBmdW5jdGlvbiBpdHNlbGYgaXNuJiMzOTt0IGFjdHVhbGx5ICpkZWZpbmVkKiBoZXJlLCB3aGljaCBpcyBvZGQuIFRoaXMgcGF0Y2gganVzdCBzZXRzIHVwIHRoZSBncm91bmR3b3JrIGFuZCBjYWxscyB0aGUgZnVuY3Rpb24gd2l0aGluIGBzdG1tYWNfc2VsZnRlc3RzLmNgLiBIbW0sIG1heWJlIGl0JiMzOTtzIGluIGEgY29tcGFuaW9uIHBhdGNoIGluIHRoZSBzZXJpZXMsIGJ1dCB0aGUgcHJvbXB0IHNheXMgZXZlcnl0aGluZyYjMzk7cyBhbHJlYWR5IGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgaGVhZCBjb21taXQuIFRoYXQgc3VnZ2VzdHMgaXQgKnNob3VsZCogYmUgaW4gdGhlIHRyZWUuCgpMZXQgbWUganVzdCBkbyBhIHF1aWNrIGBncmVwYCB0aHJvdWdoIHRoZSBlbnRpcmUgY29kZWJhc2UsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBJZiBJIGNvbWUgdXAgZW1wdHksIHRoZW4gdGhhdCYjMzk7cyBjb25maXJtYXRpb24g4oCTIHRoZXJlJiMzOTtzIG5vIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBvZiBgcGNzX2xvb3BiYWNrYC4gTWF5YmUgaXQmIzM5O3MgaGlkZGVuIGVsc2V3aGVyZSwgYnV0IGl0IHNlZW1zIHVubGlrZWx5LiBKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBhbHNvIGNoZWNrIHVuZGVyIGBkcml2ZXJzL25ldC9waHkvYCB0byBzZWUgaWYgaXQmIzM5O3MgaGlkaW5nIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY3NfbG9vcGJhY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9OTk4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcGNzX3ByZV9pbml0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMDAtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMDE6ICogcGh5bGlua19wY3NfbG9vcGJhY2soKSAtIEVuYWJsZSBvciBkaXNhYmxlIGxvb3BiYWNrIGF0IHRoZSBQQ1NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAwMi0gKiBAcGNzOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3MuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDA5LSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDEwOmludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMTEte1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDEyOlx0aWYgKHBjcy1cdTAwM2VvcHMtXHUwMDNlcGNzX2xvb3BiYWNrKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDEzOlx0XHRyZXR1cm4gcGNzLVx1MDAzZW9wcy1cdTAwM2VwY3NfbG9vcGJhY2socGNzLCBlbmFibGUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE0LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAxNi19XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTc6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfbG9vcGJhY2spO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODQxMAoJCQkJCQkJb3V0cHV0OiAxNDUKCQkJCQkJCXRob3VnaHRzOiA0MTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBBbmFseXNpczogVW5yZWFjaGFibGUgQ29kZSBQYXRoIGluIHN0bW1hYyBEcml2ZXIqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgc2VlLCB0aGUgYHBoeWxpbmtfcGNzX2xvb3BiYWNrYCBmdW5jdGlvbiBpcyBlc3NlbnRpYWxseSBhIHBsYWNlaG9sZGVyOyBpdCYjMzk7cyBkZXNpZ25lZCB0byByZXR1cm4gYC1FT1BOT1RTVVBQYCBhY3Jvc3MgdGhlIGJvYXJkLiBUaGUgY29kZSBpbiBgc3RtbWFjX3NlbGZ0ZXN0cy5jYCBhdHRlbXB0cyB0byB1dGlsaXplIHRoaXMsIGJ1dCBpdCBpbW1lZGlhdGVseSByZXR1cm5zIHRoZSBlcnJvci4gVGhpcyBtZWFucyB0aGUgbmV3IGNvZGUgcGF0aCB3aXRoaW4gYHN0bW1hY190ZXN0X3BoeV9sb29wYmFja2AgaXMgYSBkZWFkIGVuZC4gSSYjMzk7bSBub3Qgc2VlaW5nIGFueSBuZXcsIGludGVyZXN0aW5nIGZ1bmN0aW9uYWxpdHkgaGVyZS4gSXQmIzM5O3MgZXNzZW50aWFsbHkgYSBuby1vcCB0aGF0IHByb21wdGx5IHNpZ25hbHMgYW4gdW5zdXBwb3J0ZWQgb3BlcmF0aW9uLgoKRnVydGhlcm1vcmUsIGFuZCB0aGlzIGlzIGNydWNpYWwsIHRoZSBgc3RtbWFjYCBkcml2ZXIgaXRzZWxmIGlzIHRhcmdldGVkIGF0IHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUuIFJlYWNoaW5nIHRoaXMgY29kZSBkdXJpbmcgZnV6emluZyBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAgaXMgZ29pbmcgdG8gYmUgaW5jcmVkaWJseSBkaWZmaWN1bHQsIGlmIG5vdCBpbXBvc3NpYmxlLCB3aXRob3V0IGEgaGlnaGx5IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiBlbnZpcm9ubWVudC4gRXZlbiBpZiBJICpjb3VsZCogcmVhY2ggaXQsIEkmIzM5O2QganVzdCBiZSBoaXR0aW5nIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGVycm9yLiBUaGUgcmlzay1yZXdhcmQgcmF0aW8gaXMgbm90IHRoZXJlLiBUaGUgYWRkZWQgY29tcGxleGl0eSBvZiBzZXR0aW5nIHVwIGEgcmVsZXZhbnQgZnV6emluZyBlbnZpcm9ubWVudCB3aXRoIGhhcmR3YXJlIGVtdWxhdGlvbiB3b3VsZCBvdXR3ZWlnaCB0aGUgZ2Fpbi4gU28sIHNpbmNlIHRoZSBuZXcgY29kZSBwYXRoIGp1c3QgcmV0dXJucyBhbiBlcnJvciwgYW5kIHRoZSBzdG1tYWMgZHJpdmVyIGlzIGRpZmZpY3VsdCB0byByZWFjaCwgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYCB3aXRob3V0IGEgc2Vjb25kIHRob3VnaHQuIEkmIzM5O3ZlIGRvdWJsZSBjaGVja2VkIGZvciByZWFjaGFiaWxpdHksIGFuZCBJIGRvbiYjMzk7dCBzZWUgYW55IHZhbHVlIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEzOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGdlbmVyaWMgcGh5bGlua19wY3NfbG9vcGJhY2sgZnVuY3Rpb24gYW5kIGNhbGxzIGl0IGZyb20gdGhlIHN0bW1hYyBkcml2ZXImIzM5O3Mgc2VsZnRlc3QuIEhvd2V2ZXIsIHRoZXJlIGFyZSBubyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHBjc19sb29wYmFjayBjYWxsYmFjayBpbiBhbnkgUENTIGRyaXZlcnMgaW4gdGhlIHRyZWUsIG1lYW5pbmcgcGh5bGlua19wY3NfbG9vcGJhY2sgd2lsbCBhbHdheXMgdHJpdmlhbGx5IHJldHVybiAtRU9QTk9UU1VQUC4gQWRkaXRpb25hbGx5LCB0aGUgc3RtbWFjIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgTUFDcyAoZS5nLiwgU3lub3BzeXMgRFdNQUMpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgc2VsZnRlc3QgdW5yZWFjaGFibGUgZHVyaW5nIGdlbmVyaWMgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBnZW5lcmljIHBoeWxpbmtfcGNzX2xvb3BiYWNrIGZ1bmN0aW9uIGFuZCBjYWxscyBpdCBmcm9tIHRoZSBzdG1tYWMgZHJpdmVyJiMzOTtzIHNlbGZ0ZXN0LiBIb3dldmVyLCB0aGVyZSBhcmUgbm8gaW1wbGVtZW50YXRpb25zIG9mIHRoZSBwY3NfbG9vcGJhY2sgY2FsbGJhY2sgaW4gYW55IFBDUyBkcml2ZXJzIGluIHRoZSB0cmVlLCBtZWFuaW5nIHBoeWxpbmtfcGNzX2xvb3BiYWNrIHdpbGwgYWx3YXlzIHRyaXZpYWxseSByZXR1cm4gLUVPUE5PVFNVUFAuIEFkZGl0aW9uYWxseSwgdGhlIHN0bW1hYyBkcml2ZXIgaXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIE1BQ3MgKGUuZy4sIFN5bm9wc3lzIERXTUFDKSB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIHNlbGZ0ZXN0IHVucmVhY2hhYmxlIGR1cmluZyBnZW5lcmljIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjE6MjAuMzM2NTIyMDQyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM5OTgwODQxNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBnZW5lcmljIHBoeWxpbmtfcGNzX2xvb3BiYWNrIGZ1bmN0aW9uIGFuZCBjYWxscyBpdCBmcm9tIHRoZSBzdG1tYWMgZHJpdmVyJ3Mgc2VsZnRlc3QuIEhvd2V2ZXIsIHRoZXJlIGFyZSBubyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHBjc19sb29wYmFjayBjYWxsYmFjayBpbiBhbnkgUENTIGRyaXZlcnMgaW4gdGhlIHRyZWUsIG1lYW5pbmcgcGh5bGlua19wY3NfbG9vcGJhY2sgd2lsbCBhbHdheXMgdHJpdmlhbGx5IHJldHVybiAtRU9QTk9UU1VQUC4gQWRkaXRpb25hbGx5LCB0aGUgc3RtbWFjIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgTUFDcyAoZS5nLiwgU3lub3BzeXMgRFdNQUMpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgc2VsZnRlc3QgdW5yZWFjaGFibGUgZHVyaW5nIGdlbmVyaWMgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjIxOjIwLjMzNjUyNzk2MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk4NTI5MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjNmZDRmMDVlMzlhMDJiZDAzMzU1MGEzOTdkOTM1NDRkY2MxZGQwZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMzoyMToxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmNcXG5pbmRleCAyOWU4MjRiZDkwY2E2Yi4uZTZhYzUxMDE4YTY1MGQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jXFxuQEAgLTM3NywyMCArMzc3LDM2IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfbWFjX2xvb3BiYWNrKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gc3RhdGljIGludCBzdG1tYWNfdGVzdF9waHlfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiB7XFxuIFxcdHN0cnVjdCBzdG1tYWNfcGFja2V0X2F0dHJzIGF0dHIgPSB7IH07XFxuK1xcdHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4tXFx0aWYgKCFwcml2LVxcdTAwM2VkZXYtXFx1MDAzZXBoeWRldilcXG4tXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbitcXHRpZiAocHJpdi1cXHUwMDNlZGV2LVxcdTAwM2VwaHlkZXYpIHtcXG4rXFx0XFx0cmV0ID0gcGh5X2xvb3BiYWNrKHByaXYtXFx1MDAzZWRldi1cXHUwMDNlcGh5ZGV2LCB0cnVlLCAwKTtcXG4rXFx0XFx0aWYgKHJldClcXG4rXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuLVxcdHJldCA9IHBoeV9sb29wYmFjayhwcml2LVxcdTAwM2VkZXYtXFx1MDAzZXBoeWRldiwgdHJ1ZSwgMCk7XFxuLVxcdGlmIChyZXQpXFxuK1xcdFxcdGF0dHIuZHN0ID0gcHJpdi1cXHUwMDNlZGV2LVxcdTAwM2VkZXZfYWRkcjtcXG4rXFx0XFx0cmV0ID0gX19zdG1tYWNfdGVzdF9sb29wYmFjayhwcml2LCBcXHUwMDI2YXR0cik7XFxuK1xcbitcXHRcXHRwaHlfbG9vcGJhY2socHJpdi1cXHUwMDNlZGV2LVxcdTAwM2VwaHlkZXYsIGZhbHNlLCAwKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbiBcXG4tXFx0YXR0ci5kc3QgPSBwcml2LVxcdTAwM2VkZXYtXFx1MDAzZWRldl9hZGRyO1xcbi1cXHRyZXQgPSBfX3N0bW1hY190ZXN0X2xvb3BiYWNrKHByaXYsIFxcdTAwMjZhdHRyKTtcXG4rXFx0LyogVXNlIFBDUyBsb29wYmFjayBmb3IgaW50ZXJmYWNlcyB3aXRob3V0IGFuIGV4dGVybmFsIFBIWS4gKi9cXG4rXFx0cGNzID0gcHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzO1xcbitcXHRpZiAocGNzKSB7XFxuK1xcdFxcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHBjcywgdHJ1ZSk7XFxuK1xcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRwaHlfbG9vcGJhY2socHJpdi1cXHUwMDNlZGV2LVxcdTAwM2VwaHlkZXYsIGZhbHNlLCAwKTtcXG4tXFx0cmV0dXJuIHJldDtcXG4rXFx0XFx0YXR0ci5kc3QgPSBwcml2LVxcdTAwM2VkZXYtXFx1MDAzZWRldl9hZGRyO1xcbitcXHRcXHRyZXQgPSBfX3N0bW1hY190ZXN0X2xvb3BiYWNrKHByaXYsIFxcdTAwMjZhdHRyKTtcXG4rXFxuK1xcdFxcdHBoeWxpbmtfcGNzX2xvb3BiYWNrKHBjcywgZmFsc2UpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfbW1jKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG5AQCAtMTk4Niw2ICsyMDAyLDggQEAgdm9pZCBzdG1tYWNfc2VsZnRlc3RfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdHJldCA9IC1FT1BOT1RTVVBQO1xcbiBcXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VwaHlkZXYpXFxuIFxcdFxcdFxcdFxcdHJldCA9IHBoeV9sb29wYmFjayhkZXYtXFx1MDAzZXBoeWRldiwgdHJ1ZSwgMCk7XFxuK1xcdFxcdFxcdGVsc2UgaWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG4rXFx0XFx0XFx0XFx0cmV0ID0gcGh5bGlua19wY3NfbG9vcGJhY2socHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzLCB0cnVlKTtcXG4gXFx0XFx0XFx0aWYgKCFyZXQpXFxuIFxcdFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRcXHRmYWxsdGhyb3VnaDtcXG5AQCAtMjAxOSw2ICsyMDM3LDggQEAgdm9pZCBzdG1tYWNfc2VsZnRlc3RfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdHJldCA9IC1FT1BOT1RTVVBQO1xcbiBcXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VwaHlkZXYpXFxuIFxcdFxcdFxcdFxcdHJldCA9IHBoeV9sb29wYmFjayhkZXYtXFx1MDAzZXBoeWRldiwgZmFsc2UsIDApO1xcbitcXHRcXHRcXHRlbHNlIGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuK1xcdFxcdFxcdFxcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcywgZmFsc2UpO1xcbiBcXHRcXHRcXHRpZiAoIXJldClcXG4gXFx0XFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdFxcdGZhbGx0aHJvdWdoO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbmluZGV4IDU5ZGZlMzVhZmE1NGZjLi5hN2Y3OGM4MjkxM2FlZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbkBAIC05OTcsNiArOTk3LDI1IEBAIGludCBwaHlsaW5rX3Bjc19wcmVfaW5pdChzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcGNzX3ByZV9pbml0KTtcXG4gXFxuKy8qKlxcbisgKiBwaHlsaW5rX3Bjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDU1xcbisgKiBAcGNzOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmtfcGNzLlxcbisgKiBAZW5hYmxlOiB0cnVlIHRvIGVuYWJsZSBsb29wYmFjaywgZmFsc2UgdG8gZGlzYWJsZVxcbisgKlxcbisgKiBFbmFibGUgb3IgZGlzYWJsZSBsb29wYmFjayBtb2RlIGF0IHRoZSBQQ1MgbGV2ZWwuIFRoaXMgaXMgdXNlZCBieSBNQUNcXG4rICogZHJpdmVycyBmb3Igc2VsZnRlc3QgcHVycG9zZXMgd2hlbiBubyBleHRlcm5hbCBQSFkgaXMgcHJlc2VudC5cXG4rICpcXG4rICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS5cXG4rICovXFxuK2ludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpXFxuK3tcXG4rXFx0aWYgKHBjcy1cXHUwMDNlb3BzLVxcdTAwM2VwY3NfbG9vcGJhY2spXFxuK1xcdFxcdHJldHVybiBwY3MtXFx1MDAzZW9wcy1cXHUwMDNlcGNzX2xvb3BiYWNrKHBjcywgZW5hYmxlKTtcXG4rXFxuK1xcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Bjc19sb29wYmFjayk7XFxuK1xcbiBzdGF0aWMgdm9pZCBwaHlsaW5rX21hY19jb25maWcoc3RydWN0IHBoeWxpbmsgKnBsLFxcbiBcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHlsaW5rLmggYi9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaFxcbmluZGV4IDJiYzBkYjNkNTJhYzhkLi42NmM3MDE2ZDRhY2RjYiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvcGh5bGluay5oXFxuQEAgLTUxOCw2ICs1MTgsNyBAQCBzdHJ1Y3QgcGh5bGlua19wY3Mge1xcbiAgKlxcdFxcdCAgICB0aGUgTUFDLlxcbiAgKiBAcGNzX3ByZV9pbml0OiBjb25maWd1cmUgUENTIGNvbXBvbmVudHMgbmVjZXNzYXJ5IGZvciBNQUMgaGFyZHdhcmVcXG4gICogICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gZS5nLiBSWCBjbG9jayBmb3Igc3RtbWFjLlxcbisgKiBAcGNzX2xvb3BiYWNrOiBlbmFibGUvZGlzYWJsZSBsb29wYmFjayBtb2RlIGF0IHRoZSBQQ1MuXFxuICAqL1xcbiBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHtcXG4gXFx0aW50ICgqcGNzX3ZhbGlkYXRlKShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkLFxcbkBAIC01NDIsNiArNTQzLDcgQEAgc3RydWN0IHBoeWxpbmtfcGNzX29wcyB7XFxuIFxcdHZvaWQgKCpwY3NfZGlzYWJsZV9lZWUpKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcXG4gXFx0dm9pZCAoKnBjc19lbmFibGVfZWVlKShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XFxuIFxcdGludCAoKnBjc19wcmVfaW5pdCkoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xcbitcXHRpbnQgKCpwY3NfbG9vcGJhY2spKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSk7XFxuIH07XFxuIFxcbiAjaWYgMCAvKiBGb3Iga2VybmVsLWRvYyBwdXJwb3NlcyBvbmx5LiAqL1xcbkBAIC03MTcsOCArNzE5LDIyIEBAIHZvaWQgcGNzX2VuYWJsZV9lZWUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xcbiAgKi9cXG4gaW50IHBjc19wcmVfaW5pdChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XFxuIFxcbisvKipcXG4rICogcGNzX2xvb3BiYWNrKCkgLSBFbmFibGUgb3IgZGlzYWJsZSBsb29wYmFjayBhdCB0aGUgUENTXFxuKyAqIEBwY3M6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3MuXFxuKyAqIEBlbmFibGU6IHRydWUgdG8gZW5hYmxlIGxvb3BiYWNrLCBmYWxzZSB0byBkaXNhYmxlXFxuKyAqXFxuKyAqIEVuYWJsZSBvciBkaXNhYmxlIGxvb3BiYWNrIG1vZGUgYXQgdGhlIFBDUyBsZXZlbC4gVGhpcyBpcyB1c2VkIGJ5IE1BQ1xcbisgKiBkcml2ZXJzIGZvciBzZWxmdGVzdCBwdXJwb3NlcyB3aGVuIG5vIGV4dGVybmFsIFBIWSBpcyBwcmVzZW50LlxcbisgKlxcbisgKiBSZXR1cm5zIDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuXFxuKyAqL1xcbitpbnQgcGNzX2xvb3BiYWNrKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSk7XFxuK1xcbiAjZW5kaWZcXG4gXFxuK2ludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xcbitcXG4gc3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqLFxcbiBcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKixcXG4gXFx0XFx0XFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjE6MjAuOTM3MTA1OTcxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjMzOTc0OTMyOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBnZW5lcmljIHBoeWxpbmtfcGNzX2xvb3BiYWNrIGZ1bmN0aW9uIGFuZCBjYWxscyBpdCBmcm9tIHRoZSBzdG1tYWMgZHJpdmVyJ3Mgc2VsZnRlc3QuIEhvd2V2ZXIsIHRoZXJlIGFyZSBubyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHBjc19sb29wYmFjayBjYWxsYmFjayBpbiBhbnkgUENTIGRyaXZlcnMgaW4gdGhlIHRyZWUsIG1lYW5pbmcgcGh5bGlua19wY3NfbG9vcGJhY2sgd2lsbCBhbHdheXMgdHJpdmlhbGx5IHJldHVybiAtRU9QTk9UU1VQUC4gQWRkaXRpb25hbGx5LCB0aGUgc3RtbWFjIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgTUFDcyAoZS5nLiwgU3lub3BzeXMgRFdNQUMpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgc2VsZnRlc3QgdW5yZWFjaGFibGUgZHVyaW5nIGdlbmVyaWMgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDYzZmQ0ZjA1ZTM5YTAyYmQwMzM1NTBhMzk3ZDkzNTQ0ZGNjMWRkMGVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMzoyMToxOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuY1xuaW5kZXggMjllODI0YmQ5MGNhNmIuLmU2YWM1MTAxOGE2NTBkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmNcbkBAIC0zNzcsMjAgKzM3NywzNiBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X21hY19sb29wYmFjayhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gc3RhdGljIGludCBzdG1tYWNfdGVzdF9waHlfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHtcbiBcdHN0cnVjdCBzdG1tYWNfcGFja2V0X2F0dHJzIGF0dHIgPSB7IH07XG4rXHRzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcztcbiBcdGludCByZXQ7XG4gXG4tXHRpZiAoIXByaXYtXHUwMDNlZGV2LVx1MDAzZXBoeWRldilcbi1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0aWYgKHByaXYtXHUwMDNlZGV2LVx1MDAzZXBoeWRldikge1xuK1x0XHRyZXQgPSBwaHlfbG9vcGJhY2socHJpdi1cdTAwM2VkZXYtXHUwMDNlcGh5ZGV2LCB0cnVlLCAwKTtcbitcdFx0aWYgKHJldClcbitcdFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0cmV0ID0gcGh5X2xvb3BiYWNrKHByaXYtXHUwMDNlZGV2LVx1MDAzZXBoeWRldiwgdHJ1ZSwgMCk7XG4tXHRpZiAocmV0KVxuK1x0XHRhdHRyLmRzdCA9IHByaXYtXHUwMDNlZGV2LVx1MDAzZWRldl9hZGRyO1xuK1x0XHRyZXQgPSBfX3N0bW1hY190ZXN0X2xvb3BiYWNrKHByaXYsIFx1MDAyNmF0dHIpO1xuK1xuK1x0XHRwaHlfbG9vcGJhY2socHJpdi1cdTAwM2VkZXYtXHUwMDNlcGh5ZGV2LCBmYWxzZSwgMCk7XG4gXHRcdHJldHVybiByZXQ7XG4rXHR9XG4gXG4tXHRhdHRyLmRzdCA9IHByaXYtXHUwMDNlZGV2LVx1MDAzZWRldl9hZGRyO1xuLVx0cmV0ID0gX19zdG1tYWNfdGVzdF9sb29wYmFjayhwcml2LCBcdTAwMjZhdHRyKTtcbitcdC8qIFVzZSBQQ1MgbG9vcGJhY2sgZm9yIGludGVyZmFjZXMgd2l0aG91dCBhbiBleHRlcm5hbCBQSFkuICovXG4rXHRwY3MgPSBwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzO1xuK1x0aWYgKHBjcykge1xuK1x0XHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIHRydWUpO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdHJldHVybiByZXQ7XG4gXG4tXHRwaHlfbG9vcGJhY2socHJpdi1cdTAwM2VkZXYtXHUwMDNlcGh5ZGV2LCBmYWxzZSwgMCk7XG4tXHRyZXR1cm4gcmV0O1xuK1x0XHRhdHRyLmRzdCA9IHByaXYtXHUwMDNlZGV2LVx1MDAzZWRldl9hZGRyO1xuK1x0XHRyZXQgPSBfX3N0bW1hY190ZXN0X2xvb3BiYWNrKHByaXYsIFx1MDAyNmF0dHIpO1xuK1xuK1x0XHRwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIGZhbHNlKTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHJldHVybiAtRU9QTk9UU1VQUDtcbiB9XG4gXG4gc3RhdGljIGludCBzdG1tYWNfdGVzdF9tbWMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuQEAgLTE5ODYsNiArMjAwMiw4IEBAIHZvaWQgc3RtbWFjX3NlbGZ0ZXN0X3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdHJldCA9IC1FT1BOT1RTVVBQO1xuIFx0XHRcdGlmIChkZXYtXHUwMDNlcGh5ZGV2KVxuIFx0XHRcdFx0cmV0ID0gcGh5X2xvb3BiYWNrKGRldi1cdTAwM2VwaHlkZXYsIHRydWUsIDApO1xuK1x0XHRcdGVsc2UgaWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4rXHRcdFx0XHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzLCB0cnVlKTtcbiBcdFx0XHRpZiAoIXJldClcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdGZhbGx0aHJvdWdoO1xuQEAgLTIwMTksNiArMjAzNyw4IEBAIHZvaWQgc3RtbWFjX3NlbGZ0ZXN0X3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdHJldCA9IC1FT1BOT1RTVVBQO1xuIFx0XHRcdGlmIChkZXYtXHUwMDNlcGh5ZGV2KVxuIFx0XHRcdFx0cmV0ID0gcGh5X2xvb3BiYWNrKGRldi1cdTAwM2VwaHlkZXYsIGZhbHNlLCAwKTtcbitcdFx0XHRlbHNlIGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuK1x0XHRcdFx0cmV0ID0gcGh5bGlua19wY3NfbG9vcGJhY2socHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcywgZmFsc2UpO1xuIFx0XHRcdGlmICghcmV0KVxuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0ZmFsbHRocm91Z2g7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDU5ZGZlMzVhZmE1NGZjLi5hN2Y3OGM4MjkxM2FlZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC05OTcsNiArOTk3LDI1IEBAIGludCBwaHlsaW5rX3Bjc19wcmVfaW5pdChzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Bjc19wcmVfaW5pdCk7XG4gXG4rLyoqXG4rICogcGh5bGlua19wY3NfbG9vcGJhY2soKSAtIEVuYWJsZSBvciBkaXNhYmxlIGxvb3BiYWNrIGF0IHRoZSBQQ1NcbisgKiBAcGNzOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3MuXG4rICogQGVuYWJsZTogdHJ1ZSB0byBlbmFibGUgbG9vcGJhY2ssIGZhbHNlIHRvIGRpc2FibGVcbisgKlxuKyAqIEVuYWJsZSBvciBkaXNhYmxlIGxvb3BiYWNrIG1vZGUgYXQgdGhlIFBDUyBsZXZlbC4gVGhpcyBpcyB1c2VkIGJ5IE1BQ1xuKyAqIGRyaXZlcnMgZm9yIHNlbGZ0ZXN0IHB1cnBvc2VzIHdoZW4gbm8gZXh0ZXJuYWwgUEhZIGlzIHByZXNlbnQuXG4rICpcbisgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLlxuKyAqL1xuK2ludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpXG4re1xuK1x0aWYgKHBjcy1cdTAwM2VvcHMtXHUwMDNlcGNzX2xvb3BiYWNrKVxuK1x0XHRyZXR1cm4gcGNzLVx1MDAzZW9wcy1cdTAwM2VwY3NfbG9vcGJhY2socGNzLCBlbmFibGUpO1xuK1xuK1x0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Bjc19sb29wYmFjayk7XG4rXG4gc3RhdGljIHZvaWQgcGh5bGlua19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rICpwbCxcbiBcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG4ge1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5bGluay5oIGIvaW5jbHVkZS9saW51eC9waHlsaW5rLmhcbmluZGV4IDJiYzBkYjNkNTJhYzhkLi42NmM3MDE2ZDRhY2RjYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGh5bGluay5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaFxuQEAgLTUxOCw2ICs1MTgsNyBAQCBzdHJ1Y3QgcGh5bGlua19wY3Mge1xuICAqXHRcdCAgICB0aGUgTUFDLlxuICAqIEBwY3NfcHJlX2luaXQ6IGNvbmZpZ3VyZSBQQ1MgY29tcG9uZW50cyBuZWNlc3NhcnkgZm9yIE1BQyBoYXJkd2FyZVxuICAqICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIGUuZy4gUlggY2xvY2sgZm9yIHN0bW1hYy5cbisgKiBAcGNzX2xvb3BiYWNrOiBlbmFibGUvZGlzYWJsZSBsb29wYmFjayBtb2RlIGF0IHRoZSBQQ1MuXG4gICovXG4gc3RydWN0IHBoeWxpbmtfcGNzX29wcyB7XG4gXHRpbnQgKCpwY3NfdmFsaWRhdGUpKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQsXG5AQCAtNTQyLDYgKzU0Myw3IEBAIHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMge1xuIFx0dm9pZCAoKnBjc19kaXNhYmxlX2VlZSkoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xuIFx0dm9pZCAoKnBjc19lbmFibGVfZWVlKShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XG4gXHRpbnQgKCpwY3NfcHJlX2luaXQpKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcbitcdGludCAoKnBjc19sb29wYmFjaykoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKTtcbiB9O1xuIFxuICNpZiAwIC8qIEZvciBrZXJuZWwtZG9jIHB1cnBvc2VzIG9ubHkuICovXG5AQCAtNzE3LDggKzcxOSwyMiBAQCB2b2lkIHBjc19lbmFibGVfZWVlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcbiAgKi9cbiBpbnQgcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcbiBcbisvKipcbisgKiBwY3NfbG9vcGJhY2soKSAtIEVuYWJsZSBvciBkaXNhYmxlIGxvb3BiYWNrIGF0IHRoZSBQQ1NcbisgKiBAcGNzOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3MuXG4rICogQGVuYWJsZTogdHJ1ZSB0byBlbmFibGUgbG9vcGJhY2ssIGZhbHNlIHRvIGRpc2FibGVcbisgKlxuKyAqIEVuYWJsZSBvciBkaXNhYmxlIGxvb3BiYWNrIG1vZGUgYXQgdGhlIFBDUyBsZXZlbC4gVGhpcyBpcyB1c2VkIGJ5IE1BQ1xuKyAqIGRyaXZlcnMgZm9yIHNlbGZ0ZXN0IHB1cnBvc2VzIHdoZW4gbm8gZXh0ZXJuYWwgUEhZIGlzIHByZXNlbnQuXG4rICpcbisgKiBSZXR1cm5zIDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuXG4rICovXG4raW50IHBjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xuK1xuICNlbmRpZlxuIFxuK2ludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xuK1xuIHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rX2NyZWF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKixcbiBcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKixcbiBcdFx0XHQgICAgICAgcGh5X2ludGVyZmFjZV90LFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjE6MjAuOTM3MTA4MDExWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjkxNTI0NzYyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBgc3RtbWFjYCBTZWxmLVRlc3RzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgc3RtbWFjX3NlbGZ0ZXN0cy5jYCwgYHBoeWxpbmsuY2AsIGFuZCBgcGh5bGluay5oYC4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIGFkZGluZyBgcGh5bGlua19wY3NfbG9vcGJhY2tgLCBhbmQgdGhlIGludGVudGlvbiBpcyB0byBlbmFibGUgUENTIGxvb3BiYWNrIHNwZWNpZmljYWxseSB3aGVuIGFuIGV4dGVybmFsIFBIWSBpc24ndCBwcmVzZW50LCB3aGljaCBpcyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgc2VsZi10ZXN0cyBmb3IgdGhlIGBzdG1tYWNgIGRyaXZlci4gUmlnaHQgYXdheSwgbXkgYnJhaW4gZ29lcyB0byBcIklzIHRoaXMgZXZlbiB0ZXN0YWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50P1wiLlxuXG5gc3RtbWFjYCBpcyB0eXBpY2FsbHkgdGllZCB0byBzcGVjaWZpYyBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGhhcmR3YXJlLCBzbyBRRU1VIGlzIHVzdWFsbHkgYSBzdGlja2luZyBwb2ludCB1bmxlc3MgdGhlcmUncyBhbiBlbXVsYXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUsIG9yIGlmIGl04oCZcyBhIGdlbmVyaWMgZHJpdmVyLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBRRU1VIGVtdWxhdGVzIGBzdG1tYWNgLiBJIGtub3cgUUVNVSAqZG9lcyogaGF2ZSBuZXR3b3JrIGRldmljZSBlbXVsYXRpb25zLCBidXQgaXMgYHN0bW1hY2Agb25lIG9mIHRoZW0/IE1hbnkgQVJNIFNvQ3MgdXRpbGl6ZSBgc3RtbWFjYCDigJMgQWxsd2lubmVyLCBSb2NrY2hpcCwgQW1sb2dpYywgZXRjLiDigJMgYW5kIFFFTVUgbWlnaHQgZW11bGF0ZSAqc29tZSogb2YgdGhvc2UgU29DcywgYnV0IHN5emthbGxlciB1c3VhbGx5IHRhcmdldHMgeDg2XzY0IG9yIGdlbmVyaWMgQVJNNjQgdmlydCBtYWNoaW5lcywgc28gdGhhdCdzIG5vdCBoZWxwaW5nLlxuXG5IbW0sIHdhaXQuIGBwaHlsaW5rX3Bjc19sb29wYmFja2AgaXMgYSAqcGh5bGluayogZnVuY3Rpb24sIHNvIGl0J3MgdGVjaG5pY2FsbHkgZ2VuZXJpYywgdGhvdWdoIGN1cnJlbnRseSBpdCdzIG9ubHkgYmVpbmcgdXNlZCBieSBgc3RtbWFjYC4gT2theSwgc28gbGV0J3MgY2hlY2sgaWYgdGhlIGBzdG1tYWNgIHNlbGYtdGVzdHMgYXJlIGFjdHVhbGx5IHJlYWNoYWJsZS4gT2gsIHJpZ2h0LCBpdCdzIGBzdG1tYWNfc2VsZnRlc3RzLmNgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBldGh0b29sIHNlbGYtdGVzdCBzdWl0ZS4gVGhhdCdzIGdvb2QuXG5cblNvLCBob3cgY2FuIEkgdHJpZ2dlciBgc3RtbWFjX3Rlc3RfcGh5X2xvb3BiYWNrYD8gSXQgbG9va3MgbGlrZSBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGtlcm5lbCBjb25maWdzIHRvIHNlZSBpZiBgc3RtbWFjYCBpcyBldmVuIGVuYWJsZWQgYW5kIGlmIHRoZSB0ZXN0cyBhcmUgYnVpbHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MDQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzoyMToyNy44NTIzNTczODhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5MjI1NzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfRVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzoyMToyNy45NjE1ODY3OTJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzI4Nzc4MjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqQXNzZXNzaW5nIHRoZSBgU1RNTUFDX0VUSGAgRHJpdmVyJ3MgQXJjaGl0ZWN0dXJlKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIHRoZSBhcmNoaXRlY3R1cmFsIG5hdHVyZSBvZiB0aGlzIGBTVE1NQUNfRVRIYCB0aGluZy4gSXMgaXQgZGVzaWduZWQgYXMgYSBQQ0ktYmFzZWQgZHJpdmVyLCBvciBpcyBpdCBtb3JlIG9mIGEgcGxhdGZvcm0gZHJpdmVyLCB0aWVkIGNsb3NlbHkgdG8gdGhlIGhhcmR3YXJlIGRlc2lnbiBvZiBhIHNwZWNpZmljIFNvQyBvciBzeXN0ZW0/IFVuZGVyc3RhbmRpbmcgdGhhdCBmdW5kYW1lbnRhbCBkaXN0aW5jdGlvbiB3aWxsIGhlYXZpbHkgaW5mbHVlbmNlIGhvdyBJIGFwcHJvYWNoIHVuZGVyc3RhbmRpbmcgaXRzIGluaXRpYWxpemF0aW9uLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgb3ZlcmFsbCBpbnRlcmFjdGlvbiB3aXRoIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIHN0cnVjdHVyZSBpdCB0YXJnZXRzIHRvIGJlZ2luIHRvIGFzc2VzcyBpdHMgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcyBhbmQgaW50ZWdyYXRpb24gY29tcGxleGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjY2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjE6MzAuNjkwMzY3NTU5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjcyNDc4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yPWNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjU6XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NjpcXHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNy1cXHRzZWxlY3QgTUlJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIwPWNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjI6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMy1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9NDQ9Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQ3LVxcdHNlbGVjdCBNSUlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQ4OlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz02MD1jb25maWcgRFdNQUNfQU5BUklPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy02Mi1cXHRkZWZhdWx0IEFSQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NjM6XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTY0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Njk9Y29uZmlnIERXTUFDX0VJQzc3MDBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTcwLVxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IGZvciBFc3dpbiBlaWM3NzAwIGV0aGVybmV0IGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjcxOlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQSBcXHUwMDI2XFx1MDAyNiBBUkNIX0VTV0lOIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNzItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz03OD1jb25maWcgRFdNQUNfSU5HRU5JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy04MC1cXHRkZWZhdWx0IE1BQ0hfSU5HRU5JQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6ODE6XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgKE1BQ0hfSU5HRU5JQyB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy04Mi1cXHRzZWxlY3QgTUZEX1NZU0NPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz05MD1jb25maWcgRFdNQUNfSVBRODA2WFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy05Mi1cXHRkZWZhdWx0IEFSQ0hfUUNPTVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6OTM6XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTk0LVxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTEwNj1jb25maWcgRFdNQUNfTFBDMThYWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMDgtXFx0ZGVmYXVsdCBBUkNIX0xQQzE4WFhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEwOTpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX0xQQzE4WFggfHwgQ09NUElMRV9URVNUKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTEwLVxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTExND1jb25maWcgRFdNQUNfTUVESUFURUtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTExNS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQyN3h4IEdNQUMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjExNjpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX01FRElBVEVLIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTExNy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTEyMj1jb25maWcgRFdNQUNfTUVTT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTI0LVxcdGRlZmF1bHQgQVJDSF9NRVNPTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTI1OlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgQ09NTU9OX0NMSyBcXHUwMDI2XFx1MDAyNiAoQVJDSF9NRVNPTiB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMjYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMzM9Y29uZmlnIERXTUFDX05VVk9UT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTM1LVxcdGRlZmF1bHQgQVJDSF9NQTM1XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMzY6XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9NQTM1IHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEzNy1cXHRzZWxlY3QgTUZEX1NZU0NPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNDU9Y29uZmlnIERXTUFDX1FDT01fRVRIUU9TXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0Ny1cXHRkZWZhdWx0IEFSQ0hfUUNPTVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTQ4OlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfUUNPTSB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNDktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNTU9Y29uZmlnIERXTUFDX1JFTkVTQVNfR0JFVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTU3LVxcdGRlZmF1bHQgQVJDSF9SRU5FU0FTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNTg6XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9SRU5FU0FTIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE1OS1cXHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNjg9Y29uZmlnIERXTUFDX1JPQ0tDSElQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3MC1cXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE3MTpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1JPQ0tDSElQIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3Mi1cXHRzZWxlY3QgTUZEX1NZU0NPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNzk9Y29uZmlnIERXTUFDX1JaTjFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTgxLVxcdGRlZmF1bHQgQVJDSF9SWk4xXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxODI6XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9SWk4xIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE4My1cXHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xOTE9Y29uZmlnIERXTUFDX1MzMlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOTMtXFx0ZGVmYXVsdCBBUkNIX1MzMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTk0OlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfUzMyIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE5NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIwMz1jb25maWcgRFdNQUNfU09DRlBHQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMDUtXFx0ZGVmYXVsdCBBUkNIX0lOVEVMX1NPQ0ZQR0FcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIwNjpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX0lOVEVMX1NPQ0ZQR0EgfHwgQ09NUElMRV9URVNUKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjA3LVxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIxOD1jb25maWcgRFdNQUNfU09QSEdPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMTktXFx0dHJpc3RhdGUgXFxcIlNvcGhnbyBkd21hYyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjIwOlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU09QSEdPIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIyMS1cXHRkZWZhdWx0IG0gaWYgQVJDSF9TT1BIR09cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjI5PWNvbmZpZyBEV01BQ19TUEFDRU1JVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjMwLVxcdHRyaXN0YXRlIFxcXCJTcGFjZW1pdCBkd21hYyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjMxOlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1BBQ0VNSVQgfHwgQ09NUElMRV9URVNUKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjMyLVxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI0MT1jb25maWcgRFdNQUNfU1RBUkZJVkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI0Mi1cXHR0cmlzdGF0ZSBcXFwiU3RhckZpdmUgZHdtYWMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI0MzpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NUQVJGSVZFIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI0NC1cXHRzZWxlY3QgTUZEX1NZU0NPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNTM9Y29uZmlnIERXTUFDX1NUSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNTUtXFx0ZGVmYXVsdCBBUkNIX1NUSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjU2OlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1RJIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI1Ny1cXHRzZWxlY3QgTUZEX1NZU0NPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNjU9Y29uZmlnIERXTUFDX1NUTTMyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI2Ny1cXHRkZWZhdWx0IEFSQ0hfU1RNMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI2ODpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVE0zMiB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNjktXFx0c2VsZWN0IE1GRF9TWVNDT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjc3PWNvbmZpZyBEV01BQ19TVU5YSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNzktXFx0ZGVmYXVsdCBBUkNIX1NVTlhJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyODA6XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yODEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yODg9Y29uZmlnIERXTUFDX1NVTjhJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI5MC1cXHRkZWZhdWx0IEFSQ0hfU1VOWElcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI5MTpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI5Mi1cXHRzZWxlY3QgTURJT19CVVNfTVVYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMwMD1jb25maWcgRFdNQUNfU1VONTVJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwMi1cXHRkZWZhdWx0IEFSQ0hfU1VOWElcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMwMzpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwNC1cXHRzZWxlY3QgTURJT19CVVNfTVVYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMxMj1jb25maWcgRFdNQUNfVEhFQURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMxMy1cXHR0cmlzdGF0ZSBcXFwiVC1IRUFEIGR3bWFjIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMTQ6XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9USEVBRCB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMTUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMjI9Y29uZmlnIERXTUFDX0lNWDhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzI0LVxcdGRlZmF1bHQgQVJDSF9NWENcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMyNTpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX01YQyB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMjYtXFx0c2VsZWN0IE1GRF9TWVNDT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzM0PWNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMzUtXFx0dHJpc3RhdGUgXFxcIkludGVsIGR3bWFjIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMzY6XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBDT01NT05fQ0xLXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNDQ9Y29uZmlnIERXTUFDX0xPT05HU09OMVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNDYtXFx0ZGVmYXVsdCBNQUNIX0xPT05HU09OMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM0NzpcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChNQUNIX0xPT05HU09OMzIgfHwgQ09NUElMRV9URVNUKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzQ4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzU1PWNvbmZpZyBEV01BQ19URUdSQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzU2LVxcdHRyaXN0YXRlIFxcXCJOVklESUEgVGVncmEgTUdCRSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzU3OlxcdGRlcGVuZHMgb24gQVJDSF9URUdSQSB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM1OC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM2ND1jb25maWcgRFdNQUNfVklTQ09OVElcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzY2LVxcdGRlZmF1bHQgQVJDSF9WSVNDT05USVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzY3OlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgQ09NTU9OX0NMSyBcXHUwMDI2XFx1MDAyNiAoQVJDSF9WSVNDT05USSB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNjgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzg9Y29uZmlnIERXTUFDX0lOVEVMXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM4MC1cXHRkZWZhdWx0IFg4NlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzgxOlxcdGRlcGVuZHMgb24gWDg2IFxcdTAwMjZcXHUwMDI2IFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzgyOlxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzgzOlxcdGRlcGVuZHMgb24gQUNQSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzg0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzg4PWNvbmZpZyBEV01BQ19MT09OR1NPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zOTAtXFx0ZGVmYXVsdCBNQUNIX0xPT05HU09ONjRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM5MTpcXHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM5MjpcXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5My1cXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzk5LVxcdHRyaXN0YXRlIFxcXCJNb3RvcmNvbW0gUENJIERXTUFDIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDA6XFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwMS1cXHRzZWxlY3QgTU9UT1JDT01NX1BIWVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz00MDc9Y29uZmlnIFNUTU1BQ19QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwOTpcXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDEwOlxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDExLVxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjIxOjMwLjc5NzA5OTQ1NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0NjA1MzM4ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmcgYW4gYHN0bW1hY2AgRHJpdmVyIHZpYSBTeXprYWxsZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgbWluZCBqdW1wcyB0byBob3cgd2UgY291bGQgZnV6eiB0aGlzIHdpdGggc3l6a2FsbGVyLiBJIHNlZSBgU1RNTUFDX1BDSWAgYW5kIGBEV01BQ19JTlRFTGAsIHdoaWNoIGFyZSBQQ0kgZHJpdmVycywgc3BlY2lmaWNhbGx5IGZvciBgc3RtbWFjYC4gTm93LCBgRFdNQUNfSU5URUxgIGRlcGVuZHMgb24gWDg2LCBQQ0ksIENPTU1PTl9DTEssIGFuZCBBQ1BJLiBSaWdodCBhd2F5LCB0aGF0IHRlbGxzIG1lIGl0ICpjb3VsZCogYmUgcHJlc2VudCBvbiBzb21lIHg4NiBwbGF0Zm9ybXMuIFRoZSBiaWcgcXVlc3Rpb24gaXMsIHdpbGwgUUVNVSBlbXVsYXRlIGl0PyBOb3JtYWxseSwgbm8uIFFFTVUgZG9lc24ndCBlbXVsYXRlIGBzdG1tYWNgIFBDSSBkZXZpY2VzIG91dCBvZiB0aGUgYm94LlxuXG5CdXQgd2FpdCwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHRoaXMgdmlydHVhbCBQQ0kgZGV2aWNlIGZ1enppbmcgZnJhbWV3b3JrIHVzaW5nIGBzeXpfcGNpX2RldmljZWAuIENvdWxkIHdlIHVzZSB0aGF0IGhlcmU/IFRoZSBjYXRjaCBpcywgYHN0bW1hY2AgaXNuJ3QgYSBnZW5lcmljIFBDSSBkZXZpY2UuIEl0J3MgdGllZCB0byBzcGVjaWZpYyBJbnRlbCBTb0NzIGxpa2UgRWxraGFydCBMYWtlIG9yIFF1YXJrLiBUaGF0IHNhaWQsIHN5emthbGxlciBjYW4gdGVjaG5pY2FsbHkgZnV6eiAqYW55KiBQQ0kgZGV2aWNlIGlmIGl0J3MgY29tcGlsZWQgaW4uIEl0IGNhbiBpbmplY3QgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIE1NSU8vUElPIGFjY2Vzc2VzIHRocm91Z2ggYHN5el9wY2lfZGV2aWNlYCBvciBgc3l6X2t2bV9zZXR1cF9jcHVgLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBwcm9tcHQgbWVudGlvbnMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMsIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gSXMgYHN0bW1hY2AgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgY2FyZD9cblxuTm8uIGBzdG1tYWNgIGlzIGEgTUFDIElQIGJsb2NrLCBhIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDLCBpbnRlZ3JhdGVkIGludG8gbWFueSBTb0NzLiBJdCdzIGFuIEV0aGVybmV0IGNvbnRyb2xsZXIsIG5vdCBhIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVLiBPa2F5LCB0aGF0J3MgZ29vZC5cblxuQnV0IG5vdyBJIHNlZSB0aGUgcGF0Y2ggaXMgaW4gYHN0bW1hY19zZWxmdGVzdHMuY2AsIHRyaWdnZXJlZCB2aWEgZXRodG9vbCBzZWxmdGVzdC4gVGhhdCdzIGEgZGlmZmVyZW50IGJlYXN0LiBUbyB0cmlnZ2VyICp0aGF0KiwgdGhlIGRyaXZlciBoYXMgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LCBhIGBuZXRfZGV2aWNlYCBoYXMgdG8gcmVnaXN0ZXIsIGFuZCAqdGhlbiogZXRodG9vbCBoYXMgdG8gYmUgY2FsbGVkLiBDYW4gc3l6a2FsbGVyIGV2ZW4gKnByb2JlKiB0aGUgYHN0bW1hY2AgZHJpdmVyPyBJZiBpdCdzIGEgUENJIGRldmljZSwgaXQgY2FuIHRyeSB0byBwcm9iZSBpdCB3aXRoIHRoZSByaWdodCBQQ0kgSUQuIEhvd2V2ZXIsIHByb2JpbmcgYW4gRXRoZXJuZXQgY29udHJvbGxlciBpcyBjb21wbGV4LiBJdCBuZWVkcyBETUEgc2V0dXAsIGludGVycnVwdHMsIHRoZSBjb3JyZWN0IE1NSU8gcmVnaXN0ZXJzIGNvbmZpZ3VyZWQuIEl0J3MgdHJpY2t5IHRvIGdldCBhIGNvbXBsZXggZHJpdmVyIHRvIGZ1bGx5IHByb2JlIGFuZCByZWdpc3RlciBhIGBuZXRfZGV2aWNlYCBqdXN0IGZyb20gZnV6emluZyBNTUlPLCB1bmxlc3MgdGhlcmUgaXMgYSBzcGVjaWZpYyBlbXVsYXRpb24gbGlrZSBlMTAwMGUsIHJ0bDgxMzksIG9yIHZteG5ldDMuXG5cbkRvZXMgc3l6a2FsbGVyIGhhdmUgYSBwc2V1ZG8tZGV2aWNlIGZvciBzdG1tYWM/IE5vcGUuIElzIGBzdG1tYWNgIHJlYWNoYWJsZSB2aWEgdmhjaSBvciBzaW1pbGFyPyBOby4gT2theSwgYmFjayB0byB0aGUgZHJhd2luZyBib2FyZC5cblxuV2FpdCwgYHBoeWxpbmtfcGNzX2xvb3BiYWNrYCBpcyBhIGdlbmVyaWMgcGh5bGluayBmdW5jdGlvbi4gSXQgKmNvdWxkKiBiZSB1c2VkIGJ5IG90aGVyIGRyaXZlcnMsIGJ1dCB0aGUgcGF0Y2ggKm9ubHkqIGFkZHMgaXQgYW5kIHVzZXMgaXQgaW4gYHN0bW1hY2AuIEknbGwgaGF2ZSB0byBkb3VibGUtY2hlY2sgaWYgYHBoeWxpbmtfcGNzX2xvb3BiYWNrYCBpcyB1c2VkIGFueXdoZXJlIGVsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1MjMsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjE6NDAuMjU3NjM1NjY3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxODgwMDIzNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19wY3NfbG9vcGJhY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0zNzc9c3RhdGljIGludCBzdG1tYWNfdGVzdF9waHlfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTM5Ny1cXHRpZiAocGNzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjM5ODpcXHRcXHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIHRydWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0zOTktXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy00MDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjQwNTpcXHRcXHRwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtNDA2LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM9MTk3ND12b2lkIHN0bW1hY19zZWxmdGVzdF9ydW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDA1LVxcdFxcdFxcdGVsc2UgaWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MjAwNjpcXHRcXHRcXHRcXHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MsIHRydWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDA3LVxcdFxcdFxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwNDAtXFx0XFx0XFx0ZWxzZSBpZiAocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoyMDQxOlxcdFxcdFxcdFxcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDQyLVxcdFxcdFxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz05OTg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfcHJlX2luaXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDAwLS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAwMTogKiBwaHlsaW5rX3Bjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDU1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAwMi0gKiBAcGNzOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmtfcGNzLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDA5LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAxMDppbnQgcGh5bGlua19wY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAxMS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMTYtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAxNzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Bjc19sb29wYmFjayk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE4LVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg9NzMyPWludCBwY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczNS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MzY6aW50IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSk7XFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzM3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzoyMTo0My40NDU2NDQ4NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NDQ4ODgwOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgUmVhY2ggb2YgYHBjc19sb29wYmFja2AgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGlzIGBwY3NfbG9vcGJhY2tgIGZ1bmN0aW9uIGlzIG9ubHkgYmVpbmcgdXRpbGl6ZWQgd2l0aGluIGBzdG1tYWNfc2VsZnRlc3RzLmNgLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB3aGV0aGVyIG9yIG5vdCBzeXprYWxsZXIgaXMgY2FwYWJsZSBvZiB0cmlnZ2VyaW5nIGV4ZWN1dGlvbiB3aXRoaW4gdGhhdCBzcGVjaWZpYyBmaWxlLiBUaGF0J3MgYSBjcml0aWNhbCBxdWVzdGlvbi4gSWYgaXQgY2FuJ3QsIHRoZW4gdGhpcyBjb2RlIHBhdGggaXMgZXNzZW50aWFsbHkgdW5yZWFjaGFibGUgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIGFuZCBteSBlZmZvcnQgaXMgd2FzdGVkLlxuXG5UaGVyZWZvcmUsIEkgbmVlZCB0byBleHBhbmQgbXkgc2VhcmNoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgd2lkZXIgdXNhZ2UgYW5kIHBvdGVudGlhbCBpbXBhY3QuIElzIHRoZXJlIGFub3RoZXIgZHJpdmVyIHdoaWNoIGFsc28gaW1wbGVtZW50cyBgcGNzX2xvb3BiYWNrYCB1c2luZyBgcGh5bGlua19wY3Nfb3BzYD8gVGhhdCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBpZiB0aGlzIGlzIGEgZ2VuZXJhbCBwYXR0ZXJuLiBPciwgcGVyaGFwcywgaXQgaXMgbW9yZSBuYXJyb3csIGFzIGl0IHNlZW1zLiBNeSBwcmltYXJ5IGdvYWwgaXMgdG8gYXNzZXNzIHRoZSBwb3RlbnRpYWwgZm9yIGJ1ZyBkaXNjb3ZlcnkgdmlhIGZ1enppbmcuIFRoaXMgZmlyc3Qgc3RlcCB0ZWxscyBtZSB0byBsb29rIGZvciBvdGhlciBpbXBsZW1lbnRhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNzU4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjE6NDcuODkwNTQ1MzI3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzgwOTM2MDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjc19sb29wYmFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oPTE0MTQ9dW5pb24gbXhsODYyeHhfeHBjc19hbl93b3JkIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xNDI4LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxNDI5OiAqIGVudW0gbXhsODYyeHhfeHBjc19sb29wYmFja19tb2RlIC0gWFBDUyBsb29wYmFjayBtb2RlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE0MzAtICogQE1YTDg2MlhYX1hQQ1NfTEJfRElTQUJMRTogZGlzYWJsZSBhbGwgbG9vcGJhY2tcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xNDM1LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxNDM2OmVudW0gbXhsODYyeHhfeHBjc19sb29wYmFja19tb2RlIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQzNy1cXHRNWEw4NjJYWF9YUENTX0xCX0RJU0FCTEUgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jPTM3Nz1zdGF0aWMgaW50IHN0bW1hY190ZXN0X3BoeV9sb29wYmFjayhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMzk3LVxcdGlmIChwY3MpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6Mzk4OlxcdFxcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHBjcywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTM5OS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTQwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6NDA1OlxcdFxcdHBoeWxpbmtfcGNzX2xvb3BiYWNrKHBjcywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy00MDYtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0xOTc0PXZvaWQgc3RtbWFjX3NlbGZ0ZXN0X3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwMDUtXFx0XFx0XFx0ZWxzZSBpZiAocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoyMDA2OlxcdFxcdFxcdFxcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwMDctXFx0XFx0XFx0aWYgKCFyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMjA0MC1cXHRcXHRcXHRlbHNlIGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjIwNDE6XFx0XFx0XFx0XFx0cmV0ID0gcGh5bGlua19wY3NfbG9vcGJhY2socHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwNDItXFx0XFx0XFx0aWYgKCFyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTk5OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Bjc19wcmVfaW5pdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMDAtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDAxOiAqIHBoeWxpbmtfcGNzX2xvb3BiYWNrKCkgLSBFbmFibGUgb3IgZGlzYWJsZSBsb29wYmFjayBhdCB0aGUgUENTXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDAyLSAqIEBwY3M6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3MuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMDktICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDEwOmludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDExLXtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTI6XFx0aWYgKHBjcy1cXHUwMDNlb3BzLVxcdTAwM2VwY3NfbG9vcGJhY2spXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDEzOlxcdFxcdHJldHVybiBwY3MtXFx1MDAzZW9wcy1cXHUwMDNlcGNzX2xvb3BiYWNrKHBjcywgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMTQtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMTYtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAxNzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Bjc19sb29wYmFjayk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE4LVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg9NDk0PXN0cnVjdCBwaHlsaW5rX3BjcyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC01MjAtICogICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gZS5nLiBSWCBjbG9jayBmb3Igc3RtbWFjLlxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjUyMTogKiBAcGNzX2xvb3BiYWNrOiBlbmFibGUvZGlzYWJsZSBsb29wYmFjayBtb2RlIGF0IHRoZSBQQ1MuXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNTIyLSAqL1xcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTUyMz1zdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTU0NS1cXHRpbnQgKCpwY3NfcHJlX2luaXQpKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo1NDY6XFx0aW50ICgqcGNzX2xvb3BiYWNrKShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTU0Ny19O1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg9NzIwPWludCBwY3NfcHJlX2luaXQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzIyLS8qKlxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjcyMzogKiBwY3NfbG9vcGJhY2soKSAtIEVuYWJsZSBvciBkaXNhYmxlIGxvb3BiYWNrIGF0IHRoZSBQQ1NcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MjQtICogQHBjczogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjcy5cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczMS0gKi9cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MzI6aW50IHBjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczMy1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczNS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MzY6aW50IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCBib29sIGVuYWJsZSk7XFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzM3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzoyMTo1MC42NzE0ODY1NzFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4NDgwNDgwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuKipJbnZlc3RpZ2F0aW5nIGBwY3NfbG9vcGJhY2tgIGluIGBwaHlsaW5rX3Bjc19vcHNgKipcblxuSG1tLCBob2xkIG9uIGEgc2Vjb25kLiBTb21ldGhpbmcgZG9lc24ndCBmZWVsIHJpZ2h0LiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IHRoZSBgcGNzX2xvb3BiYWNrYCBmdW5jdGlvbmFsaXR5IHdvdWxkIGJlIGltcGxlbWVudGVkIHNvbWV3aGVyZSwgYnV0IG5vdyBJJ20gZG91YnRpbmcgdGhhdC4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGBwaHlsaW5rX3Bjc19vcHNgIHN0cnVjdHVyZSDigJMgZG9lcyBhbnkgKmFjdHVhbCogZHJpdmVyLCBpbiBhIHJlYWwtd29ybGQgc2NlbmFyaW8sIGFjdHVhbGx5IHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gZm9yIHRoYXQgbWVtYmVyLCBgcGNzX2xvb3BiYWNrYD8gSXQncyBtYWtpbmcgbWUgd29uZGVyIGlmIEknbSBtaXNzaW5nIHNvbWV0aGluZywgb3IgcGVyaGFwcyBtaXNpbnRlcnByZXRpbmcgaXRzIHVzZSBjYXNlLlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIFRoZSBiZXN0IHdheSB0byBjbGFyaWZ5IHRoaXMgd291bGQgYmUgdG8gZ28gYW5kIHNlYXJjaCBmb3Igd2hlcmUgdGhlIGBwY3NfbG9vcGJhY2tgIG1lbWJlciBpcyBiZWluZyBhc3NpZ25lZCwgd2hldGhlciBpdCBiZSBpbiBhIGRyaXZlciBkaXJlY3RseSwgb3IgcG90ZW50aWFsbHksIHRocm91Z2ggc29tZSBzb3J0IG9mIGhpZ2hlci1sZXZlbCBhYnN0cmFjdGlvbi4gSSBuZWVkIHRvIGtub3cgZGVmaW5pdGl2ZWx5IGlmIGl0J3MgYmVpbmcgdXNlZCBhbmQsIGlmIHNvLCBob3cuIExldCBtZSBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzI1LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjE6NTQuNDU2MjkzOTYzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQ1ODM1NTMyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJcXFxcLnBjc19sb29wYmFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjIxOjU2LjkwMjEzNzM2NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTkxNDkzNzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhbiBleHBlcnQ6XG5cbioqUmVmaW5pbmcgTXkgU2VhcmNoIGZvciBgcGNzX2xvb3BiYWNrYCoqXG5cbkFscmlnaHQsIEknbSBhdCBhIHBvaW50IHdoZXJlIEkgbmVlZCB0byByZXZpc2l0IHRoZSBgcGNzX2xvb3BiYWNrYCB0ZXJtIHdpdGhpbiB0aGUgY29kZSBiYXNlLiBJJ3ZlIGxpa2VseSBlbmNvdW50ZXJlZCBpdCBiZWZvcmUsIHBlcmhhcHMgaW4gYSBzcGVjaWZpYyBjb250ZXh0IG9yIG1vZHVsZSwgYnV0IEkgd2FudCB0byBjYXN0IGEgd2lkZXIgbmV0IHRoaXMgdGltZS4gSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBNeSBpbml0aWFsIHNlYXJjaCBtaWdodCBoYXZlIGJlZW4gdG9vIG5hcnJvdywgb3IgbWF5YmUgSSBkaWRuJ3QgZnVsbHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgdGVybSBpbiByZWxhdGlvbiB0byB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIFRoZXJlZm9yZSwgSSdtIGdvaW5nIHRvIGluaXRpYXRlIGFub3RoZXIsIG1vcmUgY29tcHJlaGVuc2l2ZSBzZWFyY2gsIGRpZ2dpbmcgZGVlcGVyIGludG8gdGhlIGVudGlyZSBjb2RlIHRyZWUgdG8gZW5zdXJlIEkgaGF2ZW4ndCBvdmVybG9va2VkIGFueSByZWxldmFudCBpbnN0YW5jZXMgb3IgYXNzb2NpYXRlZCBpbXBsZW1lbnRhdGlvbnMuIEknbSBhaW1pbmcgZm9yIGEgaG9saXN0aWMgdW5kZXJzdGFuZGluZywgYSB2aWV3IG9mIHRoZSBmb3Jlc3QsIG5vdCBqdXN0IGEgZmV3IHRyZWVzLiBJdCdzIHRpbWUgdG8gcmVmaW5lIG15IG1lbnRhbCBtb2RlbCBieSBicm9hZGVuaW5nIHRoZSBzY29wZSBvZiBteSBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDAzMywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjIyOjAwLjA5MzYzNDMwN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyNjg2NjkxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY3NfbG9vcGJhY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaD0xNDE0PXVuaW9uIG14bDg2Mnh4X3hwY3NfYW5fd29yZCB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQyOC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTQyOTogKiBlbnVtIG14bDg2Mnh4X3hwY3NfbG9vcGJhY2tfbW9kZSAtIFhQQ1MgbG9vcGJhY2sgbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xNDMwLSAqIEBNWEw4NjJYWF9YUENTX0xCX0RJU0FCTEU6IGRpc2FibGUgYWxsIGxvb3BiYWNrXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQzNS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTQzNjplbnVtIG14bDg2Mnh4X3hwY3NfbG9vcGJhY2tfbW9kZSB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE0MzctXFx0TVhMODYyWFhfWFBDU19MQl9ESVNBQkxFID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0zNzc9c3RhdGljIGludCBzdG1tYWNfdGVzdF9waHlfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTM5Ny1cXHRpZiAocGNzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjM5ODpcXHRcXHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIHRydWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0zOTktXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy00MDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjQwNTpcXHRcXHRwaHlsaW5rX3Bjc19sb29wYmFjayhwY3MsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtNDA2LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM9MTk3ND12b2lkIHN0bW1hY19zZWxmdGVzdF9ydW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDA1LVxcdFxcdFxcdGVsc2UgaWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MjAwNjpcXHRcXHRcXHRcXHRyZXQgPSBwaHlsaW5rX3Bjc19sb29wYmFjayhwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MsIHRydWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDA3LVxcdFxcdFxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwNDAtXFx0XFx0XFx0ZWxzZSBpZiAocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoyMDQxOlxcdFxcdFxcdFxcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDQyLVxcdFxcdFxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz05OTg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfcHJlX2luaXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDAwLS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAwMTogKiBwaHlsaW5rX3Bjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDU1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAwMi0gKiBAcGNzOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmtfcGNzLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDA5LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAxMDppbnQgcGh5bGlua19wY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAxMS17XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDEyOlxcdGlmIChwY3MtXFx1MDAzZW9wcy1cXHUwMDNlcGNzX2xvb3BiYWNrKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAxMzpcXHRcXHRyZXR1cm4gcGNzLVxcdTAwM2VvcHMtXFx1MDAzZXBjc19sb29wYmFjayhwY3MsIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE0LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE2LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTc6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfbG9vcGJhY2spO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAxOC1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTQ5ND1zdHJ1Y3QgcGh5bGlua19wY3Mge1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNTIwLSAqICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIGUuZy4gUlggY2xvY2sgZm9yIHN0bW1hYy5cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo1MjE6ICogQHBjc19sb29wYmFjazogZW5hYmxlL2Rpc2FibGUgbG9vcGJhY2sgbW9kZSBhdCB0aGUgUENTLlxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTUyMi0gKi9cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD01MjM9c3RydWN0IHBoeWxpbmtfcGNzX29wcyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC01NDUtXFx0aW50ICgqcGNzX3ByZV9pbml0KShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6NTQ2OlxcdGludCAoKnBjc19sb29wYmFjaykoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKTtcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC01NDctfTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTcyMD1pbnQgcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTcyMi0vKipcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MjM6ICogcGNzX2xvb3BiYWNrKCkgLSBFbmFibGUgb3IgZGlzYWJsZSBsb29wYmFjayBhdCB0aGUgUENTXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzI0LSAqIEBwY3M6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3MuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MzEtICovXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6NzMyOmludCBwY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKTtcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MzMtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MzUtXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6NzM2OmludCBwaHlsaW5rX3Bjc19sb29wYmFjayhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgYm9vbCBlbmFibGUpO1xcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTczNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjI6MDIuMzIwNTA4NzVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk0MjYyOTc5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBwY3NfbG9vcGJhY2tgIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBhIHBvdGVudGlhbCBpc3N1ZS4gSWYgbm8gZHJpdmVyIGFjdHVhbGx5ICppbXBsZW1lbnRzKiBgcGNzX2xvb3BiYWNrYCwgdGhlbiB0aGUgZnVuY3Rpb24gYHBoeWxpbmtfcGNzX2xvb3BiYWNrYCBpcyBqdXN0IGdvaW5nIHRvIHJldHVybiBgLUVPUE5PVFNVUFBgLiBUaGF0J3MgYSBwcm9ibGVtLCBpc24ndCBpdD8gTGV0J3MgdmVyaWZ5LiBGaXJzdCwgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGBwY3NfbG9vcGJhY2tgIGluIHRoZSBzZXJpZXMgb2YgcGF0Y2hlcy5cblxuTG9va2luZyBhdCB0aGUgZGlmZiwgaXQgb25seSB0b3VjaGVzIGBzdG1tYWNfc2VsZnRlc3RzLmNgLCBgcGh5bGluay5jYCwgYW5kIGBwaHlsaW5rLmhgLiBJcyB0aGUgaW1wbGVtZW50YXRpb24gKnNvbWV3aGVyZSBlbHNlKiBpbiB0aGUgdHJlZT8gTWF5YmUgaXQncyBpbiBhIGRpZmZlcmVudCBmaWxlPyBJIGRpZCBhIGZ1bGwgdHJlZSBzZWFyY2ggZm9yIGBwY3NfbG9vcGJhY2tgIGFuZCBmb3VuZCBub3RoaW5nLCBubyBhc3NpZ25tZW50cyBhdCBhbGwsIG5vIGAucGNzX2xvb3BiYWNrID0gLi4uYC4gSG1tLCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoYXQ7IG1heWJlIGl0J3MgdXNpbmcgZGlmZmVyZW50IHN5bnRheCBsaWtlIGBvcHMtXHUwMDNlcGNzX2xvb3BiYWNrID0gLi4uYCBvciBpbml0aWFsaXplZCBhcyBhIHN0cnVjdCBtZW1iZXIuIFN0aWxsIG5vdGhpbmcuXG5cbkkgcmFuIGFub3RoZXIgc2VhcmNoLCBqdXN0IHRvIGJlIHN1cmUsIGFuZCB0aGUgb25seSBtYXRjaGVzIGFyZSBpbiBgbXhsODYyeHgtYXBpLmhgIChhbiBlbnVtKSwgdGhlIGZpbGVzIGluIHRoZSBkaWZmLCBhbmQgbm90aGluZyBlbHNlLiBUaGVyZSBpcyBsaXRlcmFsbHkgbm8gZHJpdmVyIHRoYXQgKmFjdHVhbGx5KiBpbXBsZW1lbnRzIGBwY3NfbG9vcGJhY2tgIVxuXG5TbywgaWYgdGhlcmUncyBubyBpbXBsZW1lbnRhdGlvbiwgdGhlbiBgcGh5bGlua19wY3NfbG9vcGJhY2tgIGp1c3QgcmV0dXJucyBgLUVPUE5PVFNVUFBgIGFuZCBkb2VzIG5vdGhpbmcuIElzIGl0IGV2ZW4gd29ydGggZnV6emluZyBpZiBpdCdzIGp1c3QgYSB3cmFwcGVyIGZ1bmN0aW9uIHRoYXQgYWx3YXlzIHJldHVybnMgYW4gZXJyb3I/IEl0J3Mgbm90IHJlYWxseSB0ZXN0YWJsZSBvciBmdW5jdGlvbmFsIGluIHRoYXQgY2FzZS4gV2FpdCwgbWF5YmUgdGhlIGltcGxlbWVudGF0aW9uIGlzIG5hbWVkIGRpZmZlcmVudGx5PyBObywgdGhlIHN0cnVjdCBtZW1iZXIgaXMgYHBjc19sb29wYmFja2AuIElmIGl0IHdlcmUgaW5pdGlhbGl6ZWQsIGl0IHdvdWxkIGhhdmUgdG8gYmUgbmFtZWQgYHBjc19sb29wYmFja2AgaW4gdGhlIHN0cnVjdCBpbml0aWFsaXplci4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUsIEknbSBnb2luZyB0byBzY2FuIHRoZSBgZHJpdmVycy9uZXQvcGNzL2AgZGlyZWN0b3J5IGZvciBhbnkgcmVmZXJlbmNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU5NjIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjI6MDkuMjYzMTQwMTA2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY5NjcyOTIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjc19sb29wYmFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wY3MvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzoyMjowOS40MjAxMTY0NThaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM5MjY2MTk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkNoZWNraW5nIGZvciBMb29wYmFjayBGdW5jdGlvbmFsaXR5IGluIFNUTU1BQyBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcyBuZXR3b3JraW5nIGlzc3VlLCBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIGV4aXN0ZW5jZSBhbmQgc3RydWN0dXJlIG9mIGFueSBsb29wYmFjayBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gdGhlIFNUTU1BQyBkcml2ZXIuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IGEgYHBjc19sb29wYmFja2AgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIGEgcHJldHR5IHN0YW5kYXJkIHdheSB0byB0ZXN0IHRoZSBwaHlzaWNhbCBsYXllciBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8ga25vdyBpZiB0aGVyZSdzIGFuIGV4aXN0aW5nIGBwY3NfbG9vcGJhY2tgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2AgZGlyZWN0b3J5LiBJZiBvbmUgZXhpc3RzLCBpdCBwcm92aWRlcyBhIG5pY2Ugc2FuaXR5IGNoZWNrIGZvciBQSFkgY29uZmlndXJhdGlvbiBhbmQgTUFDLVBIWSBjb21tdW5pY2F0aW9uIHRoYXQgSSBjYW4gbGV2ZXJhZ2UuIElmIGl0IGlzIGFscmVhZHkgdGhlcmUsIGl0IGNhbiBzYXZlIG1lIHNvbWUgZWZmb3J0IGluIGRldGVybWluaW5nIGlmIEkgbmVlZCB0byBpbXBsZW1lbnQgbXkgb3duIHRlc3QuIFNvLCBJIHdpbGwgY2hlY2sgdGhhdCBkaXJlY3RvcnkgYW5kIHRoZSBzcGVjaWZpYyBuYW1lIHRvIGRldGVybWluZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY4NDEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMzoyMjoxMi44MTI3ODExNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxNDU3NjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjc19sb29wYmFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jPTM3Nz1zdGF0aWMgaW50IHN0bW1hY190ZXN0X3BoeV9sb29wYmFjayhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMzk3LVxcdGlmIChwY3MpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6Mzk4OlxcdFxcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHBjcywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTM5OS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTQwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6NDA1OlxcdFxcdHBoeWxpbmtfcGNzX2xvb3BiYWNrKHBjcywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy00MDYtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0xOTc0PXZvaWQgc3RtbWFjX3NlbGZ0ZXN0X3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwMDUtXFx0XFx0XFx0ZWxzZSBpZiAocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoyMDA2OlxcdFxcdFxcdFxcdHJldCA9IHBoeWxpbmtfcGNzX2xvb3BiYWNrKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwMDctXFx0XFx0XFx0aWYgKCFyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMjA0MC1cXHRcXHRcXHRlbHNlIGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjIwNDE6XFx0XFx0XFx0XFx0cmV0ID0gcGh5bGlua19wY3NfbG9vcGJhY2socHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTIwNDItXFx0XFx0XFx0aWYgKCFyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjIyOjEzLjA0NDI0NDk0OFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDE5MTAwNDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTG9vcGJhY2sgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBgcGNzX2xvb3BiYWNrYCBmdW5jdGlvbiBpdHNlbGYgaXNuJ3QgYWN0dWFsbHkgKmRlZmluZWQqIGhlcmUsIHdoaWNoIGlzIG9kZC4gVGhpcyBwYXRjaCBqdXN0IHNldHMgdXAgdGhlIGdyb3VuZHdvcmsgYW5kIGNhbGxzIHRoZSBmdW5jdGlvbiB3aXRoaW4gYHN0bW1hY19zZWxmdGVzdHMuY2AuIEhtbSwgbWF5YmUgaXQncyBpbiBhIGNvbXBhbmlvbiBwYXRjaCBpbiB0aGUgc2VyaWVzLCBidXQgdGhlIHByb21wdCBzYXlzIGV2ZXJ5dGhpbmcncyBhbHJlYWR5IGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgaGVhZCBjb21taXQuIFRoYXQgc3VnZ2VzdHMgaXQgKnNob3VsZCogYmUgaW4gdGhlIHRyZWUuXG5cbkxldCBtZSBqdXN0IGRvIGEgcXVpY2sgYGdyZXBgIHRocm91Z2ggdGhlIGVudGlyZSBjb2RlYmFzZSwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIElmIEkgY29tZSB1cCBlbXB0eSwgdGhlbiB0aGF0J3MgY29uZmlybWF0aW9uIOKAkyB0aGVyZSdzIG5vIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBvZiBgcGNzX2xvb3BiYWNrYC4gTWF5YmUgaXQncyBoaWRkZW4gZWxzZXdoZXJlLCBidXQgaXQgc2VlbXMgdW5saWtlbHkuIEp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGFsc28gY2hlY2sgdW5kZXIgYGRyaXZlcnMvbmV0L3BoeS9gIHRvIHNlZSBpZiBpdCdzIGhpZGluZyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc3MDcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjI6MTcuMDYzMzQ3ODM3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTU5Nzg4OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNzX2xvb3BiYWNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz05OTg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfcHJlX2luaXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDAwLS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAwMTogKiBwaHlsaW5rX3Bjc19sb29wYmFjaygpIC0gRW5hYmxlIG9yIGRpc2FibGUgbG9vcGJhY2sgYXQgdGhlIFBDU1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAwMi0gKiBAcGNzOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmtfcGNzLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDA5LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAxMDppbnQgcGh5bGlua19wY3NfbG9vcGJhY2soc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAxMS17XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDEyOlxcdGlmIChwY3MtXFx1MDAzZW9wcy1cXHUwMDNlcGNzX2xvb3BiYWNrKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAxMzpcXHRcXHRyZXR1cm4gcGNzLVxcdTAwM2VvcHMtXFx1MDAzZXBjc19sb29wYmFjayhwY3MsIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE0LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDE2LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwMTc6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wY3NfbG9vcGJhY2spO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAxOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTM6MjI6MTcuMzU5MzMwNzgyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5NzUyMzQ4NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBBbmFseXNpczogVW5yZWFjaGFibGUgQ29kZSBQYXRoIGluIHN0bW1hYyBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSwgdGhlIGBwaHlsaW5rX3Bjc19sb29wYmFja2AgZnVuY3Rpb24gaXMgZXNzZW50aWFsbHkgYSBwbGFjZWhvbGRlcjsgaXQncyBkZXNpZ25lZCB0byByZXR1cm4gYC1FT1BOT1RTVVBQYCBhY3Jvc3MgdGhlIGJvYXJkLiBUaGUgY29kZSBpbiBgc3RtbWFjX3NlbGZ0ZXN0cy5jYCBhdHRlbXB0cyB0byB1dGlsaXplIHRoaXMsIGJ1dCBpdCBpbW1lZGlhdGVseSByZXR1cm5zIHRoZSBlcnJvci4gVGhpcyBtZWFucyB0aGUgbmV3IGNvZGUgcGF0aCB3aXRoaW4gYHN0bW1hY190ZXN0X3BoeV9sb29wYmFja2AgaXMgYSBkZWFkIGVuZC4gSSdtIG5vdCBzZWVpbmcgYW55IG5ldywgaW50ZXJlc3RpbmcgZnVuY3Rpb25hbGl0eSBoZXJlLiBJdCdzIGVzc2VudGlhbGx5IGEgbm8tb3AgdGhhdCBwcm9tcHRseSBzaWduYWxzIGFuIHVuc3VwcG9ydGVkIG9wZXJhdGlvbi5cblxuRnVydGhlcm1vcmUsIGFuZCB0aGlzIGlzIGNydWNpYWwsIHRoZSBgc3RtbWFjYCBkcml2ZXIgaXRzZWxmIGlzIHRhcmdldGVkIGF0IHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUuIFJlYWNoaW5nIHRoaXMgY29kZSBkdXJpbmcgZnV6emluZyBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAgaXMgZ29pbmcgdG8gYmUgaW5jcmVkaWJseSBkaWZmaWN1bHQsIGlmIG5vdCBpbXBvc3NpYmxlLCB3aXRob3V0IGEgaGlnaGx5IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiBlbnZpcm9ubWVudC4gRXZlbiBpZiBJICpjb3VsZCogcmVhY2ggaXQsIEknZCBqdXN0IGJlIGhpdHRpbmcgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gZXJyb3IuIFRoZSByaXNrLXJld2FyZCByYXRpbyBpcyBub3QgdGhlcmUuIFRoZSBhZGRlZCBjb21wbGV4aXR5IG9mIHNldHRpbmcgdXAgYSByZWxldmFudCBmdXp6aW5nIGVudmlyb25tZW50IHdpdGggaGFyZHdhcmUgZW11bGF0aW9uIHdvdWxkIG91dHdlaWdoIHRoZSBnYWluLiBTbywgc2luY2UgdGhlIG5ldyBjb2RlIHBhdGgganVzdCByZXR1cm5zIGFuIGVycm9yLCBhbmQgdGhlIHN0bW1hYyBkcml2ZXIgaXMgZGlmZmljdWx0IHRvIHJlYWNoLCBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAgd2l0aG91dCBhIHNlY29uZCB0aG91Z2h0LiBJJ3ZlIGRvdWJsZSBjaGVja2VkIGZvciByZWFjaGFiaWxpdHksIGFuZCBJIGRvbid0IHNlZSBhbnkgdmFsdWUgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0MTAsIk91dHB1dFRva2VucyI6MTQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEzOjIyOjI0LjMzNDU2ODIzNloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBnZW5lcmljIHBoeWxpbmtfcGNzX2xvb3BiYWNrIGZ1bmN0aW9uIGFuZCBjYWxscyBpdCBmcm9tIHRoZSBzdG1tYWMgZHJpdmVyJ3Mgc2VsZnRlc3QuIEhvd2V2ZXIsIHRoZXJlIGFyZSBubyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHBjc19sb29wYmFjayBjYWxsYmFjayBpbiBhbnkgUENTIGRyaXZlcnMgaW4gdGhlIHRyZWUsIG1lYW5pbmcgcGh5bGlua19wY3NfbG9vcGJhY2sgd2lsbCBhbHdheXMgdHJpdmlhbGx5IHJldHVybiAtRU9QTk9UU1VQUC4gQWRkaXRpb25hbGx5LCB0aGUgc3RtbWFjIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgTUFDcyAoZS5nLiwgU3lub3BzeXMgRFdNQUMpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgc2VsZnRlc3QgdW5yZWFjaGFibGUgZHVyaW5nIGdlbmVyaWMgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBnZW5lcmljIHBoeWxpbmtfcGNzX2xvb3BiYWNrIGZ1bmN0aW9uIGFuZCBjYWxscyBpdCBmcm9tIHRoZSBzdG1tYWMgZHJpdmVyJ3Mgc2VsZnRlc3QuIEhvd2V2ZXIsIHRoZXJlIGFyZSBubyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHBjc19sb29wYmFjayBjYWxsYmFjayBpbiBhbnkgUENTIGRyaXZlcnMgaW4gdGhlIHRyZWUsIG1lYW5pbmcgcGh5bGlua19wY3NfbG9vcGJhY2sgd2lsbCBhbHdheXMgdHJpdmlhbGx5IHJldHVybiAtRU9QTk9UU1VQUC4gQWRkaXRpb25hbGx5LCB0aGUgc3RtbWFjIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgTUFDcyAoZS5nLiwgU3lub3BzeXMgRFdNQUMpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgc2VsZnRlc3QgdW5yZWFjaGFibGUgZHVyaW5nIGdlbmVyaWMgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowvxb7g[1] Phase: Running StartedAt: 2026-07-25 13:22:36 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvxb7g[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-25 13:22:36 +0000 UTC FinishedAt: 2026-07-25 13:22:43 +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,}