Name: series-workflowz4j8n Phase: Failed StartedAt: 2026-07-01 15:25:57 +0000 UTC FinishedAt: 2026-07-01 15:33:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4j8n[0] Phase: Succeeded StartedAt: 2026-07-01 15:25:57 +0000 UTC FinishedAt: 2026-07-01 15:33:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4j8n[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 15:25:57 +0000 UTC FinishedAt: 2026-07-01 15:33:38 +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+CgkJCTx0ZD4yMDI2LzA3LzAxIDE1OjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBpNDBlIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNTozMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGVlMTdhZmU0NDU3ZDk2YjkyMjllODllMDc5MDgzZGQ2ODVlNTFhYTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDE1OjMyOjM4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL2k0MGUucnN0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvaTQwZS5yc3RcbmluZGV4IDUxYzg4N2YwZGM4MzNiLi4yY2VhOThiNjMxYmFhMSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL2k0MGUucnN0XG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9pNDBlLnJzdFxuQEAgLTQwLDYgJiM0Mzs0MCwyNiBAQCBQYXJhbWV0ZXJzXG4gXG4gICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYDBgYCAoaW50ZXJuYWwgY2FsY3VsYXRpb24gaXMgdXNlZCkuXG4gXG4mIzQzOy4uIGxpc3QtdGFibGU6OiBEcml2ZXIgc3BlY2lmaWMgcGFyYW1ldGVycyBpbXBsZW1lbnRlZFxuJiM0MzsgICAgOndpZHRoczogNSA1IDkwXG4mIzQzO1xuJiM0MzsgICAgKiAtIE5hbWVcbiYjNDM7ICAgICAgLSBNb2RlXG4mIzQzOyAgICAgIC0gRGVzY3JpcHRpb25cbiYjNDM7ICAgICogLSBgYGF0cl9zYW1wbGVfcmF0ZWBgXG4mIzQzOyAgICAgIC0gcnVudGltZVxuJiM0MzsgICAgICAtIENvbnRyb2xzIGhvdyBmcmVxdWVudGx5IEZsb3cgRGlyZWN0b3IgQVRSIHVwZGF0ZXMgZmxvdyBzdGVlcmluZ1xuJiM0MzsgICAgICAgIGluZm9ybWF0aW9uIGZvciBhY3RpdmUgVENQIGZsb3dzLlxuJiM0MztcbiYjNDM7ICAgICAgICBBVFIgcHJvZ3JhbXMgRmxvdyBEaXJlY3RvciBlbnRyaWVzIGJhc2VkIG9uIHNhbXBsZWQgdHJhbnNtaXR0ZWRcbiYjNDM7ICAgICAgICBwYWNrZXRzLiBUaGUgc2FtcGxpbmcgaW50ZXJ2YWwgaXMgc3BlY2lmaWVkIGFzIHRoZSBudW1iZXIgb2ZcbiYjNDM7ICAgICAgICB0cmFuc21pdHRlZCBwYWNrZXRzIGJldHdlZW4gQVRSIHVwZGF0ZXMuXG4mIzQzO1xuJiM0MzsgICAgICAgIExvd2VyIHZhbHVlcyBpbmNyZWFzZSBGbG93IERpcmVjdG9yIHByb2dyYW1taW5nIGFjdGl2aXR5LCB3aGlsZVxuJiM0MzsgICAgICAgIGhpZ2hlciB2YWx1ZXMgcmVkdWNlIHRoZSB1cGRhdGUgZnJlcXVlbmN5LlxuJiM0MztcbiYjNDM7ICAgICAgICBTZXR0aW5nIHRvIGBgMGBgIGRpc2FibGVzIEFUUiBzYW1wbGluZyAobm8gZmlsdGVycyB3aWxsIGJlIHByb2dyYW1tZWQpXG4mIzQzOyAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGAyMGBgLlxuIFxuIEluZm8gdmVyc2lvbnNcbiA9PT09PT09PT09PT09XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaFxuaW5kZXggODNlNzgwOTE5YWM5N2YuLjJmMjY0Y2JjOTBlZmUzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oXG5AQCAtNDg3LDYgJiM0Mzs0ODcsNyBAQCBzdHJ1Y3QgaTQwZV9wZiB7XG4gXHR1MTYgcnNzX3NpemVfbWF4OyAgICAgICAgICAvKiBIVyBkZWZpbmVkIG1heCBSU1MgcXVldWVzICovXG4gXHR1MTYgZmRpcl9wZl9maWx0ZXJfY291bnQ7ICAvKiBudW0gb2YgZ3VhcmFudGVlZCBmaWx0ZXJzIGZvciB0aGlzIFBGICovXG4gXHR1MTYgbnVtX2FsbG9jX3ZzaTsgICAgICAgICAvKiBudW0gVlNJcyB0aGlzIGRyaXZlciBzdXBwb3J0cyAqL1xuJiM0MztcdHUzMiBhdHJfc2FtcGxlX3JhdGU7XG4gXHRib29sIHdvbF9lbjtcbiBcbiBcdHN0cnVjdCBobGlzdF9oZWFkIGZkaXJfZmlsdGVyX2xpc3Q7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmNcbmluZGV4IDIyOTE3OWNjYzEzMTllLi5jZjQ4N2VmZGQ4MDNkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmNcbkBAIC0zMywxMiAmIzQzOzMzLDQ4IEBAIHN0YXRpYyBpbnQgaTQwZV9tYXhfbWFjX3Blcl92Zl9nZXQoc3RydWN0IGRldmxpbmsgKmRldmxpbmssXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgaTQwZV9hdHJfc2FtcGxlX3JhdGVfc2V0KHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLFxuJiM0MztcdFx0XHRcdCAgICB1MzIgaWQsXG4mIzQzO1x0XHRcdFx0ICAgIHN0cnVjdCBkZXZsaW5rX3BhcmFtX2dzZXRfY3R4ICpjdHgsXG4mIzQzO1x0XHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBpNDBlX3BmICpwZiA9IGRldmxpbmtfcHJpdihkZXZsaW5rKTtcbiYjNDM7XHR1MzIgc2FtcGxlX3JhdGUgPSBjdHgtXHUwMDNldmFsLnZ1MzI7XG4mIzQzO1xuJiM0MztcdHBmLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZSA9IHNhbXBsZV9yYXRlO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGk0MGVfYXRyX3NhbXBsZV9yYXRlX2dldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcbiYjNDM7XHRcdFx0XHQgICAgdTMyIGlkLFxuJiM0MztcdFx0XHRcdCAgICBzdHJ1Y3QgZGV2bGlua19wYXJhbV9nc2V0X2N0eCAqY3R4LFxuJiM0MztcdFx0XHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaTQwZV9wZiAqcGYgPSBkZXZsaW5rX3ByaXYoZGV2bGluayk7XG4mIzQzO1xuJiM0MztcdGN0eC1cdTAwM2V2YWwudnUzMiA9IHBmLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2VudW0gaTQwZV9kbF9wYXJhbV9pZCB7XG4mIzQzO1x0STQwRV9ERVZMSU5LX1BBUkFNX0lEX0JBU0UgPSBERVZMSU5LX1BBUkFNX0dFTkVSSUNfSURfTUFYLFxuJiM0MztcdEk0MEVfREVWTElOS19QQVJBTV9JRF9BVFJfU0FNUExFX1JBVEUsXG4mIzQzO307XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19wYXJhbSBpNDBlX2RsX3BhcmFtc1tdID0ge1xuIFx0REVWTElOS19QQVJBTV9HRU5FUklDKE1BWF9NQUNfUEVSX1ZGLFxuIFx0XHRcdCAgICAgIEJJVChERVZMSU5LX1BBUkFNX0NNT0RFX1JVTlRJTUUpLFxuIFx0XHRcdCAgICAgIGk0MGVfbWF4X21hY19wZXJfdmZfZ2V0LFxuIFx0XHRcdCAgICAgIGk0MGVfbWF4X21hY19wZXJfdmZfc2V0LFxuIFx0XHRcdCAgICAgIE5VTEwpLFxuJiM0MztcdERFVkxJTktfUEFSQU1fRFJJVkVSKEk0MEVfREVWTElOS19QQVJBTV9JRF9BVFJfU0FNUExFX1JBVEUsXG4mIzQzO1x0XHRcdCAgICAgXCYjMzQ7YXRyX3NhbXBsZV9yYXRlXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgIERFVkxJTktfUEFSQU1fVFlQRV9VMzIsXG4mIzQzO1x0XHRcdCAgICAgQklUKERFVkxJTktfUEFSQU1fQ01PREVfUlVOVElNRSksXG4mIzQzO1x0XHRcdCAgICAgaTQwZV9hdHJfc2FtcGxlX3JhdGVfZ2V0LFxuJiM0MztcdFx0XHQgICAgIGk0MGVfYXRyX3NhbXBsZV9yYXRlX3NldCxcbiYjNDM7XHRcdFx0ICAgICBOVUxMKSxcbiB9O1xuIFxuIHN0YXRpYyB2b2lkIGk0MGVfaW5mb19nZXRfZHNuKHN0cnVjdCBpNDBlX3BmICpwZiwgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5pbmRleCBhMDQ2ODMwMDRhNTY3Ny4uNGQ0ZDRiMDdhMGYzYTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5AQCAtMzQ1NCwxMiAmIzQzOzM0NTQsNyBAQCBzdGF0aWMgaW50IGk0MGVfY29uZmlndXJlX3R4X3Jpbmcoc3RydWN0IGk0MGVfcmluZyAqcmluZylcbiBcdFx0cmluZy1cdTAwM2V4c2tfcG9vbCA9IGk0MGVfeHNrX3Bvb2wocmluZyk7XG4gXG4gXHQvKiBzb21lIEFUUiByZWxhdGVkIHR4IHJpbmcgaW5pdCAqL1xuLVx0aWYgKHRlc3RfYml0KEk0MEVfRkxBR19GRF9BVFJfRU5BLCB2c2ktXHUwMDNlYmFjay1cdTAwM2VmbGFncykpIHtcbi1cdFx0cmluZy1cdTAwM2VhdHJfc2FtcGxlX3JhdGUgPSBJNDBFX0RFRkFVTFRfQVRSX1NBTVBMRV9SQVRFO1xuLVx0XHRyaW5nLVx1MDAzZWF0cl9jb3VudCA9IDA7XG4tXHR9IGVsc2Uge1xuLVx0XHRyaW5nLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZSA9IDA7XG4tXHR9XG4mIzQzO1x0cmluZy1cdTAwM2VhdHJfY291bnQgPSAwO1xuIFxuIFx0LyogY29uZmlndXJlIFhQUyAqL1xuIFx0aTQwZV9jb25maWdfeHBzX3R4X3JpbmcocmluZyk7XG5AQCAtMTI3NDIsNiAmIzQzOzEyNzM3LDggQEAgc3RhdGljIGludCBpNDBlX3N3X2luaXQoc3RydWN0IGk0MGVfcGYgKnBmKVxuIFx0XHR9XG4gXHR9XG4gXG4mIzQzO1x0cGYtXHUwMDNlYXRyX3NhbXBsZV9yYXRlID0gSTQwRV9ERUZBVUxUX0FUUl9TQU1QTEVfUkFURTtcbiYjNDM7XG4gXHRpZiAoKHBmLVx1MDAzZWh3LmZ1bmNfY2Fwcy5mZF9maWx0ZXJzX2d1YXJhbnRlZWQgXHUwMDNlIDApIHx8XG4gXHQgICAgKHBmLVx1MDAzZWh3LmZ1bmNfY2Fwcy5mZF9maWx0ZXJzX2Jlc3RfZWZmb3J0IFx1MDAzZSAwKSkge1xuIFx0XHRzZXRfYml0KEk0MEVfRkxBR19GRF9BVFJfRU5BLCBwZi1cdTAwM2VmbGFncyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmNcbmluZGV4IDg5NGYyZDA2ZDM5ZDA3Li5iMzZlMGZjOWIzMWQyOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmNcbkBAIC0yODc5LDcgJiM0MzsyODc5LDcgQEAgc3RhdGljIHZvaWQgaTQwZV9hdHIoc3RydWN0IGk0MGVfcmluZyAqdHhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0cmV0dXJuO1xuIFxuIFx0LyogaWYgc2FtcGxpbmcgaXMgZGlzYWJsZWQgZG8gbm90aGluZyAqL1xuLVx0aWYgKCF0eF9yaW5nLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZSlcbiYjNDM7XHRpZiAoIXBmLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZSlcbiBcdFx0cmV0dXJuO1xuIFxuIFx0LyogQ3VycmVudGx5IG9ubHkgSVB2NC9JUHY2IHdpdGggVENQIGlzIHN1cHBvcnRlZCAqL1xuQEAgLTI5MzEsNyAmIzQzOzI5MzEsNyBAQCBzdGF0aWMgdm9pZCBpNDBlX2F0cihzdHJ1Y3QgaTQwZV9yaW5nICp0eF9yaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0aWYgKCF0aC1cdTAwM2VmaW4gXHUwMDI2XHUwMDI2XG4gXHQgICAgIXRoLVx1MDAzZXN5biBcdTAwMjZcdTAwMjZcbiBcdCAgICAhdGgtXHUwMDNlcnN0IFx1MDAyNlx1MDAyNlxuLVx0ICAgICh0eF9yaW5nLVx1MDAzZWF0cl9jb3VudCBcdTAwM2MgdHhfcmluZy1cdTAwM2VhdHJfc2FtcGxlX3JhdGUpKVxuJiM0MztcdCAgICAodHhfcmluZy1cdTAwM2VhdHJfY291bnQgXHUwMDNjIHBmLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZSkpXG4gXHRcdHJldHVybjtcbiBcbiBcdHR4X3JpbmctXHUwMDNlYXRyX2NvdW50ID0gMDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaFxuaW5kZXggMWU1ZmQ2M2Q0N2Y0N2MuLmY0MTc5OTE0ODdlYWM5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaFxuQEAgLTM2Nyw4ICYjNDM7MzY3LDcgQEAgc3RydWN0IGk0MGVfcmluZyB7XG4gXHR1MTYgbmV4dF90b19jbGVhbjtcbiBcdHUxNiB4ZHBfdHhfYWN0aXZlO1xuIFxuLVx0dTggYXRyX3NhbXBsZV9yYXRlO1xuLVx0dTggYXRyX2NvdW50O1xuJiM0MztcdHUzMiBhdHJfY291bnQ7XG4gXG4gXHRib29sIHJpbmdfYWN0aXZlO1x0XHQvKiBpcyByaW5nIG9ubGluZSBvciBub3QgKi9cbiBcdGJvb2wgYXJtX3diO1x0XHQvKiBkbyBzb21ldGhpbmcgdG8gYXJtIHdyaXRlIGJhY2sgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNTozMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgaTQwZSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0b3IgZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVlMTdhZmU0NDU3ZDk2YjkyMjllODllMDc5MDgzZGQ2ODVlNTFhYTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxIDE1OjMyOjM4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvaTQwZS5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9pNDBlLnJzdAppbmRleCA1MWM4ODdmMGRjODMzYi4uMmNlYTk4YjYzMWJhYTEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL2k0MGUucnN0CiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL2k0MGUucnN0CkBAIC00MCw2ICYjNDM7NDAsMjYgQEAgUGFyYW1ldGVycwogCiAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgMGBgIChpbnRlcm5hbCBjYWxjdWxhdGlvbiBpcyB1c2VkKS4KIAomIzQzOy4uIGxpc3QtdGFibGU6OiBEcml2ZXIgc3BlY2lmaWMgcGFyYW1ldGVycyBpbXBsZW1lbnRlZAomIzQzOyAgICA6d2lkdGhzOiA1IDUgOTAKJiM0MzsKJiM0MzsgICAgKiAtIE5hbWUKJiM0MzsgICAgICAtIE1vZGUKJiM0MzsgICAgICAtIERlc2NyaXB0aW9uCiYjNDM7ICAgICogLSBgYGF0cl9zYW1wbGVfcmF0ZWBgCiYjNDM7ICAgICAgLSBydW50aW1lCiYjNDM7ICAgICAgLSBDb250cm9scyBob3cgZnJlcXVlbnRseSBGbG93IERpcmVjdG9yIEFUUiB1cGRhdGVzIGZsb3cgc3RlZXJpbmcKJiM0MzsgICAgICAgIGluZm9ybWF0aW9uIGZvciBhY3RpdmUgVENQIGZsb3dzLgomIzQzOwomIzQzOyAgICAgICAgQVRSIHByb2dyYW1zIEZsb3cgRGlyZWN0b3IgZW50cmllcyBiYXNlZCBvbiBzYW1wbGVkIHRyYW5zbWl0dGVkCiYjNDM7ICAgICAgICBwYWNrZXRzLiBUaGUgc2FtcGxpbmcgaW50ZXJ2YWwgaXMgc3BlY2lmaWVkIGFzIHRoZSBudW1iZXIgb2YKJiM0MzsgICAgICAgIHRyYW5zbWl0dGVkIHBhY2tldHMgYmV0d2VlbiBBVFIgdXBkYXRlcy4KJiM0MzsKJiM0MzsgICAgICAgIExvd2VyIHZhbHVlcyBpbmNyZWFzZSBGbG93IERpcmVjdG9yIHByb2dyYW1taW5nIGFjdGl2aXR5LCB3aGlsZQomIzQzOyAgICAgICAgaGlnaGVyIHZhbHVlcyByZWR1Y2UgdGhlIHVwZGF0ZSBmcmVxdWVuY3kuCiYjNDM7CiYjNDM7ICAgICAgICBTZXR0aW5nIHRvIGBgMGBgIGRpc2FibGVzIEFUUiBzYW1wbGluZyAobm8gZmlsdGVycyB3aWxsIGJlIHByb2dyYW1tZWQpCiYjNDM7ICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYDIwYGAuCiAKIEluZm8gdmVyc2lvbnMKID09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmgKaW5kZXggODNlNzgwOTE5YWM5N2YuLjJmMjY0Y2JjOTBlZmUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaApAQCAtNDg3LDYgJiM0Mzs0ODcsNyBAQCBzdHJ1Y3QgaTQwZV9wZiB7CiAJdTE2IHJzc19zaXplX21heDsgICAgICAgICAgLyogSFcgZGVmaW5lZCBtYXggUlNTIHF1ZXVlcyAqLwogCXUxNiBmZGlyX3BmX2ZpbHRlcl9jb3VudDsgIC8qIG51bSBvZiBndWFyYW50ZWVkIGZpbHRlcnMgZm9yIHRoaXMgUEYgKi8KIAl1MTYgbnVtX2FsbG9jX3ZzaTsgICAgICAgICAvKiBudW0gVlNJcyB0aGlzIGRyaXZlciBzdXBwb3J0cyAqLwomIzQzOwl1MzIgYXRyX3NhbXBsZV9yYXRlOwogCWJvb2wgd29sX2VuOwogCiAJc3RydWN0IGhsaXN0X2hlYWQgZmRpcl9maWx0ZXJfbGlzdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jCmluZGV4IDIyOTE3OWNjYzEzMTllLi5jZjQ4N2VmZGQ4MDNkNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jCkBAIC0zMywxMiAmIzQzOzMzLDQ4IEBAIHN0YXRpYyBpbnQgaTQwZV9tYXhfbWFjX3Blcl92Zl9nZXQoc3RydWN0IGRldmxpbmsgKmRldmxpbmssCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgaW50IGk0MGVfYXRyX3NhbXBsZV9yYXRlX3NldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluaywKJiM0MzsJCQkJICAgIHUzMiBpZCwKJiM0MzsJCQkJICAgIHN0cnVjdCBkZXZsaW5rX3BhcmFtX2dzZXRfY3R4ICpjdHgsCiYjNDM7CQkJCSAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaTQwZV9wZiAqcGYgPSBkZXZsaW5rX3ByaXYoZGV2bGluayk7CiYjNDM7CXUzMiBzYW1wbGVfcmF0ZSA9IGN0eC0mZ3Q7dmFsLnZ1MzI7CiYjNDM7CiYjNDM7CXBmLSZndDthdHJfc2FtcGxlX3JhdGUgPSBzYW1wbGVfcmF0ZTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgaTQwZV9hdHJfc2FtcGxlX3JhdGVfZ2V0KHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLAomIzQzOwkJCQkgICAgdTMyIGlkLAomIzQzOwkJCQkgICAgc3RydWN0IGRldmxpbmtfcGFyYW1fZ3NldF9jdHggKmN0eCwKJiM0MzsJCQkJICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBpNDBlX3BmICpwZiA9IGRldmxpbmtfcHJpdihkZXZsaW5rKTsKJiM0MzsKJiM0MzsJY3R4LSZndDt2YWwudnUzMiA9IHBmLSZndDthdHJfc2FtcGxlX3JhdGU7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztlbnVtIGk0MGVfZGxfcGFyYW1faWQgewomIzQzOwlJNDBFX0RFVkxJTktfUEFSQU1fSURfQkFTRSA9IERFVkxJTktfUEFSQU1fR0VORVJJQ19JRF9NQVgsCiYjNDM7CUk0MEVfREVWTElOS19QQVJBTV9JRF9BVFJfU0FNUExFX1JBVEUsCiYjNDM7fTsKJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19wYXJhbSBpNDBlX2RsX3BhcmFtc1tdID0gewogCURFVkxJTktfUEFSQU1fR0VORVJJQyhNQVhfTUFDX1BFUl9WRiwKIAkJCSAgICAgIEJJVChERVZMSU5LX1BBUkFNX0NNT0RFX1JVTlRJTUUpLAogCQkJICAgICAgaTQwZV9tYXhfbWFjX3Blcl92Zl9nZXQsCiAJCQkgICAgICBpNDBlX21heF9tYWNfcGVyX3ZmX3NldCwKIAkJCSAgICAgIE5VTEwpLAomIzQzOwlERVZMSU5LX1BBUkFNX0RSSVZFUihJNDBFX0RFVkxJTktfUEFSQU1fSURfQVRSX1NBTVBMRV9SQVRFLAomIzQzOwkJCSAgICAgJiMzNDthdHJfc2FtcGxlX3JhdGUmIzM0OywKJiM0MzsJCQkgICAgIERFVkxJTktfUEFSQU1fVFlQRV9VMzIsCiYjNDM7CQkJICAgICBCSVQoREVWTElOS19QQVJBTV9DTU9ERV9SVU5USU1FKSwKJiM0MzsJCQkgICAgIGk0MGVfYXRyX3NhbXBsZV9yYXRlX2dldCwKJiM0MzsJCQkgICAgIGk0MGVfYXRyX3NhbXBsZV9yYXRlX3NldCwKJiM0MzsJCQkgICAgIE5VTEwpLAogfTsKIAogc3RhdGljIHZvaWQgaTQwZV9pbmZvX2dldF9kc24oc3RydWN0IGk0MGVfcGYgKnBmLCBjaGFyICpidWYsIHNpemVfdCBsZW4pCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYwppbmRleCBhMDQ2ODMwMDRhNTY3Ny4uNGQ0ZDRiMDdhMGYzYTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYwpAQCAtMzQ1NCwxMiAmIzQzOzM0NTQsNyBAQCBzdGF0aWMgaW50IGk0MGVfY29uZmlndXJlX3R4X3Jpbmcoc3RydWN0IGk0MGVfcmluZyAqcmluZykKIAkJcmluZy0mZ3Q7eHNrX3Bvb2wgPSBpNDBlX3hza19wb29sKHJpbmcpOwogCiAJLyogc29tZSBBVFIgcmVsYXRlZCB0eCByaW5nIGluaXQgKi8KLQlpZiAodGVzdF9iaXQoSTQwRV9GTEFHX0ZEX0FUUl9FTkEsIHZzaS0mZ3Q7YmFjay0mZ3Q7ZmxhZ3MpKSB7Ci0JCXJpbmctJmd0O2F0cl9zYW1wbGVfcmF0ZSA9IEk0MEVfREVGQVVMVF9BVFJfU0FNUExFX1JBVEU7Ci0JCXJpbmctJmd0O2F0cl9jb3VudCA9IDA7Ci0JfSBlbHNlIHsKLQkJcmluZy0mZ3Q7YXRyX3NhbXBsZV9yYXRlID0gMDsKLQl9CiYjNDM7CXJpbmctJmd0O2F0cl9jb3VudCA9IDA7CiAKIAkvKiBjb25maWd1cmUgWFBTICovCiAJaTQwZV9jb25maWdfeHBzX3R4X3JpbmcocmluZyk7CkBAIC0xMjc0Miw2ICYjNDM7MTI3MzcsOCBAQCBzdGF0aWMgaW50IGk0MGVfc3dfaW5pdChzdHJ1Y3QgaTQwZV9wZiAqcGYpCiAJCX0KIAl9CiAKJiM0MzsJcGYtJmd0O2F0cl9zYW1wbGVfcmF0ZSA9IEk0MEVfREVGQVVMVF9BVFJfU0FNUExFX1JBVEU7CiYjNDM7CiAJaWYgKChwZi0mZ3Q7aHcuZnVuY19jYXBzLmZkX2ZpbHRlcnNfZ3VhcmFudGVlZCAmZ3Q7IDApIHx8CiAJICAgIChwZi0mZ3Q7aHcuZnVuY19jYXBzLmZkX2ZpbHRlcnNfYmVzdF9lZmZvcnQgJmd0OyAwKSkgewogCQlzZXRfYml0KEk0MEVfRkxBR19GRF9BVFJfRU5BLCBwZi0mZ3Q7ZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMKaW5kZXggODk0ZjJkMDZkMzlkMDcuLmIzNmUwZmM5YjMxZDI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMKQEAgLTI4NzksNyAmIzQzOzI4NzksNyBAQCBzdGF0aWMgdm9pZCBpNDBlX2F0cihzdHJ1Y3QgaTQwZV9yaW5nICp0eF9yaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlyZXR1cm47CiAKIAkvKiBpZiBzYW1wbGluZyBpcyBkaXNhYmxlZCBkbyBub3RoaW5nICovCi0JaWYgKCF0eF9yaW5nLSZndDthdHJfc2FtcGxlX3JhdGUpCiYjNDM7CWlmICghcGYtJmd0O2F0cl9zYW1wbGVfcmF0ZSkKIAkJcmV0dXJuOwogCiAJLyogQ3VycmVudGx5IG9ubHkgSVB2NC9JUHY2IHdpdGggVENQIGlzIHN1cHBvcnRlZCAqLwpAQCAtMjkzMSw3ICYjNDM7MjkzMSw3IEBAIHN0YXRpYyB2b2lkIGk0MGVfYXRyKHN0cnVjdCBpNDBlX3JpbmcgKnR4X3JpbmcsIHN0cnVjdCBza19idWZmICpza2IsCiAJaWYgKCF0aC0mZ3Q7ZmluICZhbXA7JmFtcDsKIAkgICAgIXRoLSZndDtzeW4gJmFtcDsmYW1wOwogCSAgICAhdGgtJmd0O3JzdCAmYW1wOyZhbXA7Ci0JICAgICh0eF9yaW5nLSZndDthdHJfY291bnQgJmx0OyB0eF9yaW5nLSZndDthdHJfc2FtcGxlX3JhdGUpKQomIzQzOwkgICAgKHR4X3JpbmctJmd0O2F0cl9jb3VudCAmbHQ7IHBmLSZndDthdHJfc2FtcGxlX3JhdGUpKQogCQlyZXR1cm47CiAKIAl0eF9yaW5nLSZndDthdHJfY291bnQgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmgKaW5kZXggMWU1ZmQ2M2Q0N2Y0N2MuLmY0MTc5OTE0ODdlYWM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmgKQEAgLTM2Nyw4ICYjNDM7MzY3LDcgQEAgc3RydWN0IGk0MGVfcmluZyB7CiAJdTE2IG5leHRfdG9fY2xlYW47CiAJdTE2IHhkcF90eF9hY3RpdmU7CiAKLQl1OCBhdHJfc2FtcGxlX3JhdGU7Ci0JdTggYXRyX2NvdW50OwomIzQzOwl1MzIgYXRyX2NvdW50OwogCiAJYm9vbCByaW5nX2FjdGl2ZTsJCS8qIGlzIHJpbmcgb25saW5lIG9yIG5vdCAqLwogCWJvb2wgYXJtX3diOwkJLyogZG8gc29tZXRoaW5nIHRvIGFybSB3cml0ZSBiYWNrICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE1OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMTQKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA3NjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpNDBlIERyaXZlciBQYXRjaDogUmVhY2hhYmlsaXR5IGFuZCBJbXBhY3QqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgaTQwZWAgZHJpdmVyLiBJdCYjMzk7cyBhZGRpbmcgYSBkZXZsaW5rIHBhcmFtZXRlciwgYGF0cl9zYW1wbGVfcmF0ZWAsIHRvIGNvbnRyb2wgaG93IG9mdGVuIHRoZSBGbG93IERpcmVjdG9yIEFUUiBpcyB1cGRhdGVkLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgYWx3YXlzIGFib3V0IGhvdyB3ZSBjYW4gKmFjdHVhbGx5KiB0cmlnZ2VyIHRoaXMgY29kZSBhbmQgdGVzdCBpdC4gVGhlIHBhdGNoIHRvdWNoZXMgdGhlIHVzdWFsIHN1c3BlY3RzOiBkb2N1bWVudGF0aW9uLCBoZWFkZXIgZmlsZXMsIGFuZCB0aGUgY29yZSBkcml2ZXIgZmlsZXMgLSBgaTQwZV9kZXZsaW5rLmNgLCBgaTQwZV9tYWluLmNgLCBgaTQwZV90eHJ4LmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb25hbCBpbXBhY3QgYW5kIGlmIEkgY2FuIGV2ZW4gZ2V0IHRoaXMgdG8gcnVuIGluIGEgdGVzdCBlbnZpcm9ubWVudC4KClRoZSBrZXkgY2hhbmdlcyBpbnZvbHZlIGFkZGluZyB0aGUgYGk0MGVfYXRyX3NhbXBsZV9yYXRlX3NldGAgYW5kIGBpNDBlX2F0cl9zYW1wbGVfcmF0ZV9nZXRgIGZ1bmN0aW9ucyBpbiBgaTQwZV9kZXZsaW5rLmNgLiBBbHNvLCBpdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIG1vZGlmeWluZyBob3cgdGhlIGBpNDBlX2F0cmAgZnVuY3Rpb24gYW5kIGBpNDBlX2NvbmZpZ3VyZV90eF9yaW5nYCBiZWhhdmU7IHNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgdXNpbmcgYSBwZXItUEYgKFBoeXNpY2FsIEZ1bmN0aW9uKSBgYXRyX3NhbXBsZV9yYXRlYCByYXRoZXIgdGhhbiByaW5nLXNwZWNpZmljIHZhcmlhYmxlcy4gQWRkaXRpb25hbGx5LCBpbiBgaTQwZV9zd19pbml0YCwgdGhleSYjMzk7cmUgc2V0dGluZyBhIGRlZmF1bHQgYGF0cl9zYW1wbGVfcmF0ZWAuIFRoZXNlIGFyZSBhbGwgZmFpcmx5IHR5cGljYWwgZHJpdmVyIGNoYW5nZXMsIGJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpczogY2FuIEkgZ2V0IHRvIHRoZSBuZXcgY29kZT8KClRoZSBiaWcgcHJvYmxlbSBJIHNlZSBpcyB0aGF0IGBpNDBlYCBpcyB0aGUgSW50ZWwgWEw3MTAgbmV0d29yayBkcml2ZXIsIGFuZCBteSBpbW1lZGlhdGUgY29uY2VybiBpcyB3aGV0aGVyIHRoaXMgaXMgc29tZXRoaW5nIEkgY2FuIGVtdWxhdGUuIE15IGtub3dsZWRnZSBvZiBRRU1VIGNvbWVzIHRvIG1pbmQuIExldCBtZSBzZWUuLi4gSSBrbm93IFFFTVUgc3VwcG9ydHMgYSB2YXJpZXR5IG9mIG5ldHdvcmsgZGV2aWNlcywgYnV0IGRvZXMgaXQgc3VwcG9ydCBgaTQwZWA/IEkgY2FuIGNoZWNrIHdoYXQgaXQgZG9lcyBzdXBwb3J0IC0gYGUxMDAwYCwgYGUxMDAwZWAsIGBpZ2JgLCBhbmQgdGhlIG90aGVycy4gQWgsIGxvb2tzIGxpa2UgaXQgZG9lc24mIzM5O3QuIE5vIGBpNDBlYCB0aGVyZS4gTm93IEkgbmVlZCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiB0byBnZXQgcGFzdCB0aGlzLiBTeXprYWxsZXIsIGl0IHNlZW1zLCBkb2VzbiYjMzk7dCBoYXZlIGFuIGk0MGUgZW11bGF0b3IgZWl0aGVyLCB3aGljaCBpcyBhIG1ham9yIHJlZCBmbGFnLgoKVGhlIGltcGxpY2F0aW9ucyBhcmUgcHJldHR5IHN0YXJrLiBJZiBgaTQwZWAgaXNuJiMzOTt0IGVtdWxhdGVkLCB0aGVuIHRoZSBwcm9iZSBmdW5jdGlvbiBmb3IgdGhlIGRldmljZSB3aWxsIG5ldmVyIHN1Y2NlZWQsIGFuZCBhcyBhIHJlc3VsdCwgdGhlIGRldmxpbmsgcGFyYW1ldGVycyB3b24mIzM5O3QgZXZlbiBiZSByZWdpc3RlcmVkLiBUaGF0IG1lYW5zIHRoZSBgdHgvcnhgIHBhdGhzLCB3aGljaCB1c2UgdGhpcyBuZXcgcGFyYW1ldGVyLCB3b24mIzM5O3QgZXhlY3V0ZSBlaXRoZXIuIFNvLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYGk0MGVgIGNhbiBiZSBwcm9iZWQgaW4gbXkgdGVzdCBlbnZpcm9ubWVudC4gSSBrbm93IGBpNDBlYCBpcyBhIFBDSSBkZXZpY2UuIEkgY2FuIHVzZSB0aGUgUENJIElEcyB0byB0cnkgdG8gZmlndXJlIG91dCB3aGF0IHR5cGUgb2YgZGV2aWNlIHRoaXMgaXMuCgpXYWl0LCBsb29raW5nIGZ1cnRoZXIsIFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIHRoZSBYTDcxMC4gU28gdGhhdCYjMzk7cyB0aGUgZW5kIG9mIG15IGVtdWxhdGlvbiBob3Blcy4gRG9lcyB0aGF0IG1lYW4gdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIHRyaWdnZXIgZGV2bGluayBwYXJhbWV0ZXIgc2V0dGluZyB1bmxlc3MgSSBoYXZlIHRoZSBwaHlzaWNhbCBkZXZpY2U/IFByZXR0eSBtdWNoLiBEZXZsaW5rIHBhcmFtZXRlcnMgYXJlIHR5cGljYWxseSByZWdpc3RlcmVkIHBlciBkZXZpY2UgaW5zdGFuY2UsIGFuZCB0aGF0JiMzOTtzIHVzdWFsbHkgZG9uZSBkdXJpbmcgdGhlIHByb2JlIGZ1bmN0aW9uLiBMZXQgbWUgZ28gYmFjayB0byBgaTQwZV9kZXZsaW5rLmNgIGFuZCBjb25maXJtIGV4YWN0bHkgaG93IHRoZSBwYXJhbWV0ZXIgaXMgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpNDBlX2RldmxpbmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9NYWtlZmlsZT0xMz1pNDBlLXkgOj0gaTQwZV9tYWluLm8gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL01ha2VmaWxlLTI3LVx0aTQwZV94c2sub1x0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvTWFrZWZpbGU6Mjg6XHRpNDBlX2Rldmxpbmsub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9NYWtlZmlsZS0yOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaC0xNy0jaW5jbHVkZSBcJiMzNDtpNDBlX2RlYnVnLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oOjE4OiNpbmNsdWRlIFwmIzM0O2k0MGVfZGV2bGluay5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaC0xOS0jaW5jbHVkZSBcJiMzNDtpNDBlX2lvLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTUtI2luY2x1ZGUgXCYjMzQ7aTQwZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjY6I2luY2x1ZGUgXCYjMzQ7aTQwZV9kZXZsaW5rLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jPTExMD1zdGF0aWMgdm9pZCBpNDBlX2luZm9fcGJhKHN0cnVjdCBpNDBlX2h3ICpodywgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxMTc6ZW51bSBpNDBlX2RldmxpbmtfdmVyc2lvbl90eXBlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTE4LVx0STQwRV9ETF9WRVJTSU9OX0ZJWEVELFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxMjI6c3RhdGljIGludCBpNDBlX2RldmxpbmtfaW5mb19wdXQoc3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJlcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MTIzOlx0XHRcdFx0IGVudW0gaTQwZV9kZXZsaW5rX3ZlcnNpb25fdHlwZSB0eXBlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xMjQtXHRcdFx0XHQgY29uc3QgY2hhciAqa2V5LCBjb25zdCBjaGFyICp2YWx1ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTEzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MTM4OnN0YXRpYyBpbnQgaTQwZV9kZXZsaW5rX2luZm9fZ2V0KHN0cnVjdCBkZXZsaW5rICpkbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTM5LVx0XHRcdFx0IHN0cnVjdCBkZXZsaW5rX2luZm9fcmVxICpyZXEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xNTItXHRpNDBlX2luZm9fZndfbWdtdChodywgYnVmLCBzaXplb2YoYnVmKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjE1MzpcdGVyciA9IGk0MGVfZGV2bGlua19pbmZvX3B1dChyZXEsIEk0MEVfRExfVkVSU0lPTl9SVU5OSU5HLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xNTQtXHRcdFx0XHQgICAgREVWTElOS19JTkZPX1ZFUlNJT05fR0VORVJJQ19GV19NR01ULCBidWYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTU4LVx0aTQwZV9pbmZvX2Z3X21nbXRfYnVpbGQoaHcsIGJ1Ziwgc2l6ZW9mKGJ1ZikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxNTk6XHRlcnIgPSBpNDBlX2RldmxpbmtfaW5mb19wdXQocmVxLCBJNDBFX0RMX1ZFUlNJT05fUlVOTklORyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTYwLVx0XHRcdFx0ICAgIFwmIzM0O2Z3Lm1nbXQuYnVpbGRcJiMzNDssIGJ1Zik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xNjQtXHRpNDBlX2luZm9fZndfYXBpKGh3LCBidWYsIHNpemVvZihidWYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MTY1Olx0ZXJyID0gaTQwZV9kZXZsaW5rX2luZm9fcHV0KHJlcSwgSTQwRV9ETF9WRVJTSU9OX1JVTk5JTkcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTE2Ni1cdFx0XHRcdCAgICBERVZMSU5LX0lORk9fVkVSU0lPTl9HRU5FUklDX0ZXX01HTVRfQVBJLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTcxLVx0aTQwZV9pbmZvX252bV92ZXIoaHcsIGJ1Ziwgc2l6ZW9mKGJ1ZikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxNzI6XHRlcnIgPSBpNDBlX2RldmxpbmtfaW5mb19wdXQocmVxLCBJNDBFX0RMX1ZFUlNJT05fUlVOTklORyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTczLVx0XHRcdFx0ICAgIFwmIzM0O2Z3LnBzaWQuYXBpXCYjMzQ7LCBidWYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTc3LVx0aTQwZV9pbmZvX2VldHJhY2soaHcsIGJ1Ziwgc2l6ZW9mKGJ1ZikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxNzg6XHRlcnIgPSBpNDBlX2RldmxpbmtfaW5mb19wdXQocmVxLCBJNDBFX0RMX1ZFUlNJT05fUlVOTklORyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTc5LVx0XHRcdFx0ICAgIERFVkxJTktfSU5GT19WRVJTSU9OX0dFTkVSSUNfRldfQlVORExFX0lELFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTg0LVx0aTQwZV9pbmZvX2NpdmRfdmVyKGh3LCBidWYsIHNpemVvZihidWYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MTg1Olx0ZXJyID0gaTQwZV9kZXZsaW5rX2luZm9fcHV0KHJlcSwgSTQwRV9ETF9WRVJTSU9OX1JVTk5JTkcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTE4Ni1cdFx0XHRcdCAgICBERVZMSU5LX0lORk9fVkVSU0lPTl9HRU5FUklDX0ZXX1VOREksIGJ1Zik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xOTAtXHRpNDBlX2luZm9fcGJhKGh3LCBidWYsIHNpemVvZihidWYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MTkxOlx0ZXJyID0gaTQwZV9kZXZsaW5rX2luZm9fcHV0KHJlcSwgSTQwRV9ETF9WRVJTSU9OX0ZJWEVELFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xOTItXHRcdFx0XHQgICAgREVWTElOS19JTkZPX1ZFUlNJT05fR0VORVJJQ19CT0FSRF9JRCwgYnVmKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTE5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MTk3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgaTQwZV9kZXZsaW5rX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MTk4Olx0LmluZm9fZ2V0ID0gaTQwZV9kZXZsaW5rX2luZm9fZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xOTktfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jPTIwOD1zdHJ1Y3QgaTQwZV9wZiAqaTQwZV9hbGxvY19wZihzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjIxMjpcdGRldmxpbmsgPSBkZXZsaW5rX2FsbG9jKFx1MDAyNmk0MGVfZGV2bGlua19vcHMsIHNpemVvZihzdHJ1Y3QgaTQwZV9wZiksIGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTIxMy1cdGlmICghZGV2bGluaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jPTIyNT12b2lkIGk0MGVfZnJlZV9wZihzdHJ1Y3QgaTQwZV9wZiAqcGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yMzItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjIzMzogKiBpNDBlX2RldmxpbmtfcmVnaXN0ZXIgLSBSZWdpc3RlciBkZXZsaW5rIGludGVyZmFjZSBmb3IgdGhpcyBQRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yMzQtICogQHBmOiB0aGUgUEYgdG8gcmVnaXN0ZXIgdGhlIGRldmxpbmsgZm9yLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjM3LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MjM4OnZvaWQgaTQwZV9kZXZsaW5rX3JlZ2lzdGVyKHN0cnVjdCBpNDBlX3BmICpwZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTI1NC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MjU1OiAqIGk0MGVfZGV2bGlua191bnJlZ2lzdGVyIC0gVW5yZWdpc3RlciBkZXZsaW5rIHJlc291cmNlcyBmb3IgdGhpcyBQRi5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjU2LSAqIEBwZjogdGhlIFBGIHN0cnVjdHVyZSB0byBjbGVhbnVwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yNTktICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoyNjA6dm9pZCBpNDBlX2RldmxpbmtfdW5yZWdpc3RlcihzdHJ1Y3QgaTQwZV9wZiAqcGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTI2MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yNjktLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjI3MDogKiBpNDBlX2Rldmxpbmtfc2V0X3N3aXRjaF9pZCAtIFNldCB1bmlxdWUgc3dpdGNoIGlkIGJhc2VkIG9uIHBjaSBkc25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjcxLSAqIEBwZjogdGhlIFBGIHRvIGNyZWF0ZSBhIGRldmxpbmsgcG9ydCBmb3Jcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTI3My0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6Mjc0OnN0YXRpYyB2b2lkIGk0MGVfZGV2bGlua19zZXRfc3dpdGNoX2lkKHN0cnVjdCBpNDBlX3BmICpwZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjc1LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBuZXRkZXZfcGh5c19pdGVtX2lkICpwcGlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjgzLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoyODQ6ICogaTQwZV9kZXZsaW5rX2NyZWF0ZV9wb3J0IC0gQ3JlYXRlIGEgZGV2bGluayBwb3J0IGZvciB0aGlzIFBGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTI4NS0gKiBAcGY6IHRoZSBQRiB0byBjcmVhdGUgYSBwb3J0IGZvclxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjkyLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MjkzOmludCBpNDBlX2RldmxpbmtfY3JlYXRlX3BvcnQoc3RydWN0IGk0MGVfcGYgKnBmKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMzAxLVx0YXR0cnMucGh5cy5wb3J0X251bWJlciA9IHBmLVx1MDAzZWh3LnBmX2lkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzozMDI6XHRpNDBlX2Rldmxpbmtfc2V0X3N3aXRjaF9pZChwZiwgXHUwMDI2YXR0cnMuc3dpdGNoX2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMzAzLVx0ZGV2bGlua19wb3J0X2F0dHJzX3NldChcdTAwMjZwZi1cdTAwM2VkZXZsaW5rX3BvcnQsIFx1MDAyNmF0dHJzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTMxMy0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MzE0OiAqIGk0MGVfZGV2bGlua19kZXN0cm95X3BvcnQgLSBEZXN0cm95IHRoZSBkZXZsaW5rX3BvcnQgZm9yIHRoaXMgUEZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMzE1LSAqIEBwZjogdGhlIFBGIHRvIGNsZWFudXBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTMxOC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjMxOTp2b2lkIGk0MGVfZGV2bGlua19kZXN0cm95X3BvcnQoc3RydWN0IGk0MGVfcGYgKnBmKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0zMjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmg9MTI9dm9pZCBpNDBlX2ZyZWVfcGYoc3RydWN0IGk0MGVfcGYgKnBmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmg6MTM6dm9pZCBpNDBlX2RldmxpbmtfcmVnaXN0ZXIoc3RydWN0IGk0MGVfcGYgKnBmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmg6MTQ6dm9pZCBpNDBlX2RldmxpbmtfdW5yZWdpc3RlcihzdHJ1Y3QgaTQwZV9wZiAqcGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuaDoxNTppbnQgaTQwZV9kZXZsaW5rX2NyZWF0ZV9wb3J0KHN0cnVjdCBpNDBlX3BmICpwZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5oOjE2OnZvaWQgaTQwZV9kZXZsaW5rX2Rlc3Ryb3lfcG9ydChzdHJ1Y3QgaTQwZV9wZiAqcGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuaC0xNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jPTE0MDk2PWludCBpNDBlX3ZzaV9yZWxlYXNlKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQxMzMtXHRpZiAodnNpLVx1MDAzZXR5cGUgPT0gSTQwRV9WU0lfTUFJTilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MTQxMzQ6XHRcdGk0MGVfZGV2bGlua19kZXN0cm95X3BvcnQocGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xNDEzNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jPTE0MjU1PXN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE0MzE1LVx0aWYgKHZzaS1cdTAwM2V0eXBlID09IEk0MEVfVlNJX01BSU4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjE0MzE2Olx0XHRpNDBlX2RldmxpbmtfZGVzdHJveV9wb3J0KHBmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQzMTctXHRpNDBlX2FxX2RlbGV0ZV9lbGVtZW50KFx1MDAyNnBmLVx1MDAzZWh3LCB2c2ktXHUwMDNlc2VpZCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNDMzNj1zdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3NldHVwKHN0cnVjdCBpNDBlX3BmICpwZiwgdTggdHlwZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE0NDQyLVx0XHRpZiAodnNpLVx1MDAzZXR5cGUgPT0gSTQwRV9WU0lfTUFJTikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxNDQ0MzpcdFx0XHRyZXQgPSBpNDBlX2RldmxpbmtfY3JlYXRlX3BvcnQocGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xNDQ0NC1cdFx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQ0OTgtXHRpZiAodnNpLVx1MDAzZXR5cGUgPT0gSTQwRV9WU0lfTUFJTilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MTQ0OTk6XHRcdGk0MGVfZGV2bGlua19kZXN0cm95X3BvcnQocGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xNDUwMC1lcnJfbmV0ZGV2OlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM9MTU1MzE9c3RhdGljIGludCBpNDBlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTYxMDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjE2MTA0Olx0aTQwZV9kZXZsaW5rX3JlZ2lzdGVyKHBmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTYxMDUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNjE0Nj1zdGF0aWMgdm9pZCBpNDBlX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE2MTU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxNjE1NTpcdGk0MGVfZGV2bGlua191bnJlZ2lzdGVyKHBmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTYxNTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTU6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1NDMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBpNDBlIERyaXZlciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgYGk0MGVgIGRyaXZlciwgYXMgYSBQQ0kgZHJpdmVyLCBpcyByZWxpYW50IG9uIGEgUENJIGRldmljZSBiZWluZyBwcmVzZW50LiBTaW1wbGUgZW5vdWdoLiBTaW5jZSBRRU1VIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGVtdWxhdGUgdGhlIEludGVsIGk0MGUgaGFyZHdhcmUsIHRoZSBkcml2ZXIgb2J2aW91c2x5IHdvbiYjMzk7dCBiaW5kIGFuZCBpdHMgcHJvYmUgZnVuY3Rpb24sIGBpNDBlX3Byb2JlYCwgd29uJiMzOTt0IGdldCBjYWxsZWQuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLgoKTm93LCBteSBtaW5kIHNoaWZ0cyB0byBzeXprYWxsZXIuIERvZXMgc3l6a2FsbGVyIGhhdmUgYSBnZW5lcmFsIG1lY2hhbmlzbSB0byBpbmplY3QgUENJIGRldmljZXMgYWtpbiB0byBob3cgaXQgaGFuZGxlcyBVU0Igd2l0aCBgc3l6X3VzYl9jb25uZWN0YCwgb3IgcGVyaGFwcyBpbmplY3RzIFBDSSBkZXZpY2VzIHVzaW5nIGEgdmlydHVhbCBob3N0IGNvbnRyb2xsZXIgaW50ZXJmYWNlIChgdmhjaWApIGxpa2UgaXQgbWlnaHQgZG8gd2l0aCBhIHZpcnR1YWwgUENJIGRldmljZT8gTm8uIE5vIGdlbmVyaWMgUENJIGRldmljZSBlbXVsYXRpb24uIEl0IHNlZW1zIHN5emthbGxlciBvZmZlcnMgc3BlY2lhbGl6ZWQgJiMzNDtpbmplY3RvcnMmIzM0OyBmb3IgZGlmZmVyZW50IGhhcmR3YXJlIHN1YnN5c3RlbXMuIFVTQiB3aXRoIGBzeXpfdXNiX2Nvbm5lY3RgLCBtYWM4MDIxMSB3aXRoIGBzeXpfODAyMTFfaW5qZWN0X2ZyYW1lYCwgZXRjLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHdyb25nIGhlcmUuCgpIb2xkIG9uLCBJIGFtIHdyb25nLiBEb2VzIHN5emthbGxlciBvZmZlciBzb21ldGhpbmcgbGlrZSBhIFBDSSBmdXp6ZXI/IElzIHRoZXJlIGFjdHVhbGx5IFBDSSBmdXp6aW5nIGluIHN5emthbGxlcj8gTGV0JiMzOTtzIGNoZWNrLiBXYWl0IGEgbWludXRlLiBJdCBkb2VzIG5vdCBsb29rIGxpa2UgYHN5el9wY2lfZGV2aWNlX2FkZGAgZXhpc3RzLiBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhICpnZW5lcmFsKiBQQ0kgZW11bGF0b3IsIGp1c3Qgc3BlY2lhbGl6ZWQgbWVjaGFuaXNtcy4gVGhleSBzZWVtIHRvIHVzZSBgdmhjaWAgZm9yIFVTQiwgYG1hYzgwMjExX2h3c2ltYCBmb3Igd2lmaSwgYHZuZXRgIGZvciBuZXR3b3JrLCBgdmttc2AgZm9yIERSTSwgYHVpbnB1dGAgZm9yIGlucHV0LgoKQWxyaWdodCwgd2hhdCBhYm91dCBgdmZpb2A/IFRoYXQgbWlnaHQgYmUgYW4gYXZlbnVlIHRvIGNvbnNpZGVyLiBDb3VsZCB0aGF0IGJlIGEgd2F5IHRvIHJlYWNoIGBpNDBlYCBjb2RlPwoKVWx0aW1hdGVseSwgdGhlIHF1ZXN0aW9uIGlzLCAqY2FuKiB3ZSByZWFjaCB0aGUgYGk0MGVgIGNvZGUgdGhyb3VnaCBzeXprYWxsZXI/IFRoZSBvYnZpb3VzIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgYGk0MGVgIGl0c2VsZiBpcyBhY3RpdmVseSB0YXJnZXRlZCBhbmQgZnV6emVkIHdpdGhpbiB0aGUgc3l6a2FsbGVyIGZyYW1ld29yay4gTGV0JiMzOTtzIGNvbmZpcm0gaWYgaXQmIzM5O3MgY3VycmVudGx5IHBhcnQgb2YgdGhlIGZ1enppbmcgdGFyZ2V0IGxpc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTU6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpNDBlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTM2MQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDMwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBpNDBlIENvZGUgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guIFRoZSB0YXNrIGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIGNvbnRhaW5zIGNvZGUgdGhhdCYjMzk7cyAqdW5yZWFjaGFibGUqIGluIHZpcnR1YWxpemVkIHNldHVwcyBsaWtlIEdDRSBvciBRRU1VLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGBpNDBlYCBkcml2ZXIgY29kZSBjYW4gZXZlbiBiZSBleGVjdXRlZCBpbiB0aG9zZSBlbnZpcm9ubWVudHMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjaGVjayBgc3l6a2FsbGVyYCBmb3IgYW55IGRlc2NyaXB0aW9ucyByZWxhdGVkIHRvIGBpNDBlYCwgYnV0IG1heWJlIEkgZG9uJiMzOTt0IGV2ZW4gbmVlZCB0byBnbyB0aGF0IGZhci4gSSBjYW4ganVzdCBmb2N1cyBvbiByZWFjaGFiaWxpdHkuCgpUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyB0aGF0IGNvZGUgcGF0aHMgcmVxdWlyaW5nIGhhcmR3YXJlIGVtdWxhdG9ycyAobGlrZSBgbWFjODAyMTFfaHdzaW1gKSBzaG91bGQgcmVzdWx0IGluIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgYGk0MGVgIGRyaXZlciBpcyBmb3IgYSBwaHlzaWNhbCBuZXR3b3JrIGNhcmQuIFRoZXJlJiMzOTtzIG5vIGVxdWl2YWxlbnQgc29mdHdhcmUgZW11bGF0b3IgbGlrZSB3ZSBoYXZlIGZvciBvdGhlciBkcml2ZXJzLCBhdCBsZWFzdCBub3QgdGhhdCBJJiMzOTttIGF3YXJlIG9mIGluIHRoZSBrZXJuZWwuIFNvLCB1bmxlc3MgSSYjMzk7bSBtaXNzaW5nIHNvbWV0aGluZyBjcnVjaWFsLCByZWFjaGluZyBgaTQwZWAgY29kZSBzZWVtcyBpbXBvc3NpYmxlIGluIHRoZXNlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KCldhaXQsIGxldCBtZSBtYWtlIHN1cmUgSSYjMzk7bSBub3Qgb3Zlcmxvb2tpbmcgc29tZXRoaW5nLiBJcyB0aGVyZSAqYW55KiBgaTQwZWAgZW11bGF0b3IgaW4gdGhlIGtlcm5lbCwgc29tZXRoaW5nIEkmIzM5O20gZm9yZ2V0dGluZz8gTm8sIG5vdCB0aGF0IEkgcmVjYWxsLiBIb3cgYWJvdXQgdHJpZ2dlcmluZyBgaTQwZV9hdHJfc2FtcGxlX3JhdGVfc2V0YCBkaXJlY3RseT8gTm8sIHRoYXQmIzM5O3Mgbm90IHBvc3NpYmxlIGVpdGhlci4gYGk0MGVfZGV2bGlua19yZWdpc3RlcmAsIHdoaWNoIEkgYXNzdW1lIGlzIGtleSwgaXMgY2FsbGVkIGZyb20gYGk0MGVfcHJvYmVgLCBhbmQgYGk0MGVfcHJvYmVgIHJlcXVpcmVzIHRoZSBQQ0kgZGV2aWNlLgoKQWxyaWdodCwgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayBhZ2Fpbi4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGxldCYjMzk7cyBsb29rIGF0IGl0IGZyb20gYSBkaWZmZXJlbnQgYW5nbGUuIElzIHRoZXJlIHNvbWUgdmlydHVhbCBidXMgdGhhdCAqY291bGQqIHByb2JlIGFuZCBsb2FkIHRoZSBgaTQwZWAgZHJpdmVyPyBObywgaXQmIzM5O3MgYSBQQ0kgZHJpdmVyLCBzbyB0aGF0IHdvdWxkbiYjMzk7dCBoYXBwZW4uIFJpZ2h0LCBsZXQmIzM5O3MgY2hlY2sgYGk0MGVfbWFpbi5jYCBhbmQgY29uZmlybSB0aGF0IGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBpcyB3aGF0JiMzOTtzIGJlaW5nIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTU6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNjYzND1zdGF0aWMgaW50IF9faW5pdCBpNDBlX2luaXRfbW9kdWxlKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xNjY1NC1cdGk0MGVfZGJnX2luaXQoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MTY2NTU6XHRlcnIgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmk0MGVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTY2NTYtXHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTU6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzMzEKCQkJCQkJCW91dHB1dDogODQKCQkJCQkJCXRob3VnaHRzOiAzMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyB0aGlzIGxvb2tzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgUENJIGRyaXZlciBwYXRjaCDigJMgdGhlIEludGVsIGk0MGUgRXRoZXJuZXQgZHJpdmVyIHRvIGJlIHByZWNpc2UuIFRoZSBjcml0aWNhbCBpc3N1ZSBpcywgd2l0aG91dCB0aGUgYWN0dWFsIHBoeXNpY2FsIGk0MGUgaGFyZHdhcmUgb3IgYSBRRU1VIGVtdWxhdGlvbiB0aGF0IGFjY3VyYXRlbHkgbW9kZWxzIHRoZSBkZXZpY2UsIHRoZSBkcml2ZXImIzM5O3MgYHByb2JlYCBmdW5jdGlvbiwgYW5kIHRoZXJlZm9yZSAqYW55KiBvZiB0aGUgbW9kaWZpZWQgY29kZSBwYXRocywgd2lsbCBzaW1wbHkgbmV2ZXIgZ2V0IGNhbGxlZC4gVGhhdCBtZWFucyBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3Igc3RhbmRhcmQgUUVNVSBpbnN0YW5jZXMsIHRoaXMgcGF0Y2ggaXMgdW5yZWFjaGFibGUuCgpJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJhdGlvbmFsZSBpcyB0aGF0IHRoaXMgdGFyZ2V0cyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIsIHRoZSBJbnRlbCBpNDBlLCBhbmQgZnV6emluZyBpdCByZXF1aXJlcyBlaXRoZXIgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgdmVyeSBzcGVjaWZpYywgYW5kIGxpa2VseSB1bmF2YWlsYWJsZSwgZW11bGF0b3Igb2YgaXQuIEkgZG9uJiMzOTt0IHNlZSBhbnkgdmFsdWUgaW4gdHJ5aW5nIHRvIGZ1enogY29kZSB0aGF0IHdvbiYjMzk7dCBleGVjdXRlLgoKSnVzdCBkb3VibGUtY2hlY2tpbmcsIHRoZXJlJiMzOTtzIG5vIGBDT05GSUdfSTQwRWAgZmxhZyBkZWZpbmVkIGluIHRoZSBjb25maWd1cmF0aW9uLCB3aGljaCB3b3VsZCBoYXZlIGF0IGxlYXN0IGdpdmVuIG1lIHNvbWV0aGluZyB0byBsb29rIGZvci4gQW5kIHNpbmNlIGl0JiMzOTtzIG5vdCB3b3J0aCBmdXp6aW5nLCBJIGRvbiYjMzk7dCBuZWVkIHRvIGJvdGhlciB3aXRoIGNvbmZpZyBkZXRhaWxzIG9yIGFueSBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIG9uZS4KCkxldCBtZSB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGUgcGF0Y2ggcXVpY2tseS4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBkZXZsaW5rIHBhcmFtZXRlciBgYXRyX3NhbXBsZV9yYXRlYCB0byB0aGUgYGk0MGVgIGRyaXZlci4gSXQgbW9kaWZpZXMgYGk0MGVfdHhyeC5jYCB0byB1c2UgYHBmLSZndDthdHJfc2FtcGxlX3JhdGVgIGFuZCBgaTQwZV9tYWluLmNgIHRvIGluaXRpYWxpemUgdGhlIHBhcmFtZXRlciBgcGYtJmd0O2F0cl9zYW1wbGVfcmF0ZWAuIEl0JiMzOTtzIGFsbCB0aWdodGx5IHNjb3BlZCB3aXRoaW4gdGhlIGBpNDBlYCBkcml2ZXIgaXRzZWxmLgoKU28sIHRoZSBkZWZpbml0aXZlIHJlYXNvbmluZzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIGk0MGUgRXRoZXJuZXQgZHJpdmVyLCBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIEJlY2F1c2UgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0b3Igb2YgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIGluIHRoZSBjdXJyZW50IGtlcm5lbCwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7CgpJJiMzOTtsbCBwcm9jZWVkIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTU6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgaTQwZSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0b3IgZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBpNDBlIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjMyOjM5LjY2NTgyOTM3N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NDc2NzA0Nzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgaTQwZSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0b3IgZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjMyOjM5LjY2NTgzOTE3N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2MDcyMjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWUxN2FmZTQ0NTdkOTZiOTIyOWU4OWUwNzkwODNkZDY4NWU1MWFhNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDE1OjMyOjM4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL2k0MGUucnN0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvaTQwZS5yc3RcXG5pbmRleCA1MWM4ODdmMGRjODMzYi4uMmNlYTk4YjYzMWJhYTEgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvaTQwZS5yc3RcXG4rKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9pNDBlLnJzdFxcbkBAIC00MCw2ICs0MCwyNiBAQCBQYXJhbWV0ZXJzXFxuIFxcbiAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgMGBgIChpbnRlcm5hbCBjYWxjdWxhdGlvbiBpcyB1c2VkKS5cXG4gXFxuKy4uIGxpc3QtdGFibGU6OiBEcml2ZXIgc3BlY2lmaWMgcGFyYW1ldGVycyBpbXBsZW1lbnRlZFxcbisgICAgOndpZHRoczogNSA1IDkwXFxuK1xcbisgICAgKiAtIE5hbWVcXG4rICAgICAgLSBNb2RlXFxuKyAgICAgIC0gRGVzY3JpcHRpb25cXG4rICAgICogLSBgYGF0cl9zYW1wbGVfcmF0ZWBgXFxuKyAgICAgIC0gcnVudGltZVxcbisgICAgICAtIENvbnRyb2xzIGhvdyBmcmVxdWVudGx5IEZsb3cgRGlyZWN0b3IgQVRSIHVwZGF0ZXMgZmxvdyBzdGVlcmluZ1xcbisgICAgICAgIGluZm9ybWF0aW9uIGZvciBhY3RpdmUgVENQIGZsb3dzLlxcbitcXG4rICAgICAgICBBVFIgcHJvZ3JhbXMgRmxvdyBEaXJlY3RvciBlbnRyaWVzIGJhc2VkIG9uIHNhbXBsZWQgdHJhbnNtaXR0ZWRcXG4rICAgICAgICBwYWNrZXRzLiBUaGUgc2FtcGxpbmcgaW50ZXJ2YWwgaXMgc3BlY2lmaWVkIGFzIHRoZSBudW1iZXIgb2ZcXG4rICAgICAgICB0cmFuc21pdHRlZCBwYWNrZXRzIGJldHdlZW4gQVRSIHVwZGF0ZXMuXFxuK1xcbisgICAgICAgIExvd2VyIHZhbHVlcyBpbmNyZWFzZSBGbG93IERpcmVjdG9yIHByb2dyYW1taW5nIGFjdGl2aXR5LCB3aGlsZVxcbisgICAgICAgIGhpZ2hlciB2YWx1ZXMgcmVkdWNlIHRoZSB1cGRhdGUgZnJlcXVlbmN5LlxcbitcXG4rICAgICAgICBTZXR0aW5nIHRvIGBgMGBgIGRpc2FibGVzIEFUUiBzYW1wbGluZyAobm8gZmlsdGVycyB3aWxsIGJlIHByb2dyYW1tZWQpXFxuKyAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGAyMGBgLlxcbiBcXG4gSW5mbyB2ZXJzaW9uc1xcbiA9PT09PT09PT09PT09XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmhcXG5pbmRleCA4M2U3ODA5MTlhYzk3Zi4uMmYyNjRjYmM5MGVmZTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaFxcbkBAIC00ODcsNiArNDg3LDcgQEAgc3RydWN0IGk0MGVfcGYge1xcbiBcXHR1MTYgcnNzX3NpemVfbWF4OyAgICAgICAgICAvKiBIVyBkZWZpbmVkIG1heCBSU1MgcXVldWVzICovXFxuIFxcdHUxNiBmZGlyX3BmX2ZpbHRlcl9jb3VudDsgIC8qIG51bSBvZiBndWFyYW50ZWVkIGZpbHRlcnMgZm9yIHRoaXMgUEYgKi9cXG4gXFx0dTE2IG51bV9hbGxvY192c2k7ICAgICAgICAgLyogbnVtIFZTSXMgdGhpcyBkcml2ZXIgc3VwcG9ydHMgKi9cXG4rXFx0dTMyIGF0cl9zYW1wbGVfcmF0ZTtcXG4gXFx0Ym9vbCB3b2xfZW47XFxuIFxcbiBcXHRzdHJ1Y3QgaGxpc3RfaGVhZCBmZGlyX2ZpbHRlcl9saXN0O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuY1xcbmluZGV4IDIyOTE3OWNjYzEzMTllLi5jZjQ4N2VmZGQ4MDNkNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuY1xcbkBAIC0zMywxMiArMzMsNDggQEAgc3RhdGljIGludCBpNDBlX21heF9tYWNfcGVyX3ZmX2dldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgaTQwZV9hdHJfc2FtcGxlX3JhdGVfc2V0KHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLFxcbitcXHRcXHRcXHRcXHQgICAgdTMyIGlkLFxcbitcXHRcXHRcXHRcXHQgICAgc3RydWN0IGRldmxpbmtfcGFyYW1fZ3NldF9jdHggKmN0eCxcXG4rXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4re1xcbitcXHRzdHJ1Y3QgaTQwZV9wZiAqcGYgPSBkZXZsaW5rX3ByaXYoZGV2bGluayk7XFxuK1xcdHUzMiBzYW1wbGVfcmF0ZSA9IGN0eC1cXHUwMDNldmFsLnZ1MzI7XFxuK1xcbitcXHRwZi1cXHUwMDNlYXRyX3NhbXBsZV9yYXRlID0gc2FtcGxlX3JhdGU7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IGk0MGVfYXRyX3NhbXBsZV9yYXRlX2dldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcXG4rXFx0XFx0XFx0XFx0ICAgIHUzMiBpZCxcXG4rXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBkZXZsaW5rX3BhcmFtX2dzZXRfY3R4ICpjdHgsXFxuK1xcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuK3tcXG4rXFx0c3RydWN0IGk0MGVfcGYgKnBmID0gZGV2bGlua19wcml2KGRldmxpbmspO1xcbitcXG4rXFx0Y3R4LVxcdTAwM2V2YWwudnUzMiA9IHBmLVxcdTAwM2VhdHJfc2FtcGxlX3JhdGU7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rZW51bSBpNDBlX2RsX3BhcmFtX2lkIHtcXG4rXFx0STQwRV9ERVZMSU5LX1BBUkFNX0lEX0JBU0UgPSBERVZMSU5LX1BBUkFNX0dFTkVSSUNfSURfTUFYLFxcbitcXHRJNDBFX0RFVkxJTktfUEFSQU1fSURfQVRSX1NBTVBMRV9SQVRFLFxcbit9O1xcbitcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX3BhcmFtIGk0MGVfZGxfcGFyYW1zW10gPSB7XFxuIFxcdERFVkxJTktfUEFSQU1fR0VORVJJQyhNQVhfTUFDX1BFUl9WRixcXG4gXFx0XFx0XFx0ICAgICAgQklUKERFVkxJTktfUEFSQU1fQ01PREVfUlVOVElNRSksXFxuIFxcdFxcdFxcdCAgICAgIGk0MGVfbWF4X21hY19wZXJfdmZfZ2V0LFxcbiBcXHRcXHRcXHQgICAgICBpNDBlX21heF9tYWNfcGVyX3ZmX3NldCxcXG4gXFx0XFx0XFx0ICAgICAgTlVMTCksXFxuK1xcdERFVkxJTktfUEFSQU1fRFJJVkVSKEk0MEVfREVWTElOS19QQVJBTV9JRF9BVFJfU0FNUExFX1JBVEUsXFxuK1xcdFxcdFxcdCAgICAgXFxcImF0cl9zYW1wbGVfcmF0ZVxcXCIsXFxuK1xcdFxcdFxcdCAgICAgREVWTElOS19QQVJBTV9UWVBFX1UzMixcXG4rXFx0XFx0XFx0ICAgICBCSVQoREVWTElOS19QQVJBTV9DTU9ERV9SVU5USU1FKSxcXG4rXFx0XFx0XFx0ICAgICBpNDBlX2F0cl9zYW1wbGVfcmF0ZV9nZXQsXFxuK1xcdFxcdFxcdCAgICAgaTQwZV9hdHJfc2FtcGxlX3JhdGVfc2V0LFxcbitcXHRcXHRcXHQgICAgIE5VTEwpLFxcbiB9O1xcbiBcXG4gc3RhdGljIHZvaWQgaTQwZV9pbmZvX2dldF9kc24oc3RydWN0IGk0MGVfcGYgKnBmLCBjaGFyICpidWYsIHNpemVfdCBsZW4pXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXFxuaW5kZXggYTA0NjgzMDA0YTU2NzcuLjRkNGQ0YjA3YTBmM2ExIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXFxuQEAgLTM0NTQsMTIgKzM0NTQsNyBAQCBzdGF0aWMgaW50IGk0MGVfY29uZmlndXJlX3R4X3Jpbmcoc3RydWN0IGk0MGVfcmluZyAqcmluZylcXG4gXFx0XFx0cmluZy1cXHUwMDNleHNrX3Bvb2wgPSBpNDBlX3hza19wb29sKHJpbmcpO1xcbiBcXG4gXFx0Lyogc29tZSBBVFIgcmVsYXRlZCB0eCByaW5nIGluaXQgKi9cXG4tXFx0aWYgKHRlc3RfYml0KEk0MEVfRkxBR19GRF9BVFJfRU5BLCB2c2ktXFx1MDAzZWJhY2stXFx1MDAzZWZsYWdzKSkge1xcbi1cXHRcXHRyaW5nLVxcdTAwM2VhdHJfc2FtcGxlX3JhdGUgPSBJNDBFX0RFRkFVTFRfQVRSX1NBTVBMRV9SQVRFO1xcbi1cXHRcXHRyaW5nLVxcdTAwM2VhdHJfY291bnQgPSAwO1xcbi1cXHR9IGVsc2Uge1xcbi1cXHRcXHRyaW5nLVxcdTAwM2VhdHJfc2FtcGxlX3JhdGUgPSAwO1xcbi1cXHR9XFxuK1xcdHJpbmctXFx1MDAzZWF0cl9jb3VudCA9IDA7XFxuIFxcbiBcXHQvKiBjb25maWd1cmUgWFBTICovXFxuIFxcdGk0MGVfY29uZmlnX3hwc190eF9yaW5nKHJpbmcpO1xcbkBAIC0xMjc0Miw2ICsxMjczNyw4IEBAIHN0YXRpYyBpbnQgaTQwZV9zd19pbml0KHN0cnVjdCBpNDBlX3BmICpwZilcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbitcXHRwZi1cXHUwMDNlYXRyX3NhbXBsZV9yYXRlID0gSTQwRV9ERUZBVUxUX0FUUl9TQU1QTEVfUkFURTtcXG4rXFxuIFxcdGlmICgocGYtXFx1MDAzZWh3LmZ1bmNfY2Fwcy5mZF9maWx0ZXJzX2d1YXJhbnRlZWQgXFx1MDAzZSAwKSB8fFxcbiBcXHQgICAgKHBmLVxcdTAwM2Vody5mdW5jX2NhcHMuZmRfZmlsdGVyc19iZXN0X2VmZm9ydCBcXHUwMDNlIDApKSB7XFxuIFxcdFxcdHNldF9iaXQoSTQwRV9GTEFHX0ZEX0FUUl9FTkEsIHBmLVxcdTAwM2VmbGFncyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jXFxuaW5kZXggODk0ZjJkMDZkMzlkMDcuLmIzNmUwZmM5YjMxZDI4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jXFxuQEAgLTI4NzksNyArMjg3OSw3IEBAIHN0YXRpYyB2b2lkIGk0MGVfYXRyKHN0cnVjdCBpNDBlX3JpbmcgKnR4X3JpbmcsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdC8qIGlmIHNhbXBsaW5nIGlzIGRpc2FibGVkIGRvIG5vdGhpbmcgKi9cXG4tXFx0aWYgKCF0eF9yaW5nLVxcdTAwM2VhdHJfc2FtcGxlX3JhdGUpXFxuK1xcdGlmICghcGYtXFx1MDAzZWF0cl9zYW1wbGVfcmF0ZSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0LyogQ3VycmVudGx5IG9ubHkgSVB2NC9JUHY2IHdpdGggVENQIGlzIHN1cHBvcnRlZCAqL1xcbkBAIC0yOTMxLDcgKzI5MzEsNyBAQCBzdGF0aWMgdm9pZCBpNDBlX2F0cihzdHJ1Y3QgaTQwZV9yaW5nICp0eF9yaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRpZiAoIXRoLVxcdTAwM2VmaW4gXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgICF0aC1cXHUwMDNlc3luIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAhdGgtXFx1MDAzZXJzdCBcXHUwMDI2XFx1MDAyNlxcbi1cXHQgICAgKHR4X3JpbmctXFx1MDAzZWF0cl9jb3VudCBcXHUwMDNjIHR4X3JpbmctXFx1MDAzZWF0cl9zYW1wbGVfcmF0ZSkpXFxuK1xcdCAgICAodHhfcmluZy1cXHUwMDNlYXRyX2NvdW50IFxcdTAwM2MgcGYtXFx1MDAzZWF0cl9zYW1wbGVfcmF0ZSkpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdHR4X3JpbmctXFx1MDAzZWF0cl9jb3VudCA9IDA7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5oXFxuaW5kZXggMWU1ZmQ2M2Q0N2Y0N2MuLmY0MTc5OTE0ODdlYWM5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5oXFxuQEAgLTM2Nyw4ICszNjcsNyBAQCBzdHJ1Y3QgaTQwZV9yaW5nIHtcXG4gXFx0dTE2IG5leHRfdG9fY2xlYW47XFxuIFxcdHUxNiB4ZHBfdHhfYWN0aXZlO1xcbiBcXG4tXFx0dTggYXRyX3NhbXBsZV9yYXRlO1xcbi1cXHR1OCBhdHJfY291bnQ7XFxuK1xcdHUzMiBhdHJfY291bnQ7XFxuIFxcbiBcXHRib29sIHJpbmdfYWN0aXZlO1xcdFxcdC8qIGlzIHJpbmcgb25saW5lIG9yIG5vdCAqL1xcbiBcXHRib29sIGFybV93YjtcXHRcXHQvKiBkbyBzb21ldGhpbmcgdG8gYXJtIHdyaXRlIGJhY2sgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTU6MzI6NDAuMTMyNzQ3NTUyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTAwOTc3ODMwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIGk0MGUgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUgb3IgdGhlIGtlcm5lbCwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVlMTdhZmU0NDU3ZDk2YjkyMjllODllMDc5MDgzZGQ2ODVlNTFhYTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDE1OjMyOjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvaTQwZS5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9pNDBlLnJzdFxuaW5kZXggNTFjODg3ZjBkYzgzM2IuLjJjZWE5OGI2MzFiYWExIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvaTQwZS5yc3RcbisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL2k0MGUucnN0XG5AQCAtNDAsNiArNDAsMjYgQEAgUGFyYW1ldGVyc1xuIFxuICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGAwYGAgKGludGVybmFsIGNhbGN1bGF0aW9uIGlzIHVzZWQpLlxuIFxuKy4uIGxpc3QtdGFibGU6OiBEcml2ZXIgc3BlY2lmaWMgcGFyYW1ldGVycyBpbXBsZW1lbnRlZFxuKyAgICA6d2lkdGhzOiA1IDUgOTBcbitcbisgICAgKiAtIE5hbWVcbisgICAgICAtIE1vZGVcbisgICAgICAtIERlc2NyaXB0aW9uXG4rICAgICogLSBgYGF0cl9zYW1wbGVfcmF0ZWBgXG4rICAgICAgLSBydW50aW1lXG4rICAgICAgLSBDb250cm9scyBob3cgZnJlcXVlbnRseSBGbG93IERpcmVjdG9yIEFUUiB1cGRhdGVzIGZsb3cgc3RlZXJpbmdcbisgICAgICAgIGluZm9ybWF0aW9uIGZvciBhY3RpdmUgVENQIGZsb3dzLlxuK1xuKyAgICAgICAgQVRSIHByb2dyYW1zIEZsb3cgRGlyZWN0b3IgZW50cmllcyBiYXNlZCBvbiBzYW1wbGVkIHRyYW5zbWl0dGVkXG4rICAgICAgICBwYWNrZXRzLiBUaGUgc2FtcGxpbmcgaW50ZXJ2YWwgaXMgc3BlY2lmaWVkIGFzIHRoZSBudW1iZXIgb2ZcbisgICAgICAgIHRyYW5zbWl0dGVkIHBhY2tldHMgYmV0d2VlbiBBVFIgdXBkYXRlcy5cbitcbisgICAgICAgIExvd2VyIHZhbHVlcyBpbmNyZWFzZSBGbG93IERpcmVjdG9yIHByb2dyYW1taW5nIGFjdGl2aXR5LCB3aGlsZVxuKyAgICAgICAgaGlnaGVyIHZhbHVlcyByZWR1Y2UgdGhlIHVwZGF0ZSBmcmVxdWVuY3kuXG4rXG4rICAgICAgICBTZXR0aW5nIHRvIGBgMGBgIGRpc2FibGVzIEFUUiBzYW1wbGluZyAobm8gZmlsdGVycyB3aWxsIGJlIHByb2dyYW1tZWQpXG4rICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYDIwYGAuXG4gXG4gSW5mbyB2ZXJzaW9uc1xuID09PT09PT09PT09PT1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oXG5pbmRleCA4M2U3ODA5MTlhYzk3Zi4uMmYyNjRjYmM5MGVmZTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmhcbkBAIC00ODcsNiArNDg3LDcgQEAgc3RydWN0IGk0MGVfcGYge1xuIFx0dTE2IHJzc19zaXplX21heDsgICAgICAgICAgLyogSFcgZGVmaW5lZCBtYXggUlNTIHF1ZXVlcyAqL1xuIFx0dTE2IGZkaXJfcGZfZmlsdGVyX2NvdW50OyAgLyogbnVtIG9mIGd1YXJhbnRlZWQgZmlsdGVycyBmb3IgdGhpcyBQRiAqL1xuIFx0dTE2IG51bV9hbGxvY192c2k7ICAgICAgICAgLyogbnVtIFZTSXMgdGhpcyBkcml2ZXIgc3VwcG9ydHMgKi9cbitcdHUzMiBhdHJfc2FtcGxlX3JhdGU7XG4gXHRib29sIHdvbF9lbjtcbiBcbiBcdHN0cnVjdCBobGlzdF9oZWFkIGZkaXJfZmlsdGVyX2xpc3Q7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmNcbmluZGV4IDIyOTE3OWNjYzEzMTllLi5jZjQ4N2VmZGQ4MDNkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmNcbkBAIC0zMywxMiArMzMsNDggQEAgc3RhdGljIGludCBpNDBlX21heF9tYWNfcGVyX3ZmX2dldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgaW50IGk0MGVfYXRyX3NhbXBsZV9yYXRlX3NldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcbitcdFx0XHRcdCAgICB1MzIgaWQsXG4rXHRcdFx0XHQgICAgc3RydWN0IGRldmxpbmtfcGFyYW1fZ3NldF9jdHggKmN0eCxcbitcdFx0XHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4re1xuK1x0c3RydWN0IGk0MGVfcGYgKnBmID0gZGV2bGlua19wcml2KGRldmxpbmspO1xuK1x0dTMyIHNhbXBsZV9yYXRlID0gY3R4LVx1MDAzZXZhbC52dTMyO1xuK1xuK1x0cGYtXHUwMDNlYXRyX3NhbXBsZV9yYXRlID0gc2FtcGxlX3JhdGU7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBpNDBlX2F0cl9zYW1wbGVfcmF0ZV9nZXQoc3RydWN0IGRldmxpbmsgKmRldmxpbmssXG4rXHRcdFx0XHQgICAgdTMyIGlkLFxuK1x0XHRcdFx0ICAgIHN0cnVjdCBkZXZsaW5rX3BhcmFtX2dzZXRfY3R4ICpjdHgsXG4rXHRcdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuK3tcbitcdHN0cnVjdCBpNDBlX3BmICpwZiA9IGRldmxpbmtfcHJpdihkZXZsaW5rKTtcbitcbitcdGN0eC1cdTAwM2V2YWwudnUzMiA9IHBmLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitlbnVtIGk0MGVfZGxfcGFyYW1faWQge1xuK1x0STQwRV9ERVZMSU5LX1BBUkFNX0lEX0JBU0UgPSBERVZMSU5LX1BBUkFNX0dFTkVSSUNfSURfTUFYLFxuK1x0STQwRV9ERVZMSU5LX1BBUkFNX0lEX0FUUl9TQU1QTEVfUkFURSxcbit9O1xuK1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19wYXJhbSBpNDBlX2RsX3BhcmFtc1tdID0ge1xuIFx0REVWTElOS19QQVJBTV9HRU5FUklDKE1BWF9NQUNfUEVSX1ZGLFxuIFx0XHRcdCAgICAgIEJJVChERVZMSU5LX1BBUkFNX0NNT0RFX1JVTlRJTUUpLFxuIFx0XHRcdCAgICAgIGk0MGVfbWF4X21hY19wZXJfdmZfZ2V0LFxuIFx0XHRcdCAgICAgIGk0MGVfbWF4X21hY19wZXJfdmZfc2V0LFxuIFx0XHRcdCAgICAgIE5VTEwpLFxuK1x0REVWTElOS19QQVJBTV9EUklWRVIoSTQwRV9ERVZMSU5LX1BBUkFNX0lEX0FUUl9TQU1QTEVfUkFURSxcbitcdFx0XHQgICAgIFwiYXRyX3NhbXBsZV9yYXRlXCIsXG4rXHRcdFx0ICAgICBERVZMSU5LX1BBUkFNX1RZUEVfVTMyLFxuK1x0XHRcdCAgICAgQklUKERFVkxJTktfUEFSQU1fQ01PREVfUlVOVElNRSksXG4rXHRcdFx0ICAgICBpNDBlX2F0cl9zYW1wbGVfcmF0ZV9nZXQsXG4rXHRcdFx0ICAgICBpNDBlX2F0cl9zYW1wbGVfcmF0ZV9zZXQsXG4rXHRcdFx0ICAgICBOVUxMKSxcbiB9O1xuIFxuIHN0YXRpYyB2b2lkIGk0MGVfaW5mb19nZXRfZHNuKHN0cnVjdCBpNDBlX3BmICpwZiwgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5pbmRleCBhMDQ2ODMwMDRhNTY3Ny4uNGQ0ZDRiMDdhMGYzYTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5AQCAtMzQ1NCwxMiArMzQ1NCw3IEBAIHN0YXRpYyBpbnQgaTQwZV9jb25maWd1cmVfdHhfcmluZyhzdHJ1Y3QgaTQwZV9yaW5nICpyaW5nKVxuIFx0XHRyaW5nLVx1MDAzZXhza19wb29sID0gaTQwZV94c2tfcG9vbChyaW5nKTtcbiBcbiBcdC8qIHNvbWUgQVRSIHJlbGF0ZWQgdHggcmluZyBpbml0ICovXG4tXHRpZiAodGVzdF9iaXQoSTQwRV9GTEFHX0ZEX0FUUl9FTkEsIHZzaS1cdTAwM2ViYWNrLVx1MDAzZWZsYWdzKSkge1xuLVx0XHRyaW5nLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZSA9IEk0MEVfREVGQVVMVF9BVFJfU0FNUExFX1JBVEU7XG4tXHRcdHJpbmctXHUwMDNlYXRyX2NvdW50ID0gMDtcbi1cdH0gZWxzZSB7XG4tXHRcdHJpbmctXHUwMDNlYXRyX3NhbXBsZV9yYXRlID0gMDtcbi1cdH1cbitcdHJpbmctXHUwMDNlYXRyX2NvdW50ID0gMDtcbiBcbiBcdC8qIGNvbmZpZ3VyZSBYUFMgKi9cbiBcdGk0MGVfY29uZmlnX3hwc190eF9yaW5nKHJpbmcpO1xuQEAgLTEyNzQyLDYgKzEyNzM3LDggQEAgc3RhdGljIGludCBpNDBlX3N3X2luaXQoc3RydWN0IGk0MGVfcGYgKnBmKVxuIFx0XHR9XG4gXHR9XG4gXG4rXHRwZi1cdTAwM2VhdHJfc2FtcGxlX3JhdGUgPSBJNDBFX0RFRkFVTFRfQVRSX1NBTVBMRV9SQVRFO1xuK1xuIFx0aWYgKChwZi1cdTAwM2Vody5mdW5jX2NhcHMuZmRfZmlsdGVyc19ndWFyYW50ZWVkIFx1MDAzZSAwKSB8fFxuIFx0ICAgIChwZi1cdTAwM2Vody5mdW5jX2NhcHMuZmRfZmlsdGVyc19iZXN0X2VmZm9ydCBcdTAwM2UgMCkpIHtcbiBcdFx0c2V0X2JpdChJNDBFX0ZMQUdfRkRfQVRSX0VOQSwgcGYtXHUwMDNlZmxhZ3MpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jXG5pbmRleCA4OTRmMmQwNmQzOWQwNy4uYjM2ZTBmYzliMzFkMjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jXG5AQCAtMjg3OSw3ICsyODc5LDcgQEAgc3RhdGljIHZvaWQgaTQwZV9hdHIoc3RydWN0IGk0MGVfcmluZyAqdHhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0cmV0dXJuO1xuIFxuIFx0LyogaWYgc2FtcGxpbmcgaXMgZGlzYWJsZWQgZG8gbm90aGluZyAqL1xuLVx0aWYgKCF0eF9yaW5nLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZSlcbitcdGlmICghcGYtXHUwMDNlYXRyX3NhbXBsZV9yYXRlKVxuIFx0XHRyZXR1cm47XG4gXG4gXHQvKiBDdXJyZW50bHkgb25seSBJUHY0L0lQdjYgd2l0aCBUQ1AgaXMgc3VwcG9ydGVkICovXG5AQCAtMjkzMSw3ICsyOTMxLDcgQEAgc3RhdGljIHZvaWQgaTQwZV9hdHIoc3RydWN0IGk0MGVfcmluZyAqdHhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGlmICghdGgtXHUwMDNlZmluIFx1MDAyNlx1MDAyNlxuIFx0ICAgICF0aC1cdTAwM2VzeW4gXHUwMDI2XHUwMDI2XG4gXHQgICAgIXRoLVx1MDAzZXJzdCBcdTAwMjZcdTAwMjZcbi1cdCAgICAodHhfcmluZy1cdTAwM2VhdHJfY291bnQgXHUwMDNjIHR4X3JpbmctXHUwMDNlYXRyX3NhbXBsZV9yYXRlKSlcbitcdCAgICAodHhfcmluZy1cdTAwM2VhdHJfY291bnQgXHUwMDNjIHBmLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZSkpXG4gXHRcdHJldHVybjtcbiBcbiBcdHR4X3JpbmctXHUwMDNlYXRyX2NvdW50ID0gMDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaFxuaW5kZXggMWU1ZmQ2M2Q0N2Y0N2MuLmY0MTc5OTE0ODdlYWM5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaFxuQEAgLTM2Nyw4ICszNjcsNyBAQCBzdHJ1Y3QgaTQwZV9yaW5nIHtcbiBcdHUxNiBuZXh0X3RvX2NsZWFuO1xuIFx0dTE2IHhkcF90eF9hY3RpdmU7XG4gXG4tXHR1OCBhdHJfc2FtcGxlX3JhdGU7XG4tXHR1OCBhdHJfY291bnQ7XG4rXHR1MzIgYXRyX2NvdW50O1xuIFxuIFx0Ym9vbCByaW5nX2FjdGl2ZTtcdFx0LyogaXMgcmluZyBvbmxpbmUgb3Igbm90ICovXG4gXHRib29sIGFybV93YjtcdFx0LyogZG8gc29tZXRoaW5nIHRvIGFybSB3cml0ZSBiYWNrICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNTozMjo0MC4xMzI3NTA2ODJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTUzNjg3ODQ2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGk0MGUgRHJpdmVyIFBhdGNoOiBSZWFjaGFiaWxpdHkgYW5kIEltcGFjdCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgaTQwZWAgZHJpdmVyLiBJdCdzIGFkZGluZyBhIGRldmxpbmsgcGFyYW1ldGVyLCBgYXRyX3NhbXBsZV9yYXRlYCwgdG8gY29udHJvbCBob3cgb2Z0ZW4gdGhlIEZsb3cgRGlyZWN0b3IgQVRSIGlzIHVwZGF0ZWQuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIGJ1dCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyBhbHdheXMgYWJvdXQgaG93IHdlIGNhbiAqYWN0dWFsbHkqIHRyaWdnZXIgdGhpcyBjb2RlIGFuZCB0ZXN0IGl0LiBUaGUgcGF0Y2ggdG91Y2hlcyB0aGUgdXN1YWwgc3VzcGVjdHM6IGRvY3VtZW50YXRpb24sIGhlYWRlciBmaWxlcywgYW5kIHRoZSBjb3JlIGRyaXZlciBmaWxlcyAtIGBpNDBlX2RldmxpbmsuY2AsIGBpNDBlX21haW4uY2AsIGBpNDBlX3R4cnguY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbmFsIGltcGFjdCBhbmQgaWYgSSBjYW4gZXZlbiBnZXQgdGhpcyB0byBydW4gaW4gYSB0ZXN0IGVudmlyb25tZW50LlxuXG5UaGUga2V5IGNoYW5nZXMgaW52b2x2ZSBhZGRpbmcgdGhlIGBpNDBlX2F0cl9zYW1wbGVfcmF0ZV9zZXRgIGFuZCBgaTQwZV9hdHJfc2FtcGxlX3JhdGVfZ2V0YCBmdW5jdGlvbnMgaW4gYGk0MGVfZGV2bGluay5jYC4gQWxzbywgaXQgbG9va3MgbGlrZSB0aGV5J3JlIG1vZGlmeWluZyBob3cgdGhlIGBpNDBlX2F0cmAgZnVuY3Rpb24gYW5kIGBpNDBlX2NvbmZpZ3VyZV90eF9yaW5nYCBiZWhhdmU7IHNwZWNpZmljYWxseSwgdGhleSdyZSB1c2luZyBhIHBlci1QRiAoUGh5c2ljYWwgRnVuY3Rpb24pIGBhdHJfc2FtcGxlX3JhdGVgIHJhdGhlciB0aGFuIHJpbmctc3BlY2lmaWMgdmFyaWFibGVzLiBBZGRpdGlvbmFsbHksIGluIGBpNDBlX3N3X2luaXRgLCB0aGV5J3JlIHNldHRpbmcgYSBkZWZhdWx0IGBhdHJfc2FtcGxlX3JhdGVgLiBUaGVzZSBhcmUgYWxsIGZhaXJseSB0eXBpY2FsIGRyaXZlciBjaGFuZ2VzLCBidXQgdGhlIHJlYWwgcXVlc3Rpb24gaXM6IGNhbiBJIGdldCB0byB0aGUgbmV3IGNvZGU/XG5cblRoZSBiaWcgcHJvYmxlbSBJIHNlZSBpcyB0aGF0IGBpNDBlYCBpcyB0aGUgSW50ZWwgWEw3MTAgbmV0d29yayBkcml2ZXIsIGFuZCBteSBpbW1lZGlhdGUgY29uY2VybiBpcyB3aGV0aGVyIHRoaXMgaXMgc29tZXRoaW5nIEkgY2FuIGVtdWxhdGUuIE15IGtub3dsZWRnZSBvZiBRRU1VIGNvbWVzIHRvIG1pbmQuIExldCBtZSBzZWUuLi4gSSBrbm93IFFFTVUgc3VwcG9ydHMgYSB2YXJpZXR5IG9mIG5ldHdvcmsgZGV2aWNlcywgYnV0IGRvZXMgaXQgc3VwcG9ydCBgaTQwZWA/IEkgY2FuIGNoZWNrIHdoYXQgaXQgZG9lcyBzdXBwb3J0IC0gYGUxMDAwYCwgYGUxMDAwZWAsIGBpZ2JgLCBhbmQgdGhlIG90aGVycy4gQWgsIGxvb2tzIGxpa2UgaXQgZG9lc24ndC4gTm8gYGk0MGVgIHRoZXJlLiBOb3cgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gdG8gZ2V0IHBhc3QgdGhpcy4gU3l6a2FsbGVyLCBpdCBzZWVtcywgZG9lc24ndCBoYXZlIGFuIGk0MGUgZW11bGF0b3IgZWl0aGVyLCB3aGljaCBpcyBhIG1ham9yIHJlZCBmbGFnLlxuXG5UaGUgaW1wbGljYXRpb25zIGFyZSBwcmV0dHkgc3RhcmsuIElmIGBpNDBlYCBpc24ndCBlbXVsYXRlZCwgdGhlbiB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIHRoZSBkZXZpY2Ugd2lsbCBuZXZlciBzdWNjZWVkLCBhbmQgYXMgYSByZXN1bHQsIHRoZSBkZXZsaW5rIHBhcmFtZXRlcnMgd29uJ3QgZXZlbiBiZSByZWdpc3RlcmVkLiBUaGF0IG1lYW5zIHRoZSBgdHgvcnhgIHBhdGhzLCB3aGljaCB1c2UgdGhpcyBuZXcgcGFyYW1ldGVyLCB3b24ndCBleGVjdXRlIGVpdGhlci4gU28sIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgaTQwZWAgY2FuIGJlIHByb2JlZCBpbiBteSB0ZXN0IGVudmlyb25tZW50LiBJIGtub3cgYGk0MGVgIGlzIGEgUENJIGRldmljZS4gSSBjYW4gdXNlIHRoZSBQQ0kgSURzIHRvIHRyeSB0byBmaWd1cmUgb3V0IHdoYXQgdHlwZSBvZiBkZXZpY2UgdGhpcyBpcy5cblxuV2FpdCwgbG9va2luZyBmdXJ0aGVyLCBRRU1VIGRvZXMgKm5vdCogZW11bGF0ZSB0aGUgWEw3MTAuIFNvIHRoYXQncyB0aGUgZW5kIG9mIG15IGVtdWxhdGlvbiBob3Blcy4gRG9lcyB0aGF0IG1lYW4gdGhlcmUncyBubyB3YXkgdG8gdHJpZ2dlciBkZXZsaW5rIHBhcmFtZXRlciBzZXR0aW5nIHVubGVzcyBJIGhhdmUgdGhlIHBoeXNpY2FsIGRldmljZT8gUHJldHR5IG11Y2guIERldmxpbmsgcGFyYW1ldGVycyBhcmUgdHlwaWNhbGx5IHJlZ2lzdGVyZWQgcGVyIGRldmljZSBpbnN0YW5jZSwgYW5kIHRoYXQncyB1c3VhbGx5IGRvbmUgZHVyaW5nIHRoZSBwcm9iZSBmdW5jdGlvbi4gTGV0IG1lIGdvIGJhY2sgdG8gYGk0MGVfZGV2bGluay5jYCBhbmQgY29uZmlybSBleGFjdGx5IGhvdyB0aGUgcGFyYW1ldGVyIGlzIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMTQsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNTozMjo1MS42Njk2MzI0MjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyNjc4MzMyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpNDBlX2RldmxpbmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9NYWtlZmlsZT0xMz1pNDBlLXkgOj0gaTQwZV9tYWluLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9NYWtlZmlsZS0yNy1cXHRpNDBlX3hzay5vXFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvTWFrZWZpbGU6Mjg6XFx0aTQwZV9kZXZsaW5rLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL01ha2VmaWxlLTI5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmgtMTctI2luY2x1ZGUgXFxcImk0MGVfZGVidWcuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaDoxODojaW5jbHVkZSBcXFwiaTQwZV9kZXZsaW5rLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmgtMTktI2luY2x1ZGUgXFxcImk0MGVfaW8uaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtNS0jaW5jbHVkZSBcXFwiaTQwZS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6NjojaW5jbHVkZSBcXFwiaTQwZV9kZXZsaW5rLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy03LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYz0xMTA9c3RhdGljIHZvaWQgaTQwZV9pbmZvX3BiYShzdHJ1Y3QgaTQwZV9odyAqaHcsIGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MTE3OmVudW0gaTQwZV9kZXZsaW5rX3ZlcnNpb25fdHlwZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xMTgtXFx0STQwRV9ETF9WRVJTSU9OX0ZJWEVELFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxMjI6c3RhdGljIGludCBpNDBlX2RldmxpbmtfaW5mb19wdXQoc3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJlcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjEyMzpcXHRcXHRcXHRcXHQgZW51bSBpNDBlX2RldmxpbmtfdmVyc2lvbl90eXBlIHR5cGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xMjQtXFx0XFx0XFx0XFx0IGNvbnN0IGNoYXIgKmtleSwgY29uc3QgY2hhciAqdmFsdWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTEzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjEzODpzdGF0aWMgaW50IGk0MGVfZGV2bGlua19pbmZvX2dldChzdHJ1Y3QgZGV2bGluayAqZGwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xMzktXFx0XFx0XFx0XFx0IHN0cnVjdCBkZXZsaW5rX2luZm9fcmVxICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTE1Mi1cXHRpNDBlX2luZm9fZndfbWdtdChodywgYnVmLCBzaXplb2YoYnVmKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxNTM6XFx0ZXJyID0gaTQwZV9kZXZsaW5rX2luZm9fcHV0KHJlcSwgSTQwRV9ETF9WRVJTSU9OX1JVTk5JTkcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xNTQtXFx0XFx0XFx0XFx0ICAgIERFVkxJTktfSU5GT19WRVJTSU9OX0dFTkVSSUNfRldfTUdNVCwgYnVmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTU4LVxcdGk0MGVfaW5mb19md19tZ210X2J1aWxkKGh3LCBidWYsIHNpemVvZihidWYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjE1OTpcXHRlcnIgPSBpNDBlX2RldmxpbmtfaW5mb19wdXQocmVxLCBJNDBFX0RMX1ZFUlNJT05fUlVOTklORyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTE2MC1cXHRcXHRcXHRcXHQgICAgXFxcImZ3Lm1nbXQuYnVpbGRcXFwiLCBidWYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xNjQtXFx0aTQwZV9pbmZvX2Z3X2FwaShodywgYnVmLCBzaXplb2YoYnVmKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxNjU6XFx0ZXJyID0gaTQwZV9kZXZsaW5rX2luZm9fcHV0KHJlcSwgSTQwRV9ETF9WRVJTSU9OX1JVTk5JTkcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xNjYtXFx0XFx0XFx0XFx0ICAgIERFVkxJTktfSU5GT19WRVJTSU9OX0dFTkVSSUNfRldfTUdNVF9BUEksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTE3MS1cXHRpNDBlX2luZm9fbnZtX3ZlcihodywgYnVmLCBzaXplb2YoYnVmKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxNzI6XFx0ZXJyID0gaTQwZV9kZXZsaW5rX2luZm9fcHV0KHJlcSwgSTQwRV9ETF9WRVJTSU9OX1JVTk5JTkcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xNzMtXFx0XFx0XFx0XFx0ICAgIFxcXCJmdy5wc2lkLmFwaVxcXCIsIGJ1Zik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTE3Ny1cXHRpNDBlX2luZm9fZWV0cmFjayhodywgYnVmLCBzaXplb2YoYnVmKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxNzg6XFx0ZXJyID0gaTQwZV9kZXZsaW5rX2luZm9fcHV0KHJlcSwgSTQwRV9ETF9WRVJTSU9OX1JVTk5JTkcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xNzktXFx0XFx0XFx0XFx0ICAgIERFVkxJTktfSU5GT19WRVJTSU9OX0dFTkVSSUNfRldfQlVORExFX0lELFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xODQtXFx0aTQwZV9pbmZvX2NpdmRfdmVyKGh3LCBidWYsIHNpemVvZihidWYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjE4NTpcXHRlcnIgPSBpNDBlX2RldmxpbmtfaW5mb19wdXQocmVxLCBJNDBFX0RMX1ZFUlNJT05fUlVOTklORyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTE4Ni1cXHRcXHRcXHRcXHQgICAgREVWTElOS19JTkZPX1ZFUlNJT05fR0VORVJJQ19GV19VTkRJLCBidWYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xOTAtXFx0aTQwZV9pbmZvX3BiYShodywgYnVmLCBzaXplb2YoYnVmKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxOTE6XFx0ZXJyID0gaTQwZV9kZXZsaW5rX2luZm9fcHV0KHJlcSwgSTQwRV9ETF9WRVJTSU9OX0ZJWEVELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTkyLVxcdFxcdFxcdFxcdCAgICBERVZMSU5LX0lORk9fVkVSU0lPTl9HRU5FUklDX0JPQVJEX0lELCBidWYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xOTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxOTc6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX29wcyBpNDBlX2Rldmxpbmtfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MTk4OlxcdC5pbmZvX2dldCA9IGk0MGVfZGV2bGlua19pbmZvX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTE5OS19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYz0yMDg9c3RydWN0IGk0MGVfcGYgKmk0MGVfYWxsb2NfcGYoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoyMTI6XFx0ZGV2bGluayA9IGRldmxpbmtfYWxsb2MoXFx1MDAyNmk0MGVfZGV2bGlua19vcHMsIHNpemVvZihzdHJ1Y3QgaTQwZV9wZiksIGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yMTMtXFx0aWYgKCFkZXZsaW5rKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYz0yMjU9dm9pZCBpNDBlX2ZyZWVfcGYoc3RydWN0IGk0MGVfcGYgKnBmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yMzItLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoyMzM6ICogaTQwZV9kZXZsaW5rX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgZGV2bGluayBpbnRlcmZhY2UgZm9yIHRoaXMgUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTIzNC0gKiBAcGY6IHRoZSBQRiB0byByZWdpc3RlciB0aGUgZGV2bGluayBmb3IuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTIzNy0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoyMzg6dm9pZCBpNDBlX2RldmxpbmtfcmVnaXN0ZXIoc3RydWN0IGk0MGVfcGYgKnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjU0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MjU1OiAqIGk0MGVfZGV2bGlua191bnJlZ2lzdGVyIC0gVW5yZWdpc3RlciBkZXZsaW5rIHJlc291cmNlcyBmb3IgdGhpcyBQRi5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTI1Ni0gKiBAcGY6IHRoZSBQRiBzdHJ1Y3R1cmUgdG8gY2xlYW51cFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yNTktICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MjYwOnZvaWQgaTQwZV9kZXZsaW5rX3VucmVnaXN0ZXIoc3RydWN0IGk0MGVfcGYgKnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjY5LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MjcwOiAqIGk0MGVfZGV2bGlua19zZXRfc3dpdGNoX2lkIC0gU2V0IHVuaXF1ZSBzd2l0Y2ggaWQgYmFzZWQgb24gcGNpIGRzblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjcxLSAqIEBwZjogdGhlIFBGIHRvIGNyZWF0ZSBhIGRldmxpbmsgcG9ydCBmb3JcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjczLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6Mjc0OnN0YXRpYyB2b2lkIGk0MGVfZGV2bGlua19zZXRfc3dpdGNoX2lkKHN0cnVjdCBpNDBlX3BmICpwZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTI3NS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IG5ldGRldl9waHlzX2l0ZW1faWQgKnBwaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTI4My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjI4NDogKiBpNDBlX2RldmxpbmtfY3JlYXRlX3BvcnQgLSBDcmVhdGUgYSBkZXZsaW5rIHBvcnQgZm9yIHRoaXMgUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTI4NS0gKiBAcGY6IHRoZSBQRiB0byBjcmVhdGUgYSBwb3J0IGZvclxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yOTItICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MjkzOmludCBpNDBlX2RldmxpbmtfY3JlYXRlX3BvcnQoc3RydWN0IGk0MGVfcGYgKnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMzAxLVxcdGF0dHJzLnBoeXMucG9ydF9udW1iZXIgPSBwZi1cXHUwMDNlaHcucGZfaWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzozMDI6XFx0aTQwZV9kZXZsaW5rX3NldF9zd2l0Y2hfaWQocGYsIFxcdTAwMjZhdHRycy5zd2l0Y2hfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMzAzLVxcdGRldmxpbmtfcG9ydF9hdHRyc19zZXQoXFx1MDAyNnBmLVxcdTAwM2VkZXZsaW5rX3BvcnQsIFxcdTAwMjZhdHRycyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTMxMy0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjMxNDogKiBpNDBlX2RldmxpbmtfZGVzdHJveV9wb3J0IC0gRGVzdHJveSB0aGUgZGV2bGlua19wb3J0IGZvciB0aGlzIFBGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0zMTUtICogQHBmOiB0aGUgUEYgdG8gY2xlYW51cFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0zMTgtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MzE5OnZvaWQgaTQwZV9kZXZsaW5rX2Rlc3Ryb3lfcG9ydChzdHJ1Y3QgaTQwZV9wZiAqcGYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0zMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuaD0xMj12b2lkIGk0MGVfZnJlZV9wZihzdHJ1Y3QgaTQwZV9wZiAqcGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmg6MTM6dm9pZCBpNDBlX2RldmxpbmtfcmVnaXN0ZXIoc3RydWN0IGk0MGVfcGYgKnBmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5oOjE0OnZvaWQgaTQwZV9kZXZsaW5rX3VucmVnaXN0ZXIoc3RydWN0IGk0MGVfcGYgKnBmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5oOjE1OmludCBpNDBlX2RldmxpbmtfY3JlYXRlX3BvcnQoc3RydWN0IGk0MGVfcGYgKnBmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5oOjE2OnZvaWQgaTQwZV9kZXZsaW5rX2Rlc3Ryb3lfcG9ydChzdHJ1Y3QgaTQwZV9wZiAqcGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmgtMTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jPTE0MDk2PWludCBpNDBlX3ZzaV9yZWxlYXNlKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xNDEzMy1cXHRpZiAodnNpLVxcdTAwM2V0eXBlID09IEk0MEVfVlNJX01BSU4pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxNDEzNDpcXHRcXHRpNDBlX2RldmxpbmtfZGVzdHJveV9wb3J0KHBmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE0MTM1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNDI1NT1zdGF0aWMgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9yZWluaXRfc2V0dXAoc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE0MzE1LVxcdGlmICh2c2ktXFx1MDAzZXR5cGUgPT0gSTQwRV9WU0lfTUFJTilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjE0MzE2OlxcdFxcdGk0MGVfZGV2bGlua19kZXN0cm95X3BvcnQocGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQzMTctXFx0aTQwZV9hcV9kZWxldGVfZWxlbWVudChcXHUwMDI2cGYtXFx1MDAzZWh3LCB2c2ktXFx1MDAzZXNlaWQsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNDMzNj1zdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3NldHVwKHN0cnVjdCBpNDBlX3BmICpwZiwgdTggdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQ0NDItXFx0XFx0aWYgKHZzaS1cXHUwMDNldHlwZSA9PSBJNDBFX1ZTSV9NQUlOKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxNDQ0MzpcXHRcXHRcXHRyZXQgPSBpNDBlX2RldmxpbmtfY3JlYXRlX3BvcnQocGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQ0NDQtXFx0XFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQ0OTgtXFx0aWYgKHZzaS1cXHUwMDNldHlwZSA9PSBJNDBFX1ZTSV9NQUlOKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MTQ0OTk6XFx0XFx0aTQwZV9kZXZsaW5rX2Rlc3Ryb3lfcG9ydChwZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xNDUwMC1lcnJfbmV0ZGV2Olxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNTUzMT1zdGF0aWMgaW50IGk0MGVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE2MTAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MTYxMDQ6XFx0aTQwZV9kZXZsaW5rX3JlZ2lzdGVyKHBmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE2MTA1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNjE0Nj1zdGF0aWMgdm9pZCBpNDBlX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTYxNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxNjE1NTpcXHRpNDBlX2RldmxpbmtfdW5yZWdpc3RlcihwZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xNjE1Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTU6MzI6NTMuODk2NDI3NjE5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU2NjI3MzEzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIGk0MGUgRHJpdmVyIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgYGk0MGVgIGRyaXZlciwgYXMgYSBQQ0kgZHJpdmVyLCBpcyByZWxpYW50IG9uIGEgUENJIGRldmljZSBiZWluZyBwcmVzZW50LiBTaW1wbGUgZW5vdWdoLiBTaW5jZSBRRU1VIGRvZXNuJ3QgZGlyZWN0bHkgZW11bGF0ZSB0aGUgSW50ZWwgaTQwZSBoYXJkd2FyZSwgdGhlIGRyaXZlciBvYnZpb3VzbHkgd29uJ3QgYmluZCBhbmQgaXRzIHByb2JlIGZ1bmN0aW9uLCBgaTQwZV9wcm9iZWAsIHdvbid0IGdldCBjYWxsZWQuIFRoYXQncyB0aGUgYmFzZWxpbmUuXG5cbk5vdywgbXkgbWluZCBzaGlmdHMgdG8gc3l6a2FsbGVyLiBEb2VzIHN5emthbGxlciBoYXZlIGEgZ2VuZXJhbCBtZWNoYW5pc20gdG8gaW5qZWN0IFBDSSBkZXZpY2VzIGFraW4gdG8gaG93IGl0IGhhbmRsZXMgVVNCIHdpdGggYHN5el91c2JfY29ubmVjdGAsIG9yIHBlcmhhcHMgaW5qZWN0cyBQQ0kgZGV2aWNlcyB1c2luZyBhIHZpcnR1YWwgaG9zdCBjb250cm9sbGVyIGludGVyZmFjZSAoYHZoY2lgKSBsaWtlIGl0IG1pZ2h0IGRvIHdpdGggYSB2aXJ0dWFsIFBDSSBkZXZpY2U/IE5vLiBObyBnZW5lcmljIFBDSSBkZXZpY2UgZW11bGF0aW9uLiBJdCBzZWVtcyBzeXprYWxsZXIgb2ZmZXJzIHNwZWNpYWxpemVkIFwiaW5qZWN0b3JzXCIgZm9yIGRpZmZlcmVudCBoYXJkd2FyZSBzdWJzeXN0ZW1zLiBVU0Igd2l0aCBgc3l6X3VzYl9jb25uZWN0YCwgbWFjODAyMTEgd2l0aCBgc3l6XzgwMjExX2luamVjdF9mcmFtZWAsIGV0Yy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB3cm9uZyBoZXJlLlxuXG5Ib2xkIG9uLCBJIGFtIHdyb25nLiBEb2VzIHN5emthbGxlciBvZmZlciBzb21ldGhpbmcgbGlrZSBhIFBDSSBmdXp6ZXI/IElzIHRoZXJlIGFjdHVhbGx5IFBDSSBmdXp6aW5nIGluIHN5emthbGxlcj8gTGV0J3MgY2hlY2suIFdhaXQgYSBtaW51dGUuIEl0IGRvZXMgbm90IGxvb2sgbGlrZSBgc3l6X3BjaV9kZXZpY2VfYWRkYCBleGlzdHMuIFN5emthbGxlciBkb2Vzbid0IGhhdmUgYSAqZ2VuZXJhbCogUENJIGVtdWxhdG9yLCBqdXN0IHNwZWNpYWxpemVkIG1lY2hhbmlzbXMuIFRoZXkgc2VlbSB0byB1c2UgYHZoY2lgIGZvciBVU0IsIGBtYWM4MDIxMV9od3NpbWAgZm9yIHdpZmksIGB2bmV0YCBmb3IgbmV0d29yaywgYHZrbXNgIGZvciBEUk0sIGB1aW5wdXRgIGZvciBpbnB1dC5cblxuQWxyaWdodCwgd2hhdCBhYm91dCBgdmZpb2A/IFRoYXQgbWlnaHQgYmUgYW4gYXZlbnVlIHRvIGNvbnNpZGVyLiBDb3VsZCB0aGF0IGJlIGEgd2F5IHRvIHJlYWNoIGBpNDBlYCBjb2RlP1xuXG5VbHRpbWF0ZWx5LCB0aGUgcXVlc3Rpb24gaXMsICpjYW4qIHdlIHJlYWNoIHRoZSBgaTQwZWAgY29kZSB0aHJvdWdoIHN5emthbGxlcj8gVGhlIG9idmlvdXMgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiBgaTQwZWAgaXRzZWxmIGlzIGFjdGl2ZWx5IHRhcmdldGVkIGFuZCBmdXp6ZWQgd2l0aGluIHRoZSBzeXprYWxsZXIgZnJhbWV3b3JrLiBMZXQncyBjb25maXJtIGlmIGl0J3MgY3VycmVudGx5IHBhcnQgb2YgdGhlIGZ1enppbmcgdGFyZ2V0IGxpc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTQzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjMzOjAxLjQ2MjcwNTIyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0ODA0NDc0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpNDBlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTU6MzM6MDEuNTI3NTI0NzE0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjgzNTMzMjE5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBpNDBlIENvZGUgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhlIHRhc2sgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggY29udGFpbnMgY29kZSB0aGF0J3MgKnVucmVhY2hhYmxlKiBpbiB2aXJ0dWFsaXplZCBzZXR1cHMgbGlrZSBHQ0Ugb3IgUUVNVS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBgaTQwZWAgZHJpdmVyIGNvZGUgY2FuIGV2ZW4gYmUgZXhlY3V0ZWQgaW4gdGhvc2UgZW52aXJvbm1lbnRzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2hlY2sgYHN5emthbGxlcmAgZm9yIGFueSBkZXNjcmlwdGlvbnMgcmVsYXRlZCB0byBgaTQwZWAsIGJ1dCBtYXliZSBJIGRvbid0IGV2ZW4gbmVlZCB0byBnbyB0aGF0IGZhci4gSSBjYW4ganVzdCBmb2N1cyBvbiByZWFjaGFiaWxpdHkuXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIHRoYXQgY29kZSBwYXRocyByZXF1aXJpbmcgaGFyZHdhcmUgZW11bGF0b3JzIChsaWtlIGBtYWM4MDIxMV9od3NpbWApIHNob3VsZCByZXN1bHQgaW4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBgaTQwZWAgZHJpdmVyIGlzIGZvciBhIHBoeXNpY2FsIG5ldHdvcmsgY2FyZC4gVGhlcmUncyBubyBlcXVpdmFsZW50IHNvZnR3YXJlIGVtdWxhdG9yIGxpa2Ugd2UgaGF2ZSBmb3Igb3RoZXIgZHJpdmVycywgYXQgbGVhc3Qgbm90IHRoYXQgSSdtIGF3YXJlIG9mIGluIHRoZSBrZXJuZWwuIFNvLCB1bmxlc3MgSSdtIG1pc3Npbmcgc29tZXRoaW5nIGNydWNpYWwsIHJlYWNoaW5nIGBpNDBlYCBjb2RlIHNlZW1zIGltcG9zc2libGUgaW4gdGhlc2UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5XYWl0LCBsZXQgbWUgbWFrZSBzdXJlIEknbSBub3Qgb3Zlcmxvb2tpbmcgc29tZXRoaW5nLiBJcyB0aGVyZSAqYW55KiBgaTQwZWAgZW11bGF0b3IgaW4gdGhlIGtlcm5lbCwgc29tZXRoaW5nIEknbSBmb3JnZXR0aW5nPyBObywgbm90IHRoYXQgSSByZWNhbGwuIEhvdyBhYm91dCB0cmlnZ2VyaW5nIGBpNDBlX2F0cl9zYW1wbGVfcmF0ZV9zZXRgIGRpcmVjdGx5PyBObywgdGhhdCdzIG5vdCBwb3NzaWJsZSBlaXRoZXIuIGBpNDBlX2RldmxpbmtfcmVnaXN0ZXJgLCB3aGljaCBJIGFzc3VtZSBpcyBrZXksIGlzIGNhbGxlZCBmcm9tIGBpNDBlX3Byb2JlYCwgYW5kIGBpNDBlX3Byb2JlYCByZXF1aXJlcyB0aGUgUENJIGRldmljZS5cblxuQWxyaWdodCwgbGV0J3MgZG91YmxlLWNoZWNrIGFnYWluLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0J3MgbG9vayBhdCBpdCBmcm9tIGEgZGlmZmVyZW50IGFuZ2xlLiBJcyB0aGVyZSBzb21lIHZpcnR1YWwgYnVzIHRoYXQgKmNvdWxkKiBwcm9iZSBhbmQgbG9hZCB0aGUgYGk0MGVgIGRyaXZlcj8gTm8sIGl0J3MgYSBQQ0kgZHJpdmVyLCBzbyB0aGF0IHdvdWxkbid0IGhhcHBlbi4gUmlnaHQsIGxldCdzIGNoZWNrIGBpNDBlX21haW4uY2AgYW5kIGNvbmZpcm0gdGhhdCBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAgaXMgd2hhdCdzIGJlaW5nIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzYxLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjMzOjA4LjM2Mjg2MTQ0N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzMwMjk5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNjYzND1zdGF0aWMgaW50IF9faW5pdCBpNDBlX2luaXRfbW9kdWxlKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE2NjU0LVxcdGk0MGVfZGJnX2luaXQoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjE2NjU1OlxcdGVyciA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmk0MGVfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE2NjU2LVxcdGlmIChlcnIpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTU6MzM6MDguNDI2MTc4NzVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzE2Mjc1OTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyB0aGlzIGxvb2tzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgUENJIGRyaXZlciBwYXRjaCDigJMgdGhlIEludGVsIGk0MGUgRXRoZXJuZXQgZHJpdmVyIHRvIGJlIHByZWNpc2UuIFRoZSBjcml0aWNhbCBpc3N1ZSBpcywgd2l0aG91dCB0aGUgYWN0dWFsIHBoeXNpY2FsIGk0MGUgaGFyZHdhcmUgb3IgYSBRRU1VIGVtdWxhdGlvbiB0aGF0IGFjY3VyYXRlbHkgbW9kZWxzIHRoZSBkZXZpY2UsIHRoZSBkcml2ZXIncyBgcHJvYmVgIGZ1bmN0aW9uLCBhbmQgdGhlcmVmb3JlICphbnkqIG9mIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzLCB3aWxsIHNpbXBseSBuZXZlciBnZXQgY2FsbGVkLiBUaGF0IG1lYW5zIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBzdGFuZGFyZCBRRU1VIGluc3RhbmNlcywgdGhpcyBwYXRjaCBpcyB1bnJlYWNoYWJsZS5cblxuSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJhdGlvbmFsZSBpcyB0aGF0IHRoaXMgdGFyZ2V0cyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIsIHRoZSBJbnRlbCBpNDBlLCBhbmQgZnV6emluZyBpdCByZXF1aXJlcyBlaXRoZXIgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgdmVyeSBzcGVjaWZpYywgYW5kIGxpa2VseSB1bmF2YWlsYWJsZSwgZW11bGF0b3Igb2YgaXQuIEkgZG9uJ3Qgc2VlIGFueSB2YWx1ZSBpbiB0cnlpbmcgdG8gZnV6eiBjb2RlIHRoYXQgd29uJ3QgZXhlY3V0ZS5cblxuSnVzdCBkb3VibGUtY2hlY2tpbmcsIHRoZXJlJ3Mgbm8gYENPTkZJR19JNDBFYCBmbGFnIGRlZmluZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24sIHdoaWNoIHdvdWxkIGhhdmUgYXQgbGVhc3QgZ2l2ZW4gbWUgc29tZXRoaW5nIHRvIGxvb2sgZm9yLiBBbmQgc2luY2UgaXQncyBub3Qgd29ydGggZnV6emluZywgSSBkb24ndCBuZWVkIHRvIGJvdGhlciB3aXRoIGNvbmZpZyBkZXRhaWxzIG9yIGFueSBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIG9uZS5cblxuTGV0IG1lIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBwYXRjaCBxdWlja2x5LiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGRldmxpbmsgcGFyYW1ldGVyIGBhdHJfc2FtcGxlX3JhdGVgIHRvIHRoZSBgaTQwZWAgZHJpdmVyLiBJdCBtb2RpZmllcyBgaTQwZV90eHJ4LmNgIHRvIHVzZSBgcGYtXHUwMDNlYXRyX3NhbXBsZV9yYXRlYCBhbmQgYGk0MGVfbWFpbi5jYCB0byBpbml0aWFsaXplIHRoZSBwYXJhbWV0ZXIgYHBmLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZWAuIEl0J3MgYWxsIHRpZ2h0bHkgc2NvcGVkIHdpdGhpbiB0aGUgYGk0MGVgIGRyaXZlciBpdHNlbGYuXG5cblNvLCB0aGUgZGVmaW5pdGl2ZSByZWFzb25pbmc6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBpNDBlIEV0aGVybmV0IGRyaXZlciwgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBCZWNhdXNlIHRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0b3Igb2YgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIGluIHRoZSBjdXJyZW50IGtlcm5lbCwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiXG5cbkknbGwgcHJvY2VlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzMxLCJPdXRwdXRUb2tlbnMiOjg0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjMzOjE1LjE0MjQ4MDA4NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBpNDBlIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIGk0MGUgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUgb3IgdGhlIGtlcm5lbCwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowz4j8n[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 15:25:57 +0000 UTC FinishedAt: 2026-07-01 15:33:16 +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+CgkJCTx0ZD4yMDI2LzA3LzAxIDE1OjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBpNDBlIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNTozMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGVlMTdhZmU0NDU3ZDk2YjkyMjllODllMDc5MDgzZGQ2ODVlNTFhYTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDE1OjMyOjM4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL2k0MGUucnN0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvaTQwZS5yc3RcbmluZGV4IDUxYzg4N2YwZGM4MzNiLi4yY2VhOThiNjMxYmFhMSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL2k0MGUucnN0XG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9pNDBlLnJzdFxuQEAgLTQwLDYgJiM0Mzs0MCwyNiBAQCBQYXJhbWV0ZXJzXG4gXG4gICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYDBgYCAoaW50ZXJuYWwgY2FsY3VsYXRpb24gaXMgdXNlZCkuXG4gXG4mIzQzOy4uIGxpc3QtdGFibGU6OiBEcml2ZXIgc3BlY2lmaWMgcGFyYW1ldGVycyBpbXBsZW1lbnRlZFxuJiM0MzsgICAgOndpZHRoczogNSA1IDkwXG4mIzQzO1xuJiM0MzsgICAgKiAtIE5hbWVcbiYjNDM7ICAgICAgLSBNb2RlXG4mIzQzOyAgICAgIC0gRGVzY3JpcHRpb25cbiYjNDM7ICAgICogLSBgYGF0cl9zYW1wbGVfcmF0ZWBgXG4mIzQzOyAgICAgIC0gcnVudGltZVxuJiM0MzsgICAgICAtIENvbnRyb2xzIGhvdyBmcmVxdWVudGx5IEZsb3cgRGlyZWN0b3IgQVRSIHVwZGF0ZXMgZmxvdyBzdGVlcmluZ1xuJiM0MzsgICAgICAgIGluZm9ybWF0aW9uIGZvciBhY3RpdmUgVENQIGZsb3dzLlxuJiM0MztcbiYjNDM7ICAgICAgICBBVFIgcHJvZ3JhbXMgRmxvdyBEaXJlY3RvciBlbnRyaWVzIGJhc2VkIG9uIHNhbXBsZWQgdHJhbnNtaXR0ZWRcbiYjNDM7ICAgICAgICBwYWNrZXRzLiBUaGUgc2FtcGxpbmcgaW50ZXJ2YWwgaXMgc3BlY2lmaWVkIGFzIHRoZSBudW1iZXIgb2ZcbiYjNDM7ICAgICAgICB0cmFuc21pdHRlZCBwYWNrZXRzIGJldHdlZW4gQVRSIHVwZGF0ZXMuXG4mIzQzO1xuJiM0MzsgICAgICAgIExvd2VyIHZhbHVlcyBpbmNyZWFzZSBGbG93IERpcmVjdG9yIHByb2dyYW1taW5nIGFjdGl2aXR5LCB3aGlsZVxuJiM0MzsgICAgICAgIGhpZ2hlciB2YWx1ZXMgcmVkdWNlIHRoZSB1cGRhdGUgZnJlcXVlbmN5LlxuJiM0MztcbiYjNDM7ICAgICAgICBTZXR0aW5nIHRvIGBgMGBgIGRpc2FibGVzIEFUUiBzYW1wbGluZyAobm8gZmlsdGVycyB3aWxsIGJlIHByb2dyYW1tZWQpXG4mIzQzOyAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGAyMGBgLlxuIFxuIEluZm8gdmVyc2lvbnNcbiA9PT09PT09PT09PT09XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaFxuaW5kZXggODNlNzgwOTE5YWM5N2YuLjJmMjY0Y2JjOTBlZmUzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oXG5AQCAtNDg3LDYgJiM0Mzs0ODcsNyBAQCBzdHJ1Y3QgaTQwZV9wZiB7XG4gXHR1MTYgcnNzX3NpemVfbWF4OyAgICAgICAgICAvKiBIVyBkZWZpbmVkIG1heCBSU1MgcXVldWVzICovXG4gXHR1MTYgZmRpcl9wZl9maWx0ZXJfY291bnQ7ICAvKiBudW0gb2YgZ3VhcmFudGVlZCBmaWx0ZXJzIGZvciB0aGlzIFBGICovXG4gXHR1MTYgbnVtX2FsbG9jX3ZzaTsgICAgICAgICAvKiBudW0gVlNJcyB0aGlzIGRyaXZlciBzdXBwb3J0cyAqL1xuJiM0MztcdHUzMiBhdHJfc2FtcGxlX3JhdGU7XG4gXHRib29sIHdvbF9lbjtcbiBcbiBcdHN0cnVjdCBobGlzdF9oZWFkIGZkaXJfZmlsdGVyX2xpc3Q7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmNcbmluZGV4IDIyOTE3OWNjYzEzMTllLi5jZjQ4N2VmZGQ4MDNkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmNcbkBAIC0zMywxMiAmIzQzOzMzLDQ4IEBAIHN0YXRpYyBpbnQgaTQwZV9tYXhfbWFjX3Blcl92Zl9nZXQoc3RydWN0IGRldmxpbmsgKmRldmxpbmssXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgaTQwZV9hdHJfc2FtcGxlX3JhdGVfc2V0KHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLFxuJiM0MztcdFx0XHRcdCAgICB1MzIgaWQsXG4mIzQzO1x0XHRcdFx0ICAgIHN0cnVjdCBkZXZsaW5rX3BhcmFtX2dzZXRfY3R4ICpjdHgsXG4mIzQzO1x0XHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBpNDBlX3BmICpwZiA9IGRldmxpbmtfcHJpdihkZXZsaW5rKTtcbiYjNDM7XHR1MzIgc2FtcGxlX3JhdGUgPSBjdHgtXHUwMDNldmFsLnZ1MzI7XG4mIzQzO1xuJiM0MztcdHBmLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZSA9IHNhbXBsZV9yYXRlO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGk0MGVfYXRyX3NhbXBsZV9yYXRlX2dldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcbiYjNDM7XHRcdFx0XHQgICAgdTMyIGlkLFxuJiM0MztcdFx0XHRcdCAgICBzdHJ1Y3QgZGV2bGlua19wYXJhbV9nc2V0X2N0eCAqY3R4LFxuJiM0MztcdFx0XHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaTQwZV9wZiAqcGYgPSBkZXZsaW5rX3ByaXYoZGV2bGluayk7XG4mIzQzO1xuJiM0MztcdGN0eC1cdTAwM2V2YWwudnUzMiA9IHBmLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2VudW0gaTQwZV9kbF9wYXJhbV9pZCB7XG4mIzQzO1x0STQwRV9ERVZMSU5LX1BBUkFNX0lEX0JBU0UgPSBERVZMSU5LX1BBUkFNX0dFTkVSSUNfSURfTUFYLFxuJiM0MztcdEk0MEVfREVWTElOS19QQVJBTV9JRF9BVFJfU0FNUExFX1JBVEUsXG4mIzQzO307XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19wYXJhbSBpNDBlX2RsX3BhcmFtc1tdID0ge1xuIFx0REVWTElOS19QQVJBTV9HRU5FUklDKE1BWF9NQUNfUEVSX1ZGLFxuIFx0XHRcdCAgICAgIEJJVChERVZMSU5LX1BBUkFNX0NNT0RFX1JVTlRJTUUpLFxuIFx0XHRcdCAgICAgIGk0MGVfbWF4X21hY19wZXJfdmZfZ2V0LFxuIFx0XHRcdCAgICAgIGk0MGVfbWF4X21hY19wZXJfdmZfc2V0LFxuIFx0XHRcdCAgICAgIE5VTEwpLFxuJiM0MztcdERFVkxJTktfUEFSQU1fRFJJVkVSKEk0MEVfREVWTElOS19QQVJBTV9JRF9BVFJfU0FNUExFX1JBVEUsXG4mIzQzO1x0XHRcdCAgICAgXCYjMzQ7YXRyX3NhbXBsZV9yYXRlXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgIERFVkxJTktfUEFSQU1fVFlQRV9VMzIsXG4mIzQzO1x0XHRcdCAgICAgQklUKERFVkxJTktfUEFSQU1fQ01PREVfUlVOVElNRSksXG4mIzQzO1x0XHRcdCAgICAgaTQwZV9hdHJfc2FtcGxlX3JhdGVfZ2V0LFxuJiM0MztcdFx0XHQgICAgIGk0MGVfYXRyX3NhbXBsZV9yYXRlX3NldCxcbiYjNDM7XHRcdFx0ICAgICBOVUxMKSxcbiB9O1xuIFxuIHN0YXRpYyB2b2lkIGk0MGVfaW5mb19nZXRfZHNuKHN0cnVjdCBpNDBlX3BmICpwZiwgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5pbmRleCBhMDQ2ODMwMDRhNTY3Ny4uNGQ0ZDRiMDdhMGYzYTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5AQCAtMzQ1NCwxMiAmIzQzOzM0NTQsNyBAQCBzdGF0aWMgaW50IGk0MGVfY29uZmlndXJlX3R4X3Jpbmcoc3RydWN0IGk0MGVfcmluZyAqcmluZylcbiBcdFx0cmluZy1cdTAwM2V4c2tfcG9vbCA9IGk0MGVfeHNrX3Bvb2wocmluZyk7XG4gXG4gXHQvKiBzb21lIEFUUiByZWxhdGVkIHR4IHJpbmcgaW5pdCAqL1xuLVx0aWYgKHRlc3RfYml0KEk0MEVfRkxBR19GRF9BVFJfRU5BLCB2c2ktXHUwMDNlYmFjay1cdTAwM2VmbGFncykpIHtcbi1cdFx0cmluZy1cdTAwM2VhdHJfc2FtcGxlX3JhdGUgPSBJNDBFX0RFRkFVTFRfQVRSX1NBTVBMRV9SQVRFO1xuLVx0XHRyaW5nLVx1MDAzZWF0cl9jb3VudCA9IDA7XG4tXHR9IGVsc2Uge1xuLVx0XHRyaW5nLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZSA9IDA7XG4tXHR9XG4mIzQzO1x0cmluZy1cdTAwM2VhdHJfY291bnQgPSAwO1xuIFxuIFx0LyogY29uZmlndXJlIFhQUyAqL1xuIFx0aTQwZV9jb25maWdfeHBzX3R4X3JpbmcocmluZyk7XG5AQCAtMTI3NDIsNiAmIzQzOzEyNzM3LDggQEAgc3RhdGljIGludCBpNDBlX3N3X2luaXQoc3RydWN0IGk0MGVfcGYgKnBmKVxuIFx0XHR9XG4gXHR9XG4gXG4mIzQzO1x0cGYtXHUwMDNlYXRyX3NhbXBsZV9yYXRlID0gSTQwRV9ERUZBVUxUX0FUUl9TQU1QTEVfUkFURTtcbiYjNDM7XG4gXHRpZiAoKHBmLVx1MDAzZWh3LmZ1bmNfY2Fwcy5mZF9maWx0ZXJzX2d1YXJhbnRlZWQgXHUwMDNlIDApIHx8XG4gXHQgICAgKHBmLVx1MDAzZWh3LmZ1bmNfY2Fwcy5mZF9maWx0ZXJzX2Jlc3RfZWZmb3J0IFx1MDAzZSAwKSkge1xuIFx0XHRzZXRfYml0KEk0MEVfRkxBR19GRF9BVFJfRU5BLCBwZi1cdTAwM2VmbGFncyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmNcbmluZGV4IDg5NGYyZDA2ZDM5ZDA3Li5iMzZlMGZjOWIzMWQyOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmNcbkBAIC0yODc5LDcgJiM0MzsyODc5LDcgQEAgc3RhdGljIHZvaWQgaTQwZV9hdHIoc3RydWN0IGk0MGVfcmluZyAqdHhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0cmV0dXJuO1xuIFxuIFx0LyogaWYgc2FtcGxpbmcgaXMgZGlzYWJsZWQgZG8gbm90aGluZyAqL1xuLVx0aWYgKCF0eF9yaW5nLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZSlcbiYjNDM7XHRpZiAoIXBmLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZSlcbiBcdFx0cmV0dXJuO1xuIFxuIFx0LyogQ3VycmVudGx5IG9ubHkgSVB2NC9JUHY2IHdpdGggVENQIGlzIHN1cHBvcnRlZCAqL1xuQEAgLTI5MzEsNyAmIzQzOzI5MzEsNyBAQCBzdGF0aWMgdm9pZCBpNDBlX2F0cihzdHJ1Y3QgaTQwZV9yaW5nICp0eF9yaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0aWYgKCF0aC1cdTAwM2VmaW4gXHUwMDI2XHUwMDI2XG4gXHQgICAgIXRoLVx1MDAzZXN5biBcdTAwMjZcdTAwMjZcbiBcdCAgICAhdGgtXHUwMDNlcnN0IFx1MDAyNlx1MDAyNlxuLVx0ICAgICh0eF9yaW5nLVx1MDAzZWF0cl9jb3VudCBcdTAwM2MgdHhfcmluZy1cdTAwM2VhdHJfc2FtcGxlX3JhdGUpKVxuJiM0MztcdCAgICAodHhfcmluZy1cdTAwM2VhdHJfY291bnQgXHUwMDNjIHBmLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZSkpXG4gXHRcdHJldHVybjtcbiBcbiBcdHR4X3JpbmctXHUwMDNlYXRyX2NvdW50ID0gMDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaFxuaW5kZXggMWU1ZmQ2M2Q0N2Y0N2MuLmY0MTc5OTE0ODdlYWM5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaFxuQEAgLTM2Nyw4ICYjNDM7MzY3LDcgQEAgc3RydWN0IGk0MGVfcmluZyB7XG4gXHR1MTYgbmV4dF90b19jbGVhbjtcbiBcdHUxNiB4ZHBfdHhfYWN0aXZlO1xuIFxuLVx0dTggYXRyX3NhbXBsZV9yYXRlO1xuLVx0dTggYXRyX2NvdW50O1xuJiM0MztcdHUzMiBhdHJfY291bnQ7XG4gXG4gXHRib29sIHJpbmdfYWN0aXZlO1x0XHQvKiBpcyByaW5nIG9ubGluZSBvciBub3QgKi9cbiBcdGJvb2wgYXJtX3diO1x0XHQvKiBkbyBzb21ldGhpbmcgdG8gYXJtIHdyaXRlIGJhY2sgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNTozMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgaTQwZSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0b3IgZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVlMTdhZmU0NDU3ZDk2YjkyMjllODllMDc5MDgzZGQ2ODVlNTFhYTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxIDE1OjMyOjM4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvaTQwZS5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9pNDBlLnJzdAppbmRleCA1MWM4ODdmMGRjODMzYi4uMmNlYTk4YjYzMWJhYTEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL2k0MGUucnN0CiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL2k0MGUucnN0CkBAIC00MCw2ICYjNDM7NDAsMjYgQEAgUGFyYW1ldGVycwogCiAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgMGBgIChpbnRlcm5hbCBjYWxjdWxhdGlvbiBpcyB1c2VkKS4KIAomIzQzOy4uIGxpc3QtdGFibGU6OiBEcml2ZXIgc3BlY2lmaWMgcGFyYW1ldGVycyBpbXBsZW1lbnRlZAomIzQzOyAgICA6d2lkdGhzOiA1IDUgOTAKJiM0MzsKJiM0MzsgICAgKiAtIE5hbWUKJiM0MzsgICAgICAtIE1vZGUKJiM0MzsgICAgICAtIERlc2NyaXB0aW9uCiYjNDM7ICAgICogLSBgYGF0cl9zYW1wbGVfcmF0ZWBgCiYjNDM7ICAgICAgLSBydW50aW1lCiYjNDM7ICAgICAgLSBDb250cm9scyBob3cgZnJlcXVlbnRseSBGbG93IERpcmVjdG9yIEFUUiB1cGRhdGVzIGZsb3cgc3RlZXJpbmcKJiM0MzsgICAgICAgIGluZm9ybWF0aW9uIGZvciBhY3RpdmUgVENQIGZsb3dzLgomIzQzOwomIzQzOyAgICAgICAgQVRSIHByb2dyYW1zIEZsb3cgRGlyZWN0b3IgZW50cmllcyBiYXNlZCBvbiBzYW1wbGVkIHRyYW5zbWl0dGVkCiYjNDM7ICAgICAgICBwYWNrZXRzLiBUaGUgc2FtcGxpbmcgaW50ZXJ2YWwgaXMgc3BlY2lmaWVkIGFzIHRoZSBudW1iZXIgb2YKJiM0MzsgICAgICAgIHRyYW5zbWl0dGVkIHBhY2tldHMgYmV0d2VlbiBBVFIgdXBkYXRlcy4KJiM0MzsKJiM0MzsgICAgICAgIExvd2VyIHZhbHVlcyBpbmNyZWFzZSBGbG93IERpcmVjdG9yIHByb2dyYW1taW5nIGFjdGl2aXR5LCB3aGlsZQomIzQzOyAgICAgICAgaGlnaGVyIHZhbHVlcyByZWR1Y2UgdGhlIHVwZGF0ZSBmcmVxdWVuY3kuCiYjNDM7CiYjNDM7ICAgICAgICBTZXR0aW5nIHRvIGBgMGBgIGRpc2FibGVzIEFUUiBzYW1wbGluZyAobm8gZmlsdGVycyB3aWxsIGJlIHByb2dyYW1tZWQpCiYjNDM7ICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYDIwYGAuCiAKIEluZm8gdmVyc2lvbnMKID09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmgKaW5kZXggODNlNzgwOTE5YWM5N2YuLjJmMjY0Y2JjOTBlZmUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaApAQCAtNDg3LDYgJiM0Mzs0ODcsNyBAQCBzdHJ1Y3QgaTQwZV9wZiB7CiAJdTE2IHJzc19zaXplX21heDsgICAgICAgICAgLyogSFcgZGVmaW5lZCBtYXggUlNTIHF1ZXVlcyAqLwogCXUxNiBmZGlyX3BmX2ZpbHRlcl9jb3VudDsgIC8qIG51bSBvZiBndWFyYW50ZWVkIGZpbHRlcnMgZm9yIHRoaXMgUEYgKi8KIAl1MTYgbnVtX2FsbG9jX3ZzaTsgICAgICAgICAvKiBudW0gVlNJcyB0aGlzIGRyaXZlciBzdXBwb3J0cyAqLwomIzQzOwl1MzIgYXRyX3NhbXBsZV9yYXRlOwogCWJvb2wgd29sX2VuOwogCiAJc3RydWN0IGhsaXN0X2hlYWQgZmRpcl9maWx0ZXJfbGlzdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jCmluZGV4IDIyOTE3OWNjYzEzMTllLi5jZjQ4N2VmZGQ4MDNkNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jCkBAIC0zMywxMiAmIzQzOzMzLDQ4IEBAIHN0YXRpYyBpbnQgaTQwZV9tYXhfbWFjX3Blcl92Zl9nZXQoc3RydWN0IGRldmxpbmsgKmRldmxpbmssCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgaW50IGk0MGVfYXRyX3NhbXBsZV9yYXRlX3NldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluaywKJiM0MzsJCQkJICAgIHUzMiBpZCwKJiM0MzsJCQkJICAgIHN0cnVjdCBkZXZsaW5rX3BhcmFtX2dzZXRfY3R4ICpjdHgsCiYjNDM7CQkJCSAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaTQwZV9wZiAqcGYgPSBkZXZsaW5rX3ByaXYoZGV2bGluayk7CiYjNDM7CXUzMiBzYW1wbGVfcmF0ZSA9IGN0eC0mZ3Q7dmFsLnZ1MzI7CiYjNDM7CiYjNDM7CXBmLSZndDthdHJfc2FtcGxlX3JhdGUgPSBzYW1wbGVfcmF0ZTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgaTQwZV9hdHJfc2FtcGxlX3JhdGVfZ2V0KHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLAomIzQzOwkJCQkgICAgdTMyIGlkLAomIzQzOwkJCQkgICAgc3RydWN0IGRldmxpbmtfcGFyYW1fZ3NldF9jdHggKmN0eCwKJiM0MzsJCQkJICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBpNDBlX3BmICpwZiA9IGRldmxpbmtfcHJpdihkZXZsaW5rKTsKJiM0MzsKJiM0MzsJY3R4LSZndDt2YWwudnUzMiA9IHBmLSZndDthdHJfc2FtcGxlX3JhdGU7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztlbnVtIGk0MGVfZGxfcGFyYW1faWQgewomIzQzOwlJNDBFX0RFVkxJTktfUEFSQU1fSURfQkFTRSA9IERFVkxJTktfUEFSQU1fR0VORVJJQ19JRF9NQVgsCiYjNDM7CUk0MEVfREVWTElOS19QQVJBTV9JRF9BVFJfU0FNUExFX1JBVEUsCiYjNDM7fTsKJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19wYXJhbSBpNDBlX2RsX3BhcmFtc1tdID0gewogCURFVkxJTktfUEFSQU1fR0VORVJJQyhNQVhfTUFDX1BFUl9WRiwKIAkJCSAgICAgIEJJVChERVZMSU5LX1BBUkFNX0NNT0RFX1JVTlRJTUUpLAogCQkJICAgICAgaTQwZV9tYXhfbWFjX3Blcl92Zl9nZXQsCiAJCQkgICAgICBpNDBlX21heF9tYWNfcGVyX3ZmX3NldCwKIAkJCSAgICAgIE5VTEwpLAomIzQzOwlERVZMSU5LX1BBUkFNX0RSSVZFUihJNDBFX0RFVkxJTktfUEFSQU1fSURfQVRSX1NBTVBMRV9SQVRFLAomIzQzOwkJCSAgICAgJiMzNDthdHJfc2FtcGxlX3JhdGUmIzM0OywKJiM0MzsJCQkgICAgIERFVkxJTktfUEFSQU1fVFlQRV9VMzIsCiYjNDM7CQkJICAgICBCSVQoREVWTElOS19QQVJBTV9DTU9ERV9SVU5USU1FKSwKJiM0MzsJCQkgICAgIGk0MGVfYXRyX3NhbXBsZV9yYXRlX2dldCwKJiM0MzsJCQkgICAgIGk0MGVfYXRyX3NhbXBsZV9yYXRlX3NldCwKJiM0MzsJCQkgICAgIE5VTEwpLAogfTsKIAogc3RhdGljIHZvaWQgaTQwZV9pbmZvX2dldF9kc24oc3RydWN0IGk0MGVfcGYgKnBmLCBjaGFyICpidWYsIHNpemVfdCBsZW4pCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYwppbmRleCBhMDQ2ODMwMDRhNTY3Ny4uNGQ0ZDRiMDdhMGYzYTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYwpAQCAtMzQ1NCwxMiAmIzQzOzM0NTQsNyBAQCBzdGF0aWMgaW50IGk0MGVfY29uZmlndXJlX3R4X3Jpbmcoc3RydWN0IGk0MGVfcmluZyAqcmluZykKIAkJcmluZy0mZ3Q7eHNrX3Bvb2wgPSBpNDBlX3hza19wb29sKHJpbmcpOwogCiAJLyogc29tZSBBVFIgcmVsYXRlZCB0eCByaW5nIGluaXQgKi8KLQlpZiAodGVzdF9iaXQoSTQwRV9GTEFHX0ZEX0FUUl9FTkEsIHZzaS0mZ3Q7YmFjay0mZ3Q7ZmxhZ3MpKSB7Ci0JCXJpbmctJmd0O2F0cl9zYW1wbGVfcmF0ZSA9IEk0MEVfREVGQVVMVF9BVFJfU0FNUExFX1JBVEU7Ci0JCXJpbmctJmd0O2F0cl9jb3VudCA9IDA7Ci0JfSBlbHNlIHsKLQkJcmluZy0mZ3Q7YXRyX3NhbXBsZV9yYXRlID0gMDsKLQl9CiYjNDM7CXJpbmctJmd0O2F0cl9jb3VudCA9IDA7CiAKIAkvKiBjb25maWd1cmUgWFBTICovCiAJaTQwZV9jb25maWdfeHBzX3R4X3JpbmcocmluZyk7CkBAIC0xMjc0Miw2ICYjNDM7MTI3MzcsOCBAQCBzdGF0aWMgaW50IGk0MGVfc3dfaW5pdChzdHJ1Y3QgaTQwZV9wZiAqcGYpCiAJCX0KIAl9CiAKJiM0MzsJcGYtJmd0O2F0cl9zYW1wbGVfcmF0ZSA9IEk0MEVfREVGQVVMVF9BVFJfU0FNUExFX1JBVEU7CiYjNDM7CiAJaWYgKChwZi0mZ3Q7aHcuZnVuY19jYXBzLmZkX2ZpbHRlcnNfZ3VhcmFudGVlZCAmZ3Q7IDApIHx8CiAJICAgIChwZi0mZ3Q7aHcuZnVuY19jYXBzLmZkX2ZpbHRlcnNfYmVzdF9lZmZvcnQgJmd0OyAwKSkgewogCQlzZXRfYml0KEk0MEVfRkxBR19GRF9BVFJfRU5BLCBwZi0mZ3Q7ZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMKaW5kZXggODk0ZjJkMDZkMzlkMDcuLmIzNmUwZmM5YjMxZDI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMKQEAgLTI4NzksNyAmIzQzOzI4NzksNyBAQCBzdGF0aWMgdm9pZCBpNDBlX2F0cihzdHJ1Y3QgaTQwZV9yaW5nICp0eF9yaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlyZXR1cm47CiAKIAkvKiBpZiBzYW1wbGluZyBpcyBkaXNhYmxlZCBkbyBub3RoaW5nICovCi0JaWYgKCF0eF9yaW5nLSZndDthdHJfc2FtcGxlX3JhdGUpCiYjNDM7CWlmICghcGYtJmd0O2F0cl9zYW1wbGVfcmF0ZSkKIAkJcmV0dXJuOwogCiAJLyogQ3VycmVudGx5IG9ubHkgSVB2NC9JUHY2IHdpdGggVENQIGlzIHN1cHBvcnRlZCAqLwpAQCAtMjkzMSw3ICYjNDM7MjkzMSw3IEBAIHN0YXRpYyB2b2lkIGk0MGVfYXRyKHN0cnVjdCBpNDBlX3JpbmcgKnR4X3JpbmcsIHN0cnVjdCBza19idWZmICpza2IsCiAJaWYgKCF0aC0mZ3Q7ZmluICZhbXA7JmFtcDsKIAkgICAgIXRoLSZndDtzeW4gJmFtcDsmYW1wOwogCSAgICAhdGgtJmd0O3JzdCAmYW1wOyZhbXA7Ci0JICAgICh0eF9yaW5nLSZndDthdHJfY291bnQgJmx0OyB0eF9yaW5nLSZndDthdHJfc2FtcGxlX3JhdGUpKQomIzQzOwkgICAgKHR4X3JpbmctJmd0O2F0cl9jb3VudCAmbHQ7IHBmLSZndDthdHJfc2FtcGxlX3JhdGUpKQogCQlyZXR1cm47CiAKIAl0eF9yaW5nLSZndDthdHJfY291bnQgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmgKaW5kZXggMWU1ZmQ2M2Q0N2Y0N2MuLmY0MTc5OTE0ODdlYWM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmgKQEAgLTM2Nyw4ICYjNDM7MzY3LDcgQEAgc3RydWN0IGk0MGVfcmluZyB7CiAJdTE2IG5leHRfdG9fY2xlYW47CiAJdTE2IHhkcF90eF9hY3RpdmU7CiAKLQl1OCBhdHJfc2FtcGxlX3JhdGU7Ci0JdTggYXRyX2NvdW50OwomIzQzOwl1MzIgYXRyX2NvdW50OwogCiAJYm9vbCByaW5nX2FjdGl2ZTsJCS8qIGlzIHJpbmcgb25saW5lIG9yIG5vdCAqLwogCWJvb2wgYXJtX3diOwkJLyogZG8gc29tZXRoaW5nIHRvIGFybSB3cml0ZSBiYWNrICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE1OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMTQKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA3NjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpNDBlIERyaXZlciBQYXRjaDogUmVhY2hhYmlsaXR5IGFuZCBJbXBhY3QqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgaTQwZWAgZHJpdmVyLiBJdCYjMzk7cyBhZGRpbmcgYSBkZXZsaW5rIHBhcmFtZXRlciwgYGF0cl9zYW1wbGVfcmF0ZWAsIHRvIGNvbnRyb2wgaG93IG9mdGVuIHRoZSBGbG93IERpcmVjdG9yIEFUUiBpcyB1cGRhdGVkLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgYWx3YXlzIGFib3V0IGhvdyB3ZSBjYW4gKmFjdHVhbGx5KiB0cmlnZ2VyIHRoaXMgY29kZSBhbmQgdGVzdCBpdC4gVGhlIHBhdGNoIHRvdWNoZXMgdGhlIHVzdWFsIHN1c3BlY3RzOiBkb2N1bWVudGF0aW9uLCBoZWFkZXIgZmlsZXMsIGFuZCB0aGUgY29yZSBkcml2ZXIgZmlsZXMgLSBgaTQwZV9kZXZsaW5rLmNgLCBgaTQwZV9tYWluLmNgLCBgaTQwZV90eHJ4LmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb25hbCBpbXBhY3QgYW5kIGlmIEkgY2FuIGV2ZW4gZ2V0IHRoaXMgdG8gcnVuIGluIGEgdGVzdCBlbnZpcm9ubWVudC4KClRoZSBrZXkgY2hhbmdlcyBpbnZvbHZlIGFkZGluZyB0aGUgYGk0MGVfYXRyX3NhbXBsZV9yYXRlX3NldGAgYW5kIGBpNDBlX2F0cl9zYW1wbGVfcmF0ZV9nZXRgIGZ1bmN0aW9ucyBpbiBgaTQwZV9kZXZsaW5rLmNgLiBBbHNvLCBpdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIG1vZGlmeWluZyBob3cgdGhlIGBpNDBlX2F0cmAgZnVuY3Rpb24gYW5kIGBpNDBlX2NvbmZpZ3VyZV90eF9yaW5nYCBiZWhhdmU7IHNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgdXNpbmcgYSBwZXItUEYgKFBoeXNpY2FsIEZ1bmN0aW9uKSBgYXRyX3NhbXBsZV9yYXRlYCByYXRoZXIgdGhhbiByaW5nLXNwZWNpZmljIHZhcmlhYmxlcy4gQWRkaXRpb25hbGx5LCBpbiBgaTQwZV9zd19pbml0YCwgdGhleSYjMzk7cmUgc2V0dGluZyBhIGRlZmF1bHQgYGF0cl9zYW1wbGVfcmF0ZWAuIFRoZXNlIGFyZSBhbGwgZmFpcmx5IHR5cGljYWwgZHJpdmVyIGNoYW5nZXMsIGJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpczogY2FuIEkgZ2V0IHRvIHRoZSBuZXcgY29kZT8KClRoZSBiaWcgcHJvYmxlbSBJIHNlZSBpcyB0aGF0IGBpNDBlYCBpcyB0aGUgSW50ZWwgWEw3MTAgbmV0d29yayBkcml2ZXIsIGFuZCBteSBpbW1lZGlhdGUgY29uY2VybiBpcyB3aGV0aGVyIHRoaXMgaXMgc29tZXRoaW5nIEkgY2FuIGVtdWxhdGUuIE15IGtub3dsZWRnZSBvZiBRRU1VIGNvbWVzIHRvIG1pbmQuIExldCBtZSBzZWUuLi4gSSBrbm93IFFFTVUgc3VwcG9ydHMgYSB2YXJpZXR5IG9mIG5ldHdvcmsgZGV2aWNlcywgYnV0IGRvZXMgaXQgc3VwcG9ydCBgaTQwZWA/IEkgY2FuIGNoZWNrIHdoYXQgaXQgZG9lcyBzdXBwb3J0IC0gYGUxMDAwYCwgYGUxMDAwZWAsIGBpZ2JgLCBhbmQgdGhlIG90aGVycy4gQWgsIGxvb2tzIGxpa2UgaXQgZG9lc24mIzM5O3QuIE5vIGBpNDBlYCB0aGVyZS4gTm93IEkgbmVlZCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiB0byBnZXQgcGFzdCB0aGlzLiBTeXprYWxsZXIsIGl0IHNlZW1zLCBkb2VzbiYjMzk7dCBoYXZlIGFuIGk0MGUgZW11bGF0b3IgZWl0aGVyLCB3aGljaCBpcyBhIG1ham9yIHJlZCBmbGFnLgoKVGhlIGltcGxpY2F0aW9ucyBhcmUgcHJldHR5IHN0YXJrLiBJZiBgaTQwZWAgaXNuJiMzOTt0IGVtdWxhdGVkLCB0aGVuIHRoZSBwcm9iZSBmdW5jdGlvbiBmb3IgdGhlIGRldmljZSB3aWxsIG5ldmVyIHN1Y2NlZWQsIGFuZCBhcyBhIHJlc3VsdCwgdGhlIGRldmxpbmsgcGFyYW1ldGVycyB3b24mIzM5O3QgZXZlbiBiZSByZWdpc3RlcmVkLiBUaGF0IG1lYW5zIHRoZSBgdHgvcnhgIHBhdGhzLCB3aGljaCB1c2UgdGhpcyBuZXcgcGFyYW1ldGVyLCB3b24mIzM5O3QgZXhlY3V0ZSBlaXRoZXIuIFNvLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYGk0MGVgIGNhbiBiZSBwcm9iZWQgaW4gbXkgdGVzdCBlbnZpcm9ubWVudC4gSSBrbm93IGBpNDBlYCBpcyBhIFBDSSBkZXZpY2UuIEkgY2FuIHVzZSB0aGUgUENJIElEcyB0byB0cnkgdG8gZmlndXJlIG91dCB3aGF0IHR5cGUgb2YgZGV2aWNlIHRoaXMgaXMuCgpXYWl0LCBsb29raW5nIGZ1cnRoZXIsIFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIHRoZSBYTDcxMC4gU28gdGhhdCYjMzk7cyB0aGUgZW5kIG9mIG15IGVtdWxhdGlvbiBob3Blcy4gRG9lcyB0aGF0IG1lYW4gdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIHRyaWdnZXIgZGV2bGluayBwYXJhbWV0ZXIgc2V0dGluZyB1bmxlc3MgSSBoYXZlIHRoZSBwaHlzaWNhbCBkZXZpY2U/IFByZXR0eSBtdWNoLiBEZXZsaW5rIHBhcmFtZXRlcnMgYXJlIHR5cGljYWxseSByZWdpc3RlcmVkIHBlciBkZXZpY2UgaW5zdGFuY2UsIGFuZCB0aGF0JiMzOTtzIHVzdWFsbHkgZG9uZSBkdXJpbmcgdGhlIHByb2JlIGZ1bmN0aW9uLiBMZXQgbWUgZ28gYmFjayB0byBgaTQwZV9kZXZsaW5rLmNgIGFuZCBjb25maXJtIGV4YWN0bHkgaG93IHRoZSBwYXJhbWV0ZXIgaXMgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpNDBlX2RldmxpbmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9NYWtlZmlsZT0xMz1pNDBlLXkgOj0gaTQwZV9tYWluLm8gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL01ha2VmaWxlLTI3LVx0aTQwZV94c2sub1x0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvTWFrZWZpbGU6Mjg6XHRpNDBlX2Rldmxpbmsub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9NYWtlZmlsZS0yOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaC0xNy0jaW5jbHVkZSBcJiMzNDtpNDBlX2RlYnVnLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oOjE4OiNpbmNsdWRlIFwmIzM0O2k0MGVfZGV2bGluay5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaC0xOS0jaW5jbHVkZSBcJiMzNDtpNDBlX2lvLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTUtI2luY2x1ZGUgXCYjMzQ7aTQwZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjY6I2luY2x1ZGUgXCYjMzQ7aTQwZV9kZXZsaW5rLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jPTExMD1zdGF0aWMgdm9pZCBpNDBlX2luZm9fcGJhKHN0cnVjdCBpNDBlX2h3ICpodywgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxMTc6ZW51bSBpNDBlX2RldmxpbmtfdmVyc2lvbl90eXBlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTE4LVx0STQwRV9ETF9WRVJTSU9OX0ZJWEVELFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxMjI6c3RhdGljIGludCBpNDBlX2RldmxpbmtfaW5mb19wdXQoc3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJlcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MTIzOlx0XHRcdFx0IGVudW0gaTQwZV9kZXZsaW5rX3ZlcnNpb25fdHlwZSB0eXBlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xMjQtXHRcdFx0XHQgY29uc3QgY2hhciAqa2V5LCBjb25zdCBjaGFyICp2YWx1ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTEzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MTM4OnN0YXRpYyBpbnQgaTQwZV9kZXZsaW5rX2luZm9fZ2V0KHN0cnVjdCBkZXZsaW5rICpkbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTM5LVx0XHRcdFx0IHN0cnVjdCBkZXZsaW5rX2luZm9fcmVxICpyZXEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xNTItXHRpNDBlX2luZm9fZndfbWdtdChodywgYnVmLCBzaXplb2YoYnVmKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjE1MzpcdGVyciA9IGk0MGVfZGV2bGlua19pbmZvX3B1dChyZXEsIEk0MEVfRExfVkVSU0lPTl9SVU5OSU5HLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xNTQtXHRcdFx0XHQgICAgREVWTElOS19JTkZPX1ZFUlNJT05fR0VORVJJQ19GV19NR01ULCBidWYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTU4LVx0aTQwZV9pbmZvX2Z3X21nbXRfYnVpbGQoaHcsIGJ1Ziwgc2l6ZW9mKGJ1ZikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxNTk6XHRlcnIgPSBpNDBlX2RldmxpbmtfaW5mb19wdXQocmVxLCBJNDBFX0RMX1ZFUlNJT05fUlVOTklORyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTYwLVx0XHRcdFx0ICAgIFwmIzM0O2Z3Lm1nbXQuYnVpbGRcJiMzNDssIGJ1Zik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xNjQtXHRpNDBlX2luZm9fZndfYXBpKGh3LCBidWYsIHNpemVvZihidWYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MTY1Olx0ZXJyID0gaTQwZV9kZXZsaW5rX2luZm9fcHV0KHJlcSwgSTQwRV9ETF9WRVJTSU9OX1JVTk5JTkcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTE2Ni1cdFx0XHRcdCAgICBERVZMSU5LX0lORk9fVkVSU0lPTl9HRU5FUklDX0ZXX01HTVRfQVBJLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTcxLVx0aTQwZV9pbmZvX252bV92ZXIoaHcsIGJ1Ziwgc2l6ZW9mKGJ1ZikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxNzI6XHRlcnIgPSBpNDBlX2RldmxpbmtfaW5mb19wdXQocmVxLCBJNDBFX0RMX1ZFUlNJT05fUlVOTklORyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTczLVx0XHRcdFx0ICAgIFwmIzM0O2Z3LnBzaWQuYXBpXCYjMzQ7LCBidWYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTc3LVx0aTQwZV9pbmZvX2VldHJhY2soaHcsIGJ1Ziwgc2l6ZW9mKGJ1ZikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxNzg6XHRlcnIgPSBpNDBlX2RldmxpbmtfaW5mb19wdXQocmVxLCBJNDBFX0RMX1ZFUlNJT05fUlVOTklORyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTc5LVx0XHRcdFx0ICAgIERFVkxJTktfSU5GT19WRVJTSU9OX0dFTkVSSUNfRldfQlVORExFX0lELFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTg0LVx0aTQwZV9pbmZvX2NpdmRfdmVyKGh3LCBidWYsIHNpemVvZihidWYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MTg1Olx0ZXJyID0gaTQwZV9kZXZsaW5rX2luZm9fcHV0KHJlcSwgSTQwRV9ETF9WRVJTSU9OX1JVTk5JTkcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTE4Ni1cdFx0XHRcdCAgICBERVZMSU5LX0lORk9fVkVSU0lPTl9HRU5FUklDX0ZXX1VOREksIGJ1Zik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xOTAtXHRpNDBlX2luZm9fcGJhKGh3LCBidWYsIHNpemVvZihidWYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MTkxOlx0ZXJyID0gaTQwZV9kZXZsaW5rX2luZm9fcHV0KHJlcSwgSTQwRV9ETF9WRVJTSU9OX0ZJWEVELFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xOTItXHRcdFx0XHQgICAgREVWTElOS19JTkZPX1ZFUlNJT05fR0VORVJJQ19CT0FSRF9JRCwgYnVmKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTE5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MTk3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgaTQwZV9kZXZsaW5rX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MTk4Olx0LmluZm9fZ2V0ID0gaTQwZV9kZXZsaW5rX2luZm9fZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xOTktfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jPTIwOD1zdHJ1Y3QgaTQwZV9wZiAqaTQwZV9hbGxvY19wZihzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjIxMjpcdGRldmxpbmsgPSBkZXZsaW5rX2FsbG9jKFx1MDAyNmk0MGVfZGV2bGlua19vcHMsIHNpemVvZihzdHJ1Y3QgaTQwZV9wZiksIGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTIxMy1cdGlmICghZGV2bGluaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jPTIyNT12b2lkIGk0MGVfZnJlZV9wZihzdHJ1Y3QgaTQwZV9wZiAqcGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yMzItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjIzMzogKiBpNDBlX2RldmxpbmtfcmVnaXN0ZXIgLSBSZWdpc3RlciBkZXZsaW5rIGludGVyZmFjZSBmb3IgdGhpcyBQRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yMzQtICogQHBmOiB0aGUgUEYgdG8gcmVnaXN0ZXIgdGhlIGRldmxpbmsgZm9yLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjM3LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MjM4OnZvaWQgaTQwZV9kZXZsaW5rX3JlZ2lzdGVyKHN0cnVjdCBpNDBlX3BmICpwZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTI1NC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MjU1OiAqIGk0MGVfZGV2bGlua191bnJlZ2lzdGVyIC0gVW5yZWdpc3RlciBkZXZsaW5rIHJlc291cmNlcyBmb3IgdGhpcyBQRi5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjU2LSAqIEBwZjogdGhlIFBGIHN0cnVjdHVyZSB0byBjbGVhbnVwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yNTktICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoyNjA6dm9pZCBpNDBlX2RldmxpbmtfdW5yZWdpc3RlcihzdHJ1Y3QgaTQwZV9wZiAqcGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTI2MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yNjktLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjI3MDogKiBpNDBlX2Rldmxpbmtfc2V0X3N3aXRjaF9pZCAtIFNldCB1bmlxdWUgc3dpdGNoIGlkIGJhc2VkIG9uIHBjaSBkc25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjcxLSAqIEBwZjogdGhlIFBGIHRvIGNyZWF0ZSBhIGRldmxpbmsgcG9ydCBmb3Jcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTI3My0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6Mjc0OnN0YXRpYyB2b2lkIGk0MGVfZGV2bGlua19zZXRfc3dpdGNoX2lkKHN0cnVjdCBpNDBlX3BmICpwZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjc1LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBuZXRkZXZfcGh5c19pdGVtX2lkICpwcGlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjgzLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoyODQ6ICogaTQwZV9kZXZsaW5rX2NyZWF0ZV9wb3J0IC0gQ3JlYXRlIGEgZGV2bGluayBwb3J0IGZvciB0aGlzIFBGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTI4NS0gKiBAcGY6IHRoZSBQRiB0byBjcmVhdGUgYSBwb3J0IGZvclxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjkyLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MjkzOmludCBpNDBlX2RldmxpbmtfY3JlYXRlX3BvcnQoc3RydWN0IGk0MGVfcGYgKnBmKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMzAxLVx0YXR0cnMucGh5cy5wb3J0X251bWJlciA9IHBmLVx1MDAzZWh3LnBmX2lkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzozMDI6XHRpNDBlX2Rldmxpbmtfc2V0X3N3aXRjaF9pZChwZiwgXHUwMDI2YXR0cnMuc3dpdGNoX2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMzAzLVx0ZGV2bGlua19wb3J0X2F0dHJzX3NldChcdTAwMjZwZi1cdTAwM2VkZXZsaW5rX3BvcnQsIFx1MDAyNmF0dHJzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTMxMy0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MzE0OiAqIGk0MGVfZGV2bGlua19kZXN0cm95X3BvcnQgLSBEZXN0cm95IHRoZSBkZXZsaW5rX3BvcnQgZm9yIHRoaXMgUEZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMzE1LSAqIEBwZjogdGhlIFBGIHRvIGNsZWFudXBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTMxOC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjMxOTp2b2lkIGk0MGVfZGV2bGlua19kZXN0cm95X3BvcnQoc3RydWN0IGk0MGVfcGYgKnBmKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0zMjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmg9MTI9dm9pZCBpNDBlX2ZyZWVfcGYoc3RydWN0IGk0MGVfcGYgKnBmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmg6MTM6dm9pZCBpNDBlX2RldmxpbmtfcmVnaXN0ZXIoc3RydWN0IGk0MGVfcGYgKnBmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmg6MTQ6dm9pZCBpNDBlX2RldmxpbmtfdW5yZWdpc3RlcihzdHJ1Y3QgaTQwZV9wZiAqcGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuaDoxNTppbnQgaTQwZV9kZXZsaW5rX2NyZWF0ZV9wb3J0KHN0cnVjdCBpNDBlX3BmICpwZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5oOjE2OnZvaWQgaTQwZV9kZXZsaW5rX2Rlc3Ryb3lfcG9ydChzdHJ1Y3QgaTQwZV9wZiAqcGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuaC0xNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jPTE0MDk2PWludCBpNDBlX3ZzaV9yZWxlYXNlKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQxMzMtXHRpZiAodnNpLVx1MDAzZXR5cGUgPT0gSTQwRV9WU0lfTUFJTilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MTQxMzQ6XHRcdGk0MGVfZGV2bGlua19kZXN0cm95X3BvcnQocGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xNDEzNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jPTE0MjU1PXN0YXRpYyBzdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3JlaW5pdF9zZXR1cChzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE0MzE1LVx0aWYgKHZzaS1cdTAwM2V0eXBlID09IEk0MEVfVlNJX01BSU4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjE0MzE2Olx0XHRpNDBlX2RldmxpbmtfZGVzdHJveV9wb3J0KHBmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQzMTctXHRpNDBlX2FxX2RlbGV0ZV9lbGVtZW50KFx1MDAyNnBmLVx1MDAzZWh3LCB2c2ktXHUwMDNlc2VpZCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNDMzNj1zdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3NldHVwKHN0cnVjdCBpNDBlX3BmICpwZiwgdTggdHlwZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE0NDQyLVx0XHRpZiAodnNpLVx1MDAzZXR5cGUgPT0gSTQwRV9WU0lfTUFJTikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxNDQ0MzpcdFx0XHRyZXQgPSBpNDBlX2RldmxpbmtfY3JlYXRlX3BvcnQocGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xNDQ0NC1cdFx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQ0OTgtXHRpZiAodnNpLVx1MDAzZXR5cGUgPT0gSTQwRV9WU0lfTUFJTilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MTQ0OTk6XHRcdGk0MGVfZGV2bGlua19kZXN0cm95X3BvcnQocGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xNDUwMC1lcnJfbmV0ZGV2OlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM9MTU1MzE9c3RhdGljIGludCBpNDBlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTYxMDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjE2MTA0Olx0aTQwZV9kZXZsaW5rX3JlZ2lzdGVyKHBmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTYxMDUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNjE0Nj1zdGF0aWMgdm9pZCBpNDBlX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE2MTU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxNjE1NTpcdGk0MGVfZGV2bGlua191bnJlZ2lzdGVyKHBmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTYxNTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTU6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1NDMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBpNDBlIERyaXZlciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgYGk0MGVgIGRyaXZlciwgYXMgYSBQQ0kgZHJpdmVyLCBpcyByZWxpYW50IG9uIGEgUENJIGRldmljZSBiZWluZyBwcmVzZW50LiBTaW1wbGUgZW5vdWdoLiBTaW5jZSBRRU1VIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGVtdWxhdGUgdGhlIEludGVsIGk0MGUgaGFyZHdhcmUsIHRoZSBkcml2ZXIgb2J2aW91c2x5IHdvbiYjMzk7dCBiaW5kIGFuZCBpdHMgcHJvYmUgZnVuY3Rpb24sIGBpNDBlX3Byb2JlYCwgd29uJiMzOTt0IGdldCBjYWxsZWQuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLgoKTm93LCBteSBtaW5kIHNoaWZ0cyB0byBzeXprYWxsZXIuIERvZXMgc3l6a2FsbGVyIGhhdmUgYSBnZW5lcmFsIG1lY2hhbmlzbSB0byBpbmplY3QgUENJIGRldmljZXMgYWtpbiB0byBob3cgaXQgaGFuZGxlcyBVU0Igd2l0aCBgc3l6X3VzYl9jb25uZWN0YCwgb3IgcGVyaGFwcyBpbmplY3RzIFBDSSBkZXZpY2VzIHVzaW5nIGEgdmlydHVhbCBob3N0IGNvbnRyb2xsZXIgaW50ZXJmYWNlIChgdmhjaWApIGxpa2UgaXQgbWlnaHQgZG8gd2l0aCBhIHZpcnR1YWwgUENJIGRldmljZT8gTm8uIE5vIGdlbmVyaWMgUENJIGRldmljZSBlbXVsYXRpb24uIEl0IHNlZW1zIHN5emthbGxlciBvZmZlcnMgc3BlY2lhbGl6ZWQgJiMzNDtpbmplY3RvcnMmIzM0OyBmb3IgZGlmZmVyZW50IGhhcmR3YXJlIHN1YnN5c3RlbXMuIFVTQiB3aXRoIGBzeXpfdXNiX2Nvbm5lY3RgLCBtYWM4MDIxMSB3aXRoIGBzeXpfODAyMTFfaW5qZWN0X2ZyYW1lYCwgZXRjLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHdyb25nIGhlcmUuCgpIb2xkIG9uLCBJIGFtIHdyb25nLiBEb2VzIHN5emthbGxlciBvZmZlciBzb21ldGhpbmcgbGlrZSBhIFBDSSBmdXp6ZXI/IElzIHRoZXJlIGFjdHVhbGx5IFBDSSBmdXp6aW5nIGluIHN5emthbGxlcj8gTGV0JiMzOTtzIGNoZWNrLiBXYWl0IGEgbWludXRlLiBJdCBkb2VzIG5vdCBsb29rIGxpa2UgYHN5el9wY2lfZGV2aWNlX2FkZGAgZXhpc3RzLiBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhICpnZW5lcmFsKiBQQ0kgZW11bGF0b3IsIGp1c3Qgc3BlY2lhbGl6ZWQgbWVjaGFuaXNtcy4gVGhleSBzZWVtIHRvIHVzZSBgdmhjaWAgZm9yIFVTQiwgYG1hYzgwMjExX2h3c2ltYCBmb3Igd2lmaSwgYHZuZXRgIGZvciBuZXR3b3JrLCBgdmttc2AgZm9yIERSTSwgYHVpbnB1dGAgZm9yIGlucHV0LgoKQWxyaWdodCwgd2hhdCBhYm91dCBgdmZpb2A/IFRoYXQgbWlnaHQgYmUgYW4gYXZlbnVlIHRvIGNvbnNpZGVyLiBDb3VsZCB0aGF0IGJlIGEgd2F5IHRvIHJlYWNoIGBpNDBlYCBjb2RlPwoKVWx0aW1hdGVseSwgdGhlIHF1ZXN0aW9uIGlzLCAqY2FuKiB3ZSByZWFjaCB0aGUgYGk0MGVgIGNvZGUgdGhyb3VnaCBzeXprYWxsZXI/IFRoZSBvYnZpb3VzIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgYGk0MGVgIGl0c2VsZiBpcyBhY3RpdmVseSB0YXJnZXRlZCBhbmQgZnV6emVkIHdpdGhpbiB0aGUgc3l6a2FsbGVyIGZyYW1ld29yay4gTGV0JiMzOTtzIGNvbmZpcm0gaWYgaXQmIzM5O3MgY3VycmVudGx5IHBhcnQgb2YgdGhlIGZ1enppbmcgdGFyZ2V0IGxpc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTU6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpNDBlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTM2MQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDMwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBpNDBlIENvZGUgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guIFRoZSB0YXNrIGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIGNvbnRhaW5zIGNvZGUgdGhhdCYjMzk7cyAqdW5yZWFjaGFibGUqIGluIHZpcnR1YWxpemVkIHNldHVwcyBsaWtlIEdDRSBvciBRRU1VLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGBpNDBlYCBkcml2ZXIgY29kZSBjYW4gZXZlbiBiZSBleGVjdXRlZCBpbiB0aG9zZSBlbnZpcm9ubWVudHMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjaGVjayBgc3l6a2FsbGVyYCBmb3IgYW55IGRlc2NyaXB0aW9ucyByZWxhdGVkIHRvIGBpNDBlYCwgYnV0IG1heWJlIEkgZG9uJiMzOTt0IGV2ZW4gbmVlZCB0byBnbyB0aGF0IGZhci4gSSBjYW4ganVzdCBmb2N1cyBvbiByZWFjaGFiaWxpdHkuCgpUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyB0aGF0IGNvZGUgcGF0aHMgcmVxdWlyaW5nIGhhcmR3YXJlIGVtdWxhdG9ycyAobGlrZSBgbWFjODAyMTFfaHdzaW1gKSBzaG91bGQgcmVzdWx0IGluIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgYGk0MGVgIGRyaXZlciBpcyBmb3IgYSBwaHlzaWNhbCBuZXR3b3JrIGNhcmQuIFRoZXJlJiMzOTtzIG5vIGVxdWl2YWxlbnQgc29mdHdhcmUgZW11bGF0b3IgbGlrZSB3ZSBoYXZlIGZvciBvdGhlciBkcml2ZXJzLCBhdCBsZWFzdCBub3QgdGhhdCBJJiMzOTttIGF3YXJlIG9mIGluIHRoZSBrZXJuZWwuIFNvLCB1bmxlc3MgSSYjMzk7bSBtaXNzaW5nIHNvbWV0aGluZyBjcnVjaWFsLCByZWFjaGluZyBgaTQwZWAgY29kZSBzZWVtcyBpbXBvc3NpYmxlIGluIHRoZXNlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KCldhaXQsIGxldCBtZSBtYWtlIHN1cmUgSSYjMzk7bSBub3Qgb3Zlcmxvb2tpbmcgc29tZXRoaW5nLiBJcyB0aGVyZSAqYW55KiBgaTQwZWAgZW11bGF0b3IgaW4gdGhlIGtlcm5lbCwgc29tZXRoaW5nIEkmIzM5O20gZm9yZ2V0dGluZz8gTm8sIG5vdCB0aGF0IEkgcmVjYWxsLiBIb3cgYWJvdXQgdHJpZ2dlcmluZyBgaTQwZV9hdHJfc2FtcGxlX3JhdGVfc2V0YCBkaXJlY3RseT8gTm8sIHRoYXQmIzM5O3Mgbm90IHBvc3NpYmxlIGVpdGhlci4gYGk0MGVfZGV2bGlua19yZWdpc3RlcmAsIHdoaWNoIEkgYXNzdW1lIGlzIGtleSwgaXMgY2FsbGVkIGZyb20gYGk0MGVfcHJvYmVgLCBhbmQgYGk0MGVfcHJvYmVgIHJlcXVpcmVzIHRoZSBQQ0kgZGV2aWNlLgoKQWxyaWdodCwgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayBhZ2Fpbi4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGxldCYjMzk7cyBsb29rIGF0IGl0IGZyb20gYSBkaWZmZXJlbnQgYW5nbGUuIElzIHRoZXJlIHNvbWUgdmlydHVhbCBidXMgdGhhdCAqY291bGQqIHByb2JlIGFuZCBsb2FkIHRoZSBgaTQwZWAgZHJpdmVyPyBObywgaXQmIzM5O3MgYSBQQ0kgZHJpdmVyLCBzbyB0aGF0IHdvdWxkbiYjMzk7dCBoYXBwZW4uIFJpZ2h0LCBsZXQmIzM5O3MgY2hlY2sgYGk0MGVfbWFpbi5jYCBhbmQgY29uZmlybSB0aGF0IGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBpcyB3aGF0JiMzOTtzIGJlaW5nIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTU6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNjYzND1zdGF0aWMgaW50IF9faW5pdCBpNDBlX2luaXRfbW9kdWxlKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xNjY1NC1cdGk0MGVfZGJnX2luaXQoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MTY2NTU6XHRlcnIgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmk0MGVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTY2NTYtXHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTU6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzMzEKCQkJCQkJCW91dHB1dDogODQKCQkJCQkJCXRob3VnaHRzOiAzMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyB0aGlzIGxvb2tzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgUENJIGRyaXZlciBwYXRjaCDigJMgdGhlIEludGVsIGk0MGUgRXRoZXJuZXQgZHJpdmVyIHRvIGJlIHByZWNpc2UuIFRoZSBjcml0aWNhbCBpc3N1ZSBpcywgd2l0aG91dCB0aGUgYWN0dWFsIHBoeXNpY2FsIGk0MGUgaGFyZHdhcmUgb3IgYSBRRU1VIGVtdWxhdGlvbiB0aGF0IGFjY3VyYXRlbHkgbW9kZWxzIHRoZSBkZXZpY2UsIHRoZSBkcml2ZXImIzM5O3MgYHByb2JlYCBmdW5jdGlvbiwgYW5kIHRoZXJlZm9yZSAqYW55KiBvZiB0aGUgbW9kaWZpZWQgY29kZSBwYXRocywgd2lsbCBzaW1wbHkgbmV2ZXIgZ2V0IGNhbGxlZC4gVGhhdCBtZWFucyBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3Igc3RhbmRhcmQgUUVNVSBpbnN0YW5jZXMsIHRoaXMgcGF0Y2ggaXMgdW5yZWFjaGFibGUuCgpJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJhdGlvbmFsZSBpcyB0aGF0IHRoaXMgdGFyZ2V0cyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIsIHRoZSBJbnRlbCBpNDBlLCBhbmQgZnV6emluZyBpdCByZXF1aXJlcyBlaXRoZXIgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgdmVyeSBzcGVjaWZpYywgYW5kIGxpa2VseSB1bmF2YWlsYWJsZSwgZW11bGF0b3Igb2YgaXQuIEkgZG9uJiMzOTt0IHNlZSBhbnkgdmFsdWUgaW4gdHJ5aW5nIHRvIGZ1enogY29kZSB0aGF0IHdvbiYjMzk7dCBleGVjdXRlLgoKSnVzdCBkb3VibGUtY2hlY2tpbmcsIHRoZXJlJiMzOTtzIG5vIGBDT05GSUdfSTQwRWAgZmxhZyBkZWZpbmVkIGluIHRoZSBjb25maWd1cmF0aW9uLCB3aGljaCB3b3VsZCBoYXZlIGF0IGxlYXN0IGdpdmVuIG1lIHNvbWV0aGluZyB0byBsb29rIGZvci4gQW5kIHNpbmNlIGl0JiMzOTtzIG5vdCB3b3J0aCBmdXp6aW5nLCBJIGRvbiYjMzk7dCBuZWVkIHRvIGJvdGhlciB3aXRoIGNvbmZpZyBkZXRhaWxzIG9yIGFueSBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIG9uZS4KCkxldCBtZSB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGUgcGF0Y2ggcXVpY2tseS4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBkZXZsaW5rIHBhcmFtZXRlciBgYXRyX3NhbXBsZV9yYXRlYCB0byB0aGUgYGk0MGVgIGRyaXZlci4gSXQgbW9kaWZpZXMgYGk0MGVfdHhyeC5jYCB0byB1c2UgYHBmLSZndDthdHJfc2FtcGxlX3JhdGVgIGFuZCBgaTQwZV9tYWluLmNgIHRvIGluaXRpYWxpemUgdGhlIHBhcmFtZXRlciBgcGYtJmd0O2F0cl9zYW1wbGVfcmF0ZWAuIEl0JiMzOTtzIGFsbCB0aWdodGx5IHNjb3BlZCB3aXRoaW4gdGhlIGBpNDBlYCBkcml2ZXIgaXRzZWxmLgoKU28sIHRoZSBkZWZpbml0aXZlIHJlYXNvbmluZzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIGk0MGUgRXRoZXJuZXQgZHJpdmVyLCBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIEJlY2F1c2UgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0b3Igb2YgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIGluIHRoZSBjdXJyZW50IGtlcm5lbCwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7CgpJJiMzOTtsbCBwcm9jZWVkIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTU6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgaTQwZSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0b3IgZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBpNDBlIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjMyOjM5LjY2NTgyOTM3N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NDc2NzA0Nzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgaTQwZSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0b3IgZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjMyOjM5LjY2NTgzOTE3N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2MDcyMjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWUxN2FmZTQ0NTdkOTZiOTIyOWU4OWUwNzkwODNkZDY4NWU1MWFhNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDE1OjMyOjM4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL2k0MGUucnN0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvaTQwZS5yc3RcXG5pbmRleCA1MWM4ODdmMGRjODMzYi4uMmNlYTk4YjYzMWJhYTEgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvaTQwZS5yc3RcXG4rKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9pNDBlLnJzdFxcbkBAIC00MCw2ICs0MCwyNiBAQCBQYXJhbWV0ZXJzXFxuIFxcbiAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgMGBgIChpbnRlcm5hbCBjYWxjdWxhdGlvbiBpcyB1c2VkKS5cXG4gXFxuKy4uIGxpc3QtdGFibGU6OiBEcml2ZXIgc3BlY2lmaWMgcGFyYW1ldGVycyBpbXBsZW1lbnRlZFxcbisgICAgOndpZHRoczogNSA1IDkwXFxuK1xcbisgICAgKiAtIE5hbWVcXG4rICAgICAgLSBNb2RlXFxuKyAgICAgIC0gRGVzY3JpcHRpb25cXG4rICAgICogLSBgYGF0cl9zYW1wbGVfcmF0ZWBgXFxuKyAgICAgIC0gcnVudGltZVxcbisgICAgICAtIENvbnRyb2xzIGhvdyBmcmVxdWVudGx5IEZsb3cgRGlyZWN0b3IgQVRSIHVwZGF0ZXMgZmxvdyBzdGVlcmluZ1xcbisgICAgICAgIGluZm9ybWF0aW9uIGZvciBhY3RpdmUgVENQIGZsb3dzLlxcbitcXG4rICAgICAgICBBVFIgcHJvZ3JhbXMgRmxvdyBEaXJlY3RvciBlbnRyaWVzIGJhc2VkIG9uIHNhbXBsZWQgdHJhbnNtaXR0ZWRcXG4rICAgICAgICBwYWNrZXRzLiBUaGUgc2FtcGxpbmcgaW50ZXJ2YWwgaXMgc3BlY2lmaWVkIGFzIHRoZSBudW1iZXIgb2ZcXG4rICAgICAgICB0cmFuc21pdHRlZCBwYWNrZXRzIGJldHdlZW4gQVRSIHVwZGF0ZXMuXFxuK1xcbisgICAgICAgIExvd2VyIHZhbHVlcyBpbmNyZWFzZSBGbG93IERpcmVjdG9yIHByb2dyYW1taW5nIGFjdGl2aXR5LCB3aGlsZVxcbisgICAgICAgIGhpZ2hlciB2YWx1ZXMgcmVkdWNlIHRoZSB1cGRhdGUgZnJlcXVlbmN5LlxcbitcXG4rICAgICAgICBTZXR0aW5nIHRvIGBgMGBgIGRpc2FibGVzIEFUUiBzYW1wbGluZyAobm8gZmlsdGVycyB3aWxsIGJlIHByb2dyYW1tZWQpXFxuKyAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGAyMGBgLlxcbiBcXG4gSW5mbyB2ZXJzaW9uc1xcbiA9PT09PT09PT09PT09XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmhcXG5pbmRleCA4M2U3ODA5MTlhYzk3Zi4uMmYyNjRjYmM5MGVmZTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaFxcbkBAIC00ODcsNiArNDg3LDcgQEAgc3RydWN0IGk0MGVfcGYge1xcbiBcXHR1MTYgcnNzX3NpemVfbWF4OyAgICAgICAgICAvKiBIVyBkZWZpbmVkIG1heCBSU1MgcXVldWVzICovXFxuIFxcdHUxNiBmZGlyX3BmX2ZpbHRlcl9jb3VudDsgIC8qIG51bSBvZiBndWFyYW50ZWVkIGZpbHRlcnMgZm9yIHRoaXMgUEYgKi9cXG4gXFx0dTE2IG51bV9hbGxvY192c2k7ICAgICAgICAgLyogbnVtIFZTSXMgdGhpcyBkcml2ZXIgc3VwcG9ydHMgKi9cXG4rXFx0dTMyIGF0cl9zYW1wbGVfcmF0ZTtcXG4gXFx0Ym9vbCB3b2xfZW47XFxuIFxcbiBcXHRzdHJ1Y3QgaGxpc3RfaGVhZCBmZGlyX2ZpbHRlcl9saXN0O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuY1xcbmluZGV4IDIyOTE3OWNjYzEzMTllLi5jZjQ4N2VmZGQ4MDNkNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuY1xcbkBAIC0zMywxMiArMzMsNDggQEAgc3RhdGljIGludCBpNDBlX21heF9tYWNfcGVyX3ZmX2dldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgaTQwZV9hdHJfc2FtcGxlX3JhdGVfc2V0KHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLFxcbitcXHRcXHRcXHRcXHQgICAgdTMyIGlkLFxcbitcXHRcXHRcXHRcXHQgICAgc3RydWN0IGRldmxpbmtfcGFyYW1fZ3NldF9jdHggKmN0eCxcXG4rXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4re1xcbitcXHRzdHJ1Y3QgaTQwZV9wZiAqcGYgPSBkZXZsaW5rX3ByaXYoZGV2bGluayk7XFxuK1xcdHUzMiBzYW1wbGVfcmF0ZSA9IGN0eC1cXHUwMDNldmFsLnZ1MzI7XFxuK1xcbitcXHRwZi1cXHUwMDNlYXRyX3NhbXBsZV9yYXRlID0gc2FtcGxlX3JhdGU7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IGk0MGVfYXRyX3NhbXBsZV9yYXRlX2dldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcXG4rXFx0XFx0XFx0XFx0ICAgIHUzMiBpZCxcXG4rXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBkZXZsaW5rX3BhcmFtX2dzZXRfY3R4ICpjdHgsXFxuK1xcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuK3tcXG4rXFx0c3RydWN0IGk0MGVfcGYgKnBmID0gZGV2bGlua19wcml2KGRldmxpbmspO1xcbitcXG4rXFx0Y3R4LVxcdTAwM2V2YWwudnUzMiA9IHBmLVxcdTAwM2VhdHJfc2FtcGxlX3JhdGU7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rZW51bSBpNDBlX2RsX3BhcmFtX2lkIHtcXG4rXFx0STQwRV9ERVZMSU5LX1BBUkFNX0lEX0JBU0UgPSBERVZMSU5LX1BBUkFNX0dFTkVSSUNfSURfTUFYLFxcbitcXHRJNDBFX0RFVkxJTktfUEFSQU1fSURfQVRSX1NBTVBMRV9SQVRFLFxcbit9O1xcbitcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX3BhcmFtIGk0MGVfZGxfcGFyYW1zW10gPSB7XFxuIFxcdERFVkxJTktfUEFSQU1fR0VORVJJQyhNQVhfTUFDX1BFUl9WRixcXG4gXFx0XFx0XFx0ICAgICAgQklUKERFVkxJTktfUEFSQU1fQ01PREVfUlVOVElNRSksXFxuIFxcdFxcdFxcdCAgICAgIGk0MGVfbWF4X21hY19wZXJfdmZfZ2V0LFxcbiBcXHRcXHRcXHQgICAgICBpNDBlX21heF9tYWNfcGVyX3ZmX3NldCxcXG4gXFx0XFx0XFx0ICAgICAgTlVMTCksXFxuK1xcdERFVkxJTktfUEFSQU1fRFJJVkVSKEk0MEVfREVWTElOS19QQVJBTV9JRF9BVFJfU0FNUExFX1JBVEUsXFxuK1xcdFxcdFxcdCAgICAgXFxcImF0cl9zYW1wbGVfcmF0ZVxcXCIsXFxuK1xcdFxcdFxcdCAgICAgREVWTElOS19QQVJBTV9UWVBFX1UzMixcXG4rXFx0XFx0XFx0ICAgICBCSVQoREVWTElOS19QQVJBTV9DTU9ERV9SVU5USU1FKSxcXG4rXFx0XFx0XFx0ICAgICBpNDBlX2F0cl9zYW1wbGVfcmF0ZV9nZXQsXFxuK1xcdFxcdFxcdCAgICAgaTQwZV9hdHJfc2FtcGxlX3JhdGVfc2V0LFxcbitcXHRcXHRcXHQgICAgIE5VTEwpLFxcbiB9O1xcbiBcXG4gc3RhdGljIHZvaWQgaTQwZV9pbmZvX2dldF9kc24oc3RydWN0IGk0MGVfcGYgKnBmLCBjaGFyICpidWYsIHNpemVfdCBsZW4pXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXFxuaW5kZXggYTA0NjgzMDA0YTU2NzcuLjRkNGQ0YjA3YTBmM2ExIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXFxuQEAgLTM0NTQsMTIgKzM0NTQsNyBAQCBzdGF0aWMgaW50IGk0MGVfY29uZmlndXJlX3R4X3Jpbmcoc3RydWN0IGk0MGVfcmluZyAqcmluZylcXG4gXFx0XFx0cmluZy1cXHUwMDNleHNrX3Bvb2wgPSBpNDBlX3hza19wb29sKHJpbmcpO1xcbiBcXG4gXFx0Lyogc29tZSBBVFIgcmVsYXRlZCB0eCByaW5nIGluaXQgKi9cXG4tXFx0aWYgKHRlc3RfYml0KEk0MEVfRkxBR19GRF9BVFJfRU5BLCB2c2ktXFx1MDAzZWJhY2stXFx1MDAzZWZsYWdzKSkge1xcbi1cXHRcXHRyaW5nLVxcdTAwM2VhdHJfc2FtcGxlX3JhdGUgPSBJNDBFX0RFRkFVTFRfQVRSX1NBTVBMRV9SQVRFO1xcbi1cXHRcXHRyaW5nLVxcdTAwM2VhdHJfY291bnQgPSAwO1xcbi1cXHR9IGVsc2Uge1xcbi1cXHRcXHRyaW5nLVxcdTAwM2VhdHJfc2FtcGxlX3JhdGUgPSAwO1xcbi1cXHR9XFxuK1xcdHJpbmctXFx1MDAzZWF0cl9jb3VudCA9IDA7XFxuIFxcbiBcXHQvKiBjb25maWd1cmUgWFBTICovXFxuIFxcdGk0MGVfY29uZmlnX3hwc190eF9yaW5nKHJpbmcpO1xcbkBAIC0xMjc0Miw2ICsxMjczNyw4IEBAIHN0YXRpYyBpbnQgaTQwZV9zd19pbml0KHN0cnVjdCBpNDBlX3BmICpwZilcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbitcXHRwZi1cXHUwMDNlYXRyX3NhbXBsZV9yYXRlID0gSTQwRV9ERUZBVUxUX0FUUl9TQU1QTEVfUkFURTtcXG4rXFxuIFxcdGlmICgocGYtXFx1MDAzZWh3LmZ1bmNfY2Fwcy5mZF9maWx0ZXJzX2d1YXJhbnRlZWQgXFx1MDAzZSAwKSB8fFxcbiBcXHQgICAgKHBmLVxcdTAwM2Vody5mdW5jX2NhcHMuZmRfZmlsdGVyc19iZXN0X2VmZm9ydCBcXHUwMDNlIDApKSB7XFxuIFxcdFxcdHNldF9iaXQoSTQwRV9GTEFHX0ZEX0FUUl9FTkEsIHBmLVxcdTAwM2VmbGFncyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jXFxuaW5kZXggODk0ZjJkMDZkMzlkMDcuLmIzNmUwZmM5YjMxZDI4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jXFxuQEAgLTI4NzksNyArMjg3OSw3IEBAIHN0YXRpYyB2b2lkIGk0MGVfYXRyKHN0cnVjdCBpNDBlX3JpbmcgKnR4X3JpbmcsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdC8qIGlmIHNhbXBsaW5nIGlzIGRpc2FibGVkIGRvIG5vdGhpbmcgKi9cXG4tXFx0aWYgKCF0eF9yaW5nLVxcdTAwM2VhdHJfc2FtcGxlX3JhdGUpXFxuK1xcdGlmICghcGYtXFx1MDAzZWF0cl9zYW1wbGVfcmF0ZSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0LyogQ3VycmVudGx5IG9ubHkgSVB2NC9JUHY2IHdpdGggVENQIGlzIHN1cHBvcnRlZCAqL1xcbkBAIC0yOTMxLDcgKzI5MzEsNyBAQCBzdGF0aWMgdm9pZCBpNDBlX2F0cihzdHJ1Y3QgaTQwZV9yaW5nICp0eF9yaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRpZiAoIXRoLVxcdTAwM2VmaW4gXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgICF0aC1cXHUwMDNlc3luIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAhdGgtXFx1MDAzZXJzdCBcXHUwMDI2XFx1MDAyNlxcbi1cXHQgICAgKHR4X3JpbmctXFx1MDAzZWF0cl9jb3VudCBcXHUwMDNjIHR4X3JpbmctXFx1MDAzZWF0cl9zYW1wbGVfcmF0ZSkpXFxuK1xcdCAgICAodHhfcmluZy1cXHUwMDNlYXRyX2NvdW50IFxcdTAwM2MgcGYtXFx1MDAzZWF0cl9zYW1wbGVfcmF0ZSkpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdHR4X3JpbmctXFx1MDAzZWF0cl9jb3VudCA9IDA7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5oXFxuaW5kZXggMWU1ZmQ2M2Q0N2Y0N2MuLmY0MTc5OTE0ODdlYWM5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5oXFxuQEAgLTM2Nyw4ICszNjcsNyBAQCBzdHJ1Y3QgaTQwZV9yaW5nIHtcXG4gXFx0dTE2IG5leHRfdG9fY2xlYW47XFxuIFxcdHUxNiB4ZHBfdHhfYWN0aXZlO1xcbiBcXG4tXFx0dTggYXRyX3NhbXBsZV9yYXRlO1xcbi1cXHR1OCBhdHJfY291bnQ7XFxuK1xcdHUzMiBhdHJfY291bnQ7XFxuIFxcbiBcXHRib29sIHJpbmdfYWN0aXZlO1xcdFxcdC8qIGlzIHJpbmcgb25saW5lIG9yIG5vdCAqL1xcbiBcXHRib29sIGFybV93YjtcXHRcXHQvKiBkbyBzb21ldGhpbmcgdG8gYXJtIHdyaXRlIGJhY2sgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTU6MzI6NDAuMTMyNzQ3NTUyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTAwOTc3ODMwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIGk0MGUgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUgb3IgdGhlIGtlcm5lbCwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVlMTdhZmU0NDU3ZDk2YjkyMjllODllMDc5MDgzZGQ2ODVlNTFhYTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDE1OjMyOjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvaTQwZS5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9pNDBlLnJzdFxuaW5kZXggNTFjODg3ZjBkYzgzM2IuLjJjZWE5OGI2MzFiYWExIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvaTQwZS5yc3RcbisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL2k0MGUucnN0XG5AQCAtNDAsNiArNDAsMjYgQEAgUGFyYW1ldGVyc1xuIFxuICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGAwYGAgKGludGVybmFsIGNhbGN1bGF0aW9uIGlzIHVzZWQpLlxuIFxuKy4uIGxpc3QtdGFibGU6OiBEcml2ZXIgc3BlY2lmaWMgcGFyYW1ldGVycyBpbXBsZW1lbnRlZFxuKyAgICA6d2lkdGhzOiA1IDUgOTBcbitcbisgICAgKiAtIE5hbWVcbisgICAgICAtIE1vZGVcbisgICAgICAtIERlc2NyaXB0aW9uXG4rICAgICogLSBgYGF0cl9zYW1wbGVfcmF0ZWBgXG4rICAgICAgLSBydW50aW1lXG4rICAgICAgLSBDb250cm9scyBob3cgZnJlcXVlbnRseSBGbG93IERpcmVjdG9yIEFUUiB1cGRhdGVzIGZsb3cgc3RlZXJpbmdcbisgICAgICAgIGluZm9ybWF0aW9uIGZvciBhY3RpdmUgVENQIGZsb3dzLlxuK1xuKyAgICAgICAgQVRSIHByb2dyYW1zIEZsb3cgRGlyZWN0b3IgZW50cmllcyBiYXNlZCBvbiBzYW1wbGVkIHRyYW5zbWl0dGVkXG4rICAgICAgICBwYWNrZXRzLiBUaGUgc2FtcGxpbmcgaW50ZXJ2YWwgaXMgc3BlY2lmaWVkIGFzIHRoZSBudW1iZXIgb2ZcbisgICAgICAgIHRyYW5zbWl0dGVkIHBhY2tldHMgYmV0d2VlbiBBVFIgdXBkYXRlcy5cbitcbisgICAgICAgIExvd2VyIHZhbHVlcyBpbmNyZWFzZSBGbG93IERpcmVjdG9yIHByb2dyYW1taW5nIGFjdGl2aXR5LCB3aGlsZVxuKyAgICAgICAgaGlnaGVyIHZhbHVlcyByZWR1Y2UgdGhlIHVwZGF0ZSBmcmVxdWVuY3kuXG4rXG4rICAgICAgICBTZXR0aW5nIHRvIGBgMGBgIGRpc2FibGVzIEFUUiBzYW1wbGluZyAobm8gZmlsdGVycyB3aWxsIGJlIHByb2dyYW1tZWQpXG4rICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYDIwYGAuXG4gXG4gSW5mbyB2ZXJzaW9uc1xuID09PT09PT09PT09PT1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oXG5pbmRleCA4M2U3ODA5MTlhYzk3Zi4uMmYyNjRjYmM5MGVmZTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmhcbkBAIC00ODcsNiArNDg3LDcgQEAgc3RydWN0IGk0MGVfcGYge1xuIFx0dTE2IHJzc19zaXplX21heDsgICAgICAgICAgLyogSFcgZGVmaW5lZCBtYXggUlNTIHF1ZXVlcyAqL1xuIFx0dTE2IGZkaXJfcGZfZmlsdGVyX2NvdW50OyAgLyogbnVtIG9mIGd1YXJhbnRlZWQgZmlsdGVycyBmb3IgdGhpcyBQRiAqL1xuIFx0dTE2IG51bV9hbGxvY192c2k7ICAgICAgICAgLyogbnVtIFZTSXMgdGhpcyBkcml2ZXIgc3VwcG9ydHMgKi9cbitcdHUzMiBhdHJfc2FtcGxlX3JhdGU7XG4gXHRib29sIHdvbF9lbjtcbiBcbiBcdHN0cnVjdCBobGlzdF9oZWFkIGZkaXJfZmlsdGVyX2xpc3Q7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmNcbmluZGV4IDIyOTE3OWNjYzEzMTllLi5jZjQ4N2VmZGQ4MDNkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmNcbkBAIC0zMywxMiArMzMsNDggQEAgc3RhdGljIGludCBpNDBlX21heF9tYWNfcGVyX3ZmX2dldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgaW50IGk0MGVfYXRyX3NhbXBsZV9yYXRlX3NldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcbitcdFx0XHRcdCAgICB1MzIgaWQsXG4rXHRcdFx0XHQgICAgc3RydWN0IGRldmxpbmtfcGFyYW1fZ3NldF9jdHggKmN0eCxcbitcdFx0XHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4re1xuK1x0c3RydWN0IGk0MGVfcGYgKnBmID0gZGV2bGlua19wcml2KGRldmxpbmspO1xuK1x0dTMyIHNhbXBsZV9yYXRlID0gY3R4LVx1MDAzZXZhbC52dTMyO1xuK1xuK1x0cGYtXHUwMDNlYXRyX3NhbXBsZV9yYXRlID0gc2FtcGxlX3JhdGU7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBpNDBlX2F0cl9zYW1wbGVfcmF0ZV9nZXQoc3RydWN0IGRldmxpbmsgKmRldmxpbmssXG4rXHRcdFx0XHQgICAgdTMyIGlkLFxuK1x0XHRcdFx0ICAgIHN0cnVjdCBkZXZsaW5rX3BhcmFtX2dzZXRfY3R4ICpjdHgsXG4rXHRcdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuK3tcbitcdHN0cnVjdCBpNDBlX3BmICpwZiA9IGRldmxpbmtfcHJpdihkZXZsaW5rKTtcbitcbitcdGN0eC1cdTAwM2V2YWwudnUzMiA9IHBmLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitlbnVtIGk0MGVfZGxfcGFyYW1faWQge1xuK1x0STQwRV9ERVZMSU5LX1BBUkFNX0lEX0JBU0UgPSBERVZMSU5LX1BBUkFNX0dFTkVSSUNfSURfTUFYLFxuK1x0STQwRV9ERVZMSU5LX1BBUkFNX0lEX0FUUl9TQU1QTEVfUkFURSxcbit9O1xuK1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19wYXJhbSBpNDBlX2RsX3BhcmFtc1tdID0ge1xuIFx0REVWTElOS19QQVJBTV9HRU5FUklDKE1BWF9NQUNfUEVSX1ZGLFxuIFx0XHRcdCAgICAgIEJJVChERVZMSU5LX1BBUkFNX0NNT0RFX1JVTlRJTUUpLFxuIFx0XHRcdCAgICAgIGk0MGVfbWF4X21hY19wZXJfdmZfZ2V0LFxuIFx0XHRcdCAgICAgIGk0MGVfbWF4X21hY19wZXJfdmZfc2V0LFxuIFx0XHRcdCAgICAgIE5VTEwpLFxuK1x0REVWTElOS19QQVJBTV9EUklWRVIoSTQwRV9ERVZMSU5LX1BBUkFNX0lEX0FUUl9TQU1QTEVfUkFURSxcbitcdFx0XHQgICAgIFwiYXRyX3NhbXBsZV9yYXRlXCIsXG4rXHRcdFx0ICAgICBERVZMSU5LX1BBUkFNX1RZUEVfVTMyLFxuK1x0XHRcdCAgICAgQklUKERFVkxJTktfUEFSQU1fQ01PREVfUlVOVElNRSksXG4rXHRcdFx0ICAgICBpNDBlX2F0cl9zYW1wbGVfcmF0ZV9nZXQsXG4rXHRcdFx0ICAgICBpNDBlX2F0cl9zYW1wbGVfcmF0ZV9zZXQsXG4rXHRcdFx0ICAgICBOVUxMKSxcbiB9O1xuIFxuIHN0YXRpYyB2b2lkIGk0MGVfaW5mb19nZXRfZHNuKHN0cnVjdCBpNDBlX3BmICpwZiwgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5pbmRleCBhMDQ2ODMwMDRhNTY3Ny4uNGQ0ZDRiMDdhMGYzYTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jXG5AQCAtMzQ1NCwxMiArMzQ1NCw3IEBAIHN0YXRpYyBpbnQgaTQwZV9jb25maWd1cmVfdHhfcmluZyhzdHJ1Y3QgaTQwZV9yaW5nICpyaW5nKVxuIFx0XHRyaW5nLVx1MDAzZXhza19wb29sID0gaTQwZV94c2tfcG9vbChyaW5nKTtcbiBcbiBcdC8qIHNvbWUgQVRSIHJlbGF0ZWQgdHggcmluZyBpbml0ICovXG4tXHRpZiAodGVzdF9iaXQoSTQwRV9GTEFHX0ZEX0FUUl9FTkEsIHZzaS1cdTAwM2ViYWNrLVx1MDAzZWZsYWdzKSkge1xuLVx0XHRyaW5nLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZSA9IEk0MEVfREVGQVVMVF9BVFJfU0FNUExFX1JBVEU7XG4tXHRcdHJpbmctXHUwMDNlYXRyX2NvdW50ID0gMDtcbi1cdH0gZWxzZSB7XG4tXHRcdHJpbmctXHUwMDNlYXRyX3NhbXBsZV9yYXRlID0gMDtcbi1cdH1cbitcdHJpbmctXHUwMDNlYXRyX2NvdW50ID0gMDtcbiBcbiBcdC8qIGNvbmZpZ3VyZSBYUFMgKi9cbiBcdGk0MGVfY29uZmlnX3hwc190eF9yaW5nKHJpbmcpO1xuQEAgLTEyNzQyLDYgKzEyNzM3LDggQEAgc3RhdGljIGludCBpNDBlX3N3X2luaXQoc3RydWN0IGk0MGVfcGYgKnBmKVxuIFx0XHR9XG4gXHR9XG4gXG4rXHRwZi1cdTAwM2VhdHJfc2FtcGxlX3JhdGUgPSBJNDBFX0RFRkFVTFRfQVRSX1NBTVBMRV9SQVRFO1xuK1xuIFx0aWYgKChwZi1cdTAwM2Vody5mdW5jX2NhcHMuZmRfZmlsdGVyc19ndWFyYW50ZWVkIFx1MDAzZSAwKSB8fFxuIFx0ICAgIChwZi1cdTAwM2Vody5mdW5jX2NhcHMuZmRfZmlsdGVyc19iZXN0X2VmZm9ydCBcdTAwM2UgMCkpIHtcbiBcdFx0c2V0X2JpdChJNDBFX0ZMQUdfRkRfQVRSX0VOQSwgcGYtXHUwMDNlZmxhZ3MpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jXG5pbmRleCA4OTRmMmQwNmQzOWQwNy4uYjM2ZTBmYzliMzFkMjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jXG5AQCAtMjg3OSw3ICsyODc5LDcgQEAgc3RhdGljIHZvaWQgaTQwZV9hdHIoc3RydWN0IGk0MGVfcmluZyAqdHhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0cmV0dXJuO1xuIFxuIFx0LyogaWYgc2FtcGxpbmcgaXMgZGlzYWJsZWQgZG8gbm90aGluZyAqL1xuLVx0aWYgKCF0eF9yaW5nLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZSlcbitcdGlmICghcGYtXHUwMDNlYXRyX3NhbXBsZV9yYXRlKVxuIFx0XHRyZXR1cm47XG4gXG4gXHQvKiBDdXJyZW50bHkgb25seSBJUHY0L0lQdjYgd2l0aCBUQ1AgaXMgc3VwcG9ydGVkICovXG5AQCAtMjkzMSw3ICsyOTMxLDcgQEAgc3RhdGljIHZvaWQgaTQwZV9hdHIoc3RydWN0IGk0MGVfcmluZyAqdHhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGlmICghdGgtXHUwMDNlZmluIFx1MDAyNlx1MDAyNlxuIFx0ICAgICF0aC1cdTAwM2VzeW4gXHUwMDI2XHUwMDI2XG4gXHQgICAgIXRoLVx1MDAzZXJzdCBcdTAwMjZcdTAwMjZcbi1cdCAgICAodHhfcmluZy1cdTAwM2VhdHJfY291bnQgXHUwMDNjIHR4X3JpbmctXHUwMDNlYXRyX3NhbXBsZV9yYXRlKSlcbitcdCAgICAodHhfcmluZy1cdTAwM2VhdHJfY291bnQgXHUwMDNjIHBmLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZSkpXG4gXHRcdHJldHVybjtcbiBcbiBcdHR4X3JpbmctXHUwMDNlYXRyX2NvdW50ID0gMDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaFxuaW5kZXggMWU1ZmQ2M2Q0N2Y0N2MuLmY0MTc5OTE0ODdlYWM5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguaFxuQEAgLTM2Nyw4ICszNjcsNyBAQCBzdHJ1Y3QgaTQwZV9yaW5nIHtcbiBcdHUxNiBuZXh0X3RvX2NsZWFuO1xuIFx0dTE2IHhkcF90eF9hY3RpdmU7XG4gXG4tXHR1OCBhdHJfc2FtcGxlX3JhdGU7XG4tXHR1OCBhdHJfY291bnQ7XG4rXHR1MzIgYXRyX2NvdW50O1xuIFxuIFx0Ym9vbCByaW5nX2FjdGl2ZTtcdFx0LyogaXMgcmluZyBvbmxpbmUgb3Igbm90ICovXG4gXHRib29sIGFybV93YjtcdFx0LyogZG8gc29tZXRoaW5nIHRvIGFybSB3cml0ZSBiYWNrICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNTozMjo0MC4xMzI3NTA2ODJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTUzNjg3ODQ2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGk0MGUgRHJpdmVyIFBhdGNoOiBSZWFjaGFiaWxpdHkgYW5kIEltcGFjdCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgaTQwZWAgZHJpdmVyLiBJdCdzIGFkZGluZyBhIGRldmxpbmsgcGFyYW1ldGVyLCBgYXRyX3NhbXBsZV9yYXRlYCwgdG8gY29udHJvbCBob3cgb2Z0ZW4gdGhlIEZsb3cgRGlyZWN0b3IgQVRSIGlzIHVwZGF0ZWQuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIGJ1dCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyBhbHdheXMgYWJvdXQgaG93IHdlIGNhbiAqYWN0dWFsbHkqIHRyaWdnZXIgdGhpcyBjb2RlIGFuZCB0ZXN0IGl0LiBUaGUgcGF0Y2ggdG91Y2hlcyB0aGUgdXN1YWwgc3VzcGVjdHM6IGRvY3VtZW50YXRpb24sIGhlYWRlciBmaWxlcywgYW5kIHRoZSBjb3JlIGRyaXZlciBmaWxlcyAtIGBpNDBlX2RldmxpbmsuY2AsIGBpNDBlX21haW4uY2AsIGBpNDBlX3R4cnguY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbmFsIGltcGFjdCBhbmQgaWYgSSBjYW4gZXZlbiBnZXQgdGhpcyB0byBydW4gaW4gYSB0ZXN0IGVudmlyb25tZW50LlxuXG5UaGUga2V5IGNoYW5nZXMgaW52b2x2ZSBhZGRpbmcgdGhlIGBpNDBlX2F0cl9zYW1wbGVfcmF0ZV9zZXRgIGFuZCBgaTQwZV9hdHJfc2FtcGxlX3JhdGVfZ2V0YCBmdW5jdGlvbnMgaW4gYGk0MGVfZGV2bGluay5jYC4gQWxzbywgaXQgbG9va3MgbGlrZSB0aGV5J3JlIG1vZGlmeWluZyBob3cgdGhlIGBpNDBlX2F0cmAgZnVuY3Rpb24gYW5kIGBpNDBlX2NvbmZpZ3VyZV90eF9yaW5nYCBiZWhhdmU7IHNwZWNpZmljYWxseSwgdGhleSdyZSB1c2luZyBhIHBlci1QRiAoUGh5c2ljYWwgRnVuY3Rpb24pIGBhdHJfc2FtcGxlX3JhdGVgIHJhdGhlciB0aGFuIHJpbmctc3BlY2lmaWMgdmFyaWFibGVzLiBBZGRpdGlvbmFsbHksIGluIGBpNDBlX3N3X2luaXRgLCB0aGV5J3JlIHNldHRpbmcgYSBkZWZhdWx0IGBhdHJfc2FtcGxlX3JhdGVgLiBUaGVzZSBhcmUgYWxsIGZhaXJseSB0eXBpY2FsIGRyaXZlciBjaGFuZ2VzLCBidXQgdGhlIHJlYWwgcXVlc3Rpb24gaXM6IGNhbiBJIGdldCB0byB0aGUgbmV3IGNvZGU/XG5cblRoZSBiaWcgcHJvYmxlbSBJIHNlZSBpcyB0aGF0IGBpNDBlYCBpcyB0aGUgSW50ZWwgWEw3MTAgbmV0d29yayBkcml2ZXIsIGFuZCBteSBpbW1lZGlhdGUgY29uY2VybiBpcyB3aGV0aGVyIHRoaXMgaXMgc29tZXRoaW5nIEkgY2FuIGVtdWxhdGUuIE15IGtub3dsZWRnZSBvZiBRRU1VIGNvbWVzIHRvIG1pbmQuIExldCBtZSBzZWUuLi4gSSBrbm93IFFFTVUgc3VwcG9ydHMgYSB2YXJpZXR5IG9mIG5ldHdvcmsgZGV2aWNlcywgYnV0IGRvZXMgaXQgc3VwcG9ydCBgaTQwZWA/IEkgY2FuIGNoZWNrIHdoYXQgaXQgZG9lcyBzdXBwb3J0IC0gYGUxMDAwYCwgYGUxMDAwZWAsIGBpZ2JgLCBhbmQgdGhlIG90aGVycy4gQWgsIGxvb2tzIGxpa2UgaXQgZG9lc24ndC4gTm8gYGk0MGVgIHRoZXJlLiBOb3cgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gdG8gZ2V0IHBhc3QgdGhpcy4gU3l6a2FsbGVyLCBpdCBzZWVtcywgZG9lc24ndCBoYXZlIGFuIGk0MGUgZW11bGF0b3IgZWl0aGVyLCB3aGljaCBpcyBhIG1ham9yIHJlZCBmbGFnLlxuXG5UaGUgaW1wbGljYXRpb25zIGFyZSBwcmV0dHkgc3RhcmsuIElmIGBpNDBlYCBpc24ndCBlbXVsYXRlZCwgdGhlbiB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIHRoZSBkZXZpY2Ugd2lsbCBuZXZlciBzdWNjZWVkLCBhbmQgYXMgYSByZXN1bHQsIHRoZSBkZXZsaW5rIHBhcmFtZXRlcnMgd29uJ3QgZXZlbiBiZSByZWdpc3RlcmVkLiBUaGF0IG1lYW5zIHRoZSBgdHgvcnhgIHBhdGhzLCB3aGljaCB1c2UgdGhpcyBuZXcgcGFyYW1ldGVyLCB3b24ndCBleGVjdXRlIGVpdGhlci4gU28sIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgaTQwZWAgY2FuIGJlIHByb2JlZCBpbiBteSB0ZXN0IGVudmlyb25tZW50LiBJIGtub3cgYGk0MGVgIGlzIGEgUENJIGRldmljZS4gSSBjYW4gdXNlIHRoZSBQQ0kgSURzIHRvIHRyeSB0byBmaWd1cmUgb3V0IHdoYXQgdHlwZSBvZiBkZXZpY2UgdGhpcyBpcy5cblxuV2FpdCwgbG9va2luZyBmdXJ0aGVyLCBRRU1VIGRvZXMgKm5vdCogZW11bGF0ZSB0aGUgWEw3MTAuIFNvIHRoYXQncyB0aGUgZW5kIG9mIG15IGVtdWxhdGlvbiBob3Blcy4gRG9lcyB0aGF0IG1lYW4gdGhlcmUncyBubyB3YXkgdG8gdHJpZ2dlciBkZXZsaW5rIHBhcmFtZXRlciBzZXR0aW5nIHVubGVzcyBJIGhhdmUgdGhlIHBoeXNpY2FsIGRldmljZT8gUHJldHR5IG11Y2guIERldmxpbmsgcGFyYW1ldGVycyBhcmUgdHlwaWNhbGx5IHJlZ2lzdGVyZWQgcGVyIGRldmljZSBpbnN0YW5jZSwgYW5kIHRoYXQncyB1c3VhbGx5IGRvbmUgZHVyaW5nIHRoZSBwcm9iZSBmdW5jdGlvbi4gTGV0IG1lIGdvIGJhY2sgdG8gYGk0MGVfZGV2bGluay5jYCBhbmQgY29uZmlybSBleGFjdGx5IGhvdyB0aGUgcGFyYW1ldGVyIGlzIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMTQsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNTozMjo1MS42Njk2MzI0MjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyNjc4MzMyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpNDBlX2RldmxpbmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9NYWtlZmlsZT0xMz1pNDBlLXkgOj0gaTQwZV9tYWluLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9NYWtlZmlsZS0yNy1cXHRpNDBlX3hzay5vXFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvTWFrZWZpbGU6Mjg6XFx0aTQwZV9kZXZsaW5rLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL01ha2VmaWxlLTI5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmgtMTctI2luY2x1ZGUgXFxcImk0MGVfZGVidWcuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaDoxODojaW5jbHVkZSBcXFwiaTQwZV9kZXZsaW5rLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmgtMTktI2luY2x1ZGUgXFxcImk0MGVfaW8uaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtNS0jaW5jbHVkZSBcXFwiaTQwZS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6NjojaW5jbHVkZSBcXFwiaTQwZV9kZXZsaW5rLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy03LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYz0xMTA9c3RhdGljIHZvaWQgaTQwZV9pbmZvX3BiYShzdHJ1Y3QgaTQwZV9odyAqaHcsIGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MTE3OmVudW0gaTQwZV9kZXZsaW5rX3ZlcnNpb25fdHlwZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xMTgtXFx0STQwRV9ETF9WRVJTSU9OX0ZJWEVELFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxMjI6c3RhdGljIGludCBpNDBlX2RldmxpbmtfaW5mb19wdXQoc3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJlcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjEyMzpcXHRcXHRcXHRcXHQgZW51bSBpNDBlX2RldmxpbmtfdmVyc2lvbl90eXBlIHR5cGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xMjQtXFx0XFx0XFx0XFx0IGNvbnN0IGNoYXIgKmtleSwgY29uc3QgY2hhciAqdmFsdWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTEzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjEzODpzdGF0aWMgaW50IGk0MGVfZGV2bGlua19pbmZvX2dldChzdHJ1Y3QgZGV2bGluayAqZGwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xMzktXFx0XFx0XFx0XFx0IHN0cnVjdCBkZXZsaW5rX2luZm9fcmVxICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTE1Mi1cXHRpNDBlX2luZm9fZndfbWdtdChodywgYnVmLCBzaXplb2YoYnVmKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxNTM6XFx0ZXJyID0gaTQwZV9kZXZsaW5rX2luZm9fcHV0KHJlcSwgSTQwRV9ETF9WRVJTSU9OX1JVTk5JTkcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xNTQtXFx0XFx0XFx0XFx0ICAgIERFVkxJTktfSU5GT19WRVJTSU9OX0dFTkVSSUNfRldfTUdNVCwgYnVmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTU4LVxcdGk0MGVfaW5mb19md19tZ210X2J1aWxkKGh3LCBidWYsIHNpemVvZihidWYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjE1OTpcXHRlcnIgPSBpNDBlX2RldmxpbmtfaW5mb19wdXQocmVxLCBJNDBFX0RMX1ZFUlNJT05fUlVOTklORyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTE2MC1cXHRcXHRcXHRcXHQgICAgXFxcImZ3Lm1nbXQuYnVpbGRcXFwiLCBidWYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xNjQtXFx0aTQwZV9pbmZvX2Z3X2FwaShodywgYnVmLCBzaXplb2YoYnVmKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxNjU6XFx0ZXJyID0gaTQwZV9kZXZsaW5rX2luZm9fcHV0KHJlcSwgSTQwRV9ETF9WRVJTSU9OX1JVTk5JTkcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xNjYtXFx0XFx0XFx0XFx0ICAgIERFVkxJTktfSU5GT19WRVJTSU9OX0dFTkVSSUNfRldfTUdNVF9BUEksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTE3MS1cXHRpNDBlX2luZm9fbnZtX3ZlcihodywgYnVmLCBzaXplb2YoYnVmKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxNzI6XFx0ZXJyID0gaTQwZV9kZXZsaW5rX2luZm9fcHV0KHJlcSwgSTQwRV9ETF9WRVJTSU9OX1JVTk5JTkcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xNzMtXFx0XFx0XFx0XFx0ICAgIFxcXCJmdy5wc2lkLmFwaVxcXCIsIGJ1Zik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTE3Ny1cXHRpNDBlX2luZm9fZWV0cmFjayhodywgYnVmLCBzaXplb2YoYnVmKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxNzg6XFx0ZXJyID0gaTQwZV9kZXZsaW5rX2luZm9fcHV0KHJlcSwgSTQwRV9ETF9WRVJTSU9OX1JVTk5JTkcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xNzktXFx0XFx0XFx0XFx0ICAgIERFVkxJTktfSU5GT19WRVJTSU9OX0dFTkVSSUNfRldfQlVORExFX0lELFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xODQtXFx0aTQwZV9pbmZvX2NpdmRfdmVyKGh3LCBidWYsIHNpemVvZihidWYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjE4NTpcXHRlcnIgPSBpNDBlX2RldmxpbmtfaW5mb19wdXQocmVxLCBJNDBFX0RMX1ZFUlNJT05fUlVOTklORyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTE4Ni1cXHRcXHRcXHRcXHQgICAgREVWTElOS19JTkZPX1ZFUlNJT05fR0VORVJJQ19GV19VTkRJLCBidWYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xOTAtXFx0aTQwZV9pbmZvX3BiYShodywgYnVmLCBzaXplb2YoYnVmKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxOTE6XFx0ZXJyID0gaTQwZV9kZXZsaW5rX2luZm9fcHV0KHJlcSwgSTQwRV9ETF9WRVJTSU9OX0ZJWEVELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMTkyLVxcdFxcdFxcdFxcdCAgICBERVZMSU5LX0lORk9fVkVSU0lPTl9HRU5FUklDX0JPQVJEX0lELCBidWYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0xOTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoxOTc6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX29wcyBpNDBlX2Rldmxpbmtfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MTk4OlxcdC5pbmZvX2dldCA9IGk0MGVfZGV2bGlua19pbmZvX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTE5OS19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYz0yMDg9c3RydWN0IGk0MGVfcGYgKmk0MGVfYWxsb2NfcGYoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoyMTI6XFx0ZGV2bGluayA9IGRldmxpbmtfYWxsb2MoXFx1MDAyNmk0MGVfZGV2bGlua19vcHMsIHNpemVvZihzdHJ1Y3QgaTQwZV9wZiksIGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yMTMtXFx0aWYgKCFkZXZsaW5rKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYz0yMjU9dm9pZCBpNDBlX2ZyZWVfcGYoc3RydWN0IGk0MGVfcGYgKnBmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yMzItLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoyMzM6ICogaTQwZV9kZXZsaW5rX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgZGV2bGluayBpbnRlcmZhY2UgZm9yIHRoaXMgUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTIzNC0gKiBAcGY6IHRoZSBQRiB0byByZWdpc3RlciB0aGUgZGV2bGluayBmb3IuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTIzNy0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzoyMzg6dm9pZCBpNDBlX2RldmxpbmtfcmVnaXN0ZXIoc3RydWN0IGk0MGVfcGYgKnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjU0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MjU1OiAqIGk0MGVfZGV2bGlua191bnJlZ2lzdGVyIC0gVW5yZWdpc3RlciBkZXZsaW5rIHJlc291cmNlcyBmb3IgdGhpcyBQRi5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTI1Ni0gKiBAcGY6IHRoZSBQRiBzdHJ1Y3R1cmUgdG8gY2xlYW51cFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yNTktICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MjYwOnZvaWQgaTQwZV9kZXZsaW5rX3VucmVnaXN0ZXIoc3RydWN0IGk0MGVfcGYgKnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjY5LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MjcwOiAqIGk0MGVfZGV2bGlua19zZXRfc3dpdGNoX2lkIC0gU2V0IHVuaXF1ZSBzd2l0Y2ggaWQgYmFzZWQgb24gcGNpIGRzblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjcxLSAqIEBwZjogdGhlIFBGIHRvIGNyZWF0ZSBhIGRldmxpbmsgcG9ydCBmb3JcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjczLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6Mjc0OnN0YXRpYyB2b2lkIGk0MGVfZGV2bGlua19zZXRfc3dpdGNoX2lkKHN0cnVjdCBpNDBlX3BmICpwZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTI3NS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IG5ldGRldl9waHlzX2l0ZW1faWQgKnBwaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTI4My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjI4NDogKiBpNDBlX2RldmxpbmtfY3JlYXRlX3BvcnQgLSBDcmVhdGUgYSBkZXZsaW5rIHBvcnQgZm9yIHRoaXMgUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTI4NS0gKiBAcGY6IHRoZSBQRiB0byBjcmVhdGUgYSBwb3J0IGZvclxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0yOTItICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MjkzOmludCBpNDBlX2RldmxpbmtfY3JlYXRlX3BvcnQoc3RydWN0IGk0MGVfcGYgKnBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMjk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMzAxLVxcdGF0dHJzLnBoeXMucG9ydF9udW1iZXIgPSBwZi1cXHUwMDNlaHcucGZfaWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYzozMDI6XFx0aTQwZV9kZXZsaW5rX3NldF9zd2l0Y2hfaWQocGYsIFxcdTAwMjZhdHRycy5zd2l0Y2hfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmMtMzAzLVxcdGRldmxpbmtfcG9ydF9hdHRyc19zZXQoXFx1MDAyNnBmLVxcdTAwM2VkZXZsaW5rX3BvcnQsIFxcdTAwMjZhdHRycyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jLTMxMy0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5jOjMxNDogKiBpNDBlX2RldmxpbmtfZGVzdHJveV9wb3J0IC0gRGVzdHJveSB0aGUgZGV2bGlua19wb3J0IGZvciB0aGlzIFBGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0zMTUtICogQHBmOiB0aGUgUEYgdG8gY2xlYW51cFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0zMTgtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmM6MzE5OnZvaWQgaTQwZV9kZXZsaW5rX2Rlc3Ryb3lfcG9ydChzdHJ1Y3QgaTQwZV9wZiAqcGYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuYy0zMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RldmxpbmsuaD0xMj12b2lkIGk0MGVfZnJlZV9wZihzdHJ1Y3QgaTQwZV9wZiAqcGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmg6MTM6dm9pZCBpNDBlX2RldmxpbmtfcmVnaXN0ZXIoc3RydWN0IGk0MGVfcGYgKnBmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5oOjE0OnZvaWQgaTQwZV9kZXZsaW5rX3VucmVnaXN0ZXIoc3RydWN0IGk0MGVfcGYgKnBmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5oOjE1OmludCBpNDBlX2RldmxpbmtfY3JlYXRlX3BvcnQoc3RydWN0IGk0MGVfcGYgKnBmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGV2bGluay5oOjE2OnZvaWQgaTQwZV9kZXZsaW5rX2Rlc3Ryb3lfcG9ydChzdHJ1Y3QgaTQwZV9wZiAqcGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZXZsaW5rLmgtMTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jPTE0MDk2PWludCBpNDBlX3ZzaV9yZWxlYXNlKHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xNDEzMy1cXHRpZiAodnNpLVxcdTAwM2V0eXBlID09IEk0MEVfVlNJX01BSU4pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxNDEzNDpcXHRcXHRpNDBlX2RldmxpbmtfZGVzdHJveV9wb3J0KHBmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE0MTM1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNDI1NT1zdGF0aWMgc3RydWN0IGk0MGVfdnNpICppNDBlX3ZzaV9yZWluaXRfc2V0dXAoc3RydWN0IGk0MGVfdnNpICp2c2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE0MzE1LVxcdGlmICh2c2ktXFx1MDAzZXR5cGUgPT0gSTQwRV9WU0lfTUFJTilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjE0MzE2OlxcdFxcdGk0MGVfZGV2bGlua19kZXN0cm95X3BvcnQocGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQzMTctXFx0aTQwZV9hcV9kZWxldGVfZWxlbWVudChcXHUwMDI2cGYtXFx1MDAzZWh3LCB2c2ktXFx1MDAzZXNlaWQsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNDMzNj1zdHJ1Y3QgaTQwZV92c2kgKmk0MGVfdnNpX3NldHVwKHN0cnVjdCBpNDBlX3BmICpwZiwgdTggdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQ0NDItXFx0XFx0aWYgKHZzaS1cXHUwMDNldHlwZSA9PSBJNDBFX1ZTSV9NQUlOKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxNDQ0MzpcXHRcXHRcXHRyZXQgPSBpNDBlX2RldmxpbmtfY3JlYXRlX3BvcnQocGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQ0NDQtXFx0XFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTQ0OTgtXFx0aWYgKHZzaS1cXHUwMDNldHlwZSA9PSBJNDBFX1ZTSV9NQUlOKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MTQ0OTk6XFx0XFx0aTQwZV9kZXZsaW5rX2Rlc3Ryb3lfcG9ydChwZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xNDUwMC1lcnJfbmV0ZGV2Olxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNTUzMT1zdGF0aWMgaW50IGk0MGVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE2MTAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM6MTYxMDQ6XFx0aTQwZV9kZXZsaW5rX3JlZ2lzdGVyKHBmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE2MTA1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNjE0Nj1zdGF0aWMgdm9pZCBpNDBlX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTYxNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxNjE1NTpcXHRpNDBlX2RldmxpbmtfdW5yZWdpc3RlcihwZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xNjE1Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTU6MzI6NTMuODk2NDI3NjE5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU2NjI3MzEzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIGk0MGUgRHJpdmVyIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgYGk0MGVgIGRyaXZlciwgYXMgYSBQQ0kgZHJpdmVyLCBpcyByZWxpYW50IG9uIGEgUENJIGRldmljZSBiZWluZyBwcmVzZW50LiBTaW1wbGUgZW5vdWdoLiBTaW5jZSBRRU1VIGRvZXNuJ3QgZGlyZWN0bHkgZW11bGF0ZSB0aGUgSW50ZWwgaTQwZSBoYXJkd2FyZSwgdGhlIGRyaXZlciBvYnZpb3VzbHkgd29uJ3QgYmluZCBhbmQgaXRzIHByb2JlIGZ1bmN0aW9uLCBgaTQwZV9wcm9iZWAsIHdvbid0IGdldCBjYWxsZWQuIFRoYXQncyB0aGUgYmFzZWxpbmUuXG5cbk5vdywgbXkgbWluZCBzaGlmdHMgdG8gc3l6a2FsbGVyLiBEb2VzIHN5emthbGxlciBoYXZlIGEgZ2VuZXJhbCBtZWNoYW5pc20gdG8gaW5qZWN0IFBDSSBkZXZpY2VzIGFraW4gdG8gaG93IGl0IGhhbmRsZXMgVVNCIHdpdGggYHN5el91c2JfY29ubmVjdGAsIG9yIHBlcmhhcHMgaW5qZWN0cyBQQ0kgZGV2aWNlcyB1c2luZyBhIHZpcnR1YWwgaG9zdCBjb250cm9sbGVyIGludGVyZmFjZSAoYHZoY2lgKSBsaWtlIGl0IG1pZ2h0IGRvIHdpdGggYSB2aXJ0dWFsIFBDSSBkZXZpY2U/IE5vLiBObyBnZW5lcmljIFBDSSBkZXZpY2UgZW11bGF0aW9uLiBJdCBzZWVtcyBzeXprYWxsZXIgb2ZmZXJzIHNwZWNpYWxpemVkIFwiaW5qZWN0b3JzXCIgZm9yIGRpZmZlcmVudCBoYXJkd2FyZSBzdWJzeXN0ZW1zLiBVU0Igd2l0aCBgc3l6X3VzYl9jb25uZWN0YCwgbWFjODAyMTEgd2l0aCBgc3l6XzgwMjExX2luamVjdF9mcmFtZWAsIGV0Yy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB3cm9uZyBoZXJlLlxuXG5Ib2xkIG9uLCBJIGFtIHdyb25nLiBEb2VzIHN5emthbGxlciBvZmZlciBzb21ldGhpbmcgbGlrZSBhIFBDSSBmdXp6ZXI/IElzIHRoZXJlIGFjdHVhbGx5IFBDSSBmdXp6aW5nIGluIHN5emthbGxlcj8gTGV0J3MgY2hlY2suIFdhaXQgYSBtaW51dGUuIEl0IGRvZXMgbm90IGxvb2sgbGlrZSBgc3l6X3BjaV9kZXZpY2VfYWRkYCBleGlzdHMuIFN5emthbGxlciBkb2Vzbid0IGhhdmUgYSAqZ2VuZXJhbCogUENJIGVtdWxhdG9yLCBqdXN0IHNwZWNpYWxpemVkIG1lY2hhbmlzbXMuIFRoZXkgc2VlbSB0byB1c2UgYHZoY2lgIGZvciBVU0IsIGBtYWM4MDIxMV9od3NpbWAgZm9yIHdpZmksIGB2bmV0YCBmb3IgbmV0d29yaywgYHZrbXNgIGZvciBEUk0sIGB1aW5wdXRgIGZvciBpbnB1dC5cblxuQWxyaWdodCwgd2hhdCBhYm91dCBgdmZpb2A/IFRoYXQgbWlnaHQgYmUgYW4gYXZlbnVlIHRvIGNvbnNpZGVyLiBDb3VsZCB0aGF0IGJlIGEgd2F5IHRvIHJlYWNoIGBpNDBlYCBjb2RlP1xuXG5VbHRpbWF0ZWx5LCB0aGUgcXVlc3Rpb24gaXMsICpjYW4qIHdlIHJlYWNoIHRoZSBgaTQwZWAgY29kZSB0aHJvdWdoIHN5emthbGxlcj8gVGhlIG9idmlvdXMgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiBgaTQwZWAgaXRzZWxmIGlzIGFjdGl2ZWx5IHRhcmdldGVkIGFuZCBmdXp6ZWQgd2l0aGluIHRoZSBzeXprYWxsZXIgZnJhbWV3b3JrLiBMZXQncyBjb25maXJtIGlmIGl0J3MgY3VycmVudGx5IHBhcnQgb2YgdGhlIGZ1enppbmcgdGFyZ2V0IGxpc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTQzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjMzOjAxLjQ2MjcwNTIyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0ODA0NDc0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpNDBlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTU6MzM6MDEuNTI3NTI0NzE0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjgzNTMzMjE5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBpNDBlIENvZGUgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhlIHRhc2sgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggY29udGFpbnMgY29kZSB0aGF0J3MgKnVucmVhY2hhYmxlKiBpbiB2aXJ0dWFsaXplZCBzZXR1cHMgbGlrZSBHQ0Ugb3IgUUVNVS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBgaTQwZWAgZHJpdmVyIGNvZGUgY2FuIGV2ZW4gYmUgZXhlY3V0ZWQgaW4gdGhvc2UgZW52aXJvbm1lbnRzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2hlY2sgYHN5emthbGxlcmAgZm9yIGFueSBkZXNjcmlwdGlvbnMgcmVsYXRlZCB0byBgaTQwZWAsIGJ1dCBtYXliZSBJIGRvbid0IGV2ZW4gbmVlZCB0byBnbyB0aGF0IGZhci4gSSBjYW4ganVzdCBmb2N1cyBvbiByZWFjaGFiaWxpdHkuXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIHRoYXQgY29kZSBwYXRocyByZXF1aXJpbmcgaGFyZHdhcmUgZW11bGF0b3JzIChsaWtlIGBtYWM4MDIxMV9od3NpbWApIHNob3VsZCByZXN1bHQgaW4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBgaTQwZWAgZHJpdmVyIGlzIGZvciBhIHBoeXNpY2FsIG5ldHdvcmsgY2FyZC4gVGhlcmUncyBubyBlcXVpdmFsZW50IHNvZnR3YXJlIGVtdWxhdG9yIGxpa2Ugd2UgaGF2ZSBmb3Igb3RoZXIgZHJpdmVycywgYXQgbGVhc3Qgbm90IHRoYXQgSSdtIGF3YXJlIG9mIGluIHRoZSBrZXJuZWwuIFNvLCB1bmxlc3MgSSdtIG1pc3Npbmcgc29tZXRoaW5nIGNydWNpYWwsIHJlYWNoaW5nIGBpNDBlYCBjb2RlIHNlZW1zIGltcG9zc2libGUgaW4gdGhlc2UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5XYWl0LCBsZXQgbWUgbWFrZSBzdXJlIEknbSBub3Qgb3Zlcmxvb2tpbmcgc29tZXRoaW5nLiBJcyB0aGVyZSAqYW55KiBgaTQwZWAgZW11bGF0b3IgaW4gdGhlIGtlcm5lbCwgc29tZXRoaW5nIEknbSBmb3JnZXR0aW5nPyBObywgbm90IHRoYXQgSSByZWNhbGwuIEhvdyBhYm91dCB0cmlnZ2VyaW5nIGBpNDBlX2F0cl9zYW1wbGVfcmF0ZV9zZXRgIGRpcmVjdGx5PyBObywgdGhhdCdzIG5vdCBwb3NzaWJsZSBlaXRoZXIuIGBpNDBlX2RldmxpbmtfcmVnaXN0ZXJgLCB3aGljaCBJIGFzc3VtZSBpcyBrZXksIGlzIGNhbGxlZCBmcm9tIGBpNDBlX3Byb2JlYCwgYW5kIGBpNDBlX3Byb2JlYCByZXF1aXJlcyB0aGUgUENJIGRldmljZS5cblxuQWxyaWdodCwgbGV0J3MgZG91YmxlLWNoZWNrIGFnYWluLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0J3MgbG9vayBhdCBpdCBmcm9tIGEgZGlmZmVyZW50IGFuZ2xlLiBJcyB0aGVyZSBzb21lIHZpcnR1YWwgYnVzIHRoYXQgKmNvdWxkKiBwcm9iZSBhbmQgbG9hZCB0aGUgYGk0MGVgIGRyaXZlcj8gTm8sIGl0J3MgYSBQQ0kgZHJpdmVyLCBzbyB0aGF0IHdvdWxkbid0IGhhcHBlbi4gUmlnaHQsIGxldCdzIGNoZWNrIGBpNDBlX21haW4uY2AgYW5kIGNvbmZpcm0gdGhhdCBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAgaXMgd2hhdCdzIGJlaW5nIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzYxLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjMzOjA4LjM2Mjg2MTQ0N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzMwMjk5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xNjYzND1zdGF0aWMgaW50IF9faW5pdCBpNDBlX2luaXRfbW9kdWxlKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE2NjU0LVxcdGk0MGVfZGJnX2luaXQoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjE2NjU1OlxcdGVyciA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmk0MGVfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTE2NjU2LVxcdGlmIChlcnIpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTU6MzM6MDguNDI2MTc4NzVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzE2Mjc1OTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyB0aGlzIGxvb2tzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgUENJIGRyaXZlciBwYXRjaCDigJMgdGhlIEludGVsIGk0MGUgRXRoZXJuZXQgZHJpdmVyIHRvIGJlIHByZWNpc2UuIFRoZSBjcml0aWNhbCBpc3N1ZSBpcywgd2l0aG91dCB0aGUgYWN0dWFsIHBoeXNpY2FsIGk0MGUgaGFyZHdhcmUgb3IgYSBRRU1VIGVtdWxhdGlvbiB0aGF0IGFjY3VyYXRlbHkgbW9kZWxzIHRoZSBkZXZpY2UsIHRoZSBkcml2ZXIncyBgcHJvYmVgIGZ1bmN0aW9uLCBhbmQgdGhlcmVmb3JlICphbnkqIG9mIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzLCB3aWxsIHNpbXBseSBuZXZlciBnZXQgY2FsbGVkLiBUaGF0IG1lYW5zIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBzdGFuZGFyZCBRRU1VIGluc3RhbmNlcywgdGhpcyBwYXRjaCBpcyB1bnJlYWNoYWJsZS5cblxuSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJhdGlvbmFsZSBpcyB0aGF0IHRoaXMgdGFyZ2V0cyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIsIHRoZSBJbnRlbCBpNDBlLCBhbmQgZnV6emluZyBpdCByZXF1aXJlcyBlaXRoZXIgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgdmVyeSBzcGVjaWZpYywgYW5kIGxpa2VseSB1bmF2YWlsYWJsZSwgZW11bGF0b3Igb2YgaXQuIEkgZG9uJ3Qgc2VlIGFueSB2YWx1ZSBpbiB0cnlpbmcgdG8gZnV6eiBjb2RlIHRoYXQgd29uJ3QgZXhlY3V0ZS5cblxuSnVzdCBkb3VibGUtY2hlY2tpbmcsIHRoZXJlJ3Mgbm8gYENPTkZJR19JNDBFYCBmbGFnIGRlZmluZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24sIHdoaWNoIHdvdWxkIGhhdmUgYXQgbGVhc3QgZ2l2ZW4gbWUgc29tZXRoaW5nIHRvIGxvb2sgZm9yLiBBbmQgc2luY2UgaXQncyBub3Qgd29ydGggZnV6emluZywgSSBkb24ndCBuZWVkIHRvIGJvdGhlciB3aXRoIGNvbmZpZyBkZXRhaWxzIG9yIGFueSBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIG9uZS5cblxuTGV0IG1lIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBwYXRjaCBxdWlja2x5LiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGRldmxpbmsgcGFyYW1ldGVyIGBhdHJfc2FtcGxlX3JhdGVgIHRvIHRoZSBgaTQwZWAgZHJpdmVyLiBJdCBtb2RpZmllcyBgaTQwZV90eHJ4LmNgIHRvIHVzZSBgcGYtXHUwMDNlYXRyX3NhbXBsZV9yYXRlYCBhbmQgYGk0MGVfbWFpbi5jYCB0byBpbml0aWFsaXplIHRoZSBwYXJhbWV0ZXIgYHBmLVx1MDAzZWF0cl9zYW1wbGVfcmF0ZWAuIEl0J3MgYWxsIHRpZ2h0bHkgc2NvcGVkIHdpdGhpbiB0aGUgYGk0MGVgIGRyaXZlciBpdHNlbGYuXG5cblNvLCB0aGUgZGVmaW5pdGl2ZSByZWFzb25pbmc6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBpNDBlIEV0aGVybmV0IGRyaXZlciwgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBCZWNhdXNlIHRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0b3Igb2YgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIGluIHRoZSBjdXJyZW50IGtlcm5lbCwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiXG5cbkknbGwgcHJvY2VlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzMxLCJPdXRwdXRUb2tlbnMiOjg0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjMzOjE1LjE0MjQ4MDA4NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBpNDBlIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIGk0MGUgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUgb3IgdGhlIGtlcm5lbCwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowz4j8n[1] Phase: Running StartedAt: 2026-07-01 15:33:38 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4j8n[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-01 15:33:38 +0000 UTC FinishedAt: 2026-07-01 15:33:46 +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,}