Name: series-workflow8vntn Phase: Failed StartedAt: 2026-07-14 04:38:49 +0000 UTC FinishedAt: 2026-07-14 04:58:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8vntn[0] Phase: Succeeded StartedAt: 2026-07-14 04:38:49 +0000 UTC FinishedAt: 2026-07-14 04:57:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8vntn[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 04:38:49 +0000 UTC FinishedAt: 2026-07-14 04:57:58 +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+CgkJCTx0ZD4yMDI2LzA3LzE0IDA0OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGEgZHJpdmVyIGZvciBwaHlzaWNhbCBoYXJkd2FyZSAoTWF4TGluZWFyIE14TDg2Mnh4IHN3aXRjaCkgd2hpY2ggaXMgYW4gTURJTyBkZXZpY2UuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA0OjU3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYmEyZjAyZDVjMzM3ZDA4YzM2ZjFiNzIzODNkOThkYTUwODExMjg0ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDA0OjU3OjE5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9NYWtlZmlsZVxuaW5kZXggYTdiZTBlNjY2OWRmYTUuLmJjY2FjMGQwZjcwM2Y2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvTWFrZWZpbGVcbkBAIC0xLDMgJiM0MzsxLDMgQEBcbiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gb2JqLSQoQ09ORklHX05FVF9EU0FfTVhMODYyKSAmIzQzOz0gbXhsODYyeHhfZHNhLm9cbi1teGw4NjJ4eF9kc2EteSA6PSBteGw4NjJ4eC5vIG14bDg2Mnh4LWhvc3QubyBteGw4NjJ4eC1waHlsaW5rLm9cbiYjNDM7bXhsODYyeHhfZHNhLXkgOj0gbXhsODYyeHgubyBteGw4NjJ4eC1ob3N0Lm8gbXhsODYyeHgtcGh5bGluay5vIG14bDg2Mnh4LWZ3Lm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtY21kLmggYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtY21kLmhcbmluZGV4IGM4N2E5NTVjMTNjNDhlLi5lMmFhMjkzNGU5ZTE2MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1jbWQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWNtZC5oXG5AQCAtNzAsNiAmIzQzOzcwLDcgQEBcbiAjZGVmaW5lIElOVF9HUEhZX1JFQURcdFx0XHQoR1BZX0dQWTJYWF9NQUdJQyAmIzQzOyAweDEpXG4gI2RlZmluZSBJTlRfR1BIWV9XUklURVx0XHRcdChHUFlfR1BZMlhYX01BR0lDICYjNDM7IDB4MilcbiBcbiYjNDM7I2RlZmluZSBTWVNfTUlTQ19GV19VUERBVEVcdFx0KFNZU19NSVNDX01BR0lDICYjNDM7IDB4MSlcbiAjZGVmaW5lIFNZU19NSVNDX0ZXX1ZFUlNJT05cdFx0KFNZU19NSVNDX01BR0lDICYjNDM7IDB4MilcbiBcbiAjZGVmaW5lIE1YTDg2MlhYX1hQQ1NfUENTX0NPTkZJR1x0KE1YTDg2MlhYX1hQQ1NfTUFHSUMgJiM0MzsgMHgxKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1mdy5jIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWZ3LmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uODhkNTNiZWEzMzZmZDVcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1mdy5jXG5AQCAtMCwwICYjNDM7MSw0MzkgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcbiYjNDM7LypcbiYjNDM7ICogRmlybXdhcmUgZmxhc2ggYW5kIGRldmxpbmsgc3VwcG9ydCBmb3IgTWF4TGluZWFyIE14TDg2Mnh4XG4mIzQzOyAqXG4mIzQzOyAqIENvcHlyaWdodCAoQykgMjAyNSBEYW5pZWwgR29sbGUgXHUwMDNjZGFuaWVsQG1ha3JvdG9waWEub3JnXHUwMDNlXG4mIzQzOyAqL1xuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY3JjMzIuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcnRuZXRsaW5rLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbmV0L2RzYS5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtteGw4NjJ4eC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O214bDg2Mnh4LWFwaS5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O214bDg2Mnh4LWNtZC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O214bDg2Mnh4LWZ3LmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7bXhsODYyeHgtaG9zdC5oXCYjMzQ7XG4mIzQzO1xuJiM0MzsvKiBTQiBQREkgcmVnaXN0ZXJzIChjbGF1c2UtMjIgU01ESU8gYWRkcmVzcyBzcGFjZSkgKi9cbiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfQ1RSTFx0XHQweGUxMDBcbiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfQUREUlx0XHQweGUxMDFcbiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfREFUQVx0XHQweGUxMDJcbiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfU1RBVFx0XHQweGUxMDNcbiYjNDM7XG4mIzQzOy8qIFNCIFBESSBDVFJMIG1vZGVzICovXG4mIzQzOyNkZWZpbmUgTVhMODYyWFhfU0JfUERJX0NUUkxfUlNUXHQweDAwXG4mIzQzOyNkZWZpbmUgTVhMODYyWFhfU0JfUERJX0NUUkxfV1JcdDB4MDJcbiYjNDM7XG4mIzQzOy8qIFNCIFBESSBoYW5kc2hha2UgbWFnaWMgKi9cbiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfUkVBRFlcdFx0MHhjNTVjXG4mIzQzOyNkZWZpbmUgTVhMODYyWFhfU0JfUERJX1NUQVJUXHRcdDB4ZjQ4ZlxuJiM0MzsjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9FTkRcdFx0MHgzY2MzXG4mIzQzO1xuJiM0MzsvKiBGaXJtd2FyZSB0cmFuc2ZlciBnZW9tZXRyeSAqL1xuJiM0MzsjZGVmaW5lIE1YTDg2MlhYX0ZXX0hEUl9TSVpFXHRcdDIwXG4mIzQzOyNkZWZpbmUgTVhMODYyWFhfRldfQkFOS19IQUxGXHRcdDE2Mzg0XHQvKiB3b3JkcyBwZXIgaGFsZi1iYW5rICovXG4mIzQzOyNkZWZpbmUgTVhMODYyWFhfRldfQkFOS19TTElDRVx0XHQzMjc2MFx0Lyogd29yZHMgcGVyIGZ1bGwgc2xpY2UgKi9cbiYjNDM7I2RlZmluZSBNWEw4NjJYWF9GV19TQjFfQUREUlx0XHQweDc4MDBcdC8qIFNCMSB3b3JkIGFkZHJlc3MgKi9cbiYjNDM7XG4mIzQzOy8qIFRpbWVvdXRzIChnZW5lcm91cyB1cHBlciBib3VuZHMpICovXG4mIzQzOyNkZWZpbmUgTVhMODYyWFhfRldfUkVBRFlfVElNRU9VVF9NU1x0MzAwMDBcbiYjNDM7I2RlZmluZSBNWEw4NjJYWF9GV19BQ0tfVElNRU9VVF9NU1x0NTAwMFxuJiM0MzsjZGVmaW5lIE1YTDg2MlhYX0ZXX0VSQVNFX1RJTUVPVVRfTVNcdDMwMDAwMFxuJiM0MzsjZGVmaW5lIE1YTDg2MlhYX0ZXX1dSSVRFX1RJTUVPVVRfTVNcdDEyMDAwMFxuJiM0MzsjZGVmaW5lIE1YTDg2MlhYX0ZXX1JFQk9PVF9ERUxBWV9NU1x0NTAwMFxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgbXhsODYyeHhfc2JfcGRpX3Jlc2V0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KVxuJiM0Mzt7XG4mIzQzO1x0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsXG4mIzQzO1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfUlNUKTtcbiYjNDM7XHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfQUREUixcbiYjNDM7XHRcdFx0ICAgICBNWEw4NjJYWF9TQl9QRElfQ1RSTF9SU1QpO1xuJiM0MztcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9EQVRBLFxuJiM0MztcdFx0XHQgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1JTVCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgbXhsODYyeHhfc2JfcGRpX3BvbGxfc3RhdChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTE2IGV4cGVjdGVkLFxuJiM0MztcdFx0XHRcdCAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0X21zKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKHRpbWVvdXRfbXMpO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGRvIHtcbiYjNDM7XHRcdHJldCA9IG14bDg2Mnh4X3NtZGlvX3JlYWQocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVQpO1xuJiM0MztcdFx0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRcdGlmICgodTE2KXJldCA9PSBleHBlY3RlZClcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1x0XHR1c2xlZXBfcmFuZ2UoMTAwMDAsIDExMDAwKTtcbiYjNDM7XHR9IHdoaWxlICh0aW1lX2JlZm9yZShqaWZmaWVzLCB0aW1lb3V0KSk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAtRVRJTUVET1VUO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IG14bDg2Mnh4X3NiX3BkaV9mbHVzaF9zbGljZShzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdixcbiYjNDM7XHRcdFx0XHQgICAgICAgdTMyIGRhdGFfd3JpdHRlbilcbiYjNDM7e1xuJiM0MztcdG14bDg2Mnh4X3NiX3BkaV9yZXNldChwcml2KTtcbiYjNDM7XHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfU1RBVCwgZGF0YV93cml0dGVuKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQocHJpdiwgMCxcbiYjNDM7XHRcdFx0XHRcdCBNWEw4NjJYWF9GV19XUklURV9USU1FT1VUX01TKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgbXhsODYyeHhfZmxhc2hfbm90aWZ5KHN0cnVjdCBkZXZsaW5rICpkbCwgY29uc3QgY2hhciAqc3RhdHVzLFxuJiM0MztcdFx0XHRcdCAgdTMyIGRvbmUsIHUzMiB0b3RhbClcbiYjNDM7e1xuJiM0MztcdGRldmxpbmtfZmxhc2hfdXBkYXRlX3N0YXR1c19ub3RpZnkoZGwsIHN0YXR1cywgTlVMTCwgZG9uZSwgdG90YWwpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogbXhsODYyeHhfcmVzY3VlX21vZGVfZGV0ZWN0IC0gY2hlY2sgd2hldGhlciB0aGUgc3dpdGNoIHNpdHMgaW4gTUNVYm9vdFxuJiM0MzsgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgZGF0YVxuJiM0MzsgKlxuJiM0MzsgKiBNQ1Vib290IHNpZ25hbHMgcmVhZGluZXNzIGZvciBhIGZpcm13YXJlIGRvd25sb2FkIHdpdGggdGhlIFNCIFBESVxuJiM0MzsgKiByZWFkeSBtYWdpYzsgb25seSB0aGUgY2xhdXNlLTIyIFNNRElPIGludGVyZmFjZSB3b3JrcyBpbiB0aGlzIHN0YXRlLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IHRydWUgaWYgTUNVYm9vdCBpcyB3YWl0aW5nIGZvciBhIGZpcm13YXJlIGRvd25sb2FkLlxuJiM0MzsgKi9cbiYjNDM7Ym9vbCBteGw4NjJ4eF9yZXNjdWVfbW9kZV9kZXRlY3Qoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBteGw4NjJ4eF9zbWRpb19yZWFkKHByaXYsIE1YTDg2MlhYX1NCX1BESV9TVEFUKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldCA9PSBNWEw4NjJYWF9TQl9QRElfUkVBRFk7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qIGRldmljZV9yZXByb2JlKCkgLVx1MDAzZSByZW1vdmUoKSBmcmVlcyBwcml2IHdoaWxlIHRoZSB3b3JrIHJ1bnMsIHNvXG4mIzQzOyAqIHRoZSB3b3JrIHN0cnVjdCBjYW5ub3QgbGl2ZSBpbiBteGw4NjJ4eF9wcml2LlxuJiM0MzsgKi9cbiYjNDM7c3RydWN0IG14bDg2Mnh4X3JlcHJvYmUge1xuJiM0MztcdHN0cnVjdCBkZXZpY2UgKmRldjtcbiYjNDM7XHRzdHJ1Y3QgZGVsYXllZF93b3JrIGR3b3JrO1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgbXhsODYyeHhfcmVwcm9iZV93b3JrX2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBteGw4NjJ4eF9yZXByb2JlICpyZXByb2JlID1cbiYjNDM7XHRcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbXhsODYyeHhfcmVwcm9iZSwgZHdvcmsud29yayk7XG4mIzQzO1xuJiM0MztcdGlmIChkZXZpY2VfcmVwcm9iZShyZXByb2JlLVx1MDAzZWRldikpXG4mIzQzO1x0XHRkZXZfZXJyKHJlcHJvYmUtXHUwMDNlZGV2LCBcJiMzNDtyZXByb2JlIGZhaWxlZFxcblwmIzM0Oyk7XG4mIzQzO1x0cHV0X2RldmljZShyZXByb2JlLVx1MDAzZWRldik7XG4mIzQzO1x0a2ZyZWUocmVwcm9iZSk7XG4mIzQzO1x0bW9kdWxlX3B1dChUSElTX01PRFVMRSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qIE1DVWJvb3QgZmlybXdhcmUgaW1hZ2UgaGVhZGVyICovXG4mIzQzO3N0cnVjdCBteGw4NjJ4eF9md19oZHIge1xuJiM0MztcdF9fbGUzMiBpbWFnZV90eXBlO1xuJiM0MztcdF9fbGUzMiBpbWFnZV9zaXplXzE7XG4mIzQzO1x0X19sZTMyIGltYWdlX2NoZWNrc3VtXzE7XG4mIzQzO1x0X19sZTMyIGltYWdlX3NpemVfMjtcbiYjNDM7XHRfX2xlMzIgaW1hZ2VfY2hlY2tzdW1fMjtcbiYjNDM7fSBfX3BhY2tlZDtcbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgbXhsODYyeHhfZmxhc2hfZmlybXdhcmUoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsXG4mIzQzO1x0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyxcbiYjNDM7XHRcdFx0XHQgICBzdHJ1Y3QgZGV2bGluayAqZGwpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgbXhsODYyeHhfZndfaGRyICpoZHI7XG4mIzQzO1x0dTMyIHdvcmRfaWR4ID0gMCwgZGF0YV93cml0dGVuID0gMCwgaWR4ID0gMDtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIG5leHRfbm90aWZ5ID0gMDtcbiYjNDM7XHRjb25zdCB1OCAqcGF5bG9hZDtcbiYjNDM7XHR1MzIgcGF5bG9hZF9zaXplO1xuJiM0MztcdHUxNiB3b3JkLCBmZGF0YTtcbiYjNDM7XHRpbnQgcmV0LCBpO1xuJiM0MztcdHUzMiBjcmM7XG4mIzQzO1xuJiM0MztcdGlmIChmdy1cdTAwM2VzaXplIFx1MDAzYyBNWEw4NjJYWF9GV19IRFJfU0laRSlcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRoZHIgPSAoY29uc3Qgc3RydWN0IG14bDg2Mnh4X2Z3X2hkciAqKWZ3LVx1MDAzZWRhdGE7XG4mIzQzO1x0cGF5bG9hZCA9IGZ3LVx1MDAzZWRhdGEgJiM0MzsgTVhMODYyWFhfRldfSERSX1NJWkU7XG4mIzQzO1x0cGF5bG9hZF9zaXplID0gbGUzMl90b19jcHUoaGRyLVx1MDAzZWltYWdlX3NpemVfMSkgJiM0MztcbiYjNDM7XHRcdCAgICAgICBsZTMyX3RvX2NwdShoZHItXHUwMDNlaW1hZ2Vfc2l6ZV8yKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHBheWxvYWRfc2l6ZSBcdTAwM2UgZnctXHUwMDNlc2l6ZSAtIE1YTDg2MlhYX0ZXX0hEUl9TSVpFKSB7XG4mIzQzO1x0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFwmIzM0O2ZsYXNoOiBmaXJtd2FyZSBmaWxlIHRvbyBzbWFsbCBmb3IgZGVjbGFyZWQgc2l6ZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChsZTMyX3RvX2NwdShoZHItXHUwMDNlaW1hZ2Vfc2l6ZV8xKSkge1xuJiM0MztcdFx0Y3JjID0gfmNyYzMyX2xlKH4wVSwgcGF5bG9hZCxcbiYjNDM7XHRcdFx0XHRsZTMyX3RvX2NwdShoZHItXHUwMDNlaW1hZ2Vfc2l6ZV8xKSk7XG4mIzQzO1x0XHRpZiAoY3JjICE9IGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9jaGVja3N1bV8xKSkge1xuJiM0MztcdFx0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFx0XCYjMzQ7Zmxhc2g6IGltYWdlIDEgQ1JDIG1pc21hdGNoIChnb3QgJTA4eCwgZXhwZWN0ZWQgJTA4eClcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0Y3JjLCBsZTMyX3RvX2NwdShoZHItXHUwMDNlaW1hZ2VfY2hlY2tzdW1fMSkpO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChsZTMyX3RvX2NwdShoZHItXHUwMDNlaW1hZ2Vfc2l6ZV8yKSkge1xuJiM0MztcdFx0Y3JjID0gfmNyYzMyX2xlKH4wVSxcbiYjNDM7XHRcdFx0XHRwYXlsb2FkICYjNDM7IGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9zaXplXzEpLFxuJiM0MztcdFx0XHRcdGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9zaXplXzIpKTtcbiYjNDM7XHRcdGlmIChjcmMgIT0gbGUzMl90b19jcHUoaGRyLVx1MDAzZWltYWdlX2NoZWNrc3VtXzIpKSB7XG4mIzQzO1x0XHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWRldixcbiYjNDM7XHRcdFx0XHRcJiMzNDtmbGFzaDogaW1hZ2UgMiBDUkMgbWlzbWF0Y2ggKGdvdCAlMDh4LCBleHBlY3RlZCAlMDh4KVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRjcmMsIGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9jaGVja3N1bV8yKSk7XG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogU3RlcCAxOiByZWJvb3QgdGhlIGZpcm13YXJlIGludG8gTUNVYm9vdCByZXNjdWUgbW9kZSAqL1xuJiM0MztcdGlmICghcHJpdi1cdTAwM2VyZXNjdWVfbW9kZSkge1xuJiM0MztcdFx0cmV0ID0gbXhsODYyeHhfYXBpX3dyYXAocHJpdiwgU1lTX01JU0NfRldfVVBEQVRFLCBOVUxMLCAwLFxuJiM0MztcdFx0XHRcdFx0ZmFsc2UsIGZhbHNlKTtcbiYjNDM7XHRcdGlmIChyZXQpIHtcbiYjNDM7XHRcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcdFwmIzM0O2ZsYXNoOiBGV19VUERBVEUgY29tbWFuZCBmYWlsZWQ6ICVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRFUlJfUFRSKHJldCkpO1xuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogRmFpbHVyZXMgZnJvbSBoZXJlIG9uIG11c3QgZ28gdGhyb3VnaCBlbmRfbWFnaWMgc28gTUNVYm9vdFxuJiM0MztcdCAqIHJlYm9vdHMgaW5zdGVhZCBvZiB3YWl0aW5nIGZvcmV2ZXIuXG4mIzQzO1x0ICovXG4mIzQzO1xuJiM0MztcdC8qIFN0ZXAgMjogd2FpdCBmb3IgYm9vdGxvYWRlciByZWFkeSAqL1xuJiM0MztcdG14bDg2Mnh4X2ZsYXNoX25vdGlmeShkbCwgXCYjMzQ7V2FpdGluZyBmb3IgYm9vdGxvYWRlclwmIzM0OywgMCwgMCk7XG4mIzQzO1x0bXhsODYyeHhfc2JfcGRpX3Jlc2V0KHByaXYpO1xuJiM0MztcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQocHJpdiwgTVhMODYyWFhfU0JfUERJX1JFQURZLFxuJiM0MztcdFx0XHRcdFx0TVhMODYyWFhfRldfUkVBRFlfVElNRU9VVF9NUyk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcJiMzNDtmbGFzaDogYm9vdGxvYWRlciBub3QgcmVhZHk6ICVwZVxcblwmIzM0OywgRVJSX1BUUihyZXQpKTtcbiYjNDM7XHRcdGdvdG8gZW5kX21hZ2ljO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogU3RlcCAzOiBzdGFydCBoYW5kc2hha2UgKi9cbiYjNDM7XHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfU1RBVCxcbiYjNDM7XHRcdFx0ICAgICBNWEw4NjJYWF9TQl9QRElfU1RBUlQpO1xuJiM0MztcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVJUICYjNDM7IDEsXG4mIzQzO1x0XHRcdFx0XHRNWEw4NjJYWF9GV19BQ0tfVElNRU9VVF9NUyk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcJiMzNDtmbGFzaDogc3RhcnQgaGFuZHNoYWtlIGZhaWxlZDogJXBlXFxuXCYjMzQ7LCBFUlJfUFRSKHJldCkpO1xuJiM0MztcdFx0Z290byBlbmRfbWFnaWM7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQvKiBTdGVwIDQ6IHRyYW5zZmVyIGltYWdlIGhlYWRlciAqL1xuJiM0MztcdG14bDg2Mnh4X2ZsYXNoX25vdGlmeShkbCwgXCYjMzQ7RXJhc2luZyBmbGFzaFwmIzM0OywgMCwgMCk7XG4mIzQzO1x0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsXG4mIzQzO1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfV1IpO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1YTDg2MlhYX0ZXX0hEUl9TSVpFIC8gMjsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHdvcmQgPSBmdy1cdTAwM2VkYXRhW2kgKiAyXSB8XG4mIzQzO1x0XHQgICAgICAgKCh1MTYpZnctXHUwMDNlZGF0YVtpICogMiAmIzQzOyAxXSBcdTAwM2NcdTAwM2MgOCk7XG4mIzQzO1x0XHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfREFUQSwgd29yZCk7XG4mIzQzO1x0fVxuJiM0MztcdG14bDg2Mnh4X3NiX3BkaV9yZXNldChwcml2KTtcbiYjNDM7XG4mIzQzO1x0LyogdGhlIGJ5dGUgY291bnQgaW4gU1RBVCB0cmlnZ2VycyB0aGUgZXJhc2UgKi9cbiYjNDM7XHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfU1RBVCxcbiYjNDM7XHRcdFx0ICAgICBNWEw4NjJYWF9GV19IRFJfU0laRSk7XG4mIzQzO1xuJiM0MztcdC8qIEFDSyBpcyBieXRlIGNvdW50ICYjNDM7IDEgKi9cbiYjNDM7XHRyZXQgPSBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIE1YTDg2MlhYX0ZXX0hEUl9TSVpFICYjNDM7IDEsXG4mIzQzO1x0XHRcdFx0XHRNWEw4NjJYWF9GV19BQ0tfVElNRU9VVF9NUyk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcJiMzNDtmbGFzaDogaGVhZGVyIEFDSyBmYWlsZWQ6ICVwZVxcblwmIzM0OywgRVJSX1BUUihyZXQpKTtcbiYjNDM7XHRcdGdvdG8gZW5kX21hZ2ljO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogU3RlcCA1OiB3YWl0IGZvciBlcmFzZSB0byBjb21wbGV0ZSAqL1xuJiM0MztcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQocHJpdiwgMCxcbiYjNDM7XHRcdFx0XHRcdE1YTDg2MlhYX0ZXX0VSQVNFX1RJTUVPVVRfTVMpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWRldixcbiYjNDM7XHRcdFx0XCYjMzQ7Zmxhc2g6IGVyYXNlIHRpbWVvdXQ6ICVwZVxcblwmIzM0OywgRVJSX1BUUihyZXQpKTtcbiYjNDM7XHRcdGdvdG8gZW5kX21hZ2ljO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogU3RlcCA2OiB0cmFuc2ZlciBwYXlsb2FkICovXG4mIzQzO1x0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsXG4mIzQzO1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfV1IpO1xuJiM0MztcbiYjNDM7XHR3aGlsZSAoaWR4IFx1MDAzYyBwYXlsb2FkX3NpemUpIHtcbiYjNDM7XHRcdGlmIChpZHggJiM0MzsgMSBcdTAwM2MgcGF5bG9hZF9zaXplKSB7XG4mIzQzO1x0XHRcdGZkYXRhID0gcGF5bG9hZFtpZHhdIHxcbiYjNDM7XHRcdFx0XHQoKHUxNilwYXlsb2FkW2lkeCAmIzQzOyAxXSBcdTAwM2NcdTAwM2MgOCk7XG4mIzQzO1x0XHRcdGlkeCAmIzQzOz0gMjtcbiYjNDM7XHRcdFx0ZGF0YV93cml0dGVuICYjNDM7PSAyO1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0ZmRhdGEgPSBwYXlsb2FkW2lkeF07XG4mIzQzO1x0XHRcdGlkeCYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRcdGRhdGFfd3JpdHRlbiYjNDM7JiM0Mzs7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0RBVEEsIGZkYXRhKTtcbiYjNDM7XHRcdHdvcmRfaWR4JiM0MzsmIzQzOztcbiYjNDM7XG4mIzQzO1x0XHRpZiAoaWR4IFx1MDAzZT0gcGF5bG9hZF9zaXplKSB7XG4mIzQzO1x0XHRcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9mbHVzaF9zbGljZShwcml2LCBkYXRhX3dyaXR0ZW4pO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHQvKiBIYWxmLWJhbmsgYm91bmRhcnk6IHN3aXRjaCB0byBTQjEgYWRkcmVzcyAqL1xuJiM0MztcdFx0aWYgKHdvcmRfaWR4ID09IE1YTDg2MlhYX0ZXX0JBTktfSEFMRikge1xuJiM0MztcdFx0XHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfQ1RSTCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfUlNUKTtcbiYjNDM7XHRcdFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0FERFIsXG4mIzQzO1x0XHRcdFx0XHQgICAgIE1YTDg2MlhYX0ZXX1NCMV9BRERSKTtcbiYjNDM7XHRcdFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsXG4mIzQzO1x0XHRcdFx0XHQgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1dSKTtcbiYjNDM7XHRcdH0gZWxzZSBpZiAod29yZF9pZHggXHUwMDNlPSBNWEw4NjJYWF9GV19CQU5LX1NMSUNFKSB7XG4mIzQzO1x0XHRcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9mbHVzaF9zbGljZShwcml2LCBkYXRhX3dyaXR0ZW4pO1xuJiM0MztcdFx0XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcdFx0XCYjMzQ7Zmxhc2g6IHdyaXRlIHRpbWVvdXQgYXQgJXUvJXU6ICVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdGlkeCwgcGF5bG9hZF9zaXplLCBFUlJfUFRSKHJldCkpO1xuJiM0MztcdFx0XHRcdGdvdG8gZW5kX21hZ2ljO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdHdvcmRfaWR4ID0gMDtcbiYjNDM7XHRcdFx0ZGF0YV93cml0dGVuID0gMDtcbiYjNDM7XHRcdFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsXG4mIzQzO1x0XHRcdFx0XHQgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1dSKTtcbiYjNDM7XG4mIzQzO1x0XHRcdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIG5leHRfbm90aWZ5KSkge1xuJiM0MztcdFx0XHRcdG14bDg2Mnh4X2ZsYXNoX25vdGlmeShkbCwgXCYjMzQ7Rmxhc2hpbmdcJiMzNDssIGlkeCxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgcGF5bG9hZF9zaXplKTtcbiYjNDM7XHRcdFx0XHRuZXh0X25vdGlmeSA9IGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyg1MDApO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFwmIzM0O2ZsYXNoOiBmaW5hbCB3cml0ZSB0aW1lb3V0OiAlcGVcXG5cJiMzNDssIEVSUl9QVFIocmV0KSk7XG4mIzQzO1x0XHRnb3RvIGVuZF9tYWdpYztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdG14bDg2Mnh4X2ZsYXNoX25vdGlmeShkbCwgXCYjMzQ7Rmxhc2hpbmdcJiMzNDssIHBheWxvYWRfc2l6ZSwgcGF5bG9hZF9zaXplKTtcbiYjNDM7XG4mIzQzO2VuZF9tYWdpYzpcbiYjNDM7XHQvKiByZWJvb3QgTUNVYm9vdCBldmVuIGFmdGVyIGEgZmFpbGVkIHRyYW5zZmVyICovXG4mIzQzO1x0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVQsXG4mIzQzO1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0VORCk7XG4mIzQzO1x0bXNsZWVwKE1YTDg2MlhYX0ZXX1JFQk9PVF9ERUxBWV9NUyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ludCBteGw4NjJ4eF9kZXZsaW5rX2luZm9fZ2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbiYjNDM7XHRcdFx0ICAgICAgc3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJlcSxcbiYjNDM7XHRcdFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuJiM0MztcdGNvbnN0IGNoYXIgKmNvbXBhdGlibGU7XG4mIzQzO1x0Y2hhciB2ZXJfc3RyWzMyXTtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAoIW9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nX2luZGV4KGRzLVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDtjb21wYXRpYmxlXCYjMzQ7LCAwLFxuJiM0MztcdFx0XHRcdFx0ICAgXHUwMDI2Y29tcGF0aWJsZSkpIHtcbiYjNDM7XHRcdHJldCA9IGRldmxpbmtfaW5mb192ZXJzaW9uX2ZpeGVkX3B1dChyZXEsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgREVWTElOS19JTkZPX1ZFUlNJT05fR0VORVJJQ19BU0lDX0lELFxuJiM0MztcdFx0XHRcdFx0XHQgICAgIGNvbXBhdGlibGUpO1xuJiM0MztcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChwcml2LVx1MDAzZXJlc2N1ZV9tb2RlKVxuJiM0MztcdFx0cmV0dXJuIGRldmxpbmtfaW5mb192ZXJzaW9uX3J1bm5pbmdfcHV0KHJlcSwgXCYjMzQ7ZndcJiMzNDssXG4mIzQzO1x0XHRcdFx0XHRcdFx0XCYjMzQ7bWN1Ym9vdC1yZXNjdWVcJiMzNDspO1xuJiM0MztcbiYjNDM7XHRzbnByaW50Zih2ZXJfc3RyLCBzaXplb2YodmVyX3N0ciksIFwmIzM0OyV1LiV1LiV1XCYjMzQ7LFxuJiM0MztcdFx0IHByaXYtXHUwMDNlZndfdmVyc2lvbi5tYWpvciwgcHJpdi1cdTAwM2Vmd192ZXJzaW9uLm1pbm9yLFxuJiM0MztcdFx0IHByaXYtXHUwMDNlZndfdmVyc2lvbi5yZXZpc2lvbik7XG4mIzQzO1xuJiM0MztcdHJldHVybiBkZXZsaW5rX2luZm9fdmVyc2lvbl9ydW5uaW5nX3B1dChyZXEsIFwmIzM0O2Z3XCYjMzQ7LCB2ZXJfc3RyKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7aW50IG14bDg2Mnh4X2RldmxpbmtfZmxhc2hfdXBkYXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbiYjNDM7XHRcdFx0XHQgIHN0cnVjdCBkZXZsaW5rX2ZsYXNoX3VwZGF0ZV9wYXJhbXMgKnBhcmFtcyxcbiYjNDM7XHRcdFx0XHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbiYjNDM7XHRzdHJ1Y3QgbXhsODYyeHhfc3lzX2Z3X2ltYWdlX3ZlcnNpb24gdmVyID0ge307XG4mIzQzO1x0c3RydWN0IG14bDg2Mnh4X3JlcHJvYmUgKnJlcHJvYmU7XG4mIzQzO1x0c3RydWN0IGRzYV9wb3J0ICpkcDtcbiYjNDM7XHRpbnQgcmV0LCBpO1xuJiM0MztcbiYjNDM7XHRpZiAocGFyYW1zLVx1MDAzZWNvbXBvbmVudCkge1xuJiM0MztcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCYjMzQ7Y29tcG9uZW50IGlzIG5vdCBzdXBwb3J0ZWRcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlcmVzY3VlX21vZGUpXG4mIzQzO1x0XHRkZXZfaW5mbyhkcy1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdCBcJiMzNDtmbGFzaDogcmVjb3ZlcmluZyBzd2l0Y2ggZnJvbSBNQ1Vib290IHJlc2N1ZSBtb2RlXFxuXCYjMzQ7KTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRkZXZfaW5mbyhkcy1cdTAwM2VkZXYsIFwmIzM0O2ZsYXNoOiBydW5uaW5nIGZpcm13YXJlICV1LiV1LiV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgcHJpdi1cdTAwM2Vmd192ZXJzaW9uLm1ham9yLCBwcml2LVx1MDAzZWZ3X3ZlcnNpb24ubWlub3IsXG4mIzQzO1x0XHRcdCBwcml2LVx1MDAzZWZ3X3ZlcnNpb24ucmV2aXNpb24pO1xuJiM0MztcbiYjNDM7XHQvKiBDbG9zZSBwb3J0cyB3aGlsZSB0aGUgZmlybXdhcmUgaXMgc3RpbGwgYWxpdmUgc28gdGhlIERTQVxuJiM0MztcdCAqIGNvcmUmIzM5O3MgTURCL0ZEQiB0cmFja2luZyBpcyBkcmFpbmVkLCBhbmQgZGV0YWNoIHVzZXIgcG9ydHNcbiYjNDM7XHQgKiBzbyB1c2Vyc3BhY2UgY2Fubm90IHJlb3BlbiB0aGVtIGR1cmluZyB0aGUgZmxhc2guIFRoZVxuJiM0MztcdCAqIGNvbmR1aXQgYmVsb25ncyB0byB0aGUgTUFDIGRyaXZlciBhbmQgaXMgb25seSBjbG9zZWQuXG4mIzQzO1x0ICovXG4mIzQzO1x0cnRubF9sb2NrKCk7XG4mIzQzO1x0ZHNhX3N3aXRjaF9mb3JfZWFjaF91c2VyX3BvcnQoZHAsIGRzKSB7XG4mIzQzO1x0XHRpZiAoZHAtXHUwMDNldXNlcikge1xuJiM0MztcdFx0XHRkZXZfY2xvc2UoZHAtXHUwMDNldXNlcik7XG4mIzQzO1x0XHRcdG5ldGlmX2RldmljZV9kZXRhY2goZHAtXHUwMDNldXNlcik7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcdGRzYV9zd2l0Y2hfZm9yX2VhY2hfY3B1X3BvcnQoZHAsIGRzKVxuJiM0MztcdFx0ZGV2X2Nsb3NlKGRwLVx1MDAzZWNvbmR1aXQpO1xuJiM0MztcdHJ0bmxfdW5sb2NrKCk7XG4mIzQzO1xuJiM0MztcdHByaXYtXHUwMDNlYmxvY2tfaG9zdCA9IHRydWU7XG4mIzQzO1xuJiM0MztcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZwcml2LVx1MDAzZXN0YXRzX3dvcmspO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRzLVx1MDAzZW51bV9wb3J0czsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNnByaXYtXHUwMDNlcG9ydHNbaV0uaG9zdF9mbG9vZF93b3JrKTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gbXhsODYyeHhfZmxhc2hfZmlybXdhcmUocHJpdiwgcGFyYW1zLVx1MDAzZWZ3LCBkcy1cdTAwM2VkZXZsaW5rKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCYjMzQ7ZmlybXdhcmUgdHJhbnNmZXIgZmFpbGVkXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFyZXQpIHtcbiYjNDM7XHRcdC8qIGxpZnQgdGhlIGJsb2NrIHRvIHF1ZXJ5IHRoZSBuZXcgZmlybXdhcmUgdmVyc2lvbiAqL1xuJiM0MztcdFx0cHJpdi1cdTAwM2VibG9ja19ob3N0ID0gZmFsc2U7XG4mIzQzO1x0XHRwcml2LVx1MDAzZXJlc2N1ZV9tb2RlID0gZmFsc2U7XG4mIzQzO1x0XHRtZW1zZXQoXHUwMDI2dmVyLCAwLCBzaXplb2YodmVyKSk7XG4mIzQzO1x0XHRpZiAoIU1YTDg2MlhYX0FQSV9SRUFEX1FVSUVUKHByaXYsIFNZU19NSVNDX0ZXX1ZFUlNJT04sIHZlcikgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgdmVyLml2X21ham9yKVxuJiM0MztcdFx0XHRkZXZfaW5mbyhkcy1cdTAwM2VkZXYsIFwmIzM0O2ZsYXNoOiBuZXcgZmlybXdhcmUgJXUuJXUuJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0IHZlci5pdl9tYWpvciwgdmVyLml2X21pbm9yLFxuJiM0MztcdFx0XHRcdCBsZTE2X3RvX2NwdSh2ZXIuaXZfcmV2aXNpb24pKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHByaXYtXHUwMDNlc2tpcF90ZWFyZG93biA9IHRydWU7XG4mIzQzO1xuJiM0MztcdHJlcHJvYmUgPSBremFsbG9jX29iaigqcmVwcm9iZSk7XG4mIzQzO1x0aWYgKCFyZXByb2JlKVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0aWYgKCF0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSkpIHtcbiYjNDM7XHRcdGtmcmVlKHJlcHJvYmUpO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJlcHJvYmUtXHUwMDNlZGV2ID0gZ2V0X2RldmljZShkcy1cdTAwM2VkZXYpO1xuJiM0MztcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnJlcHJvYmUtXHUwMDNlZHdvcmssIG14bDg2Mnh4X3JlcHJvYmVfd29ya19mbik7XG4mIzQzO1x0c2NoZWR1bGVfZGVsYXllZF93b3JrKFx1MDAyNnJlcHJvYmUtXHUwMDNlZHdvcmssIG1zZWNzX3RvX2ppZmZpZXMoNTAwKSk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtZncuaCBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1mdy5oXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjU3YzIwMDBjZmVlNTE5XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtZncuaFxuQEAgLTAsMCAmIzQzOzEsMTggQEBcbiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIgKi9cbiYjNDM7XG4mIzQzOyNpZm5kZWYgX19NWEw4NjJYWF9GV19IXG4mIzQzOyNkZWZpbmUgX19NWEw4NjJYWF9GV19IXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NuZXQvZHNhLmhcdTAwM2VcbiYjNDM7XG4mIzQzO3N0cnVjdCBteGw4NjJ4eF9wcml2O1xuJiM0MztcbiYjNDM7Ym9vbCBteGw4NjJ4eF9yZXNjdWVfbW9kZV9kZXRlY3Qoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYpO1xuJiM0MztpbnQgbXhsODYyeHhfZGV2bGlua19pbmZvX2dldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBkZXZsaW5rX2luZm9fcmVxICpyZXEsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG4mIzQzO2ludCBteGw4NjJ4eF9kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgZGV2bGlua19mbGFzaF91cGRhdGVfcGFyYW1zICpwYXJhbXMsXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuJiM0MztcbiYjNDM7I2VuZGlmIC8qIF9fTVhMODYyWFhfRldfSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmMgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5jXG5pbmRleCA0YWNkMjE2ZjdjYzAwOS4uZDZjMGNkZmEwZTY4OTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5jXG5AQCAtMTUsNiAmIzQzOzE1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9kc2EuaFx1MDAzZVxuICNpbmNsdWRlIFwmIzM0O214bDg2Mnh4LmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7bXhsODYyeHgtY21kLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtteGw4NjJ4eC1ob3N0LmhcJiMzNDtcbiBcbiAjZGVmaW5lIENUUkxfQlVTWV9NQVNLXHRcdFx0QklUKDE1KVxuQEAgLTMzNiw2ICYjNDM7MzM3LDE1IEBAIGludCBteGw4NjJ4eF9hcGlfd3JhcChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTE2IGNtZCwgdm9pZCAqX2RhdGEsXG4gXHRpbnQgcmV0LCBjbWRfcmV0O1xuIFx0dTE2IG1heCwgY3JjLCBpO1xuIFxuJiM0MztcdGlmIChwcml2LVx1MDAzZXNraXBfdGVhcmRvd24pXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlcmVzY3VlX21vZGUpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlYmxvY2tfaG9zdCBcdTAwMjZcdTAwMjYgY21kICE9IFNZU19NSVNDX0ZXX1VQREFURSlcbiYjNDM7XHRcdHJldHVybiAtRUJVU1k7XG4mIzQzO1xuIFx0ZGV2X2RiZyhcdTAwMjZwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlZGV2LCBcJiMzNDtDTUQgJTA0eCBEQVRBICUqcGhcXG5cJiMzNDssIGNtZCwgc2l6ZSwgZGF0YSk7XG4gXG4gXHRtdXRleF9sb2NrX25lc3RlZChcdTAwMjZwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlYnVzLVx1MDAzZW1kaW9fbG9jaywgTURJT19NVVRFWF9ORVNURUQpO1xuQEAgLTQ5NSw2ICYjNDM7NTA1LDQxIEBAIGludCBteGw4NjJ4eF9yZXNldChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdilcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuJiM0MzsjZGVmaW5lIE1YTDg2MlhYX1NNRElPX0FERFJfUkVHXHRcdDB4MWZcbiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TTURJT19QQUdFX01BU0tcdDB4ZmZmMFxuJiM0MzsjZGVmaW5lIE1YTDg2MlhYX1NNRElPX09GRl9NQVNLXHRcdDB4MDAwZlxuJiM0MztcbiYjNDM7aW50IG14bDg2Mnh4X3NtZGlvX3JlYWQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUzMiBhZGRyKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG1paV9idXMgKmJ1cyA9IHByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VidXM7XG4mIzQzO1x0aW50IHBoeSA9IHByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VhZGRyO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2YnVzLVx1MDAzZW1kaW9fbG9jayk7XG4mIzQzO1x0cmV0ID0gX19tZGlvYnVzX3dyaXRlKGJ1cywgcGh5LCBNWEw4NjJYWF9TTURJT19BRERSX1JFRyxcbiYjNDM7XHRcdFx0ICAgICAgYWRkciBcdTAwMjYgTVhMODYyWFhfU01ESU9fUEFHRV9NQVNLKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzZT0gMClcbiYjNDM7XHRcdHJldCA9IF9fbWRpb2J1c19yZWFkKGJ1cywgcGh5LCBhZGRyIFx1MDAyNiBNWEw4NjJYWF9TTURJT19PRkZfTUFTSyk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmJ1cy1cdTAwM2VtZGlvX2xvY2spO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ludCBteGw4NjJ4eF9zbWRpb193cml0ZShzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTMyIGFkZHIsIHUxNiB2YWwpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWJ1cztcbiYjNDM7XHRpbnQgcGh5ID0gcHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWFkZHI7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZidXMtXHUwMDNlbWRpb19sb2NrKTtcbiYjNDM7XHRyZXQgPSBfX21kaW9idXNfd3JpdGUoYnVzLCBwaHksIE1YTDg2MlhYX1NNRElPX0FERFJfUkVHLFxuJiM0MztcdFx0XHQgICAgICBhZGRyIFx1MDAyNiBNWEw4NjJYWF9TTURJT19QQUdFX01BU0spO1xuJiM0MztcdGlmIChyZXQgXHUwMDNlPSAwKVxuJiM0MztcdFx0cmV0ID0gX19tZGlvYnVzX3dyaXRlKGJ1cywgcGh5LCBhZGRyIFx1MDAyNiBNWEw4NjJYWF9TTURJT19PRkZfTUFTSyxcbiYjNDM7XHRcdFx0XHQgICAgICB2YWwpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZidXMtXHUwMDNlbWRpb19sb2NrKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuIHZvaWQgbXhsODYyeHhfaG9zdF9pbml0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KVxuIHtcbiBcdElOSVRfV09SSyhcdTAwMjZwcml2LVx1MDAzZWNyY19lcnJfd29yaywgbXhsODYyeHhfY3JjX2Vycl93b3JrX2ZuKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5oIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWhvc3QuaFxuaW5kZXggNjZkNmFlMTk4YWZmNDUuLjRlMDU0YzZlNGMwZTQwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWhvc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWhvc3QuaFxuQEAgLTE4LDUgJiM0MzsxOCw3IEBAIGludCBteGw4NjJ4eF9hcGlfd3JhcChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTE2IGNtZCwgdm9pZCAqZGF0YSwgdTE2IHNpemUsXG4gXHRteGw4NjJ4eF9hcGlfd3JhcChkZXYsIGNtZCwgXHUwMDI2KGRhdGEpLCBzaXplb2YoKGRhdGEpKSwgdHJ1ZSwgdHJ1ZSlcbiBcbiBpbnQgbXhsODYyeHhfcmVzZXQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYpO1xuJiM0MztpbnQgbXhsODYyeHhfc21kaW9fcmVhZChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTMyIGFkZHIpO1xuJiM0MztpbnQgbXhsODYyeHhfc21kaW9fd3JpdGUoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUzMiBhZGRyLCB1MTYgdmFsKTtcbiBcbiAjZW5kaWYgLyogX19NWEw4NjJYWF9IT1NUX0ggKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuY1xuaW5kZXggYjY4OTY1MmFhOWI5MjAuLmE1YjY5NDBiNTUyZTllIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuY1xuQEAgLTQwNiw2ICYjNDM7NDA2LDggQEAgbXhsODYyeHhfcGh5bGlua19tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcbiBcdHN3aXRjaCAocG9ydCkge1xuIFx0Y2FzZSA5IC4uLiAxNjpcbiYjNDM7XHRcdGlmIChwcml2LVx1MDAzZXJlc2N1ZV9tb2RlKVxuJiM0MztcdFx0XHRyZXR1cm4gTlVMTDtcbiBcdFx0aWYgKCFNWEw4NjJYWF9GV19WRVJfTUlOKHByaXYsIDEsIDAsIDg0KSkge1xuIFx0XHRcdGRldl93YXJuX29uY2UoZHAtXHUwMDNlZHMtXHUwMDNlZGV2LFxuIFx0XHRcdFx0ICAgICAgXCYjMzQ7U2VyRGVzIFBDUyB1bnN1cHBvcnRlZCBvbiBvbGQgZmlybXdhcmUuXFxuXCYjMzQ7KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jXG5pbmRleCA0NWQyMzdiM2E0MGYxMC4uYjczODVjZmE1NDc0NTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmNcbkBAIC0yMSw2ICYjNDM7MjEsNyBAQFxuICNpbmNsdWRlIFwmIzM0O214bDg2Mnh4LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtteGw4NjJ4eC1hcGkuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O214bDg2Mnh4LWNtZC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O214bDg2Mnh4LWZ3LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtteGw4NjJ4eC1ob3N0LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtteGw4NjJ4eC1waHlsaW5rLmhcJiMzNDtcbiBcbkBAIC02MjgsOSAmIzQzOzYyOSwyMiBAQCBzdGF0aWMgaW50IG14bDg2Mnh4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRyZXQgPSBteGw4NjJ4eF93YWl0X3JlYWR5KGRzKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4mIzQzO1x0cHJpdi1cdTAwM2VyZXNjdWVfbW9kZSA9IG14bDg2Mnh4X3Jlc2N1ZV9tb2RlX2RldGVjdChwcml2KTtcbiYjNDM7XHRpZiAoIXByaXYtXHUwMDNlcmVzY3VlX21vZGUpIHtcbiYjNDM7XHRcdHJldCA9IG14bDg2Mnh4X3dhaXRfcmVhZHkoZHMpO1xuJiM0MztcdFx0aWYgKHJldCkge1xuJiM0MztcdFx0XHQvKiB0aGUgcmVzZXQgbWF5IG9ubHkgbm93IGhhdmUgdHJpZ2dlcmVkIHJlc2N1ZSBtb2RlICovXG4mIzQzO1x0XHRcdHByaXYtXHUwMDNlcmVzY3VlX21vZGUgPSBteGw4NjJ4eF9yZXNjdWVfbW9kZV9kZXRlY3QocHJpdik7XG4mIzQzO1x0XHRcdGlmICghcHJpdi1cdTAwM2VyZXNjdWVfbW9kZSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlcmVzY3VlX21vZGUpIHtcbiYjNDM7XHRcdGRldl93YXJuKGRzLVx1MDAzZWRldixcbiYjNDM7XHRcdFx0IFwmIzM0O3N3aXRjaCBzdHVjayBpbiBNQ1Vib290IHJlc2N1ZSBtb2RlLCB1c2UgZGV2bGluayB0byBmbGFzaCBuZXcgZmlybXdhcmVcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0fVxuIFxuIFx0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZXNlcmRlc19sb2NrKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUocHJpdi1cdTAwM2VzZXJkZXNfcG9ydHMpOyBpJiM0MzsmIzQzOylcbkBAIC03MTUsMTEgJiM0Mzs3MjksMjEgQEAgc3RhdGljIGludCBteGw4NjJ4eF9wb3J0X3N0YXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGJvb2wgZW5hYmxlKVxuIHN0YXRpYyBpbnQgbXhsODYyeHhfcG9ydF9lbmFibGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdFx0XHRcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuJiM0MztcdHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbiYjNDM7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlcmVzY3VlX21vZGUpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4gXHRyZXR1cm4gbXhsODYyeHhfcG9ydF9zdGF0ZShkcywgcG9ydCwgdHJ1ZSk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG14bDg2Mnh4X3BvcnRfZGlzYWJsZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxuIHtcbiYjNDM7XHRzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG4mIzQzO1xuJiM0MztcdGlmIChwcml2LVx1MDAzZXJlc2N1ZV9tb2RlKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiBcdGlmIChteGw4NjJ4eF9wb3J0X3N0YXRlKGRzLCBwb3J0LCBmYWxzZSkpXG4gXHRcdGRldl9lcnIoZHMtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gZGlzYWJsZSBwb3J0ICVkXFxuXCYjMzQ7LCBwb3J0KTtcbiB9XG5AQCAtMTMzNyw2ICYjNDM7MTM2MSwxMiBAQCBzdGF0aWMgaW50IG14bDg2Mnh4X3BvcnRfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcbiBcdGJvb2wgaXNfY3B1X3BvcnQgPSBkc2FfcG9ydF9pc19jcHUoZHApO1xuIFx0aW50IHJldDtcbiBcbiYjNDM7XHQvKiBEU0EgcmVpbml0cyBmYWlsZWQgdXNlciBwb3J0cyBhcyB1bnVzZWQ7IHNoYXJlZCBwb3J0cyBtdXN0XG4mIzQzO1x0ICogc3VjY2VlZCBmb3IgdGhlIHRyZWUgdG8gcmVnaXN0ZXIuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlcmVzY3VlX21vZGUpXG4mIzQzO1x0XHRyZXR1cm4gZHNhX3BvcnRfaXNfdXNlcihkcCkgPyAtRU5PREVWIDogMDtcbiYjNDM7XG4gXHRyZXQgPSBteGw4NjJ4eF9wb3J0X3N0YXRlKGRzLCBwb3J0LCBmYWxzZSk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuQEAgLTE2MjgsNiAmIzQzOzE2NTgsOSBAQCBzdGF0aWMgdm9pZCBteGw4NjJ4eF9wb3J0X3N0cF9zdGF0ZV9zZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbiBcdGludCByZXQ7XG4gXG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlcmVzY3VlX21vZGUpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0c3dpdGNoIChzdGF0ZSkge1xuIFx0Y2FzZSBCUl9TVEFURV9ESVNBQkxFRDpcbiBcdFx0cGFyYW0ucG9ydF9zdGF0ZSA9IGNwdV90b19sZTMyKE1YTDg2MlhYX1NUUF9QT1JUX1NUQVRFX0RJU0FCTEUpO1xuQEAgLTIwODYsNiAmIzQzOzIxMTksOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIG14bDg2Mnh4X3N3aXRjaF9vcHMgPSB7XG4gXHQuZ2V0X3BhdXNlX3N0YXRzID0gbXhsODYyeHhfZ2V0X3BhdXNlX3N0YXRzLFxuIFx0LmdldF9ybW9uX3N0YXRzID0gbXhsODYyeHhfZ2V0X3Jtb25fc3RhdHMsXG4gXHQuZ2V0X3N0YXRzNjQgPSBteGw4NjJ4eF9nZXRfc3RhdHM2NCxcbiYjNDM7XHQuZGV2bGlua19pbmZvX2dldCA9IG14bDg2Mnh4X2RldmxpbmtfaW5mb19nZXQsXG4mIzQzO1x0LmRldmxpbmtfZmxhc2hfdXBkYXRlID0gbXhsODYyeHhfZGV2bGlua19mbGFzaF91cGRhdGUsXG4gfTtcbiBcbiBzdGF0aWMgaW50IG14bDg2Mnh4X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguaCBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5oXG5pbmRleCA0MzJhNWYzZjJlMDhlNi4uNWQyMTI5NjU2MWUzYWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmhcbkBAIC0zMTksNiAmIzQzOzMxOSwxMiBAQCBzdHJ1Y3QgbXhsODYyeHhfZndfdmVyc2lvbiB7XG4gICogQGV2bGFuX2luZ3Jlc3Nfc2l6ZTogcGVyLXBvcnQgaW5ncmVzcyBFeHRlbmRlZCBWTEFOIGJsb2NrIHNpemVcbiAgKiBAZXZsYW5fZWdyZXNzX3NpemU6ICBwZXItcG9ydCBlZ3Jlc3MgRXh0ZW5kZWQgVkxBTiBibG9jayBzaXplXG4gICogQHZmX2Jsb2NrX3NpemU6ICAgICAgcGVyLXBvcnQgVkxBTiBGaWx0ZXIgYmxvY2sgc2l6ZVxuJiM0MzsgKiBAYmxvY2tfaG9zdDogICAgICAgICByZWplY3QgZmlybXdhcmUgQVBJIGNvbW1hbmRzIChleGNlcHQgRldfVVBEQVRFKVxuJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICBkdXJpbmcgYSBmaXJtd2FyZSBmbGFzaFxuJiM0MzsgKiBAc2tpcF90ZWFyZG93bjogICAgICBkaXNjYXJkIGZpcm13YXJlIEFQSSBjb21tYW5kcyBkdXJpbmcgdGhlIHRlYXJkb3duXG4mIzQzOyAqICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJlZCBieSB0aGUgcG9zdC1mbGFzaCByZXByb2JlXG4mIzQzOyAqIEByZXNjdWVfbW9kZTogICAgICAgIHN3aXRjaCBpcyBzdHVjayBpbiBNQ1Vib290OyBmaXJtd2FyZSBBUEkgY29tbWFuZHNcbiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgZmFpbCBmYXN0LCBvbmx5IGNsYXVzZS0yMiBTTURJTyB3b3Jrc1xuICAqIEBzdGF0c193b3JrOiAgICAgICAgIHBlcmlvZGljIHdvcmsgaXRlbSB0aGF0IHBvbGxzIFJNT04gaGFyZHdhcmUgY291bnRlcnNcbiAgKiAgICAgICAgICAgICAgICAgICAgICBhbmQgYWNjdW11bGF0ZXMgdGhlbSBpbnRvIDY0LWJpdCBwZXItcG9ydCBzdGF0c1xuICAqL1xuQEAgLTMzNyw2ICYjNDM7MzQzLDkgQEAgc3RydWN0IG14bDg2Mnh4X3ByaXYge1xuIFx0dTE2IGV2bGFuX2luZ3Jlc3Nfc2l6ZTtcbiBcdHUxNiBldmxhbl9lZ3Jlc3Nfc2l6ZTtcbiBcdHUxNiB2Zl9ibG9ja19zaXplO1xuJiM0MztcdGJvb2wgYmxvY2tfaG9zdDtcbiYjNDM7XHRib29sIHNraXBfdGVhcmRvd247XG4mIzQzO1x0Ym9vbCByZXNjdWVfbW9kZTtcbiBcdHN0cnVjdCBkZWxheWVkX3dvcmsgc3RhdHNfd29yaztcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2RzYS5oIGIvaW5jbHVkZS9uZXQvZHNhLmhcbmluZGV4IDhjMTZlZjIzY2MxMDJhLi5jOWUxOTM0OGRlNjE5MyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2RzYS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9kc2EuaFxuQEAgLTExNzAsNiAmIzQzOzExNzAsOSBAQCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMge1xuIFx0aW50XHQoKmRldmxpbmtfaW5mb19nZXQpKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgZGV2bGlua19pbmZvX3JlcSAqcmVxLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG4mIzQzO1x0aW50XHQoKmRldmxpbmtfZmxhc2hfdXBkYXRlKShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3QgZGV2bGlua19mbGFzaF91cGRhdGVfcGFyYW1zICpwYXJhbXMsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuIFx0aW50XHQoKmRldmxpbmtfc2JfcG9vbF9nZXQpKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbiBcdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgc2JfaW5kZXgsIHUxNiBwb29sX2luZGV4LFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCBkZXZsaW5rX3NiX3Bvb2xfaW5mbyAqcG9vbF9pbmZvKTtcbmRpZmYgLS1naXQgYS9uZXQvZHNhL2RldmxpbmsuYyBiL25ldC9kc2EvZGV2bGluay5jXG5pbmRleCBlZDM0MmYzNDU2OTJiYi4uMjUzMTFhODdjYmM1NmQgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL2RldmxpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS9kZXZsaW5rLmNcbkBAIC0yMCw2ICYjNDM7MjAsMTggQEAgc3RhdGljIGludCBkc2FfZGV2bGlua19pbmZvX2dldChzdHJ1Y3QgZGV2bGluayAqZGwsXG4gXHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IGRzYV9kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZGV2bGluayAqZGwsXG4mIzQzO1x0XHRcdFx0ICAgIHN0cnVjdCBkZXZsaW5rX2ZsYXNoX3VwZGF0ZV9wYXJhbXMgKnBhcmFtcyxcbiYjNDM7XHRcdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfdG9fZHMoZGwpO1xuJiM0MztcbiYjNDM7XHRpZiAoIWRzLVx1MDAzZW9wcy1cdTAwM2VkZXZsaW5rX2ZsYXNoX3VwZGF0ZSlcbiYjNDM7XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGRzLVx1MDAzZW9wcy1cdTAwM2VkZXZsaW5rX2ZsYXNoX3VwZGF0ZShkcywgcGFyYW1zLCBleHRhY2spO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgZHNhX2Rldmxpbmtfc2JfcG9vbF9nZXQoc3RydWN0IGRldmxpbmsgKmRsLFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgaW50IHNiX2luZGV4LCB1MTYgcG9vbF9pbmRleCxcbiBcdFx0XHRcdCAgIHN0cnVjdCBkZXZsaW5rX3NiX3Bvb2xfaW5mbyAqcG9vbF9pbmZvKVxuQEAgLTE2OSw2ICYjNDM7MTgxLDcgQEAgZHNhX2Rldmxpbmtfc2Jfb2NjX3RjX3BvcnRfYmluZF9nZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqZGxwLFxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgZHNhX2Rldmxpbmtfb3BzID0ge1xuIFx0LmluZm9fZ2V0XHRcdFx0PSBkc2FfZGV2bGlua19pbmZvX2dldCxcbiYjNDM7XHQuZmxhc2hfdXBkYXRlXHRcdFx0PSBkc2FfZGV2bGlua19mbGFzaF91cGRhdGUsXG4gXHQuc2JfcG9vbF9nZXRcdFx0XHQ9IGRzYV9kZXZsaW5rX3NiX3Bvb2xfZ2V0LFxuIFx0LnNiX3Bvb2xfc2V0XHRcdFx0PSBkc2FfZGV2bGlua19zYl9wb29sX3NldCxcbiBcdC5zYl9wb3J0X3Bvb2xfZ2V0XHRcdD0gZHNhX2Rldmxpbmtfc2JfcG9ydF9wb29sX2dldCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNDo1NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhIGRyaXZlciBmb3IgcGh5c2ljYWwgaGFyZHdhcmUgKE1heExpbmVhciBNeEw4NjJ4eCBzd2l0Y2gpIHdoaWNoIGlzIGFuIE1ESU8gZGV2aWNlLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhpcyBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYmEyZjAyZDVjMzM3ZDA4YzM2ZjFiNzIzODNkOThkYTUwODExMjg0ZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDA0OjU3OjE5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L01ha2VmaWxlIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L01ha2VmaWxlCmluZGV4IGE3YmUwZTY2NjlkZmE1Li5iY2NhYzBkMGY3MDNmNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9NYWtlZmlsZQpAQCAtMSwzICYjNDM7MSwzIEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiBvYmotJChDT05GSUdfTkVUX0RTQV9NWEw4NjIpICYjNDM7PSBteGw4NjJ4eF9kc2EubwotbXhsODYyeHhfZHNhLXkgOj0gbXhsODYyeHgubyBteGw4NjJ4eC1ob3N0Lm8gbXhsODYyeHgtcGh5bGluay5vCiYjNDM7bXhsODYyeHhfZHNhLXkgOj0gbXhsODYyeHgubyBteGw4NjJ4eC1ob3N0Lm8gbXhsODYyeHgtcGh5bGluay5vIG14bDg2Mnh4LWZ3Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1jbWQuaCBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1jbWQuaAppbmRleCBjODdhOTU1YzEzYzQ4ZS4uZTJhYTI5MzRlOWUxNjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1jbWQuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtY21kLmgKQEAgLTcwLDYgJiM0Mzs3MCw3IEBACiAjZGVmaW5lIElOVF9HUEhZX1JFQUQJCQkoR1BZX0dQWTJYWF9NQUdJQyAmIzQzOyAweDEpCiAjZGVmaW5lIElOVF9HUEhZX1dSSVRFCQkJKEdQWV9HUFkyWFhfTUFHSUMgJiM0MzsgMHgyKQogCiYjNDM7I2RlZmluZSBTWVNfTUlTQ19GV19VUERBVEUJCShTWVNfTUlTQ19NQUdJQyAmIzQzOyAweDEpCiAjZGVmaW5lIFNZU19NSVNDX0ZXX1ZFUlNJT04JCShTWVNfTUlTQ19NQUdJQyAmIzQzOyAweDIpCiAKICNkZWZpbmUgTVhMODYyWFhfWFBDU19QQ1NfQ09ORklHCShNWEw4NjJYWF9YUENTX01BR0lDICYjNDM7IDB4MSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1mdy5jIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWZ3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjg4ZDUzYmVhMzM2ZmQ1Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWZ3LmMKQEAgLTAsMCAmIzQzOzEsNDM5IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKJiM0MzsvKgomIzQzOyAqIEZpcm13YXJlIGZsYXNoIGFuZCBkZXZsaW5rIHN1cHBvcnQgZm9yIE1heExpbmVhciBNeEw4NjJ4eAomIzQzOyAqCiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDI1IERhbmllbCBHb2xsZSAmbHQ7ZGFuaWVsQG1ha3JvdG9waWEub3JnJmd0OwomIzQzOyAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9jcmMzMi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kZWxheS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L25ldGRldmljZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9vZi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9ydG5ldGxpbmsuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bmV0L2RzYS5oJmd0OwomIzQzOwomIzQzOyNpbmNsdWRlICYjMzQ7bXhsODYyeHguaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtteGw4NjJ4eC1hcGkuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtteGw4NjJ4eC1jbWQuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtteGw4NjJ4eC1mdy5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O214bDg2Mnh4LWhvc3QuaCYjMzQ7CiYjNDM7CiYjNDM7LyogU0IgUERJIHJlZ2lzdGVycyAoY2xhdXNlLTIyIFNNRElPIGFkZHJlc3Mgc3BhY2UpICovCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfQ1RSTAkJMHhlMTAwCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfQUREUgkJMHhlMTAxCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfREFUQQkJMHhlMTAyCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfU1RBVAkJMHhlMTAzCiYjNDM7CiYjNDM7LyogU0IgUERJIENUUkwgbW9kZXMgKi8KJiM0MzsjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9DVFJMX1JTVAkweDAwCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfQ1RSTF9XUgkweDAyCiYjNDM7CiYjNDM7LyogU0IgUERJIGhhbmRzaGFrZSBtYWdpYyAqLwomIzQzOyNkZWZpbmUgTVhMODYyWFhfU0JfUERJX1JFQURZCQkweGM1NWMKJiM0MzsjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9TVEFSVAkJMHhmNDhmCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfRU5ECQkweDNjYzMKJiM0MzsKJiM0MzsvKiBGaXJtd2FyZSB0cmFuc2ZlciBnZW9tZXRyeSAqLwomIzQzOyNkZWZpbmUgTVhMODYyWFhfRldfSERSX1NJWkUJCTIwCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9GV19CQU5LX0hBTEYJCTE2Mzg0CS8qIHdvcmRzIHBlciBoYWxmLWJhbmsgKi8KJiM0MzsjZGVmaW5lIE1YTDg2MlhYX0ZXX0JBTktfU0xJQ0UJCTMyNzYwCS8qIHdvcmRzIHBlciBmdWxsIHNsaWNlICovCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9GV19TQjFfQUREUgkJMHg3ODAwCS8qIFNCMSB3b3JkIGFkZHJlc3MgKi8KJiM0MzsKJiM0MzsvKiBUaW1lb3V0cyAoZ2VuZXJvdXMgdXBwZXIgYm91bmRzKSAqLwomIzQzOyNkZWZpbmUgTVhMODYyWFhfRldfUkVBRFlfVElNRU9VVF9NUwkzMDAwMAomIzQzOyNkZWZpbmUgTVhMODYyWFhfRldfQUNLX1RJTUVPVVRfTVMJNTAwMAomIzQzOyNkZWZpbmUgTVhMODYyWFhfRldfRVJBU0VfVElNRU9VVF9NUwkzMDAwMDAKJiM0MzsjZGVmaW5lIE1YTDg2MlhYX0ZXX1dSSVRFX1RJTUVPVVRfTVMJMTIwMDAwCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9GV19SRUJPT1RfREVMQVlfTVMJNTAwMAomIzQzOwomIzQzO3N0YXRpYyB2b2lkIG14bDg2Mnh4X3NiX3BkaV9yZXNldChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdikKJiM0Mzt7CiYjNDM7CW14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9DVFJMLAomIzQzOwkJCSAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfUlNUKTsKJiM0MzsJbXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0FERFIsCiYjNDM7CQkJICAgICBNWEw4NjJYWF9TQl9QRElfQ1RSTF9SU1QpOwomIzQzOwlteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfREFUQSwKJiM0MzsJCQkgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1JTVCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgbXhsODYyeHhfc2JfcGRpX3BvbGxfc3RhdChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTE2IGV4cGVjdGVkLAomIzQzOwkJCQkgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dF9tcykKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgdGltZW91dCA9IGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyh0aW1lb3V0X21zKTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJZG8gewomIzQzOwkJcmV0ID0gbXhsODYyeHhfc21kaW9fcmVhZChwcml2LCBNWEw4NjJYWF9TQl9QRElfU1RBVCk7CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwkJaWYgKCh1MTYpcmV0ID09IGV4cGVjdGVkKQomIzQzOwkJCXJldHVybiAwOwomIzQzOwkJdXNsZWVwX3JhbmdlKDEwMDAwLCAxMTAwMCk7CiYjNDM7CX0gd2hpbGUgKHRpbWVfYmVmb3JlKGppZmZpZXMsIHRpbWVvdXQpKTsKJiM0MzsKJiM0MzsJcmV0dXJuIC1FVElNRURPVVQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgbXhsODYyeHhfc2JfcGRpX2ZsdXNoX3NsaWNlKHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2LAomIzQzOwkJCQkgICAgICAgdTMyIGRhdGFfd3JpdHRlbikKJiM0Mzt7CiYjNDM7CW14bDg2Mnh4X3NiX3BkaV9yZXNldChwcml2KTsKJiM0MzsJbXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVQsIGRhdGFfd3JpdHRlbik7CiYjNDM7CiYjNDM7CXJldHVybiBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIDAsCiYjNDM7CQkJCQkgTVhMODYyWFhfRldfV1JJVEVfVElNRU9VVF9NUyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIG14bDg2Mnh4X2ZsYXNoX25vdGlmeShzdHJ1Y3QgZGV2bGluayAqZGwsIGNvbnN0IGNoYXIgKnN0YXR1cywKJiM0MzsJCQkJICB1MzIgZG9uZSwgdTMyIHRvdGFsKQomIzQzO3sKJiM0MzsJZGV2bGlua19mbGFzaF91cGRhdGVfc3RhdHVzX25vdGlmeShkbCwgc3RhdHVzLCBOVUxMLCBkb25lLCB0b3RhbCk7CiYjNDM7fQomIzQzOwomIzQzOy8qKgomIzQzOyAqIG14bDg2Mnh4X3Jlc2N1ZV9tb2RlX2RldGVjdCAtIGNoZWNrIHdoZXRoZXIgdGhlIHN3aXRjaCBzaXRzIGluIE1DVWJvb3QKJiM0MzsgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgZGF0YQomIzQzOyAqCiYjNDM7ICogTUNVYm9vdCBzaWduYWxzIHJlYWRpbmVzcyBmb3IgYSBmaXJtd2FyZSBkb3dubG9hZCB3aXRoIHRoZSBTQiBQREkKJiM0MzsgKiByZWFkeSBtYWdpYzsgb25seSB0aGUgY2xhdXNlLTIyIFNNRElPIGludGVyZmFjZSB3b3JrcyBpbiB0aGlzIHN0YXRlLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiB0cnVlIGlmIE1DVWJvb3QgaXMgd2FpdGluZyBmb3IgYSBmaXJtd2FyZSBkb3dubG9hZC4KJiM0MzsgKi8KJiM0Mztib29sIG14bDg2Mnh4X3Jlc2N1ZV9tb2RlX2RldGVjdChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdikKJiM0Mzt7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IG14bDg2Mnh4X3NtZGlvX3JlYWQocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVQpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0ID09IE1YTDg2MlhYX1NCX1BESV9SRUFEWTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyogZGV2aWNlX3JlcHJvYmUoKSAtJmd0OyByZW1vdmUoKSBmcmVlcyBwcml2IHdoaWxlIHRoZSB3b3JrIHJ1bnMsIHNvCiYjNDM7ICogdGhlIHdvcmsgc3RydWN0IGNhbm5vdCBsaXZlIGluIG14bDg2Mnh4X3ByaXYuCiYjNDM7ICovCiYjNDM7c3RydWN0IG14bDg2Mnh4X3JlcHJvYmUgewomIzQzOwlzdHJ1Y3QgZGV2aWNlICpkZXY7CiYjNDM7CXN0cnVjdCBkZWxheWVkX3dvcmsgZHdvcms7CiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBteGw4NjJ4eF9yZXByb2JlX3dvcmtfZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQomIzQzO3sKJiM0MzsJc3RydWN0IG14bDg2Mnh4X3JlcHJvYmUgKnJlcHJvYmUgPQomIzQzOwkJY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBteGw4NjJ4eF9yZXByb2JlLCBkd29yay53b3JrKTsKJiM0MzsKJiM0MzsJaWYgKGRldmljZV9yZXByb2JlKHJlcHJvYmUtJmd0O2RldikpCiYjNDM7CQlkZXZfZXJyKHJlcHJvYmUtJmd0O2RldiwgJiMzNDtyZXByb2JlIGZhaWxlZFxuJiMzNDspOwomIzQzOwlwdXRfZGV2aWNlKHJlcHJvYmUtJmd0O2Rldik7CiYjNDM7CWtmcmVlKHJlcHJvYmUpOwomIzQzOwltb2R1bGVfcHV0KFRISVNfTU9EVUxFKTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyogTUNVYm9vdCBmaXJtd2FyZSBpbWFnZSBoZWFkZXIgKi8KJiM0MztzdHJ1Y3QgbXhsODYyeHhfZndfaGRyIHsKJiM0MzsJX19sZTMyIGltYWdlX3R5cGU7CiYjNDM7CV9fbGUzMiBpbWFnZV9zaXplXzE7CiYjNDM7CV9fbGUzMiBpbWFnZV9jaGVja3N1bV8xOwomIzQzOwlfX2xlMzIgaW1hZ2Vfc2l6ZV8yOwomIzQzOwlfX2xlMzIgaW1hZ2VfY2hlY2tzdW1fMjsKJiM0Mzt9IF9fcGFja2VkOwomIzQzOwomIzQzO3N0YXRpYyBpbnQgbXhsODYyeHhfZmxhc2hfZmlybXdhcmUoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsCiYjNDM7CQkJCSAgIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncsCiYjNDM7CQkJCSAgIHN0cnVjdCBkZXZsaW5rICpkbCkKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBteGw4NjJ4eF9md19oZHIgKmhkcjsKJiM0MzsJdTMyIHdvcmRfaWR4ID0gMCwgZGF0YV93cml0dGVuID0gMCwgaWR4ID0gMDsKJiM0MzsJdW5zaWduZWQgbG9uZyBuZXh0X25vdGlmeSA9IDA7CiYjNDM7CWNvbnN0IHU4ICpwYXlsb2FkOwomIzQzOwl1MzIgcGF5bG9hZF9zaXplOwomIzQzOwl1MTYgd29yZCwgZmRhdGE7CiYjNDM7CWludCByZXQsIGk7CiYjNDM7CXUzMiBjcmM7CiYjNDM7CiYjNDM7CWlmIChmdy0mZ3Q7c2l6ZSAmbHQ7IE1YTDg2MlhYX0ZXX0hEUl9TSVpFKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CWhkciA9IChjb25zdCBzdHJ1Y3QgbXhsODYyeHhfZndfaGRyICopZnctJmd0O2RhdGE7CiYjNDM7CXBheWxvYWQgPSBmdy0mZ3Q7ZGF0YSAmIzQzOyBNWEw4NjJYWF9GV19IRFJfU0laRTsKJiM0MzsJcGF5bG9hZF9zaXplID0gbGUzMl90b19jcHUoaGRyLSZndDtpbWFnZV9zaXplXzEpICYjNDM7CiYjNDM7CQkgICAgICAgbGUzMl90b19jcHUoaGRyLSZndDtpbWFnZV9zaXplXzIpOwomIzQzOwomIzQzOwlpZiAocGF5bG9hZF9zaXplICZndDsgZnctJmd0O3NpemUgLSBNWEw4NjJYWF9GV19IRFJfU0laRSkgewomIzQzOwkJZGV2X2VycigmYW1wO3ByaXYtJmd0O21kaW9kZXYtJmd0O2RldiwKJiM0MzsJCQkmIzM0O2ZsYXNoOiBmaXJtd2FyZSBmaWxlIHRvbyBzbWFsbCBmb3IgZGVjbGFyZWQgc2l6ZVxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKGxlMzJfdG9fY3B1KGhkci0mZ3Q7aW1hZ2Vfc2l6ZV8xKSkgewomIzQzOwkJY3JjID0gfmNyYzMyX2xlKH4wVSwgcGF5bG9hZCwKJiM0MzsJCQkJbGUzMl90b19jcHUoaGRyLSZndDtpbWFnZV9zaXplXzEpKTsKJiM0MzsJCWlmIChjcmMgIT0gbGUzMl90b19jcHUoaGRyLSZndDtpbWFnZV9jaGVja3N1bV8xKSkgewomIzQzOwkJCWRldl9lcnIoJmFtcDtwcml2LSZndDttZGlvZGV2LSZndDtkZXYsCiYjNDM7CQkJCSYjMzQ7Zmxhc2g6IGltYWdlIDEgQ1JDIG1pc21hdGNoIChnb3QgJTA4eCwgZXhwZWN0ZWQgJTA4eClcbiYjMzQ7LAomIzQzOwkJCQljcmMsIGxlMzJfdG9fY3B1KGhkci0mZ3Q7aW1hZ2VfY2hlY2tzdW1fMSkpOwomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChsZTMyX3RvX2NwdShoZHItJmd0O2ltYWdlX3NpemVfMikpIHsKJiM0MzsJCWNyYyA9IH5jcmMzMl9sZSh+MFUsCiYjNDM7CQkJCXBheWxvYWQgJiM0MzsgbGUzMl90b19jcHUoaGRyLSZndDtpbWFnZV9zaXplXzEpLAomIzQzOwkJCQlsZTMyX3RvX2NwdShoZHItJmd0O2ltYWdlX3NpemVfMikpOwomIzQzOwkJaWYgKGNyYyAhPSBsZTMyX3RvX2NwdShoZHItJmd0O2ltYWdlX2NoZWNrc3VtXzIpKSB7CiYjNDM7CQkJZGV2X2VycigmYW1wO3ByaXYtJmd0O21kaW9kZXYtJmd0O2RldiwKJiM0MzsJCQkJJiMzNDtmbGFzaDogaW1hZ2UgMiBDUkMgbWlzbWF0Y2ggKGdvdCAlMDh4LCBleHBlY3RlZCAlMDh4KVxuJiMzNDssCiYjNDM7CQkJCWNyYywgbGUzMl90b19jcHUoaGRyLSZndDtpbWFnZV9jaGVja3N1bV8yKSk7CiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogU3RlcCAxOiByZWJvb3QgdGhlIGZpcm13YXJlIGludG8gTUNVYm9vdCByZXNjdWUgbW9kZSAqLwomIzQzOwlpZiAoIXByaXYtJmd0O3Jlc2N1ZV9tb2RlKSB7CiYjNDM7CQlyZXQgPSBteGw4NjJ4eF9hcGlfd3JhcChwcml2LCBTWVNfTUlTQ19GV19VUERBVEUsIE5VTEwsIDAsCiYjNDM7CQkJCQlmYWxzZSwgZmFsc2UpOwomIzQzOwkJaWYgKHJldCkgewomIzQzOwkJCWRldl9lcnIoJmFtcDtwcml2LSZndDttZGlvZGV2LSZndDtkZXYsCiYjNDM7CQkJCSYjMzQ7Zmxhc2g6IEZXX1VQREFURSBjb21tYW5kIGZhaWxlZDogJXBlXG4mIzM0OywKJiM0MzsJCQkJRVJSX1BUUihyZXQpKTsKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIEZhaWx1cmVzIGZyb20gaGVyZSBvbiBtdXN0IGdvIHRocm91Z2ggZW5kX21hZ2ljIHNvIE1DVWJvb3QKJiM0MzsJICogcmVib290cyBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yZXZlci4KJiM0MzsJICovCiYjNDM7CiYjNDM7CS8qIFN0ZXAgMjogd2FpdCBmb3IgYm9vdGxvYWRlciByZWFkeSAqLwomIzQzOwlteGw4NjJ4eF9mbGFzaF9ub3RpZnkoZGwsICYjMzQ7V2FpdGluZyBmb3IgYm9vdGxvYWRlciYjMzQ7LCAwLCAwKTsKJiM0MzsJbXhsODYyeHhfc2JfcGRpX3Jlc2V0KHByaXYpOwomIzQzOwlyZXQgPSBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIE1YTDg2MlhYX1NCX1BESV9SRUFEWSwKJiM0MzsJCQkJCU1YTDg2MlhYX0ZXX1JFQURZX1RJTUVPVVRfTVMpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKCZhbXA7cHJpdi0mZ3Q7bWRpb2Rldi0mZ3Q7ZGV2LAomIzQzOwkJCSYjMzQ7Zmxhc2g6IGJvb3Rsb2FkZXIgbm90IHJlYWR5OiAlcGVcbiYjMzQ7LCBFUlJfUFRSKHJldCkpOwomIzQzOwkJZ290byBlbmRfbWFnaWM7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogU3RlcCAzOiBzdGFydCBoYW5kc2hha2UgKi8KJiM0MzsJbXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVQsCiYjNDM7CQkJICAgICBNWEw4NjJYWF9TQl9QRElfU1RBUlQpOwomIzQzOwlyZXQgPSBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIE1YTDg2MlhYX1NCX1BESV9TVEFSVCAmIzQzOyAxLAomIzQzOwkJCQkJTVhMODYyWFhfRldfQUNLX1RJTUVPVVRfTVMpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKCZhbXA7cHJpdi0mZ3Q7bWRpb2Rldi0mZ3Q7ZGV2LAomIzQzOwkJCSYjMzQ7Zmxhc2g6IHN0YXJ0IGhhbmRzaGFrZSBmYWlsZWQ6ICVwZVxuJiMzNDssIEVSUl9QVFIocmV0KSk7CiYjNDM7CQlnb3RvIGVuZF9tYWdpYzsKJiM0MzsJfQomIzQzOwomIzQzOwkvKiBTdGVwIDQ6IHRyYW5zZmVyIGltYWdlIGhlYWRlciAqLwomIzQzOwlteGw4NjJ4eF9mbGFzaF9ub3RpZnkoZGwsICYjMzQ7RXJhc2luZyBmbGFzaCYjMzQ7LCAwLCAwKTsKJiM0MzsJbXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsCiYjNDM7CQkJICAgICBNWEw4NjJYWF9TQl9QRElfQ1RSTF9XUik7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBNWEw4NjJYWF9GV19IRFJfU0laRSAvIDI7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQl3b3JkID0gZnctJmd0O2RhdGFbaSAqIDJdIHwKJiM0MzsJCSAgICAgICAoKHUxNilmdy0mZ3Q7ZGF0YVtpICogMiAmIzQzOyAxXSAmbHQ7Jmx0OyA4KTsKJiM0MzsJCW14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9EQVRBLCB3b3JkKTsKJiM0MzsJfQomIzQzOwlteGw4NjJ4eF9zYl9wZGlfcmVzZXQocHJpdik7CiYjNDM7CiYjNDM7CS8qIHRoZSBieXRlIGNvdW50IGluIFNUQVQgdHJpZ2dlcnMgdGhlIGVyYXNlICovCiYjNDM7CW14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9TVEFULAomIzQzOwkJCSAgICAgTVhMODYyWFhfRldfSERSX1NJWkUpOwomIzQzOwomIzQzOwkvKiBBQ0sgaXMgYnl0ZSBjb3VudCAmIzQzOyAxICovCiYjNDM7CXJldCA9IG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQocHJpdiwgTVhMODYyWFhfRldfSERSX1NJWkUgJiM0MzsgMSwKJiM0MzsJCQkJCU1YTDg2MlhYX0ZXX0FDS19USU1FT1VUX01TKTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2VycigmYW1wO3ByaXYtJmd0O21kaW9kZXYtJmd0O2RldiwKJiM0MzsJCQkmIzM0O2ZsYXNoOiBoZWFkZXIgQUNLIGZhaWxlZDogJXBlXG4mIzM0OywgRVJSX1BUUihyZXQpKTsKJiM0MzsJCWdvdG8gZW5kX21hZ2ljOwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIFN0ZXAgNTogd2FpdCBmb3IgZXJhc2UgdG8gY29tcGxldGUgKi8KJiM0MzsJcmV0ID0gbXhsODYyeHhfc2JfcGRpX3BvbGxfc3RhdChwcml2LCAwLAomIzQzOwkJCQkJTVhMODYyWFhfRldfRVJBU0VfVElNRU9VVF9NUyk7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCWRldl9lcnIoJmFtcDtwcml2LSZndDttZGlvZGV2LSZndDtkZXYsCiYjNDM7CQkJJiMzNDtmbGFzaDogZXJhc2UgdGltZW91dDogJXBlXG4mIzM0OywgRVJSX1BUUihyZXQpKTsKJiM0MzsJCWdvdG8gZW5kX21hZ2ljOwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIFN0ZXAgNjogdHJhbnNmZXIgcGF5bG9hZCAqLwomIzQzOwlteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfQ1RSTCwKJiM0MzsJCQkgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1dSKTsKJiM0MzsKJiM0MzsJd2hpbGUgKGlkeCAmbHQ7IHBheWxvYWRfc2l6ZSkgewomIzQzOwkJaWYgKGlkeCAmIzQzOyAxICZsdDsgcGF5bG9hZF9zaXplKSB7CiYjNDM7CQkJZmRhdGEgPSBwYXlsb2FkW2lkeF0gfAomIzQzOwkJCQkoKHUxNilwYXlsb2FkW2lkeCAmIzQzOyAxXSAmbHQ7Jmx0OyA4KTsKJiM0MzsJCQlpZHggJiM0Mzs9IDI7CiYjNDM7CQkJZGF0YV93cml0dGVuICYjNDM7PSAyOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlmZGF0YSA9IHBheWxvYWRbaWR4XTsKJiM0MzsJCQlpZHgmIzQzOyYjNDM7OwomIzQzOwkJCWRhdGFfd3JpdHRlbiYjNDM7JiM0Mzs7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfREFUQSwgZmRhdGEpOwomIzQzOwkJd29yZF9pZHgmIzQzOyYjNDM7OwomIzQzOwomIzQzOwkJaWYgKGlkeCAmZ3Q7PSBwYXlsb2FkX3NpemUpIHsKJiM0MzsJCQlyZXQgPSBteGw4NjJ4eF9zYl9wZGlfZmx1c2hfc2xpY2UocHJpdiwgZGF0YV93cml0dGVuKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCS8qIEhhbGYtYmFuayBib3VuZGFyeTogc3dpdGNoIHRvIFNCMSBhZGRyZXNzICovCiYjNDM7CQlpZiAod29yZF9pZHggPT0gTVhMODYyWFhfRldfQkFOS19IQUxGKSB7CiYjNDM7CQkJbXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsCiYjNDM7CQkJCQkgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1JTVCk7CiYjNDM7CQkJbXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0FERFIsCiYjNDM7CQkJCQkgICAgIE1YTDg2MlhYX0ZXX1NCMV9BRERSKTsKJiM0MzsJCQlteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfQ1RSTCwKJiM0MzsJCQkJCSAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfV1IpOwomIzQzOwkJfSBlbHNlIGlmICh3b3JkX2lkeCAmZ3Q7PSBNWEw4NjJYWF9GV19CQU5LX1NMSUNFKSB7CiYjNDM7CQkJcmV0ID0gbXhsODYyeHhfc2JfcGRpX2ZsdXNoX3NsaWNlKHByaXYsIGRhdGFfd3JpdHRlbik7CiYjNDM7CQkJaWYgKHJldCkgewomIzQzOwkJCQlkZXZfZXJyKCZhbXA7cHJpdi0mZ3Q7bWRpb2Rldi0mZ3Q7ZGV2LAomIzQzOwkJCQkJJiMzNDtmbGFzaDogd3JpdGUgdGltZW91dCBhdCAldS8ldTogJXBlXG4mIzM0OywKJiM0MzsJCQkJCWlkeCwgcGF5bG9hZF9zaXplLCBFUlJfUFRSKHJldCkpOwomIzQzOwkJCQlnb3RvIGVuZF9tYWdpYzsKJiM0MzsJCQl9CiYjNDM7CQkJd29yZF9pZHggPSAwOwomIzQzOwkJCWRhdGFfd3JpdHRlbiA9IDA7CiYjNDM7CQkJbXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsCiYjNDM7CQkJCQkgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1dSKTsKJiM0MzsKJiM0MzsJCQlpZiAodGltZV9hZnRlcihqaWZmaWVzLCBuZXh0X25vdGlmeSkpIHsKJiM0MzsJCQkJbXhsODYyeHhfZmxhc2hfbm90aWZ5KGRsLCAmIzM0O0ZsYXNoaW5nJiMzNDssIGlkeCwKJiM0MzsJCQkJCQkgICAgICBwYXlsb2FkX3NpemUpOwomIzQzOwkJCQluZXh0X25vdGlmeSA9IGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyg1MDApOwomIzQzOwkJCX0KJiM0MzsJCX0KJiM0MzsJfQomIzQzOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKCZhbXA7cHJpdi0mZ3Q7bWRpb2Rldi0mZ3Q7ZGV2LAomIzQzOwkJCSYjMzQ7Zmxhc2g6IGZpbmFsIHdyaXRlIHRpbWVvdXQ6ICVwZVxuJiMzNDssIEVSUl9QVFIocmV0KSk7CiYjNDM7CQlnb3RvIGVuZF9tYWdpYzsKJiM0MzsJfQomIzQzOwomIzQzOwlteGw4NjJ4eF9mbGFzaF9ub3RpZnkoZGwsICYjMzQ7Rmxhc2hpbmcmIzM0OywgcGF5bG9hZF9zaXplLCBwYXlsb2FkX3NpemUpOwomIzQzOwomIzQzO2VuZF9tYWdpYzoKJiM0MzsJLyogcmVib290IE1DVWJvb3QgZXZlbiBhZnRlciBhIGZhaWxlZCB0cmFuc2ZlciAqLwomIzQzOwlteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfU1RBVCwKJiM0MzsJCQkgICAgIE1YTDg2MlhYX1NCX1BESV9FTkQpOwomIzQzOwltc2xlZXAoTVhMODYyWFhfRldfUkVCT09UX0RFTEFZX01TKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IG14bDg2Mnh4X2RldmxpbmtfaW5mb19nZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLAomIzQzOwkJCSAgICAgIHN0cnVjdCBkZXZsaW5rX2luZm9fcmVxICpyZXEsCiYjNDM7CQkJICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQomIzQzO3sKJiM0MzsJc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy0mZ3Q7cHJpdjsKJiM0MzsJY29uc3QgY2hhciAqY29tcGF0aWJsZTsKJiM0MzsJY2hhciB2ZXJfc3RyWzMyXTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZ19pbmRleChkcy0mZ3Q7ZGV2LSZndDtvZl9ub2RlLCAmIzM0O2NvbXBhdGlibGUmIzM0OywgMCwKJiM0MzsJCQkJCSAgICZhbXA7Y29tcGF0aWJsZSkpIHsKJiM0MzsJCXJldCA9IGRldmxpbmtfaW5mb192ZXJzaW9uX2ZpeGVkX3B1dChyZXEsCiYjNDM7CQkJCQkJICAgICBERVZMSU5LX0lORk9fVkVSU0lPTl9HRU5FUklDX0FTSUNfSUQsCiYjNDM7CQkJCQkJICAgICBjb21wYXRpYmxlKTsKJiM0MzsJCWlmIChyZXQpCiYjNDM7CQkJcmV0dXJuIHJldDsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAocHJpdi0mZ3Q7cmVzY3VlX21vZGUpCiYjNDM7CQlyZXR1cm4gZGV2bGlua19pbmZvX3ZlcnNpb25fcnVubmluZ19wdXQocmVxLCAmIzM0O2Z3JiMzNDssCiYjNDM7CQkJCQkJCSYjMzQ7bWN1Ym9vdC1yZXNjdWUmIzM0Oyk7CiYjNDM7CiYjNDM7CXNucHJpbnRmKHZlcl9zdHIsIHNpemVvZih2ZXJfc3RyKSwgJiMzNDsldS4ldS4ldSYjMzQ7LAomIzQzOwkJIHByaXYtJmd0O2Z3X3ZlcnNpb24ubWFqb3IsIHByaXYtJmd0O2Z3X3ZlcnNpb24ubWlub3IsCiYjNDM7CQkgcHJpdi0mZ3Q7ZndfdmVyc2lvbi5yZXZpc2lvbik7CiYjNDM7CiYjNDM7CXJldHVybiBkZXZsaW5rX2luZm9fdmVyc2lvbl9ydW5uaW5nX3B1dChyZXEsICYjMzQ7ZncmIzM0OywgdmVyX3N0cik7CiYjNDM7fQomIzQzOwomIzQzO2ludCBteGw4NjJ4eF9kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsCiYjNDM7CQkJCSAgc3RydWN0IGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLAomIzQzOwkJCQkgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2ID0gZHMtJmd0O3ByaXY7CiYjNDM7CXN0cnVjdCBteGw4NjJ4eF9zeXNfZndfaW1hZ2VfdmVyc2lvbiB2ZXIgPSB7fTsKJiM0MzsJc3RydWN0IG14bDg2Mnh4X3JlcHJvYmUgKnJlcHJvYmU7CiYjNDM7CXN0cnVjdCBkc2FfcG9ydCAqZHA7CiYjNDM7CWludCByZXQsIGk7CiYjNDM7CiYjNDM7CWlmIChwYXJhbXMtJmd0O2NvbXBvbmVudCkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtjb21wb25lbnQgaXMgbm90IHN1cHBvcnRlZCYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAocHJpdi0mZ3Q7cmVzY3VlX21vZGUpCiYjNDM7CQlkZXZfaW5mbyhkcy0mZ3Q7ZGV2LAomIzQzOwkJCSAmIzM0O2ZsYXNoOiByZWNvdmVyaW5nIHN3aXRjaCBmcm9tIE1DVWJvb3QgcmVzY3VlIG1vZGVcbiYjMzQ7KTsKJiM0MzsJZWxzZQomIzQzOwkJZGV2X2luZm8oZHMtJmd0O2RldiwgJiMzNDtmbGFzaDogcnVubmluZyBmaXJtd2FyZSAldS4ldS4ldVxuJiMzNDssCiYjNDM7CQkJIHByaXYtJmd0O2Z3X3ZlcnNpb24ubWFqb3IsIHByaXYtJmd0O2Z3X3ZlcnNpb24ubWlub3IsCiYjNDM7CQkJIHByaXYtJmd0O2Z3X3ZlcnNpb24ucmV2aXNpb24pOwomIzQzOwomIzQzOwkvKiBDbG9zZSBwb3J0cyB3aGlsZSB0aGUgZmlybXdhcmUgaXMgc3RpbGwgYWxpdmUgc28gdGhlIERTQQomIzQzOwkgKiBjb3JlJiMzOTtzIE1EQi9GREIgdHJhY2tpbmcgaXMgZHJhaW5lZCwgYW5kIGRldGFjaCB1c2VyIHBvcnRzCiYjNDM7CSAqIHNvIHVzZXJzcGFjZSBjYW5ub3QgcmVvcGVuIHRoZW0gZHVyaW5nIHRoZSBmbGFzaC4gVGhlCiYjNDM7CSAqIGNvbmR1aXQgYmVsb25ncyB0byB0aGUgTUFDIGRyaXZlciBhbmQgaXMgb25seSBjbG9zZWQuCiYjNDM7CSAqLwomIzQzOwlydG5sX2xvY2soKTsKJiM0MzsJZHNhX3N3aXRjaF9mb3JfZWFjaF91c2VyX3BvcnQoZHAsIGRzKSB7CiYjNDM7CQlpZiAoZHAtJmd0O3VzZXIpIHsKJiM0MzsJCQlkZXZfY2xvc2UoZHAtJmd0O3VzZXIpOwomIzQzOwkJCW5ldGlmX2RldmljZV9kZXRhY2goZHAtJmd0O3VzZXIpOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CWRzYV9zd2l0Y2hfZm9yX2VhY2hfY3B1X3BvcnQoZHAsIGRzKQomIzQzOwkJZGV2X2Nsb3NlKGRwLSZndDtjb25kdWl0KTsKJiM0MzsJcnRubF91bmxvY2soKTsKJiM0MzsKJiM0MzsJcHJpdi0mZ3Q7YmxvY2tfaG9zdCA9IHRydWU7CiYjNDM7CiYjNDM7CWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO3ByaXYtJmd0O3N0YXRzX3dvcmspOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgZHMtJmd0O251bV9wb3J0czsgaSYjNDM7JiM0MzspCiYjNDM7CQljYW5jZWxfd29ya19zeW5jKCZhbXA7cHJpdi0mZ3Q7cG9ydHNbaV0uaG9zdF9mbG9vZF93b3JrKTsKJiM0MzsKJiM0MzsJcmV0ID0gbXhsODYyeHhfZmxhc2hfZmlybXdhcmUocHJpdiwgcGFyYW1zLSZndDtmdywgZHMtJmd0O2RldmxpbmspOwomIzQzOwlpZiAocmV0KQomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtmaXJtd2FyZSB0cmFuc2ZlciBmYWlsZWQmIzM0Oyk7CiYjNDM7CiYjNDM7CWlmICghcmV0KSB7CiYjNDM7CQkvKiBsaWZ0IHRoZSBibG9jayB0byBxdWVyeSB0aGUgbmV3IGZpcm13YXJlIHZlcnNpb24gKi8KJiM0MzsJCXByaXYtJmd0O2Jsb2NrX2hvc3QgPSBmYWxzZTsKJiM0MzsJCXByaXYtJmd0O3Jlc2N1ZV9tb2RlID0gZmFsc2U7CiYjNDM7CQltZW1zZXQoJmFtcDt2ZXIsIDAsIHNpemVvZih2ZXIpKTsKJiM0MzsJCWlmICghTVhMODYyWFhfQVBJX1JFQURfUVVJRVQocHJpdiwgU1lTX01JU0NfRldfVkVSU0lPTiwgdmVyKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgdmVyLml2X21ham9yKQomIzQzOwkJCWRldl9pbmZvKGRzLSZndDtkZXYsICYjMzQ7Zmxhc2g6IG5ldyBmaXJtd2FyZSAldS4ldS4ldVxuJiMzNDssCiYjNDM7CQkJCSB2ZXIuaXZfbWFqb3IsIHZlci5pdl9taW5vciwKJiM0MzsJCQkJIGxlMTZfdG9fY3B1KHZlci5pdl9yZXZpc2lvbikpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXByaXYtJmd0O3NraXBfdGVhcmRvd24gPSB0cnVlOwomIzQzOwomIzQzOwlyZXByb2JlID0ga3phbGxvY19vYmooKnJlcHJvYmUpOwomIzQzOwlpZiAoIXJlcHJvYmUpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlpZiAoIXRyeV9tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKSkgewomIzQzOwkJa2ZyZWUocmVwcm9iZSk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJlcHJvYmUtJmd0O2RldiA9IGdldF9kZXZpY2UoZHMtJmd0O2Rldik7CiYjNDM7CUlOSVRfREVMQVlFRF9XT1JLKCZhbXA7cmVwcm9iZS0mZ3Q7ZHdvcmssIG14bDg2Mnh4X3JlcHJvYmVfd29ya19mbik7CiYjNDM7CXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmYW1wO3JlcHJvYmUtJmd0O2R3b3JrLCBtc2Vjc190b19qaWZmaWVzKDUwMCkpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1mdy5oIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWZ3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjU3YzIwMDBjZmVlNTE5Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWZ3LmgKQEAgLTAsMCAmIzQzOzEsMTggQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqLwomIzQzOwomIzQzOyNpZm5kZWYgX19NWEw4NjJYWF9GV19ICiYjNDM7I2RlZmluZSBfX01YTDg2MlhYX0ZXX0gKJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7bmV0L2RzYS5oJmd0OwomIzQzOwomIzQzO3N0cnVjdCBteGw4NjJ4eF9wcml2OwomIzQzOwomIzQzO2Jvb2wgbXhsODYyeHhfcmVzY3VlX21vZGVfZGV0ZWN0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KTsKJiM0MztpbnQgbXhsODYyeHhfZGV2bGlua19pbmZvX2dldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsCiYjNDM7CQkJICAgICAgc3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJlcSwKJiM0MzsJCQkgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spOwomIzQzO2ludCBteGw4NjJ4eF9kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsCiYjNDM7CQkJCSAgc3RydWN0IGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLAomIzQzOwkJCQkgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7CiYjNDM7CiYjNDM7I2VuZGlmIC8qIF9fTVhMODYyWFhfRldfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWhvc3QuYyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmMKaW5kZXggNGFjZDIxNmY3Y2MwMDkuLmQ2YzBjZGZhMGU2ODkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmMKQEAgLTE1LDYgJiM0MzsxNSw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvdW5hbGlnbmVkLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L2RzYS5oJmd0OwogI2luY2x1ZGUgJiMzNDtteGw4NjJ4eC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O214bDg2Mnh4LWNtZC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7bXhsODYyeHgtaG9zdC5oJiMzNDsKIAogI2RlZmluZSBDVFJMX0JVU1lfTUFTSwkJCUJJVCgxNSkKQEAgLTMzNiw2ICYjNDM7MzM3LDE1IEBAIGludCBteGw4NjJ4eF9hcGlfd3JhcChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTE2IGNtZCwgdm9pZCAqX2RhdGEsCiAJaW50IHJldCwgY21kX3JldDsKIAl1MTYgbWF4LCBjcmMsIGk7CiAKJiM0MzsJaWYgKHByaXYtJmd0O3NraXBfdGVhcmRvd24pCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJaWYgKHByaXYtJmd0O3Jlc2N1ZV9tb2RlKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiYjNDM7CWlmIChwcml2LSZndDtibG9ja19ob3N0ICZhbXA7JmFtcDsgY21kICE9IFNZU19NSVNDX0ZXX1VQREFURSkKJiM0MzsJCXJldHVybiAtRUJVU1k7CiYjNDM7CiAJZGV2X2RiZygmYW1wO3ByaXYtJmd0O21kaW9kZXYtJmd0O2RldiwgJiMzNDtDTUQgJTA0eCBEQVRBICUqcGhcbiYjMzQ7LCBjbWQsIHNpemUsIGRhdGEpOwogCiAJbXV0ZXhfbG9ja19uZXN0ZWQoJmFtcDtwcml2LSZndDttZGlvZGV2LSZndDtidXMtJmd0O21kaW9fbG9jaywgTURJT19NVVRFWF9ORVNURUQpOwpAQCAtNDk1LDYgJiM0Mzs1MDUsNDEgQEAgaW50IG14bDg2Mnh4X3Jlc2V0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KQogCXJldHVybiByZXQ7CiB9CiAKJiM0MzsjZGVmaW5lIE1YTDg2MlhYX1NNRElPX0FERFJfUkVHCQkweDFmCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TTURJT19QQUdFX01BU0sJMHhmZmYwCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TTURJT19PRkZfTUFTSwkJMHgwMDBmCiYjNDM7CiYjNDM7aW50IG14bDg2Mnh4X3NtZGlvX3JlYWQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUzMiBhZGRyKQomIzQzO3sKJiM0MzsJc3RydWN0IG1paV9idXMgKmJ1cyA9IHByaXYtJmd0O21kaW9kZXYtJmd0O2J1czsKJiM0MzsJaW50IHBoeSA9IHByaXYtJmd0O21kaW9kZXYtJmd0O2FkZHI7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtidXMtJmd0O21kaW9fbG9jayk7CiYjNDM7CXJldCA9IF9fbWRpb2J1c193cml0ZShidXMsIHBoeSwgTVhMODYyWFhfU01ESU9fQUREUl9SRUcsCiYjNDM7CQkJICAgICAgYWRkciAmYW1wOyBNWEw4NjJYWF9TTURJT19QQUdFX01BU0spOwomIzQzOwlpZiAocmV0ICZndDs9IDApCiYjNDM7CQlyZXQgPSBfX21kaW9idXNfcmVhZChidXMsIHBoeSwgYWRkciAmYW1wOyBNWEw4NjJYWF9TTURJT19PRkZfTUFTSyk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2J1cy0mZ3Q7bWRpb19sb2NrKTsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IG14bDg2Mnh4X3NtZGlvX3dyaXRlKHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2LCB1MzIgYWRkciwgdTE2IHZhbCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LSZndDttZGlvZGV2LSZndDtidXM7CiYjNDM7CWludCBwaHkgPSBwcml2LSZndDttZGlvZGV2LSZndDthZGRyOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7YnVzLSZndDttZGlvX2xvY2spOwomIzQzOwlyZXQgPSBfX21kaW9idXNfd3JpdGUoYnVzLCBwaHksIE1YTDg2MlhYX1NNRElPX0FERFJfUkVHLAomIzQzOwkJCSAgICAgIGFkZHIgJmFtcDsgTVhMODYyWFhfU01ESU9fUEFHRV9NQVNLKTsKJiM0MzsJaWYgKHJldCAmZ3Q7PSAwKQomIzQzOwkJcmV0ID0gX19tZGlvYnVzX3dyaXRlKGJ1cywgcGh5LCBhZGRyICZhbXA7IE1YTDg2MlhYX1NNRElPX09GRl9NQVNLLAomIzQzOwkJCQkgICAgICB2YWwpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtidXMtJmd0O21kaW9fbG9jayk7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwogdm9pZCBteGw4NjJ4eF9ob3N0X2luaXQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYpCiB7CiAJSU5JVF9XT1JLKCZhbXA7cHJpdi0mZ3Q7Y3JjX2Vycl93b3JrLCBteGw4NjJ4eF9jcmNfZXJyX3dvcmtfZm4pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWhvc3QuaCBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmgKaW5kZXggNjZkNmFlMTk4YWZmNDUuLjRlMDU0YzZlNGMwZTQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmgKQEAgLTE4LDUgJiM0MzsxOCw3IEBAIGludCBteGw4NjJ4eF9hcGlfd3JhcChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTE2IGNtZCwgdm9pZCAqZGF0YSwgdTE2IHNpemUsCiAJbXhsODYyeHhfYXBpX3dyYXAoZGV2LCBjbWQsICZhbXA7KGRhdGEpLCBzaXplb2YoKGRhdGEpKSwgdHJ1ZSwgdHJ1ZSkKIAogaW50IG14bDg2Mnh4X3Jlc2V0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KTsKJiM0MztpbnQgbXhsODYyeHhfc21kaW9fcmVhZChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTMyIGFkZHIpOwomIzQzO2ludCBteGw4NjJ4eF9zbWRpb193cml0ZShzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTMyIGFkZHIsIHUxNiB2YWwpOwogCiAjZW5kaWYgLyogX19NWEw4NjJYWF9IT1NUX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jCmluZGV4IGI2ODk2NTJhYTliOTIwLi5hNWI2OTQwYjU1MmU5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jCkBAIC00MDYsNiAmIzQzOzQwNiw4IEBAIG14bDg2Mnh4X3BoeWxpbmtfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsCiAKIAlzd2l0Y2ggKHBvcnQpIHsKIAljYXNlIDkgLi4uIDE2OgomIzQzOwkJaWYgKHByaXYtJmd0O3Jlc2N1ZV9tb2RlKQomIzQzOwkJCXJldHVybiBOVUxMOwogCQlpZiAoIU1YTDg2MlhYX0ZXX1ZFUl9NSU4ocHJpdiwgMSwgMCwgODQpKSB7CiAJCQlkZXZfd2Fybl9vbmNlKGRwLSZndDtkcy0mZ3Q7ZGV2LAogCQkJCSAgICAgICYjMzQ7U2VyRGVzIFBDUyB1bnN1cHBvcnRlZCBvbiBvbGQgZmlybXdhcmUuXG4mIzM0Oyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jCmluZGV4IDQ1ZDIzN2IzYTQwZjEwLi5iNzM4NWNmYTU0NzQ1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMKQEAgLTIxLDYgJiM0MzsyMSw3IEBACiAjaW5jbHVkZSAmIzM0O214bDg2Mnh4LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtteGw4NjJ4eC1hcGkuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O214bDg2Mnh4LWNtZC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O214bDg2Mnh4LWZ3LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtteGw4NjJ4eC1ob3N0LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtteGw4NjJ4eC1waHlsaW5rLmgmIzM0OwogCkBAIC02MjgsOSAmIzQzOzYyOSwyMiBAQCBzdGF0aWMgaW50IG14bDg2Mnh4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gbXhsODYyeHhfd2FpdF9yZWFkeShkcyk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKJiM0MzsJcHJpdi0mZ3Q7cmVzY3VlX21vZGUgPSBteGw4NjJ4eF9yZXNjdWVfbW9kZV9kZXRlY3QocHJpdik7CiYjNDM7CWlmICghcHJpdi0mZ3Q7cmVzY3VlX21vZGUpIHsKJiM0MzsJCXJldCA9IG14bDg2Mnh4X3dhaXRfcmVhZHkoZHMpOwomIzQzOwkJaWYgKHJldCkgewomIzQzOwkJCS8qIHRoZSByZXNldCBtYXkgb25seSBub3cgaGF2ZSB0cmlnZ2VyZWQgcmVzY3VlIG1vZGUgKi8KJiM0MzsJCQlwcml2LSZndDtyZXNjdWVfbW9kZSA9IG14bDg2Mnh4X3Jlc2N1ZV9tb2RlX2RldGVjdChwcml2KTsKJiM0MzsJCQlpZiAoIXByaXYtJmd0O3Jlc2N1ZV9tb2RlKQomIzQzOwkJCQlyZXR1cm4gcmV0OwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChwcml2LSZndDtyZXNjdWVfbW9kZSkgewomIzQzOwkJZGV2X3dhcm4oZHMtJmd0O2RldiwKJiM0MzsJCQkgJiMzNDtzd2l0Y2ggc3R1Y2sgaW4gTUNVYm9vdCByZXNjdWUgbW9kZSwgdXNlIGRldmxpbmsgdG8gZmxhc2ggbmV3IGZpcm13YXJlXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfQogCiAJbXV0ZXhfaW5pdCgmYW1wO3ByaXYtJmd0O3NlcmRlc19sb2NrKTsKIAlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShwcml2LSZndDtzZXJkZXNfcG9ydHMpOyBpJiM0MzsmIzQzOykKQEAgLTcxNSwxMSAmIzQzOzcyOSwyMSBAQCBzdGF0aWMgaW50IG14bDg2Mnh4X3BvcnRfc3RhdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgYm9vbCBlbmFibGUpCiBzdGF0aWMgaW50IG14bDg2Mnh4X3BvcnRfZW5hYmxlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCiAJCQkJc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHsKJiM0MzsJc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy0mZ3Q7cHJpdjsKJiM0MzsKJiM0MzsJaWYgKHByaXYtJmd0O3Jlc2N1ZV9tb2RlKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiAJcmV0dXJuIG14bDg2Mnh4X3BvcnRfc3RhdGUoZHMsIHBvcnQsIHRydWUpOwogfQogCiBzdGF0aWMgdm9pZCBteGw4NjJ4eF9wb3J0X2Rpc2FibGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCkKIHsKJiM0MzsJc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy0mZ3Q7cHJpdjsKJiM0MzsKJiM0MzsJaWYgKHByaXYtJmd0O3Jlc2N1ZV9tb2RlKQomIzQzOwkJcmV0dXJuOwomIzQzOwogCWlmIChteGw4NjJ4eF9wb3J0X3N0YXRlKGRzLCBwb3J0LCBmYWxzZSkpCiAJCWRldl9lcnIoZHMtJmd0O2RldiwgJiMzNDtmYWlsZWQgdG8gZGlzYWJsZSBwb3J0ICVkXG4mIzM0OywgcG9ydCk7CiB9CkBAIC0xMzM3LDYgJiM0MzsxMzYxLDEyIEBAIHN0YXRpYyBpbnQgbXhsODYyeHhfcG9ydF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KQogCWJvb2wgaXNfY3B1X3BvcnQgPSBkc2FfcG9ydF9pc19jcHUoZHApOwogCWludCByZXQ7CiAKJiM0MzsJLyogRFNBIHJlaW5pdHMgZmFpbGVkIHVzZXIgcG9ydHMgYXMgdW51c2VkOyBzaGFyZWQgcG9ydHMgbXVzdAomIzQzOwkgKiBzdWNjZWVkIGZvciB0aGUgdHJlZSB0byByZWdpc3Rlci4KJiM0MzsJICovCiYjNDM7CWlmIChwcml2LSZndDtyZXNjdWVfbW9kZSkKJiM0MzsJCXJldHVybiBkc2FfcG9ydF9pc191c2VyKGRwKSA/IC1FTk9ERVYgOiAwOwomIzQzOwogCXJldCA9IG14bDg2Mnh4X3BvcnRfc3RhdGUoZHMsIHBvcnQsIGZhbHNlKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpAQCAtMTYyOCw2ICYjNDM7MTY1OCw5IEBAIHN0YXRpYyB2b2lkIG14bDg2Mnh4X3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogCXN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2ID0gZHMtJmd0O3ByaXY7CiAJaW50IHJldDsKIAomIzQzOwlpZiAocHJpdi0mZ3Q7cmVzY3VlX21vZGUpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJc3dpdGNoIChzdGF0ZSkgewogCWNhc2UgQlJfU1RBVEVfRElTQUJMRUQ6CiAJCXBhcmFtLnBvcnRfc3RhdGUgPSBjcHVfdG9fbGUzMihNWEw4NjJYWF9TVFBfUE9SVF9TVEFURV9ESVNBQkxFKTsKQEAgLTIwODYsNiAmIzQzOzIxMTksOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIG14bDg2Mnh4X3N3aXRjaF9vcHMgPSB7CiAJLmdldF9wYXVzZV9zdGF0cyA9IG14bDg2Mnh4X2dldF9wYXVzZV9zdGF0cywKIAkuZ2V0X3Jtb25fc3RhdHMgPSBteGw4NjJ4eF9nZXRfcm1vbl9zdGF0cywKIAkuZ2V0X3N0YXRzNjQgPSBteGw4NjJ4eF9nZXRfc3RhdHM2NCwKJiM0MzsJLmRldmxpbmtfaW5mb19nZXQgPSBteGw4NjJ4eF9kZXZsaW5rX2luZm9fZ2V0LAomIzQzOwkuZGV2bGlua19mbGFzaF91cGRhdGUgPSBteGw4NjJ4eF9kZXZsaW5rX2ZsYXNoX3VwZGF0ZSwKIH07CiAKIHN0YXRpYyBpbnQgbXhsODYyeHhfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmggYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguaAppbmRleCA0MzJhNWYzZjJlMDhlNi4uNWQyMTI5NjU2MWUzYWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5oCkBAIC0zMTksNiAmIzQzOzMxOSwxMiBAQCBzdHJ1Y3QgbXhsODYyeHhfZndfdmVyc2lvbiB7CiAgKiBAZXZsYW5faW5ncmVzc19zaXplOiBwZXItcG9ydCBpbmdyZXNzIEV4dGVuZGVkIFZMQU4gYmxvY2sgc2l6ZQogICogQGV2bGFuX2VncmVzc19zaXplOiAgcGVyLXBvcnQgZWdyZXNzIEV4dGVuZGVkIFZMQU4gYmxvY2sgc2l6ZQogICogQHZmX2Jsb2NrX3NpemU6ICAgICAgcGVyLXBvcnQgVkxBTiBGaWx0ZXIgYmxvY2sgc2l6ZQomIzQzOyAqIEBibG9ja19ob3N0OiAgICAgICAgIHJlamVjdCBmaXJtd2FyZSBBUEkgY29tbWFuZHMgKGV4Y2VwdCBGV19VUERBVEUpCiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIGEgZmlybXdhcmUgZmxhc2gKJiM0MzsgKiBAc2tpcF90ZWFyZG93bjogICAgICBkaXNjYXJkIGZpcm13YXJlIEFQSSBjb21tYW5kcyBkdXJpbmcgdGhlIHRlYXJkb3duCiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkIGJ5IHRoZSBwb3N0LWZsYXNoIHJlcHJvYmUKJiM0MzsgKiBAcmVzY3VlX21vZGU6ICAgICAgICBzd2l0Y2ggaXMgc3R1Y2sgaW4gTUNVYm9vdDsgZmlybXdhcmUgQVBJIGNvbW1hbmRzCiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgZmFpbCBmYXN0LCBvbmx5IGNsYXVzZS0yMiBTTURJTyB3b3JrcwogICogQHN0YXRzX3dvcms6ICAgICAgICAgcGVyaW9kaWMgd29yayBpdGVtIHRoYXQgcG9sbHMgUk1PTiBoYXJkd2FyZSBjb3VudGVycwogICogICAgICAgICAgICAgICAgICAgICAgYW5kIGFjY3VtdWxhdGVzIHRoZW0gaW50byA2NC1iaXQgcGVyLXBvcnQgc3RhdHMKICAqLwpAQCAtMzM3LDYgJiM0MzszNDMsOSBAQCBzdHJ1Y3QgbXhsODYyeHhfcHJpdiB7CiAJdTE2IGV2bGFuX2luZ3Jlc3Nfc2l6ZTsKIAl1MTYgZXZsYW5fZWdyZXNzX3NpemU7CiAJdTE2IHZmX2Jsb2NrX3NpemU7CiYjNDM7CWJvb2wgYmxvY2tfaG9zdDsKJiM0MzsJYm9vbCBza2lwX3RlYXJkb3duOwomIzQzOwlib29sIHJlc2N1ZV9tb2RlOwogCXN0cnVjdCBkZWxheWVkX3dvcmsgc3RhdHNfd29yazsKIH07CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2RzYS5oIGIvaW5jbHVkZS9uZXQvZHNhLmgKaW5kZXggOGMxNmVmMjNjYzEwMmEuLmM5ZTE5MzQ4ZGU2MTkzIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9kc2EuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9kc2EuaApAQCAtMTE3MCw2ICYjNDM7MTE3MCw5IEBAIHN0cnVjdCBkc2Ffc3dpdGNoX29wcyB7CiAJaW50CSgqZGV2bGlua19pbmZvX2dldCkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLAogCQkJCSAgICBzdHJ1Y3QgZGV2bGlua19pbmZvX3JlcSAqcmVxLAogCQkJCSAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spOwomIzQzOwlpbnQJKCpkZXZsaW5rX2ZsYXNoX3VwZGF0ZSkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLAomIzQzOwkJCQkJc3RydWN0IGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLAomIzQzOwkJCQkJc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTsKIAlpbnQJKCpkZXZsaW5rX3NiX3Bvb2xfZ2V0KShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsCiAJCQkJICAgICAgIHVuc2lnbmVkIGludCBzYl9pbmRleCwgdTE2IHBvb2xfaW5kZXgsCiAJCQkJICAgICAgIHN0cnVjdCBkZXZsaW5rX3NiX3Bvb2xfaW5mbyAqcG9vbF9pbmZvKTsKZGlmZiAtLWdpdCBhL25ldC9kc2EvZGV2bGluay5jIGIvbmV0L2RzYS9kZXZsaW5rLmMKaW5kZXggZWQzNDJmMzQ1NjkyYmIuLjI1MzExYTg3Y2JjNTZkIDEwMDY0NAotLS0gYS9uZXQvZHNhL2RldmxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL2RldmxpbmsuYwpAQCAtMjAsNiAmIzQzOzIwLDE4IEBAIHN0YXRpYyBpbnQgZHNhX2RldmxpbmtfaW5mb19nZXQoc3RydWN0IGRldmxpbmsgKmRsLAogCXJldHVybiAtRU9QTk9UU1VQUDsKIH0KIAomIzQzO3N0YXRpYyBpbnQgZHNhX2RldmxpbmtfZmxhc2hfdXBkYXRlKHN0cnVjdCBkZXZsaW5rICpkbCwKJiM0MzsJCQkJICAgIHN0cnVjdCBkZXZsaW5rX2ZsYXNoX3VwZGF0ZV9wYXJhbXMgKnBhcmFtcywKJiM0MzsJCQkJICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRzYV9kZXZsaW5rX3RvX2RzKGRsKTsKJiM0MzsKJiM0MzsJaWYgKCFkcy0mZ3Q7b3BzLSZndDtkZXZsaW5rX2ZsYXNoX3VwZGF0ZSkKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsKJiM0MzsJcmV0dXJuIGRzLSZndDtvcHMtJmd0O2RldmxpbmtfZmxhc2hfdXBkYXRlKGRzLCBwYXJhbXMsIGV4dGFjayk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBkc2FfZGV2bGlua19zYl9wb29sX2dldChzdHJ1Y3QgZGV2bGluayAqZGwsCiAJCQkJICAgdW5zaWduZWQgaW50IHNiX2luZGV4LCB1MTYgcG9vbF9pbmRleCwKIAkJCQkgICBzdHJ1Y3QgZGV2bGlua19zYl9wb29sX2luZm8gKnBvb2xfaW5mbykKQEAgLTE2OSw2ICYjNDM7MTgxLDcgQEAgZHNhX2Rldmxpbmtfc2Jfb2NjX3RjX3BvcnRfYmluZF9nZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqZGxwLAogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRldmxpbmtfb3BzIGRzYV9kZXZsaW5rX29wcyA9IHsKIAkuaW5mb19nZXQJCQk9IGRzYV9kZXZsaW5rX2luZm9fZ2V0LAomIzQzOwkuZmxhc2hfdXBkYXRlCQkJPSBkc2FfZGV2bGlua19mbGFzaF91cGRhdGUsCiAJLnNiX3Bvb2xfZ2V0CQkJPSBkc2FfZGV2bGlua19zYl9wb29sX2dldCwKIAkuc2JfcG9vbF9zZXQJCQk9IGRzYV9kZXZsaW5rX3NiX3Bvb2xfc2V0LAogCS5zYl9wb3J0X3Bvb2xfZ2V0CQk9IGRzYV9kZXZsaW5rX3NiX3BvcnRfcG9vbF9nZXQsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNzAwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTXhMODYyeHggUGF0Y2ggZm9yIFZpcnR1YWxpemF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTt2ZSBnb3QgYSBuZXcgcGF0Y2ggaW5jb3Jwb3JhdGluZyBmaXJtd2FyZSBmbGFzaGluZyBhbmQgZGV2bGluayBzdXBwb3J0IGZvciB0aGUgTWF4TGluZWFyIE14TDg2Mnh4IHN3aXRjaC4gVGhlIGNoYW5nZXMgYXJlIGZvY3VzZWQgaW4gYGRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9gIGFuZCBgbmV0L2RzYS9kZXZsaW5rLmNgLiBUaGlzIGlzIGludHJpZ3VpbmcgYmVjYXVzZSBpdCBlbmFibGVzIGZpcm13YXJlIGZsYXNoaW5nIHRocm91Z2ggZGV2bGluayDigJMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgaW1wcm92ZW1lbnQuCgpNeSBwcmltYXJ5IGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIGBkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvYCwgd2hpY2ggaW1tZWRpYXRlbHkgc3VnZ2VzdHMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhIERTQSBzd2l0Y2ggZHJpdmVyIGZvciB0aGUgTXhMODYyeHguIFRoZSB2ZXJ5IG5hdHVyZSBvZiBEU0Egc3dpdGNoZXMgbWFrZXMgZW11bGF0aW9uIGhpZ2hseSBpbXByb2JhYmxlLiBUaGV5JiMzOTtyZSB0eXBpY2FsbHkgZGVlcGx5IHRpZWQgdG8gdGhlIGhhcmR3YXJlLgoKVGhlcmVmb3JlLCB0aGUgcXVlc3Rpb24gYmVjb21lczogaG93IGNhbiB3ZSB0ZXN0IHRoaXMgaW4gYSB2aXJ0dWFsIHNldHRpbmc/IFdlJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgbWVudGlvbiBvZiBzb2Z0d2FyZSBlbXVsYXRpb24gYW55d2hlcmUsIHRob3VnaCBJIGhpZ2hseSBkb3VidCBpdC4gRFNBIHN3aXRjaGVzIGFyZSBhbG1vc3QgYWx3YXlzIGEgcHVyZWx5IGhhcmR3YXJlIGNvbmNlcm4uIFRvIGJlIGNlcnRhaW4sIEkmIzM5O2xsIHJ1biBhIGtlcm5lbCBzZWFyY2ggZm9yIGBteGw4NjJ4eGAgdG8gY29uZmlybSBhbmQgZXhwYW5kIG91ciBrbm93bGVkZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDQ6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXhsODYyeHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyMzI0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9NWEw4NjIpICYjNDM7PSBteGw4NjJ4eF9kc2Eub1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L01ha2VmaWxlOjM6bXhsODYyeHhfZHNhLXkgOj0gbXhsODYyeHgubyBteGw4NjJ4eC1ob3N0Lm8gbXhsODYyeHgtcGh5bGluay5vIG14bDg2Mnh4LWZ3Lm9cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg9MTY9c3RydWN0IG1kaW9fcmVsYXlfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIzLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjI0OiAqIHN0cnVjdCBteGw4NjJ4eF9yZWdpc3Rlcl9tb2QgLSBSZWdpc3RlciBhY2Nlc3MgcGFyYW1ldGVyIHRvIGRpcmVjdGx5XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjUtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmeSBpbnRlcm5hbCByZWdpc3RlcnNcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzEtICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzI6c3RydWN0IG14bDg2Mnh4X3JlZ2lzdGVyX21vZCB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzMtXHRfX2xlMTYgYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzgtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6Mzk6ICogZW51bSBteGw4NjJ4eF9tYWNfdGFibGVfZmlsdGVyIC0gU291cmNlL0Rlc3RpbmF0aW9uIE1BQyBhZGRyZXNzIGZpbHRlcmluZ1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTQwLSAqXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTQ1LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjQ2OmVudW0gbXhsODYyeHhfbWFjX3RhYmxlX2ZpbHRlciB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNDctXHRNWEw4NjJYWF9NQUNfRklMVEVSX05PTkUgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC02NC0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo2NTogKiBzdHJ1Y3QgbXhsODYyeHhfbWFjX3RhYmxlX2FkZCAtIE1BQyBUYWJsZSBFbnRyeSB0byBiZSBhZGRlZFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTY2LSAqIEBmaWQ6IEZpbHRlcmluZyBJZGVudGlmaWVyIChGSUQpIChub3Qgc3VwcG9ydGVkIGJ5IGFsbCBzd2l0Y2hlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzQtICogQG1hYzogTUFDIEFkZHJlc3MgdG8gYWRkIHRvIHRoZSB0YWJsZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjc1OiAqIEBmaWx0ZXJfZmxhZzogU2VlIFx1MDAyNmVudW0gbXhsODYyeHhfbWFjX3RhYmxlX2ZpbHRlclxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc2LSAqIEBpZ21wX2NvbnRyb2xsZWQ6IFBhY2tldCBpcyBtYXJrZWQgYXMgSUdNUCBjb250cm9sbGVkIGlmIGRlc3RpbmF0aW9uIE1BQ1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04My0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4NDpzdHJ1Y3QgbXhsODYyeHhfbWFjX3RhYmxlX2FkZCB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODUtXHRfX2xlMTYgZmlkO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDAtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTAxOiAqIHN0cnVjdCBteGw4NjJ4eF9tYWNfdGFibGVfcmVtb3ZlIC0gTUFDIFRhYmxlIEVudHJ5IHRvIGJlIHJlbW92ZWRcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDItICogQGZpZDogRmlsdGVyaW5nIElkZW50aWZpZXIgKEZJRClcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDMtICogQG1hYzogTUFDIEFkZHJlc3MgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSB0YWJsZS5cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDQ6ICogQGZpbHRlcl9mbGFnOiBTZWUgXHUwMDI2ZW51bSBteGw4NjJ4eF9tYWNfdGFibGVfZmlsdGVyXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA1LSAqIEB0Y2k6IFRDSSBmb3IgQi1TdGVwXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwOS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTA6c3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9yZW1vdmUge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMS1cdF9fbGUxNiBmaWQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExNy0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTg6ICogc3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9yZWFkIC0gTUFDIFRhYmxlIEVudHJ5IHRvIGJlIHJlYWRcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMTktICogQGluaXRpYWw6IFJlc3RhcnQgdGhlIGdldCBvcGVyYXRpb24gZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0YWJsZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMjgtICogQG1hYzogTUFDIEFkZHJlc3MuIEZpbGxlZCBvdXQgYnkgdGhlIHN3aXRjaCBBUEkgaW1wbGVtZW50YXRpb24uXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTI5OiAqIEBmaWx0ZXJfZmxhZzogU2VlIFx1MDAyNmVudW0gbXhsODYyeHhfbWFjX3RhYmxlX2ZpbHRlclxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEzMC0gKiBAaWdtcF9jb250cm9sbGVkOiBQYWNrZXQgaXMgbWFya2VkIGFzIElHTVAgY29udHJvbGxlZCBpZiBkZXN0aW5hdGlvbiBNQUNcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQxLSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjE0MjpzdHJ1Y3QgbXhsODYyeHhfbWFjX3RhYmxlX3JlYWQge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE0My1cdHU4IGluaXRpYWw7XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE2Mi0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxNjM6ICogc3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9xdWVyeSAtIE1BQyBUYWJsZSBFbnRyeSBrZXktYmFzZWQgbG9va3VwXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTY0LSAqIEBtYWM6IE1BQyBBZGRyZXNzIHRvIHNlYXJjaCBmb3IgKGlucHV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xNzItICogQHN0YXRpY19lbnRyeTogSW5kaWNhdGVzIGlmIHRoaXMgaXMgYSBTdGF0aWMgRW50cnlcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxNzM6ICogQGZpbHRlcl9mbGFnOiBTZWUgXHUwMDI2ZW51bSBteGw4NjJ4eF9tYWNfdGFibGVfZmlsdGVyIChpbnB1dCYjNDM7b3V0cHV0KVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE3NC0gKiBAaWdtcF9jb250cm9sbGVkOiBJR01QIGNvbnRyb2xsZWQgZmxhZ1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xODAtICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTgxOnN0cnVjdCBteGw4NjJ4eF9tYWNfdGFibGVfcXVlcnkge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE4Mi1cdHU4IG1hY1tFVEhfQUxFTl07XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIwMC0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyMDE6ICogZW51bSBteGw4NjJ4eF9tYWNfY2xlYXJfdHlwZSAtIE1BQyB0YWJsZSBjbGVhciB0eXBlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjAyLSAqIEBNWEw4NjJYWF9NQUNfQ0xFQVJfUEhZX1BPUlQ6IGNsZWFyIGR5bmFtaWMgZW50cmllcyBiYXNlZCBvbiBwb3J0X2lkXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIwNC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyMDU6ZW51bSBteGw4NjJ4eF9tYWNfY2xlYXJfdHlwZSB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjA2LVx0TVhMODYyWFhfTUFDX0NMRUFSX1BIWV9QT1JUID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjEwLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjIxMTogKiBzdHJ1Y3QgbXhsODYyeHhfbWFjX3RhYmxlX2NsZWFyIC0gTUFDIHRhYmxlIGNsZWFyXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MjEyOiAqIEB0eXBlOiBzZWUgXHUwMDI2ZW51bSBteGw4NjJ4eF9tYWNfY2xlYXJfdHlwZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIxMy0gKiBAcG9ydF9pZDogcGh5c2ljYWwgcG9ydCBpZFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIxNC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyMTU6c3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9jbGVhciB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjE2LVx0dTggdHlwZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjIwLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjIyMTogKiBlbnVtIG14bDg2Mnh4X2FnZV90aW1lciAtIEFnaW5nIFRpbWVyIFZhbHVlLlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIyMi0gKiBATVhMODYyWFhfQUdFVElNRVJfMV9TRUM6IDEgc2Vjb25kIGFnaW5nIHRpbWVcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjI4LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjIyOTplbnVtIG14bDg2Mnh4X2FnZV90aW1lciB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjMwLVx0TVhMODYyWFhfQUdFVElNRVJfMV9TRUMgPSAxLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yMzgtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MjM5OiAqIHN0cnVjdCBteGw4NjJ4eF9icmlkZ2VfYWxsb2MgLSBCcmlkZ2UgQWxsb2NhdGlvblxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI0MC0gKiBAYnJpZGdlX2lkOiBJZiB0aGUgYnJpZGdlIGFsbG9jYXRpb24gaXMgc3VjY2Vzc2Z1bCwgYSB2YWxpZCBJRCB3aWxsIGJlXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI0Ny0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyNDg6c3RydWN0IG14bDg2Mnh4X2JyaWRnZV9hbGxvYyB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjQ5LVx0X19sZTE2IGJyaWRnZV9pZDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjUyLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjI1MzogKiBlbnVtIG14bDg2Mnh4X2JyaWRnZV9jb25maWdfbWFzayAtIEJyaWRnZSBjb25maWd1cmF0aW9uIG1hc2tcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yNTQtICogQE1YTDg2MlhYX0JSSURHRV9DT05GSUdfTUFTS19NQUNfTEVBUk5JTkdfTElNSVQ6XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI2Ny0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyNjg6ZW51bSBteGw4NjJ4eF9icmlkZ2VfY29uZmlnX21hc2sge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI2OS1cdE1YTDg2MlhYX0JSSURHRV9DT05GSUdfTUFTS19NQUNfTEVBUk5JTkdfTElNSVQgPSBCSVQoMCksXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI3OC0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyNzk6ICogZW51bSBteGw4NjJ4eF9icmlkZ2VfcG9ydF9lZ3Jlc3NfbWV0ZXIgLSBNZXRlcnMgZm9yIGVncmVzcyB0cmFmZmljIHR5cGVcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yODAtICogQE1YTDg2MlhYX0JSSURHRV9QT1JUX0VHUkVTU19NRVRFUl9CUk9BRENBU1Q6XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI5My0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyOTQ6ZW51bSBteGw4NjJ4eF9icmlkZ2VfcG9ydF9lZ3Jlc3NfbWV0ZXIge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI5NS1cdE1YTDg2MlhYX0JSSURHRV9QT1JUX0VHUkVTU19NRVRFUl9CUk9BRENBU1QgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zMDQtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzA1OiAqIHN0cnVjdCBteGw4NjJ4eF9xb3NfbWV0ZXJfY2ZnIC0gUmF0ZSBtZXRlciBjb25maWd1cmF0aW9uXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzA2LSAqIEBlbmFibGU6IEVuYWJsZS9kaXNhYmxlIG1ldGVyXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTMyMC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozMjE6c3RydWN0IG14bDg2Mnh4X3Fvc19tZXRlcl9jZmcge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTMyMi1cdHU4IGVuYWJsZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzM4LS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjMzOTogKiBlbnVtIG14bDg2Mnh4X2JyaWRnZV9mb3J3YXJkX21vZGUgLSBCcmlkZ2UgZm9yd2FyZGluZyB0eXBlIG9mIHBhY2tldFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM0MC0gKiBATVhMODYyWFhfQlJJREdFX0ZPUldBUkRfRkxPT0Q6IFBhY2tldCBpcyBmbG9vZGVkIHRvIHBvcnQgbWVtYmVycyBvZlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNDMtICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzQ0OmVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZSB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzQ1LVx0TVhMODYyWFhfQlJJREdFX0ZPUldBUkRfRkxPT0QgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNDktLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzUwOiAqIHN0cnVjdCBteGw4NjJ4eF9icmlkZ2VfY29uZmlnIC0gQnJpZGdlIENvbmZpZ3VyYXRpb25cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNTEtICogQGJyaWRnZV9pZDogQnJpZGdlIElEIChGSUQpXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzUyOiAqIEBtYXNrOiBTZWUgXHUwMDI2ZW51bSBteGw4NjJ4eF9icmlkZ2VfY29uZmlnX21hc2tcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNTMtICogQG1hY19sZWFybmluZ19saW1pdF9lbmFibGU6IEVuYWJsZSBNQUMgbGVhcm5pbmcgbGltaXRhdGlvblxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNjMtICogQGZvcndhcmRfYnJvYWRjYXN0OiBGb3J3YXJkaW5nIG1vZGUgb2YgYnJvYWRjYXN0IHRyYWZmaWMuIFNlZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM2NDogKiAgICAgICAgICAgICAgICAgICAgIFx1MDAyNmVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM2NS0gKiBAZm9yd2FyZF91bmtub3duX211bHRpY2FzdF9pcDogRm9yd2FyZGluZyBtb2RlIG9mIHVua25vd24gbXVsdGljYXN0IElQXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzY2LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFmZmljLlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM2NzogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIFx1MDAyNmVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM2OC0gKiBAZm9yd2FyZF91bmtub3duX211bHRpY2FzdF9ub25faXA6IEZvcndhcmRpbmcgbW9kZSBvZiB1bmtub3duIG11bHRpY2FzdFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM2OS0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbi1JUCB0cmFmZmljLlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM3MDogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSBcdTAwMjZlbnVtIG14bDg2Mnh4X2JyaWRnZV9mb3J3YXJkX21vZGVcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNzEtICogQGZvcndhcmRfdW5rbm93bl91bmljYXN0OiBGb3J3YXJkaW5nIG1vZGUgb2YgdW5rbm93biB1bmljYXN0IHRyYWZmaWMuIFNlZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM3MjogKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFx1MDAyNmVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM3My0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozNzQ6c3RydWN0IG14bDg2Mnh4X2JyaWRnZV9jb25maWcge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM3NS1cdF9fbGUxNiBicmlkZ2VfaWQ7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6Mzc2Olx0X19sZTMyIG1hc2s7IC8qIGVudW0gbXhsODYyeHhfYnJpZGdlX2NvbmZpZ19tYXNrICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzc3LVx0dTggbWFjX2xlYXJuaW5nX2xpbWl0X2VuYWJsZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzgyLVx0X19sZTE2IHRyYWZmaWNfc3ViX21ldGVyX2lkW01YTDg2MlhYX0JSSURHRV9QT1JUX0VHUkVTU19NRVRFUl9NQVhdO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM4MzpcdF9fbGUzMiBmb3J3YXJkX2Jyb2FkY2FzdDsgLyogZW51bSBteGw4NjJ4eF9icmlkZ2VfZm9yd2FyZF9tb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6Mzg0Olx0X19sZTMyIGZvcndhcmRfdW5rbm93bl9tdWx0aWNhc3RfaXA7IC8qIGVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM4NTpcdF9fbGUzMiBmb3J3YXJkX3Vua25vd25fbXVsdGljYXN0X25vbl9pcDsgLyogZW51bSBteGw4NjJ4eF9icmlkZ2VfZm9yd2FyZF9tb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6Mzg2Olx0X19sZTMyIGZvcndhcmRfdW5rbm93bl91bmljYXN0OyAvKiBlbnVtIG14bDg2Mnh4X2JyaWRnZV9mb3J3YXJkX21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zODctfSBfX3BhY2tlZDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzg5LS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM5MDogKiBzdHJ1Y3QgbXhsODYyeHhfYnJpZGdlX3BvcnRfYWxsb2MgLSBCcmlkZ2UgUG9ydCBBbGxvY2F0aW9uXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzkxLSAqIEBicmlkZ2VfcG9ydF9pZDogSWYgdGhlIGJyaWRnZSBwb3J0IGFsbG9jYXRpb24gaXMgc3VjY2Vzc2Z1bCwgYSB2YWxpZCBJRFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zOTctICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6Mzk4OnN0cnVjdCBteGw4NjJ4eF9icmlkZ2VfcG9ydF9hbGxvYyB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzk5LVx0X19sZTE2IGJyaWRnZV9wb3J0X2lkO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC00MDItLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NDAzOiAqIGVudW0gbXhsODYyeHhfYnJpZGdlX3BvcnRfY29uZmlnX21hc2sgLSBCcmlkZ2UgUG9ydCBjb25maWd1cmF0aW9uIG1hc2tcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC00MDQtICogQE1YTDg2MlhYX0JSSURHRV9QT1JUX0NPTkZJR19NQVNLX0JSSURHRV9JRDpcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNDYyLSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjQ2MzplbnVtIG14bDg2Mnh4X2JyaWRnZV9wb3J0X2NvbmZpZ19tYXNrIHtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC00NjQtXHRNWEw4NjJYWF9CUklER0VfUE9SVF9DT05GSUdfTUFTS19CUklER0VfSUQgPSBCSVQoMCksXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTQ5MS0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo0OTI6ICogZW51bSBteGw4NjJ4eF9jb2xvcl9tYXJraW5nX21vZGUgLSBDb2xvciBNYXJraW5nIE1vZGVcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC00OTMtICogQE1YTDg2MlhYX01BUktJTkdfQUxMX0dSRUVOOiBtYXJrIHBhY2tldHMgKGV4Y2VwdCBjcml0aWNhbCkgdG8gZ3JlZW5cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTAxLSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjUwMjplbnVtIG14bDg2Mnh4X2NvbG9yX21hcmtpbmdfbW9kZSB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTAzLVx0TVhMODYyWFhfTUFSS0lOR19BTExfR1JFRU4gPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01MTMtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTE0OiAqIGVudW0gbXhsODYyeHhfY29sb3JfcmVtYXJraW5nX21vZGUgLSBDb2xvciBSZW1hcmtpbmcgTW9kZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTUxNS0gKiBATVhMODYyWFhfUkVNQVJLSU5HX05PTkU6IHZhbHVlcyBmcm9tIGxhc3QgcHJvY2VzcyBzdGFnZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01MjItICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTIzOmVudW0gbXhsODYyeHhfY29sb3JfcmVtYXJraW5nX21vZGUge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTUyNC1cdE1YTDg2MlhYX1JFTUFSS0lOR19OT05FID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTMzLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjUzNDogKiBlbnVtIG14bDg2Mnh4X3BtYXBwZXJfbWFwcGluZ19tb2RlIC0gUC1tYXBwZXIgTWFwcGluZyBNb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTM1LSAqIEBNWEw4NjJYWF9QTUFQUEVSX01BUFBJTkdfUENQOiBVc2UgUENQIGZvciBWTEFOIHRhZ2dlZCBwYWNrZXRzIHRvIGRlcml2ZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01NDEtICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTQyOmVudW0gbXhsODYyeHhfcG1hcHBlcl9tYXBwaW5nX21vZGUge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTU0My1cdE1YTDg2MlhYX1BNQVBQRVJfTUFQUElOR19QQ1AgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01NDgtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTQ5OiAqIHN0cnVjdCBteGw4NjJ4eF9wbWFwcGVyIC0gUC1tYXBwZXIgQ29uZmlndXJhdGlvblxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTU1MC0gKiBAcG1hcHBlcl9pZDogSW5kZXggb2YgUC1tYXBwZXIgKDAtMzEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTU2MC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo1NjE6c3RydWN0IG14bDg2Mnh4X3BtYXBwZXIge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTU2Mi1cdF9fbGUxNiBwbWFwcGVyX2lkO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01NjYtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTY3OiAqIHN0cnVjdCBteGw4NjJ4eF9icmlkZ2VfcG9ydF9jb25maWcgLSBCcmlkZ2UgUG9ydCBDb25maWd1cmF0aW9uXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTY4LSAqIEBicmlkZ2VfcG9ydF9pZDogQnJpZGdlIFBvcnQgSUQgYWxsb2NhdGVkIGJ5IGJyaWRnZSBwb3J0IGFsbG9jYXRpb25cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo1Njk6ICogQG1hc2s6IFNlZSBcdTAwMjZlbnVtIG14bDg2Mnh4X2JyaWRnZV9wb3J0X2NvbmZpZ19tYXNrXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTcwLSAqIEBicmlkZ2VfaWQ6IEJyaWRnZSBJRCAoRklEKSB0byB3aGljaCB0aGlzIGJyaWRnZSBwb3J0IGlzIGFzc29jaWF0ZWRcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTgzLSAqIEBpbmdyZXNzX21hcmtpbmdfbW9kZTogSW5ncmVzcyBjb2xvciBtYXJraW5nIG1vZGUuIFNlZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjU4NDogKiAgICAgICAgICAgICAgICAgICAgICAgIFx1MDAyNmVudW0gbXhsODYyeHhfY29sb3JfbWFya2luZ19tb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTg1LSAqIEBlZ3Jlc3NfcmVtYXJraW5nX21vZGU6IENvbG9yIHJlbWFya2luZyBmb3IgZWdyZXNzIHRyYWZmaWMuIFNlZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjU4NjogKiAgICAgICAgICAgICAgICAgICAgICAgICBcdTAwMjZlbnVtIG14bDg2Mnh4X2NvbG9yX3JlbWFya2luZ19tb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTg3LSAqIEBpbmdyZXNzX21ldGVyaW5nX2VuYWJsZTogVHJhZmZpYyBtZXRlcmluZyBvbiBpbmdyZXNzIHRyYWZmaWMgYXBwbGllc1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01OTctICogQHBtYXBwZXJfbWFwcGluZ19tb2RlOiBQLW1hcHBlciBtYXBwaW5nIG1vZGUuIFNlZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjU5ODogKiAgICAgICAgICAgICAgICAgICAgICAgIFx1MDAyNmVudW0gbXhsODYyeHhfcG1hcHBlcl9tYXBwaW5nX21vZGVcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01OTktICogQHBtYXBwZXJfaWRfdmFsaWQ6IFdoZW4gdHJ1ZSwgUC1tYXBwZXIgaXMgcmUtdXNlZDsgd2hlbiBmYWxzZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNjUzLSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjY1NDpzdHJ1Y3QgbXhsODYyeHhfYnJpZGdlX3BvcnRfY29uZmlnIHtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC02NTUtXHRfX2xlMTYgYnJpZGdlX3BvcnRfaWQ7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NjU2Olx0X19sZTMyIG1hc2s7IC8qIGVudW0gbXhsODYyeHhfYnJpZGdlX3BvcnRfY29uZmlnX21hc2sgKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC02NTctXHRfX2xlMTYgYnJpZGdlX2lkO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC02NjMtXHRfX2xlMTYgZWdyZXNzX2V4dGVuZGVkX3ZsYW5fYmxvY2tfc2l6ZTtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo2NjQ6XHRfX2xlMzIgaW5ncmVzc19tYXJraW5nX21vZGU7IC8qIGVudW0gbXhsODYyeHhfY29sb3JfbWFya2luZ19tb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NjY1Olx0X19sZTMyIGVncmVzc19yZW1hcmtpbmdfbW9kZTsgLyogZW51bSBteGw4NjJ4eF9jb2xvcl9yZW1hcmtpbmdfbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTY2Ni1cdHU4IGluZ3Jlc3NfbWV0ZXJpbmdfZW5hYmxlO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC02NzItXHRfX2xlMTYgZGVzdF9zdWJfaWZfaWRfZ3JvdXA7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NjczOlx0X19sZTMyIHBtYXBwZXJfbWFwcGluZ19tb2RlOyAvKiBlbnVtIG14bDg2Mnh4X3BtYXBwZXJfbWFwcGluZ19tb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNjc0LVx0dTggcG1hcHBlcl9pZF92YWxpZDtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo2NzU6XHRzdHJ1Y3QgbXhsODYyeHhfcG1hcHBlciBwbWFwcGVyO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTY3Ni1cdF9fbGUxNiBicmlkZ2VfcG9ydF9tYXBbOF07XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTcwOS0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3MTA6ICogc3RydWN0IG14bDg2Mnh4X2NmZyAtICBHbG9iYWwgU3dpdGNoIGNvbmZpZ3VyYXRpb24gQXR0cmlidXRlc1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjcxMTogKiBAbWFjX3RhYmxlX2FnZV90aW1lcjogU2VlIFx1MDAyNmVudW0gbXhsODYyeHhfYWdlX3RpbWVyXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzEyLSAqIEBhZ2VfdGltZXI6IEN1c3RvbSBNQUMgdGFibGUgYWdpbmcgdGltZXIgaW4gc2Vjb25kc1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03MjItICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NzIzOnN0cnVjdCBteGw4NjJ4eF9jZmcge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjcyNDpcdF9fbGUzMiBtYWNfdGFibGVfYWdlX3RpbWVyOyAvKiBlbnVtIG14bDg2Mnh4X2FnZV90aW1lciAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTcyNS1cdF9fbGUzMiBhZ2VfdGltZXI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTczNC0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3MzU6ICogZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX2ZpbHRlcl90eXBlIC0gRXh0ZW5kZWQgVkxBTiBmaWx0ZXIgdGFnIHR5cGVcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03MzYtICogQE1YTDg2MlhYX0VYVEVOREVEVkxBTl9GSUxURVJfVFlQRV9OT1JNQUw6IE5vcm1hbCB0YWdnZWRcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzQwLSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjc0MTplbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX3R5cGUge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc0Mi1cdE1YTDg2MlhYX0VYVEVOREVEVkxBTl9GSUxURVJfVFlQRV9OT1JNQUwgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03NDgtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NzQ5OiAqIGVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl9maWx0ZXJfdHBpZCAtIEV4dGVuZGVkIFZMQU4gZmlsdGVyIFRQSURcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03NTAtICogQE1YTDg2MlhYX0VYVEVOREVEVkxBTl9GSUxURVJfVFBJRF9OT19GSUxURVI6IE5vIFRQSUQgZmlsdGVyXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc1My0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3NTQ6ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX2ZpbHRlcl90cGlkIHtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03NTUtXHRNWEw4NjJYWF9FWFRFTkRFRFZMQU5fRklMVEVSX1RQSURfTk9fRklMVEVSID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzYwLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjc2MTogKiBlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX2RlaSAtIEV4dGVuZGVkIFZMQU4gZmlsdGVyIERFSVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc2Mi0gKiBATVhMODYyWFhfRVhURU5ERURWTEFOX0ZJTFRFUl9ERUlfTk9fRklMVEVSOiBObyBERUkgZmlsdGVyXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc2NS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3NjY6ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX2ZpbHRlcl9kZWkge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc2Ny1cdE1YTDg2MlhYX0VYVEVOREVEVkxBTl9GSUxURVJfREVJX05PX0ZJTFRFUiA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc3Mi0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3NzM6ICogZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF9yZW1vdmVfdGFnIC0gVGFnIHJlbW92YWwgYWN0aW9uXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzc0LSAqIEBNWEw4NjJYWF9FWFRFTkRFRFZMQU5fVFJFQVRNRU5UX05PVF9SRU1PVkVfVEFHOiBEbyBub3QgcmVtb3ZlIHRhZ1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03NzgtICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6Nzc5OmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfcmVtb3ZlX3RhZyB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzgwLVx0TVhMODYyWFhfRVhURU5ERURWTEFOX1RSRUFUTUVOVF9OT1RfUkVNT1ZFX1RBRyA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc4Ni0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3ODc6ICogZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF9wcmlvcml0eSAtIFRyZWF0bWVudCBwcmlvcml0eSBtb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzg4LSAqIEBNWEw4NjJYWF9FWFRFTkRFRFZMQU5fVFJFQVRNRU5UX1BSSU9SSVRZX1ZBTDogVXNlIGV4cGxpY2l0IHZhbHVlXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc5Mi0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3OTM6ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF9wcmlvcml0eSB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzk0LVx0TVhMODYyWFhfRVhURU5ERURWTEFOX1RSRUFUTUVOVF9QUklPUklUWV9WQUwgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04MDAtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODAxOiAqIGVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfdmlkIC0gVHJlYXRtZW50IFZJRCBtb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODAyLSAqIEBNWEw4NjJYWF9FWFRFTkRFRFZMQU5fVFJFQVRNRU5UX1ZJRF9WQUw6IFVzZSBleHBsaWNpdCBWSUQgdmFsdWVcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODA1LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjgwNjplbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fdHJlYXRtZW50X3ZpZCB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODA3LVx0TVhMODYyWFhfRVhURU5ERURWTEFOX1RSRUFUTUVOVF9WSURfVkFMID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODEyLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjgxMzogKiBlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fdHJlYXRtZW50X3RwaWQgLSBUcmVhdG1lbnQgVFBJRCBtb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODE0LSAqIEBNWEw4NjJYWF9FWFRFTkRFRFZMQU5fVFJFQVRNRU5UX0lOTkVSX1RQSUQ6IENvcHkgZnJvbSBpbm5lciB0YWdcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODE4LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjgxOTplbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fdHJlYXRtZW50X3RwaWQge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgyMC1cdE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfSU5ORVJfVFBJRCA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgyNi0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4Mjc6ICogZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF9kZWkgLSBUcmVhdG1lbnQgREVJIG1vZGVcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04MjgtICogQE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfSU5ORVJfREVJOiBDb3B5IGZyb20gaW5uZXIgdGFnXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgzMi0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4MzM6ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF9kZWkge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgzNC1cdE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfSU5ORVJfREVJID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODQwLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjg0MTogKiBlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fNF90cGlkX21vZGUgLSA0LVRQSUQgbW9kZSBzZWxlY3RvclxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg0Mi0gKiBATVhMODYyWFhfRVhURU5ERURWTEFOX1RQSURfVlRFVFlQRV8xOiBWTEFOIFRQSUQgdHlwZSAxXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg0Ni0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4NDc6ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuXzRfdHBpZF9tb2RlIHtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04NDgtXHRNWEw4NjJYWF9FWFRFTkRFRFZMQU5fVFBJRF9WVEVUWVBFXzEgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04NTQtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODU1OiAqIGVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl9maWx0ZXJfZXRoZXJ0eXBlIC0gRmlsdGVyIEV0aGVyVHlwZSBtYXRjaFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg1Ni0gKiBATVhMODYyWFhfRVhURU5ERURWTEFOX0ZJTFRFUl9FVEhFUlRZUEVfTk9fRklMVEVSOiBObyBmaWx0ZXJcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODY0LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjg2NTplbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX2V0aGVydHlwZSB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODY2LVx0TVhMODYyWFhfRVhURU5ERURWTEFOX0ZJTFRFUl9FVEhFUlRZUEVfTk9fRklMVEVSID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODc2LS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjg3NzogKiBzdHJ1Y3QgbXhsODYyeHhfZXh0ZW5kZWR2bGFuX2ZpbHRlcl92bGFuIC0gUGVyLXRhZyBmaWx0ZXIgaW4gRXh0ZW5kZWQgVkxBTlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjg3ODogKiBAdHlwZTogVGFnIHByZXNlbmNlL3R5cGUgbWF0Y2ggKHNlZSBcdTAwMjZlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX3R5cGUpXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODc5LSAqIEBwcmlvcml0eV9lbmFibGU6IEVuYWJsZSBQQ1AgdmFsdWUgbWF0Y2hpbmdcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODgyLSAqIEB2aWRfdmFsOiBWSUQgdmFsdWUgdG8gbWF0Y2hcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4ODM6ICogQHRwaWQ6IFRQSUQgbWF0Y2ggbW9kZSAoc2VlIFx1MDAyNmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl9maWx0ZXJfdHBpZClcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4ODQ6ICogQGRlaTogREVJIG1hdGNoIG1vZGUgKHNlZSBcdTAwMjZlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX2RlaSlcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04ODUtICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODg2OnN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fZmlsdGVyX3ZsYW4ge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg4Ny1cdF9fbGUzMiB0eXBlO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04OTYtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODk3OiAqIHN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fZmlsdGVyIC0gRXh0ZW5kZWQgVkxBTiBmaWx0ZXIgY29uZmlndXJhdGlvblxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg5OC0gKiBAb3JpZ2luYWxfcGFja2V0X2ZpbHRlcl9tb2RlOiBJZiB0cnVlLCBmaWx0ZXIgb24gb3JpZ2luYWwgKHByZS10cmVhdG1lbnQpXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODk5LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjkwMDogKiBAZmlsdGVyXzRfdHBpZF9tb2RlOiA0LVRQSUQgbW9kZSAoc2VlIFx1MDAyNmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl80X3RwaWRfbW9kZSlcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MDEtICogQG91dGVyX3ZsYW46IE91dGVyIFZMQU4gdGFnIGZpbHRlclxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MDMtICogQGV0aGVyX3R5cGU6IEV0aGVyVHlwZSBmaWx0ZXIgKHNlZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjkwNDogKiAgICAgICAgICAgICAgXHUwMDI2ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX2ZpbHRlcl9ldGhlcnR5cGUpXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTA1LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjkwNjpzdHJ1Y3QgbXhsODYyeHhfZXh0ZW5kZWR2bGFuX2ZpbHRlciB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTA3LVx0dTggb3JpZ2luYWxfcGFja2V0X2ZpbHRlcl9tb2RlO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTkwOC1cdF9fbGUzMiBmaWx0ZXJfNF90cGlkX21vZGU7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTA5Olx0c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9maWx0ZXJfdmxhbiBvdXRlcl92bGFuO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjkxMDpcdHN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fZmlsdGVyX3ZsYW4gaW5uZXJfdmxhbjtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MTEtXHRfX2xlMzIgZXRoZXJfdHlwZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTE0LS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjkxNTogKiBzdHJ1Y3QgbXhsODYyeHhfZXh0ZW5kZWR2bGFuX3RyZWF0bWVudF92bGFuIC0gUGVyLXRhZyB0cmVhdG1lbnQgaW5cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MTYtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVuZGVkIFZMQU5cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MTctICogQHByaW9yaXR5X21vZGU6IFByaW9yaXR5IGFzc2lnbm1lbnQgbW9kZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjkxODogKiAgICAgICAgICAgICAgICAgKHNlZSBcdTAwMjZlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fdHJlYXRtZW50X3ByaW9yaXR5KVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTkxOS0gKiBAcHJpb3JpdHlfdmFsOiBQcmlvcml0eSB2YWx1ZSAod2hlbiBtb2RlIGlzIFZBTClcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MjAtICogQHZpZF9tb2RlOiBWSUQgYXNzaWdubWVudCBtb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTIxOiAqICAgICAgICAgICAgKHNlZSBcdTAwMjZlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fdHJlYXRtZW50X3ZpZClcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MjItICogQHZpZF92YWw6IFZJRCB2YWx1ZSAod2hlbiBtb2RlIGlzIFZBTClcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MjMtICogQHRwaWQ6IFRQSUQgYXNzaWdubWVudCBtb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTI0OiAqICAgICAgICAoc2VlIFx1MDAyNmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfdHBpZClcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MjUtICogQGRlaTogREVJIGFzc2lnbm1lbnQgbW9kZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjkyNjogKiAgICAgICAoc2VlIFx1MDAyNmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfZGVpKVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTkyNy0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5Mjg6c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl90cmVhdG1lbnRfdmxhbiB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTI5LVx0X19sZTMyIHByaW9yaXR5X21vZGU7XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTkzNy0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5Mzg6ICogc3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl90cmVhdG1lbnQgLSBFeHRlbmRlZCBWTEFOIHRyZWF0bWVudFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTkzOS0gKiBAcmVtb3ZlX3RhZzogVGFnIHJlbW92YWwgYWN0aW9uXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTQwOiAqICAgICAgICAgICAgICAoc2VlIFx1MDAyNmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfcmVtb3ZlX3RhZylcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05NDEtICogQHRyZWF0bWVudF80X3RwaWRfbW9kZTogNC1UUElEIHRyZWF0bWVudCBtb2RlXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTk1OC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5NTk6c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl90cmVhdG1lbnQge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTk2MC1cdF9fbGUzMiByZW1vdmVfdGFnO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05NjItXHR1OCBhZGRfb3V0ZXJfdmxhbjtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5NjM6XHRzdHJ1Y3QgbXhsODYyeHhfZXh0ZW5kZWR2bGFuX3RyZWF0bWVudF92bGFuIG91dGVyX3ZsYW47XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTY0LVx0dTggYWRkX2lubmVyX3ZsYW47XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTY1Olx0c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl90cmVhdG1lbnRfdmxhbiBpbm5lcl92bGFuO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTk2Ni1cdHU4IHJlYXNzaWduX2JyaWRnZV9wb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05ODAtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTgxOiAqIHN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fYWxsb2MgLSBFeHRlbmRlZCBWTEFOIGJsb2NrIGFsbG9jYXRpb25cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05ODItICogQG51bWJlcl9vZl9lbnRyaWVzOiBOdW1iZXIgb2YgZW50cmllcyB0byBhbGxvY2F0ZSAoaW5wdXQpIC8gYWxsb2NhdGVkXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTk4OC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5ODk6c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9hbGxvYyB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTkwLVx0X19sZTE2IG51bWJlcl9vZl9lbnRyaWVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05OTQtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTk1OiAqIHN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fY29uZmlnIC0gRXh0ZW5kZWQgVkxBTiBlbnRyeSBjb25maWd1cmF0aW9uXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTk2LSAqIEBleHRlbmRlZF92bGFuX2Jsb2NrX2lkOiBCbG9jayBJRCBmcm9tIGFsbG9jYXRpb25cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAwMi0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDAzOnN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fY29uZmlnIHtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDA0LVx0X19sZTE2IGV4dGVuZGVkX3ZsYW5fYmxvY2tfaWQ7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAwNS1cdF9fbGUxNiBlbnRyeV9pbmRleDtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDA2Olx0c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9maWx0ZXIgZmlsdGVyO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwMDc6XHRzdHJ1Y3QgbXhsODYyeHhfZXh0ZW5kZWR2bGFuX3RyZWF0bWVudCB0cmVhdG1lbnQ7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAwOC19IF9fcGFja2VkO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDEwLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwMTE6ICogZW51bSBteGw4NjJ4eF92bGFuX2ZpbHRlcl90Y2lfbWFzayAtIFZMQU4gRmlsdGVyIFRDSSBtYXNrXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAxMi0gKiBATVhMODYyWFhfVkxBTl9GSUxURVJfVENJX01BU0tfVklEOiBUQ0kgbWFzayBmb3IgVkxBTiBJRFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDE1LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwMTY6ZW51bSBteGw4NjJ4eF92bGFuX2ZpbHRlcl90Y2lfbWFzayB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAxNy1cdE1YTDg2MlhYX1ZMQU5fRklMVEVSX1RDSV9NQVNLX1ZJRCA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwMjItLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTAyMzogKiBzdHJ1Y3QgbXhsODYyeHhfdmxhbmZpbHRlcl9hbGxvYyAtIFZMQU4gRmlsdGVyIGJsb2NrIGFsbG9jYXRpb25cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDI0LSAqIEBudW1iZXJfb2ZfZW50cmllczogTnVtYmVyIG9mIGVudHJpZXMgdG8gYWxsb2NhdGUgKGlucHV0KSAvIGFsbG9jYXRlZFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDM0LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwMzU6c3RydWN0IG14bDg2Mnh4X3ZsYW5maWx0ZXJfYWxsb2Mge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwMzYtXHRfX2xlMTYgbnVtYmVyX29mX2VudHJpZXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwNDMtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTA0NDogKiBzdHJ1Y3QgbXhsODYyeHhfdmxhbmZpbHRlcl9jb25maWcgLSBWTEFOIEZpbHRlciBlbnRyeSBjb25maWd1cmF0aW9uXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA0NS0gKiBAdmxhbl9maWx0ZXJfYmxvY2tfaWQ6IEJsb2NrIElEIGZyb20gYWxsb2NhdGlvblxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDQ3LSAqIEB2bGFuX2ZpbHRlcl9tYXNrOiBUQ0kgZmllbGQocykgdG8gbWF0Y2ggKHNlZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwNDg6ICogICAgICAgICAgICAgICAgICAgIFx1MDAyNmVudW0gbXhsODYyeHhfdmxhbl9maWx0ZXJfdGNpX21hc2spXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA0OS0gKiBAdmFsOiBUQ0kgdmFsdWUocykgdG8gbWF0Y2ggKFZJRCwgUENQLCBvciBmdWxsIFRDSSBkZXBlbmRpbmcgb24gbWFzaylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA1NC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDU1OnN0cnVjdCBteGw4NjJ4eF92bGFuZmlsdGVyX2NvbmZpZyB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA1Ni1cdF9fbGUxNiB2bGFuX2ZpbHRlcl9ibG9ja19pZDtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDU3LVx0X19sZTE2IGVudHJ5X2luZGV4O1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwNTg6XHRfX2xlMzIgdmxhbl9maWx0ZXJfbWFzazsgLyogZW51bSBteGw4NjJ4eF92bGFuX2ZpbHRlcl90Y2lfbWFzayAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwNTktXHRfX2xlMzIgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDYzLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwNjQ6ICogZW51bSBteGw4NjJ4eF9zc19zcF90YWdfbWFzayAtIFNwZWNpYWwgdGFnIHZhbGlkIGZpZWxkIGluZGljYXRvciBiaXRzXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA2NS0gKiBATVhMODYyWFhfU1NfU1BfVEFHX01BU0tfUlg6IHZhbGlkIFJYIHNwZWNpYWwgdGFnIG1vZGVcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA2OS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDcwOmVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX21hc2sge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwNzEtXHRNWEw4NjJYWF9TU19TUF9UQUdfTUFTS19SWCA9IEJJVCgwKSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA3Ny0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDc4OiAqIGVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX3J4IC0gUlggc3BlY2lhbCB0YWcgbW9kZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwNzktICogQE1YTDg2MlhYX1NTX1NQX1RBR19SWF9OT19UQUdfTk9fSU5TRVJUOiBwYWNrZXQgZG9lcyBOT1QgaGF2ZSBzcGVjaWFsXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwODUtICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTA4NjplbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ19yeCB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA4Ny1cdE1YTDg2MlhYX1NTX1NQX1RBR19SWF9OT19UQUdfTk9fSU5TRVJUID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA5Mi0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDkzOiAqIGVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX3R4IC0gVFggc3BlY2lhbCB0YWcgbW9kZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwOTQtICogQE1YTDg2MlhYX1NTX1NQX1RBR19UWF9OT19UQUdfTk9fUkVNT1ZFOiBwYWNrZXQgZG9lcyBOT1QgaGF2ZSBzcGVjaWFsXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMDItICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTEwMzplbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ190eCB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTEwNC1cdE1YTDg2MlhYX1NTX1NQX1RBR19UWF9OT19UQUdfTk9fUkVNT1ZFID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTExMC0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTExOiAqIGVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX3J4X3BlbiAtIFJYIHNwZWNpYWwgdGFnIGluZm8gb3ZlciBwcmVhbWJsZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMTItICogQE1YTDg2MlhYX1NTX1NQX1RBR19SWF9QRU5fQUxMXzA6IHNwZWNpYWwgdGFnIGluZm8gaW5zZXJ0ZWQgZnJvbSBieXRlIDJcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTEyMi0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTIzOmVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX3J4X3BlbiB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTEyNC1cdE1YTDg2MlhYX1NTX1NQX1RBR19SWF9QRU5fQUxMXzAgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMTMwLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjExMzE6ICogc3RydWN0IG14bDg2Mnh4X3NzX3NwX3RhZyAtIFNwZWNpYWwgdGFnIHBvcnQgc2V0dGluZ3NcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMTMyLSAqIEBwaWQ6IHBvcnQgSUQgKDF+MTYpXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTEzMzogKiBAbWFzazogU2VlIFx1MDAyNmVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX21hc2tcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTM0OiAqIEByeDogU2VlIFx1MDAyNmVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX3J4XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTEzNTogKiBAdHg6IFNlZSBcdTAwMjZlbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ190eFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjExMzY6ICogQHJ4X3BlbjogU2VlIFx1MDAyNmVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX3J4X3BlblxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMzctICogQHR4X3BlbjogVFggc3BlY2lhbCB0YWcgaW5mbyBvdmVyIHByZWFtYmxlXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExNDAtICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTE0MTpzdHJ1Y3QgbXhsODYyeHhfc3Nfc3BfdGFnIHtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMTQyLVx0dTggcGlkO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjExNDM6XHR1OCBtYXNrOyAvKiBlbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ19tYXNrICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTE0NDpcdHU4IHJ4OyAvKiBlbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ19yeCAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjExNDU6XHR1OCB0eDsgLyogZW51bSBteGw4NjJ4eF9zc19zcF90YWdfdHggKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTQ2Olx0dTggcnhfcGVuOyAvKiBlbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ19yeF9wZW4gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMTQ3LVx0dTggdHhfcGVuOyAvKiBib29sZWFuICovXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExNTAtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTE1MTogKiBlbnVtIG14bDg2Mnh4X2xvZ2ljYWxfcG9ydF9tb2RlIC0gTG9naWNhbCBwb3J0IG1vZGVcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMTUyLSAqIEBNWEw4NjJYWF9MT0dJQ0FMX1BPUlRfOEJJVF9XTEFOOiBXTEFOIHdpdGggOC1iaXQgc3RhdGlvbiBJRFxuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNzY3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVhMODYyWFggU3dpdGNoIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIsIHdoaWNoIGl0IGFsbW9zdCBjZXJ0YWlubHkgaXMuIFRoZSBuYW1lIGBteGw4NjJ4eGAgc3Ryb25nbHkgc3VnZ2VzdHMgaXQmIzM5O3MgYSBNYXhMaW5lYXIgc3dpdGNoIG9mIHNvbWUgc29ydC4gVGhlIHJlYWwgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVyZSBpcyBhbnkgcG9zc2liaWxpdHksIGV2ZW4gYSBzbGltIG9uZSwgb2YgZW11bGF0aW5nIHRoaXMgZHJpdmVyIGZvciB0ZXN0aW5nIG9yIGRldmVsb3BtZW50IHB1cnBvc2VzPwoKVG8gYW5zd2VyIHRoYXQgSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4gRWl0aGVyIGBkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvS2NvbmZpZ2AgZGlyZWN0bHkgb3IgdGhlIGJyb2FkZXIgYGRyaXZlcnMvbmV0L2RzYS9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBoaW50cyBhYm91dCBkZXBlbmRlbmNpZXMgb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgZ2l2ZSBtZSBzb21lIGNsdWVzLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgZHJpdmVyIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYW5kIGlmIHRoZXJlJiMzOTtzIGFueSBmbGV4aWJpbGl0eSBpbiBob3cgaXQmIzM5O3MgYnVpbHQgb3IgY29uZmlndXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0RTQV9NWEw4NjImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvS2NvbmZpZzoyOmNvbmZpZyBORVRfRFNBX01YTDg2MlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01heExpbmVhciBNeEw4NjJ4eFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjM3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgYGRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9LY29uZmlnYCBmaWxlLCB0aGlua2luZyBsaWtlIGEgc2Vhc29uZWQgZW1iZWRkZWQgc3lzdGVtcyBkZXZlbG9wZXI6CgoqKkRlbHZpbmcgaW50byB0aGUgTVhMODYyWFggS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGlzIEtjb25maWcgZmlsZSBmb3IgdGhlIE1hcnZlbGwgTVhMODYyWFggRFNBIGRyaXZlci4gSW1tZWRpYXRlbHksIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvcmUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBNeSBpbml0aWFsIHRob3VnaHRzIGFyZSBnZWFyZWQgdG93YXJkIHVuZGVyc3RhbmRpbmcgd2hhdCBmZWF0dXJlcyBhcmUgY29uZmlndXJhYmxlIGFuZCBob3cgdGhleSB0aWUgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGdldCBhIGdyaXAgb24gdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLCB3aGljaCBpcyBrZXkuCgpJIHNlZSB0aGUgYGNvbmZpZyBNWEw4NjJYWGAgb3B0aW9uIOKAkyB0aGF0JiMzOTtzIHRoZSBwcmltYXJ5IHN3aXRjaCwgSSBhc3N1bWUuIEkgbmVlZCB0byBjaGVjayBpdHMgZGVwZW5kZW5jaWVzLiBMaWtlbHksIHRoaXMgd2lsbCBkZXBlbmQgb24gc29tZSBiYXNlIG5ldHdvcmtpbmcgb3IgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIHRob3NlLi4uIEFoLCBgTkVUX0RTQWAgc2VlbXMgbGlrZSB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludC4gR29vZCwgdGhhdCBtYWtlcyBzZW5zZS4gSSB3b3VsZCBleHBlY3Qgc29tZSBkZXBlbmRlbmNpZXMgb24gTURJTyBhcyB3ZWxsLiBBbmQgcHJvYmFibHkgc29tZSBBUk0tc3BlY2lmaWMgdGhpbmdzIHNpbmNlIHRoaXMgaXMgYW4gZW1iZWRkZWQgc29sdXRpb24uCgpUaGUgYHRyaXN0YXRlYCBuYXR1cmUgb2YgaXQgaXMgc3RhbmRhcmQuIFRoZSB1c2VyIHdpbGwgYmUgYWJsZSB0byBlaXRoZXIgYnVpbGQgaXQgaW50byB0aGUga2VybmVsLCBhcyBhIG1vZHVsZSwgb3Igbm90IGluY2x1ZGUgaXQgYXQgYWxsLCBiYXNlZCBvbiB0aGVpciBzZXR1cC4KClRoZW4sIEkmIzM5O2xsIGFuYWx5emUgdGhlIGluZGl2aWR1YWwgc3ViLW9wdGlvbnMgd2l0aGluIGBNWEw4NjJYWGAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhlcmUgd2lsbCBiZSB0b2dnbGVzIGZvciBkaWZmZXJlbnQgUEhZIG1vZGVzLCBtYW5hZ2VtZW50IGludGVyZmFjZXMgKE1ESU8/KSwgYW5kIHBlcmhhcHMgaGFyZHdhcmUgZmVhdHVyZXMgc3BlY2lmaWMgdG8gZGlmZmVyZW50IE1YTDg2MlhYIHJldmlzaW9ucywgb3IgZXZlbiBmZWF0dXJlcyBsaWtlIFZMQU4gc3VwcG9ydC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgbW9zdCBjb21tb24gdXNlIGNhc2VzLCBlc3BlY2lhbGx5IGlmIHRoZXkgYXJlIHNlbnNpYmxlIGRlZmF1bHRzIHRoYXQgYSB1c2VyIHdpbGwgbm90IG5lZWQgdG8gY2hhbmdlLgoKVGhlIHByZXNlbmNlIG9mIGBoZWxwYCB0ZXh0IGlzIGNydWNpYWwuIFRoYXQmIzM5O3Mgd2hlcmUgSSB3aWxsIGZpbmQgdGhlIHJlYWwgbWVhdCBvZiB0aGUgY29uZmlndXJhdGlvbiwgdGhlIGV4cGxhbmF0aW9uIG9mIGVhY2ggb3B0aW9uLCB3aGF0IGl0IGRvZXMsIGFuZCBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgZGVzY3JpcHRpb25zIGFyZSBjbGVhciBhbmQgYWNjdXJhdGUuIElzIHRoZXJlIGFueSBjcm9zcy1yZWZlcmVuY2luZyB0byB0aGUgZGV2aWNlIGRvY3VtZW50YXRpb24gb3IgZGF0YXNoZWV0cz8gVGhhdCB3b3VsZCBiZSBhIGh1Z2UgcGx1cy4KCkkgYW0gYWxzbyBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzLiBEb2VzIG9uZSBvcHRpb24gZXhjbHVkZSBhbm90aGVyPyBPciBhcmUgdGhlcmUgaW50ZXJhY3Rpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gSSBuZWVkIHRvIGFuYWx5emUgaG93IHRoaXMgS2NvbmZpZyBmaWxlIGludGVncmF0ZXMgd2l0aCBvdGhlciBjb25maWd1cmF0aW9ucyBpbiB0aGUgYGRyaXZlcnMvbmV0L2RzYWAgc3VidHJlZSBhbmQgcG9zc2libHkgZXZlbiB0aGUgYnJvYWRlciBuZXR3b3JraW5nIHN0YWNrLiBJIG5lZWQgdG8gZW5zdXJlIGl0JiMzOTtzIGNsZWFuIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHN1cnByaXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBORVRfRFNBX01YTDg2MlxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWF4TGluZWFyIE14TDg2Mnh4XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FcbiAgIDU6XHRcdHNlbGVjdCBDUkMxNlxuICAgNjpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX01YTF84NjJYWFxuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIE1heExpbmVhciBNeEw4NjJ4eCBzd2l0Y2ggZmFtaWx5LlxuICAgOTpcdFx0ICBUaGVzZSBzd2l0Y2hlcyBoYXZlIHR3byAxMEdFIFNlckRlcyBpbnRlcmZhY2VzLCBvbmUgdHlwaWNhbGx5XG4gIDEwOlx0XHQgIHVzZWQgYXMgQ1BVIHBvcnQuXG4gIDExOlx0XHQgICAtIE14TDg2MjgyIGhhcyBlaWdodCAyLjUgR2lnYWJpdCBQSFlzXG4gIDEyOlx0XHQgICAtIE14TDg2MjUyIGhhcyBmaXZlIDIuNSBHaWdhYml0IFBIWXNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjAzMQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEhhcmR3YXJlIFN3aXRjaCBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLiBJdCYjMzk7cyBhIGhhcmR3YXJlIHN3aXRjaCBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhlIE1heExpbmVhciBNeEw4NjJ4eC4gVGhlIGZpcnN0IHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIGNhbiBJIGV2ZW4gZ2V0IGF0IHRoaXMgdGhpbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gTGlrZWx5IG5vdCwgc2luY2UgaXQmIzM5O3MgYSAqcGh5c2ljYWwqIGhhcmR3YXJlIGRyaXZlci4gVW5sZXNzIHRoZXJlJiMzOTtzIHNvbWUga2luZCBvZiBlbXVsYXRvciBmb3IgdGhlIE14TDg2Mnh4LCBhbmQgdGhhdCYjMzk7cyBwcmV0dHkgaW1wcm9iYWJsZS4KClRoZW4gSSByZW1lbWJlciBzb21ldGhpbmcgaW1wb3J0YW50OiBzeXpib3QsIHRoZSBhdXRvbWF0ZWQga2VybmVsIGZ1enplciBJJiMzOTttIHVzaW5nLCAqZG9lc24mIzM5O3QqIGhhdmUgdGhhdCBzcGVjaWZpYyBoYXJkd2FyZS4gVGhpcyBkcml2ZXIgaXMgb2ZmIHRoZSB0YWJsZSBmb3Igc3l6a2FsbGVyLgoKSG1tLCBidXQgaXMgdGhlcmUgKmFueSogd2F5IHRvIGVtdWxhdGUgaXQ/IFBlcmhhcHMgdGhlcmUmIzM5O3MgYSB3b3JrYXJvdW5kLiBTaW5jZSBpdCYjMzk7cyBhbiBNRElPIGRldmljZSwgSSB0aGluayB0aGVyZSBtYXkgYmUgYW4gb3B0aW9uLCBidXQgdGhlIGRldmljZSBuZWVkcyB0byByZWdpc3RlciB3aXRoIE1ESU8uIE5vdywgdGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguY2AgdG8gc2VlIGhvdyBpdCBwZXJmb3JtcyBpdHMgcHJvYmUsIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBob29rcyBJIGNhbiB1c2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O214bDg2Mnh4X3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYz0yMDkwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgbXhsODYyeHhfc3dpdGNoX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yMTI1LVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmM6MjEyNjpzdGF0aWMgaW50IG14bDg2Mnh4X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTIxMjcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jPTIyMzU9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBteGw4NjJ4eF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYzoyMjM2Olx0LnByb2JlICA9IG14bDg2Mnh4X3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjIzNy1cdC5yZW1vdmUgPSBteGw4NjJ4eF9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNzYxCgkJCQkJCQlvdXRwdXQ6IDg1CgkJCQkJCQl0aG91Z2h0czogNDA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk1ESU8gRHJpdmVyIEZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYW4gTURJTyBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHN5emthbGxlciBldmVuIHRvdWNoIE1ESU8gZGV2aWNlcz8gVHlwaWNhbGx5LCB0aGV5JiMzOTtyZSBwcm9iZWQgdGhyb3VnaCBkZXZpY2UgdHJlZSBvciBBQ1BJLCBub3Qgc29tZXRoaW5nIHN5emthbGxlciBpcyByZWFkaWx5IHNldCB1cCB0byBoYW5kbGUsIHVubGVzcyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIHBzZXVkby1kZXZpY2Ugb3IgYSBzeXprYWxsZXItY29udHJvbGxlZCB2aXJ0dWFsIGJ1cy4gSSAqZG9uJiMzOTt0KiB0aGluayBzeXprYWxsZXIgY2FuIGRpcmVjdGx5IGluamVjdCBNRElPIGRldmljZXMsIGFuZCBldmVuIGlmIGl0IGNvdWxkLCB3ZSYjMzk7ZCBiZSB0YWxraW5nIGFib3V0IG5lZWRpbmcgdGhlICpzcGVjaWZpYyogaGFyZHdhcmUgb3IgYSBkZXRhaWxlZCBzb2Z0d2FyZSBlbXVsYXRvci4gQW5kIHNpbmNlIHRoaXMgaXMgYSAqcGh5c2ljYWwqIGhhcmR3YXJlIGRyaXZlciwgaXQmIzM5O3MgYSBub24tc3RhcnRlciBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gTXkgZ3V0IHNheXMsICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsuCgpMZXQgbWUgZG91YmxlIGNoZWNrLi4uIGFyZSB0aGVyZSBhbnkgTmV0bGluayBpbnRlcmZhY2VzIHRoYXQgbWlnaHQgcHJvdmlkZSBhIGJhY2tkb29yPyBBbHJpZ2h0LCB0aGUgcGF0Y2ggYWRkcyBgbXhsODYyeHhfZGV2bGlua19pbmZvX2dldGAgYW5kIGBteGw4NjJ4eF9kZXZsaW5rX2ZsYXNoX3VwZGF0ZWAsIHdoaWNoIGFyZSBkZXZsaW5rIG9wZXJhdGlvbnMuIFRob3NlIGFyZSByZWdpc3RlcmVkIHdoZW4gdGhlIERTQSBzd2l0Y2ggaXMgcmVnaXN0ZXJlZCwgYW5kIHRoZSBEU0Egc3dpdGNoIGl0c2VsZiBpcyByZWdpc3RlcmVkIGluIGBteGw4NjJ4eF9wcm9iZWAuIFNvIGlmIHRoZSBkZXZpY2UgZG9lc24mIzM5O3QgcHJvYmUsIHRoZXNlIGRldmxpbmsgb3BzICp3b24mIzM5O3QqIGJlIHJlZ2lzdGVyZWQsIGFuZCB0aGF0IGNvZGUgaXMgdW5yZWFjaGFibGUuCgpPa2F5LCBpcyB0aGVyZSAqYW55KiBvdGhlciBjb25jZWl2YWJsZSBwYXRoIHRvIHJlYWNoIHRoaXMgY29kZT8gTm9wZSwgaXQmIzM5O3MgYSBwdXJlIGhhcmR3YXJlIGRyaXZlci4KCldhaXQuLi4gbGV0IG1lIHJlLXJlYWQgdGhlIHByb21wdC4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEFuZCB0aGlzIGlzIGEgaGFyZHdhcmUgZHJpdmVyIGZvciBhIHNwZWNpZmljIHN3aXRjaCAoTWF4TGluZWFyIE14TDg2Mnh4KSBhbmQgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0b3IgZm9yIGl0LiBUaGlzICpkZWZpbml0ZWx5KiBmYWxscyB1bmRlciB0aGF0IGNhdGVnb3J5LgoKQWxyaWdodCwgSSYjMzk7bSBjb25maWRlbnQuIEkgd2lsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIChNYXhMaW5lYXIgTXhMODYyeHggc3dpdGNoKSB3aGljaCBpcyBhbiBNRElPIGRldmljZS4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0b3IgZm9yIHRoaXMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGEgZHJpdmVyIGZvciBwaHlzaWNhbCBoYXJkd2FyZSAoTWF4TGluZWFyIE14TDg2Mnh4IHN3aXRjaCkgd2hpY2ggaXMgYW4gTURJTyBkZXZpY2UuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTRUMDQ6NTc6MjEuMDQ1NTA0Mzc3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU1NTExMjc0NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgZHJpdmVyIGZvciBwaHlzaWNhbCBoYXJkd2FyZSAoTWF4TGluZWFyIE14TDg2Mnh4IHN3aXRjaCkgd2hpY2ggaXMgYW4gTURJTyBkZXZpY2UuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNDo1NzoyMS4wNDU1MDkwNTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MDAwODIxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGJhMmYwMmQ1YzMzN2QwOGMzNmYxYjcyMzgzZDk4ZGE1MDgxMTI4NGVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMDQ6NTc6MTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L01ha2VmaWxlIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L01ha2VmaWxlXFxuaW5kZXggYTdiZTBlNjY2OWRmYTUuLmJjY2FjMGQwZjcwM2Y2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9NYWtlZmlsZVxcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9NYWtlZmlsZVxcbkBAIC0xLDMgKzEsMyBAQFxcbiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuIG9iai0kKENPTkZJR19ORVRfRFNBX01YTDg2MikgKz0gbXhsODYyeHhfZHNhLm9cXG4tbXhsODYyeHhfZHNhLXkgOj0gbXhsODYyeHgubyBteGw4NjJ4eC1ob3N0Lm8gbXhsODYyeHgtcGh5bGluay5vXFxuK214bDg2Mnh4X2RzYS15IDo9IG14bDg2Mnh4Lm8gbXhsODYyeHgtaG9zdC5vIG14bDg2Mnh4LXBoeWxpbmsubyBteGw4NjJ4eC1mdy5vXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1jbWQuaCBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1jbWQuaFxcbmluZGV4IGM4N2E5NTVjMTNjNDhlLi5lMmFhMjkzNGU5ZTE2MiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtY21kLmhcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtY21kLmhcXG5AQCAtNzAsNiArNzAsNyBAQFxcbiAjZGVmaW5lIElOVF9HUEhZX1JFQURcXHRcXHRcXHQoR1BZX0dQWTJYWF9NQUdJQyArIDB4MSlcXG4gI2RlZmluZSBJTlRfR1BIWV9XUklURVxcdFxcdFxcdChHUFlfR1BZMlhYX01BR0lDICsgMHgyKVxcbiBcXG4rI2RlZmluZSBTWVNfTUlTQ19GV19VUERBVEVcXHRcXHQoU1lTX01JU0NfTUFHSUMgKyAweDEpXFxuICNkZWZpbmUgU1lTX01JU0NfRldfVkVSU0lPTlxcdFxcdChTWVNfTUlTQ19NQUdJQyArIDB4MilcXG4gXFxuICNkZWZpbmUgTVhMODYyWFhfWFBDU19QQ1NfQ09ORklHXFx0KE1YTDg2MlhYX1hQQ1NfTUFHSUMgKyAweDEpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1mdy5jIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWZ3LmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi44OGQ1M2JlYTMzNmZkNVxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtZncuY1xcbkBAIC0wLDAgKzEsNDM5IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyXFxuKy8qXFxuKyAqIEZpcm13YXJlIGZsYXNoIGFuZCBkZXZsaW5rIHN1cHBvcnQgZm9yIE1heExpbmVhciBNeEw4NjJ4eFxcbisgKlxcbisgKiBDb3B5cmlnaHQgKEMpIDIwMjUgRGFuaWVsIEdvbGxlIFxcdTAwM2NkYW5pZWxAbWFrcm90b3BpYS5vcmdcXHUwMDNlXFxuKyAqL1xcbitcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NyYzMyLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWxheS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZGV2aWNlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGRldmljZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3J0bmV0bGluay5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbmV0L2RzYS5oXFx1MDAzZVxcbitcXG4rI2luY2x1ZGUgXFxcIm14bDg2Mnh4LmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJteGw4NjJ4eC1hcGkuaFxcXCJcXG4rI2luY2x1ZGUgXFxcIm14bDg2Mnh4LWNtZC5oXFxcIlxcbisjaW5jbHVkZSBcXFwibXhsODYyeHgtZncuaFxcXCJcXG4rI2luY2x1ZGUgXFxcIm14bDg2Mnh4LWhvc3QuaFxcXCJcXG4rXFxuKy8qIFNCIFBESSByZWdpc3RlcnMgKGNsYXVzZS0yMiBTTURJTyBhZGRyZXNzIHNwYWNlKSAqL1xcbisjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9DVFJMXFx0XFx0MHhlMTAwXFxuKyNkZWZpbmUgTVhMODYyWFhfU0JfUERJX0FERFJcXHRcXHQweGUxMDFcXG4rI2RlZmluZSBNWEw4NjJYWF9TQl9QRElfREFUQVxcdFxcdDB4ZTEwMlxcbisjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9TVEFUXFx0XFx0MHhlMTAzXFxuK1xcbisvKiBTQiBQREkgQ1RSTCBtb2RlcyAqL1xcbisjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9DVFJMX1JTVFxcdDB4MDBcXG4rI2RlZmluZSBNWEw4NjJYWF9TQl9QRElfQ1RSTF9XUlxcdDB4MDJcXG4rXFxuKy8qIFNCIFBESSBoYW5kc2hha2UgbWFnaWMgKi9cXG4rI2RlZmluZSBNWEw4NjJYWF9TQl9QRElfUkVBRFlcXHRcXHQweGM1NWNcXG4rI2RlZmluZSBNWEw4NjJYWF9TQl9QRElfU1RBUlRcXHRcXHQweGY0OGZcXG4rI2RlZmluZSBNWEw4NjJYWF9TQl9QRElfRU5EXFx0XFx0MHgzY2MzXFxuK1xcbisvKiBGaXJtd2FyZSB0cmFuc2ZlciBnZW9tZXRyeSAqL1xcbisjZGVmaW5lIE1YTDg2MlhYX0ZXX0hEUl9TSVpFXFx0XFx0MjBcXG4rI2RlZmluZSBNWEw4NjJYWF9GV19CQU5LX0hBTEZcXHRcXHQxNjM4NFxcdC8qIHdvcmRzIHBlciBoYWxmLWJhbmsgKi9cXG4rI2RlZmluZSBNWEw4NjJYWF9GV19CQU5LX1NMSUNFXFx0XFx0MzI3NjBcXHQvKiB3b3JkcyBwZXIgZnVsbCBzbGljZSAqL1xcbisjZGVmaW5lIE1YTDg2MlhYX0ZXX1NCMV9BRERSXFx0XFx0MHg3ODAwXFx0LyogU0IxIHdvcmQgYWRkcmVzcyAqL1xcbitcXG4rLyogVGltZW91dHMgKGdlbmVyb3VzIHVwcGVyIGJvdW5kcykgKi9cXG4rI2RlZmluZSBNWEw4NjJYWF9GV19SRUFEWV9USU1FT1VUX01TXFx0MzAwMDBcXG4rI2RlZmluZSBNWEw4NjJYWF9GV19BQ0tfVElNRU9VVF9NU1xcdDUwMDBcXG4rI2RlZmluZSBNWEw4NjJYWF9GV19FUkFTRV9USU1FT1VUX01TXFx0MzAwMDAwXFxuKyNkZWZpbmUgTVhMODYyWFhfRldfV1JJVEVfVElNRU9VVF9NU1xcdDEyMDAwMFxcbisjZGVmaW5lIE1YTDg2MlhYX0ZXX1JFQk9PVF9ERUxBWV9NU1xcdDUwMDBcXG4rXFxuK3N0YXRpYyB2b2lkIG14bDg2Mnh4X3NiX3BkaV9yZXNldChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdilcXG4re1xcbitcXHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfQ1RSTCxcXG4rXFx0XFx0XFx0ICAgICBNWEw4NjJYWF9TQl9QRElfQ1RSTF9SU1QpO1xcbitcXHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfQUREUixcXG4rXFx0XFx0XFx0ICAgICBNWEw4NjJYWF9TQl9QRElfQ1RSTF9SU1QpO1xcbitcXHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfREFUQSxcXG4rXFx0XFx0XFx0ICAgICBNWEw4NjJYWF9TQl9QRElfQ1RSTF9SU1QpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUxNiBleHBlY3RlZCxcXG4rXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXRfbXMpXFxuK3tcXG4rXFx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXModGltZW91dF9tcyk7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRkbyB7XFxuK1xcdFxcdHJldCA9IG14bDg2Mnh4X3NtZGlvX3JlYWQocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVQpO1xcbitcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0XFx0aWYgKCh1MTYpcmV0ID09IGV4cGVjdGVkKVxcbitcXHRcXHRcXHRyZXR1cm4gMDtcXG4rXFx0XFx0dXNsZWVwX3JhbmdlKDEwMDAwLCAxMTAwMCk7XFxuK1xcdH0gd2hpbGUgKHRpbWVfYmVmb3JlKGppZmZpZXMsIHRpbWVvdXQpKTtcXG4rXFxuK1xcdHJldHVybiAtRVRJTUVET1VUO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IG14bDg2Mnh4X3NiX3BkaV9mbHVzaF9zbGljZShzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdixcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHUzMiBkYXRhX3dyaXR0ZW4pXFxuK3tcXG4rXFx0bXhsODYyeHhfc2JfcGRpX3Jlc2V0KHByaXYpO1xcbitcXHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfU1RBVCwgZGF0YV93cml0dGVuKTtcXG4rXFxuK1xcdHJldHVybiBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIDAsXFxuK1xcdFxcdFxcdFxcdFxcdCBNWEw4NjJYWF9GV19XUklURV9USU1FT1VUX01TKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgbXhsODYyeHhfZmxhc2hfbm90aWZ5KHN0cnVjdCBkZXZsaW5rICpkbCwgY29uc3QgY2hhciAqc3RhdHVzLFxcbitcXHRcXHRcXHRcXHQgIHUzMiBkb25lLCB1MzIgdG90YWwpXFxuK3tcXG4rXFx0ZGV2bGlua19mbGFzaF91cGRhdGVfc3RhdHVzX25vdGlmeShkbCwgc3RhdHVzLCBOVUxMLCBkb25lLCB0b3RhbCk7XFxuK31cXG4rXFxuKy8qKlxcbisgKiBteGw4NjJ4eF9yZXNjdWVfbW9kZV9kZXRlY3QgLSBjaGVjayB3aGV0aGVyIHRoZSBzd2l0Y2ggc2l0cyBpbiBNQ1Vib290XFxuKyAqIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBkYXRhXFxuKyAqXFxuKyAqIE1DVWJvb3Qgc2lnbmFscyByZWFkaW5lc3MgZm9yIGEgZmlybXdhcmUgZG93bmxvYWQgd2l0aCB0aGUgU0IgUERJXFxuKyAqIHJlYWR5IG1hZ2ljOyBvbmx5IHRoZSBjbGF1c2UtMjIgU01ESU8gaW50ZXJmYWNlIHdvcmtzIGluIHRoaXMgc3RhdGUuXFxuKyAqXFxuKyAqIFJldHVybjogdHJ1ZSBpZiBNQ1Vib290IGlzIHdhaXRpbmcgZm9yIGEgZmlybXdhcmUgZG93bmxvYWQuXFxuKyAqL1xcbitib29sIG14bDg2Mnh4X3Jlc2N1ZV9tb2RlX2RldGVjdChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdilcXG4re1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cmV0ID0gbXhsODYyeHhfc21kaW9fcmVhZChwcml2LCBNWEw4NjJYWF9TQl9QRElfU1RBVCk7XFxuK1xcbitcXHRyZXR1cm4gcmV0ID09IE1YTDg2MlhYX1NCX1BESV9SRUFEWTtcXG4rfVxcbitcXG4rLyogZGV2aWNlX3JlcHJvYmUoKSAtXFx1MDAzZSByZW1vdmUoKSBmcmVlcyBwcml2IHdoaWxlIHRoZSB3b3JrIHJ1bnMsIHNvXFxuKyAqIHRoZSB3b3JrIHN0cnVjdCBjYW5ub3QgbGl2ZSBpbiBteGw4NjJ4eF9wcml2LlxcbisgKi9cXG4rc3RydWN0IG14bDg2Mnh4X3JlcHJvYmUge1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkZXY7XFxuK1xcdHN0cnVjdCBkZWxheWVkX3dvcmsgZHdvcms7XFxuK307XFxuK1xcbitzdGF0aWMgdm9pZCBteGw4NjJ4eF9yZXByb2JlX3dvcmtfZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbit7XFxuK1xcdHN0cnVjdCBteGw4NjJ4eF9yZXByb2JlICpyZXByb2JlID1cXG4rXFx0XFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBteGw4NjJ4eF9yZXByb2JlLCBkd29yay53b3JrKTtcXG4rXFxuK1xcdGlmIChkZXZpY2VfcmVwcm9iZShyZXByb2JlLVxcdTAwM2VkZXYpKVxcbitcXHRcXHRkZXZfZXJyKHJlcHJvYmUtXFx1MDAzZWRldiwgXFxcInJlcHJvYmUgZmFpbGVkXFxcXG5cXFwiKTtcXG4rXFx0cHV0X2RldmljZShyZXByb2JlLVxcdTAwM2VkZXYpO1xcbitcXHRrZnJlZShyZXByb2JlKTtcXG4rXFx0bW9kdWxlX3B1dChUSElTX01PRFVMRSk7XFxuK31cXG4rXFxuKy8qIE1DVWJvb3QgZmlybXdhcmUgaW1hZ2UgaGVhZGVyICovXFxuK3N0cnVjdCBteGw4NjJ4eF9md19oZHIge1xcbitcXHRfX2xlMzIgaW1hZ2VfdHlwZTtcXG4rXFx0X19sZTMyIGltYWdlX3NpemVfMTtcXG4rXFx0X19sZTMyIGltYWdlX2NoZWNrc3VtXzE7XFxuK1xcdF9fbGUzMiBpbWFnZV9zaXplXzI7XFxuK1xcdF9fbGUzMiBpbWFnZV9jaGVja3N1bV8yO1xcbit9IF9fcGFja2VkO1xcbitcXG4rc3RhdGljIGludCBteGw4NjJ4eF9mbGFzaF9maXJtd2FyZShzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdixcXG4rXFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyxcXG4rXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRldmxpbmsgKmRsKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBteGw4NjJ4eF9md19oZHIgKmhkcjtcXG4rXFx0dTMyIHdvcmRfaWR4ID0gMCwgZGF0YV93cml0dGVuID0gMCwgaWR4ID0gMDtcXG4rXFx0dW5zaWduZWQgbG9uZyBuZXh0X25vdGlmeSA9IDA7XFxuK1xcdGNvbnN0IHU4ICpwYXlsb2FkO1xcbitcXHR1MzIgcGF5bG9hZF9zaXplO1xcbitcXHR1MTYgd29yZCwgZmRhdGE7XFxuK1xcdGludCByZXQsIGk7XFxuK1xcdHUzMiBjcmM7XFxuK1xcbitcXHRpZiAoZnctXFx1MDAzZXNpemUgXFx1MDAzYyBNWEw4NjJYWF9GV19IRFJfU0laRSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbitcXHRoZHIgPSAoY29uc3Qgc3RydWN0IG14bDg2Mnh4X2Z3X2hkciAqKWZ3LVxcdTAwM2VkYXRhO1xcbitcXHRwYXlsb2FkID0gZnctXFx1MDAzZWRhdGEgKyBNWEw4NjJYWF9GV19IRFJfU0laRTtcXG4rXFx0cGF5bG9hZF9zaXplID0gbGUzMl90b19jcHUoaGRyLVxcdTAwM2VpbWFnZV9zaXplXzEpICtcXG4rXFx0XFx0ICAgICAgIGxlMzJfdG9fY3B1KGhkci1cXHUwMDNlaW1hZ2Vfc2l6ZV8yKTtcXG4rXFxuK1xcdGlmIChwYXlsb2FkX3NpemUgXFx1MDAzZSBmdy1cXHUwMDNlc2l6ZSAtIE1YTDg2MlhYX0ZXX0hEUl9TSVpFKSB7XFxuK1xcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFxcImZsYXNoOiBmaXJtd2FyZSBmaWxlIHRvbyBzbWFsbCBmb3IgZGVjbGFyZWQgc2l6ZVxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbitcXHRpZiAobGUzMl90b19jcHUoaGRyLVxcdTAwM2VpbWFnZV9zaXplXzEpKSB7XFxuK1xcdFxcdGNyYyA9IH5jcmMzMl9sZSh+MFUsIHBheWxvYWQsXFxuK1xcdFxcdFxcdFxcdGxlMzJfdG9fY3B1KGhkci1cXHUwMDNlaW1hZ2Vfc2l6ZV8xKSk7XFxuK1xcdFxcdGlmIChjcmMgIT0gbGUzMl90b19jcHUoaGRyLVxcdTAwM2VpbWFnZV9jaGVja3N1bV8xKSkge1xcbitcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwcml2LVxcdTAwM2VtZGlvZGV2LVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdFxcdFxcXCJmbGFzaDogaW1hZ2UgMSBDUkMgbWlzbWF0Y2ggKGdvdCAlMDh4LCBleHBlY3RlZCAlMDh4KVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0Y3JjLCBsZTMyX3RvX2NwdShoZHItXFx1MDAzZWltYWdlX2NoZWNrc3VtXzEpKTtcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0aWYgKGxlMzJfdG9fY3B1KGhkci1cXHUwMDNlaW1hZ2Vfc2l6ZV8yKSkge1xcbitcXHRcXHRjcmMgPSB+Y3JjMzJfbGUofjBVLFxcbitcXHRcXHRcXHRcXHRwYXlsb2FkICsgbGUzMl90b19jcHUoaGRyLVxcdTAwM2VpbWFnZV9zaXplXzEpLFxcbitcXHRcXHRcXHRcXHRsZTMyX3RvX2NwdShoZHItXFx1MDAzZWltYWdlX3NpemVfMikpO1xcbitcXHRcXHRpZiAoY3JjICE9IGxlMzJfdG9fY3B1KGhkci1cXHUwMDNlaW1hZ2VfY2hlY2tzdW1fMikpIHtcXG4rXFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cHJpdi1cXHUwMDNlbWRpb2Rldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXHRcXFwiZmxhc2g6IGltYWdlIDIgQ1JDIG1pc21hdGNoIChnb3QgJTA4eCwgZXhwZWN0ZWQgJTA4eClcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdGNyYywgbGUzMl90b19jcHUoaGRyLVxcdTAwM2VpbWFnZV9jaGVja3N1bV8yKSk7XFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuK1xcdC8qIFN0ZXAgMTogcmVib290IHRoZSBmaXJtd2FyZSBpbnRvIE1DVWJvb3QgcmVzY3VlIG1vZGUgKi9cXG4rXFx0aWYgKCFwcml2LVxcdTAwM2VyZXNjdWVfbW9kZSkge1xcbitcXHRcXHRyZXQgPSBteGw4NjJ4eF9hcGlfd3JhcChwcml2LCBTWVNfTUlTQ19GV19VUERBVEUsIE5VTEwsIDAsXFxuK1xcdFxcdFxcdFxcdFxcdGZhbHNlLCBmYWxzZSk7XFxuK1xcdFxcdGlmIChyZXQpIHtcXG4rXFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cHJpdi1cXHUwMDNlbWRpb2Rldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXHRcXFwiZmxhc2g6IEZXX1VQREFURSBjb21tYW5kIGZhaWxlZDogJXBlXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRFUlJfUFRSKHJldCkpO1xcbitcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuK1xcdC8qIEZhaWx1cmVzIGZyb20gaGVyZSBvbiBtdXN0IGdvIHRocm91Z2ggZW5kX21hZ2ljIHNvIE1DVWJvb3RcXG4rXFx0ICogcmVib290cyBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yZXZlci5cXG4rXFx0ICovXFxuK1xcbitcXHQvKiBTdGVwIDI6IHdhaXQgZm9yIGJvb3Rsb2FkZXIgcmVhZHkgKi9cXG4rXFx0bXhsODYyeHhfZmxhc2hfbm90aWZ5KGRsLCBcXFwiV2FpdGluZyBmb3IgYm9vdGxvYWRlclxcXCIsIDAsIDApO1xcbitcXHRteGw4NjJ4eF9zYl9wZGlfcmVzZXQocHJpdik7XFxuK1xcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQocHJpdiwgTVhMODYyWFhfU0JfUERJX1JFQURZLFxcbitcXHRcXHRcXHRcXHRcXHRNWEw4NjJYWF9GV19SRUFEWV9USU1FT1VUX01TKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKFxcdTAwMjZwcml2LVxcdTAwM2VtZGlvZGV2LVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdFxcXCJmbGFzaDogYm9vdGxvYWRlciBub3QgcmVhZHk6ICVwZVxcXFxuXFxcIiwgRVJSX1BUUihyZXQpKTtcXG4rXFx0XFx0Z290byBlbmRfbWFnaWM7XFxuK1xcdH1cXG4rXFxuK1xcdC8qIFN0ZXAgMzogc3RhcnQgaGFuZHNoYWtlICovXFxuK1xcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9TVEFULFxcbitcXHRcXHRcXHQgICAgIE1YTDg2MlhYX1NCX1BESV9TVEFSVCk7XFxuK1xcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVJUICsgMSxcXG4rXFx0XFx0XFx0XFx0XFx0TVhMODYyWFhfRldfQUNLX1RJTUVPVVRfTVMpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFxcImZsYXNoOiBzdGFydCBoYW5kc2hha2UgZmFpbGVkOiAlcGVcXFxcblxcXCIsIEVSUl9QVFIocmV0KSk7XFxuK1xcdFxcdGdvdG8gZW5kX21hZ2ljO1xcbitcXHR9XFxuK1xcbitcXHQvKiBTdGVwIDQ6IHRyYW5zZmVyIGltYWdlIGhlYWRlciAqL1xcbitcXHRteGw4NjJ4eF9mbGFzaF9ub3RpZnkoZGwsIFxcXCJFcmFzaW5nIGZsYXNoXFxcIiwgMCwgMCk7XFxuK1xcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9DVFJMLFxcbitcXHRcXHRcXHQgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1dSKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1YTDg2MlhYX0ZXX0hEUl9TSVpFIC8gMjsgaSsrKSB7XFxuK1xcdFxcdHdvcmQgPSBmdy1cXHUwMDNlZGF0YVtpICogMl0gfFxcbitcXHRcXHQgICAgICAgKCh1MTYpZnctXFx1MDAzZWRhdGFbaSAqIDIgKyAxXSBcXHUwMDNjXFx1MDAzYyA4KTtcXG4rXFx0XFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0RBVEEsIHdvcmQpO1xcbitcXHR9XFxuK1xcdG14bDg2Mnh4X3NiX3BkaV9yZXNldChwcml2KTtcXG4rXFxuK1xcdC8qIHRoZSBieXRlIGNvdW50IGluIFNUQVQgdHJpZ2dlcnMgdGhlIGVyYXNlICovXFxuK1xcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9TVEFULFxcbitcXHRcXHRcXHQgICAgIE1YTDg2MlhYX0ZXX0hEUl9TSVpFKTtcXG4rXFxuK1xcdC8qIEFDSyBpcyBieXRlIGNvdW50ICsgMSAqL1xcbitcXHRyZXQgPSBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIE1YTDg2MlhYX0ZXX0hEUl9TSVpFICsgMSxcXG4rXFx0XFx0XFx0XFx0XFx0TVhMODYyWFhfRldfQUNLX1RJTUVPVVRfTVMpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFxcImZsYXNoOiBoZWFkZXIgQUNLIGZhaWxlZDogJXBlXFxcXG5cXFwiLCBFUlJfUFRSKHJldCkpO1xcbitcXHRcXHRnb3RvIGVuZF9tYWdpYztcXG4rXFx0fVxcbitcXG4rXFx0LyogU3RlcCA1OiB3YWl0IGZvciBlcmFzZSB0byBjb21wbGV0ZSAqL1xcbitcXHRyZXQgPSBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIDAsXFxuK1xcdFxcdFxcdFxcdFxcdE1YTDg2MlhYX0ZXX0VSQVNFX1RJTUVPVVRfTVMpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFxcImZsYXNoOiBlcmFzZSB0aW1lb3V0OiAlcGVcXFxcblxcXCIsIEVSUl9QVFIocmV0KSk7XFxuK1xcdFxcdGdvdG8gZW5kX21hZ2ljO1xcbitcXHR9XFxuK1xcbitcXHQvKiBTdGVwIDY6IHRyYW5zZmVyIHBheWxvYWQgKi9cXG4rXFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsXFxuK1xcdFxcdFxcdCAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfV1IpO1xcbitcXG4rXFx0d2hpbGUgKGlkeCBcXHUwMDNjIHBheWxvYWRfc2l6ZSkge1xcbitcXHRcXHRpZiAoaWR4ICsgMSBcXHUwMDNjIHBheWxvYWRfc2l6ZSkge1xcbitcXHRcXHRcXHRmZGF0YSA9IHBheWxvYWRbaWR4XSB8XFxuK1xcdFxcdFxcdFxcdCgodTE2KXBheWxvYWRbaWR4ICsgMV0gXFx1MDAzY1xcdTAwM2MgOCk7XFxuK1xcdFxcdFxcdGlkeCArPSAyO1xcbitcXHRcXHRcXHRkYXRhX3dyaXR0ZW4gKz0gMjtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0ZmRhdGEgPSBwYXlsb2FkW2lkeF07XFxuK1xcdFxcdFxcdGlkeCsrO1xcbitcXHRcXHRcXHRkYXRhX3dyaXR0ZW4rKztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0RBVEEsIGZkYXRhKTtcXG4rXFx0XFx0d29yZF9pZHgrKztcXG4rXFxuK1xcdFxcdGlmIChpZHggXFx1MDAzZT0gcGF5bG9hZF9zaXplKSB7XFxuK1xcdFxcdFxcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9mbHVzaF9zbGljZShwcml2LCBkYXRhX3dyaXR0ZW4pO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0LyogSGFsZi1iYW5rIGJvdW5kYXJ5OiBzd2l0Y2ggdG8gU0IxIGFkZHJlc3MgKi9cXG4rXFx0XFx0aWYgKHdvcmRfaWR4ID09IE1YTDg2MlhYX0ZXX0JBTktfSEFMRikge1xcbitcXHRcXHRcXHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfQ1RSTCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICBNWEw4NjJYWF9TQl9QRElfQ1RSTF9SU1QpO1xcbitcXHRcXHRcXHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfQUREUixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICBNWEw4NjJYWF9GV19TQjFfQUREUik7XFxuK1xcdFxcdFxcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9DVFJMLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1dSKTtcXG4rXFx0XFx0fSBlbHNlIGlmICh3b3JkX2lkeCBcXHUwMDNlPSBNWEw4NjJYWF9GV19CQU5LX1NMSUNFKSB7XFxuK1xcdFxcdFxcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9mbHVzaF9zbGljZShwcml2LCBkYXRhX3dyaXR0ZW4pO1xcbitcXHRcXHRcXHRpZiAocmV0KSB7XFxuK1xcdFxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFx0XFx0XFxcImZsYXNoOiB3cml0ZSB0aW1lb3V0IGF0ICV1LyV1OiAlcGVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdGlkeCwgcGF5bG9hZF9zaXplLCBFUlJfUFRSKHJldCkpO1xcbitcXHRcXHRcXHRcXHRnb3RvIGVuZF9tYWdpYztcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHR3b3JkX2lkeCA9IDA7XFxuK1xcdFxcdFxcdGRhdGFfd3JpdHRlbiA9IDA7XFxuK1xcdFxcdFxcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9DVFJMLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1dSKTtcXG4rXFxuK1xcdFxcdFxcdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIG5leHRfbm90aWZ5KSkge1xcbitcXHRcXHRcXHRcXHRteGw4NjJ4eF9mbGFzaF9ub3RpZnkoZGwsIFxcXCJGbGFzaGluZ1xcXCIsIGlkeCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgcGF5bG9hZF9zaXplKTtcXG4rXFx0XFx0XFx0XFx0bmV4dF9ub3RpZnkgPSBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyg1MDApO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKFxcdTAwMjZwcml2LVxcdTAwM2VtZGlvZGV2LVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdFxcXCJmbGFzaDogZmluYWwgd3JpdGUgdGltZW91dDogJXBlXFxcXG5cXFwiLCBFUlJfUFRSKHJldCkpO1xcbitcXHRcXHRnb3RvIGVuZF9tYWdpYztcXG4rXFx0fVxcbitcXG4rXFx0bXhsODYyeHhfZmxhc2hfbm90aWZ5KGRsLCBcXFwiRmxhc2hpbmdcXFwiLCBwYXlsb2FkX3NpemUsIHBheWxvYWRfc2l6ZSk7XFxuK1xcbitlbmRfbWFnaWM6XFxuK1xcdC8qIHJlYm9vdCBNQ1Vib290IGV2ZW4gYWZ0ZXIgYSBmYWlsZWQgdHJhbnNmZXIgKi9cXG4rXFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVQsXFxuK1xcdFxcdFxcdCAgICAgTVhMODYyWFhfU0JfUERJX0VORCk7XFxuK1xcdG1zbGVlcChNWEw4NjJYWF9GV19SRUJPT1RfREVMQVlfTVMpO1xcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4raW50IG14bDg2Mnh4X2RldmxpbmtfaW5mb19nZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbitcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2bGlua19pbmZvX3JlcSAqcmVxLFxcbitcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuK3tcXG4rXFx0c3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG4rXFx0Y29uc3QgY2hhciAqY29tcGF0aWJsZTtcXG4rXFx0Y2hhciB2ZXJfc3RyWzMyXTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdGlmICghb2ZfcHJvcGVydHlfcmVhZF9zdHJpbmdfaW5kZXgoZHMtXFx1MDAzZWRldi1cXHUwMDNlb2Zfbm9kZSwgXFxcImNvbXBhdGlibGVcXFwiLCAwLFxcbitcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2Y29tcGF0aWJsZSkpIHtcXG4rXFx0XFx0cmV0ID0gZGV2bGlua19pbmZvX3ZlcnNpb25fZml4ZWRfcHV0KHJlcSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBERVZMSU5LX0lORk9fVkVSU0lPTl9HRU5FUklDX0FTSUNfSUQsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgY29tcGF0aWJsZSk7XFxuK1xcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChwcml2LVxcdTAwM2VyZXNjdWVfbW9kZSlcXG4rXFx0XFx0cmV0dXJuIGRldmxpbmtfaW5mb192ZXJzaW9uX3J1bm5pbmdfcHV0KHJlcSwgXFxcImZ3XFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcIm1jdWJvb3QtcmVzY3VlXFxcIik7XFxuK1xcbitcXHRzbnByaW50Zih2ZXJfc3RyLCBzaXplb2YodmVyX3N0ciksIFxcXCIldS4ldS4ldVxcXCIsXFxuK1xcdFxcdCBwcml2LVxcdTAwM2Vmd192ZXJzaW9uLm1ham9yLCBwcml2LVxcdTAwM2Vmd192ZXJzaW9uLm1pbm9yLFxcbitcXHRcXHQgcHJpdi1cXHUwMDNlZndfdmVyc2lvbi5yZXZpc2lvbik7XFxuK1xcbitcXHRyZXR1cm4gZGV2bGlua19pbmZvX3ZlcnNpb25fcnVubmluZ19wdXQocmVxLCBcXFwiZndcXFwiLCB2ZXJfc3RyKTtcXG4rfVxcbitcXG4raW50IG14bDg2Mnh4X2RldmxpbmtfZmxhc2hfdXBkYXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZGV2bGlua19mbGFzaF91cGRhdGVfcGFyYW1zICpwYXJhbXMsXFxuK1xcdFxcdFxcdFxcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbit7XFxuK1xcdHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuK1xcdHN0cnVjdCBteGw4NjJ4eF9zeXNfZndfaW1hZ2VfdmVyc2lvbiB2ZXIgPSB7fTtcXG4rXFx0c3RydWN0IG14bDg2Mnh4X3JlcHJvYmUgKnJlcHJvYmU7XFxuK1xcdHN0cnVjdCBkc2FfcG9ydCAqZHA7XFxuK1xcdGludCByZXQsIGk7XFxuK1xcbitcXHRpZiAocGFyYW1zLVxcdTAwM2Vjb21wb25lbnQpIHtcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcImNvbXBvbmVudCBpcyBub3Qgc3VwcG9ydGVkXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKHByaXYtXFx1MDAzZXJlc2N1ZV9tb2RlKVxcbitcXHRcXHRkZXZfaW5mbyhkcy1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHQgXFxcImZsYXNoOiByZWNvdmVyaW5nIHN3aXRjaCBmcm9tIE1DVWJvb3QgcmVzY3VlIG1vZGVcXFxcblxcXCIpO1xcbitcXHRlbHNlXFxuK1xcdFxcdGRldl9pbmZvKGRzLVxcdTAwM2VkZXYsIFxcXCJmbGFzaDogcnVubmluZyBmaXJtd2FyZSAldS4ldS4ldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0IHByaXYtXFx1MDAzZWZ3X3ZlcnNpb24ubWFqb3IsIHByaXYtXFx1MDAzZWZ3X3ZlcnNpb24ubWlub3IsXFxuK1xcdFxcdFxcdCBwcml2LVxcdTAwM2Vmd192ZXJzaW9uLnJldmlzaW9uKTtcXG4rXFxuK1xcdC8qIENsb3NlIHBvcnRzIHdoaWxlIHRoZSBmaXJtd2FyZSBpcyBzdGlsbCBhbGl2ZSBzbyB0aGUgRFNBXFxuK1xcdCAqIGNvcmUncyBNREIvRkRCIHRyYWNraW5nIGlzIGRyYWluZWQsIGFuZCBkZXRhY2ggdXNlciBwb3J0c1xcbitcXHQgKiBzbyB1c2Vyc3BhY2UgY2Fubm90IHJlb3BlbiB0aGVtIGR1cmluZyB0aGUgZmxhc2guIFRoZVxcbitcXHQgKiBjb25kdWl0IGJlbG9uZ3MgdG8gdGhlIE1BQyBkcml2ZXIgYW5kIGlzIG9ubHkgY2xvc2VkLlxcbitcXHQgKi9cXG4rXFx0cnRubF9sb2NrKCk7XFxuK1xcdGRzYV9zd2l0Y2hfZm9yX2VhY2hfdXNlcl9wb3J0KGRwLCBkcykge1xcbitcXHRcXHRpZiAoZHAtXFx1MDAzZXVzZXIpIHtcXG4rXFx0XFx0XFx0ZGV2X2Nsb3NlKGRwLVxcdTAwM2V1c2VyKTtcXG4rXFx0XFx0XFx0bmV0aWZfZGV2aWNlX2RldGFjaChkcC1cXHUwMDNldXNlcik7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXHRkc2Ffc3dpdGNoX2Zvcl9lYWNoX2NwdV9wb3J0KGRwLCBkcylcXG4rXFx0XFx0ZGV2X2Nsb3NlKGRwLVxcdTAwM2Vjb25kdWl0KTtcXG4rXFx0cnRubF91bmxvY2soKTtcXG4rXFxuK1xcdHByaXYtXFx1MDAzZWJsb2NrX2hvc3QgPSB0cnVlO1xcbitcXG4rXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZwcml2LVxcdTAwM2VzdGF0c193b3JrKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRzLVxcdTAwM2VudW1fcG9ydHM7IGkrKylcXG4rXFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2cHJpdi1cXHUwMDNlcG9ydHNbaV0uaG9zdF9mbG9vZF93b3JrKTtcXG4rXFxuK1xcdHJldCA9IG14bDg2Mnh4X2ZsYXNoX2Zpcm13YXJlKHByaXYsIHBhcmFtcy1cXHUwMDNlZncsIGRzLVxcdTAwM2VkZXZsaW5rKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcImZpcm13YXJlIHRyYW5zZmVyIGZhaWxlZFxcXCIpO1xcbitcXG4rXFx0aWYgKCFyZXQpIHtcXG4rXFx0XFx0LyogbGlmdCB0aGUgYmxvY2sgdG8gcXVlcnkgdGhlIG5ldyBmaXJtd2FyZSB2ZXJzaW9uICovXFxuK1xcdFxcdHByaXYtXFx1MDAzZWJsb2NrX2hvc3QgPSBmYWxzZTtcXG4rXFx0XFx0cHJpdi1cXHUwMDNlcmVzY3VlX21vZGUgPSBmYWxzZTtcXG4rXFx0XFx0bWVtc2V0KFxcdTAwMjZ2ZXIsIDAsIHNpemVvZih2ZXIpKTtcXG4rXFx0XFx0aWYgKCFNWEw4NjJYWF9BUElfUkVBRF9RVUlFVChwcml2LCBTWVNfTUlTQ19GV19WRVJTSU9OLCB2ZXIpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICB2ZXIuaXZfbWFqb3IpXFxuK1xcdFxcdFxcdGRldl9pbmZvKGRzLVxcdTAwM2VkZXYsIFxcXCJmbGFzaDogbmV3IGZpcm13YXJlICV1LiV1LiV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgdmVyLml2X21ham9yLCB2ZXIuaXZfbWlub3IsXFxuK1xcdFxcdFxcdFxcdCBsZTE2X3RvX2NwdSh2ZXIuaXZfcmV2aXNpb24pKTtcXG4rXFx0fVxcbitcXG4rXFx0cHJpdi1cXHUwMDNlc2tpcF90ZWFyZG93biA9IHRydWU7XFxuK1xcbitcXHRyZXByb2JlID0ga3phbGxvY19vYmooKnJlcHJvYmUpO1xcbitcXHRpZiAoIXJlcHJvYmUpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRpZiAoIXRyeV9tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKSkge1xcbitcXHRcXHRrZnJlZShyZXByb2JlKTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0cmVwcm9iZS1cXHUwMDNlZGV2ID0gZ2V0X2RldmljZShkcy1cXHUwMDNlZGV2KTtcXG4rXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNnJlcHJvYmUtXFx1MDAzZWR3b3JrLCBteGw4NjJ4eF9yZXByb2JlX3dvcmtfZm4pO1xcbitcXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXFx1MDAyNnJlcHJvYmUtXFx1MDAzZWR3b3JrLCBtc2Vjc190b19qaWZmaWVzKDUwMCkpO1xcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtZncuaCBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1mdy5oXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNTdjMjAwMGNmZWU1MTlcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWZ3LmhcXG5AQCAtMCwwICsxLDE4IEBAXFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyICovXFxuK1xcbisjaWZuZGVmIF9fTVhMODYyWFhfRldfSFxcbisjZGVmaW5lIF9fTVhMODYyWFhfRldfSFxcbitcXG4rI2luY2x1ZGUgXFx1MDAzY25ldC9kc2EuaFxcdTAwM2VcXG4rXFxuK3N0cnVjdCBteGw4NjJ4eF9wcml2O1xcbitcXG4rYm9vbCBteGw4NjJ4eF9yZXNjdWVfbW9kZV9kZXRlY3Qoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYpO1xcbitpbnQgbXhsODYyeHhfZGV2bGlua19pbmZvX2dldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBkZXZsaW5rX2luZm9fcmVxICpyZXEsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuK2ludCBteGw4NjJ4eF9kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuK1xcdFxcdFxcdFxcdCAgc3RydWN0IGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLFxcbitcXHRcXHRcXHRcXHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuK1xcbisjZW5kaWYgLyogX19NWEw4NjJYWF9GV19IICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmMgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5jXFxuaW5kZXggNGFjZDIxNmY3Y2MwMDkuLmQ2YzBjZGZhMGU2ODkyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5jXFxuQEAgLTE1LDYgKzE1LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2RzYS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwibXhsODYyeHguaFxcXCJcXG4rI2luY2x1ZGUgXFxcIm14bDg2Mnh4LWNtZC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwibXhsODYyeHgtaG9zdC5oXFxcIlxcbiBcXG4gI2RlZmluZSBDVFJMX0JVU1lfTUFTS1xcdFxcdFxcdEJJVCgxNSlcXG5AQCAtMzM2LDYgKzMzNywxNSBAQCBpbnQgbXhsODYyeHhfYXBpX3dyYXAoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUxNiBjbWQsIHZvaWQgKl9kYXRhLFxcbiBcXHRpbnQgcmV0LCBjbWRfcmV0O1xcbiBcXHR1MTYgbWF4LCBjcmMsIGk7XFxuIFxcbitcXHRpZiAocHJpdi1cXHUwMDNlc2tpcF90ZWFyZG93bilcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRpZiAocHJpdi1cXHUwMDNlcmVzY3VlX21vZGUpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWJsb2NrX2hvc3QgXFx1MDAyNlxcdTAwMjYgY21kICE9IFNZU19NSVNDX0ZXX1VQREFURSlcXG4rXFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4rXFxuIFxcdGRldl9kYmcoXFx1MDAyNnByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWRldiwgXFxcIkNNRCAlMDR4IERBVEEgJSpwaFxcXFxuXFxcIiwgY21kLCBzaXplLCBkYXRhKTtcXG4gXFxuIFxcdG11dGV4X2xvY2tfbmVzdGVkKFxcdTAwMjZwcml2LVxcdTAwM2VtZGlvZGV2LVxcdTAwM2VidXMtXFx1MDAzZW1kaW9fbG9jaywgTURJT19NVVRFWF9ORVNURUQpO1xcbkBAIC00OTUsNiArNTA1LDQxIEBAIGludCBteGw4NjJ4eF9yZXNldChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4rI2RlZmluZSBNWEw4NjJYWF9TTURJT19BRERSX1JFR1xcdFxcdDB4MWZcXG4rI2RlZmluZSBNWEw4NjJYWF9TTURJT19QQUdFX01BU0tcXHQweGZmZjBcXG4rI2RlZmluZSBNWEw4NjJYWF9TTURJT19PRkZfTUFTS1xcdFxcdDB4MDAwZlxcbitcXG4raW50IG14bDg2Mnh4X3NtZGlvX3JlYWQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUzMiBhZGRyKVxcbit7XFxuK1xcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VtZGlvZGV2LVxcdTAwM2VidXM7XFxuK1xcdGludCBwaHkgPSBwcml2LVxcdTAwM2VtZGlvZGV2LVxcdTAwM2VhZGRyO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2YnVzLVxcdTAwM2VtZGlvX2xvY2spO1xcbitcXHRyZXQgPSBfX21kaW9idXNfd3JpdGUoYnVzLCBwaHksIE1YTDg2MlhYX1NNRElPX0FERFJfUkVHLFxcbitcXHRcXHRcXHQgICAgICBhZGRyIFxcdTAwMjYgTVhMODYyWFhfU01ESU9fUEFHRV9NQVNLKTtcXG4rXFx0aWYgKHJldCBcXHUwMDNlPSAwKVxcbitcXHRcXHRyZXQgPSBfX21kaW9idXNfcmVhZChidXMsIHBoeSwgYWRkciBcXHUwMDI2IE1YTDg2MlhYX1NNRElPX09GRl9NQVNLKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZidXMtXFx1MDAzZW1kaW9fbG9jayk7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK2ludCBteGw4NjJ4eF9zbWRpb193cml0ZShzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTMyIGFkZHIsIHUxNiB2YWwpXFxuK3tcXG4rXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWJ1cztcXG4rXFx0aW50IHBoeSA9IHByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWFkZHI7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZidXMtXFx1MDAzZW1kaW9fbG9jayk7XFxuK1xcdHJldCA9IF9fbWRpb2J1c193cml0ZShidXMsIHBoeSwgTVhMODYyWFhfU01ESU9fQUREUl9SRUcsXFxuK1xcdFxcdFxcdCAgICAgIGFkZHIgXFx1MDAyNiBNWEw4NjJYWF9TTURJT19QQUdFX01BU0spO1xcbitcXHRpZiAocmV0IFxcdTAwM2U9IDApXFxuK1xcdFxcdHJldCA9IF9fbWRpb2J1c193cml0ZShidXMsIHBoeSwgYWRkciBcXHUwMDI2IE1YTDg2MlhYX1NNRElPX09GRl9NQVNLLFxcbitcXHRcXHRcXHRcXHQgICAgICB2YWwpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmJ1cy1cXHUwMDNlbWRpb19sb2NrKTtcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4gdm9pZCBteGw4NjJ4eF9ob3N0X2luaXQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYpXFxuIHtcXG4gXFx0SU5JVF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2VjcmNfZXJyX3dvcmssIG14bDg2Mnh4X2NyY19lcnJfd29ya19mbik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmggYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5oXFxuaW5kZXggNjZkNmFlMTk4YWZmNDUuLjRlMDU0YzZlNGMwZTQwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmhcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5oXFxuQEAgLTE4LDUgKzE4LDcgQEAgaW50IG14bDg2Mnh4X2FwaV93cmFwKHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2LCB1MTYgY21kLCB2b2lkICpkYXRhLCB1MTYgc2l6ZSxcXG4gXFx0bXhsODYyeHhfYXBpX3dyYXAoZGV2LCBjbWQsIFxcdTAwMjYoZGF0YSksIHNpemVvZigoZGF0YSkpLCB0cnVlLCB0cnVlKVxcbiBcXG4gaW50IG14bDg2Mnh4X3Jlc2V0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KTtcXG4raW50IG14bDg2Mnh4X3NtZGlvX3JlYWQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUzMiBhZGRyKTtcXG4raW50IG14bDg2Mnh4X3NtZGlvX3dyaXRlKHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2LCB1MzIgYWRkciwgdTE2IHZhbCk7XFxuIFxcbiAjZW5kaWYgLyogX19NWEw4NjJYWF9IT1NUX0ggKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1waHlsaW5rLmNcXG5pbmRleCBiNjg5NjUyYWE5YjkyMC4uYTViNjk0MGI1NTJlOWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1waHlsaW5rLmNcXG5AQCAtNDA2LDYgKzQwNiw4IEBAIG14bDg2Mnh4X3BoeWxpbmtfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuIFxcbiBcXHRzd2l0Y2ggKHBvcnQpIHtcXG4gXFx0Y2FzZSA5IC4uLiAxNjpcXG4rXFx0XFx0aWYgKHByaXYtXFx1MDAzZXJlc2N1ZV9tb2RlKVxcbitcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0XFx0aWYgKCFNWEw4NjJYWF9GV19WRVJfTUlOKHByaXYsIDEsIDAsIDg0KSkge1xcbiBcXHRcXHRcXHRkZXZfd2Fybl9vbmNlKGRwLVxcdTAwM2Vkcy1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgICBcXFwiU2VyRGVzIFBDUyB1bnN1cHBvcnRlZCBvbiBvbGQgZmlybXdhcmUuXFxcXG5cXFwiKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguY1xcbmluZGV4IDQ1ZDIzN2IzYTQwZjEwLi5iNzM4NWNmYTU0NzQ1OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jXFxuQEAgLTIxLDYgKzIxLDcgQEBcXG4gI2luY2x1ZGUgXFxcIm14bDg2Mnh4LmhcXFwiXFxuICNpbmNsdWRlIFxcXCJteGw4NjJ4eC1hcGkuaFxcXCJcXG4gI2luY2x1ZGUgXFxcIm14bDg2Mnh4LWNtZC5oXFxcIlxcbisjaW5jbHVkZSBcXFwibXhsODYyeHgtZncuaFxcXCJcXG4gI2luY2x1ZGUgXFxcIm14bDg2Mnh4LWhvc3QuaFxcXCJcXG4gI2luY2x1ZGUgXFxcIm14bDg2Mnh4LXBoeWxpbmsuaFxcXCJcXG4gXFxuQEAgLTYyOCw5ICs2MjksMjIgQEAgc3RhdGljIGludCBteGw4NjJ4eF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRyZXQgPSBteGw4NjJ4eF93YWl0X3JlYWR5KGRzKTtcXG4tXFx0aWYgKHJldClcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0cHJpdi1cXHUwMDNlcmVzY3VlX21vZGUgPSBteGw4NjJ4eF9yZXNjdWVfbW9kZV9kZXRlY3QocHJpdik7XFxuK1xcdGlmICghcHJpdi1cXHUwMDNlcmVzY3VlX21vZGUpIHtcXG4rXFx0XFx0cmV0ID0gbXhsODYyeHhfd2FpdF9yZWFkeShkcyk7XFxuK1xcdFxcdGlmIChyZXQpIHtcXG4rXFx0XFx0XFx0LyogdGhlIHJlc2V0IG1heSBvbmx5IG5vdyBoYXZlIHRyaWdnZXJlZCByZXNjdWUgbW9kZSAqL1xcbitcXHRcXHRcXHRwcml2LVxcdTAwM2VyZXNjdWVfbW9kZSA9IG14bDg2Mnh4X3Jlc2N1ZV9tb2RlX2RldGVjdChwcml2KTtcXG4rXFx0XFx0XFx0aWYgKCFwcml2LVxcdTAwM2VyZXNjdWVfbW9kZSlcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbitcXHRpZiAocHJpdi1cXHUwMDNlcmVzY3VlX21vZGUpIHtcXG4rXFx0XFx0ZGV2X3dhcm4oZHMtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0IFxcXCJzd2l0Y2ggc3R1Y2sgaW4gTUNVYm9vdCByZXNjdWUgbW9kZSwgdXNlIGRldmxpbmsgdG8gZmxhc2ggbmV3IGZpcm13YXJlXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdH1cXG4gXFxuIFxcdG11dGV4X2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZXNlcmRlc19sb2NrKTtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUocHJpdi1cXHUwMDNlc2VyZGVzX3BvcnRzKTsgaSsrKVxcbkBAIC03MTUsMTEgKzcyOSwyMSBAQCBzdGF0aWMgaW50IG14bDg2Mnh4X3BvcnRfc3RhdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgYm9vbCBlbmFibGUpXFxuIHN0YXRpYyBpbnQgbXhsODYyeHhfcG9ydF9lbmFibGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4gXFx0XFx0XFx0XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4ge1xcbitcXHRzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiA9IGRzLVxcdTAwM2Vwcml2O1xcbitcXG4rXFx0aWYgKHByaXYtXFx1MDAzZXJlc2N1ZV9tb2RlKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuIFxcdHJldHVybiBteGw4NjJ4eF9wb3J0X3N0YXRlKGRzLCBwb3J0LCB0cnVlKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgbXhsODYyeHhfcG9ydF9kaXNhYmxlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXFxuIHtcXG4rXFx0c3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG4rXFxuK1xcdGlmIChwcml2LVxcdTAwM2VyZXNjdWVfbW9kZSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0aWYgKG14bDg2Mnh4X3BvcnRfc3RhdGUoZHMsIHBvcnQsIGZhbHNlKSlcXG4gXFx0XFx0ZGV2X2Vycihkcy1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGRpc2FibGUgcG9ydCAlZFxcXFxuXFxcIiwgcG9ydCk7XFxuIH1cXG5AQCAtMTMzNyw2ICsxMzYxLDEyIEBAIHN0YXRpYyBpbnQgbXhsODYyeHhfcG9ydF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbiBcXHRib29sIGlzX2NwdV9wb3J0ID0gZHNhX3BvcnRfaXNfY3B1KGRwKTtcXG4gXFx0aW50IHJldDtcXG4gXFxuK1xcdC8qIERTQSByZWluaXRzIGZhaWxlZCB1c2VyIHBvcnRzIGFzIHVudXNlZDsgc2hhcmVkIHBvcnRzIG11c3RcXG4rXFx0ICogc3VjY2VlZCBmb3IgdGhlIHRyZWUgdG8gcmVnaXN0ZXIuXFxuK1xcdCAqL1xcbitcXHRpZiAocHJpdi1cXHUwMDNlcmVzY3VlX21vZGUpXFxuK1xcdFxcdHJldHVybiBkc2FfcG9ydF9pc191c2VyKGRwKSA/IC1FTk9ERVYgOiAwO1xcbitcXG4gXFx0cmV0ID0gbXhsODYyeHhfcG9ydF9zdGF0ZShkcywgcG9ydCwgZmFsc2UpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbkBAIC0xNjI4LDYgKzE2NTgsOSBAQCBzdGF0aWMgdm9pZCBteGw4NjJ4eF9wb3J0X3N0cF9zdGF0ZV9zZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4gXFx0c3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG4gXFx0aW50IHJldDtcXG4gXFxuK1xcdGlmIChwcml2LVxcdTAwM2VyZXNjdWVfbW9kZSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0c3dpdGNoIChzdGF0ZSkge1xcbiBcXHRjYXNlIEJSX1NUQVRFX0RJU0FCTEVEOlxcbiBcXHRcXHRwYXJhbS5wb3J0X3N0YXRlID0gY3B1X3RvX2xlMzIoTVhMODYyWFhfU1RQX1BPUlRfU1RBVEVfRElTQUJMRSk7XFxuQEAgLTIwODYsNiArMjExOSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgbXhsODYyeHhfc3dpdGNoX29wcyA9IHtcXG4gXFx0LmdldF9wYXVzZV9zdGF0cyA9IG14bDg2Mnh4X2dldF9wYXVzZV9zdGF0cyxcXG4gXFx0LmdldF9ybW9uX3N0YXRzID0gbXhsODYyeHhfZ2V0X3Jtb25fc3RhdHMsXFxuIFxcdC5nZXRfc3RhdHM2NCA9IG14bDg2Mnh4X2dldF9zdGF0czY0LFxcbitcXHQuZGV2bGlua19pbmZvX2dldCA9IG14bDg2Mnh4X2RldmxpbmtfaW5mb19nZXQsXFxuK1xcdC5kZXZsaW5rX2ZsYXNoX3VwZGF0ZSA9IG14bDg2Mnh4X2RldmxpbmtfZmxhc2hfdXBkYXRlLFxcbiB9O1xcbiBcXG4gc3RhdGljIGludCBteGw4NjJ4eF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5oIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmhcXG5pbmRleCA0MzJhNWYzZjJlMDhlNi4uNWQyMTI5NjU2MWUzYWEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmhcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguaFxcbkBAIC0zMTksNiArMzE5LDEyIEBAIHN0cnVjdCBteGw4NjJ4eF9md192ZXJzaW9uIHtcXG4gICogQGV2bGFuX2luZ3Jlc3Nfc2l6ZTogcGVyLXBvcnQgaW5ncmVzcyBFeHRlbmRlZCBWTEFOIGJsb2NrIHNpemVcXG4gICogQGV2bGFuX2VncmVzc19zaXplOiAgcGVyLXBvcnQgZWdyZXNzIEV4dGVuZGVkIFZMQU4gYmxvY2sgc2l6ZVxcbiAgKiBAdmZfYmxvY2tfc2l6ZTogICAgICBwZXItcG9ydCBWTEFOIEZpbHRlciBibG9jayBzaXplXFxuKyAqIEBibG9ja19ob3N0OiAgICAgICAgIHJlamVjdCBmaXJtd2FyZSBBUEkgY29tbWFuZHMgKGV4Y2VwdCBGV19VUERBVEUpXFxuKyAqICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyBhIGZpcm13YXJlIGZsYXNoXFxuKyAqIEBza2lwX3RlYXJkb3duOiAgICAgIGRpc2NhcmQgZmlybXdhcmUgQVBJIGNvbW1hbmRzIGR1cmluZyB0aGUgdGVhcmRvd25cXG4rICogICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkIGJ5IHRoZSBwb3N0LWZsYXNoIHJlcHJvYmVcXG4rICogQHJlc2N1ZV9tb2RlOiAgICAgICAgc3dpdGNoIGlzIHN0dWNrIGluIE1DVWJvb3Q7IGZpcm13YXJlIEFQSSBjb21tYW5kc1xcbisgKiAgICAgICAgICAgICAgICAgICAgICBmYWlsIGZhc3QsIG9ubHkgY2xhdXNlLTIyIFNNRElPIHdvcmtzXFxuICAqIEBzdGF0c193b3JrOiAgICAgICAgIHBlcmlvZGljIHdvcmsgaXRlbSB0aGF0IHBvbGxzIFJNT04gaGFyZHdhcmUgY291bnRlcnNcXG4gICogICAgICAgICAgICAgICAgICAgICAgYW5kIGFjY3VtdWxhdGVzIHRoZW0gaW50byA2NC1iaXQgcGVyLXBvcnQgc3RhdHNcXG4gICovXFxuQEAgLTMzNyw2ICszNDMsOSBAQCBzdHJ1Y3QgbXhsODYyeHhfcHJpdiB7XFxuIFxcdHUxNiBldmxhbl9pbmdyZXNzX3NpemU7XFxuIFxcdHUxNiBldmxhbl9lZ3Jlc3Nfc2l6ZTtcXG4gXFx0dTE2IHZmX2Jsb2NrX3NpemU7XFxuK1xcdGJvb2wgYmxvY2tfaG9zdDtcXG4rXFx0Ym9vbCBza2lwX3RlYXJkb3duO1xcbitcXHRib29sIHJlc2N1ZV9tb2RlO1xcbiBcXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHN0YXRzX3dvcms7XFxuIH07XFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9kc2EuaCBiL2luY2x1ZGUvbmV0L2RzYS5oXFxuaW5kZXggOGMxNmVmMjNjYzEwMmEuLmM5ZTE5MzQ4ZGU2MTkzIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2RzYS5oXFxuKysrIGIvaW5jbHVkZS9uZXQvZHNhLmhcXG5AQCAtMTE3MCw2ICsxMTcwLDkgQEAgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIHtcXG4gXFx0aW50XFx0KCpkZXZsaW5rX2luZm9fZ2V0KShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuIFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZGV2bGlua19pbmZvX3JlcSAqcmVxLFxcbiBcXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG4rXFx0aW50XFx0KCpkZXZsaW5rX2ZsYXNoX3VwZGF0ZSkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbitcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZGV2bGlua19mbGFzaF91cGRhdGVfcGFyYW1zICpwYXJhbXMsXFxuK1xcdFxcdFxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuIFxcdGludFxcdCgqZGV2bGlua19zYl9wb29sX2dldCkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IHNiX2luZGV4LCB1MTYgcG9vbF9pbmRleCxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBkZXZsaW5rX3NiX3Bvb2xfaW5mbyAqcG9vbF9pbmZvKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS9kZXZsaW5rLmMgYi9uZXQvZHNhL2RldmxpbmsuY1xcbmluZGV4IGVkMzQyZjM0NTY5MmJiLi4yNTMxMWE4N2NiYzU2ZCAxMDA2NDRcXG4tLS0gYS9uZXQvZHNhL2RldmxpbmsuY1xcbisrKyBiL25ldC9kc2EvZGV2bGluay5jXFxuQEAgLTIwLDYgKzIwLDE4IEBAIHN0YXRpYyBpbnQgZHNhX2RldmxpbmtfaW5mb19nZXQoc3RydWN0IGRldmxpbmsgKmRsLFxcbiBcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgZHNhX2RldmxpbmtfZmxhc2hfdXBkYXRlKHN0cnVjdCBkZXZsaW5rICpkbCxcXG4rXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBkZXZsaW5rX2ZsYXNoX3VwZGF0ZV9wYXJhbXMgKnBhcmFtcyxcXG4rXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4re1xcbitcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkc2FfZGV2bGlua190b19kcyhkbCk7XFxuK1xcbitcXHRpZiAoIWRzLVxcdTAwM2VvcHMtXFx1MDAzZWRldmxpbmtfZmxhc2hfdXBkYXRlKVxcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcbitcXHRyZXR1cm4gZHMtXFx1MDAzZW9wcy1cXHUwMDNlZGV2bGlua19mbGFzaF91cGRhdGUoZHMsIHBhcmFtcywgZXh0YWNrKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBkc2FfZGV2bGlua19zYl9wb29sX2dldChzdHJ1Y3QgZGV2bGluayAqZGwsXFxuIFxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBzYl9pbmRleCwgdTE2IHBvb2xfaW5kZXgsXFxuIFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkZXZsaW5rX3NiX3Bvb2xfaW5mbyAqcG9vbF9pbmZvKVxcbkBAIC0xNjksNiArMTgxLDcgQEAgZHNhX2Rldmxpbmtfc2Jfb2NjX3RjX3BvcnRfYmluZF9nZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqZGxwLFxcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX29wcyBkc2FfZGV2bGlua19vcHMgPSB7XFxuIFxcdC5pbmZvX2dldFxcdFxcdFxcdD0gZHNhX2RldmxpbmtfaW5mb19nZXQsXFxuK1xcdC5mbGFzaF91cGRhdGVcXHRcXHRcXHQ9IGRzYV9kZXZsaW5rX2ZsYXNoX3VwZGF0ZSxcXG4gXFx0LnNiX3Bvb2xfZ2V0XFx0XFx0XFx0PSBkc2FfZGV2bGlua19zYl9wb29sX2dldCxcXG4gXFx0LnNiX3Bvb2xfc2V0XFx0XFx0XFx0PSBkc2FfZGV2bGlua19zYl9wb29sX3NldCxcXG4gXFx0LnNiX3BvcnRfcG9vbF9nZXRcXHRcXHQ9IGRzYV9kZXZsaW5rX3NiX3BvcnRfcG9vbF9nZXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA0OjU3OjIxLjU4NjIxMTcwN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjUwMTA0MTUwNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgZHJpdmVyIGZvciBwaHlzaWNhbCBoYXJkd2FyZSAoTWF4TGluZWFyIE14TDg2Mnh4IHN3aXRjaCkgd2hpY2ggaXMgYW4gTURJTyBkZXZpY2UuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGJhMmYwMmQ1YzMzN2QwOGMzNmYxYjcyMzgzZDk4ZGE1MDgxMTI4NGVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAwNDo1NzoxOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9NYWtlZmlsZVxuaW5kZXggYTdiZTBlNjY2OWRmYTUuLmJjY2FjMGQwZjcwM2Y2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L01ha2VmaWxlXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvTWFrZWZpbGVcbkBAIC0xLDMgKzEsMyBAQFxuICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiBvYmotJChDT05GSUdfTkVUX0RTQV9NWEw4NjIpICs9IG14bDg2Mnh4X2RzYS5vXG4tbXhsODYyeHhfZHNhLXkgOj0gbXhsODYyeHgubyBteGw4NjJ4eC1ob3N0Lm8gbXhsODYyeHgtcGh5bGluay5vXG4rbXhsODYyeHhfZHNhLXkgOj0gbXhsODYyeHgubyBteGw4NjJ4eC1ob3N0Lm8gbXhsODYyeHgtcGh5bGluay5vIG14bDg2Mnh4LWZ3Lm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtY21kLmggYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtY21kLmhcbmluZGV4IGM4N2E5NTVjMTNjNDhlLi5lMmFhMjkzNGU5ZTE2MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1jbWQuaFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWNtZC5oXG5AQCAtNzAsNiArNzAsNyBAQFxuICNkZWZpbmUgSU5UX0dQSFlfUkVBRFx0XHRcdChHUFlfR1BZMlhYX01BR0lDICsgMHgxKVxuICNkZWZpbmUgSU5UX0dQSFlfV1JJVEVcdFx0XHQoR1BZX0dQWTJYWF9NQUdJQyArIDB4MilcbiBcbisjZGVmaW5lIFNZU19NSVNDX0ZXX1VQREFURVx0XHQoU1lTX01JU0NfTUFHSUMgKyAweDEpXG4gI2RlZmluZSBTWVNfTUlTQ19GV19WRVJTSU9OXHRcdChTWVNfTUlTQ19NQUdJQyArIDB4MilcbiBcbiAjZGVmaW5lIE1YTDg2MlhYX1hQQ1NfUENTX0NPTkZJR1x0KE1YTDg2MlhYX1hQQ1NfTUFHSUMgKyAweDEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWZ3LmMgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtZncuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi44OGQ1M2JlYTMzNmZkNVxuLS0tIC9kZXYvbnVsbFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWZ3LmNcbkBAIC0wLDAgKzEsNDM5IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcbisvKlxuKyAqIEZpcm13YXJlIGZsYXNoIGFuZCBkZXZsaW5rIHN1cHBvcnQgZm9yIE1heExpbmVhciBNeEw4NjJ4eFxuKyAqXG4rICogQ29weXJpZ2h0IChDKSAyMDI1IERhbmllbCBHb2xsZSBcdTAwM2NkYW5pZWxAbWFrcm90b3BpYS5vcmdcdTAwM2VcbisgKi9cbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9jcmMzMi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9ydG5ldGxpbmsuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY25ldC9kc2EuaFx1MDAzZVxuK1xuKyNpbmNsdWRlIFwibXhsODYyeHguaFwiXG4rI2luY2x1ZGUgXCJteGw4NjJ4eC1hcGkuaFwiXG4rI2luY2x1ZGUgXCJteGw4NjJ4eC1jbWQuaFwiXG4rI2luY2x1ZGUgXCJteGw4NjJ4eC1mdy5oXCJcbisjaW5jbHVkZSBcIm14bDg2Mnh4LWhvc3QuaFwiXG4rXG4rLyogU0IgUERJIHJlZ2lzdGVycyAoY2xhdXNlLTIyIFNNRElPIGFkZHJlc3Mgc3BhY2UpICovXG4rI2RlZmluZSBNWEw4NjJYWF9TQl9QRElfQ1RSTFx0XHQweGUxMDBcbisjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9BRERSXHRcdDB4ZTEwMVxuKyNkZWZpbmUgTVhMODYyWFhfU0JfUERJX0RBVEFcdFx0MHhlMTAyXG4rI2RlZmluZSBNWEw4NjJYWF9TQl9QRElfU1RBVFx0XHQweGUxMDNcbitcbisvKiBTQiBQREkgQ1RSTCBtb2RlcyAqL1xuKyNkZWZpbmUgTVhMODYyWFhfU0JfUERJX0NUUkxfUlNUXHQweDAwXG4rI2RlZmluZSBNWEw4NjJYWF9TQl9QRElfQ1RSTF9XUlx0MHgwMlxuK1xuKy8qIFNCIFBESSBoYW5kc2hha2UgbWFnaWMgKi9cbisjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9SRUFEWVx0XHQweGM1NWNcbisjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9TVEFSVFx0XHQweGY0OGZcbisjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9FTkRcdFx0MHgzY2MzXG4rXG4rLyogRmlybXdhcmUgdHJhbnNmZXIgZ2VvbWV0cnkgKi9cbisjZGVmaW5lIE1YTDg2MlhYX0ZXX0hEUl9TSVpFXHRcdDIwXG4rI2RlZmluZSBNWEw4NjJYWF9GV19CQU5LX0hBTEZcdFx0MTYzODRcdC8qIHdvcmRzIHBlciBoYWxmLWJhbmsgKi9cbisjZGVmaW5lIE1YTDg2MlhYX0ZXX0JBTktfU0xJQ0VcdFx0MzI3NjBcdC8qIHdvcmRzIHBlciBmdWxsIHNsaWNlICovXG4rI2RlZmluZSBNWEw4NjJYWF9GV19TQjFfQUREUlx0XHQweDc4MDBcdC8qIFNCMSB3b3JkIGFkZHJlc3MgKi9cbitcbisvKiBUaW1lb3V0cyAoZ2VuZXJvdXMgdXBwZXIgYm91bmRzKSAqL1xuKyNkZWZpbmUgTVhMODYyWFhfRldfUkVBRFlfVElNRU9VVF9NU1x0MzAwMDBcbisjZGVmaW5lIE1YTDg2MlhYX0ZXX0FDS19USU1FT1VUX01TXHQ1MDAwXG4rI2RlZmluZSBNWEw4NjJYWF9GV19FUkFTRV9USU1FT1VUX01TXHQzMDAwMDBcbisjZGVmaW5lIE1YTDg2MlhYX0ZXX1dSSVRFX1RJTUVPVVRfTVNcdDEyMDAwMFxuKyNkZWZpbmUgTVhMODYyWFhfRldfUkVCT09UX0RFTEFZX01TXHQ1MDAwXG4rXG4rc3RhdGljIHZvaWQgbXhsODYyeHhfc2JfcGRpX3Jlc2V0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KVxuK3tcbitcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9DVFJMLFxuK1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfUlNUKTtcbitcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9BRERSLFxuK1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfUlNUKTtcbitcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9EQVRBLFxuK1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfUlNUKTtcbit9XG4rXG4rc3RhdGljIGludCBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2LCB1MTYgZXhwZWN0ZWQsXG4rXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dF9tcylcbit7XG4rXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyh0aW1lb3V0X21zKTtcbitcdGludCByZXQ7XG4rXG4rXHRkbyB7XG4rXHRcdHJldCA9IG14bDg2Mnh4X3NtZGlvX3JlYWQocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVQpO1xuK1x0XHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRcdHJldHVybiByZXQ7XG4rXHRcdGlmICgodTE2KXJldCA9PSBleHBlY3RlZClcbitcdFx0XHRyZXR1cm4gMDtcbitcdFx0dXNsZWVwX3JhbmdlKDEwMDAwLCAxMTAwMCk7XG4rXHR9IHdoaWxlICh0aW1lX2JlZm9yZShqaWZmaWVzLCB0aW1lb3V0KSk7XG4rXG4rXHRyZXR1cm4gLUVUSU1FRE9VVDtcbit9XG4rXG4rc3RhdGljIGludCBteGw4NjJ4eF9zYl9wZGlfZmx1c2hfc2xpY2Uoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsXG4rXHRcdFx0XHQgICAgICAgdTMyIGRhdGFfd3JpdHRlbilcbit7XG4rXHRteGw4NjJ4eF9zYl9wZGlfcmVzZXQocHJpdik7XG4rXHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfU1RBVCwgZGF0YV93cml0dGVuKTtcbitcbitcdHJldHVybiBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIDAsXG4rXHRcdFx0XHRcdCBNWEw4NjJYWF9GV19XUklURV9USU1FT1VUX01TKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgbXhsODYyeHhfZmxhc2hfbm90aWZ5KHN0cnVjdCBkZXZsaW5rICpkbCwgY29uc3QgY2hhciAqc3RhdHVzLFxuK1x0XHRcdFx0ICB1MzIgZG9uZSwgdTMyIHRvdGFsKVxuK3tcbitcdGRldmxpbmtfZmxhc2hfdXBkYXRlX3N0YXR1c19ub3RpZnkoZGwsIHN0YXR1cywgTlVMTCwgZG9uZSwgdG90YWwpO1xuK31cbitcbisvKipcbisgKiBteGw4NjJ4eF9yZXNjdWVfbW9kZV9kZXRlY3QgLSBjaGVjayB3aGV0aGVyIHRoZSBzd2l0Y2ggc2l0cyBpbiBNQ1Vib290XG4rICogQHByaXY6IGRyaXZlciBwcml2YXRlIGRhdGFcbisgKlxuKyAqIE1DVWJvb3Qgc2lnbmFscyByZWFkaW5lc3MgZm9yIGEgZmlybXdhcmUgZG93bmxvYWQgd2l0aCB0aGUgU0IgUERJXG4rICogcmVhZHkgbWFnaWM7IG9ubHkgdGhlIGNsYXVzZS0yMiBTTURJTyBpbnRlcmZhY2Ugd29ya3MgaW4gdGhpcyBzdGF0ZS5cbisgKlxuKyAqIFJldHVybjogdHJ1ZSBpZiBNQ1Vib290IGlzIHdhaXRpbmcgZm9yIGEgZmlybXdhcmUgZG93bmxvYWQuXG4rICovXG4rYm9vbCBteGw4NjJ4eF9yZXNjdWVfbW9kZV9kZXRlY3Qoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYpXG4re1xuK1x0aW50IHJldDtcbitcbitcdHJldCA9IG14bDg2Mnh4X3NtZGlvX3JlYWQocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVQpO1xuK1xuK1x0cmV0dXJuIHJldCA9PSBNWEw4NjJYWF9TQl9QRElfUkVBRFk7XG4rfVxuK1xuKy8qIGRldmljZV9yZXByb2JlKCkgLVx1MDAzZSByZW1vdmUoKSBmcmVlcyBwcml2IHdoaWxlIHRoZSB3b3JrIHJ1bnMsIHNvXG4rICogdGhlIHdvcmsgc3RydWN0IGNhbm5vdCBsaXZlIGluIG14bDg2Mnh4X3ByaXYuXG4rICovXG4rc3RydWN0IG14bDg2Mnh4X3JlcHJvYmUge1xuK1x0c3RydWN0IGRldmljZSAqZGV2O1xuK1x0c3RydWN0IGRlbGF5ZWRfd29yayBkd29yaztcbit9O1xuK1xuK3N0YXRpYyB2b2lkIG14bDg2Mnh4X3JlcHJvYmVfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4re1xuK1x0c3RydWN0IG14bDg2Mnh4X3JlcHJvYmUgKnJlcHJvYmUgPVxuK1x0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IG14bDg2Mnh4X3JlcHJvYmUsIGR3b3JrLndvcmspO1xuK1xuK1x0aWYgKGRldmljZV9yZXByb2JlKHJlcHJvYmUtXHUwMDNlZGV2KSlcbitcdFx0ZGV2X2VycihyZXByb2JlLVx1MDAzZWRldiwgXCJyZXByb2JlIGZhaWxlZFxcblwiKTtcbitcdHB1dF9kZXZpY2UocmVwcm9iZS1cdTAwM2VkZXYpO1xuK1x0a2ZyZWUocmVwcm9iZSk7XG4rXHRtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTtcbit9XG4rXG4rLyogTUNVYm9vdCBmaXJtd2FyZSBpbWFnZSBoZWFkZXIgKi9cbitzdHJ1Y3QgbXhsODYyeHhfZndfaGRyIHtcbitcdF9fbGUzMiBpbWFnZV90eXBlO1xuK1x0X19sZTMyIGltYWdlX3NpemVfMTtcbitcdF9fbGUzMiBpbWFnZV9jaGVja3N1bV8xO1xuK1x0X19sZTMyIGltYWdlX3NpemVfMjtcbitcdF9fbGUzMiBpbWFnZV9jaGVja3N1bV8yO1xuK30gX19wYWNrZWQ7XG4rXG4rc3RhdGljIGludCBteGw4NjJ4eF9mbGFzaF9maXJtd2FyZShzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdixcbitcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncsXG4rXHRcdFx0XHQgICBzdHJ1Y3QgZGV2bGluayAqZGwpXG4re1xuK1x0Y29uc3Qgc3RydWN0IG14bDg2Mnh4X2Z3X2hkciAqaGRyO1xuK1x0dTMyIHdvcmRfaWR4ID0gMCwgZGF0YV93cml0dGVuID0gMCwgaWR4ID0gMDtcbitcdHVuc2lnbmVkIGxvbmcgbmV4dF9ub3RpZnkgPSAwO1xuK1x0Y29uc3QgdTggKnBheWxvYWQ7XG4rXHR1MzIgcGF5bG9hZF9zaXplO1xuK1x0dTE2IHdvcmQsIGZkYXRhO1xuK1x0aW50IHJldCwgaTtcbitcdHUzMiBjcmM7XG4rXG4rXHRpZiAoZnctXHUwMDNlc2l6ZSBcdTAwM2MgTVhMODYyWFhfRldfSERSX1NJWkUpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0aGRyID0gKGNvbnN0IHN0cnVjdCBteGw4NjJ4eF9md19oZHIgKilmdy1cdTAwM2VkYXRhO1xuK1x0cGF5bG9hZCA9IGZ3LVx1MDAzZWRhdGEgKyBNWEw4NjJYWF9GV19IRFJfU0laRTtcbitcdHBheWxvYWRfc2l6ZSA9IGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9zaXplXzEpICtcbitcdFx0ICAgICAgIGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9zaXplXzIpO1xuK1xuK1x0aWYgKHBheWxvYWRfc2l6ZSBcdTAwM2UgZnctXHUwMDNlc2l6ZSAtIE1YTDg2MlhYX0ZXX0hEUl9TSVpFKSB7XG4rXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWRldixcbitcdFx0XHRcImZsYXNoOiBmaXJtd2FyZSBmaWxlIHRvbyBzbWFsbCBmb3IgZGVjbGFyZWQgc2l6ZVxcblwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRpZiAobGUzMl90b19jcHUoaGRyLVx1MDAzZWltYWdlX3NpemVfMSkpIHtcbitcdFx0Y3JjID0gfmNyYzMyX2xlKH4wVSwgcGF5bG9hZCxcbitcdFx0XHRcdGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9zaXplXzEpKTtcbitcdFx0aWYgKGNyYyAhPSBsZTMyX3RvX2NwdShoZHItXHUwMDNlaW1hZ2VfY2hlY2tzdW1fMSkpIHtcbitcdFx0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VkZXYsXG4rXHRcdFx0XHRcImZsYXNoOiBpbWFnZSAxIENSQyBtaXNtYXRjaCAoZ290ICUwOHgsIGV4cGVjdGVkICUwOHgpXFxuXCIsXG4rXHRcdFx0XHRjcmMsIGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9jaGVja3N1bV8xKSk7XG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdH1cbitcdH1cbitcbitcdGlmIChsZTMyX3RvX2NwdShoZHItXHUwMDNlaW1hZ2Vfc2l6ZV8yKSkge1xuK1x0XHRjcmMgPSB+Y3JjMzJfbGUofjBVLFxuK1x0XHRcdFx0cGF5bG9hZCArIGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9zaXplXzEpLFxuK1x0XHRcdFx0bGUzMl90b19jcHUoaGRyLVx1MDAzZWltYWdlX3NpemVfMikpO1xuK1x0XHRpZiAoY3JjICE9IGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9jaGVja3N1bV8yKSkge1xuK1x0XHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWRldixcbitcdFx0XHRcdFwiZmxhc2g6IGltYWdlIDIgQ1JDIG1pc21hdGNoIChnb3QgJTA4eCwgZXhwZWN0ZWQgJTA4eClcXG5cIixcbitcdFx0XHRcdGNyYywgbGUzMl90b19jcHUoaGRyLVx1MDAzZWltYWdlX2NoZWNrc3VtXzIpKTtcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0fVxuK1x0fVxuK1xuK1x0LyogU3RlcCAxOiByZWJvb3QgdGhlIGZpcm13YXJlIGludG8gTUNVYm9vdCByZXNjdWUgbW9kZSAqL1xuK1x0aWYgKCFwcml2LVx1MDAzZXJlc2N1ZV9tb2RlKSB7XG4rXHRcdHJldCA9IG14bDg2Mnh4X2FwaV93cmFwKHByaXYsIFNZU19NSVNDX0ZXX1VQREFURSwgTlVMTCwgMCxcbitcdFx0XHRcdFx0ZmFsc2UsIGZhbHNlKTtcbitcdFx0aWYgKHJldCkge1xuK1x0XHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWRldixcbitcdFx0XHRcdFwiZmxhc2g6IEZXX1VQREFURSBjb21tYW5kIGZhaWxlZDogJXBlXFxuXCIsXG4rXHRcdFx0XHRFUlJfUFRSKHJldCkpO1xuK1x0XHRcdHJldHVybiByZXQ7XG4rXHRcdH1cbitcdH1cbitcbitcdC8qIEZhaWx1cmVzIGZyb20gaGVyZSBvbiBtdXN0IGdvIHRocm91Z2ggZW5kX21hZ2ljIHNvIE1DVWJvb3RcbitcdCAqIHJlYm9vdHMgaW5zdGVhZCBvZiB3YWl0aW5nIGZvcmV2ZXIuXG4rXHQgKi9cbitcbitcdC8qIFN0ZXAgMjogd2FpdCBmb3IgYm9vdGxvYWRlciByZWFkeSAqL1xuK1x0bXhsODYyeHhfZmxhc2hfbm90aWZ5KGRsLCBcIldhaXRpbmcgZm9yIGJvb3Rsb2FkZXJcIiwgMCwgMCk7XG4rXHRteGw4NjJ4eF9zYl9wZGlfcmVzZXQocHJpdik7XG4rXHRyZXQgPSBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIE1YTDg2MlhYX1NCX1BESV9SRUFEWSxcbitcdFx0XHRcdFx0TVhMODYyWFhfRldfUkVBRFlfVElNRU9VVF9NUyk7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWRldixcbitcdFx0XHRcImZsYXNoOiBib290bG9hZGVyIG5vdCByZWFkeTogJXBlXFxuXCIsIEVSUl9QVFIocmV0KSk7XG4rXHRcdGdvdG8gZW5kX21hZ2ljO1xuK1x0fVxuK1xuK1x0LyogU3RlcCAzOiBzdGFydCBoYW5kc2hha2UgKi9cbitcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9TVEFULFxuK1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX1NUQVJUKTtcbitcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVJUICsgMSxcbitcdFx0XHRcdFx0TVhMODYyWFhfRldfQUNLX1RJTUVPVVRfTVMpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VkZXYsXG4rXHRcdFx0XCJmbGFzaDogc3RhcnQgaGFuZHNoYWtlIGZhaWxlZDogJXBlXFxuXCIsIEVSUl9QVFIocmV0KSk7XG4rXHRcdGdvdG8gZW5kX21hZ2ljO1xuK1x0fVxuK1xuK1x0LyogU3RlcCA0OiB0cmFuc2ZlciBpbWFnZSBoZWFkZXIgKi9cbitcdG14bDg2Mnh4X2ZsYXNoX25vdGlmeShkbCwgXCJFcmFzaW5nIGZsYXNoXCIsIDAsIDApO1xuK1x0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsXG4rXHRcdFx0ICAgICBNWEw4NjJYWF9TQl9QRElfQ1RSTF9XUik7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNWEw4NjJYWF9GV19IRFJfU0laRSAvIDI7IGkrKykge1xuK1x0XHR3b3JkID0gZnctXHUwMDNlZGF0YVtpICogMl0gfFxuK1x0XHQgICAgICAgKCh1MTYpZnctXHUwMDNlZGF0YVtpICogMiArIDFdIFx1MDAzY1x1MDAzYyA4KTtcbitcdFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0RBVEEsIHdvcmQpO1xuK1x0fVxuK1x0bXhsODYyeHhfc2JfcGRpX3Jlc2V0KHByaXYpO1xuK1xuK1x0LyogdGhlIGJ5dGUgY291bnQgaW4gU1RBVCB0cmlnZ2VycyB0aGUgZXJhc2UgKi9cbitcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9TVEFULFxuK1x0XHRcdCAgICAgTVhMODYyWFhfRldfSERSX1NJWkUpO1xuK1xuK1x0LyogQUNLIGlzIGJ5dGUgY291bnQgKyAxICovXG4rXHRyZXQgPSBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIE1YTDg2MlhYX0ZXX0hEUl9TSVpFICsgMSxcbitcdFx0XHRcdFx0TVhMODYyWFhfRldfQUNLX1RJTUVPVVRfTVMpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VkZXYsXG4rXHRcdFx0XCJmbGFzaDogaGVhZGVyIEFDSyBmYWlsZWQ6ICVwZVxcblwiLCBFUlJfUFRSKHJldCkpO1xuK1x0XHRnb3RvIGVuZF9tYWdpYztcbitcdH1cbitcbitcdC8qIFN0ZXAgNTogd2FpdCBmb3IgZXJhc2UgdG8gY29tcGxldGUgKi9cbitcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQocHJpdiwgMCxcbitcdFx0XHRcdFx0TVhMODYyWFhfRldfRVJBU0VfVElNRU9VVF9NUyk7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWRldixcbitcdFx0XHRcImZsYXNoOiBlcmFzZSB0aW1lb3V0OiAlcGVcXG5cIiwgRVJSX1BUUihyZXQpKTtcbitcdFx0Z290byBlbmRfbWFnaWM7XG4rXHR9XG4rXG4rXHQvKiBTdGVwIDY6IHRyYW5zZmVyIHBheWxvYWQgKi9cbitcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9DVFJMLFxuK1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfV1IpO1xuK1xuK1x0d2hpbGUgKGlkeCBcdTAwM2MgcGF5bG9hZF9zaXplKSB7XG4rXHRcdGlmIChpZHggKyAxIFx1MDAzYyBwYXlsb2FkX3NpemUpIHtcbitcdFx0XHRmZGF0YSA9IHBheWxvYWRbaWR4XSB8XG4rXHRcdFx0XHQoKHUxNilwYXlsb2FkW2lkeCArIDFdIFx1MDAzY1x1MDAzYyA4KTtcbitcdFx0XHRpZHggKz0gMjtcbitcdFx0XHRkYXRhX3dyaXR0ZW4gKz0gMjtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRmZGF0YSA9IHBheWxvYWRbaWR4XTtcbitcdFx0XHRpZHgrKztcbitcdFx0XHRkYXRhX3dyaXR0ZW4rKztcbitcdFx0fVxuK1xuK1x0XHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfREFUQSwgZmRhdGEpO1xuK1x0XHR3b3JkX2lkeCsrO1xuK1xuK1x0XHRpZiAoaWR4IFx1MDAzZT0gcGF5bG9hZF9zaXplKSB7XG4rXHRcdFx0cmV0ID0gbXhsODYyeHhfc2JfcGRpX2ZsdXNoX3NsaWNlKHByaXYsIGRhdGFfd3JpdHRlbik7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcbitcdFx0LyogSGFsZi1iYW5rIGJvdW5kYXJ5OiBzd2l0Y2ggdG8gU0IxIGFkZHJlc3MgKi9cbitcdFx0aWYgKHdvcmRfaWR4ID09IE1YTDg2MlhYX0ZXX0JBTktfSEFMRikge1xuK1x0XHRcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9DVFJMLFxuK1x0XHRcdFx0XHQgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1JTVCk7XG4rXHRcdFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0FERFIsXG4rXHRcdFx0XHRcdCAgICAgTVhMODYyWFhfRldfU0IxX0FERFIpO1xuK1x0XHRcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9DVFJMLFxuK1x0XHRcdFx0XHQgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1dSKTtcbitcdFx0fSBlbHNlIGlmICh3b3JkX2lkeCBcdTAwM2U9IE1YTDg2MlhYX0ZXX0JBTktfU0xJQ0UpIHtcbitcdFx0XHRyZXQgPSBteGw4NjJ4eF9zYl9wZGlfZmx1c2hfc2xpY2UocHJpdiwgZGF0YV93cml0dGVuKTtcbitcdFx0XHRpZiAocmV0KSB7XG4rXHRcdFx0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VkZXYsXG4rXHRcdFx0XHRcdFwiZmxhc2g6IHdyaXRlIHRpbWVvdXQgYXQgJXUvJXU6ICVwZVxcblwiLFxuK1x0XHRcdFx0XHRpZHgsIHBheWxvYWRfc2l6ZSwgRVJSX1BUUihyZXQpKTtcbitcdFx0XHRcdGdvdG8gZW5kX21hZ2ljO1xuK1x0XHRcdH1cbitcdFx0XHR3b3JkX2lkeCA9IDA7XG4rXHRcdFx0ZGF0YV93cml0dGVuID0gMDtcbitcdFx0XHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfQ1RSTCxcbitcdFx0XHRcdFx0ICAgICBNWEw4NjJYWF9TQl9QRElfQ1RSTF9XUik7XG4rXG4rXHRcdFx0aWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgbmV4dF9ub3RpZnkpKSB7XG4rXHRcdFx0XHRteGw4NjJ4eF9mbGFzaF9ub3RpZnkoZGwsIFwiRmxhc2hpbmdcIiwgaWR4LFxuK1x0XHRcdFx0XHRcdCAgICAgIHBheWxvYWRfc2l6ZSk7XG4rXHRcdFx0XHRuZXh0X25vdGlmeSA9IGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKDUwMCk7XG4rXHRcdFx0fVxuK1x0XHR9XG4rXHR9XG4rXG4rXHRpZiAocmV0KSB7XG4rXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWRldixcbitcdFx0XHRcImZsYXNoOiBmaW5hbCB3cml0ZSB0aW1lb3V0OiAlcGVcXG5cIiwgRVJSX1BUUihyZXQpKTtcbitcdFx0Z290byBlbmRfbWFnaWM7XG4rXHR9XG4rXG4rXHRteGw4NjJ4eF9mbGFzaF9ub3RpZnkoZGwsIFwiRmxhc2hpbmdcIiwgcGF5bG9hZF9zaXplLCBwYXlsb2FkX3NpemUpO1xuK1xuK2VuZF9tYWdpYzpcbitcdC8qIHJlYm9vdCBNQ1Vib290IGV2ZW4gYWZ0ZXIgYSBmYWlsZWQgdHJhbnNmZXIgKi9cbitcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9TVEFULFxuK1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0VORCk7XG4rXHRtc2xlZXAoTVhMODYyWFhfRldfUkVCT09UX0RFTEFZX01TKTtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK2ludCBteGw4NjJ4eF9kZXZsaW5rX2luZm9fZ2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbitcdFx0XHQgICAgICBzdHJ1Y3QgZGV2bGlua19pbmZvX3JlcSAqcmVxLFxuK1x0XHRcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbit7XG4rXHRzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG4rXHRjb25zdCBjaGFyICpjb21wYXRpYmxlO1xuK1x0Y2hhciB2ZXJfc3RyWzMyXTtcbitcdGludCByZXQ7XG4rXG4rXHRpZiAoIW9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nX2luZGV4KGRzLVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcImNvbXBhdGlibGVcIiwgMCxcbitcdFx0XHRcdFx0ICAgXHUwMDI2Y29tcGF0aWJsZSkpIHtcbitcdFx0cmV0ID0gZGV2bGlua19pbmZvX3ZlcnNpb25fZml4ZWRfcHV0KHJlcSxcbitcdFx0XHRcdFx0XHQgICAgIERFVkxJTktfSU5GT19WRVJTSU9OX0dFTkVSSUNfQVNJQ19JRCxcbitcdFx0XHRcdFx0XHQgICAgIGNvbXBhdGlibGUpO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRpZiAocHJpdi1cdTAwM2VyZXNjdWVfbW9kZSlcbitcdFx0cmV0dXJuIGRldmxpbmtfaW5mb192ZXJzaW9uX3J1bm5pbmdfcHV0KHJlcSwgXCJmd1wiLFxuK1x0XHRcdFx0XHRcdFx0XCJtY3Vib290LXJlc2N1ZVwiKTtcbitcbitcdHNucHJpbnRmKHZlcl9zdHIsIHNpemVvZih2ZXJfc3RyKSwgXCIldS4ldS4ldVwiLFxuK1x0XHQgcHJpdi1cdTAwM2Vmd192ZXJzaW9uLm1ham9yLCBwcml2LVx1MDAzZWZ3X3ZlcnNpb24ubWlub3IsXG4rXHRcdCBwcml2LVx1MDAzZWZ3X3ZlcnNpb24ucmV2aXNpb24pO1xuK1xuK1x0cmV0dXJuIGRldmxpbmtfaW5mb192ZXJzaW9uX3J1bm5pbmdfcHV0KHJlcSwgXCJmd1wiLCB2ZXJfc3RyKTtcbit9XG4rXG4raW50IG14bDg2Mnh4X2RldmxpbmtfZmxhc2hfdXBkYXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbitcdFx0XHRcdCAgc3RydWN0IGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLFxuK1x0XHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4re1xuK1x0c3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuK1x0c3RydWN0IG14bDg2Mnh4X3N5c19md19pbWFnZV92ZXJzaW9uIHZlciA9IHt9O1xuK1x0c3RydWN0IG14bDg2Mnh4X3JlcHJvYmUgKnJlcHJvYmU7XG4rXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwO1xuK1x0aW50IHJldCwgaTtcbitcbitcdGlmIChwYXJhbXMtXHUwMDNlY29tcG9uZW50KSB7XG4rXHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiY29tcG9uZW50IGlzIG5vdCBzdXBwb3J0ZWRcIik7XG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcdH1cbitcbitcdGlmIChwcml2LVx1MDAzZXJlc2N1ZV9tb2RlKVxuK1x0XHRkZXZfaW5mbyhkcy1cdTAwM2VkZXYsXG4rXHRcdFx0IFwiZmxhc2g6IHJlY292ZXJpbmcgc3dpdGNoIGZyb20gTUNVYm9vdCByZXNjdWUgbW9kZVxcblwiKTtcbitcdGVsc2VcbitcdFx0ZGV2X2luZm8oZHMtXHUwMDNlZGV2LCBcImZsYXNoOiBydW5uaW5nIGZpcm13YXJlICV1LiV1LiV1XFxuXCIsXG4rXHRcdFx0IHByaXYtXHUwMDNlZndfdmVyc2lvbi5tYWpvciwgcHJpdi1cdTAwM2Vmd192ZXJzaW9uLm1pbm9yLFxuK1x0XHRcdCBwcml2LVx1MDAzZWZ3X3ZlcnNpb24ucmV2aXNpb24pO1xuK1xuK1x0LyogQ2xvc2UgcG9ydHMgd2hpbGUgdGhlIGZpcm13YXJlIGlzIHN0aWxsIGFsaXZlIHNvIHRoZSBEU0FcbitcdCAqIGNvcmUncyBNREIvRkRCIHRyYWNraW5nIGlzIGRyYWluZWQsIGFuZCBkZXRhY2ggdXNlciBwb3J0c1xuK1x0ICogc28gdXNlcnNwYWNlIGNhbm5vdCByZW9wZW4gdGhlbSBkdXJpbmcgdGhlIGZsYXNoLiBUaGVcbitcdCAqIGNvbmR1aXQgYmVsb25ncyB0byB0aGUgTUFDIGRyaXZlciBhbmQgaXMgb25seSBjbG9zZWQuXG4rXHQgKi9cbitcdHJ0bmxfbG9jaygpO1xuK1x0ZHNhX3N3aXRjaF9mb3JfZWFjaF91c2VyX3BvcnQoZHAsIGRzKSB7XG4rXHRcdGlmIChkcC1cdTAwM2V1c2VyKSB7XG4rXHRcdFx0ZGV2X2Nsb3NlKGRwLVx1MDAzZXVzZXIpO1xuK1x0XHRcdG5ldGlmX2RldmljZV9kZXRhY2goZHAtXHUwMDNldXNlcik7XG4rXHRcdH1cbitcdH1cbitcdGRzYV9zd2l0Y2hfZm9yX2VhY2hfY3B1X3BvcnQoZHAsIGRzKVxuK1x0XHRkZXZfY2xvc2UoZHAtXHUwMDNlY29uZHVpdCk7XG4rXHRydG5sX3VubG9jaygpO1xuK1xuK1x0cHJpdi1cdTAwM2VibG9ja19ob3N0ID0gdHJ1ZTtcbitcbitcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZwcml2LVx1MDAzZXN0YXRzX3dvcmspO1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgZHMtXHUwMDNlbnVtX3BvcnRzOyBpKyspXG4rXHRcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2cHJpdi1cdTAwM2Vwb3J0c1tpXS5ob3N0X2Zsb29kX3dvcmspO1xuK1xuK1x0cmV0ID0gbXhsODYyeHhfZmxhc2hfZmlybXdhcmUocHJpdiwgcGFyYW1zLVx1MDAzZWZ3LCBkcy1cdTAwM2VkZXZsaW5rKTtcbitcdGlmIChyZXQpXG4rXHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiZmlybXdhcmUgdHJhbnNmZXIgZmFpbGVkXCIpO1xuK1xuK1x0aWYgKCFyZXQpIHtcbitcdFx0LyogbGlmdCB0aGUgYmxvY2sgdG8gcXVlcnkgdGhlIG5ldyBmaXJtd2FyZSB2ZXJzaW9uICovXG4rXHRcdHByaXYtXHUwMDNlYmxvY2tfaG9zdCA9IGZhbHNlO1xuK1x0XHRwcml2LVx1MDAzZXJlc2N1ZV9tb2RlID0gZmFsc2U7XG4rXHRcdG1lbXNldChcdTAwMjZ2ZXIsIDAsIHNpemVvZih2ZXIpKTtcbitcdFx0aWYgKCFNWEw4NjJYWF9BUElfUkVBRF9RVUlFVChwcml2LCBTWVNfTUlTQ19GV19WRVJTSU9OLCB2ZXIpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgdmVyLml2X21ham9yKVxuK1x0XHRcdGRldl9pbmZvKGRzLVx1MDAzZWRldiwgXCJmbGFzaDogbmV3IGZpcm13YXJlICV1LiV1LiV1XFxuXCIsXG4rXHRcdFx0XHQgdmVyLml2X21ham9yLCB2ZXIuaXZfbWlub3IsXG4rXHRcdFx0XHQgbGUxNl90b19jcHUodmVyLml2X3JldmlzaW9uKSk7XG4rXHR9XG4rXG4rXHRwcml2LVx1MDAzZXNraXBfdGVhcmRvd24gPSB0cnVlO1xuK1xuK1x0cmVwcm9iZSA9IGt6YWxsb2Nfb2JqKCpyZXByb2JlKTtcbitcdGlmICghcmVwcm9iZSlcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdGlmICghdHJ5X21vZHVsZV9nZXQoVEhJU19NT0RVTEUpKSB7XG4rXHRcdGtmcmVlKHJlcHJvYmUpO1xuK1x0XHRyZXR1cm4gcmV0O1xuK1x0fVxuK1xuK1x0cmVwcm9iZS1cdTAwM2VkZXYgPSBnZXRfZGV2aWNlKGRzLVx1MDAzZWRldik7XG4rXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZyZXByb2JlLVx1MDAzZWR3b3JrLCBteGw4NjJ4eF9yZXByb2JlX3dvcmtfZm4pO1xuK1x0c2NoZWR1bGVfZGVsYXllZF93b3JrKFx1MDAyNnJlcHJvYmUtXHUwMDNlZHdvcmssIG1zZWNzX3RvX2ppZmZpZXMoNTAwKSk7XG4rXG4rXHRyZXR1cm4gcmV0O1xuK31cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtZncuaCBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1mdy5oXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjU3YzIwMDBjZmVlNTE5XG4tLS0gL2Rldi9udWxsXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtZncuaFxuQEAgLTAsMCArMSwxOCBAQFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyICovXG4rXG4rI2lmbmRlZiBfX01YTDg2MlhYX0ZXX0hcbisjZGVmaW5lIF9fTVhMODYyWFhfRldfSFxuK1xuKyNpbmNsdWRlIFx1MDAzY25ldC9kc2EuaFx1MDAzZVxuK1xuK3N0cnVjdCBteGw4NjJ4eF9wcml2O1xuK1xuK2Jvb2wgbXhsODYyeHhfcmVzY3VlX21vZGVfZGV0ZWN0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KTtcbitpbnQgbXhsODYyeHhfZGV2bGlua19pbmZvX2dldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG4rXHRcdFx0ICAgICAgc3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJlcSxcbitcdFx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuK2ludCBteGw4NjJ4eF9kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG4rXHRcdFx0XHQgIHN0cnVjdCBkZXZsaW5rX2ZsYXNoX3VwZGF0ZV9wYXJhbXMgKnBhcmFtcyxcbitcdFx0XHRcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbitcbisjZW5kaWYgLyogX19NWEw4NjJYWF9GV19IICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWhvc3QuYyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmNcbmluZGV4IDRhY2QyMTZmN2NjMDA5Li5kNmMwY2RmYTBlNjg5MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmNcbkBAIC0xNSw2ICsxNSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHNhLmhcdTAwM2VcbiAjaW5jbHVkZSBcIm14bDg2Mnh4LmhcIlxuKyNpbmNsdWRlIFwibXhsODYyeHgtY21kLmhcIlxuICNpbmNsdWRlIFwibXhsODYyeHgtaG9zdC5oXCJcbiBcbiAjZGVmaW5lIENUUkxfQlVTWV9NQVNLXHRcdFx0QklUKDE1KVxuQEAgLTMzNiw2ICszMzcsMTUgQEAgaW50IG14bDg2Mnh4X2FwaV93cmFwKHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2LCB1MTYgY21kLCB2b2lkICpfZGF0YSxcbiBcdGludCByZXQsIGNtZF9yZXQ7XG4gXHR1MTYgbWF4LCBjcmMsIGk7XG4gXG4rXHRpZiAocHJpdi1cdTAwM2Vza2lwX3RlYXJkb3duKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdGlmIChwcml2LVx1MDAzZXJlc2N1ZV9tb2RlKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbitcdGlmIChwcml2LVx1MDAzZWJsb2NrX2hvc3QgXHUwMDI2XHUwMDI2IGNtZCAhPSBTWVNfTUlTQ19GV19VUERBVEUpXG4rXHRcdHJldHVybiAtRUJVU1k7XG4rXG4gXHRkZXZfZGJnKFx1MDAyNnByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VkZXYsIFwiQ01EICUwNHggREFUQSAlKnBoXFxuXCIsIGNtZCwgc2l6ZSwgZGF0YSk7XG4gXG4gXHRtdXRleF9sb2NrX25lc3RlZChcdTAwMjZwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlYnVzLVx1MDAzZW1kaW9fbG9jaywgTURJT19NVVRFWF9ORVNURUQpO1xuQEAgLTQ5NSw2ICs1MDUsNDEgQEAgaW50IG14bDg2Mnh4X3Jlc2V0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rI2RlZmluZSBNWEw4NjJYWF9TTURJT19BRERSX1JFR1x0XHQweDFmXG4rI2RlZmluZSBNWEw4NjJYWF9TTURJT19QQUdFX01BU0tcdDB4ZmZmMFxuKyNkZWZpbmUgTVhMODYyWFhfU01ESU9fT0ZGX01BU0tcdFx0MHgwMDBmXG4rXG4raW50IG14bDg2Mnh4X3NtZGlvX3JlYWQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUzMiBhZGRyKVxuK3tcbitcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlYnVzO1xuK1x0aW50IHBoeSA9IHByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VhZGRyO1xuK1x0aW50IHJldDtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2YnVzLVx1MDAzZW1kaW9fbG9jayk7XG4rXHRyZXQgPSBfX21kaW9idXNfd3JpdGUoYnVzLCBwaHksIE1YTDg2MlhYX1NNRElPX0FERFJfUkVHLFxuK1x0XHRcdCAgICAgIGFkZHIgXHUwMDI2IE1YTDg2MlhYX1NNRElPX1BBR0VfTUFTSyk7XG4rXHRpZiAocmV0IFx1MDAzZT0gMClcbitcdFx0cmV0ID0gX19tZGlvYnVzX3JlYWQoYnVzLCBwaHksIGFkZHIgXHUwMDI2IE1YTDg2MlhYX1NNRElPX09GRl9NQVNLKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZidXMtXHUwMDNlbWRpb19sb2NrKTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK2ludCBteGw4NjJ4eF9zbWRpb193cml0ZShzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTMyIGFkZHIsIHUxNiB2YWwpXG4re1xuK1x0c3RydWN0IG1paV9idXMgKmJ1cyA9IHByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VidXM7XG4rXHRpbnQgcGh5ID0gcHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWFkZHI7XG4rXHRpbnQgcmV0O1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZidXMtXHUwMDNlbWRpb19sb2NrKTtcbitcdHJldCA9IF9fbWRpb2J1c193cml0ZShidXMsIHBoeSwgTVhMODYyWFhfU01ESU9fQUREUl9SRUcsXG4rXHRcdFx0ICAgICAgYWRkciBcdTAwMjYgTVhMODYyWFhfU01ESU9fUEFHRV9NQVNLKTtcbitcdGlmIChyZXQgXHUwMDNlPSAwKVxuK1x0XHRyZXQgPSBfX21kaW9idXNfd3JpdGUoYnVzLCBwaHksIGFkZHIgXHUwMDI2IE1YTDg2MlhYX1NNRElPX09GRl9NQVNLLFxuK1x0XHRcdFx0ICAgICAgdmFsKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZidXMtXHUwMDNlbWRpb19sb2NrKTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuIHZvaWQgbXhsODYyeHhfaG9zdF9pbml0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KVxuIHtcbiBcdElOSVRfV09SSyhcdTAwMjZwcml2LVx1MDAzZWNyY19lcnJfd29yaywgbXhsODYyeHhfY3JjX2Vycl93b3JrX2ZuKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5oIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWhvc3QuaFxuaW5kZXggNjZkNmFlMTk4YWZmNDUuLjRlMDU0YzZlNGMwZTQwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWhvc3QuaFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWhvc3QuaFxuQEAgLTE4LDUgKzE4LDcgQEAgaW50IG14bDg2Mnh4X2FwaV93cmFwKHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2LCB1MTYgY21kLCB2b2lkICpkYXRhLCB1MTYgc2l6ZSxcbiBcdG14bDg2Mnh4X2FwaV93cmFwKGRldiwgY21kLCBcdTAwMjYoZGF0YSksIHNpemVvZigoZGF0YSkpLCB0cnVlLCB0cnVlKVxuIFxuIGludCBteGw4NjJ4eF9yZXNldChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdik7XG4raW50IG14bDg2Mnh4X3NtZGlvX3JlYWQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUzMiBhZGRyKTtcbitpbnQgbXhsODYyeHhfc21kaW9fd3JpdGUoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUzMiBhZGRyLCB1MTYgdmFsKTtcbiBcbiAjZW5kaWYgLyogX19NWEw4NjJYWF9IT1NUX0ggKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuY1xuaW5kZXggYjY4OTY1MmFhOWI5MjAuLmE1YjY5NDBiNTUyZTllIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuY1xuQEAgLTQwNiw2ICs0MDYsOCBAQCBteGw4NjJ4eF9waHlsaW5rX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuIFxuIFx0c3dpdGNoIChwb3J0KSB7XG4gXHRjYXNlIDkgLi4uIDE2OlxuK1x0XHRpZiAocHJpdi1cdTAwM2VyZXNjdWVfbW9kZSlcbitcdFx0XHRyZXR1cm4gTlVMTDtcbiBcdFx0aWYgKCFNWEw4NjJYWF9GV19WRVJfTUlOKHByaXYsIDEsIDAsIDg0KSkge1xuIFx0XHRcdGRldl93YXJuX29uY2UoZHAtXHUwMDNlZHMtXHUwMDNlZGV2LFxuIFx0XHRcdFx0ICAgICAgXCJTZXJEZXMgUENTIHVuc3VwcG9ydGVkIG9uIG9sZCBmaXJtd2FyZS5cXG5cIik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguY1xuaW5kZXggNDVkMjM3YjNhNDBmMTAuLmI3Mzg1Y2ZhNTQ3NDU4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jXG5AQCAtMjEsNiArMjEsNyBAQFxuICNpbmNsdWRlIFwibXhsODYyeHguaFwiXG4gI2luY2x1ZGUgXCJteGw4NjJ4eC1hcGkuaFwiXG4gI2luY2x1ZGUgXCJteGw4NjJ4eC1jbWQuaFwiXG4rI2luY2x1ZGUgXCJteGw4NjJ4eC1mdy5oXCJcbiAjaW5jbHVkZSBcIm14bDg2Mnh4LWhvc3QuaFwiXG4gI2luY2x1ZGUgXCJteGw4NjJ4eC1waHlsaW5rLmhcIlxuIFxuQEAgLTYyOCw5ICs2MjksMjIgQEAgc3RhdGljIGludCBteGw4NjJ4eF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0cmV0ID0gbXhsODYyeHhfd2FpdF9yZWFkeShkcyk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuK1x0cHJpdi1cdTAwM2VyZXNjdWVfbW9kZSA9IG14bDg2Mnh4X3Jlc2N1ZV9tb2RlX2RldGVjdChwcml2KTtcbitcdGlmICghcHJpdi1cdTAwM2VyZXNjdWVfbW9kZSkge1xuK1x0XHRyZXQgPSBteGw4NjJ4eF93YWl0X3JlYWR5KGRzKTtcbitcdFx0aWYgKHJldCkge1xuK1x0XHRcdC8qIHRoZSByZXNldCBtYXkgb25seSBub3cgaGF2ZSB0cmlnZ2VyZWQgcmVzY3VlIG1vZGUgKi9cbitcdFx0XHRwcml2LVx1MDAzZXJlc2N1ZV9tb2RlID0gbXhsODYyeHhfcmVzY3VlX21vZGVfZGV0ZWN0KHByaXYpO1xuK1x0XHRcdGlmICghcHJpdi1cdTAwM2VyZXNjdWVfbW9kZSlcbitcdFx0XHRcdHJldHVybiByZXQ7XG4rXHRcdH1cbitcdH1cbitcbitcdGlmIChwcml2LVx1MDAzZXJlc2N1ZV9tb2RlKSB7XG4rXHRcdGRldl93YXJuKGRzLVx1MDAzZWRldixcbitcdFx0XHQgXCJzd2l0Y2ggc3R1Y2sgaW4gTUNVYm9vdCByZXNjdWUgbW9kZSwgdXNlIGRldmxpbmsgdG8gZmxhc2ggbmV3IGZpcm13YXJlXFxuXCIpO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbiBcbiBcdG11dGV4X2luaXQoXHUwMDI2cHJpdi1cdTAwM2VzZXJkZXNfbG9jayk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHByaXYtXHUwMDNlc2VyZGVzX3BvcnRzKTsgaSsrKVxuQEAgLTcxNSwxMSArNzI5LDIxIEBAIHN0YXRpYyBpbnQgbXhsODYyeHhfcG9ydF9zdGF0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBib29sIGVuYWJsZSlcbiBzdGF0aWMgaW50IG14bDg2Mnh4X3BvcnRfZW5hYmxlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXHRcdFx0XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbitcdHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbitcbitcdGlmIChwcml2LVx1MDAzZXJlc2N1ZV9tb2RlKVxuK1x0XHRyZXR1cm4gMDtcbitcbiBcdHJldHVybiBteGw4NjJ4eF9wb3J0X3N0YXRlKGRzLCBwb3J0LCB0cnVlKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbXhsODYyeHhfcG9ydF9kaXNhYmxlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG4ge1xuK1x0c3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuK1xuK1x0aWYgKHByaXYtXHUwMDNlcmVzY3VlX21vZGUpXG4rXHRcdHJldHVybjtcbitcbiBcdGlmIChteGw4NjJ4eF9wb3J0X3N0YXRlKGRzLCBwb3J0LCBmYWxzZSkpXG4gXHRcdGRldl9lcnIoZHMtXHUwMDNlZGV2LCBcImZhaWxlZCB0byBkaXNhYmxlIHBvcnQgJWRcXG5cIiwgcG9ydCk7XG4gfVxuQEAgLTEzMzcsNiArMTM2MSwxMiBAQCBzdGF0aWMgaW50IG14bDg2Mnh4X3BvcnRfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcbiBcdGJvb2wgaXNfY3B1X3BvcnQgPSBkc2FfcG9ydF9pc19jcHUoZHApO1xuIFx0aW50IHJldDtcbiBcbitcdC8qIERTQSByZWluaXRzIGZhaWxlZCB1c2VyIHBvcnRzIGFzIHVudXNlZDsgc2hhcmVkIHBvcnRzIG11c3RcbitcdCAqIHN1Y2NlZWQgZm9yIHRoZSB0cmVlIHRvIHJlZ2lzdGVyLlxuK1x0ICovXG4rXHRpZiAocHJpdi1cdTAwM2VyZXNjdWVfbW9kZSlcbitcdFx0cmV0dXJuIGRzYV9wb3J0X2lzX3VzZXIoZHApID8gLUVOT0RFViA6IDA7XG4rXG4gXHRyZXQgPSBteGw4NjJ4eF9wb3J0X3N0YXRlKGRzLCBwb3J0LCBmYWxzZSk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuQEAgLTE2MjgsNiArMTY1OCw5IEBAIHN0YXRpYyB2b2lkIG14bDg2Mnh4X3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuIFx0c3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuIFx0aW50IHJldDtcbiBcbitcdGlmIChwcml2LVx1MDAzZXJlc2N1ZV9tb2RlKVxuK1x0XHRyZXR1cm47XG4rXG4gXHRzd2l0Y2ggKHN0YXRlKSB7XG4gXHRjYXNlIEJSX1NUQVRFX0RJU0FCTEVEOlxuIFx0XHRwYXJhbS5wb3J0X3N0YXRlID0gY3B1X3RvX2xlMzIoTVhMODYyWFhfU1RQX1BPUlRfU1RBVEVfRElTQUJMRSk7XG5AQCAtMjA4Niw2ICsyMTE5LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBteGw4NjJ4eF9zd2l0Y2hfb3BzID0ge1xuIFx0LmdldF9wYXVzZV9zdGF0cyA9IG14bDg2Mnh4X2dldF9wYXVzZV9zdGF0cyxcbiBcdC5nZXRfcm1vbl9zdGF0cyA9IG14bDg2Mnh4X2dldF9ybW9uX3N0YXRzLFxuIFx0LmdldF9zdGF0czY0ID0gbXhsODYyeHhfZ2V0X3N0YXRzNjQsXG4rXHQuZGV2bGlua19pbmZvX2dldCA9IG14bDg2Mnh4X2RldmxpbmtfaW5mb19nZXQsXG4rXHQuZGV2bGlua19mbGFzaF91cGRhdGUgPSBteGw4NjJ4eF9kZXZsaW5rX2ZsYXNoX3VwZGF0ZSxcbiB9O1xuIFxuIHN0YXRpYyBpbnQgbXhsODYyeHhfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5oIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmhcbmluZGV4IDQzMmE1ZjNmMmUwOGU2Li41ZDIxMjk2NTYxZTNhYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5oXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguaFxuQEAgLTMxOSw2ICszMTksMTIgQEAgc3RydWN0IG14bDg2Mnh4X2Z3X3ZlcnNpb24ge1xuICAqIEBldmxhbl9pbmdyZXNzX3NpemU6IHBlci1wb3J0IGluZ3Jlc3MgRXh0ZW5kZWQgVkxBTiBibG9jayBzaXplXG4gICogQGV2bGFuX2VncmVzc19zaXplOiAgcGVyLXBvcnQgZWdyZXNzIEV4dGVuZGVkIFZMQU4gYmxvY2sgc2l6ZVxuICAqIEB2Zl9ibG9ja19zaXplOiAgICAgIHBlci1wb3J0IFZMQU4gRmlsdGVyIGJsb2NrIHNpemVcbisgKiBAYmxvY2tfaG9zdDogICAgICAgICByZWplY3QgZmlybXdhcmUgQVBJIGNvbW1hbmRzIChleGNlcHQgRldfVVBEQVRFKVxuKyAqICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyBhIGZpcm13YXJlIGZsYXNoXG4rICogQHNraXBfdGVhcmRvd246ICAgICAgZGlzY2FyZCBmaXJtd2FyZSBBUEkgY29tbWFuZHMgZHVyaW5nIHRoZSB0ZWFyZG93blxuKyAqICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJlZCBieSB0aGUgcG9zdC1mbGFzaCByZXByb2JlXG4rICogQHJlc2N1ZV9tb2RlOiAgICAgICAgc3dpdGNoIGlzIHN0dWNrIGluIE1DVWJvb3Q7IGZpcm13YXJlIEFQSSBjb21tYW5kc1xuKyAqICAgICAgICAgICAgICAgICAgICAgIGZhaWwgZmFzdCwgb25seSBjbGF1c2UtMjIgU01ESU8gd29ya3NcbiAgKiBAc3RhdHNfd29yazogICAgICAgICBwZXJpb2RpYyB3b3JrIGl0ZW0gdGhhdCBwb2xscyBSTU9OIGhhcmR3YXJlIGNvdW50ZXJzXG4gICogICAgICAgICAgICAgICAgICAgICAgYW5kIGFjY3VtdWxhdGVzIHRoZW0gaW50byA2NC1iaXQgcGVyLXBvcnQgc3RhdHNcbiAgKi9cbkBAIC0zMzcsNiArMzQzLDkgQEAgc3RydWN0IG14bDg2Mnh4X3ByaXYge1xuIFx0dTE2IGV2bGFuX2luZ3Jlc3Nfc2l6ZTtcbiBcdHUxNiBldmxhbl9lZ3Jlc3Nfc2l6ZTtcbiBcdHUxNiB2Zl9ibG9ja19zaXplO1xuK1x0Ym9vbCBibG9ja19ob3N0O1xuK1x0Ym9vbCBza2lwX3RlYXJkb3duO1xuK1x0Ym9vbCByZXNjdWVfbW9kZTtcbiBcdHN0cnVjdCBkZWxheWVkX3dvcmsgc3RhdHNfd29yaztcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2RzYS5oIGIvaW5jbHVkZS9uZXQvZHNhLmhcbmluZGV4IDhjMTZlZjIzY2MxMDJhLi5jOWUxOTM0OGRlNjE5MyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2RzYS5oXG4rKysgYi9pbmNsdWRlL25ldC9kc2EuaFxuQEAgLTExNzAsNiArMTE3MCw5IEBAIHN0cnVjdCBkc2Ffc3dpdGNoX29wcyB7XG4gXHRpbnRcdCgqZGV2bGlua19pbmZvX2dldCkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBkZXZsaW5rX2luZm9fcmVxICpyZXEsXG4gXHRcdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbitcdGludFx0KCpkZXZsaW5rX2ZsYXNoX3VwZGF0ZSkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuK1x0XHRcdFx0XHRzdHJ1Y3QgZGV2bGlua19mbGFzaF91cGRhdGVfcGFyYW1zICpwYXJhbXMsXG4rXHRcdFx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG4gXHRpbnRcdCgqZGV2bGlua19zYl9wb29sX2dldCkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuIFx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBzYl9pbmRleCwgdTE2IHBvb2xfaW5kZXgsXG4gXHRcdFx0XHQgICAgICAgc3RydWN0IGRldmxpbmtfc2JfcG9vbF9pbmZvICpwb29sX2luZm8pO1xuZGlmZiAtLWdpdCBhL25ldC9kc2EvZGV2bGluay5jIGIvbmV0L2RzYS9kZXZsaW5rLmNcbmluZGV4IGVkMzQyZjM0NTY5MmJiLi4yNTMxMWE4N2NiYzU2ZCAxMDA2NDRcbi0tLSBhL25ldC9kc2EvZGV2bGluay5jXG4rKysgYi9uZXQvZHNhL2RldmxpbmsuY1xuQEAgLTIwLDYgKzIwLDE4IEBAIHN0YXRpYyBpbnQgZHNhX2RldmxpbmtfaW5mb19nZXQoc3RydWN0IGRldmxpbmsgKmRsLFxuIFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIH1cbiBcbitzdGF0aWMgaW50IGRzYV9kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZGV2bGluayAqZGwsXG4rXHRcdFx0XHQgICAgc3RydWN0IGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLFxuK1x0XHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbit7XG4rXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkc2FfZGV2bGlua190b19kcyhkbCk7XG4rXG4rXHRpZiAoIWRzLVx1MDAzZW9wcy1cdTAwM2VkZXZsaW5rX2ZsYXNoX3VwZGF0ZSlcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1xuK1x0cmV0dXJuIGRzLVx1MDAzZW9wcy1cdTAwM2VkZXZsaW5rX2ZsYXNoX3VwZGF0ZShkcywgcGFyYW1zLCBleHRhY2spO1xuK31cbitcbiBzdGF0aWMgaW50IGRzYV9kZXZsaW5rX3NiX3Bvb2xfZ2V0KHN0cnVjdCBkZXZsaW5rICpkbCxcbiBcdFx0XHRcdCAgIHVuc2lnbmVkIGludCBzYl9pbmRleCwgdTE2IHBvb2xfaW5kZXgsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgZGV2bGlua19zYl9wb29sX2luZm8gKnBvb2xfaW5mbylcbkBAIC0xNjksNiArMTgxLDcgQEAgZHNhX2Rldmxpbmtfc2Jfb2NjX3RjX3BvcnRfYmluZF9nZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqZGxwLFxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgZHNhX2Rldmxpbmtfb3BzID0ge1xuIFx0LmluZm9fZ2V0XHRcdFx0PSBkc2FfZGV2bGlua19pbmZvX2dldCxcbitcdC5mbGFzaF91cGRhdGVcdFx0XHQ9IGRzYV9kZXZsaW5rX2ZsYXNoX3VwZGF0ZSxcbiBcdC5zYl9wb29sX2dldFx0XHRcdD0gZHNhX2Rldmxpbmtfc2JfcG9vbF9nZXQsXG4gXHQuc2JfcG9vbF9zZXRcdFx0XHQ9IGRzYV9kZXZsaW5rX3NiX3Bvb2xfc2V0LFxuIFx0LnNiX3BvcnRfcG9vbF9nZXRcdFx0PSBkc2FfZGV2bGlua19zYl9wb3J0X3Bvb2xfZ2V0LFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDQ6NTc6MjEuNTg2MjE0MDc3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc2ODM4MjYwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE14TDg2Mnh4IFBhdGNoIGZvciBWaXJ0dWFsaXphdGlvbioqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCBhIG5ldyBwYXRjaCBpbmNvcnBvcmF0aW5nIGZpcm13YXJlIGZsYXNoaW5nIGFuZCBkZXZsaW5rIHN1cHBvcnQgZm9yIHRoZSBNYXhMaW5lYXIgTXhMODYyeHggc3dpdGNoLiBUaGUgY2hhbmdlcyBhcmUgZm9jdXNlZCBpbiBgZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L2AgYW5kIGBuZXQvZHNhL2RldmxpbmsuY2AuIFRoaXMgaXMgaW50cmlndWluZyBiZWNhdXNlIGl0IGVuYWJsZXMgZmlybXdhcmUgZmxhc2hpbmcgdGhyb3VnaCBkZXZsaW5rIOKAkyBhIHByZXR0eSBzaWduaWZpY2FudCBpbXByb3ZlbWVudC5cblxuTXkgcHJpbWFyeSBjb25jZXJuLCBhcyBhbHdheXMsIGlzIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBgZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L2AsIHdoaWNoIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCdzIGEgRFNBIHN3aXRjaCBkcml2ZXIgZm9yIHRoZSBNeEw4NjJ4eC4gVGhlIHZlcnkgbmF0dXJlIG9mIERTQSBzd2l0Y2hlcyBtYWtlcyBlbXVsYXRpb24gaGlnaGx5IGltcHJvYmFibGUuIFRoZXkncmUgdHlwaWNhbGx5IGRlZXBseSB0aWVkIHRvIHRoZSBoYXJkd2FyZS5cblxuVGhlcmVmb3JlLCB0aGUgcXVlc3Rpb24gYmVjb21lczogaG93IGNhbiB3ZSB0ZXN0IHRoaXMgaW4gYSB2aXJ0dWFsIHNldHRpbmc/IFdlJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIHRoZXJlJ3MgYW55IG1lbnRpb24gb2Ygc29mdHdhcmUgZW11bGF0aW9uIGFueXdoZXJlLCB0aG91Z2ggSSBoaWdobHkgZG91YnQgaXQuIERTQSBzd2l0Y2hlcyBhcmUgYWxtb3N0IGFsd2F5cyBhIHB1cmVseSBoYXJkd2FyZSBjb25jZXJuLiBUbyBiZSBjZXJ0YWluLCBJJ2xsIHJ1biBhIGtlcm5lbCBzZWFyY2ggZm9yIGBteGw4NjJ4eGAgdG8gY29uZmlybSBhbmQgZXhwYW5kIG91ciBrbm93bGVkZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzAwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDQ6NTc6MjYuMzU0NTk4MTQ1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NjgzNDM5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJteGw4NjJ4eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjMyNCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19ORVRfRFNBX01YTDg2MikgKz0gbXhsODYyeHhfZHNhLm9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvTWFrZWZpbGU6MzpteGw4NjJ4eF9kc2EteSA6PSBteGw4NjJ4eC5vIG14bDg2Mnh4LWhvc3QubyBteGw4NjJ4eC1waHlsaW5rLm8gbXhsODYyeHgtZncub1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oPTE2PXN0cnVjdCBtZGlvX3JlbGF5X2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIzLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyNDogKiBzdHJ1Y3QgbXhsODYyeHhfcmVnaXN0ZXJfbW9kIC0gUmVnaXN0ZXIgYWNjZXNzIHBhcmFtZXRlciB0byBkaXJlY3RseVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yNS0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZ5IGludGVybmFsIHJlZ2lzdGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTMxLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozMjpzdHJ1Y3QgbXhsODYyeHhfcmVnaXN0ZXJfbW9kIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzMtXFx0X19sZTE2IGFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzgtLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM5OiAqIGVudW0gbXhsODYyeHhfbWFjX3RhYmxlX2ZpbHRlciAtIFNvdXJjZS9EZXN0aW5hdGlvbiBNQUMgYWRkcmVzcyBmaWx0ZXJpbmdcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNDAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC00NS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NDY6ZW51bSBteGw4NjJ4eF9tYWNfdGFibGVfZmlsdGVyIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNDctXFx0TVhMODYyWFhfTUFDX0ZJTFRFUl9OT05FID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC02NC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NjU6ICogc3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9hZGQgLSBNQUMgVGFibGUgRW50cnkgdG8gYmUgYWRkZWRcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNjYtICogQGZpZDogRmlsdGVyaW5nIElkZW50aWZpZXIgKEZJRCkgKG5vdCBzdXBwb3J0ZWQgYnkgYWxsIHN3aXRjaGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc0LSAqIEBtYWM6IE1BQyBBZGRyZXNzIHRvIGFkZCB0byB0aGUgdGFibGVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NzU6ICogQGZpbHRlcl9mbGFnOiBTZWUgXFx1MDAyNmVudW0gbXhsODYyeHhfbWFjX3RhYmxlX2ZpbHRlclxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03Ni0gKiBAaWdtcF9jb250cm9sbGVkOiBQYWNrZXQgaXMgbWFya2VkIGFzIElHTVAgY29udHJvbGxlZCBpZiBkZXN0aW5hdGlvbiBNQUNcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04My0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODQ6c3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9hZGQge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04NS1cXHRfX2xlMTYgZmlkO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwMC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTAxOiAqIHN0cnVjdCBteGw4NjJ4eF9tYWNfdGFibGVfcmVtb3ZlIC0gTUFDIFRhYmxlIEVudHJ5IHRvIGJlIHJlbW92ZWRcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAyLSAqIEBmaWQ6IEZpbHRlcmluZyBJZGVudGlmaWVyIChGSUQpXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwMy0gKiBAbWFjOiBNQUMgQWRkcmVzcyB0byBiZSByZW1vdmVkIGZyb20gdGhlIHRhYmxlLlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDQ6ICogQGZpbHRlcl9mbGFnOiBTZWUgXFx1MDAyNmVudW0gbXhsODYyeHhfbWFjX3RhYmxlX2ZpbHRlclxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDUtICogQHRjaTogVENJIGZvciBCLVN0ZXBcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDktICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjExMDpzdHJ1Y3QgbXhsODYyeHhfbWFjX3RhYmxlX3JlbW92ZSB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMS1cXHRfX2xlMTYgZmlkO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExNy0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTE4OiAqIHN0cnVjdCBteGw4NjJ4eF9tYWNfdGFibGVfcmVhZCAtIE1BQyBUYWJsZSBFbnRyeSB0byBiZSByZWFkXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExOS0gKiBAaW5pdGlhbDogUmVzdGFydCB0aGUgZ2V0IG9wZXJhdGlvbiBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRhYmxlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTI4LSAqIEBtYWM6IE1BQyBBZGRyZXNzLiBGaWxsZWQgb3V0IGJ5IHRoZSBzd2l0Y2ggQVBJIGltcGxlbWVudGF0aW9uLlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMjk6ICogQGZpbHRlcl9mbGFnOiBTZWUgXFx1MDAyNmVudW0gbXhsODYyeHhfbWFjX3RhYmxlX2ZpbHRlclxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMzAtICogQGlnbXBfY29udHJvbGxlZDogUGFja2V0IGlzIG1hcmtlZCBhcyBJR01QIGNvbnRyb2xsZWQgaWYgZGVzdGluYXRpb24gTUFDXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQxLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxNDI6c3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9yZWFkIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQzLVxcdHU4IGluaXRpYWw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTYyLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxNjM6ICogc3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9xdWVyeSAtIE1BQyBUYWJsZSBFbnRyeSBrZXktYmFzZWQgbG9va3VwXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE2NC0gKiBAbWFjOiBNQUMgQWRkcmVzcyB0byBzZWFyY2ggZm9yIChpbnB1dClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xNzItICogQHN0YXRpY19lbnRyeTogSW5kaWNhdGVzIGlmIHRoaXMgaXMgYSBTdGF0aWMgRW50cnlcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTczOiAqIEBmaWx0ZXJfZmxhZzogU2VlIFxcdTAwMjZlbnVtIG14bDg2Mnh4X21hY190YWJsZV9maWx0ZXIgKGlucHV0K291dHB1dClcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTc0LSAqIEBpZ21wX2NvbnRyb2xsZWQ6IElHTVAgY29udHJvbGxlZCBmbGFnXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTgwLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxODE6c3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9xdWVyeSB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE4Mi1cXHR1OCBtYWNbRVRIX0FMRU5dO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIwMC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MjAxOiAqIGVudW0gbXhsODYyeHhfbWFjX2NsZWFyX3R5cGUgLSBNQUMgdGFibGUgY2xlYXIgdHlwZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yMDItICogQE1YTDg2MlhYX01BQ19DTEVBUl9QSFlfUE9SVDogY2xlYXIgZHluYW1pYyBlbnRyaWVzIGJhc2VkIG9uIHBvcnRfaWRcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yMDQtICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjIwNTplbnVtIG14bDg2Mnh4X21hY19jbGVhcl90eXBlIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjA2LVxcdE1YTDg2MlhYX01BQ19DTEVBUl9QSFlfUE9SVCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjEwLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyMTE6ICogc3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9jbGVhciAtIE1BQyB0YWJsZSBjbGVhclxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyMTI6ICogQHR5cGU6IHNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9tYWNfY2xlYXJfdHlwZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yMTMtICogQHBvcnRfaWQ6IHBoeXNpY2FsIHBvcnQgaWRcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjE0LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyMTU6c3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9jbGVhciB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIxNi1cXHR1OCB0eXBlO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIyMC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MjIxOiAqIGVudW0gbXhsODYyeHhfYWdlX3RpbWVyIC0gQWdpbmcgVGltZXIgVmFsdWUuXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIyMi0gKiBATVhMODYyWFhfQUdFVElNRVJfMV9TRUM6IDEgc2Vjb25kIGFnaW5nIHRpbWVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yMjgtICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjIyOTplbnVtIG14bDg2Mnh4X2FnZV90aW1lciB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIzMC1cXHRNWEw4NjJYWF9BR0VUSU1FUl8xX1NFQyA9IDEsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjM4LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyMzk6ICogc3RydWN0IG14bDg2Mnh4X2JyaWRnZV9hbGxvYyAtIEJyaWRnZSBBbGxvY2F0aW9uXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI0MC0gKiBAYnJpZGdlX2lkOiBJZiB0aGUgYnJpZGdlIGFsbG9jYXRpb24gaXMgc3VjY2Vzc2Z1bCwgYSB2YWxpZCBJRCB3aWxsIGJlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjQ3LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyNDg6c3RydWN0IG14bDg2Mnh4X2JyaWRnZV9hbGxvYyB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI0OS1cXHRfX2xlMTYgYnJpZGdlX2lkO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI1Mi0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MjUzOiAqIGVudW0gbXhsODYyeHhfYnJpZGdlX2NvbmZpZ19tYXNrIC0gQnJpZGdlIGNvbmZpZ3VyYXRpb24gbWFza1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yNTQtICogQE1YTDg2MlhYX0JSSURHRV9DT05GSUdfTUFTS19NQUNfTEVBUk5JTkdfTElNSVQ6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjY3LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyNjg6ZW51bSBteGw4NjJ4eF9icmlkZ2VfY29uZmlnX21hc2sge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yNjktXFx0TVhMODYyWFhfQlJJREdFX0NPTkZJR19NQVNLX01BQ19MRUFSTklOR19MSU1JVCA9IEJJVCgwKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yNzgtLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjI3OTogKiBlbnVtIG14bDg2Mnh4X2JyaWRnZV9wb3J0X2VncmVzc19tZXRlciAtIE1ldGVycyBmb3IgZWdyZXNzIHRyYWZmaWMgdHlwZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yODAtICogQE1YTDg2MlhYX0JSSURHRV9QT1JUX0VHUkVTU19NRVRFUl9CUk9BRENBU1Q6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjkzLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyOTQ6ZW51bSBteGw4NjJ4eF9icmlkZ2VfcG9ydF9lZ3Jlc3NfbWV0ZXIge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yOTUtXFx0TVhMODYyWFhfQlJJREdFX1BPUlRfRUdSRVNTX01FVEVSX0JST0FEQ0FTVCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzA0LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozMDU6ICogc3RydWN0IG14bDg2Mnh4X3Fvc19tZXRlcl9jZmcgLSBSYXRlIG1ldGVyIGNvbmZpZ3VyYXRpb25cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzA2LSAqIEBlbmFibGU6IEVuYWJsZS9kaXNhYmxlIG1ldGVyXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzIwLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozMjE6c3RydWN0IG14bDg2Mnh4X3Fvc19tZXRlcl9jZmcge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zMjItXFx0dTggZW5hYmxlO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTMzOC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzM5OiAqIGVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZSAtIEJyaWRnZSBmb3J3YXJkaW5nIHR5cGUgb2YgcGFja2V0XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM0MC0gKiBATVhMODYyWFhfQlJJREdFX0ZPUldBUkRfRkxPT0Q6IFBhY2tldCBpcyBmbG9vZGVkIHRvIHBvcnQgbWVtYmVycyBvZlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM0My0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzQ0OmVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZSB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM0NS1cXHRNWEw4NjJYWF9CUklER0VfRk9SV0FSRF9GTE9PRCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzQ5LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozNTA6ICogc3RydWN0IG14bDg2Mnh4X2JyaWRnZV9jb25maWcgLSBCcmlkZ2UgQ29uZmlndXJhdGlvblxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNTEtICogQGJyaWRnZV9pZDogQnJpZGdlIElEIChGSUQpXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM1MjogKiBAbWFzazogU2VlIFxcdTAwMjZlbnVtIG14bDg2Mnh4X2JyaWRnZV9jb25maWdfbWFza1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNTMtICogQG1hY19sZWFybmluZ19saW1pdF9lbmFibGU6IEVuYWJsZSBNQUMgbGVhcm5pbmcgbGltaXRhdGlvblxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM2My0gKiBAZm9yd2FyZF9icm9hZGNhc3Q6IEZvcndhcmRpbmcgbW9kZSBvZiBicm9hZGNhc3QgdHJhZmZpYy4gU2VlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM2NDogKiAgICAgICAgICAgICAgICAgICAgIFxcdTAwMjZlbnVtIG14bDg2Mnh4X2JyaWRnZV9mb3J3YXJkX21vZGVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzY1LSAqIEBmb3J3YXJkX3Vua25vd25fbXVsdGljYXN0X2lwOiBGb3J3YXJkaW5nIG1vZGUgb2YgdW5rbm93biBtdWx0aWNhc3QgSVBcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzY2LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFmZmljLlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozNjc6ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9icmlkZ2VfZm9yd2FyZF9tb2RlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM2OC0gKiBAZm9yd2FyZF91bmtub3duX211bHRpY2FzdF9ub25faXA6IEZvcndhcmRpbmcgbW9kZSBvZiB1bmtub3duIG11bHRpY2FzdFxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNjktICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub24tSVAgdHJhZmZpYy5cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzcwOiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIFxcdTAwMjZlbnVtIG14bDg2Mnh4X2JyaWRnZV9mb3J3YXJkX21vZGVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzcxLSAqIEBmb3J3YXJkX3Vua25vd25fdW5pY2FzdDogRm9yd2FyZGluZyBtb2RlIG9mIHVua25vd24gdW5pY2FzdCB0cmFmZmljLiBTZWVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzcyOiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgXFx1MDAyNmVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNzMtICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM3NDpzdHJ1Y3QgbXhsODYyeHhfYnJpZGdlX2NvbmZpZyB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM3NS1cXHRfX2xlMTYgYnJpZGdlX2lkO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozNzY6XFx0X19sZTMyIG1hc2s7IC8qIGVudW0gbXhsODYyeHhfYnJpZGdlX2NvbmZpZ19tYXNrICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM3Ny1cXHR1OCBtYWNfbGVhcm5pbmdfbGltaXRfZW5hYmxlO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM4Mi1cXHRfX2xlMTYgdHJhZmZpY19zdWJfbWV0ZXJfaWRbTVhMODYyWFhfQlJJREdFX1BPUlRfRUdSRVNTX01FVEVSX01BWF07XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM4MzpcXHRfX2xlMzIgZm9yd2FyZF9icm9hZGNhc3Q7IC8qIGVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozODQ6XFx0X19sZTMyIGZvcndhcmRfdW5rbm93bl9tdWx0aWNhc3RfaXA7IC8qIGVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozODU6XFx0X19sZTMyIGZvcndhcmRfdW5rbm93bl9tdWx0aWNhc3Rfbm9uX2lwOyAvKiBlbnVtIG14bDg2Mnh4X2JyaWRnZV9mb3J3YXJkX21vZGUgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6Mzg2OlxcdF9fbGUzMiBmb3J3YXJkX3Vua25vd25fdW5pY2FzdDsgLyogZW51bSBteGw4NjJ4eF9icmlkZ2VfZm9yd2FyZF9tb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM4Ny19IF9fcGFja2VkO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM4OS0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzkwOiAqIHN0cnVjdCBteGw4NjJ4eF9icmlkZ2VfcG9ydF9hbGxvYyAtIEJyaWRnZSBQb3J0IEFsbG9jYXRpb25cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzkxLSAqIEBicmlkZ2VfcG9ydF9pZDogSWYgdGhlIGJyaWRnZSBwb3J0IGFsbG9jYXRpb24gaXMgc3VjY2Vzc2Z1bCwgYSB2YWxpZCBJRFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM5Ny0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6Mzk4OnN0cnVjdCBteGw4NjJ4eF9icmlkZ2VfcG9ydF9hbGxvYyB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM5OS1cXHRfX2xlMTYgYnJpZGdlX3BvcnRfaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNDAyLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo0MDM6ICogZW51bSBteGw4NjJ4eF9icmlkZ2VfcG9ydF9jb25maWdfbWFzayAtIEJyaWRnZSBQb3J0IGNvbmZpZ3VyYXRpb24gbWFza1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC00MDQtICogQE1YTDg2MlhYX0JSSURHRV9QT1JUX0NPTkZJR19NQVNLX0JSSURHRV9JRDpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC00NjItICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjQ2MzplbnVtIG14bDg2Mnh4X2JyaWRnZV9wb3J0X2NvbmZpZ19tYXNrIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNDY0LVxcdE1YTDg2MlhYX0JSSURHRV9QT1JUX0NPTkZJR19NQVNLX0JSSURHRV9JRCA9IEJJVCgwKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC00OTEtLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjQ5MjogKiBlbnVtIG14bDg2Mnh4X2NvbG9yX21hcmtpbmdfbW9kZSAtIENvbG9yIE1hcmtpbmcgTW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC00OTMtICogQE1YTDg2MlhYX01BUktJTkdfQUxMX0dSRUVOOiBtYXJrIHBhY2tldHMgKGV4Y2VwdCBjcml0aWNhbCkgdG8gZ3JlZW5cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01MDEtICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjUwMjplbnVtIG14bDg2Mnh4X2NvbG9yX21hcmtpbmdfbW9kZSB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTUwMy1cXHRNWEw4NjJYWF9NQVJLSU5HX0FMTF9HUkVFTiA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTEzLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo1MTQ6ICogZW51bSBteGw4NjJ4eF9jb2xvcl9yZW1hcmtpbmdfbW9kZSAtIENvbG9yIFJlbWFya2luZyBNb2RlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTUxNS0gKiBATVhMODYyWFhfUkVNQVJLSU5HX05PTkU6IHZhbHVlcyBmcm9tIGxhc3QgcHJvY2VzcyBzdGFnZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTUyMi0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTIzOmVudW0gbXhsODYyeHhfY29sb3JfcmVtYXJraW5nX21vZGUge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01MjQtXFx0TVhMODYyWFhfUkVNQVJLSU5HX05PTkUgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTUzMy0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTM0OiAqIGVudW0gbXhsODYyeHhfcG1hcHBlcl9tYXBwaW5nX21vZGUgLSBQLW1hcHBlciBNYXBwaW5nIE1vZGVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTM1LSAqIEBNWEw4NjJYWF9QTUFQUEVSX01BUFBJTkdfUENQOiBVc2UgUENQIGZvciBWTEFOIHRhZ2dlZCBwYWNrZXRzIHRvIGRlcml2ZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTU0MS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTQyOmVudW0gbXhsODYyeHhfcG1hcHBlcl9tYXBwaW5nX21vZGUge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01NDMtXFx0TVhMODYyWFhfUE1BUFBFUl9NQVBQSU5HX1BDUCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTQ4LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo1NDk6ICogc3RydWN0IG14bDg2Mnh4X3BtYXBwZXIgLSBQLW1hcHBlciBDb25maWd1cmF0aW9uXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTU1MC0gKiBAcG1hcHBlcl9pZDogSW5kZXggb2YgUC1tYXBwZXIgKDAtMzEpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTYwLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo1NjE6c3RydWN0IG14bDg2Mnh4X3BtYXBwZXIge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01NjItXFx0X19sZTE2IHBtYXBwZXJfaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTY2LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo1Njc6ICogc3RydWN0IG14bDg2Mnh4X2JyaWRnZV9wb3J0X2NvbmZpZyAtIEJyaWRnZSBQb3J0IENvbmZpZ3VyYXRpb25cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTY4LSAqIEBicmlkZ2VfcG9ydF9pZDogQnJpZGdlIFBvcnQgSUQgYWxsb2NhdGVkIGJ5IGJyaWRnZSBwb3J0IGFsbG9jYXRpb25cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTY5OiAqIEBtYXNrOiBTZWUgXFx1MDAyNmVudW0gbXhsODYyeHhfYnJpZGdlX3BvcnRfY29uZmlnX21hc2tcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTcwLSAqIEBicmlkZ2VfaWQ6IEJyaWRnZSBJRCAoRklEKSB0byB3aGljaCB0aGlzIGJyaWRnZSBwb3J0IGlzIGFzc29jaWF0ZWRcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01ODMtICogQGluZ3Jlc3NfbWFya2luZ19tb2RlOiBJbmdyZXNzIGNvbG9yIG1hcmtpbmcgbW9kZS4gU2VlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjU4NDogKiAgICAgICAgICAgICAgICAgICAgICAgIFxcdTAwMjZlbnVtIG14bDg2Mnh4X2NvbG9yX21hcmtpbmdfbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01ODUtICogQGVncmVzc19yZW1hcmtpbmdfbW9kZTogQ29sb3IgcmVtYXJraW5nIGZvciBlZ3Jlc3MgdHJhZmZpYy4gU2VlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjU4NjogKiAgICAgICAgICAgICAgICAgICAgICAgICBcXHUwMDI2ZW51bSBteGw4NjJ4eF9jb2xvcl9yZW1hcmtpbmdfbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01ODctICogQGluZ3Jlc3NfbWV0ZXJpbmdfZW5hYmxlOiBUcmFmZmljIG1ldGVyaW5nIG9uIGluZ3Jlc3MgdHJhZmZpYyBhcHBsaWVzXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTk3LSAqIEBwbWFwcGVyX21hcHBpbmdfbW9kZTogUC1tYXBwZXIgbWFwcGluZyBtb2RlLiBTZWVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTk4OiAqICAgICAgICAgICAgICAgICAgICAgICAgXFx1MDAyNmVudW0gbXhsODYyeHhfcG1hcHBlcl9tYXBwaW5nX21vZGVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTk5LSAqIEBwbWFwcGVyX2lkX3ZhbGlkOiBXaGVuIHRydWUsIFAtbWFwcGVyIGlzIHJlLXVzZWQ7IHdoZW4gZmFsc2UsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNjUzLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo2NTQ6c3RydWN0IG14bDg2Mnh4X2JyaWRnZV9wb3J0X2NvbmZpZyB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTY1NS1cXHRfX2xlMTYgYnJpZGdlX3BvcnRfaWQ7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjY1NjpcXHRfX2xlMzIgbWFzazsgLyogZW51bSBteGw4NjJ4eF9icmlkZ2VfcG9ydF9jb25maWdfbWFzayAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC02NTctXFx0X19sZTE2IGJyaWRnZV9pZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC02NjMtXFx0X19sZTE2IGVncmVzc19leHRlbmRlZF92bGFuX2Jsb2NrX3NpemU7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjY2NDpcXHRfX2xlMzIgaW5ncmVzc19tYXJraW5nX21vZGU7IC8qIGVudW0gbXhsODYyeHhfY29sb3JfbWFya2luZ19tb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjY2NTpcXHRfX2xlMzIgZWdyZXNzX3JlbWFya2luZ19tb2RlOyAvKiBlbnVtIG14bDg2Mnh4X2NvbG9yX3JlbWFya2luZ19tb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTY2Ni1cXHR1OCBpbmdyZXNzX21ldGVyaW5nX2VuYWJsZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC02NzItXFx0X19sZTE2IGRlc3Rfc3ViX2lmX2lkX2dyb3VwO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo2NzM6XFx0X19sZTMyIHBtYXBwZXJfbWFwcGluZ19tb2RlOyAvKiBlbnVtIG14bDg2Mnh4X3BtYXBwZXJfbWFwcGluZ19tb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTY3NC1cXHR1OCBwbWFwcGVyX2lkX3ZhbGlkO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo2NzU6XFx0c3RydWN0IG14bDg2Mnh4X3BtYXBwZXIgcG1hcHBlcjtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNjc2LVxcdF9fbGUxNiBicmlkZ2VfcG9ydF9tYXBbOF07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzA5LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3MTA6ICogc3RydWN0IG14bDg2Mnh4X2NmZyAtICBHbG9iYWwgU3dpdGNoIGNvbmZpZ3VyYXRpb24gQXR0cmlidXRlc1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3MTE6ICogQG1hY190YWJsZV9hZ2VfdGltZXI6IFNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9hZ2VfdGltZXJcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzEyLSAqIEBhZ2VfdGltZXI6IEN1c3RvbSBNQUMgdGFibGUgYWdpbmcgdGltZXIgaW4gc2Vjb25kc1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTcyMi0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NzIzOnN0cnVjdCBteGw4NjJ4eF9jZmcge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3MjQ6XFx0X19sZTMyIG1hY190YWJsZV9hZ2VfdGltZXI7IC8qIGVudW0gbXhsODYyeHhfYWdlX3RpbWVyICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTcyNS1cXHRfX2xlMzIgYWdlX3RpbWVyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTczNC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NzM1OiAqIGVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl9maWx0ZXJfdHlwZSAtIEV4dGVuZGVkIFZMQU4gZmlsdGVyIHRhZyB0eXBlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTczNi0gKiBATVhMODYyWFhfRVhURU5ERURWTEFOX0ZJTFRFUl9UWVBFX05PUk1BTDogTm9ybWFsIHRhZ2dlZFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc0MC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NzQxOmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl9maWx0ZXJfdHlwZSB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc0Mi1cXHRNWEw4NjJYWF9FWFRFTkRFRFZMQU5fRklMVEVSX1RZUEVfTk9STUFMID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03NDgtLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjc0OTogKiBlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX3RwaWQgLSBFeHRlbmRlZCBWTEFOIGZpbHRlciBUUElEXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc1MC0gKiBATVhMODYyWFhfRVhURU5ERURWTEFOX0ZJTFRFUl9UUElEX05PX0ZJTFRFUjogTm8gVFBJRCBmaWx0ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03NTMtICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjc1NDplbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX3RwaWQge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03NTUtXFx0TVhMODYyWFhfRVhURU5ERURWTEFOX0ZJTFRFUl9UUElEX05PX0ZJTFRFUiA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzYwLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3NjE6ICogZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX2ZpbHRlcl9kZWkgLSBFeHRlbmRlZCBWTEFOIGZpbHRlciBERUlcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzYyLSAqIEBNWEw4NjJYWF9FWFRFTkRFRFZMQU5fRklMVEVSX0RFSV9OT19GSUxURVI6IE5vIERFSSBmaWx0ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03NjUtICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjc2NjplbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX2RlaSB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc2Ny1cXHRNWEw4NjJYWF9FWFRFTkRFRFZMQU5fRklMVEVSX0RFSV9OT19GSUxURVIgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc3Mi0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NzczOiAqIGVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfcmVtb3ZlX3RhZyAtIFRhZyByZW1vdmFsIGFjdGlvblxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03NzQtICogQE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfTk9UX1JFTU9WRV9UQUc6IERvIG5vdCByZW1vdmUgdGFnXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzc4LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3Nzk6ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF9yZW1vdmVfdGFnIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzgwLVxcdE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfTk9UX1JFTU9WRV9UQUcgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc4Ni0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6Nzg3OiAqIGVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfcHJpb3JpdHkgLSBUcmVhdG1lbnQgcHJpb3JpdHkgbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03ODgtICogQE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfUFJJT1JJVFlfVkFMOiBVc2UgZXhwbGljaXQgdmFsdWVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03OTItICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjc5MzplbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fdHJlYXRtZW50X3ByaW9yaXR5IHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzk0LVxcdE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfUFJJT1JJVFlfVkFMID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04MDAtLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjgwMTogKiBlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fdHJlYXRtZW50X3ZpZCAtIFRyZWF0bWVudCBWSUQgbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04MDItICogQE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfVklEX1ZBTDogVXNlIGV4cGxpY2l0IFZJRCB2YWx1ZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgwNS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODA2OmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfdmlkIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODA3LVxcdE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfVklEX1ZBTCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODEyLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4MTM6ICogZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF90cGlkIC0gVHJlYXRtZW50IFRQSUQgbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04MTQtICogQE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfSU5ORVJfVFBJRDogQ29weSBmcm9tIGlubmVyIHRhZ1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgxOC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODE5OmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfdHBpZCB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgyMC1cXHRNWEw4NjJYWF9FWFRFTkRFRFZMQU5fVFJFQVRNRU5UX0lOTkVSX1RQSUQgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgyNi0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODI3OiAqIGVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfZGVpIC0gVHJlYXRtZW50IERFSSBtb2RlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgyOC0gKiBATVhMODYyWFhfRVhURU5ERURWTEFOX1RSRUFUTUVOVF9JTk5FUl9ERUk6IENvcHkgZnJvbSBpbm5lciB0YWdcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04MzItICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjgzMzplbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fdHJlYXRtZW50X2RlaSB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgzNC1cXHRNWEw4NjJYWF9FWFRFTkRFRFZMQU5fVFJFQVRNRU5UX0lOTkVSX0RFSSA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODQwLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4NDE6ICogZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuXzRfdHBpZF9tb2RlIC0gNC1UUElEIG1vZGUgc2VsZWN0b3JcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODQyLSAqIEBNWEw4NjJYWF9FWFRFTkRFRFZMQU5fVFBJRF9WVEVUWVBFXzE6IFZMQU4gVFBJRCB0eXBlIDFcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04NDYtICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjg0NzplbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fNF90cGlkX21vZGUge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04NDgtXFx0TVhMODYyWFhfRVhURU5ERURWTEFOX1RQSURfVlRFVFlQRV8xID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04NTQtLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjg1NTogKiBlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX2V0aGVydHlwZSAtIEZpbHRlciBFdGhlclR5cGUgbWF0Y2hcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODU2LSAqIEBNWEw4NjJYWF9FWFRFTkRFRFZMQU5fRklMVEVSX0VUSEVSVFlQRV9OT19GSUxURVI6IE5vIGZpbHRlclxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg2NC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODY1OmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl9maWx0ZXJfZXRoZXJ0eXBlIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODY2LVxcdE1YTDg2MlhYX0VYVEVOREVEVkxBTl9GSUxURVJfRVRIRVJUWVBFX05PX0ZJTFRFUiA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODc2LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4Nzc6ICogc3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9maWx0ZXJfdmxhbiAtIFBlci10YWcgZmlsdGVyIGluIEV4dGVuZGVkIFZMQU5cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODc4OiAqIEB0eXBlOiBUYWcgcHJlc2VuY2UvdHlwZSBtYXRjaCAoc2VlIFxcdTAwMjZlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX3R5cGUpXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg3OS0gKiBAcHJpb3JpdHlfZW5hYmxlOiBFbmFibGUgUENQIHZhbHVlIG1hdGNoaW5nXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODgyLSAqIEB2aWRfdmFsOiBWSUQgdmFsdWUgdG8gbWF0Y2hcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODgzOiAqIEB0cGlkOiBUUElEIG1hdGNoIG1vZGUgKHNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX2ZpbHRlcl90cGlkKVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4ODQ6ICogQGRlaTogREVJIG1hdGNoIG1vZGUgKHNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX2ZpbHRlcl9kZWkpXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg4NS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODg2OnN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fZmlsdGVyX3ZsYW4ge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04ODctXFx0X19sZTMyIHR5cGU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODk2LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4OTc6ICogc3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9maWx0ZXIgLSBFeHRlbmRlZCBWTEFOIGZpbHRlciBjb25maWd1cmF0aW9uXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg5OC0gKiBAb3JpZ2luYWxfcGFja2V0X2ZpbHRlcl9tb2RlOiBJZiB0cnVlLCBmaWx0ZXIgb24gb3JpZ2luYWwgKHByZS10cmVhdG1lbnQpXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg5OS0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTAwOiAqIEBmaWx0ZXJfNF90cGlkX21vZGU6IDQtVFBJRCBtb2RlIChzZWUgXFx1MDAyNmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl80X3RwaWRfbW9kZSlcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTAxLSAqIEBvdXRlcl92bGFuOiBPdXRlciBWTEFOIHRhZyBmaWx0ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MDMtICogQGV0aGVyX3R5cGU6IEV0aGVyVHlwZSBmaWx0ZXIgKHNlZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5MDQ6ICogICAgICAgICAgICAgIFxcdTAwMjZlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX2V0aGVydHlwZSlcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTA1LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5MDY6c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9maWx0ZXIge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MDctXFx0dTggb3JpZ2luYWxfcGFja2V0X2ZpbHRlcl9tb2RlO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MDgtXFx0X19sZTMyIGZpbHRlcl80X3RwaWRfbW9kZTtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTA5OlxcdHN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fZmlsdGVyX3ZsYW4gb3V0ZXJfdmxhbjtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTEwOlxcdHN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fZmlsdGVyX3ZsYW4gaW5uZXJfdmxhbjtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTExLVxcdF9fbGUzMiBldGhlcl90eXBlO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTkxNC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTE1OiAqIHN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fdHJlYXRtZW50X3ZsYW4gLSBQZXItdGFnIHRyZWF0bWVudCBpblxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MTYtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVuZGVkIFZMQU5cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTE3LSAqIEBwcmlvcml0eV9tb2RlOiBQcmlvcml0eSBhc3NpZ25tZW50IG1vZGVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTE4OiAqICAgICAgICAgICAgICAgICAoc2VlIFxcdTAwMjZlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fdHJlYXRtZW50X3ByaW9yaXR5KVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MTktICogQHByaW9yaXR5X3ZhbDogUHJpb3JpdHkgdmFsdWUgKHdoZW4gbW9kZSBpcyBWQUwpXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTkyMC0gKiBAdmlkX21vZGU6IFZJRCBhc3NpZ25tZW50IG1vZGVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTIxOiAqICAgICAgICAgICAgKHNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF92aWQpXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTkyMi0gKiBAdmlkX3ZhbDogVklEIHZhbHVlICh3aGVuIG1vZGUgaXMgVkFMKVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MjMtICogQHRwaWQ6IFRQSUQgYXNzaWdubWVudCBtb2RlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjkyNDogKiAgICAgICAgKHNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF90cGlkKVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MjUtICogQGRlaTogREVJIGFzc2lnbm1lbnQgbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5MjY6ICogICAgICAgKHNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF9kZWkpXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTkyNy0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTI4OnN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fdHJlYXRtZW50X3ZsYW4ge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MjktXFx0X19sZTMyIHByaW9yaXR5X21vZGU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTM3LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5Mzg6ICogc3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl90cmVhdG1lbnQgLSBFeHRlbmRlZCBWTEFOIHRyZWF0bWVudFxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MzktICogQHJlbW92ZV90YWc6IFRhZyByZW1vdmFsIGFjdGlvblxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5NDA6ICogICAgICAgICAgICAgIChzZWUgXFx1MDAyNmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfcmVtb3ZlX3RhZylcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTQxLSAqIEB0cmVhdG1lbnRfNF90cGlkX21vZGU6IDQtVFBJRCB0cmVhdG1lbnQgbW9kZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTk1OC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTU5OnN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fdHJlYXRtZW50IHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTYwLVxcdF9fbGUzMiByZW1vdmVfdGFnO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTk2Mi1cXHR1OCBhZGRfb3V0ZXJfdmxhbjtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTYzOlxcdHN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fdHJlYXRtZW50X3ZsYW4gb3V0ZXJfdmxhbjtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTY0LVxcdHU4IGFkZF9pbm5lcl92bGFuO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5NjU6XFx0c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl90cmVhdG1lbnRfdmxhbiBpbm5lcl92bGFuO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05NjYtXFx0dTggcmVhc3NpZ25fYnJpZGdlX3BvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTgwLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5ODE6ICogc3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9hbGxvYyAtIEV4dGVuZGVkIFZMQU4gYmxvY2sgYWxsb2NhdGlvblxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05ODItICogQG51bWJlcl9vZl9lbnRyaWVzOiBOdW1iZXIgb2YgZW50cmllcyB0byBhbGxvY2F0ZSAoaW5wdXQpIC8gYWxsb2NhdGVkXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTg4LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5ODk6c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9hbGxvYyB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTk5MC1cXHRfX2xlMTYgbnVtYmVyX29mX2VudHJpZXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTk0LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5OTU6ICogc3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9jb25maWcgLSBFeHRlbmRlZCBWTEFOIGVudHJ5IGNvbmZpZ3VyYXRpb25cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTk2LSAqIEBleHRlbmRlZF92bGFuX2Jsb2NrX2lkOiBCbG9jayBJRCBmcm9tIGFsbG9jYXRpb25cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDAyLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDAzOnN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fY29uZmlnIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAwNC1cXHRfX2xlMTYgZXh0ZW5kZWRfdmxhbl9ibG9ja19pZDtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAwNS1cXHRfX2xlMTYgZW50cnlfaW5kZXg7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwMDY6XFx0c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9maWx0ZXIgZmlsdGVyO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDA3OlxcdHN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fdHJlYXRtZW50IHRyZWF0bWVudDtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAwOC19IF9fcGFja2VkO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwMTAtLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwMTE6ICogZW51bSBteGw4NjJ4eF92bGFuX2ZpbHRlcl90Y2lfbWFzayAtIFZMQU4gRmlsdGVyIFRDSSBtYXNrXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwMTItICogQE1YTDg2MlhYX1ZMQU5fRklMVEVSX1RDSV9NQVNLX1ZJRDogVENJIG1hc2sgZm9yIFZMQU4gSURcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDE1LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDE2OmVudW0gbXhsODYyeHhfdmxhbl9maWx0ZXJfdGNpX21hc2sge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDE3LVxcdE1YTDg2MlhYX1ZMQU5fRklMVEVSX1RDSV9NQVNLX1ZJRCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAyMi0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTAyMzogKiBzdHJ1Y3QgbXhsODYyeHhfdmxhbmZpbHRlcl9hbGxvYyAtIFZMQU4gRmlsdGVyIGJsb2NrIGFsbG9jYXRpb25cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAyNC0gKiBAbnVtYmVyX29mX2VudHJpZXM6IE51bWJlciBvZiBlbnRyaWVzIHRvIGFsbG9jYXRlIChpbnB1dCkgLyBhbGxvY2F0ZWRcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDM0LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDM1OnN0cnVjdCBteGw4NjJ4eF92bGFuZmlsdGVyX2FsbG9jIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAzNi1cXHRfX2xlMTYgbnVtYmVyX29mX2VudHJpZXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA0My0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTA0NDogKiBzdHJ1Y3QgbXhsODYyeHhfdmxhbmZpbHRlcl9jb25maWcgLSBWTEFOIEZpbHRlciBlbnRyeSBjb25maWd1cmF0aW9uXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwNDUtICogQHZsYW5fZmlsdGVyX2Jsb2NrX2lkOiBCbG9jayBJRCBmcm9tIGFsbG9jYXRpb25cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDQ3LSAqIEB2bGFuX2ZpbHRlcl9tYXNrOiBUQ0kgZmllbGQocykgdG8gbWF0Y2ggKHNlZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDQ4OiAqICAgICAgICAgICAgICAgICAgICBcXHUwMDI2ZW51bSBteGw4NjJ4eF92bGFuX2ZpbHRlcl90Y2lfbWFzaylcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA0OS0gKiBAdmFsOiBUQ0kgdmFsdWUocykgdG8gbWF0Y2ggKFZJRCwgUENQLCBvciBmdWxsIFRDSSBkZXBlbmRpbmcgb24gbWFzaylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDU0LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDU1OnN0cnVjdCBteGw4NjJ4eF92bGFuZmlsdGVyX2NvbmZpZyB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwNTYtXFx0X19sZTE2IHZsYW5fZmlsdGVyX2Jsb2NrX2lkO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDU3LVxcdF9fbGUxNiBlbnRyeV9pbmRleDtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTA1ODpcXHRfX2xlMzIgdmxhbl9maWx0ZXJfbWFzazsgLyogZW51bSBteGw4NjJ4eF92bGFuX2ZpbHRlcl90Y2lfbWFzayAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDU5LVxcdF9fbGUzMiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA2My0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTA2NDogKiBlbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ19tYXNrIC0gU3BlY2lhbCB0YWcgdmFsaWQgZmllbGQgaW5kaWNhdG9yIGJpdHNcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA2NS0gKiBATVhMODYyWFhfU1NfU1BfVEFHX01BU0tfUlg6IHZhbGlkIFJYIHNwZWNpYWwgdGFnIG1vZGVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDY5LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDcwOmVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX21hc2sge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDcxLVxcdE1YTDg2MlhYX1NTX1NQX1RBR19NQVNLX1JYID0gQklUKDApLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwNzctLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwNzg6ICogZW51bSBteGw4NjJ4eF9zc19zcF90YWdfcnggLSBSWCBzcGVjaWFsIHRhZyBtb2RlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwNzktICogQE1YTDg2MlhYX1NTX1NQX1RBR19SWF9OT19UQUdfTk9fSU5TRVJUOiBwYWNrZXQgZG9lcyBOT1QgaGF2ZSBzcGVjaWFsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA4NS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTA4NjplbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ19yeCB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwODctXFx0TVhMODYyWFhfU1NfU1BfVEFHX1JYX05PX1RBR19OT19JTlNFUlQgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwOTItLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwOTM6ICogZW51bSBteGw4NjJ4eF9zc19zcF90YWdfdHggLSBUWCBzcGVjaWFsIHRhZyBtb2RlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwOTQtICogQE1YTDg2MlhYX1NTX1NQX1RBR19UWF9OT19UQUdfTk9fUkVNT1ZFOiBwYWNrZXQgZG9lcyBOT1QgaGF2ZSBzcGVjaWFsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTEwMi0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTEwMzplbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ190eCB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMDQtXFx0TVhMODYyWFhfU1NfU1BfVEFHX1RYX05PX1RBR19OT19SRU1PVkUgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMTAtLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjExMTE6ICogZW51bSBteGw4NjJ4eF9zc19zcF90YWdfcnhfcGVuIC0gUlggc3BlY2lhbCB0YWcgaW5mbyBvdmVyIHByZWFtYmxlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMTItICogQE1YTDg2MlhYX1NTX1NQX1RBR19SWF9QRU5fQUxMXzA6IHNwZWNpYWwgdGFnIGluZm8gaW5zZXJ0ZWQgZnJvbSBieXRlIDJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMTIyLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTIzOmVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX3J4X3BlbiB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMjQtXFx0TVhMODYyWFhfU1NfU1BfVEFHX1JYX1BFTl9BTExfMCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTEzMC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTEzMTogKiBzdHJ1Y3QgbXhsODYyeHhfc3Nfc3BfdGFnIC0gU3BlY2lhbCB0YWcgcG9ydCBzZXR0aW5nc1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMTMyLSAqIEBwaWQ6IHBvcnQgSUQgKDF+MTYpXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjExMzM6ICogQG1hc2s6IFNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9zc19zcF90YWdfbWFza1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTM0OiAqIEByeDogU2VlIFxcdTAwMjZlbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ19yeFxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTM1OiAqIEB0eDogU2VlIFxcdTAwMjZlbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ190eFxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTM2OiAqIEByeF9wZW46IFNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9zc19zcF90YWdfcnhfcGVuXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMzctICogQHR4X3BlbjogVFggc3BlY2lhbCB0YWcgaW5mbyBvdmVyIHByZWFtYmxlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTE0MC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTE0MTpzdHJ1Y3QgbXhsODYyeHhfc3Nfc3BfdGFnIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTE0Mi1cXHR1OCBwaWQ7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjExNDM6XFx0dTggbWFzazsgLyogZW51bSBteGw4NjJ4eF9zc19zcF90YWdfbWFzayAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTQ0OlxcdHU4IHJ4OyAvKiBlbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ19yeCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTQ1OlxcdHU4IHR4OyAvKiBlbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ190eCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTQ2OlxcdHU4IHJ4X3BlbjsgLyogZW51bSBteGw4NjJ4eF9zc19zcF90YWdfcnhfcGVuICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExNDctXFx0dTggdHhfcGVuOyAvKiBib29sZWFuICovXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTE1MC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTE1MTogKiBlbnVtIG14bDg2Mnh4X2xvZ2ljYWxfcG9ydF9tb2RlIC0gTG9naWNhbCBwb3J0IG1vZGVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTE1Mi0gKiBATVhMODYyWFhfTE9HSUNBTF9QT1JUXzhCSVRfV0xBTjogV0xBTiB3aXRoIDgtYml0IHN0YXRpb24gSURcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNDo1NzoyNi42NTE0NDAyNDNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTA4NTQwNDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVhMODYyWFggU3dpdGNoIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguY2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGlzIGEgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVyLCB3aGljaCBpdCBhbG1vc3QgY2VydGFpbmx5IGlzLiBUaGUgbmFtZSBgbXhsODYyeHhgIHN0cm9uZ2x5IHN1Z2dlc3RzIGl0J3MgYSBNYXhMaW5lYXIgc3dpdGNoIG9mIHNvbWUgc29ydC4gVGhlIHJlYWwgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVyZSBpcyBhbnkgcG9zc2liaWxpdHksIGV2ZW4gYSBzbGltIG9uZSwgb2YgZW11bGF0aW5nIHRoaXMgZHJpdmVyIGZvciB0ZXN0aW5nIG9yIGRldmVsb3BtZW50IHB1cnBvc2VzP1xuXG5UbyBhbnN3ZXIgdGhhdCBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMuIEVpdGhlciBgZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L0tjb25maWdgIGRpcmVjdGx5IG9yIHRoZSBicm9hZGVyIGBkcml2ZXJzL25ldC9kc2EvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgaGludHMgYWJvdXQgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IGdpdmUgbWUgc29tZSBjbHVlcy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGRyaXZlciBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGFuZCBpZiB0aGVyZSdzIGFueSBmbGV4aWJpbGl0eSBpbiBob3cgaXQncyBidWlsdCBvciBjb25maWd1cmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDc2NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNDo1NzozMC41NTk5ODI4NzVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODczNTI2NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9EU0FfTVhMODYyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvS2NvbmZpZzoyOmNvbmZpZyBORVRfRFNBX01YTDg2MlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1heExpbmVhciBNeEw4NjJ4eFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDQ6NTc6MzAuNjQ3Mzc2NjI4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQxODEzMDc1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGBkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvS2NvbmZpZ2AgZmlsZSwgdGhpbmtpbmcgbGlrZSBhIHNlYXNvbmVkIGVtYmVkZGVkIHN5c3RlbXMgZGV2ZWxvcGVyOlxuXG4qKkRlbHZpbmcgaW50byB0aGUgTVhMODYyWFggS2NvbmZpZyoqXG5cbkFscmlnaHQsIGxldCdzIGRpc3NlY3QgdGhpcyBLY29uZmlnIGZpbGUgZm9yIHRoZSBNYXJ2ZWxsIE1YTDg2MlhYIERTQSBkcml2ZXIuIEltbWVkaWF0ZWx5LCBJJ20gbG9va2luZyBmb3IgdGhlIGNvcmUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBNeSBpbml0aWFsIHRob3VnaHRzIGFyZSBnZWFyZWQgdG93YXJkIHVuZGVyc3RhbmRpbmcgd2hhdCBmZWF0dXJlcyBhcmUgY29uZmlndXJhYmxlIGFuZCBob3cgdGhleSB0aWUgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGdldCBhIGdyaXAgb24gdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLCB3aGljaCBpcyBrZXkuXG5cbkkgc2VlIHRoZSBgY29uZmlnIE1YTDg2MlhYYCBvcHRpb24g4oCTIHRoYXQncyB0aGUgcHJpbWFyeSBzd2l0Y2gsIEkgYXNzdW1lLiBJIG5lZWQgdG8gY2hlY2sgaXRzIGRlcGVuZGVuY2llcy4gTGlrZWx5LCB0aGlzIHdpbGwgZGVwZW5kIG9uIHNvbWUgYmFzZSBuZXR3b3JraW5nIG9yIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgY29uZmlndXJhdGlvbiBvcHRpb25zLiBMZXQgbWUgcXVpY2tseSBzY2FuIGZvciB0aG9zZS4uLiBBaCwgYE5FVF9EU0FgIHNlZW1zIGxpa2UgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQuIEdvb2QsIHRoYXQgbWFrZXMgc2Vuc2UuIEkgd291bGQgZXhwZWN0IHNvbWUgZGVwZW5kZW5jaWVzIG9uIE1ESU8gYXMgd2VsbC4gQW5kIHByb2JhYmx5IHNvbWUgQVJNLXNwZWNpZmljIHRoaW5ncyBzaW5jZSB0aGlzIGlzIGFuIGVtYmVkZGVkIHNvbHV0aW9uLlxuXG5UaGUgYHRyaXN0YXRlYCBuYXR1cmUgb2YgaXQgaXMgc3RhbmRhcmQuIFRoZSB1c2VyIHdpbGwgYmUgYWJsZSB0byBlaXRoZXIgYnVpbGQgaXQgaW50byB0aGUga2VybmVsLCBhcyBhIG1vZHVsZSwgb3Igbm90IGluY2x1ZGUgaXQgYXQgYWxsLCBiYXNlZCBvbiB0aGVpciBzZXR1cC5cblxuVGhlbiwgSSdsbCBhbmFseXplIHRoZSBpbmRpdmlkdWFsIHN1Yi1vcHRpb25zIHdpdGhpbiBgTVhMODYyWFhgLiBJJ20gZ3Vlc3NpbmcgdGhlcmUgd2lsbCBiZSB0b2dnbGVzIGZvciBkaWZmZXJlbnQgUEhZIG1vZGVzLCBtYW5hZ2VtZW50IGludGVyZmFjZXMgKE1ESU8/KSwgYW5kIHBlcmhhcHMgaGFyZHdhcmUgZmVhdHVyZXMgc3BlY2lmaWMgdG8gZGlmZmVyZW50IE1YTDg2MlhYIHJldmlzaW9ucywgb3IgZXZlbiBmZWF0dXJlcyBsaWtlIFZMQU4gc3VwcG9ydC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgbW9zdCBjb21tb24gdXNlIGNhc2VzLCBlc3BlY2lhbGx5IGlmIHRoZXkgYXJlIHNlbnNpYmxlIGRlZmF1bHRzIHRoYXQgYSB1c2VyIHdpbGwgbm90IG5lZWQgdG8gY2hhbmdlLlxuXG5UaGUgcHJlc2VuY2Ugb2YgYGhlbHBgIHRleHQgaXMgY3J1Y2lhbC4gVGhhdCdzIHdoZXJlIEkgd2lsbCBmaW5kIHRoZSByZWFsIG1lYXQgb2YgdGhlIGNvbmZpZ3VyYXRpb24sIHRoZSBleHBsYW5hdGlvbiBvZiBlYWNoIG9wdGlvbiwgd2hhdCBpdCBkb2VzLCBhbmQgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlIGRlc2NyaXB0aW9ucyBhcmUgY2xlYXIgYW5kIGFjY3VyYXRlLiBJcyB0aGVyZSBhbnkgY3Jvc3MtcmVmZXJlbmNpbmcgdG8gdGhlIGRldmljZSBkb2N1bWVudGF0aW9uIG9yIGRhdGFzaGVldHM/IFRoYXQgd291bGQgYmUgYSBodWdlIHBsdXMuXG5cbkkgYW0gYWxzbyBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzLiBEb2VzIG9uZSBvcHRpb24gZXhjbHVkZSBhbm90aGVyPyBPciBhcmUgdGhlcmUgaW50ZXJhY3Rpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gSSBuZWVkIHRvIGFuYWx5emUgaG93IHRoaXMgS2NvbmZpZyBmaWxlIGludGVncmF0ZXMgd2l0aCBvdGhlciBjb25maWd1cmF0aW9ucyBpbiB0aGUgYGRyaXZlcnMvbmV0L2RzYWAgc3VidHJlZSBhbmQgcG9zc2libHkgZXZlbiB0aGUgYnJvYWRlciBuZXR3b3JraW5nIHN0YWNrLiBJIG5lZWQgdG8gZW5zdXJlIGl0J3MgY2xlYW4gYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBzdXJwcmlzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMjM3LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDQ6NTc6MzUuMDY1NTA5MTgyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUyNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgTkVUX0RTQV9NWEw4NjJcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXhMaW5lYXIgTXhMODYyeHhcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0FcXG4gICA1OlxcdFxcdHNlbGVjdCBDUkMxNlxcbiAgIDY6XFx0XFx0c2VsZWN0IE5FVF9EU0FfVEFHX01YTF84NjJYWFxcbiAgIDc6XFx0XFx0aGVscFxcbiAgIDg6XFx0XFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIE1heExpbmVhciBNeEw4NjJ4eCBzd2l0Y2ggZmFtaWx5LlxcbiAgIDk6XFx0XFx0ICBUaGVzZSBzd2l0Y2hlcyBoYXZlIHR3byAxMEdFIFNlckRlcyBpbnRlcmZhY2VzLCBvbmUgdHlwaWNhbGx5XFxuICAxMDpcXHRcXHQgIHVzZWQgYXMgQ1BVIHBvcnQuXFxuICAxMTpcXHRcXHQgICAtIE14TDg2MjgyIGhhcyBlaWdodCAyLjUgR2lnYWJpdCBQSFlzXFxuICAxMjpcXHRcXHQgICAtIE14TDg2MjUyIGhhcyBmaXZlIDIuNSBHaWdhYml0IFBIWXNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDQ6NTc6MzUuMDY1NTY1ODcxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc0NTMzNDM5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEhhcmR3YXJlIFN3aXRjaCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRyaXZlci4gSXQncyBhIGhhcmR3YXJlIHN3aXRjaCBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhlIE1heExpbmVhciBNeEw4NjJ4eC4gVGhlIGZpcnN0IHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIGNhbiBJIGV2ZW4gZ2V0IGF0IHRoaXMgdGhpbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gTGlrZWx5IG5vdCwgc2luY2UgaXQncyBhICpwaHlzaWNhbCogaGFyZHdhcmUgZHJpdmVyLiBVbmxlc3MgdGhlcmUncyBzb21lIGtpbmQgb2YgZW11bGF0b3IgZm9yIHRoZSBNeEw4NjJ4eCwgYW5kIHRoYXQncyBwcmV0dHkgaW1wcm9iYWJsZS5cblxuVGhlbiBJIHJlbWVtYmVyIHNvbWV0aGluZyBpbXBvcnRhbnQ6IHN5emJvdCwgdGhlIGF1dG9tYXRlZCBrZXJuZWwgZnV6emVyIEknbSB1c2luZywgKmRvZXNuJ3QqIGhhdmUgdGhhdCBzcGVjaWZpYyBoYXJkd2FyZS4gVGhpcyBkcml2ZXIgaXMgb2ZmIHRoZSB0YWJsZSBmb3Igc3l6a2FsbGVyLlxuXG5IbW0sIGJ1dCBpcyB0aGVyZSAqYW55KiB3YXkgdG8gZW11bGF0ZSBpdD8gUGVyaGFwcyB0aGVyZSdzIGEgd29ya2Fyb3VuZC4gU2luY2UgaXQncyBhbiBNRElPIGRldmljZSwgSSB0aGluayB0aGVyZSBtYXkgYmUgYW4gb3B0aW9uLCBidXQgdGhlIGRldmljZSBuZWVkcyB0byByZWdpc3RlciB3aXRoIE1ESU8uIE5vdywgdGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguY2AgdG8gc2VlIGhvdyBpdCBwZXJmb3JtcyBpdHMgcHJvYmUsIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBob29rcyBJIGNhbiB1c2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMDMxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDQ6NTc6MzkuODEwOTAyOTMxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODc5OTA5MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXhsODYyeHhfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYz0yMDkwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgbXhsODYyeHhfc3dpdGNoX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTIxMjUtXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmM6MjEyNjpzdGF0aWMgaW50IG14bDg2Mnh4X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yMTI3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jPTIyMzU9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBteGw4NjJ4eF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmM6MjIzNjpcXHQucHJvYmUgID0gbXhsODYyeHhfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjIzNy1cXHQucmVtb3ZlID0gbXhsODYyeHhfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNDo1Nzo0MC4wOTg4OTg3OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDk3NzAyOTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk1ESU8gRHJpdmVyIEZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGFuIE1ESU8gZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIgZXZlbiB0b3VjaCBNRElPIGRldmljZXM/IFR5cGljYWxseSwgdGhleSdyZSBwcm9iZWQgdGhyb3VnaCBkZXZpY2UgdHJlZSBvciBBQ1BJLCBub3Qgc29tZXRoaW5nIHN5emthbGxlciBpcyByZWFkaWx5IHNldCB1cCB0byBoYW5kbGUsIHVubGVzcyB0aGVyZSdzIGEgc3BlY2lmaWMgcHNldWRvLWRldmljZSBvciBhIHN5emthbGxlci1jb250cm9sbGVkIHZpcnR1YWwgYnVzLiBJICpkb24ndCogdGhpbmsgc3l6a2FsbGVyIGNhbiBkaXJlY3RseSBpbmplY3QgTURJTyBkZXZpY2VzLCBhbmQgZXZlbiBpZiBpdCBjb3VsZCwgd2UnZCBiZSB0YWxraW5nIGFib3V0IG5lZWRpbmcgdGhlICpzcGVjaWZpYyogaGFyZHdhcmUgb3IgYSBkZXRhaWxlZCBzb2Z0d2FyZSBlbXVsYXRvci4gQW5kIHNpbmNlIHRoaXMgaXMgYSAqcGh5c2ljYWwqIGhhcmR3YXJlIGRyaXZlciwgaXQncyBhIG5vbi1zdGFydGVyIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBNeSBndXQgc2F5cywgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIi5cblxuTGV0IG1lIGRvdWJsZSBjaGVjay4uLiBhcmUgdGhlcmUgYW55IE5ldGxpbmsgaW50ZXJmYWNlcyB0aGF0IG1pZ2h0IHByb3ZpZGUgYSBiYWNrZG9vcj8gQWxyaWdodCwgdGhlIHBhdGNoIGFkZHMgYG14bDg2Mnh4X2RldmxpbmtfaW5mb19nZXRgIGFuZCBgbXhsODYyeHhfZGV2bGlua19mbGFzaF91cGRhdGVgLCB3aGljaCBhcmUgZGV2bGluayBvcGVyYXRpb25zLiBUaG9zZSBhcmUgcmVnaXN0ZXJlZCB3aGVuIHRoZSBEU0Egc3dpdGNoIGlzIHJlZ2lzdGVyZWQsIGFuZCB0aGUgRFNBIHN3aXRjaCBpdHNlbGYgaXMgcmVnaXN0ZXJlZCBpbiBgbXhsODYyeHhfcHJvYmVgLiBTbyBpZiB0aGUgZGV2aWNlIGRvZXNuJ3QgcHJvYmUsIHRoZXNlIGRldmxpbmsgb3BzICp3b24ndCogYmUgcmVnaXN0ZXJlZCwgYW5kIHRoYXQgY29kZSBpcyB1bnJlYWNoYWJsZS5cblxuT2theSwgaXMgdGhlcmUgKmFueSogb3RoZXIgY29uY2VpdmFibGUgcGF0aCB0byByZWFjaCB0aGlzIGNvZGU/IE5vcGUsIGl0J3MgYSBwdXJlIGhhcmR3YXJlIGRyaXZlci5cblxuV2FpdC4uLiBsZXQgbWUgcmUtcmVhZCB0aGUgcHJvbXB0LiBJdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gQW5kIHRoaXMgaXMgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgc3dpdGNoIChNYXhMaW5lYXIgTXhMODYyeHgpIGFuZCB0aGVyZSdzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciBpdC4gVGhpcyAqZGVmaW5pdGVseSogZmFsbHMgdW5kZXIgdGhhdCBjYXRlZ29yeS5cblxuQWxyaWdodCwgSSdtIGNvbmZpZGVudC4gSSB3aWxsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI3NjEsIk91dHB1dFRva2VucyI6ODUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDQ6NTc6NDYuNTk2NjA0MjE5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE0ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIChNYXhMaW5lYXIgTXhMODYyeHggc3dpdGNoKSB3aGljaCBpcyBhbiBNRElPIGRldmljZS4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0b3IgZm9yIHRoaXMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgZHJpdmVyIGZvciBwaHlzaWNhbCBoYXJkd2FyZSAoTWF4TGluZWFyIE14TDg2Mnh4IHN3aXRjaCkgd2hpY2ggaXMgYW4gTURJTyBkZXZpY2UuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow8vntn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 04:38:49 +0000 UTC FinishedAt: 2026-07-14 04:57:48 +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+CgkJCTx0ZD4yMDI2LzA3LzE0IDA0OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGEgZHJpdmVyIGZvciBwaHlzaWNhbCBoYXJkd2FyZSAoTWF4TGluZWFyIE14TDg2Mnh4IHN3aXRjaCkgd2hpY2ggaXMgYW4gTURJTyBkZXZpY2UuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA0OjU3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYmEyZjAyZDVjMzM3ZDA4YzM2ZjFiNzIzODNkOThkYTUwODExMjg0ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDA0OjU3OjE5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9NYWtlZmlsZVxuaW5kZXggYTdiZTBlNjY2OWRmYTUuLmJjY2FjMGQwZjcwM2Y2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvTWFrZWZpbGVcbkBAIC0xLDMgJiM0MzsxLDMgQEBcbiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gb2JqLSQoQ09ORklHX05FVF9EU0FfTVhMODYyKSAmIzQzOz0gbXhsODYyeHhfZHNhLm9cbi1teGw4NjJ4eF9kc2EteSA6PSBteGw4NjJ4eC5vIG14bDg2Mnh4LWhvc3QubyBteGw4NjJ4eC1waHlsaW5rLm9cbiYjNDM7bXhsODYyeHhfZHNhLXkgOj0gbXhsODYyeHgubyBteGw4NjJ4eC1ob3N0Lm8gbXhsODYyeHgtcGh5bGluay5vIG14bDg2Mnh4LWZ3Lm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtY21kLmggYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtY21kLmhcbmluZGV4IGM4N2E5NTVjMTNjNDhlLi5lMmFhMjkzNGU5ZTE2MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1jbWQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWNtZC5oXG5AQCAtNzAsNiAmIzQzOzcwLDcgQEBcbiAjZGVmaW5lIElOVF9HUEhZX1JFQURcdFx0XHQoR1BZX0dQWTJYWF9NQUdJQyAmIzQzOyAweDEpXG4gI2RlZmluZSBJTlRfR1BIWV9XUklURVx0XHRcdChHUFlfR1BZMlhYX01BR0lDICYjNDM7IDB4MilcbiBcbiYjNDM7I2RlZmluZSBTWVNfTUlTQ19GV19VUERBVEVcdFx0KFNZU19NSVNDX01BR0lDICYjNDM7IDB4MSlcbiAjZGVmaW5lIFNZU19NSVNDX0ZXX1ZFUlNJT05cdFx0KFNZU19NSVNDX01BR0lDICYjNDM7IDB4MilcbiBcbiAjZGVmaW5lIE1YTDg2MlhYX1hQQ1NfUENTX0NPTkZJR1x0KE1YTDg2MlhYX1hQQ1NfTUFHSUMgJiM0MzsgMHgxKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1mdy5jIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWZ3LmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uODhkNTNiZWEzMzZmZDVcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1mdy5jXG5AQCAtMCwwICYjNDM7MSw0MzkgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcbiYjNDM7LypcbiYjNDM7ICogRmlybXdhcmUgZmxhc2ggYW5kIGRldmxpbmsgc3VwcG9ydCBmb3IgTWF4TGluZWFyIE14TDg2Mnh4XG4mIzQzOyAqXG4mIzQzOyAqIENvcHlyaWdodCAoQykgMjAyNSBEYW5pZWwgR29sbGUgXHUwMDNjZGFuaWVsQG1ha3JvdG9waWEub3JnXHUwMDNlXG4mIzQzOyAqL1xuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY3JjMzIuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcnRuZXRsaW5rLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbmV0L2RzYS5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtteGw4NjJ4eC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O214bDg2Mnh4LWFwaS5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O214bDg2Mnh4LWNtZC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O214bDg2Mnh4LWZ3LmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7bXhsODYyeHgtaG9zdC5oXCYjMzQ7XG4mIzQzO1xuJiM0MzsvKiBTQiBQREkgcmVnaXN0ZXJzIChjbGF1c2UtMjIgU01ESU8gYWRkcmVzcyBzcGFjZSkgKi9cbiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfQ1RSTFx0XHQweGUxMDBcbiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfQUREUlx0XHQweGUxMDFcbiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfREFUQVx0XHQweGUxMDJcbiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfU1RBVFx0XHQweGUxMDNcbiYjNDM7XG4mIzQzOy8qIFNCIFBESSBDVFJMIG1vZGVzICovXG4mIzQzOyNkZWZpbmUgTVhMODYyWFhfU0JfUERJX0NUUkxfUlNUXHQweDAwXG4mIzQzOyNkZWZpbmUgTVhMODYyWFhfU0JfUERJX0NUUkxfV1JcdDB4MDJcbiYjNDM7XG4mIzQzOy8qIFNCIFBESSBoYW5kc2hha2UgbWFnaWMgKi9cbiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfUkVBRFlcdFx0MHhjNTVjXG4mIzQzOyNkZWZpbmUgTVhMODYyWFhfU0JfUERJX1NUQVJUXHRcdDB4ZjQ4ZlxuJiM0MzsjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9FTkRcdFx0MHgzY2MzXG4mIzQzO1xuJiM0MzsvKiBGaXJtd2FyZSB0cmFuc2ZlciBnZW9tZXRyeSAqL1xuJiM0MzsjZGVmaW5lIE1YTDg2MlhYX0ZXX0hEUl9TSVpFXHRcdDIwXG4mIzQzOyNkZWZpbmUgTVhMODYyWFhfRldfQkFOS19IQUxGXHRcdDE2Mzg0XHQvKiB3b3JkcyBwZXIgaGFsZi1iYW5rICovXG4mIzQzOyNkZWZpbmUgTVhMODYyWFhfRldfQkFOS19TTElDRVx0XHQzMjc2MFx0Lyogd29yZHMgcGVyIGZ1bGwgc2xpY2UgKi9cbiYjNDM7I2RlZmluZSBNWEw4NjJYWF9GV19TQjFfQUREUlx0XHQweDc4MDBcdC8qIFNCMSB3b3JkIGFkZHJlc3MgKi9cbiYjNDM7XG4mIzQzOy8qIFRpbWVvdXRzIChnZW5lcm91cyB1cHBlciBib3VuZHMpICovXG4mIzQzOyNkZWZpbmUgTVhMODYyWFhfRldfUkVBRFlfVElNRU9VVF9NU1x0MzAwMDBcbiYjNDM7I2RlZmluZSBNWEw4NjJYWF9GV19BQ0tfVElNRU9VVF9NU1x0NTAwMFxuJiM0MzsjZGVmaW5lIE1YTDg2MlhYX0ZXX0VSQVNFX1RJTUVPVVRfTVNcdDMwMDAwMFxuJiM0MzsjZGVmaW5lIE1YTDg2MlhYX0ZXX1dSSVRFX1RJTUVPVVRfTVNcdDEyMDAwMFxuJiM0MzsjZGVmaW5lIE1YTDg2MlhYX0ZXX1JFQk9PVF9ERUxBWV9NU1x0NTAwMFxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgbXhsODYyeHhfc2JfcGRpX3Jlc2V0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KVxuJiM0Mzt7XG4mIzQzO1x0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsXG4mIzQzO1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfUlNUKTtcbiYjNDM7XHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfQUREUixcbiYjNDM7XHRcdFx0ICAgICBNWEw4NjJYWF9TQl9QRElfQ1RSTF9SU1QpO1xuJiM0MztcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9EQVRBLFxuJiM0MztcdFx0XHQgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1JTVCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgbXhsODYyeHhfc2JfcGRpX3BvbGxfc3RhdChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTE2IGV4cGVjdGVkLFxuJiM0MztcdFx0XHRcdCAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0X21zKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKHRpbWVvdXRfbXMpO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGRvIHtcbiYjNDM7XHRcdHJldCA9IG14bDg2Mnh4X3NtZGlvX3JlYWQocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVQpO1xuJiM0MztcdFx0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRcdGlmICgodTE2KXJldCA9PSBleHBlY3RlZClcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1x0XHR1c2xlZXBfcmFuZ2UoMTAwMDAsIDExMDAwKTtcbiYjNDM7XHR9IHdoaWxlICh0aW1lX2JlZm9yZShqaWZmaWVzLCB0aW1lb3V0KSk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAtRVRJTUVET1VUO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IG14bDg2Mnh4X3NiX3BkaV9mbHVzaF9zbGljZShzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdixcbiYjNDM7XHRcdFx0XHQgICAgICAgdTMyIGRhdGFfd3JpdHRlbilcbiYjNDM7e1xuJiM0MztcdG14bDg2Mnh4X3NiX3BkaV9yZXNldChwcml2KTtcbiYjNDM7XHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfU1RBVCwgZGF0YV93cml0dGVuKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQocHJpdiwgMCxcbiYjNDM7XHRcdFx0XHRcdCBNWEw4NjJYWF9GV19XUklURV9USU1FT1VUX01TKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgbXhsODYyeHhfZmxhc2hfbm90aWZ5KHN0cnVjdCBkZXZsaW5rICpkbCwgY29uc3QgY2hhciAqc3RhdHVzLFxuJiM0MztcdFx0XHRcdCAgdTMyIGRvbmUsIHUzMiB0b3RhbClcbiYjNDM7e1xuJiM0MztcdGRldmxpbmtfZmxhc2hfdXBkYXRlX3N0YXR1c19ub3RpZnkoZGwsIHN0YXR1cywgTlVMTCwgZG9uZSwgdG90YWwpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogbXhsODYyeHhfcmVzY3VlX21vZGVfZGV0ZWN0IC0gY2hlY2sgd2hldGhlciB0aGUgc3dpdGNoIHNpdHMgaW4gTUNVYm9vdFxuJiM0MzsgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgZGF0YVxuJiM0MzsgKlxuJiM0MzsgKiBNQ1Vib290IHNpZ25hbHMgcmVhZGluZXNzIGZvciBhIGZpcm13YXJlIGRvd25sb2FkIHdpdGggdGhlIFNCIFBESVxuJiM0MzsgKiByZWFkeSBtYWdpYzsgb25seSB0aGUgY2xhdXNlLTIyIFNNRElPIGludGVyZmFjZSB3b3JrcyBpbiB0aGlzIHN0YXRlLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IHRydWUgaWYgTUNVYm9vdCBpcyB3YWl0aW5nIGZvciBhIGZpcm13YXJlIGRvd25sb2FkLlxuJiM0MzsgKi9cbiYjNDM7Ym9vbCBteGw4NjJ4eF9yZXNjdWVfbW9kZV9kZXRlY3Qoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBteGw4NjJ4eF9zbWRpb19yZWFkKHByaXYsIE1YTDg2MlhYX1NCX1BESV9TVEFUKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldCA9PSBNWEw4NjJYWF9TQl9QRElfUkVBRFk7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qIGRldmljZV9yZXByb2JlKCkgLVx1MDAzZSByZW1vdmUoKSBmcmVlcyBwcml2IHdoaWxlIHRoZSB3b3JrIHJ1bnMsIHNvXG4mIzQzOyAqIHRoZSB3b3JrIHN0cnVjdCBjYW5ub3QgbGl2ZSBpbiBteGw4NjJ4eF9wcml2LlxuJiM0MzsgKi9cbiYjNDM7c3RydWN0IG14bDg2Mnh4X3JlcHJvYmUge1xuJiM0MztcdHN0cnVjdCBkZXZpY2UgKmRldjtcbiYjNDM7XHRzdHJ1Y3QgZGVsYXllZF93b3JrIGR3b3JrO1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgbXhsODYyeHhfcmVwcm9iZV93b3JrX2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBteGw4NjJ4eF9yZXByb2JlICpyZXByb2JlID1cbiYjNDM7XHRcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbXhsODYyeHhfcmVwcm9iZSwgZHdvcmsud29yayk7XG4mIzQzO1xuJiM0MztcdGlmIChkZXZpY2VfcmVwcm9iZShyZXByb2JlLVx1MDAzZWRldikpXG4mIzQzO1x0XHRkZXZfZXJyKHJlcHJvYmUtXHUwMDNlZGV2LCBcJiMzNDtyZXByb2JlIGZhaWxlZFxcblwmIzM0Oyk7XG4mIzQzO1x0cHV0X2RldmljZShyZXByb2JlLVx1MDAzZWRldik7XG4mIzQzO1x0a2ZyZWUocmVwcm9iZSk7XG4mIzQzO1x0bW9kdWxlX3B1dChUSElTX01PRFVMRSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qIE1DVWJvb3QgZmlybXdhcmUgaW1hZ2UgaGVhZGVyICovXG4mIzQzO3N0cnVjdCBteGw4NjJ4eF9md19oZHIge1xuJiM0MztcdF9fbGUzMiBpbWFnZV90eXBlO1xuJiM0MztcdF9fbGUzMiBpbWFnZV9zaXplXzE7XG4mIzQzO1x0X19sZTMyIGltYWdlX2NoZWNrc3VtXzE7XG4mIzQzO1x0X19sZTMyIGltYWdlX3NpemVfMjtcbiYjNDM7XHRfX2xlMzIgaW1hZ2VfY2hlY2tzdW1fMjtcbiYjNDM7fSBfX3BhY2tlZDtcbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgbXhsODYyeHhfZmxhc2hfZmlybXdhcmUoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsXG4mIzQzO1x0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyxcbiYjNDM7XHRcdFx0XHQgICBzdHJ1Y3QgZGV2bGluayAqZGwpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgbXhsODYyeHhfZndfaGRyICpoZHI7XG4mIzQzO1x0dTMyIHdvcmRfaWR4ID0gMCwgZGF0YV93cml0dGVuID0gMCwgaWR4ID0gMDtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIG5leHRfbm90aWZ5ID0gMDtcbiYjNDM7XHRjb25zdCB1OCAqcGF5bG9hZDtcbiYjNDM7XHR1MzIgcGF5bG9hZF9zaXplO1xuJiM0MztcdHUxNiB3b3JkLCBmZGF0YTtcbiYjNDM7XHRpbnQgcmV0LCBpO1xuJiM0MztcdHUzMiBjcmM7XG4mIzQzO1xuJiM0MztcdGlmIChmdy1cdTAwM2VzaXplIFx1MDAzYyBNWEw4NjJYWF9GV19IRFJfU0laRSlcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRoZHIgPSAoY29uc3Qgc3RydWN0IG14bDg2Mnh4X2Z3X2hkciAqKWZ3LVx1MDAzZWRhdGE7XG4mIzQzO1x0cGF5bG9hZCA9IGZ3LVx1MDAzZWRhdGEgJiM0MzsgTVhMODYyWFhfRldfSERSX1NJWkU7XG4mIzQzO1x0cGF5bG9hZF9zaXplID0gbGUzMl90b19jcHUoaGRyLVx1MDAzZWltYWdlX3NpemVfMSkgJiM0MztcbiYjNDM7XHRcdCAgICAgICBsZTMyX3RvX2NwdShoZHItXHUwMDNlaW1hZ2Vfc2l6ZV8yKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHBheWxvYWRfc2l6ZSBcdTAwM2UgZnctXHUwMDNlc2l6ZSAtIE1YTDg2MlhYX0ZXX0hEUl9TSVpFKSB7XG4mIzQzO1x0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFwmIzM0O2ZsYXNoOiBmaXJtd2FyZSBmaWxlIHRvbyBzbWFsbCBmb3IgZGVjbGFyZWQgc2l6ZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChsZTMyX3RvX2NwdShoZHItXHUwMDNlaW1hZ2Vfc2l6ZV8xKSkge1xuJiM0MztcdFx0Y3JjID0gfmNyYzMyX2xlKH4wVSwgcGF5bG9hZCxcbiYjNDM7XHRcdFx0XHRsZTMyX3RvX2NwdShoZHItXHUwMDNlaW1hZ2Vfc2l6ZV8xKSk7XG4mIzQzO1x0XHRpZiAoY3JjICE9IGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9jaGVja3N1bV8xKSkge1xuJiM0MztcdFx0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFx0XCYjMzQ7Zmxhc2g6IGltYWdlIDEgQ1JDIG1pc21hdGNoIChnb3QgJTA4eCwgZXhwZWN0ZWQgJTA4eClcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0Y3JjLCBsZTMyX3RvX2NwdShoZHItXHUwMDNlaW1hZ2VfY2hlY2tzdW1fMSkpO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChsZTMyX3RvX2NwdShoZHItXHUwMDNlaW1hZ2Vfc2l6ZV8yKSkge1xuJiM0MztcdFx0Y3JjID0gfmNyYzMyX2xlKH4wVSxcbiYjNDM7XHRcdFx0XHRwYXlsb2FkICYjNDM7IGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9zaXplXzEpLFxuJiM0MztcdFx0XHRcdGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9zaXplXzIpKTtcbiYjNDM7XHRcdGlmIChjcmMgIT0gbGUzMl90b19jcHUoaGRyLVx1MDAzZWltYWdlX2NoZWNrc3VtXzIpKSB7XG4mIzQzO1x0XHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWRldixcbiYjNDM7XHRcdFx0XHRcJiMzNDtmbGFzaDogaW1hZ2UgMiBDUkMgbWlzbWF0Y2ggKGdvdCAlMDh4LCBleHBlY3RlZCAlMDh4KVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRjcmMsIGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9jaGVja3N1bV8yKSk7XG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogU3RlcCAxOiByZWJvb3QgdGhlIGZpcm13YXJlIGludG8gTUNVYm9vdCByZXNjdWUgbW9kZSAqL1xuJiM0MztcdGlmICghcHJpdi1cdTAwM2VyZXNjdWVfbW9kZSkge1xuJiM0MztcdFx0cmV0ID0gbXhsODYyeHhfYXBpX3dyYXAocHJpdiwgU1lTX01JU0NfRldfVVBEQVRFLCBOVUxMLCAwLFxuJiM0MztcdFx0XHRcdFx0ZmFsc2UsIGZhbHNlKTtcbiYjNDM7XHRcdGlmIChyZXQpIHtcbiYjNDM7XHRcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcdFwmIzM0O2ZsYXNoOiBGV19VUERBVEUgY29tbWFuZCBmYWlsZWQ6ICVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRFUlJfUFRSKHJldCkpO1xuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogRmFpbHVyZXMgZnJvbSBoZXJlIG9uIG11c3QgZ28gdGhyb3VnaCBlbmRfbWFnaWMgc28gTUNVYm9vdFxuJiM0MztcdCAqIHJlYm9vdHMgaW5zdGVhZCBvZiB3YWl0aW5nIGZvcmV2ZXIuXG4mIzQzO1x0ICovXG4mIzQzO1xuJiM0MztcdC8qIFN0ZXAgMjogd2FpdCBmb3IgYm9vdGxvYWRlciByZWFkeSAqL1xuJiM0MztcdG14bDg2Mnh4X2ZsYXNoX25vdGlmeShkbCwgXCYjMzQ7V2FpdGluZyBmb3IgYm9vdGxvYWRlclwmIzM0OywgMCwgMCk7XG4mIzQzO1x0bXhsODYyeHhfc2JfcGRpX3Jlc2V0KHByaXYpO1xuJiM0MztcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQocHJpdiwgTVhMODYyWFhfU0JfUERJX1JFQURZLFxuJiM0MztcdFx0XHRcdFx0TVhMODYyWFhfRldfUkVBRFlfVElNRU9VVF9NUyk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcJiMzNDtmbGFzaDogYm9vdGxvYWRlciBub3QgcmVhZHk6ICVwZVxcblwmIzM0OywgRVJSX1BUUihyZXQpKTtcbiYjNDM7XHRcdGdvdG8gZW5kX21hZ2ljO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogU3RlcCAzOiBzdGFydCBoYW5kc2hha2UgKi9cbiYjNDM7XHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfU1RBVCxcbiYjNDM7XHRcdFx0ICAgICBNWEw4NjJYWF9TQl9QRElfU1RBUlQpO1xuJiM0MztcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVJUICYjNDM7IDEsXG4mIzQzO1x0XHRcdFx0XHRNWEw4NjJYWF9GV19BQ0tfVElNRU9VVF9NUyk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcJiMzNDtmbGFzaDogc3RhcnQgaGFuZHNoYWtlIGZhaWxlZDogJXBlXFxuXCYjMzQ7LCBFUlJfUFRSKHJldCkpO1xuJiM0MztcdFx0Z290byBlbmRfbWFnaWM7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQvKiBTdGVwIDQ6IHRyYW5zZmVyIGltYWdlIGhlYWRlciAqL1xuJiM0MztcdG14bDg2Mnh4X2ZsYXNoX25vdGlmeShkbCwgXCYjMzQ7RXJhc2luZyBmbGFzaFwmIzM0OywgMCwgMCk7XG4mIzQzO1x0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsXG4mIzQzO1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfV1IpO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1YTDg2MlhYX0ZXX0hEUl9TSVpFIC8gMjsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHdvcmQgPSBmdy1cdTAwM2VkYXRhW2kgKiAyXSB8XG4mIzQzO1x0XHQgICAgICAgKCh1MTYpZnctXHUwMDNlZGF0YVtpICogMiAmIzQzOyAxXSBcdTAwM2NcdTAwM2MgOCk7XG4mIzQzO1x0XHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfREFUQSwgd29yZCk7XG4mIzQzO1x0fVxuJiM0MztcdG14bDg2Mnh4X3NiX3BkaV9yZXNldChwcml2KTtcbiYjNDM7XG4mIzQzO1x0LyogdGhlIGJ5dGUgY291bnQgaW4gU1RBVCB0cmlnZ2VycyB0aGUgZXJhc2UgKi9cbiYjNDM7XHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfU1RBVCxcbiYjNDM7XHRcdFx0ICAgICBNWEw4NjJYWF9GV19IRFJfU0laRSk7XG4mIzQzO1xuJiM0MztcdC8qIEFDSyBpcyBieXRlIGNvdW50ICYjNDM7IDEgKi9cbiYjNDM7XHRyZXQgPSBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIE1YTDg2MlhYX0ZXX0hEUl9TSVpFICYjNDM7IDEsXG4mIzQzO1x0XHRcdFx0XHRNWEw4NjJYWF9GV19BQ0tfVElNRU9VVF9NUyk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcJiMzNDtmbGFzaDogaGVhZGVyIEFDSyBmYWlsZWQ6ICVwZVxcblwmIzM0OywgRVJSX1BUUihyZXQpKTtcbiYjNDM7XHRcdGdvdG8gZW5kX21hZ2ljO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogU3RlcCA1OiB3YWl0IGZvciBlcmFzZSB0byBjb21wbGV0ZSAqL1xuJiM0MztcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQocHJpdiwgMCxcbiYjNDM7XHRcdFx0XHRcdE1YTDg2MlhYX0ZXX0VSQVNFX1RJTUVPVVRfTVMpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWRldixcbiYjNDM7XHRcdFx0XCYjMzQ7Zmxhc2g6IGVyYXNlIHRpbWVvdXQ6ICVwZVxcblwmIzM0OywgRVJSX1BUUihyZXQpKTtcbiYjNDM7XHRcdGdvdG8gZW5kX21hZ2ljO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogU3RlcCA2OiB0cmFuc2ZlciBwYXlsb2FkICovXG4mIzQzO1x0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsXG4mIzQzO1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfV1IpO1xuJiM0MztcbiYjNDM7XHR3aGlsZSAoaWR4IFx1MDAzYyBwYXlsb2FkX3NpemUpIHtcbiYjNDM7XHRcdGlmIChpZHggJiM0MzsgMSBcdTAwM2MgcGF5bG9hZF9zaXplKSB7XG4mIzQzO1x0XHRcdGZkYXRhID0gcGF5bG9hZFtpZHhdIHxcbiYjNDM7XHRcdFx0XHQoKHUxNilwYXlsb2FkW2lkeCAmIzQzOyAxXSBcdTAwM2NcdTAwM2MgOCk7XG4mIzQzO1x0XHRcdGlkeCAmIzQzOz0gMjtcbiYjNDM7XHRcdFx0ZGF0YV93cml0dGVuICYjNDM7PSAyO1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0ZmRhdGEgPSBwYXlsb2FkW2lkeF07XG4mIzQzO1x0XHRcdGlkeCYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRcdGRhdGFfd3JpdHRlbiYjNDM7JiM0Mzs7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0RBVEEsIGZkYXRhKTtcbiYjNDM7XHRcdHdvcmRfaWR4JiM0MzsmIzQzOztcbiYjNDM7XG4mIzQzO1x0XHRpZiAoaWR4IFx1MDAzZT0gcGF5bG9hZF9zaXplKSB7XG4mIzQzO1x0XHRcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9mbHVzaF9zbGljZShwcml2LCBkYXRhX3dyaXR0ZW4pO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHQvKiBIYWxmLWJhbmsgYm91bmRhcnk6IHN3aXRjaCB0byBTQjEgYWRkcmVzcyAqL1xuJiM0MztcdFx0aWYgKHdvcmRfaWR4ID09IE1YTDg2MlhYX0ZXX0JBTktfSEFMRikge1xuJiM0MztcdFx0XHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfQ1RSTCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfUlNUKTtcbiYjNDM7XHRcdFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0FERFIsXG4mIzQzO1x0XHRcdFx0XHQgICAgIE1YTDg2MlhYX0ZXX1NCMV9BRERSKTtcbiYjNDM7XHRcdFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsXG4mIzQzO1x0XHRcdFx0XHQgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1dSKTtcbiYjNDM7XHRcdH0gZWxzZSBpZiAod29yZF9pZHggXHUwMDNlPSBNWEw4NjJYWF9GV19CQU5LX1NMSUNFKSB7XG4mIzQzO1x0XHRcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9mbHVzaF9zbGljZShwcml2LCBkYXRhX3dyaXR0ZW4pO1xuJiM0MztcdFx0XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcdFx0XCYjMzQ7Zmxhc2g6IHdyaXRlIHRpbWVvdXQgYXQgJXUvJXU6ICVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdGlkeCwgcGF5bG9hZF9zaXplLCBFUlJfUFRSKHJldCkpO1xuJiM0MztcdFx0XHRcdGdvdG8gZW5kX21hZ2ljO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdHdvcmRfaWR4ID0gMDtcbiYjNDM7XHRcdFx0ZGF0YV93cml0dGVuID0gMDtcbiYjNDM7XHRcdFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsXG4mIzQzO1x0XHRcdFx0XHQgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1dSKTtcbiYjNDM7XG4mIzQzO1x0XHRcdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIG5leHRfbm90aWZ5KSkge1xuJiM0MztcdFx0XHRcdG14bDg2Mnh4X2ZsYXNoX25vdGlmeShkbCwgXCYjMzQ7Rmxhc2hpbmdcJiMzNDssIGlkeCxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgcGF5bG9hZF9zaXplKTtcbiYjNDM7XHRcdFx0XHRuZXh0X25vdGlmeSA9IGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyg1MDApO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFwmIzM0O2ZsYXNoOiBmaW5hbCB3cml0ZSB0aW1lb3V0OiAlcGVcXG5cJiMzNDssIEVSUl9QVFIocmV0KSk7XG4mIzQzO1x0XHRnb3RvIGVuZF9tYWdpYztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdG14bDg2Mnh4X2ZsYXNoX25vdGlmeShkbCwgXCYjMzQ7Rmxhc2hpbmdcJiMzNDssIHBheWxvYWRfc2l6ZSwgcGF5bG9hZF9zaXplKTtcbiYjNDM7XG4mIzQzO2VuZF9tYWdpYzpcbiYjNDM7XHQvKiByZWJvb3QgTUNVYm9vdCBldmVuIGFmdGVyIGEgZmFpbGVkIHRyYW5zZmVyICovXG4mIzQzO1x0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVQsXG4mIzQzO1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0VORCk7XG4mIzQzO1x0bXNsZWVwKE1YTDg2MlhYX0ZXX1JFQk9PVF9ERUxBWV9NUyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ludCBteGw4NjJ4eF9kZXZsaW5rX2luZm9fZ2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbiYjNDM7XHRcdFx0ICAgICAgc3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJlcSxcbiYjNDM7XHRcdFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuJiM0MztcdGNvbnN0IGNoYXIgKmNvbXBhdGlibGU7XG4mIzQzO1x0Y2hhciB2ZXJfc3RyWzMyXTtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAoIW9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nX2luZGV4KGRzLVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDtjb21wYXRpYmxlXCYjMzQ7LCAwLFxuJiM0MztcdFx0XHRcdFx0ICAgXHUwMDI2Y29tcGF0aWJsZSkpIHtcbiYjNDM7XHRcdHJldCA9IGRldmxpbmtfaW5mb192ZXJzaW9uX2ZpeGVkX3B1dChyZXEsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgREVWTElOS19JTkZPX1ZFUlNJT05fR0VORVJJQ19BU0lDX0lELFxuJiM0MztcdFx0XHRcdFx0XHQgICAgIGNvbXBhdGlibGUpO1xuJiM0MztcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChwcml2LVx1MDAzZXJlc2N1ZV9tb2RlKVxuJiM0MztcdFx0cmV0dXJuIGRldmxpbmtfaW5mb192ZXJzaW9uX3J1bm5pbmdfcHV0KHJlcSwgXCYjMzQ7ZndcJiMzNDssXG4mIzQzO1x0XHRcdFx0XHRcdFx0XCYjMzQ7bWN1Ym9vdC1yZXNjdWVcJiMzNDspO1xuJiM0MztcbiYjNDM7XHRzbnByaW50Zih2ZXJfc3RyLCBzaXplb2YodmVyX3N0ciksIFwmIzM0OyV1LiV1LiV1XCYjMzQ7LFxuJiM0MztcdFx0IHByaXYtXHUwMDNlZndfdmVyc2lvbi5tYWpvciwgcHJpdi1cdTAwM2Vmd192ZXJzaW9uLm1pbm9yLFxuJiM0MztcdFx0IHByaXYtXHUwMDNlZndfdmVyc2lvbi5yZXZpc2lvbik7XG4mIzQzO1xuJiM0MztcdHJldHVybiBkZXZsaW5rX2luZm9fdmVyc2lvbl9ydW5uaW5nX3B1dChyZXEsIFwmIzM0O2Z3XCYjMzQ7LCB2ZXJfc3RyKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7aW50IG14bDg2Mnh4X2RldmxpbmtfZmxhc2hfdXBkYXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbiYjNDM7XHRcdFx0XHQgIHN0cnVjdCBkZXZsaW5rX2ZsYXNoX3VwZGF0ZV9wYXJhbXMgKnBhcmFtcyxcbiYjNDM7XHRcdFx0XHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbiYjNDM7XHRzdHJ1Y3QgbXhsODYyeHhfc3lzX2Z3X2ltYWdlX3ZlcnNpb24gdmVyID0ge307XG4mIzQzO1x0c3RydWN0IG14bDg2Mnh4X3JlcHJvYmUgKnJlcHJvYmU7XG4mIzQzO1x0c3RydWN0IGRzYV9wb3J0ICpkcDtcbiYjNDM7XHRpbnQgcmV0LCBpO1xuJiM0MztcbiYjNDM7XHRpZiAocGFyYW1zLVx1MDAzZWNvbXBvbmVudCkge1xuJiM0MztcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCYjMzQ7Y29tcG9uZW50IGlzIG5vdCBzdXBwb3J0ZWRcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlcmVzY3VlX21vZGUpXG4mIzQzO1x0XHRkZXZfaW5mbyhkcy1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdCBcJiMzNDtmbGFzaDogcmVjb3ZlcmluZyBzd2l0Y2ggZnJvbSBNQ1Vib290IHJlc2N1ZSBtb2RlXFxuXCYjMzQ7KTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRkZXZfaW5mbyhkcy1cdTAwM2VkZXYsIFwmIzM0O2ZsYXNoOiBydW5uaW5nIGZpcm13YXJlICV1LiV1LiV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgcHJpdi1cdTAwM2Vmd192ZXJzaW9uLm1ham9yLCBwcml2LVx1MDAzZWZ3X3ZlcnNpb24ubWlub3IsXG4mIzQzO1x0XHRcdCBwcml2LVx1MDAzZWZ3X3ZlcnNpb24ucmV2aXNpb24pO1xuJiM0MztcbiYjNDM7XHQvKiBDbG9zZSBwb3J0cyB3aGlsZSB0aGUgZmlybXdhcmUgaXMgc3RpbGwgYWxpdmUgc28gdGhlIERTQVxuJiM0MztcdCAqIGNvcmUmIzM5O3MgTURCL0ZEQiB0cmFja2luZyBpcyBkcmFpbmVkLCBhbmQgZGV0YWNoIHVzZXIgcG9ydHNcbiYjNDM7XHQgKiBzbyB1c2Vyc3BhY2UgY2Fubm90IHJlb3BlbiB0aGVtIGR1cmluZyB0aGUgZmxhc2guIFRoZVxuJiM0MztcdCAqIGNvbmR1aXQgYmVsb25ncyB0byB0aGUgTUFDIGRyaXZlciBhbmQgaXMgb25seSBjbG9zZWQuXG4mIzQzO1x0ICovXG4mIzQzO1x0cnRubF9sb2NrKCk7XG4mIzQzO1x0ZHNhX3N3aXRjaF9mb3JfZWFjaF91c2VyX3BvcnQoZHAsIGRzKSB7XG4mIzQzO1x0XHRpZiAoZHAtXHUwMDNldXNlcikge1xuJiM0MztcdFx0XHRkZXZfY2xvc2UoZHAtXHUwMDNldXNlcik7XG4mIzQzO1x0XHRcdG5ldGlmX2RldmljZV9kZXRhY2goZHAtXHUwMDNldXNlcik7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcdGRzYV9zd2l0Y2hfZm9yX2VhY2hfY3B1X3BvcnQoZHAsIGRzKVxuJiM0MztcdFx0ZGV2X2Nsb3NlKGRwLVx1MDAzZWNvbmR1aXQpO1xuJiM0MztcdHJ0bmxfdW5sb2NrKCk7XG4mIzQzO1xuJiM0MztcdHByaXYtXHUwMDNlYmxvY2tfaG9zdCA9IHRydWU7XG4mIzQzO1xuJiM0MztcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZwcml2LVx1MDAzZXN0YXRzX3dvcmspO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRzLVx1MDAzZW51bV9wb3J0czsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNnByaXYtXHUwMDNlcG9ydHNbaV0uaG9zdF9mbG9vZF93b3JrKTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gbXhsODYyeHhfZmxhc2hfZmlybXdhcmUocHJpdiwgcGFyYW1zLVx1MDAzZWZ3LCBkcy1cdTAwM2VkZXZsaW5rKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCYjMzQ7ZmlybXdhcmUgdHJhbnNmZXIgZmFpbGVkXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFyZXQpIHtcbiYjNDM7XHRcdC8qIGxpZnQgdGhlIGJsb2NrIHRvIHF1ZXJ5IHRoZSBuZXcgZmlybXdhcmUgdmVyc2lvbiAqL1xuJiM0MztcdFx0cHJpdi1cdTAwM2VibG9ja19ob3N0ID0gZmFsc2U7XG4mIzQzO1x0XHRwcml2LVx1MDAzZXJlc2N1ZV9tb2RlID0gZmFsc2U7XG4mIzQzO1x0XHRtZW1zZXQoXHUwMDI2dmVyLCAwLCBzaXplb2YodmVyKSk7XG4mIzQzO1x0XHRpZiAoIU1YTDg2MlhYX0FQSV9SRUFEX1FVSUVUKHByaXYsIFNZU19NSVNDX0ZXX1ZFUlNJT04sIHZlcikgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgdmVyLml2X21ham9yKVxuJiM0MztcdFx0XHRkZXZfaW5mbyhkcy1cdTAwM2VkZXYsIFwmIzM0O2ZsYXNoOiBuZXcgZmlybXdhcmUgJXUuJXUuJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0IHZlci5pdl9tYWpvciwgdmVyLml2X21pbm9yLFxuJiM0MztcdFx0XHRcdCBsZTE2X3RvX2NwdSh2ZXIuaXZfcmV2aXNpb24pKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHByaXYtXHUwMDNlc2tpcF90ZWFyZG93biA9IHRydWU7XG4mIzQzO1xuJiM0MztcdHJlcHJvYmUgPSBremFsbG9jX29iaigqcmVwcm9iZSk7XG4mIzQzO1x0aWYgKCFyZXByb2JlKVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0aWYgKCF0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSkpIHtcbiYjNDM7XHRcdGtmcmVlKHJlcHJvYmUpO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJlcHJvYmUtXHUwMDNlZGV2ID0gZ2V0X2RldmljZShkcy1cdTAwM2VkZXYpO1xuJiM0MztcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnJlcHJvYmUtXHUwMDNlZHdvcmssIG14bDg2Mnh4X3JlcHJvYmVfd29ya19mbik7XG4mIzQzO1x0c2NoZWR1bGVfZGVsYXllZF93b3JrKFx1MDAyNnJlcHJvYmUtXHUwMDNlZHdvcmssIG1zZWNzX3RvX2ppZmZpZXMoNTAwKSk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtZncuaCBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1mdy5oXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjU3YzIwMDBjZmVlNTE5XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtZncuaFxuQEAgLTAsMCAmIzQzOzEsMTggQEBcbiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIgKi9cbiYjNDM7XG4mIzQzOyNpZm5kZWYgX19NWEw4NjJYWF9GV19IXG4mIzQzOyNkZWZpbmUgX19NWEw4NjJYWF9GV19IXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NuZXQvZHNhLmhcdTAwM2VcbiYjNDM7XG4mIzQzO3N0cnVjdCBteGw4NjJ4eF9wcml2O1xuJiM0MztcbiYjNDM7Ym9vbCBteGw4NjJ4eF9yZXNjdWVfbW9kZV9kZXRlY3Qoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYpO1xuJiM0MztpbnQgbXhsODYyeHhfZGV2bGlua19pbmZvX2dldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBkZXZsaW5rX2luZm9fcmVxICpyZXEsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG4mIzQzO2ludCBteGw4NjJ4eF9kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgZGV2bGlua19mbGFzaF91cGRhdGVfcGFyYW1zICpwYXJhbXMsXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuJiM0MztcbiYjNDM7I2VuZGlmIC8qIF9fTVhMODYyWFhfRldfSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmMgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5jXG5pbmRleCA0YWNkMjE2ZjdjYzAwOS4uZDZjMGNkZmEwZTY4OTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5jXG5AQCAtMTUsNiAmIzQzOzE1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9kc2EuaFx1MDAzZVxuICNpbmNsdWRlIFwmIzM0O214bDg2Mnh4LmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7bXhsODYyeHgtY21kLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtteGw4NjJ4eC1ob3N0LmhcJiMzNDtcbiBcbiAjZGVmaW5lIENUUkxfQlVTWV9NQVNLXHRcdFx0QklUKDE1KVxuQEAgLTMzNiw2ICYjNDM7MzM3LDE1IEBAIGludCBteGw4NjJ4eF9hcGlfd3JhcChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTE2IGNtZCwgdm9pZCAqX2RhdGEsXG4gXHRpbnQgcmV0LCBjbWRfcmV0O1xuIFx0dTE2IG1heCwgY3JjLCBpO1xuIFxuJiM0MztcdGlmIChwcml2LVx1MDAzZXNraXBfdGVhcmRvd24pXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlcmVzY3VlX21vZGUpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlYmxvY2tfaG9zdCBcdTAwMjZcdTAwMjYgY21kICE9IFNZU19NSVNDX0ZXX1VQREFURSlcbiYjNDM7XHRcdHJldHVybiAtRUJVU1k7XG4mIzQzO1xuIFx0ZGV2X2RiZyhcdTAwMjZwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlZGV2LCBcJiMzNDtDTUQgJTA0eCBEQVRBICUqcGhcXG5cJiMzNDssIGNtZCwgc2l6ZSwgZGF0YSk7XG4gXG4gXHRtdXRleF9sb2NrX25lc3RlZChcdTAwMjZwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlYnVzLVx1MDAzZW1kaW9fbG9jaywgTURJT19NVVRFWF9ORVNURUQpO1xuQEAgLTQ5NSw2ICYjNDM7NTA1LDQxIEBAIGludCBteGw4NjJ4eF9yZXNldChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdilcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuJiM0MzsjZGVmaW5lIE1YTDg2MlhYX1NNRElPX0FERFJfUkVHXHRcdDB4MWZcbiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TTURJT19QQUdFX01BU0tcdDB4ZmZmMFxuJiM0MzsjZGVmaW5lIE1YTDg2MlhYX1NNRElPX09GRl9NQVNLXHRcdDB4MDAwZlxuJiM0MztcbiYjNDM7aW50IG14bDg2Mnh4X3NtZGlvX3JlYWQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUzMiBhZGRyKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG1paV9idXMgKmJ1cyA9IHByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VidXM7XG4mIzQzO1x0aW50IHBoeSA9IHByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VhZGRyO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2YnVzLVx1MDAzZW1kaW9fbG9jayk7XG4mIzQzO1x0cmV0ID0gX19tZGlvYnVzX3dyaXRlKGJ1cywgcGh5LCBNWEw4NjJYWF9TTURJT19BRERSX1JFRyxcbiYjNDM7XHRcdFx0ICAgICAgYWRkciBcdTAwMjYgTVhMODYyWFhfU01ESU9fUEFHRV9NQVNLKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzZT0gMClcbiYjNDM7XHRcdHJldCA9IF9fbWRpb2J1c19yZWFkKGJ1cywgcGh5LCBhZGRyIFx1MDAyNiBNWEw4NjJYWF9TTURJT19PRkZfTUFTSyk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmJ1cy1cdTAwM2VtZGlvX2xvY2spO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ludCBteGw4NjJ4eF9zbWRpb193cml0ZShzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTMyIGFkZHIsIHUxNiB2YWwpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWJ1cztcbiYjNDM7XHRpbnQgcGh5ID0gcHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWFkZHI7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZidXMtXHUwMDNlbWRpb19sb2NrKTtcbiYjNDM7XHRyZXQgPSBfX21kaW9idXNfd3JpdGUoYnVzLCBwaHksIE1YTDg2MlhYX1NNRElPX0FERFJfUkVHLFxuJiM0MztcdFx0XHQgICAgICBhZGRyIFx1MDAyNiBNWEw4NjJYWF9TTURJT19QQUdFX01BU0spO1xuJiM0MztcdGlmIChyZXQgXHUwMDNlPSAwKVxuJiM0MztcdFx0cmV0ID0gX19tZGlvYnVzX3dyaXRlKGJ1cywgcGh5LCBhZGRyIFx1MDAyNiBNWEw4NjJYWF9TTURJT19PRkZfTUFTSyxcbiYjNDM7XHRcdFx0XHQgICAgICB2YWwpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZidXMtXHUwMDNlbWRpb19sb2NrKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuIHZvaWQgbXhsODYyeHhfaG9zdF9pbml0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KVxuIHtcbiBcdElOSVRfV09SSyhcdTAwMjZwcml2LVx1MDAzZWNyY19lcnJfd29yaywgbXhsODYyeHhfY3JjX2Vycl93b3JrX2ZuKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5oIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWhvc3QuaFxuaW5kZXggNjZkNmFlMTk4YWZmNDUuLjRlMDU0YzZlNGMwZTQwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWhvc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWhvc3QuaFxuQEAgLTE4LDUgJiM0MzsxOCw3IEBAIGludCBteGw4NjJ4eF9hcGlfd3JhcChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTE2IGNtZCwgdm9pZCAqZGF0YSwgdTE2IHNpemUsXG4gXHRteGw4NjJ4eF9hcGlfd3JhcChkZXYsIGNtZCwgXHUwMDI2KGRhdGEpLCBzaXplb2YoKGRhdGEpKSwgdHJ1ZSwgdHJ1ZSlcbiBcbiBpbnQgbXhsODYyeHhfcmVzZXQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYpO1xuJiM0MztpbnQgbXhsODYyeHhfc21kaW9fcmVhZChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTMyIGFkZHIpO1xuJiM0MztpbnQgbXhsODYyeHhfc21kaW9fd3JpdGUoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUzMiBhZGRyLCB1MTYgdmFsKTtcbiBcbiAjZW5kaWYgLyogX19NWEw4NjJYWF9IT1NUX0ggKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuY1xuaW5kZXggYjY4OTY1MmFhOWI5MjAuLmE1YjY5NDBiNTUyZTllIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuY1xuQEAgLTQwNiw2ICYjNDM7NDA2LDggQEAgbXhsODYyeHhfcGh5bGlua19tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcbiBcdHN3aXRjaCAocG9ydCkge1xuIFx0Y2FzZSA5IC4uLiAxNjpcbiYjNDM7XHRcdGlmIChwcml2LVx1MDAzZXJlc2N1ZV9tb2RlKVxuJiM0MztcdFx0XHRyZXR1cm4gTlVMTDtcbiBcdFx0aWYgKCFNWEw4NjJYWF9GV19WRVJfTUlOKHByaXYsIDEsIDAsIDg0KSkge1xuIFx0XHRcdGRldl93YXJuX29uY2UoZHAtXHUwMDNlZHMtXHUwMDNlZGV2LFxuIFx0XHRcdFx0ICAgICAgXCYjMzQ7U2VyRGVzIFBDUyB1bnN1cHBvcnRlZCBvbiBvbGQgZmlybXdhcmUuXFxuXCYjMzQ7KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jXG5pbmRleCA0NWQyMzdiM2E0MGYxMC4uYjczODVjZmE1NDc0NTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmNcbkBAIC0yMSw2ICYjNDM7MjEsNyBAQFxuICNpbmNsdWRlIFwmIzM0O214bDg2Mnh4LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtteGw4NjJ4eC1hcGkuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O214bDg2Mnh4LWNtZC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O214bDg2Mnh4LWZ3LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtteGw4NjJ4eC1ob3N0LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtteGw4NjJ4eC1waHlsaW5rLmhcJiMzNDtcbiBcbkBAIC02MjgsOSAmIzQzOzYyOSwyMiBAQCBzdGF0aWMgaW50IG14bDg2Mnh4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRyZXQgPSBteGw4NjJ4eF93YWl0X3JlYWR5KGRzKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4mIzQzO1x0cHJpdi1cdTAwM2VyZXNjdWVfbW9kZSA9IG14bDg2Mnh4X3Jlc2N1ZV9tb2RlX2RldGVjdChwcml2KTtcbiYjNDM7XHRpZiAoIXByaXYtXHUwMDNlcmVzY3VlX21vZGUpIHtcbiYjNDM7XHRcdHJldCA9IG14bDg2Mnh4X3dhaXRfcmVhZHkoZHMpO1xuJiM0MztcdFx0aWYgKHJldCkge1xuJiM0MztcdFx0XHQvKiB0aGUgcmVzZXQgbWF5IG9ubHkgbm93IGhhdmUgdHJpZ2dlcmVkIHJlc2N1ZSBtb2RlICovXG4mIzQzO1x0XHRcdHByaXYtXHUwMDNlcmVzY3VlX21vZGUgPSBteGw4NjJ4eF9yZXNjdWVfbW9kZV9kZXRlY3QocHJpdik7XG4mIzQzO1x0XHRcdGlmICghcHJpdi1cdTAwM2VyZXNjdWVfbW9kZSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlcmVzY3VlX21vZGUpIHtcbiYjNDM7XHRcdGRldl93YXJuKGRzLVx1MDAzZWRldixcbiYjNDM7XHRcdFx0IFwmIzM0O3N3aXRjaCBzdHVjayBpbiBNQ1Vib290IHJlc2N1ZSBtb2RlLCB1c2UgZGV2bGluayB0byBmbGFzaCBuZXcgZmlybXdhcmVcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0fVxuIFxuIFx0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZXNlcmRlc19sb2NrKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUocHJpdi1cdTAwM2VzZXJkZXNfcG9ydHMpOyBpJiM0MzsmIzQzOylcbkBAIC03MTUsMTEgJiM0Mzs3MjksMjEgQEAgc3RhdGljIGludCBteGw4NjJ4eF9wb3J0X3N0YXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGJvb2wgZW5hYmxlKVxuIHN0YXRpYyBpbnQgbXhsODYyeHhfcG9ydF9lbmFibGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdFx0XHRcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuJiM0MztcdHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbiYjNDM7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlcmVzY3VlX21vZGUpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4gXHRyZXR1cm4gbXhsODYyeHhfcG9ydF9zdGF0ZShkcywgcG9ydCwgdHJ1ZSk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG14bDg2Mnh4X3BvcnRfZGlzYWJsZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxuIHtcbiYjNDM7XHRzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG4mIzQzO1xuJiM0MztcdGlmIChwcml2LVx1MDAzZXJlc2N1ZV9tb2RlKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiBcdGlmIChteGw4NjJ4eF9wb3J0X3N0YXRlKGRzLCBwb3J0LCBmYWxzZSkpXG4gXHRcdGRldl9lcnIoZHMtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gZGlzYWJsZSBwb3J0ICVkXFxuXCYjMzQ7LCBwb3J0KTtcbiB9XG5AQCAtMTMzNyw2ICYjNDM7MTM2MSwxMiBAQCBzdGF0aWMgaW50IG14bDg2Mnh4X3BvcnRfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcbiBcdGJvb2wgaXNfY3B1X3BvcnQgPSBkc2FfcG9ydF9pc19jcHUoZHApO1xuIFx0aW50IHJldDtcbiBcbiYjNDM7XHQvKiBEU0EgcmVpbml0cyBmYWlsZWQgdXNlciBwb3J0cyBhcyB1bnVzZWQ7IHNoYXJlZCBwb3J0cyBtdXN0XG4mIzQzO1x0ICogc3VjY2VlZCBmb3IgdGhlIHRyZWUgdG8gcmVnaXN0ZXIuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlcmVzY3VlX21vZGUpXG4mIzQzO1x0XHRyZXR1cm4gZHNhX3BvcnRfaXNfdXNlcihkcCkgPyAtRU5PREVWIDogMDtcbiYjNDM7XG4gXHRyZXQgPSBteGw4NjJ4eF9wb3J0X3N0YXRlKGRzLCBwb3J0LCBmYWxzZSk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuQEAgLTE2MjgsNiAmIzQzOzE2NTgsOSBAQCBzdGF0aWMgdm9pZCBteGw4NjJ4eF9wb3J0X3N0cF9zdGF0ZV9zZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbiBcdGludCByZXQ7XG4gXG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlcmVzY3VlX21vZGUpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0c3dpdGNoIChzdGF0ZSkge1xuIFx0Y2FzZSBCUl9TVEFURV9ESVNBQkxFRDpcbiBcdFx0cGFyYW0ucG9ydF9zdGF0ZSA9IGNwdV90b19sZTMyKE1YTDg2MlhYX1NUUF9QT1JUX1NUQVRFX0RJU0FCTEUpO1xuQEAgLTIwODYsNiAmIzQzOzIxMTksOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIG14bDg2Mnh4X3N3aXRjaF9vcHMgPSB7XG4gXHQuZ2V0X3BhdXNlX3N0YXRzID0gbXhsODYyeHhfZ2V0X3BhdXNlX3N0YXRzLFxuIFx0LmdldF9ybW9uX3N0YXRzID0gbXhsODYyeHhfZ2V0X3Jtb25fc3RhdHMsXG4gXHQuZ2V0X3N0YXRzNjQgPSBteGw4NjJ4eF9nZXRfc3RhdHM2NCxcbiYjNDM7XHQuZGV2bGlua19pbmZvX2dldCA9IG14bDg2Mnh4X2RldmxpbmtfaW5mb19nZXQsXG4mIzQzO1x0LmRldmxpbmtfZmxhc2hfdXBkYXRlID0gbXhsODYyeHhfZGV2bGlua19mbGFzaF91cGRhdGUsXG4gfTtcbiBcbiBzdGF0aWMgaW50IG14bDg2Mnh4X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguaCBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5oXG5pbmRleCA0MzJhNWYzZjJlMDhlNi4uNWQyMTI5NjU2MWUzYWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmhcbkBAIC0zMTksNiAmIzQzOzMxOSwxMiBAQCBzdHJ1Y3QgbXhsODYyeHhfZndfdmVyc2lvbiB7XG4gICogQGV2bGFuX2luZ3Jlc3Nfc2l6ZTogcGVyLXBvcnQgaW5ncmVzcyBFeHRlbmRlZCBWTEFOIGJsb2NrIHNpemVcbiAgKiBAZXZsYW5fZWdyZXNzX3NpemU6ICBwZXItcG9ydCBlZ3Jlc3MgRXh0ZW5kZWQgVkxBTiBibG9jayBzaXplXG4gICogQHZmX2Jsb2NrX3NpemU6ICAgICAgcGVyLXBvcnQgVkxBTiBGaWx0ZXIgYmxvY2sgc2l6ZVxuJiM0MzsgKiBAYmxvY2tfaG9zdDogICAgICAgICByZWplY3QgZmlybXdhcmUgQVBJIGNvbW1hbmRzIChleGNlcHQgRldfVVBEQVRFKVxuJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICBkdXJpbmcgYSBmaXJtd2FyZSBmbGFzaFxuJiM0MzsgKiBAc2tpcF90ZWFyZG93bjogICAgICBkaXNjYXJkIGZpcm13YXJlIEFQSSBjb21tYW5kcyBkdXJpbmcgdGhlIHRlYXJkb3duXG4mIzQzOyAqICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJlZCBieSB0aGUgcG9zdC1mbGFzaCByZXByb2JlXG4mIzQzOyAqIEByZXNjdWVfbW9kZTogICAgICAgIHN3aXRjaCBpcyBzdHVjayBpbiBNQ1Vib290OyBmaXJtd2FyZSBBUEkgY29tbWFuZHNcbiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgZmFpbCBmYXN0LCBvbmx5IGNsYXVzZS0yMiBTTURJTyB3b3Jrc1xuICAqIEBzdGF0c193b3JrOiAgICAgICAgIHBlcmlvZGljIHdvcmsgaXRlbSB0aGF0IHBvbGxzIFJNT04gaGFyZHdhcmUgY291bnRlcnNcbiAgKiAgICAgICAgICAgICAgICAgICAgICBhbmQgYWNjdW11bGF0ZXMgdGhlbSBpbnRvIDY0LWJpdCBwZXItcG9ydCBzdGF0c1xuICAqL1xuQEAgLTMzNyw2ICYjNDM7MzQzLDkgQEAgc3RydWN0IG14bDg2Mnh4X3ByaXYge1xuIFx0dTE2IGV2bGFuX2luZ3Jlc3Nfc2l6ZTtcbiBcdHUxNiBldmxhbl9lZ3Jlc3Nfc2l6ZTtcbiBcdHUxNiB2Zl9ibG9ja19zaXplO1xuJiM0MztcdGJvb2wgYmxvY2tfaG9zdDtcbiYjNDM7XHRib29sIHNraXBfdGVhcmRvd247XG4mIzQzO1x0Ym9vbCByZXNjdWVfbW9kZTtcbiBcdHN0cnVjdCBkZWxheWVkX3dvcmsgc3RhdHNfd29yaztcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2RzYS5oIGIvaW5jbHVkZS9uZXQvZHNhLmhcbmluZGV4IDhjMTZlZjIzY2MxMDJhLi5jOWUxOTM0OGRlNjE5MyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2RzYS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9kc2EuaFxuQEAgLTExNzAsNiAmIzQzOzExNzAsOSBAQCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMge1xuIFx0aW50XHQoKmRldmxpbmtfaW5mb19nZXQpKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgZGV2bGlua19pbmZvX3JlcSAqcmVxLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG4mIzQzO1x0aW50XHQoKmRldmxpbmtfZmxhc2hfdXBkYXRlKShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3QgZGV2bGlua19mbGFzaF91cGRhdGVfcGFyYW1zICpwYXJhbXMsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuIFx0aW50XHQoKmRldmxpbmtfc2JfcG9vbF9nZXQpKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbiBcdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgc2JfaW5kZXgsIHUxNiBwb29sX2luZGV4LFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCBkZXZsaW5rX3NiX3Bvb2xfaW5mbyAqcG9vbF9pbmZvKTtcbmRpZmYgLS1naXQgYS9uZXQvZHNhL2RldmxpbmsuYyBiL25ldC9kc2EvZGV2bGluay5jXG5pbmRleCBlZDM0MmYzNDU2OTJiYi4uMjUzMTFhODdjYmM1NmQgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL2RldmxpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS9kZXZsaW5rLmNcbkBAIC0yMCw2ICYjNDM7MjAsMTggQEAgc3RhdGljIGludCBkc2FfZGV2bGlua19pbmZvX2dldChzdHJ1Y3QgZGV2bGluayAqZGwsXG4gXHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IGRzYV9kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZGV2bGluayAqZGwsXG4mIzQzO1x0XHRcdFx0ICAgIHN0cnVjdCBkZXZsaW5rX2ZsYXNoX3VwZGF0ZV9wYXJhbXMgKnBhcmFtcyxcbiYjNDM7XHRcdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfdG9fZHMoZGwpO1xuJiM0MztcbiYjNDM7XHRpZiAoIWRzLVx1MDAzZW9wcy1cdTAwM2VkZXZsaW5rX2ZsYXNoX3VwZGF0ZSlcbiYjNDM7XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGRzLVx1MDAzZW9wcy1cdTAwM2VkZXZsaW5rX2ZsYXNoX3VwZGF0ZShkcywgcGFyYW1zLCBleHRhY2spO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgZHNhX2Rldmxpbmtfc2JfcG9vbF9nZXQoc3RydWN0IGRldmxpbmsgKmRsLFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgaW50IHNiX2luZGV4LCB1MTYgcG9vbF9pbmRleCxcbiBcdFx0XHRcdCAgIHN0cnVjdCBkZXZsaW5rX3NiX3Bvb2xfaW5mbyAqcG9vbF9pbmZvKVxuQEAgLTE2OSw2ICYjNDM7MTgxLDcgQEAgZHNhX2Rldmxpbmtfc2Jfb2NjX3RjX3BvcnRfYmluZF9nZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqZGxwLFxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgZHNhX2Rldmxpbmtfb3BzID0ge1xuIFx0LmluZm9fZ2V0XHRcdFx0PSBkc2FfZGV2bGlua19pbmZvX2dldCxcbiYjNDM7XHQuZmxhc2hfdXBkYXRlXHRcdFx0PSBkc2FfZGV2bGlua19mbGFzaF91cGRhdGUsXG4gXHQuc2JfcG9vbF9nZXRcdFx0XHQ9IGRzYV9kZXZsaW5rX3NiX3Bvb2xfZ2V0LFxuIFx0LnNiX3Bvb2xfc2V0XHRcdFx0PSBkc2FfZGV2bGlua19zYl9wb29sX3NldCxcbiBcdC5zYl9wb3J0X3Bvb2xfZ2V0XHRcdD0gZHNhX2Rldmxpbmtfc2JfcG9ydF9wb29sX2dldCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNDo1NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhIGRyaXZlciBmb3IgcGh5c2ljYWwgaGFyZHdhcmUgKE1heExpbmVhciBNeEw4NjJ4eCBzd2l0Y2gpIHdoaWNoIGlzIGFuIE1ESU8gZGV2aWNlLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhpcyBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYmEyZjAyZDVjMzM3ZDA4YzM2ZjFiNzIzODNkOThkYTUwODExMjg0ZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDA0OjU3OjE5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L01ha2VmaWxlIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L01ha2VmaWxlCmluZGV4IGE3YmUwZTY2NjlkZmE1Li5iY2NhYzBkMGY3MDNmNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9NYWtlZmlsZQpAQCAtMSwzICYjNDM7MSwzIEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiBvYmotJChDT05GSUdfTkVUX0RTQV9NWEw4NjIpICYjNDM7PSBteGw4NjJ4eF9kc2EubwotbXhsODYyeHhfZHNhLXkgOj0gbXhsODYyeHgubyBteGw4NjJ4eC1ob3N0Lm8gbXhsODYyeHgtcGh5bGluay5vCiYjNDM7bXhsODYyeHhfZHNhLXkgOj0gbXhsODYyeHgubyBteGw4NjJ4eC1ob3N0Lm8gbXhsODYyeHgtcGh5bGluay5vIG14bDg2Mnh4LWZ3Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1jbWQuaCBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1jbWQuaAppbmRleCBjODdhOTU1YzEzYzQ4ZS4uZTJhYTI5MzRlOWUxNjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1jbWQuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtY21kLmgKQEAgLTcwLDYgJiM0Mzs3MCw3IEBACiAjZGVmaW5lIElOVF9HUEhZX1JFQUQJCQkoR1BZX0dQWTJYWF9NQUdJQyAmIzQzOyAweDEpCiAjZGVmaW5lIElOVF9HUEhZX1dSSVRFCQkJKEdQWV9HUFkyWFhfTUFHSUMgJiM0MzsgMHgyKQogCiYjNDM7I2RlZmluZSBTWVNfTUlTQ19GV19VUERBVEUJCShTWVNfTUlTQ19NQUdJQyAmIzQzOyAweDEpCiAjZGVmaW5lIFNZU19NSVNDX0ZXX1ZFUlNJT04JCShTWVNfTUlTQ19NQUdJQyAmIzQzOyAweDIpCiAKICNkZWZpbmUgTVhMODYyWFhfWFBDU19QQ1NfQ09ORklHCShNWEw4NjJYWF9YUENTX01BR0lDICYjNDM7IDB4MSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1mdy5jIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWZ3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjg4ZDUzYmVhMzM2ZmQ1Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWZ3LmMKQEAgLTAsMCAmIzQzOzEsNDM5IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKJiM0MzsvKgomIzQzOyAqIEZpcm13YXJlIGZsYXNoIGFuZCBkZXZsaW5rIHN1cHBvcnQgZm9yIE1heExpbmVhciBNeEw4NjJ4eAomIzQzOyAqCiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDI1IERhbmllbCBHb2xsZSAmbHQ7ZGFuaWVsQG1ha3JvdG9waWEub3JnJmd0OwomIzQzOyAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9jcmMzMi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kZWxheS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L25ldGRldmljZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9vZi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9ydG5ldGxpbmsuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bmV0L2RzYS5oJmd0OwomIzQzOwomIzQzOyNpbmNsdWRlICYjMzQ7bXhsODYyeHguaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtteGw4NjJ4eC1hcGkuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtteGw4NjJ4eC1jbWQuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtteGw4NjJ4eC1mdy5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O214bDg2Mnh4LWhvc3QuaCYjMzQ7CiYjNDM7CiYjNDM7LyogU0IgUERJIHJlZ2lzdGVycyAoY2xhdXNlLTIyIFNNRElPIGFkZHJlc3Mgc3BhY2UpICovCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfQ1RSTAkJMHhlMTAwCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfQUREUgkJMHhlMTAxCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfREFUQQkJMHhlMTAyCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfU1RBVAkJMHhlMTAzCiYjNDM7CiYjNDM7LyogU0IgUERJIENUUkwgbW9kZXMgKi8KJiM0MzsjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9DVFJMX1JTVAkweDAwCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfQ1RSTF9XUgkweDAyCiYjNDM7CiYjNDM7LyogU0IgUERJIGhhbmRzaGFrZSBtYWdpYyAqLwomIzQzOyNkZWZpbmUgTVhMODYyWFhfU0JfUERJX1JFQURZCQkweGM1NWMKJiM0MzsjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9TVEFSVAkJMHhmNDhmCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TQl9QRElfRU5ECQkweDNjYzMKJiM0MzsKJiM0MzsvKiBGaXJtd2FyZSB0cmFuc2ZlciBnZW9tZXRyeSAqLwomIzQzOyNkZWZpbmUgTVhMODYyWFhfRldfSERSX1NJWkUJCTIwCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9GV19CQU5LX0hBTEYJCTE2Mzg0CS8qIHdvcmRzIHBlciBoYWxmLWJhbmsgKi8KJiM0MzsjZGVmaW5lIE1YTDg2MlhYX0ZXX0JBTktfU0xJQ0UJCTMyNzYwCS8qIHdvcmRzIHBlciBmdWxsIHNsaWNlICovCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9GV19TQjFfQUREUgkJMHg3ODAwCS8qIFNCMSB3b3JkIGFkZHJlc3MgKi8KJiM0MzsKJiM0MzsvKiBUaW1lb3V0cyAoZ2VuZXJvdXMgdXBwZXIgYm91bmRzKSAqLwomIzQzOyNkZWZpbmUgTVhMODYyWFhfRldfUkVBRFlfVElNRU9VVF9NUwkzMDAwMAomIzQzOyNkZWZpbmUgTVhMODYyWFhfRldfQUNLX1RJTUVPVVRfTVMJNTAwMAomIzQzOyNkZWZpbmUgTVhMODYyWFhfRldfRVJBU0VfVElNRU9VVF9NUwkzMDAwMDAKJiM0MzsjZGVmaW5lIE1YTDg2MlhYX0ZXX1dSSVRFX1RJTUVPVVRfTVMJMTIwMDAwCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9GV19SRUJPT1RfREVMQVlfTVMJNTAwMAomIzQzOwomIzQzO3N0YXRpYyB2b2lkIG14bDg2Mnh4X3NiX3BkaV9yZXNldChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdikKJiM0Mzt7CiYjNDM7CW14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9DVFJMLAomIzQzOwkJCSAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfUlNUKTsKJiM0MzsJbXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0FERFIsCiYjNDM7CQkJICAgICBNWEw4NjJYWF9TQl9QRElfQ1RSTF9SU1QpOwomIzQzOwlteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfREFUQSwKJiM0MzsJCQkgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1JTVCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgbXhsODYyeHhfc2JfcGRpX3BvbGxfc3RhdChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTE2IGV4cGVjdGVkLAomIzQzOwkJCQkgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dF9tcykKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgdGltZW91dCA9IGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyh0aW1lb3V0X21zKTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJZG8gewomIzQzOwkJcmV0ID0gbXhsODYyeHhfc21kaW9fcmVhZChwcml2LCBNWEw4NjJYWF9TQl9QRElfU1RBVCk7CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwkJaWYgKCh1MTYpcmV0ID09IGV4cGVjdGVkKQomIzQzOwkJCXJldHVybiAwOwomIzQzOwkJdXNsZWVwX3JhbmdlKDEwMDAwLCAxMTAwMCk7CiYjNDM7CX0gd2hpbGUgKHRpbWVfYmVmb3JlKGppZmZpZXMsIHRpbWVvdXQpKTsKJiM0MzsKJiM0MzsJcmV0dXJuIC1FVElNRURPVVQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgbXhsODYyeHhfc2JfcGRpX2ZsdXNoX3NsaWNlKHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2LAomIzQzOwkJCQkgICAgICAgdTMyIGRhdGFfd3JpdHRlbikKJiM0Mzt7CiYjNDM7CW14bDg2Mnh4X3NiX3BkaV9yZXNldChwcml2KTsKJiM0MzsJbXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVQsIGRhdGFfd3JpdHRlbik7CiYjNDM7CiYjNDM7CXJldHVybiBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIDAsCiYjNDM7CQkJCQkgTVhMODYyWFhfRldfV1JJVEVfVElNRU9VVF9NUyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIG14bDg2Mnh4X2ZsYXNoX25vdGlmeShzdHJ1Y3QgZGV2bGluayAqZGwsIGNvbnN0IGNoYXIgKnN0YXR1cywKJiM0MzsJCQkJICB1MzIgZG9uZSwgdTMyIHRvdGFsKQomIzQzO3sKJiM0MzsJZGV2bGlua19mbGFzaF91cGRhdGVfc3RhdHVzX25vdGlmeShkbCwgc3RhdHVzLCBOVUxMLCBkb25lLCB0b3RhbCk7CiYjNDM7fQomIzQzOwomIzQzOy8qKgomIzQzOyAqIG14bDg2Mnh4X3Jlc2N1ZV9tb2RlX2RldGVjdCAtIGNoZWNrIHdoZXRoZXIgdGhlIHN3aXRjaCBzaXRzIGluIE1DVWJvb3QKJiM0MzsgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgZGF0YQomIzQzOyAqCiYjNDM7ICogTUNVYm9vdCBzaWduYWxzIHJlYWRpbmVzcyBmb3IgYSBmaXJtd2FyZSBkb3dubG9hZCB3aXRoIHRoZSBTQiBQREkKJiM0MzsgKiByZWFkeSBtYWdpYzsgb25seSB0aGUgY2xhdXNlLTIyIFNNRElPIGludGVyZmFjZSB3b3JrcyBpbiB0aGlzIHN0YXRlLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiB0cnVlIGlmIE1DVWJvb3QgaXMgd2FpdGluZyBmb3IgYSBmaXJtd2FyZSBkb3dubG9hZC4KJiM0MzsgKi8KJiM0Mztib29sIG14bDg2Mnh4X3Jlc2N1ZV9tb2RlX2RldGVjdChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdikKJiM0Mzt7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IG14bDg2Mnh4X3NtZGlvX3JlYWQocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVQpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0ID09IE1YTDg2MlhYX1NCX1BESV9SRUFEWTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyogZGV2aWNlX3JlcHJvYmUoKSAtJmd0OyByZW1vdmUoKSBmcmVlcyBwcml2IHdoaWxlIHRoZSB3b3JrIHJ1bnMsIHNvCiYjNDM7ICogdGhlIHdvcmsgc3RydWN0IGNhbm5vdCBsaXZlIGluIG14bDg2Mnh4X3ByaXYuCiYjNDM7ICovCiYjNDM7c3RydWN0IG14bDg2Mnh4X3JlcHJvYmUgewomIzQzOwlzdHJ1Y3QgZGV2aWNlICpkZXY7CiYjNDM7CXN0cnVjdCBkZWxheWVkX3dvcmsgZHdvcms7CiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBteGw4NjJ4eF9yZXByb2JlX3dvcmtfZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQomIzQzO3sKJiM0MzsJc3RydWN0IG14bDg2Mnh4X3JlcHJvYmUgKnJlcHJvYmUgPQomIzQzOwkJY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBteGw4NjJ4eF9yZXByb2JlLCBkd29yay53b3JrKTsKJiM0MzsKJiM0MzsJaWYgKGRldmljZV9yZXByb2JlKHJlcHJvYmUtJmd0O2RldikpCiYjNDM7CQlkZXZfZXJyKHJlcHJvYmUtJmd0O2RldiwgJiMzNDtyZXByb2JlIGZhaWxlZFxuJiMzNDspOwomIzQzOwlwdXRfZGV2aWNlKHJlcHJvYmUtJmd0O2Rldik7CiYjNDM7CWtmcmVlKHJlcHJvYmUpOwomIzQzOwltb2R1bGVfcHV0KFRISVNfTU9EVUxFKTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyogTUNVYm9vdCBmaXJtd2FyZSBpbWFnZSBoZWFkZXIgKi8KJiM0MztzdHJ1Y3QgbXhsODYyeHhfZndfaGRyIHsKJiM0MzsJX19sZTMyIGltYWdlX3R5cGU7CiYjNDM7CV9fbGUzMiBpbWFnZV9zaXplXzE7CiYjNDM7CV9fbGUzMiBpbWFnZV9jaGVja3N1bV8xOwomIzQzOwlfX2xlMzIgaW1hZ2Vfc2l6ZV8yOwomIzQzOwlfX2xlMzIgaW1hZ2VfY2hlY2tzdW1fMjsKJiM0Mzt9IF9fcGFja2VkOwomIzQzOwomIzQzO3N0YXRpYyBpbnQgbXhsODYyeHhfZmxhc2hfZmlybXdhcmUoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsCiYjNDM7CQkJCSAgIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncsCiYjNDM7CQkJCSAgIHN0cnVjdCBkZXZsaW5rICpkbCkKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBteGw4NjJ4eF9md19oZHIgKmhkcjsKJiM0MzsJdTMyIHdvcmRfaWR4ID0gMCwgZGF0YV93cml0dGVuID0gMCwgaWR4ID0gMDsKJiM0MzsJdW5zaWduZWQgbG9uZyBuZXh0X25vdGlmeSA9IDA7CiYjNDM7CWNvbnN0IHU4ICpwYXlsb2FkOwomIzQzOwl1MzIgcGF5bG9hZF9zaXplOwomIzQzOwl1MTYgd29yZCwgZmRhdGE7CiYjNDM7CWludCByZXQsIGk7CiYjNDM7CXUzMiBjcmM7CiYjNDM7CiYjNDM7CWlmIChmdy0mZ3Q7c2l6ZSAmbHQ7IE1YTDg2MlhYX0ZXX0hEUl9TSVpFKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CWhkciA9IChjb25zdCBzdHJ1Y3QgbXhsODYyeHhfZndfaGRyICopZnctJmd0O2RhdGE7CiYjNDM7CXBheWxvYWQgPSBmdy0mZ3Q7ZGF0YSAmIzQzOyBNWEw4NjJYWF9GV19IRFJfU0laRTsKJiM0MzsJcGF5bG9hZF9zaXplID0gbGUzMl90b19jcHUoaGRyLSZndDtpbWFnZV9zaXplXzEpICYjNDM7CiYjNDM7CQkgICAgICAgbGUzMl90b19jcHUoaGRyLSZndDtpbWFnZV9zaXplXzIpOwomIzQzOwomIzQzOwlpZiAocGF5bG9hZF9zaXplICZndDsgZnctJmd0O3NpemUgLSBNWEw4NjJYWF9GV19IRFJfU0laRSkgewomIzQzOwkJZGV2X2VycigmYW1wO3ByaXYtJmd0O21kaW9kZXYtJmd0O2RldiwKJiM0MzsJCQkmIzM0O2ZsYXNoOiBmaXJtd2FyZSBmaWxlIHRvbyBzbWFsbCBmb3IgZGVjbGFyZWQgc2l6ZVxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKGxlMzJfdG9fY3B1KGhkci0mZ3Q7aW1hZ2Vfc2l6ZV8xKSkgewomIzQzOwkJY3JjID0gfmNyYzMyX2xlKH4wVSwgcGF5bG9hZCwKJiM0MzsJCQkJbGUzMl90b19jcHUoaGRyLSZndDtpbWFnZV9zaXplXzEpKTsKJiM0MzsJCWlmIChjcmMgIT0gbGUzMl90b19jcHUoaGRyLSZndDtpbWFnZV9jaGVja3N1bV8xKSkgewomIzQzOwkJCWRldl9lcnIoJmFtcDtwcml2LSZndDttZGlvZGV2LSZndDtkZXYsCiYjNDM7CQkJCSYjMzQ7Zmxhc2g6IGltYWdlIDEgQ1JDIG1pc21hdGNoIChnb3QgJTA4eCwgZXhwZWN0ZWQgJTA4eClcbiYjMzQ7LAomIzQzOwkJCQljcmMsIGxlMzJfdG9fY3B1KGhkci0mZ3Q7aW1hZ2VfY2hlY2tzdW1fMSkpOwomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChsZTMyX3RvX2NwdShoZHItJmd0O2ltYWdlX3NpemVfMikpIHsKJiM0MzsJCWNyYyA9IH5jcmMzMl9sZSh+MFUsCiYjNDM7CQkJCXBheWxvYWQgJiM0MzsgbGUzMl90b19jcHUoaGRyLSZndDtpbWFnZV9zaXplXzEpLAomIzQzOwkJCQlsZTMyX3RvX2NwdShoZHItJmd0O2ltYWdlX3NpemVfMikpOwomIzQzOwkJaWYgKGNyYyAhPSBsZTMyX3RvX2NwdShoZHItJmd0O2ltYWdlX2NoZWNrc3VtXzIpKSB7CiYjNDM7CQkJZGV2X2VycigmYW1wO3ByaXYtJmd0O21kaW9kZXYtJmd0O2RldiwKJiM0MzsJCQkJJiMzNDtmbGFzaDogaW1hZ2UgMiBDUkMgbWlzbWF0Y2ggKGdvdCAlMDh4LCBleHBlY3RlZCAlMDh4KVxuJiMzNDssCiYjNDM7CQkJCWNyYywgbGUzMl90b19jcHUoaGRyLSZndDtpbWFnZV9jaGVja3N1bV8yKSk7CiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogU3RlcCAxOiByZWJvb3QgdGhlIGZpcm13YXJlIGludG8gTUNVYm9vdCByZXNjdWUgbW9kZSAqLwomIzQzOwlpZiAoIXByaXYtJmd0O3Jlc2N1ZV9tb2RlKSB7CiYjNDM7CQlyZXQgPSBteGw4NjJ4eF9hcGlfd3JhcChwcml2LCBTWVNfTUlTQ19GV19VUERBVEUsIE5VTEwsIDAsCiYjNDM7CQkJCQlmYWxzZSwgZmFsc2UpOwomIzQzOwkJaWYgKHJldCkgewomIzQzOwkJCWRldl9lcnIoJmFtcDtwcml2LSZndDttZGlvZGV2LSZndDtkZXYsCiYjNDM7CQkJCSYjMzQ7Zmxhc2g6IEZXX1VQREFURSBjb21tYW5kIGZhaWxlZDogJXBlXG4mIzM0OywKJiM0MzsJCQkJRVJSX1BUUihyZXQpKTsKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIEZhaWx1cmVzIGZyb20gaGVyZSBvbiBtdXN0IGdvIHRocm91Z2ggZW5kX21hZ2ljIHNvIE1DVWJvb3QKJiM0MzsJICogcmVib290cyBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yZXZlci4KJiM0MzsJICovCiYjNDM7CiYjNDM7CS8qIFN0ZXAgMjogd2FpdCBmb3IgYm9vdGxvYWRlciByZWFkeSAqLwomIzQzOwlteGw4NjJ4eF9mbGFzaF9ub3RpZnkoZGwsICYjMzQ7V2FpdGluZyBmb3IgYm9vdGxvYWRlciYjMzQ7LCAwLCAwKTsKJiM0MzsJbXhsODYyeHhfc2JfcGRpX3Jlc2V0KHByaXYpOwomIzQzOwlyZXQgPSBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIE1YTDg2MlhYX1NCX1BESV9SRUFEWSwKJiM0MzsJCQkJCU1YTDg2MlhYX0ZXX1JFQURZX1RJTUVPVVRfTVMpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKCZhbXA7cHJpdi0mZ3Q7bWRpb2Rldi0mZ3Q7ZGV2LAomIzQzOwkJCSYjMzQ7Zmxhc2g6IGJvb3Rsb2FkZXIgbm90IHJlYWR5OiAlcGVcbiYjMzQ7LCBFUlJfUFRSKHJldCkpOwomIzQzOwkJZ290byBlbmRfbWFnaWM7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogU3RlcCAzOiBzdGFydCBoYW5kc2hha2UgKi8KJiM0MzsJbXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVQsCiYjNDM7CQkJICAgICBNWEw4NjJYWF9TQl9QRElfU1RBUlQpOwomIzQzOwlyZXQgPSBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIE1YTDg2MlhYX1NCX1BESV9TVEFSVCAmIzQzOyAxLAomIzQzOwkJCQkJTVhMODYyWFhfRldfQUNLX1RJTUVPVVRfTVMpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKCZhbXA7cHJpdi0mZ3Q7bWRpb2Rldi0mZ3Q7ZGV2LAomIzQzOwkJCSYjMzQ7Zmxhc2g6IHN0YXJ0IGhhbmRzaGFrZSBmYWlsZWQ6ICVwZVxuJiMzNDssIEVSUl9QVFIocmV0KSk7CiYjNDM7CQlnb3RvIGVuZF9tYWdpYzsKJiM0MzsJfQomIzQzOwomIzQzOwkvKiBTdGVwIDQ6IHRyYW5zZmVyIGltYWdlIGhlYWRlciAqLwomIzQzOwlteGw4NjJ4eF9mbGFzaF9ub3RpZnkoZGwsICYjMzQ7RXJhc2luZyBmbGFzaCYjMzQ7LCAwLCAwKTsKJiM0MzsJbXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsCiYjNDM7CQkJICAgICBNWEw4NjJYWF9TQl9QRElfQ1RSTF9XUik7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBNWEw4NjJYWF9GV19IRFJfU0laRSAvIDI7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQl3b3JkID0gZnctJmd0O2RhdGFbaSAqIDJdIHwKJiM0MzsJCSAgICAgICAoKHUxNilmdy0mZ3Q7ZGF0YVtpICogMiAmIzQzOyAxXSAmbHQ7Jmx0OyA4KTsKJiM0MzsJCW14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9EQVRBLCB3b3JkKTsKJiM0MzsJfQomIzQzOwlteGw4NjJ4eF9zYl9wZGlfcmVzZXQocHJpdik7CiYjNDM7CiYjNDM7CS8qIHRoZSBieXRlIGNvdW50IGluIFNUQVQgdHJpZ2dlcnMgdGhlIGVyYXNlICovCiYjNDM7CW14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9TVEFULAomIzQzOwkJCSAgICAgTVhMODYyWFhfRldfSERSX1NJWkUpOwomIzQzOwomIzQzOwkvKiBBQ0sgaXMgYnl0ZSBjb3VudCAmIzQzOyAxICovCiYjNDM7CXJldCA9IG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQocHJpdiwgTVhMODYyWFhfRldfSERSX1NJWkUgJiM0MzsgMSwKJiM0MzsJCQkJCU1YTDg2MlhYX0ZXX0FDS19USU1FT1VUX01TKTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2VycigmYW1wO3ByaXYtJmd0O21kaW9kZXYtJmd0O2RldiwKJiM0MzsJCQkmIzM0O2ZsYXNoOiBoZWFkZXIgQUNLIGZhaWxlZDogJXBlXG4mIzM0OywgRVJSX1BUUihyZXQpKTsKJiM0MzsJCWdvdG8gZW5kX21hZ2ljOwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIFN0ZXAgNTogd2FpdCBmb3IgZXJhc2UgdG8gY29tcGxldGUgKi8KJiM0MzsJcmV0ID0gbXhsODYyeHhfc2JfcGRpX3BvbGxfc3RhdChwcml2LCAwLAomIzQzOwkJCQkJTVhMODYyWFhfRldfRVJBU0VfVElNRU9VVF9NUyk7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCWRldl9lcnIoJmFtcDtwcml2LSZndDttZGlvZGV2LSZndDtkZXYsCiYjNDM7CQkJJiMzNDtmbGFzaDogZXJhc2UgdGltZW91dDogJXBlXG4mIzM0OywgRVJSX1BUUihyZXQpKTsKJiM0MzsJCWdvdG8gZW5kX21hZ2ljOwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIFN0ZXAgNjogdHJhbnNmZXIgcGF5bG9hZCAqLwomIzQzOwlteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfQ1RSTCwKJiM0MzsJCQkgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1dSKTsKJiM0MzsKJiM0MzsJd2hpbGUgKGlkeCAmbHQ7IHBheWxvYWRfc2l6ZSkgewomIzQzOwkJaWYgKGlkeCAmIzQzOyAxICZsdDsgcGF5bG9hZF9zaXplKSB7CiYjNDM7CQkJZmRhdGEgPSBwYXlsb2FkW2lkeF0gfAomIzQzOwkJCQkoKHUxNilwYXlsb2FkW2lkeCAmIzQzOyAxXSAmbHQ7Jmx0OyA4KTsKJiM0MzsJCQlpZHggJiM0Mzs9IDI7CiYjNDM7CQkJZGF0YV93cml0dGVuICYjNDM7PSAyOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlmZGF0YSA9IHBheWxvYWRbaWR4XTsKJiM0MzsJCQlpZHgmIzQzOyYjNDM7OwomIzQzOwkJCWRhdGFfd3JpdHRlbiYjNDM7JiM0Mzs7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfREFUQSwgZmRhdGEpOwomIzQzOwkJd29yZF9pZHgmIzQzOyYjNDM7OwomIzQzOwomIzQzOwkJaWYgKGlkeCAmZ3Q7PSBwYXlsb2FkX3NpemUpIHsKJiM0MzsJCQlyZXQgPSBteGw4NjJ4eF9zYl9wZGlfZmx1c2hfc2xpY2UocHJpdiwgZGF0YV93cml0dGVuKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCS8qIEhhbGYtYmFuayBib3VuZGFyeTogc3dpdGNoIHRvIFNCMSBhZGRyZXNzICovCiYjNDM7CQlpZiAod29yZF9pZHggPT0gTVhMODYyWFhfRldfQkFOS19IQUxGKSB7CiYjNDM7CQkJbXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsCiYjNDM7CQkJCQkgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1JTVCk7CiYjNDM7CQkJbXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0FERFIsCiYjNDM7CQkJCQkgICAgIE1YTDg2MlhYX0ZXX1NCMV9BRERSKTsKJiM0MzsJCQlteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfQ1RSTCwKJiM0MzsJCQkJCSAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfV1IpOwomIzQzOwkJfSBlbHNlIGlmICh3b3JkX2lkeCAmZ3Q7PSBNWEw4NjJYWF9GV19CQU5LX1NMSUNFKSB7CiYjNDM7CQkJcmV0ID0gbXhsODYyeHhfc2JfcGRpX2ZsdXNoX3NsaWNlKHByaXYsIGRhdGFfd3JpdHRlbik7CiYjNDM7CQkJaWYgKHJldCkgewomIzQzOwkJCQlkZXZfZXJyKCZhbXA7cHJpdi0mZ3Q7bWRpb2Rldi0mZ3Q7ZGV2LAomIzQzOwkJCQkJJiMzNDtmbGFzaDogd3JpdGUgdGltZW91dCBhdCAldS8ldTogJXBlXG4mIzM0OywKJiM0MzsJCQkJCWlkeCwgcGF5bG9hZF9zaXplLCBFUlJfUFRSKHJldCkpOwomIzQzOwkJCQlnb3RvIGVuZF9tYWdpYzsKJiM0MzsJCQl9CiYjNDM7CQkJd29yZF9pZHggPSAwOwomIzQzOwkJCWRhdGFfd3JpdHRlbiA9IDA7CiYjNDM7CQkJbXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsCiYjNDM7CQkJCQkgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1dSKTsKJiM0MzsKJiM0MzsJCQlpZiAodGltZV9hZnRlcihqaWZmaWVzLCBuZXh0X25vdGlmeSkpIHsKJiM0MzsJCQkJbXhsODYyeHhfZmxhc2hfbm90aWZ5KGRsLCAmIzM0O0ZsYXNoaW5nJiMzNDssIGlkeCwKJiM0MzsJCQkJCQkgICAgICBwYXlsb2FkX3NpemUpOwomIzQzOwkJCQluZXh0X25vdGlmeSA9IGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyg1MDApOwomIzQzOwkJCX0KJiM0MzsJCX0KJiM0MzsJfQomIzQzOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKCZhbXA7cHJpdi0mZ3Q7bWRpb2Rldi0mZ3Q7ZGV2LAomIzQzOwkJCSYjMzQ7Zmxhc2g6IGZpbmFsIHdyaXRlIHRpbWVvdXQ6ICVwZVxuJiMzNDssIEVSUl9QVFIocmV0KSk7CiYjNDM7CQlnb3RvIGVuZF9tYWdpYzsKJiM0MzsJfQomIzQzOwomIzQzOwlteGw4NjJ4eF9mbGFzaF9ub3RpZnkoZGwsICYjMzQ7Rmxhc2hpbmcmIzM0OywgcGF5bG9hZF9zaXplLCBwYXlsb2FkX3NpemUpOwomIzQzOwomIzQzO2VuZF9tYWdpYzoKJiM0MzsJLyogcmVib290IE1DVWJvb3QgZXZlbiBhZnRlciBhIGZhaWxlZCB0cmFuc2ZlciAqLwomIzQzOwlteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfU1RBVCwKJiM0MzsJCQkgICAgIE1YTDg2MlhYX1NCX1BESV9FTkQpOwomIzQzOwltc2xlZXAoTVhMODYyWFhfRldfUkVCT09UX0RFTEFZX01TKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IG14bDg2Mnh4X2RldmxpbmtfaW5mb19nZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLAomIzQzOwkJCSAgICAgIHN0cnVjdCBkZXZsaW5rX2luZm9fcmVxICpyZXEsCiYjNDM7CQkJICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQomIzQzO3sKJiM0MzsJc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy0mZ3Q7cHJpdjsKJiM0MzsJY29uc3QgY2hhciAqY29tcGF0aWJsZTsKJiM0MzsJY2hhciB2ZXJfc3RyWzMyXTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZ19pbmRleChkcy0mZ3Q7ZGV2LSZndDtvZl9ub2RlLCAmIzM0O2NvbXBhdGlibGUmIzM0OywgMCwKJiM0MzsJCQkJCSAgICZhbXA7Y29tcGF0aWJsZSkpIHsKJiM0MzsJCXJldCA9IGRldmxpbmtfaW5mb192ZXJzaW9uX2ZpeGVkX3B1dChyZXEsCiYjNDM7CQkJCQkJICAgICBERVZMSU5LX0lORk9fVkVSU0lPTl9HRU5FUklDX0FTSUNfSUQsCiYjNDM7CQkJCQkJICAgICBjb21wYXRpYmxlKTsKJiM0MzsJCWlmIChyZXQpCiYjNDM7CQkJcmV0dXJuIHJldDsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAocHJpdi0mZ3Q7cmVzY3VlX21vZGUpCiYjNDM7CQlyZXR1cm4gZGV2bGlua19pbmZvX3ZlcnNpb25fcnVubmluZ19wdXQocmVxLCAmIzM0O2Z3JiMzNDssCiYjNDM7CQkJCQkJCSYjMzQ7bWN1Ym9vdC1yZXNjdWUmIzM0Oyk7CiYjNDM7CiYjNDM7CXNucHJpbnRmKHZlcl9zdHIsIHNpemVvZih2ZXJfc3RyKSwgJiMzNDsldS4ldS4ldSYjMzQ7LAomIzQzOwkJIHByaXYtJmd0O2Z3X3ZlcnNpb24ubWFqb3IsIHByaXYtJmd0O2Z3X3ZlcnNpb24ubWlub3IsCiYjNDM7CQkgcHJpdi0mZ3Q7ZndfdmVyc2lvbi5yZXZpc2lvbik7CiYjNDM7CiYjNDM7CXJldHVybiBkZXZsaW5rX2luZm9fdmVyc2lvbl9ydW5uaW5nX3B1dChyZXEsICYjMzQ7ZncmIzM0OywgdmVyX3N0cik7CiYjNDM7fQomIzQzOwomIzQzO2ludCBteGw4NjJ4eF9kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsCiYjNDM7CQkJCSAgc3RydWN0IGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLAomIzQzOwkJCQkgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2ID0gZHMtJmd0O3ByaXY7CiYjNDM7CXN0cnVjdCBteGw4NjJ4eF9zeXNfZndfaW1hZ2VfdmVyc2lvbiB2ZXIgPSB7fTsKJiM0MzsJc3RydWN0IG14bDg2Mnh4X3JlcHJvYmUgKnJlcHJvYmU7CiYjNDM7CXN0cnVjdCBkc2FfcG9ydCAqZHA7CiYjNDM7CWludCByZXQsIGk7CiYjNDM7CiYjNDM7CWlmIChwYXJhbXMtJmd0O2NvbXBvbmVudCkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtjb21wb25lbnQgaXMgbm90IHN1cHBvcnRlZCYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAocHJpdi0mZ3Q7cmVzY3VlX21vZGUpCiYjNDM7CQlkZXZfaW5mbyhkcy0mZ3Q7ZGV2LAomIzQzOwkJCSAmIzM0O2ZsYXNoOiByZWNvdmVyaW5nIHN3aXRjaCBmcm9tIE1DVWJvb3QgcmVzY3VlIG1vZGVcbiYjMzQ7KTsKJiM0MzsJZWxzZQomIzQzOwkJZGV2X2luZm8oZHMtJmd0O2RldiwgJiMzNDtmbGFzaDogcnVubmluZyBmaXJtd2FyZSAldS4ldS4ldVxuJiMzNDssCiYjNDM7CQkJIHByaXYtJmd0O2Z3X3ZlcnNpb24ubWFqb3IsIHByaXYtJmd0O2Z3X3ZlcnNpb24ubWlub3IsCiYjNDM7CQkJIHByaXYtJmd0O2Z3X3ZlcnNpb24ucmV2aXNpb24pOwomIzQzOwomIzQzOwkvKiBDbG9zZSBwb3J0cyB3aGlsZSB0aGUgZmlybXdhcmUgaXMgc3RpbGwgYWxpdmUgc28gdGhlIERTQQomIzQzOwkgKiBjb3JlJiMzOTtzIE1EQi9GREIgdHJhY2tpbmcgaXMgZHJhaW5lZCwgYW5kIGRldGFjaCB1c2VyIHBvcnRzCiYjNDM7CSAqIHNvIHVzZXJzcGFjZSBjYW5ub3QgcmVvcGVuIHRoZW0gZHVyaW5nIHRoZSBmbGFzaC4gVGhlCiYjNDM7CSAqIGNvbmR1aXQgYmVsb25ncyB0byB0aGUgTUFDIGRyaXZlciBhbmQgaXMgb25seSBjbG9zZWQuCiYjNDM7CSAqLwomIzQzOwlydG5sX2xvY2soKTsKJiM0MzsJZHNhX3N3aXRjaF9mb3JfZWFjaF91c2VyX3BvcnQoZHAsIGRzKSB7CiYjNDM7CQlpZiAoZHAtJmd0O3VzZXIpIHsKJiM0MzsJCQlkZXZfY2xvc2UoZHAtJmd0O3VzZXIpOwomIzQzOwkJCW5ldGlmX2RldmljZV9kZXRhY2goZHAtJmd0O3VzZXIpOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CWRzYV9zd2l0Y2hfZm9yX2VhY2hfY3B1X3BvcnQoZHAsIGRzKQomIzQzOwkJZGV2X2Nsb3NlKGRwLSZndDtjb25kdWl0KTsKJiM0MzsJcnRubF91bmxvY2soKTsKJiM0MzsKJiM0MzsJcHJpdi0mZ3Q7YmxvY2tfaG9zdCA9IHRydWU7CiYjNDM7CiYjNDM7CWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO3ByaXYtJmd0O3N0YXRzX3dvcmspOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgZHMtJmd0O251bV9wb3J0czsgaSYjNDM7JiM0MzspCiYjNDM7CQljYW5jZWxfd29ya19zeW5jKCZhbXA7cHJpdi0mZ3Q7cG9ydHNbaV0uaG9zdF9mbG9vZF93b3JrKTsKJiM0MzsKJiM0MzsJcmV0ID0gbXhsODYyeHhfZmxhc2hfZmlybXdhcmUocHJpdiwgcGFyYW1zLSZndDtmdywgZHMtJmd0O2RldmxpbmspOwomIzQzOwlpZiAocmV0KQomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtmaXJtd2FyZSB0cmFuc2ZlciBmYWlsZWQmIzM0Oyk7CiYjNDM7CiYjNDM7CWlmICghcmV0KSB7CiYjNDM7CQkvKiBsaWZ0IHRoZSBibG9jayB0byBxdWVyeSB0aGUgbmV3IGZpcm13YXJlIHZlcnNpb24gKi8KJiM0MzsJCXByaXYtJmd0O2Jsb2NrX2hvc3QgPSBmYWxzZTsKJiM0MzsJCXByaXYtJmd0O3Jlc2N1ZV9tb2RlID0gZmFsc2U7CiYjNDM7CQltZW1zZXQoJmFtcDt2ZXIsIDAsIHNpemVvZih2ZXIpKTsKJiM0MzsJCWlmICghTVhMODYyWFhfQVBJX1JFQURfUVVJRVQocHJpdiwgU1lTX01JU0NfRldfVkVSU0lPTiwgdmVyKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgdmVyLml2X21ham9yKQomIzQzOwkJCWRldl9pbmZvKGRzLSZndDtkZXYsICYjMzQ7Zmxhc2g6IG5ldyBmaXJtd2FyZSAldS4ldS4ldVxuJiMzNDssCiYjNDM7CQkJCSB2ZXIuaXZfbWFqb3IsIHZlci5pdl9taW5vciwKJiM0MzsJCQkJIGxlMTZfdG9fY3B1KHZlci5pdl9yZXZpc2lvbikpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXByaXYtJmd0O3NraXBfdGVhcmRvd24gPSB0cnVlOwomIzQzOwomIzQzOwlyZXByb2JlID0ga3phbGxvY19vYmooKnJlcHJvYmUpOwomIzQzOwlpZiAoIXJlcHJvYmUpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlpZiAoIXRyeV9tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKSkgewomIzQzOwkJa2ZyZWUocmVwcm9iZSk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJlcHJvYmUtJmd0O2RldiA9IGdldF9kZXZpY2UoZHMtJmd0O2Rldik7CiYjNDM7CUlOSVRfREVMQVlFRF9XT1JLKCZhbXA7cmVwcm9iZS0mZ3Q7ZHdvcmssIG14bDg2Mnh4X3JlcHJvYmVfd29ya19mbik7CiYjNDM7CXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmYW1wO3JlcHJvYmUtJmd0O2R3b3JrLCBtc2Vjc190b19qaWZmaWVzKDUwMCkpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1mdy5oIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWZ3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjU3YzIwMDBjZmVlNTE5Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWZ3LmgKQEAgLTAsMCAmIzQzOzEsMTggQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqLwomIzQzOwomIzQzOyNpZm5kZWYgX19NWEw4NjJYWF9GV19ICiYjNDM7I2RlZmluZSBfX01YTDg2MlhYX0ZXX0gKJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7bmV0L2RzYS5oJmd0OwomIzQzOwomIzQzO3N0cnVjdCBteGw4NjJ4eF9wcml2OwomIzQzOwomIzQzO2Jvb2wgbXhsODYyeHhfcmVzY3VlX21vZGVfZGV0ZWN0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KTsKJiM0MztpbnQgbXhsODYyeHhfZGV2bGlua19pbmZvX2dldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsCiYjNDM7CQkJICAgICAgc3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJlcSwKJiM0MzsJCQkgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spOwomIzQzO2ludCBteGw4NjJ4eF9kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsCiYjNDM7CQkJCSAgc3RydWN0IGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLAomIzQzOwkJCQkgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7CiYjNDM7CiYjNDM7I2VuZGlmIC8qIF9fTVhMODYyWFhfRldfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWhvc3QuYyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmMKaW5kZXggNGFjZDIxNmY3Y2MwMDkuLmQ2YzBjZGZhMGU2ODkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmMKQEAgLTE1LDYgJiM0MzsxNSw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvdW5hbGlnbmVkLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L2RzYS5oJmd0OwogI2luY2x1ZGUgJiMzNDtteGw4NjJ4eC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O214bDg2Mnh4LWNtZC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7bXhsODYyeHgtaG9zdC5oJiMzNDsKIAogI2RlZmluZSBDVFJMX0JVU1lfTUFTSwkJCUJJVCgxNSkKQEAgLTMzNiw2ICYjNDM7MzM3LDE1IEBAIGludCBteGw4NjJ4eF9hcGlfd3JhcChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTE2IGNtZCwgdm9pZCAqX2RhdGEsCiAJaW50IHJldCwgY21kX3JldDsKIAl1MTYgbWF4LCBjcmMsIGk7CiAKJiM0MzsJaWYgKHByaXYtJmd0O3NraXBfdGVhcmRvd24pCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJaWYgKHByaXYtJmd0O3Jlc2N1ZV9tb2RlKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiYjNDM7CWlmIChwcml2LSZndDtibG9ja19ob3N0ICZhbXA7JmFtcDsgY21kICE9IFNZU19NSVNDX0ZXX1VQREFURSkKJiM0MzsJCXJldHVybiAtRUJVU1k7CiYjNDM7CiAJZGV2X2RiZygmYW1wO3ByaXYtJmd0O21kaW9kZXYtJmd0O2RldiwgJiMzNDtDTUQgJTA0eCBEQVRBICUqcGhcbiYjMzQ7LCBjbWQsIHNpemUsIGRhdGEpOwogCiAJbXV0ZXhfbG9ja19uZXN0ZWQoJmFtcDtwcml2LSZndDttZGlvZGV2LSZndDtidXMtJmd0O21kaW9fbG9jaywgTURJT19NVVRFWF9ORVNURUQpOwpAQCAtNDk1LDYgJiM0Mzs1MDUsNDEgQEAgaW50IG14bDg2Mnh4X3Jlc2V0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KQogCXJldHVybiByZXQ7CiB9CiAKJiM0MzsjZGVmaW5lIE1YTDg2MlhYX1NNRElPX0FERFJfUkVHCQkweDFmCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TTURJT19QQUdFX01BU0sJMHhmZmYwCiYjNDM7I2RlZmluZSBNWEw4NjJYWF9TTURJT19PRkZfTUFTSwkJMHgwMDBmCiYjNDM7CiYjNDM7aW50IG14bDg2Mnh4X3NtZGlvX3JlYWQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUzMiBhZGRyKQomIzQzO3sKJiM0MzsJc3RydWN0IG1paV9idXMgKmJ1cyA9IHByaXYtJmd0O21kaW9kZXYtJmd0O2J1czsKJiM0MzsJaW50IHBoeSA9IHByaXYtJmd0O21kaW9kZXYtJmd0O2FkZHI7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtidXMtJmd0O21kaW9fbG9jayk7CiYjNDM7CXJldCA9IF9fbWRpb2J1c193cml0ZShidXMsIHBoeSwgTVhMODYyWFhfU01ESU9fQUREUl9SRUcsCiYjNDM7CQkJICAgICAgYWRkciAmYW1wOyBNWEw4NjJYWF9TTURJT19QQUdFX01BU0spOwomIzQzOwlpZiAocmV0ICZndDs9IDApCiYjNDM7CQlyZXQgPSBfX21kaW9idXNfcmVhZChidXMsIHBoeSwgYWRkciAmYW1wOyBNWEw4NjJYWF9TTURJT19PRkZfTUFTSyk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2J1cy0mZ3Q7bWRpb19sb2NrKTsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IG14bDg2Mnh4X3NtZGlvX3dyaXRlKHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2LCB1MzIgYWRkciwgdTE2IHZhbCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LSZndDttZGlvZGV2LSZndDtidXM7CiYjNDM7CWludCBwaHkgPSBwcml2LSZndDttZGlvZGV2LSZndDthZGRyOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7YnVzLSZndDttZGlvX2xvY2spOwomIzQzOwlyZXQgPSBfX21kaW9idXNfd3JpdGUoYnVzLCBwaHksIE1YTDg2MlhYX1NNRElPX0FERFJfUkVHLAomIzQzOwkJCSAgICAgIGFkZHIgJmFtcDsgTVhMODYyWFhfU01ESU9fUEFHRV9NQVNLKTsKJiM0MzsJaWYgKHJldCAmZ3Q7PSAwKQomIzQzOwkJcmV0ID0gX19tZGlvYnVzX3dyaXRlKGJ1cywgcGh5LCBhZGRyICZhbXA7IE1YTDg2MlhYX1NNRElPX09GRl9NQVNLLAomIzQzOwkJCQkgICAgICB2YWwpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtidXMtJmd0O21kaW9fbG9jayk7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwogdm9pZCBteGw4NjJ4eF9ob3N0X2luaXQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYpCiB7CiAJSU5JVF9XT1JLKCZhbXA7cHJpdi0mZ3Q7Y3JjX2Vycl93b3JrLCBteGw4NjJ4eF9jcmNfZXJyX3dvcmtfZm4pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWhvc3QuaCBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmgKaW5kZXggNjZkNmFlMTk4YWZmNDUuLjRlMDU0YzZlNGMwZTQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmgKQEAgLTE4LDUgJiM0MzsxOCw3IEBAIGludCBteGw4NjJ4eF9hcGlfd3JhcChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTE2IGNtZCwgdm9pZCAqZGF0YSwgdTE2IHNpemUsCiAJbXhsODYyeHhfYXBpX3dyYXAoZGV2LCBjbWQsICZhbXA7KGRhdGEpLCBzaXplb2YoKGRhdGEpKSwgdHJ1ZSwgdHJ1ZSkKIAogaW50IG14bDg2Mnh4X3Jlc2V0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KTsKJiM0MztpbnQgbXhsODYyeHhfc21kaW9fcmVhZChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTMyIGFkZHIpOwomIzQzO2ludCBteGw4NjJ4eF9zbWRpb193cml0ZShzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTMyIGFkZHIsIHUxNiB2YWwpOwogCiAjZW5kaWYgLyogX19NWEw4NjJYWF9IT1NUX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jCmluZGV4IGI2ODk2NTJhYTliOTIwLi5hNWI2OTQwYjU1MmU5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jCkBAIC00MDYsNiAmIzQzOzQwNiw4IEBAIG14bDg2Mnh4X3BoeWxpbmtfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsCiAKIAlzd2l0Y2ggKHBvcnQpIHsKIAljYXNlIDkgLi4uIDE2OgomIzQzOwkJaWYgKHByaXYtJmd0O3Jlc2N1ZV9tb2RlKQomIzQzOwkJCXJldHVybiBOVUxMOwogCQlpZiAoIU1YTDg2MlhYX0ZXX1ZFUl9NSU4ocHJpdiwgMSwgMCwgODQpKSB7CiAJCQlkZXZfd2Fybl9vbmNlKGRwLSZndDtkcy0mZ3Q7ZGV2LAogCQkJCSAgICAgICYjMzQ7U2VyRGVzIFBDUyB1bnN1cHBvcnRlZCBvbiBvbGQgZmlybXdhcmUuXG4mIzM0Oyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jCmluZGV4IDQ1ZDIzN2IzYTQwZjEwLi5iNzM4NWNmYTU0NzQ1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMKQEAgLTIxLDYgJiM0MzsyMSw3IEBACiAjaW5jbHVkZSAmIzM0O214bDg2Mnh4LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtteGw4NjJ4eC1hcGkuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O214bDg2Mnh4LWNtZC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O214bDg2Mnh4LWZ3LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtteGw4NjJ4eC1ob3N0LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtteGw4NjJ4eC1waHlsaW5rLmgmIzM0OwogCkBAIC02MjgsOSAmIzQzOzYyOSwyMiBAQCBzdGF0aWMgaW50IG14bDg2Mnh4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gbXhsODYyeHhfd2FpdF9yZWFkeShkcyk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKJiM0MzsJcHJpdi0mZ3Q7cmVzY3VlX21vZGUgPSBteGw4NjJ4eF9yZXNjdWVfbW9kZV9kZXRlY3QocHJpdik7CiYjNDM7CWlmICghcHJpdi0mZ3Q7cmVzY3VlX21vZGUpIHsKJiM0MzsJCXJldCA9IG14bDg2Mnh4X3dhaXRfcmVhZHkoZHMpOwomIzQzOwkJaWYgKHJldCkgewomIzQzOwkJCS8qIHRoZSByZXNldCBtYXkgb25seSBub3cgaGF2ZSB0cmlnZ2VyZWQgcmVzY3VlIG1vZGUgKi8KJiM0MzsJCQlwcml2LSZndDtyZXNjdWVfbW9kZSA9IG14bDg2Mnh4X3Jlc2N1ZV9tb2RlX2RldGVjdChwcml2KTsKJiM0MzsJCQlpZiAoIXByaXYtJmd0O3Jlc2N1ZV9tb2RlKQomIzQzOwkJCQlyZXR1cm4gcmV0OwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChwcml2LSZndDtyZXNjdWVfbW9kZSkgewomIzQzOwkJZGV2X3dhcm4oZHMtJmd0O2RldiwKJiM0MzsJCQkgJiMzNDtzd2l0Y2ggc3R1Y2sgaW4gTUNVYm9vdCByZXNjdWUgbW9kZSwgdXNlIGRldmxpbmsgdG8gZmxhc2ggbmV3IGZpcm13YXJlXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfQogCiAJbXV0ZXhfaW5pdCgmYW1wO3ByaXYtJmd0O3NlcmRlc19sb2NrKTsKIAlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShwcml2LSZndDtzZXJkZXNfcG9ydHMpOyBpJiM0MzsmIzQzOykKQEAgLTcxNSwxMSAmIzQzOzcyOSwyMSBAQCBzdGF0aWMgaW50IG14bDg2Mnh4X3BvcnRfc3RhdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgYm9vbCBlbmFibGUpCiBzdGF0aWMgaW50IG14bDg2Mnh4X3BvcnRfZW5hYmxlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCiAJCQkJc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHsKJiM0MzsJc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy0mZ3Q7cHJpdjsKJiM0MzsKJiM0MzsJaWYgKHByaXYtJmd0O3Jlc2N1ZV9tb2RlKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiAJcmV0dXJuIG14bDg2Mnh4X3BvcnRfc3RhdGUoZHMsIHBvcnQsIHRydWUpOwogfQogCiBzdGF0aWMgdm9pZCBteGw4NjJ4eF9wb3J0X2Rpc2FibGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCkKIHsKJiM0MzsJc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy0mZ3Q7cHJpdjsKJiM0MzsKJiM0MzsJaWYgKHByaXYtJmd0O3Jlc2N1ZV9tb2RlKQomIzQzOwkJcmV0dXJuOwomIzQzOwogCWlmIChteGw4NjJ4eF9wb3J0X3N0YXRlKGRzLCBwb3J0LCBmYWxzZSkpCiAJCWRldl9lcnIoZHMtJmd0O2RldiwgJiMzNDtmYWlsZWQgdG8gZGlzYWJsZSBwb3J0ICVkXG4mIzM0OywgcG9ydCk7CiB9CkBAIC0xMzM3LDYgJiM0MzsxMzYxLDEyIEBAIHN0YXRpYyBpbnQgbXhsODYyeHhfcG9ydF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KQogCWJvb2wgaXNfY3B1X3BvcnQgPSBkc2FfcG9ydF9pc19jcHUoZHApOwogCWludCByZXQ7CiAKJiM0MzsJLyogRFNBIHJlaW5pdHMgZmFpbGVkIHVzZXIgcG9ydHMgYXMgdW51c2VkOyBzaGFyZWQgcG9ydHMgbXVzdAomIzQzOwkgKiBzdWNjZWVkIGZvciB0aGUgdHJlZSB0byByZWdpc3Rlci4KJiM0MzsJICovCiYjNDM7CWlmIChwcml2LSZndDtyZXNjdWVfbW9kZSkKJiM0MzsJCXJldHVybiBkc2FfcG9ydF9pc191c2VyKGRwKSA/IC1FTk9ERVYgOiAwOwomIzQzOwogCXJldCA9IG14bDg2Mnh4X3BvcnRfc3RhdGUoZHMsIHBvcnQsIGZhbHNlKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpAQCAtMTYyOCw2ICYjNDM7MTY1OCw5IEBAIHN0YXRpYyB2b2lkIG14bDg2Mnh4X3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogCXN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2ID0gZHMtJmd0O3ByaXY7CiAJaW50IHJldDsKIAomIzQzOwlpZiAocHJpdi0mZ3Q7cmVzY3VlX21vZGUpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJc3dpdGNoIChzdGF0ZSkgewogCWNhc2UgQlJfU1RBVEVfRElTQUJMRUQ6CiAJCXBhcmFtLnBvcnRfc3RhdGUgPSBjcHVfdG9fbGUzMihNWEw4NjJYWF9TVFBfUE9SVF9TVEFURV9ESVNBQkxFKTsKQEAgLTIwODYsNiAmIzQzOzIxMTksOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIG14bDg2Mnh4X3N3aXRjaF9vcHMgPSB7CiAJLmdldF9wYXVzZV9zdGF0cyA9IG14bDg2Mnh4X2dldF9wYXVzZV9zdGF0cywKIAkuZ2V0X3Jtb25fc3RhdHMgPSBteGw4NjJ4eF9nZXRfcm1vbl9zdGF0cywKIAkuZ2V0X3N0YXRzNjQgPSBteGw4NjJ4eF9nZXRfc3RhdHM2NCwKJiM0MzsJLmRldmxpbmtfaW5mb19nZXQgPSBteGw4NjJ4eF9kZXZsaW5rX2luZm9fZ2V0LAomIzQzOwkuZGV2bGlua19mbGFzaF91cGRhdGUgPSBteGw4NjJ4eF9kZXZsaW5rX2ZsYXNoX3VwZGF0ZSwKIH07CiAKIHN0YXRpYyBpbnQgbXhsODYyeHhfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmggYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguaAppbmRleCA0MzJhNWYzZjJlMDhlNi4uNWQyMTI5NjU2MWUzYWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5oCkBAIC0zMTksNiAmIzQzOzMxOSwxMiBAQCBzdHJ1Y3QgbXhsODYyeHhfZndfdmVyc2lvbiB7CiAgKiBAZXZsYW5faW5ncmVzc19zaXplOiBwZXItcG9ydCBpbmdyZXNzIEV4dGVuZGVkIFZMQU4gYmxvY2sgc2l6ZQogICogQGV2bGFuX2VncmVzc19zaXplOiAgcGVyLXBvcnQgZWdyZXNzIEV4dGVuZGVkIFZMQU4gYmxvY2sgc2l6ZQogICogQHZmX2Jsb2NrX3NpemU6ICAgICAgcGVyLXBvcnQgVkxBTiBGaWx0ZXIgYmxvY2sgc2l6ZQomIzQzOyAqIEBibG9ja19ob3N0OiAgICAgICAgIHJlamVjdCBmaXJtd2FyZSBBUEkgY29tbWFuZHMgKGV4Y2VwdCBGV19VUERBVEUpCiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIGEgZmlybXdhcmUgZmxhc2gKJiM0MzsgKiBAc2tpcF90ZWFyZG93bjogICAgICBkaXNjYXJkIGZpcm13YXJlIEFQSSBjb21tYW5kcyBkdXJpbmcgdGhlIHRlYXJkb3duCiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkIGJ5IHRoZSBwb3N0LWZsYXNoIHJlcHJvYmUKJiM0MzsgKiBAcmVzY3VlX21vZGU6ICAgICAgICBzd2l0Y2ggaXMgc3R1Y2sgaW4gTUNVYm9vdDsgZmlybXdhcmUgQVBJIGNvbW1hbmRzCiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgZmFpbCBmYXN0LCBvbmx5IGNsYXVzZS0yMiBTTURJTyB3b3JrcwogICogQHN0YXRzX3dvcms6ICAgICAgICAgcGVyaW9kaWMgd29yayBpdGVtIHRoYXQgcG9sbHMgUk1PTiBoYXJkd2FyZSBjb3VudGVycwogICogICAgICAgICAgICAgICAgICAgICAgYW5kIGFjY3VtdWxhdGVzIHRoZW0gaW50byA2NC1iaXQgcGVyLXBvcnQgc3RhdHMKICAqLwpAQCAtMzM3LDYgJiM0MzszNDMsOSBAQCBzdHJ1Y3QgbXhsODYyeHhfcHJpdiB7CiAJdTE2IGV2bGFuX2luZ3Jlc3Nfc2l6ZTsKIAl1MTYgZXZsYW5fZWdyZXNzX3NpemU7CiAJdTE2IHZmX2Jsb2NrX3NpemU7CiYjNDM7CWJvb2wgYmxvY2tfaG9zdDsKJiM0MzsJYm9vbCBza2lwX3RlYXJkb3duOwomIzQzOwlib29sIHJlc2N1ZV9tb2RlOwogCXN0cnVjdCBkZWxheWVkX3dvcmsgc3RhdHNfd29yazsKIH07CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2RzYS5oIGIvaW5jbHVkZS9uZXQvZHNhLmgKaW5kZXggOGMxNmVmMjNjYzEwMmEuLmM5ZTE5MzQ4ZGU2MTkzIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9kc2EuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9kc2EuaApAQCAtMTE3MCw2ICYjNDM7MTE3MCw5IEBAIHN0cnVjdCBkc2Ffc3dpdGNoX29wcyB7CiAJaW50CSgqZGV2bGlua19pbmZvX2dldCkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLAogCQkJCSAgICBzdHJ1Y3QgZGV2bGlua19pbmZvX3JlcSAqcmVxLAogCQkJCSAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spOwomIzQzOwlpbnQJKCpkZXZsaW5rX2ZsYXNoX3VwZGF0ZSkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLAomIzQzOwkJCQkJc3RydWN0IGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLAomIzQzOwkJCQkJc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTsKIAlpbnQJKCpkZXZsaW5rX3NiX3Bvb2xfZ2V0KShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsCiAJCQkJICAgICAgIHVuc2lnbmVkIGludCBzYl9pbmRleCwgdTE2IHBvb2xfaW5kZXgsCiAJCQkJICAgICAgIHN0cnVjdCBkZXZsaW5rX3NiX3Bvb2xfaW5mbyAqcG9vbF9pbmZvKTsKZGlmZiAtLWdpdCBhL25ldC9kc2EvZGV2bGluay5jIGIvbmV0L2RzYS9kZXZsaW5rLmMKaW5kZXggZWQzNDJmMzQ1NjkyYmIuLjI1MzExYTg3Y2JjNTZkIDEwMDY0NAotLS0gYS9uZXQvZHNhL2RldmxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL2RldmxpbmsuYwpAQCAtMjAsNiAmIzQzOzIwLDE4IEBAIHN0YXRpYyBpbnQgZHNhX2RldmxpbmtfaW5mb19nZXQoc3RydWN0IGRldmxpbmsgKmRsLAogCXJldHVybiAtRU9QTk9UU1VQUDsKIH0KIAomIzQzO3N0YXRpYyBpbnQgZHNhX2RldmxpbmtfZmxhc2hfdXBkYXRlKHN0cnVjdCBkZXZsaW5rICpkbCwKJiM0MzsJCQkJICAgIHN0cnVjdCBkZXZsaW5rX2ZsYXNoX3VwZGF0ZV9wYXJhbXMgKnBhcmFtcywKJiM0MzsJCQkJICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRzYV9kZXZsaW5rX3RvX2RzKGRsKTsKJiM0MzsKJiM0MzsJaWYgKCFkcy0mZ3Q7b3BzLSZndDtkZXZsaW5rX2ZsYXNoX3VwZGF0ZSkKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsKJiM0MzsJcmV0dXJuIGRzLSZndDtvcHMtJmd0O2RldmxpbmtfZmxhc2hfdXBkYXRlKGRzLCBwYXJhbXMsIGV4dGFjayk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBkc2FfZGV2bGlua19zYl9wb29sX2dldChzdHJ1Y3QgZGV2bGluayAqZGwsCiAJCQkJICAgdW5zaWduZWQgaW50IHNiX2luZGV4LCB1MTYgcG9vbF9pbmRleCwKIAkJCQkgICBzdHJ1Y3QgZGV2bGlua19zYl9wb29sX2luZm8gKnBvb2xfaW5mbykKQEAgLTE2OSw2ICYjNDM7MTgxLDcgQEAgZHNhX2Rldmxpbmtfc2Jfb2NjX3RjX3BvcnRfYmluZF9nZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqZGxwLAogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRldmxpbmtfb3BzIGRzYV9kZXZsaW5rX29wcyA9IHsKIAkuaW5mb19nZXQJCQk9IGRzYV9kZXZsaW5rX2luZm9fZ2V0LAomIzQzOwkuZmxhc2hfdXBkYXRlCQkJPSBkc2FfZGV2bGlua19mbGFzaF91cGRhdGUsCiAJLnNiX3Bvb2xfZ2V0CQkJPSBkc2FfZGV2bGlua19zYl9wb29sX2dldCwKIAkuc2JfcG9vbF9zZXQJCQk9IGRzYV9kZXZsaW5rX3NiX3Bvb2xfc2V0LAogCS5zYl9wb3J0X3Bvb2xfZ2V0CQk9IGRzYV9kZXZsaW5rX3NiX3BvcnRfcG9vbF9nZXQsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNzAwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTXhMODYyeHggUGF0Y2ggZm9yIFZpcnR1YWxpemF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTt2ZSBnb3QgYSBuZXcgcGF0Y2ggaW5jb3Jwb3JhdGluZyBmaXJtd2FyZSBmbGFzaGluZyBhbmQgZGV2bGluayBzdXBwb3J0IGZvciB0aGUgTWF4TGluZWFyIE14TDg2Mnh4IHN3aXRjaC4gVGhlIGNoYW5nZXMgYXJlIGZvY3VzZWQgaW4gYGRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9gIGFuZCBgbmV0L2RzYS9kZXZsaW5rLmNgLiBUaGlzIGlzIGludHJpZ3VpbmcgYmVjYXVzZSBpdCBlbmFibGVzIGZpcm13YXJlIGZsYXNoaW5nIHRocm91Z2ggZGV2bGluayDigJMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgaW1wcm92ZW1lbnQuCgpNeSBwcmltYXJ5IGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIGBkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvYCwgd2hpY2ggaW1tZWRpYXRlbHkgc3VnZ2VzdHMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhIERTQSBzd2l0Y2ggZHJpdmVyIGZvciB0aGUgTXhMODYyeHguIFRoZSB2ZXJ5IG5hdHVyZSBvZiBEU0Egc3dpdGNoZXMgbWFrZXMgZW11bGF0aW9uIGhpZ2hseSBpbXByb2JhYmxlLiBUaGV5JiMzOTtyZSB0eXBpY2FsbHkgZGVlcGx5IHRpZWQgdG8gdGhlIGhhcmR3YXJlLgoKVGhlcmVmb3JlLCB0aGUgcXVlc3Rpb24gYmVjb21lczogaG93IGNhbiB3ZSB0ZXN0IHRoaXMgaW4gYSB2aXJ0dWFsIHNldHRpbmc/IFdlJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgbWVudGlvbiBvZiBzb2Z0d2FyZSBlbXVsYXRpb24gYW55d2hlcmUsIHRob3VnaCBJIGhpZ2hseSBkb3VidCBpdC4gRFNBIHN3aXRjaGVzIGFyZSBhbG1vc3QgYWx3YXlzIGEgcHVyZWx5IGhhcmR3YXJlIGNvbmNlcm4uIFRvIGJlIGNlcnRhaW4sIEkmIzM5O2xsIHJ1biBhIGtlcm5lbCBzZWFyY2ggZm9yIGBteGw4NjJ4eGAgdG8gY29uZmlybSBhbmQgZXhwYW5kIG91ciBrbm93bGVkZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDQ6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXhsODYyeHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyMzI0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9NWEw4NjIpICYjNDM7PSBteGw4NjJ4eF9kc2Eub1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L01ha2VmaWxlOjM6bXhsODYyeHhfZHNhLXkgOj0gbXhsODYyeHgubyBteGw4NjJ4eC1ob3N0Lm8gbXhsODYyeHgtcGh5bGluay5vIG14bDg2Mnh4LWZ3Lm9cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg9MTY9c3RydWN0IG1kaW9fcmVsYXlfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIzLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjI0OiAqIHN0cnVjdCBteGw4NjJ4eF9yZWdpc3Rlcl9tb2QgLSBSZWdpc3RlciBhY2Nlc3MgcGFyYW1ldGVyIHRvIGRpcmVjdGx5XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjUtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmeSBpbnRlcm5hbCByZWdpc3RlcnNcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzEtICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzI6c3RydWN0IG14bDg2Mnh4X3JlZ2lzdGVyX21vZCB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzMtXHRfX2xlMTYgYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzgtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6Mzk6ICogZW51bSBteGw4NjJ4eF9tYWNfdGFibGVfZmlsdGVyIC0gU291cmNlL0Rlc3RpbmF0aW9uIE1BQyBhZGRyZXNzIGZpbHRlcmluZ1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTQwLSAqXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTQ1LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjQ2OmVudW0gbXhsODYyeHhfbWFjX3RhYmxlX2ZpbHRlciB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNDctXHRNWEw4NjJYWF9NQUNfRklMVEVSX05PTkUgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC02NC0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo2NTogKiBzdHJ1Y3QgbXhsODYyeHhfbWFjX3RhYmxlX2FkZCAtIE1BQyBUYWJsZSBFbnRyeSB0byBiZSBhZGRlZFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTY2LSAqIEBmaWQ6IEZpbHRlcmluZyBJZGVudGlmaWVyIChGSUQpIChub3Qgc3VwcG9ydGVkIGJ5IGFsbCBzd2l0Y2hlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzQtICogQG1hYzogTUFDIEFkZHJlc3MgdG8gYWRkIHRvIHRoZSB0YWJsZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjc1OiAqIEBmaWx0ZXJfZmxhZzogU2VlIFx1MDAyNmVudW0gbXhsODYyeHhfbWFjX3RhYmxlX2ZpbHRlclxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc2LSAqIEBpZ21wX2NvbnRyb2xsZWQ6IFBhY2tldCBpcyBtYXJrZWQgYXMgSUdNUCBjb250cm9sbGVkIGlmIGRlc3RpbmF0aW9uIE1BQ1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04My0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4NDpzdHJ1Y3QgbXhsODYyeHhfbWFjX3RhYmxlX2FkZCB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODUtXHRfX2xlMTYgZmlkO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDAtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTAxOiAqIHN0cnVjdCBteGw4NjJ4eF9tYWNfdGFibGVfcmVtb3ZlIC0gTUFDIFRhYmxlIEVudHJ5IHRvIGJlIHJlbW92ZWRcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDItICogQGZpZDogRmlsdGVyaW5nIElkZW50aWZpZXIgKEZJRClcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDMtICogQG1hYzogTUFDIEFkZHJlc3MgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSB0YWJsZS5cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDQ6ICogQGZpbHRlcl9mbGFnOiBTZWUgXHUwMDI2ZW51bSBteGw4NjJ4eF9tYWNfdGFibGVfZmlsdGVyXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA1LSAqIEB0Y2k6IFRDSSBmb3IgQi1TdGVwXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwOS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTA6c3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9yZW1vdmUge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMS1cdF9fbGUxNiBmaWQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExNy0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTg6ICogc3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9yZWFkIC0gTUFDIFRhYmxlIEVudHJ5IHRvIGJlIHJlYWRcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMTktICogQGluaXRpYWw6IFJlc3RhcnQgdGhlIGdldCBvcGVyYXRpb24gZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0YWJsZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMjgtICogQG1hYzogTUFDIEFkZHJlc3MuIEZpbGxlZCBvdXQgYnkgdGhlIHN3aXRjaCBBUEkgaW1wbGVtZW50YXRpb24uXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTI5OiAqIEBmaWx0ZXJfZmxhZzogU2VlIFx1MDAyNmVudW0gbXhsODYyeHhfbWFjX3RhYmxlX2ZpbHRlclxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEzMC0gKiBAaWdtcF9jb250cm9sbGVkOiBQYWNrZXQgaXMgbWFya2VkIGFzIElHTVAgY29udHJvbGxlZCBpZiBkZXN0aW5hdGlvbiBNQUNcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQxLSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjE0MjpzdHJ1Y3QgbXhsODYyeHhfbWFjX3RhYmxlX3JlYWQge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE0My1cdHU4IGluaXRpYWw7XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE2Mi0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxNjM6ICogc3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9xdWVyeSAtIE1BQyBUYWJsZSBFbnRyeSBrZXktYmFzZWQgbG9va3VwXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTY0LSAqIEBtYWM6IE1BQyBBZGRyZXNzIHRvIHNlYXJjaCBmb3IgKGlucHV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xNzItICogQHN0YXRpY19lbnRyeTogSW5kaWNhdGVzIGlmIHRoaXMgaXMgYSBTdGF0aWMgRW50cnlcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxNzM6ICogQGZpbHRlcl9mbGFnOiBTZWUgXHUwMDI2ZW51bSBteGw4NjJ4eF9tYWNfdGFibGVfZmlsdGVyIChpbnB1dCYjNDM7b3V0cHV0KVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE3NC0gKiBAaWdtcF9jb250cm9sbGVkOiBJR01QIGNvbnRyb2xsZWQgZmxhZ1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xODAtICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTgxOnN0cnVjdCBteGw4NjJ4eF9tYWNfdGFibGVfcXVlcnkge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE4Mi1cdHU4IG1hY1tFVEhfQUxFTl07XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIwMC0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyMDE6ICogZW51bSBteGw4NjJ4eF9tYWNfY2xlYXJfdHlwZSAtIE1BQyB0YWJsZSBjbGVhciB0eXBlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjAyLSAqIEBNWEw4NjJYWF9NQUNfQ0xFQVJfUEhZX1BPUlQ6IGNsZWFyIGR5bmFtaWMgZW50cmllcyBiYXNlZCBvbiBwb3J0X2lkXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIwNC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyMDU6ZW51bSBteGw4NjJ4eF9tYWNfY2xlYXJfdHlwZSB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjA2LVx0TVhMODYyWFhfTUFDX0NMRUFSX1BIWV9QT1JUID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjEwLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjIxMTogKiBzdHJ1Y3QgbXhsODYyeHhfbWFjX3RhYmxlX2NsZWFyIC0gTUFDIHRhYmxlIGNsZWFyXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MjEyOiAqIEB0eXBlOiBzZWUgXHUwMDI2ZW51bSBteGw4NjJ4eF9tYWNfY2xlYXJfdHlwZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIxMy0gKiBAcG9ydF9pZDogcGh5c2ljYWwgcG9ydCBpZFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIxNC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyMTU6c3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9jbGVhciB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjE2LVx0dTggdHlwZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjIwLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjIyMTogKiBlbnVtIG14bDg2Mnh4X2FnZV90aW1lciAtIEFnaW5nIFRpbWVyIFZhbHVlLlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIyMi0gKiBATVhMODYyWFhfQUdFVElNRVJfMV9TRUM6IDEgc2Vjb25kIGFnaW5nIHRpbWVcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjI4LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjIyOTplbnVtIG14bDg2Mnh4X2FnZV90aW1lciB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjMwLVx0TVhMODYyWFhfQUdFVElNRVJfMV9TRUMgPSAxLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yMzgtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MjM5OiAqIHN0cnVjdCBteGw4NjJ4eF9icmlkZ2VfYWxsb2MgLSBCcmlkZ2UgQWxsb2NhdGlvblxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI0MC0gKiBAYnJpZGdlX2lkOiBJZiB0aGUgYnJpZGdlIGFsbG9jYXRpb24gaXMgc3VjY2Vzc2Z1bCwgYSB2YWxpZCBJRCB3aWxsIGJlXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI0Ny0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyNDg6c3RydWN0IG14bDg2Mnh4X2JyaWRnZV9hbGxvYyB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjQ5LVx0X19sZTE2IGJyaWRnZV9pZDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjUyLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjI1MzogKiBlbnVtIG14bDg2Mnh4X2JyaWRnZV9jb25maWdfbWFzayAtIEJyaWRnZSBjb25maWd1cmF0aW9uIG1hc2tcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yNTQtICogQE1YTDg2MlhYX0JSSURHRV9DT05GSUdfTUFTS19NQUNfTEVBUk5JTkdfTElNSVQ6XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI2Ny0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyNjg6ZW51bSBteGw4NjJ4eF9icmlkZ2VfY29uZmlnX21hc2sge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI2OS1cdE1YTDg2MlhYX0JSSURHRV9DT05GSUdfTUFTS19NQUNfTEVBUk5JTkdfTElNSVQgPSBCSVQoMCksXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI3OC0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyNzk6ICogZW51bSBteGw4NjJ4eF9icmlkZ2VfcG9ydF9lZ3Jlc3NfbWV0ZXIgLSBNZXRlcnMgZm9yIGVncmVzcyB0cmFmZmljIHR5cGVcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yODAtICogQE1YTDg2MlhYX0JSSURHRV9QT1JUX0VHUkVTU19NRVRFUl9CUk9BRENBU1Q6XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI5My0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyOTQ6ZW51bSBteGw4NjJ4eF9icmlkZ2VfcG9ydF9lZ3Jlc3NfbWV0ZXIge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI5NS1cdE1YTDg2MlhYX0JSSURHRV9QT1JUX0VHUkVTU19NRVRFUl9CUk9BRENBU1QgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zMDQtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzA1OiAqIHN0cnVjdCBteGw4NjJ4eF9xb3NfbWV0ZXJfY2ZnIC0gUmF0ZSBtZXRlciBjb25maWd1cmF0aW9uXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzA2LSAqIEBlbmFibGU6IEVuYWJsZS9kaXNhYmxlIG1ldGVyXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTMyMC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozMjE6c3RydWN0IG14bDg2Mnh4X3Fvc19tZXRlcl9jZmcge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTMyMi1cdHU4IGVuYWJsZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzM4LS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjMzOTogKiBlbnVtIG14bDg2Mnh4X2JyaWRnZV9mb3J3YXJkX21vZGUgLSBCcmlkZ2UgZm9yd2FyZGluZyB0eXBlIG9mIHBhY2tldFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM0MC0gKiBATVhMODYyWFhfQlJJREdFX0ZPUldBUkRfRkxPT0Q6IFBhY2tldCBpcyBmbG9vZGVkIHRvIHBvcnQgbWVtYmVycyBvZlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNDMtICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzQ0OmVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZSB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzQ1LVx0TVhMODYyWFhfQlJJREdFX0ZPUldBUkRfRkxPT0QgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNDktLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzUwOiAqIHN0cnVjdCBteGw4NjJ4eF9icmlkZ2VfY29uZmlnIC0gQnJpZGdlIENvbmZpZ3VyYXRpb25cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNTEtICogQGJyaWRnZV9pZDogQnJpZGdlIElEIChGSUQpXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzUyOiAqIEBtYXNrOiBTZWUgXHUwMDI2ZW51bSBteGw4NjJ4eF9icmlkZ2VfY29uZmlnX21hc2tcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNTMtICogQG1hY19sZWFybmluZ19saW1pdF9lbmFibGU6IEVuYWJsZSBNQUMgbGVhcm5pbmcgbGltaXRhdGlvblxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNjMtICogQGZvcndhcmRfYnJvYWRjYXN0OiBGb3J3YXJkaW5nIG1vZGUgb2YgYnJvYWRjYXN0IHRyYWZmaWMuIFNlZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM2NDogKiAgICAgICAgICAgICAgICAgICAgIFx1MDAyNmVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM2NS0gKiBAZm9yd2FyZF91bmtub3duX211bHRpY2FzdF9pcDogRm9yd2FyZGluZyBtb2RlIG9mIHVua25vd24gbXVsdGljYXN0IElQXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzY2LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFmZmljLlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM2NzogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIFx1MDAyNmVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM2OC0gKiBAZm9yd2FyZF91bmtub3duX211bHRpY2FzdF9ub25faXA6IEZvcndhcmRpbmcgbW9kZSBvZiB1bmtub3duIG11bHRpY2FzdFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM2OS0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbi1JUCB0cmFmZmljLlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM3MDogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSBcdTAwMjZlbnVtIG14bDg2Mnh4X2JyaWRnZV9mb3J3YXJkX21vZGVcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNzEtICogQGZvcndhcmRfdW5rbm93bl91bmljYXN0OiBGb3J3YXJkaW5nIG1vZGUgb2YgdW5rbm93biB1bmljYXN0IHRyYWZmaWMuIFNlZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM3MjogKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFx1MDAyNmVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM3My0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozNzQ6c3RydWN0IG14bDg2Mnh4X2JyaWRnZV9jb25maWcge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM3NS1cdF9fbGUxNiBicmlkZ2VfaWQ7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6Mzc2Olx0X19sZTMyIG1hc2s7IC8qIGVudW0gbXhsODYyeHhfYnJpZGdlX2NvbmZpZ19tYXNrICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzc3LVx0dTggbWFjX2xlYXJuaW5nX2xpbWl0X2VuYWJsZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzgyLVx0X19sZTE2IHRyYWZmaWNfc3ViX21ldGVyX2lkW01YTDg2MlhYX0JSSURHRV9QT1JUX0VHUkVTU19NRVRFUl9NQVhdO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM4MzpcdF9fbGUzMiBmb3J3YXJkX2Jyb2FkY2FzdDsgLyogZW51bSBteGw4NjJ4eF9icmlkZ2VfZm9yd2FyZF9tb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6Mzg0Olx0X19sZTMyIGZvcndhcmRfdW5rbm93bl9tdWx0aWNhc3RfaXA7IC8qIGVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM4NTpcdF9fbGUzMiBmb3J3YXJkX3Vua25vd25fbXVsdGljYXN0X25vbl9pcDsgLyogZW51bSBteGw4NjJ4eF9icmlkZ2VfZm9yd2FyZF9tb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6Mzg2Olx0X19sZTMyIGZvcndhcmRfdW5rbm93bl91bmljYXN0OyAvKiBlbnVtIG14bDg2Mnh4X2JyaWRnZV9mb3J3YXJkX21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zODctfSBfX3BhY2tlZDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzg5LS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM5MDogKiBzdHJ1Y3QgbXhsODYyeHhfYnJpZGdlX3BvcnRfYWxsb2MgLSBCcmlkZ2UgUG9ydCBBbGxvY2F0aW9uXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzkxLSAqIEBicmlkZ2VfcG9ydF9pZDogSWYgdGhlIGJyaWRnZSBwb3J0IGFsbG9jYXRpb24gaXMgc3VjY2Vzc2Z1bCwgYSB2YWxpZCBJRFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zOTctICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6Mzk4OnN0cnVjdCBteGw4NjJ4eF9icmlkZ2VfcG9ydF9hbGxvYyB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzk5LVx0X19sZTE2IGJyaWRnZV9wb3J0X2lkO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC00MDItLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NDAzOiAqIGVudW0gbXhsODYyeHhfYnJpZGdlX3BvcnRfY29uZmlnX21hc2sgLSBCcmlkZ2UgUG9ydCBjb25maWd1cmF0aW9uIG1hc2tcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC00MDQtICogQE1YTDg2MlhYX0JSSURHRV9QT1JUX0NPTkZJR19NQVNLX0JSSURHRV9JRDpcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNDYyLSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjQ2MzplbnVtIG14bDg2Mnh4X2JyaWRnZV9wb3J0X2NvbmZpZ19tYXNrIHtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC00NjQtXHRNWEw4NjJYWF9CUklER0VfUE9SVF9DT05GSUdfTUFTS19CUklER0VfSUQgPSBCSVQoMCksXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTQ5MS0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo0OTI6ICogZW51bSBteGw4NjJ4eF9jb2xvcl9tYXJraW5nX21vZGUgLSBDb2xvciBNYXJraW5nIE1vZGVcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC00OTMtICogQE1YTDg2MlhYX01BUktJTkdfQUxMX0dSRUVOOiBtYXJrIHBhY2tldHMgKGV4Y2VwdCBjcml0aWNhbCkgdG8gZ3JlZW5cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTAxLSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjUwMjplbnVtIG14bDg2Mnh4X2NvbG9yX21hcmtpbmdfbW9kZSB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTAzLVx0TVhMODYyWFhfTUFSS0lOR19BTExfR1JFRU4gPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01MTMtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTE0OiAqIGVudW0gbXhsODYyeHhfY29sb3JfcmVtYXJraW5nX21vZGUgLSBDb2xvciBSZW1hcmtpbmcgTW9kZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTUxNS0gKiBATVhMODYyWFhfUkVNQVJLSU5HX05PTkU6IHZhbHVlcyBmcm9tIGxhc3QgcHJvY2VzcyBzdGFnZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01MjItICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTIzOmVudW0gbXhsODYyeHhfY29sb3JfcmVtYXJraW5nX21vZGUge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTUyNC1cdE1YTDg2MlhYX1JFTUFSS0lOR19OT05FID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTMzLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjUzNDogKiBlbnVtIG14bDg2Mnh4X3BtYXBwZXJfbWFwcGluZ19tb2RlIC0gUC1tYXBwZXIgTWFwcGluZyBNb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTM1LSAqIEBNWEw4NjJYWF9QTUFQUEVSX01BUFBJTkdfUENQOiBVc2UgUENQIGZvciBWTEFOIHRhZ2dlZCBwYWNrZXRzIHRvIGRlcml2ZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01NDEtICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTQyOmVudW0gbXhsODYyeHhfcG1hcHBlcl9tYXBwaW5nX21vZGUge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTU0My1cdE1YTDg2MlhYX1BNQVBQRVJfTUFQUElOR19QQ1AgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01NDgtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTQ5OiAqIHN0cnVjdCBteGw4NjJ4eF9wbWFwcGVyIC0gUC1tYXBwZXIgQ29uZmlndXJhdGlvblxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTU1MC0gKiBAcG1hcHBlcl9pZDogSW5kZXggb2YgUC1tYXBwZXIgKDAtMzEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTU2MC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo1NjE6c3RydWN0IG14bDg2Mnh4X3BtYXBwZXIge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTU2Mi1cdF9fbGUxNiBwbWFwcGVyX2lkO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01NjYtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTY3OiAqIHN0cnVjdCBteGw4NjJ4eF9icmlkZ2VfcG9ydF9jb25maWcgLSBCcmlkZ2UgUG9ydCBDb25maWd1cmF0aW9uXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTY4LSAqIEBicmlkZ2VfcG9ydF9pZDogQnJpZGdlIFBvcnQgSUQgYWxsb2NhdGVkIGJ5IGJyaWRnZSBwb3J0IGFsbG9jYXRpb25cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo1Njk6ICogQG1hc2s6IFNlZSBcdTAwMjZlbnVtIG14bDg2Mnh4X2JyaWRnZV9wb3J0X2NvbmZpZ19tYXNrXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTcwLSAqIEBicmlkZ2VfaWQ6IEJyaWRnZSBJRCAoRklEKSB0byB3aGljaCB0aGlzIGJyaWRnZSBwb3J0IGlzIGFzc29jaWF0ZWRcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTgzLSAqIEBpbmdyZXNzX21hcmtpbmdfbW9kZTogSW5ncmVzcyBjb2xvciBtYXJraW5nIG1vZGUuIFNlZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjU4NDogKiAgICAgICAgICAgICAgICAgICAgICAgIFx1MDAyNmVudW0gbXhsODYyeHhfY29sb3JfbWFya2luZ19tb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTg1LSAqIEBlZ3Jlc3NfcmVtYXJraW5nX21vZGU6IENvbG9yIHJlbWFya2luZyBmb3IgZWdyZXNzIHRyYWZmaWMuIFNlZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjU4NjogKiAgICAgICAgICAgICAgICAgICAgICAgICBcdTAwMjZlbnVtIG14bDg2Mnh4X2NvbG9yX3JlbWFya2luZ19tb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTg3LSAqIEBpbmdyZXNzX21ldGVyaW5nX2VuYWJsZTogVHJhZmZpYyBtZXRlcmluZyBvbiBpbmdyZXNzIHRyYWZmaWMgYXBwbGllc1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01OTctICogQHBtYXBwZXJfbWFwcGluZ19tb2RlOiBQLW1hcHBlciBtYXBwaW5nIG1vZGUuIFNlZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjU5ODogKiAgICAgICAgICAgICAgICAgICAgICAgIFx1MDAyNmVudW0gbXhsODYyeHhfcG1hcHBlcl9tYXBwaW5nX21vZGVcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01OTktICogQHBtYXBwZXJfaWRfdmFsaWQ6IFdoZW4gdHJ1ZSwgUC1tYXBwZXIgaXMgcmUtdXNlZDsgd2hlbiBmYWxzZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNjUzLSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjY1NDpzdHJ1Y3QgbXhsODYyeHhfYnJpZGdlX3BvcnRfY29uZmlnIHtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC02NTUtXHRfX2xlMTYgYnJpZGdlX3BvcnRfaWQ7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NjU2Olx0X19sZTMyIG1hc2s7IC8qIGVudW0gbXhsODYyeHhfYnJpZGdlX3BvcnRfY29uZmlnX21hc2sgKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC02NTctXHRfX2xlMTYgYnJpZGdlX2lkO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC02NjMtXHRfX2xlMTYgZWdyZXNzX2V4dGVuZGVkX3ZsYW5fYmxvY2tfc2l6ZTtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo2NjQ6XHRfX2xlMzIgaW5ncmVzc19tYXJraW5nX21vZGU7IC8qIGVudW0gbXhsODYyeHhfY29sb3JfbWFya2luZ19tb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NjY1Olx0X19sZTMyIGVncmVzc19yZW1hcmtpbmdfbW9kZTsgLyogZW51bSBteGw4NjJ4eF9jb2xvcl9yZW1hcmtpbmdfbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTY2Ni1cdHU4IGluZ3Jlc3NfbWV0ZXJpbmdfZW5hYmxlO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC02NzItXHRfX2xlMTYgZGVzdF9zdWJfaWZfaWRfZ3JvdXA7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NjczOlx0X19sZTMyIHBtYXBwZXJfbWFwcGluZ19tb2RlOyAvKiBlbnVtIG14bDg2Mnh4X3BtYXBwZXJfbWFwcGluZ19tb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNjc0LVx0dTggcG1hcHBlcl9pZF92YWxpZDtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo2NzU6XHRzdHJ1Y3QgbXhsODYyeHhfcG1hcHBlciBwbWFwcGVyO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTY3Ni1cdF9fbGUxNiBicmlkZ2VfcG9ydF9tYXBbOF07XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTcwOS0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3MTA6ICogc3RydWN0IG14bDg2Mnh4X2NmZyAtICBHbG9iYWwgU3dpdGNoIGNvbmZpZ3VyYXRpb24gQXR0cmlidXRlc1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjcxMTogKiBAbWFjX3RhYmxlX2FnZV90aW1lcjogU2VlIFx1MDAyNmVudW0gbXhsODYyeHhfYWdlX3RpbWVyXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzEyLSAqIEBhZ2VfdGltZXI6IEN1c3RvbSBNQUMgdGFibGUgYWdpbmcgdGltZXIgaW4gc2Vjb25kc1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03MjItICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NzIzOnN0cnVjdCBteGw4NjJ4eF9jZmcge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjcyNDpcdF9fbGUzMiBtYWNfdGFibGVfYWdlX3RpbWVyOyAvKiBlbnVtIG14bDg2Mnh4X2FnZV90aW1lciAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTcyNS1cdF9fbGUzMiBhZ2VfdGltZXI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTczNC0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3MzU6ICogZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX2ZpbHRlcl90eXBlIC0gRXh0ZW5kZWQgVkxBTiBmaWx0ZXIgdGFnIHR5cGVcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03MzYtICogQE1YTDg2MlhYX0VYVEVOREVEVkxBTl9GSUxURVJfVFlQRV9OT1JNQUw6IE5vcm1hbCB0YWdnZWRcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzQwLSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjc0MTplbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX3R5cGUge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc0Mi1cdE1YTDg2MlhYX0VYVEVOREVEVkxBTl9GSUxURVJfVFlQRV9OT1JNQUwgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03NDgtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NzQ5OiAqIGVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl9maWx0ZXJfdHBpZCAtIEV4dGVuZGVkIFZMQU4gZmlsdGVyIFRQSURcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03NTAtICogQE1YTDg2MlhYX0VYVEVOREVEVkxBTl9GSUxURVJfVFBJRF9OT19GSUxURVI6IE5vIFRQSUQgZmlsdGVyXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc1My0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3NTQ6ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX2ZpbHRlcl90cGlkIHtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03NTUtXHRNWEw4NjJYWF9FWFRFTkRFRFZMQU5fRklMVEVSX1RQSURfTk9fRklMVEVSID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzYwLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjc2MTogKiBlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX2RlaSAtIEV4dGVuZGVkIFZMQU4gZmlsdGVyIERFSVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc2Mi0gKiBATVhMODYyWFhfRVhURU5ERURWTEFOX0ZJTFRFUl9ERUlfTk9fRklMVEVSOiBObyBERUkgZmlsdGVyXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc2NS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3NjY6ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX2ZpbHRlcl9kZWkge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc2Ny1cdE1YTDg2MlhYX0VYVEVOREVEVkxBTl9GSUxURVJfREVJX05PX0ZJTFRFUiA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc3Mi0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3NzM6ICogZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF9yZW1vdmVfdGFnIC0gVGFnIHJlbW92YWwgYWN0aW9uXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzc0LSAqIEBNWEw4NjJYWF9FWFRFTkRFRFZMQU5fVFJFQVRNRU5UX05PVF9SRU1PVkVfVEFHOiBEbyBub3QgcmVtb3ZlIHRhZ1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03NzgtICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6Nzc5OmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfcmVtb3ZlX3RhZyB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzgwLVx0TVhMODYyWFhfRVhURU5ERURWTEFOX1RSRUFUTUVOVF9OT1RfUkVNT1ZFX1RBRyA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc4Ni0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3ODc6ICogZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF9wcmlvcml0eSAtIFRyZWF0bWVudCBwcmlvcml0eSBtb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzg4LSAqIEBNWEw4NjJYWF9FWFRFTkRFRFZMQU5fVFJFQVRNRU5UX1BSSU9SSVRZX1ZBTDogVXNlIGV4cGxpY2l0IHZhbHVlXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc5Mi0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3OTM6ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF9wcmlvcml0eSB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzk0LVx0TVhMODYyWFhfRVhURU5ERURWTEFOX1RSRUFUTUVOVF9QUklPUklUWV9WQUwgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04MDAtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODAxOiAqIGVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfdmlkIC0gVHJlYXRtZW50IFZJRCBtb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODAyLSAqIEBNWEw4NjJYWF9FWFRFTkRFRFZMQU5fVFJFQVRNRU5UX1ZJRF9WQUw6IFVzZSBleHBsaWNpdCBWSUQgdmFsdWVcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODA1LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjgwNjplbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fdHJlYXRtZW50X3ZpZCB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODA3LVx0TVhMODYyWFhfRVhURU5ERURWTEFOX1RSRUFUTUVOVF9WSURfVkFMID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODEyLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjgxMzogKiBlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fdHJlYXRtZW50X3RwaWQgLSBUcmVhdG1lbnQgVFBJRCBtb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODE0LSAqIEBNWEw4NjJYWF9FWFRFTkRFRFZMQU5fVFJFQVRNRU5UX0lOTkVSX1RQSUQ6IENvcHkgZnJvbSBpbm5lciB0YWdcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODE4LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjgxOTplbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fdHJlYXRtZW50X3RwaWQge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgyMC1cdE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfSU5ORVJfVFBJRCA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgyNi0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4Mjc6ICogZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF9kZWkgLSBUcmVhdG1lbnQgREVJIG1vZGVcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04MjgtICogQE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfSU5ORVJfREVJOiBDb3B5IGZyb20gaW5uZXIgdGFnXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgzMi0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4MzM6ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF9kZWkge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgzNC1cdE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfSU5ORVJfREVJID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODQwLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjg0MTogKiBlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fNF90cGlkX21vZGUgLSA0LVRQSUQgbW9kZSBzZWxlY3RvclxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg0Mi0gKiBATVhMODYyWFhfRVhURU5ERURWTEFOX1RQSURfVlRFVFlQRV8xOiBWTEFOIFRQSUQgdHlwZSAxXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg0Ni0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4NDc6ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuXzRfdHBpZF9tb2RlIHtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04NDgtXHRNWEw4NjJYWF9FWFRFTkRFRFZMQU5fVFBJRF9WVEVUWVBFXzEgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04NTQtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODU1OiAqIGVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl9maWx0ZXJfZXRoZXJ0eXBlIC0gRmlsdGVyIEV0aGVyVHlwZSBtYXRjaFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg1Ni0gKiBATVhMODYyWFhfRVhURU5ERURWTEFOX0ZJTFRFUl9FVEhFUlRZUEVfTk9fRklMVEVSOiBObyBmaWx0ZXJcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODY0LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjg2NTplbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX2V0aGVydHlwZSB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODY2LVx0TVhMODYyWFhfRVhURU5ERURWTEFOX0ZJTFRFUl9FVEhFUlRZUEVfTk9fRklMVEVSID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODc2LS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjg3NzogKiBzdHJ1Y3QgbXhsODYyeHhfZXh0ZW5kZWR2bGFuX2ZpbHRlcl92bGFuIC0gUGVyLXRhZyBmaWx0ZXIgaW4gRXh0ZW5kZWQgVkxBTlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjg3ODogKiBAdHlwZTogVGFnIHByZXNlbmNlL3R5cGUgbWF0Y2ggKHNlZSBcdTAwMjZlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX3R5cGUpXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODc5LSAqIEBwcmlvcml0eV9lbmFibGU6IEVuYWJsZSBQQ1AgdmFsdWUgbWF0Y2hpbmdcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODgyLSAqIEB2aWRfdmFsOiBWSUQgdmFsdWUgdG8gbWF0Y2hcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4ODM6ICogQHRwaWQ6IFRQSUQgbWF0Y2ggbW9kZSAoc2VlIFx1MDAyNmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl9maWx0ZXJfdHBpZClcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4ODQ6ICogQGRlaTogREVJIG1hdGNoIG1vZGUgKHNlZSBcdTAwMjZlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX2RlaSlcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04ODUtICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODg2OnN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fZmlsdGVyX3ZsYW4ge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg4Ny1cdF9fbGUzMiB0eXBlO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04OTYtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODk3OiAqIHN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fZmlsdGVyIC0gRXh0ZW5kZWQgVkxBTiBmaWx0ZXIgY29uZmlndXJhdGlvblxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg5OC0gKiBAb3JpZ2luYWxfcGFja2V0X2ZpbHRlcl9tb2RlOiBJZiB0cnVlLCBmaWx0ZXIgb24gb3JpZ2luYWwgKHByZS10cmVhdG1lbnQpXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODk5LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjkwMDogKiBAZmlsdGVyXzRfdHBpZF9tb2RlOiA0LVRQSUQgbW9kZSAoc2VlIFx1MDAyNmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl80X3RwaWRfbW9kZSlcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MDEtICogQG91dGVyX3ZsYW46IE91dGVyIFZMQU4gdGFnIGZpbHRlclxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MDMtICogQGV0aGVyX3R5cGU6IEV0aGVyVHlwZSBmaWx0ZXIgKHNlZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjkwNDogKiAgICAgICAgICAgICAgXHUwMDI2ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX2ZpbHRlcl9ldGhlcnR5cGUpXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTA1LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjkwNjpzdHJ1Y3QgbXhsODYyeHhfZXh0ZW5kZWR2bGFuX2ZpbHRlciB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTA3LVx0dTggb3JpZ2luYWxfcGFja2V0X2ZpbHRlcl9tb2RlO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTkwOC1cdF9fbGUzMiBmaWx0ZXJfNF90cGlkX21vZGU7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTA5Olx0c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9maWx0ZXJfdmxhbiBvdXRlcl92bGFuO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjkxMDpcdHN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fZmlsdGVyX3ZsYW4gaW5uZXJfdmxhbjtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MTEtXHRfX2xlMzIgZXRoZXJfdHlwZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTE0LS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjkxNTogKiBzdHJ1Y3QgbXhsODYyeHhfZXh0ZW5kZWR2bGFuX3RyZWF0bWVudF92bGFuIC0gUGVyLXRhZyB0cmVhdG1lbnQgaW5cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MTYtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVuZGVkIFZMQU5cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MTctICogQHByaW9yaXR5X21vZGU6IFByaW9yaXR5IGFzc2lnbm1lbnQgbW9kZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjkxODogKiAgICAgICAgICAgICAgICAgKHNlZSBcdTAwMjZlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fdHJlYXRtZW50X3ByaW9yaXR5KVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTkxOS0gKiBAcHJpb3JpdHlfdmFsOiBQcmlvcml0eSB2YWx1ZSAod2hlbiBtb2RlIGlzIFZBTClcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MjAtICogQHZpZF9tb2RlOiBWSUQgYXNzaWdubWVudCBtb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTIxOiAqICAgICAgICAgICAgKHNlZSBcdTAwMjZlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fdHJlYXRtZW50X3ZpZClcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MjItICogQHZpZF92YWw6IFZJRCB2YWx1ZSAod2hlbiBtb2RlIGlzIFZBTClcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MjMtICogQHRwaWQ6IFRQSUQgYXNzaWdubWVudCBtb2RlXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTI0OiAqICAgICAgICAoc2VlIFx1MDAyNmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfdHBpZClcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MjUtICogQGRlaTogREVJIGFzc2lnbm1lbnQgbW9kZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjkyNjogKiAgICAgICAoc2VlIFx1MDAyNmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfZGVpKVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTkyNy0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5Mjg6c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl90cmVhdG1lbnRfdmxhbiB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTI5LVx0X19sZTMyIHByaW9yaXR5X21vZGU7XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTkzNy0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5Mzg6ICogc3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl90cmVhdG1lbnQgLSBFeHRlbmRlZCBWTEFOIHRyZWF0bWVudFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTkzOS0gKiBAcmVtb3ZlX3RhZzogVGFnIHJlbW92YWwgYWN0aW9uXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTQwOiAqICAgICAgICAgICAgICAoc2VlIFx1MDAyNmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfcmVtb3ZlX3RhZylcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05NDEtICogQHRyZWF0bWVudF80X3RwaWRfbW9kZTogNC1UUElEIHRyZWF0bWVudCBtb2RlXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTk1OC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5NTk6c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl90cmVhdG1lbnQge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTk2MC1cdF9fbGUzMiByZW1vdmVfdGFnO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05NjItXHR1OCBhZGRfb3V0ZXJfdmxhbjtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5NjM6XHRzdHJ1Y3QgbXhsODYyeHhfZXh0ZW5kZWR2bGFuX3RyZWF0bWVudF92bGFuIG91dGVyX3ZsYW47XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTY0LVx0dTggYWRkX2lubmVyX3ZsYW47XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTY1Olx0c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl90cmVhdG1lbnRfdmxhbiBpbm5lcl92bGFuO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTk2Ni1cdHU4IHJlYXNzaWduX2JyaWRnZV9wb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05ODAtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTgxOiAqIHN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fYWxsb2MgLSBFeHRlbmRlZCBWTEFOIGJsb2NrIGFsbG9jYXRpb25cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05ODItICogQG51bWJlcl9vZl9lbnRyaWVzOiBOdW1iZXIgb2YgZW50cmllcyB0byBhbGxvY2F0ZSAoaW5wdXQpIC8gYWxsb2NhdGVkXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTk4OC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5ODk6c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9hbGxvYyB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTkwLVx0X19sZTE2IG51bWJlcl9vZl9lbnRyaWVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05OTQtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTk1OiAqIHN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fY29uZmlnIC0gRXh0ZW5kZWQgVkxBTiBlbnRyeSBjb25maWd1cmF0aW9uXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTk2LSAqIEBleHRlbmRlZF92bGFuX2Jsb2NrX2lkOiBCbG9jayBJRCBmcm9tIGFsbG9jYXRpb25cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAwMi0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDAzOnN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fY29uZmlnIHtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDA0LVx0X19sZTE2IGV4dGVuZGVkX3ZsYW5fYmxvY2tfaWQ7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAwNS1cdF9fbGUxNiBlbnRyeV9pbmRleDtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDA2Olx0c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9maWx0ZXIgZmlsdGVyO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwMDc6XHRzdHJ1Y3QgbXhsODYyeHhfZXh0ZW5kZWR2bGFuX3RyZWF0bWVudCB0cmVhdG1lbnQ7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAwOC19IF9fcGFja2VkO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDEwLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwMTE6ICogZW51bSBteGw4NjJ4eF92bGFuX2ZpbHRlcl90Y2lfbWFzayAtIFZMQU4gRmlsdGVyIFRDSSBtYXNrXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAxMi0gKiBATVhMODYyWFhfVkxBTl9GSUxURVJfVENJX01BU0tfVklEOiBUQ0kgbWFzayBmb3IgVkxBTiBJRFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDE1LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwMTY6ZW51bSBteGw4NjJ4eF92bGFuX2ZpbHRlcl90Y2lfbWFzayB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAxNy1cdE1YTDg2MlhYX1ZMQU5fRklMVEVSX1RDSV9NQVNLX1ZJRCA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwMjItLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTAyMzogKiBzdHJ1Y3QgbXhsODYyeHhfdmxhbmZpbHRlcl9hbGxvYyAtIFZMQU4gRmlsdGVyIGJsb2NrIGFsbG9jYXRpb25cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDI0LSAqIEBudW1iZXJfb2ZfZW50cmllczogTnVtYmVyIG9mIGVudHJpZXMgdG8gYWxsb2NhdGUgKGlucHV0KSAvIGFsbG9jYXRlZFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDM0LSAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwMzU6c3RydWN0IG14bDg2Mnh4X3ZsYW5maWx0ZXJfYWxsb2Mge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwMzYtXHRfX2xlMTYgbnVtYmVyX29mX2VudHJpZXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwNDMtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTA0NDogKiBzdHJ1Y3QgbXhsODYyeHhfdmxhbmZpbHRlcl9jb25maWcgLSBWTEFOIEZpbHRlciBlbnRyeSBjb25maWd1cmF0aW9uXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA0NS0gKiBAdmxhbl9maWx0ZXJfYmxvY2tfaWQ6IEJsb2NrIElEIGZyb20gYWxsb2NhdGlvblxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDQ3LSAqIEB2bGFuX2ZpbHRlcl9tYXNrOiBUQ0kgZmllbGQocykgdG8gbWF0Y2ggKHNlZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwNDg6ICogICAgICAgICAgICAgICAgICAgIFx1MDAyNmVudW0gbXhsODYyeHhfdmxhbl9maWx0ZXJfdGNpX21hc2spXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA0OS0gKiBAdmFsOiBUQ0kgdmFsdWUocykgdG8gbWF0Y2ggKFZJRCwgUENQLCBvciBmdWxsIFRDSSBkZXBlbmRpbmcgb24gbWFzaylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA1NC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDU1OnN0cnVjdCBteGw4NjJ4eF92bGFuZmlsdGVyX2NvbmZpZyB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA1Ni1cdF9fbGUxNiB2bGFuX2ZpbHRlcl9ibG9ja19pZDtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDU3LVx0X19sZTE2IGVudHJ5X2luZGV4O1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwNTg6XHRfX2xlMzIgdmxhbl9maWx0ZXJfbWFzazsgLyogZW51bSBteGw4NjJ4eF92bGFuX2ZpbHRlcl90Y2lfbWFzayAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwNTktXHRfX2xlMzIgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDYzLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwNjQ6ICogZW51bSBteGw4NjJ4eF9zc19zcF90YWdfbWFzayAtIFNwZWNpYWwgdGFnIHZhbGlkIGZpZWxkIGluZGljYXRvciBiaXRzXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA2NS0gKiBATVhMODYyWFhfU1NfU1BfVEFHX01BU0tfUlg6IHZhbGlkIFJYIHNwZWNpYWwgdGFnIG1vZGVcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA2OS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDcwOmVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX21hc2sge1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwNzEtXHRNWEw4NjJYWF9TU19TUF9UQUdfTUFTS19SWCA9IEJJVCgwKSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA3Ny0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDc4OiAqIGVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX3J4IC0gUlggc3BlY2lhbCB0YWcgbW9kZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwNzktICogQE1YTDg2MlhYX1NTX1NQX1RBR19SWF9OT19UQUdfTk9fSU5TRVJUOiBwYWNrZXQgZG9lcyBOT1QgaGF2ZSBzcGVjaWFsXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwODUtICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTA4NjplbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ19yeCB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA4Ny1cdE1YTDg2MlhYX1NTX1NQX1RBR19SWF9OT19UQUdfTk9fSU5TRVJUID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA5Mi0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDkzOiAqIGVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX3R4IC0gVFggc3BlY2lhbCB0YWcgbW9kZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwOTQtICogQE1YTDg2MlhYX1NTX1NQX1RBR19UWF9OT19UQUdfTk9fUkVNT1ZFOiBwYWNrZXQgZG9lcyBOT1QgaGF2ZSBzcGVjaWFsXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMDItICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTEwMzplbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ190eCB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTEwNC1cdE1YTDg2MlhYX1NTX1NQX1RBR19UWF9OT19UQUdfTk9fUkVNT1ZFID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTExMC0vKipcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTExOiAqIGVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX3J4X3BlbiAtIFJYIHNwZWNpYWwgdGFnIGluZm8gb3ZlciBwcmVhbWJsZVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMTItICogQE1YTDg2MlhYX1NTX1NQX1RBR19SWF9QRU5fQUxMXzA6IHNwZWNpYWwgdGFnIGluZm8gaW5zZXJ0ZWQgZnJvbSBieXRlIDJcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTEyMi0gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTIzOmVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX3J4X3BlbiB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTEyNC1cdE1YTDg2MlhYX1NTX1NQX1RBR19SWF9QRU5fQUxMXzAgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMTMwLS8qKlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjExMzE6ICogc3RydWN0IG14bDg2Mnh4X3NzX3NwX3RhZyAtIFNwZWNpYWwgdGFnIHBvcnQgc2V0dGluZ3NcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMTMyLSAqIEBwaWQ6IHBvcnQgSUQgKDF+MTYpXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTEzMzogKiBAbWFzazogU2VlIFx1MDAyNmVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX21hc2tcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTM0OiAqIEByeDogU2VlIFx1MDAyNmVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX3J4XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTEzNTogKiBAdHg6IFNlZSBcdTAwMjZlbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ190eFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjExMzY6ICogQHJ4X3BlbjogU2VlIFx1MDAyNmVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX3J4X3BlblxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMzctICogQHR4X3BlbjogVFggc3BlY2lhbCB0YWcgaW5mbyBvdmVyIHByZWFtYmxlXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExNDAtICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTE0MTpzdHJ1Y3QgbXhsODYyeHhfc3Nfc3BfdGFnIHtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMTQyLVx0dTggcGlkO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjExNDM6XHR1OCBtYXNrOyAvKiBlbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ19tYXNrICovXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTE0NDpcdHU4IHJ4OyAvKiBlbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ19yeCAqL1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjExNDU6XHR1OCB0eDsgLyogZW51bSBteGw4NjJ4eF9zc19zcF90YWdfdHggKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTQ2Olx0dTggcnhfcGVuOyAvKiBlbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ19yeF9wZW4gKi9cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMTQ3LVx0dTggdHhfcGVuOyAvKiBib29sZWFuICovXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExNTAtLyoqXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTE1MTogKiBlbnVtIG14bDg2Mnh4X2xvZ2ljYWxfcG9ydF9tb2RlIC0gTG9naWNhbCBwb3J0IG1vZGVcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMTUyLSAqIEBNWEw4NjJYWF9MT0dJQ0FMX1BPUlRfOEJJVF9XTEFOOiBXTEFOIHdpdGggOC1iaXQgc3RhdGlvbiBJRFxuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNzY3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVhMODYyWFggU3dpdGNoIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIsIHdoaWNoIGl0IGFsbW9zdCBjZXJ0YWlubHkgaXMuIFRoZSBuYW1lIGBteGw4NjJ4eGAgc3Ryb25nbHkgc3VnZ2VzdHMgaXQmIzM5O3MgYSBNYXhMaW5lYXIgc3dpdGNoIG9mIHNvbWUgc29ydC4gVGhlIHJlYWwgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVyZSBpcyBhbnkgcG9zc2liaWxpdHksIGV2ZW4gYSBzbGltIG9uZSwgb2YgZW11bGF0aW5nIHRoaXMgZHJpdmVyIGZvciB0ZXN0aW5nIG9yIGRldmVsb3BtZW50IHB1cnBvc2VzPwoKVG8gYW5zd2VyIHRoYXQgSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4gRWl0aGVyIGBkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvS2NvbmZpZ2AgZGlyZWN0bHkgb3IgdGhlIGJyb2FkZXIgYGRyaXZlcnMvbmV0L2RzYS9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBoaW50cyBhYm91dCBkZXBlbmRlbmNpZXMgb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgZ2l2ZSBtZSBzb21lIGNsdWVzLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgZHJpdmVyIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYW5kIGlmIHRoZXJlJiMzOTtzIGFueSBmbGV4aWJpbGl0eSBpbiBob3cgaXQmIzM5O3MgYnVpbHQgb3IgY29uZmlndXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0RTQV9NWEw4NjImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvS2NvbmZpZzoyOmNvbmZpZyBORVRfRFNBX01YTDg2MlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01heExpbmVhciBNeEw4NjJ4eFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjM3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgYGRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9LY29uZmlnYCBmaWxlLCB0aGlua2luZyBsaWtlIGEgc2Vhc29uZWQgZW1iZWRkZWQgc3lzdGVtcyBkZXZlbG9wZXI6CgoqKkRlbHZpbmcgaW50byB0aGUgTVhMODYyWFggS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGlzIEtjb25maWcgZmlsZSBmb3IgdGhlIE1hcnZlbGwgTVhMODYyWFggRFNBIGRyaXZlci4gSW1tZWRpYXRlbHksIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvcmUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBNeSBpbml0aWFsIHRob3VnaHRzIGFyZSBnZWFyZWQgdG93YXJkIHVuZGVyc3RhbmRpbmcgd2hhdCBmZWF0dXJlcyBhcmUgY29uZmlndXJhYmxlIGFuZCBob3cgdGhleSB0aWUgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGdldCBhIGdyaXAgb24gdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLCB3aGljaCBpcyBrZXkuCgpJIHNlZSB0aGUgYGNvbmZpZyBNWEw4NjJYWGAgb3B0aW9uIOKAkyB0aGF0JiMzOTtzIHRoZSBwcmltYXJ5IHN3aXRjaCwgSSBhc3N1bWUuIEkgbmVlZCB0byBjaGVjayBpdHMgZGVwZW5kZW5jaWVzLiBMaWtlbHksIHRoaXMgd2lsbCBkZXBlbmQgb24gc29tZSBiYXNlIG5ldHdvcmtpbmcgb3IgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIHRob3NlLi4uIEFoLCBgTkVUX0RTQWAgc2VlbXMgbGlrZSB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludC4gR29vZCwgdGhhdCBtYWtlcyBzZW5zZS4gSSB3b3VsZCBleHBlY3Qgc29tZSBkZXBlbmRlbmNpZXMgb24gTURJTyBhcyB3ZWxsLiBBbmQgcHJvYmFibHkgc29tZSBBUk0tc3BlY2lmaWMgdGhpbmdzIHNpbmNlIHRoaXMgaXMgYW4gZW1iZWRkZWQgc29sdXRpb24uCgpUaGUgYHRyaXN0YXRlYCBuYXR1cmUgb2YgaXQgaXMgc3RhbmRhcmQuIFRoZSB1c2VyIHdpbGwgYmUgYWJsZSB0byBlaXRoZXIgYnVpbGQgaXQgaW50byB0aGUga2VybmVsLCBhcyBhIG1vZHVsZSwgb3Igbm90IGluY2x1ZGUgaXQgYXQgYWxsLCBiYXNlZCBvbiB0aGVpciBzZXR1cC4KClRoZW4sIEkmIzM5O2xsIGFuYWx5emUgdGhlIGluZGl2aWR1YWwgc3ViLW9wdGlvbnMgd2l0aGluIGBNWEw4NjJYWGAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhlcmUgd2lsbCBiZSB0b2dnbGVzIGZvciBkaWZmZXJlbnQgUEhZIG1vZGVzLCBtYW5hZ2VtZW50IGludGVyZmFjZXMgKE1ESU8/KSwgYW5kIHBlcmhhcHMgaGFyZHdhcmUgZmVhdHVyZXMgc3BlY2lmaWMgdG8gZGlmZmVyZW50IE1YTDg2MlhYIHJldmlzaW9ucywgb3IgZXZlbiBmZWF0dXJlcyBsaWtlIFZMQU4gc3VwcG9ydC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgbW9zdCBjb21tb24gdXNlIGNhc2VzLCBlc3BlY2lhbGx5IGlmIHRoZXkgYXJlIHNlbnNpYmxlIGRlZmF1bHRzIHRoYXQgYSB1c2VyIHdpbGwgbm90IG5lZWQgdG8gY2hhbmdlLgoKVGhlIHByZXNlbmNlIG9mIGBoZWxwYCB0ZXh0IGlzIGNydWNpYWwuIFRoYXQmIzM5O3Mgd2hlcmUgSSB3aWxsIGZpbmQgdGhlIHJlYWwgbWVhdCBvZiB0aGUgY29uZmlndXJhdGlvbiwgdGhlIGV4cGxhbmF0aW9uIG9mIGVhY2ggb3B0aW9uLCB3aGF0IGl0IGRvZXMsIGFuZCBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgZGVzY3JpcHRpb25zIGFyZSBjbGVhciBhbmQgYWNjdXJhdGUuIElzIHRoZXJlIGFueSBjcm9zcy1yZWZlcmVuY2luZyB0byB0aGUgZGV2aWNlIGRvY3VtZW50YXRpb24gb3IgZGF0YXNoZWV0cz8gVGhhdCB3b3VsZCBiZSBhIGh1Z2UgcGx1cy4KCkkgYW0gYWxzbyBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzLiBEb2VzIG9uZSBvcHRpb24gZXhjbHVkZSBhbm90aGVyPyBPciBhcmUgdGhlcmUgaW50ZXJhY3Rpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gSSBuZWVkIHRvIGFuYWx5emUgaG93IHRoaXMgS2NvbmZpZyBmaWxlIGludGVncmF0ZXMgd2l0aCBvdGhlciBjb25maWd1cmF0aW9ucyBpbiB0aGUgYGRyaXZlcnMvbmV0L2RzYWAgc3VidHJlZSBhbmQgcG9zc2libHkgZXZlbiB0aGUgYnJvYWRlciBuZXR3b3JraW5nIHN0YWNrLiBJIG5lZWQgdG8gZW5zdXJlIGl0JiMzOTtzIGNsZWFuIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHN1cnByaXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBORVRfRFNBX01YTDg2MlxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWF4TGluZWFyIE14TDg2Mnh4XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FcbiAgIDU6XHRcdHNlbGVjdCBDUkMxNlxuICAgNjpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX01YTF84NjJYWFxuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIE1heExpbmVhciBNeEw4NjJ4eCBzd2l0Y2ggZmFtaWx5LlxuICAgOTpcdFx0ICBUaGVzZSBzd2l0Y2hlcyBoYXZlIHR3byAxMEdFIFNlckRlcyBpbnRlcmZhY2VzLCBvbmUgdHlwaWNhbGx5XG4gIDEwOlx0XHQgIHVzZWQgYXMgQ1BVIHBvcnQuXG4gIDExOlx0XHQgICAtIE14TDg2MjgyIGhhcyBlaWdodCAyLjUgR2lnYWJpdCBQSFlzXG4gIDEyOlx0XHQgICAtIE14TDg2MjUyIGhhcyBmaXZlIDIuNSBHaWdhYml0IFBIWXNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjAzMQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEhhcmR3YXJlIFN3aXRjaCBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLiBJdCYjMzk7cyBhIGhhcmR3YXJlIHN3aXRjaCBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhlIE1heExpbmVhciBNeEw4NjJ4eC4gVGhlIGZpcnN0IHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIGNhbiBJIGV2ZW4gZ2V0IGF0IHRoaXMgdGhpbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gTGlrZWx5IG5vdCwgc2luY2UgaXQmIzM5O3MgYSAqcGh5c2ljYWwqIGhhcmR3YXJlIGRyaXZlci4gVW5sZXNzIHRoZXJlJiMzOTtzIHNvbWUga2luZCBvZiBlbXVsYXRvciBmb3IgdGhlIE14TDg2Mnh4LCBhbmQgdGhhdCYjMzk7cyBwcmV0dHkgaW1wcm9iYWJsZS4KClRoZW4gSSByZW1lbWJlciBzb21ldGhpbmcgaW1wb3J0YW50OiBzeXpib3QsIHRoZSBhdXRvbWF0ZWQga2VybmVsIGZ1enplciBJJiMzOTttIHVzaW5nLCAqZG9lc24mIzM5O3QqIGhhdmUgdGhhdCBzcGVjaWZpYyBoYXJkd2FyZS4gVGhpcyBkcml2ZXIgaXMgb2ZmIHRoZSB0YWJsZSBmb3Igc3l6a2FsbGVyLgoKSG1tLCBidXQgaXMgdGhlcmUgKmFueSogd2F5IHRvIGVtdWxhdGUgaXQ/IFBlcmhhcHMgdGhlcmUmIzM5O3MgYSB3b3JrYXJvdW5kLiBTaW5jZSBpdCYjMzk7cyBhbiBNRElPIGRldmljZSwgSSB0aGluayB0aGVyZSBtYXkgYmUgYW4gb3B0aW9uLCBidXQgdGhlIGRldmljZSBuZWVkcyB0byByZWdpc3RlciB3aXRoIE1ESU8uIE5vdywgdGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguY2AgdG8gc2VlIGhvdyBpdCBwZXJmb3JtcyBpdHMgcHJvYmUsIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBob29rcyBJIGNhbiB1c2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O214bDg2Mnh4X3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYz0yMDkwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgbXhsODYyeHhfc3dpdGNoX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yMTI1LVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmM6MjEyNjpzdGF0aWMgaW50IG14bDg2Mnh4X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTIxMjcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jPTIyMzU9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBteGw4NjJ4eF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYzoyMjM2Olx0LnByb2JlICA9IG14bDg2Mnh4X3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjIzNy1cdC5yZW1vdmUgPSBteGw4NjJ4eF9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNzYxCgkJCQkJCQlvdXRwdXQ6IDg1CgkJCQkJCQl0aG91Z2h0czogNDA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk1ESU8gRHJpdmVyIEZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYW4gTURJTyBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHN5emthbGxlciBldmVuIHRvdWNoIE1ESU8gZGV2aWNlcz8gVHlwaWNhbGx5LCB0aGV5JiMzOTtyZSBwcm9iZWQgdGhyb3VnaCBkZXZpY2UgdHJlZSBvciBBQ1BJLCBub3Qgc29tZXRoaW5nIHN5emthbGxlciBpcyByZWFkaWx5IHNldCB1cCB0byBoYW5kbGUsIHVubGVzcyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIHBzZXVkby1kZXZpY2Ugb3IgYSBzeXprYWxsZXItY29udHJvbGxlZCB2aXJ0dWFsIGJ1cy4gSSAqZG9uJiMzOTt0KiB0aGluayBzeXprYWxsZXIgY2FuIGRpcmVjdGx5IGluamVjdCBNRElPIGRldmljZXMsIGFuZCBldmVuIGlmIGl0IGNvdWxkLCB3ZSYjMzk7ZCBiZSB0YWxraW5nIGFib3V0IG5lZWRpbmcgdGhlICpzcGVjaWZpYyogaGFyZHdhcmUgb3IgYSBkZXRhaWxlZCBzb2Z0d2FyZSBlbXVsYXRvci4gQW5kIHNpbmNlIHRoaXMgaXMgYSAqcGh5c2ljYWwqIGhhcmR3YXJlIGRyaXZlciwgaXQmIzM5O3MgYSBub24tc3RhcnRlciBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gTXkgZ3V0IHNheXMsICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsuCgpMZXQgbWUgZG91YmxlIGNoZWNrLi4uIGFyZSB0aGVyZSBhbnkgTmV0bGluayBpbnRlcmZhY2VzIHRoYXQgbWlnaHQgcHJvdmlkZSBhIGJhY2tkb29yPyBBbHJpZ2h0LCB0aGUgcGF0Y2ggYWRkcyBgbXhsODYyeHhfZGV2bGlua19pbmZvX2dldGAgYW5kIGBteGw4NjJ4eF9kZXZsaW5rX2ZsYXNoX3VwZGF0ZWAsIHdoaWNoIGFyZSBkZXZsaW5rIG9wZXJhdGlvbnMuIFRob3NlIGFyZSByZWdpc3RlcmVkIHdoZW4gdGhlIERTQSBzd2l0Y2ggaXMgcmVnaXN0ZXJlZCwgYW5kIHRoZSBEU0Egc3dpdGNoIGl0c2VsZiBpcyByZWdpc3RlcmVkIGluIGBteGw4NjJ4eF9wcm9iZWAuIFNvIGlmIHRoZSBkZXZpY2UgZG9lc24mIzM5O3QgcHJvYmUsIHRoZXNlIGRldmxpbmsgb3BzICp3b24mIzM5O3QqIGJlIHJlZ2lzdGVyZWQsIGFuZCB0aGF0IGNvZGUgaXMgdW5yZWFjaGFibGUuCgpPa2F5LCBpcyB0aGVyZSAqYW55KiBvdGhlciBjb25jZWl2YWJsZSBwYXRoIHRvIHJlYWNoIHRoaXMgY29kZT8gTm9wZSwgaXQmIzM5O3MgYSBwdXJlIGhhcmR3YXJlIGRyaXZlci4KCldhaXQuLi4gbGV0IG1lIHJlLXJlYWQgdGhlIHByb21wdC4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEFuZCB0aGlzIGlzIGEgaGFyZHdhcmUgZHJpdmVyIGZvciBhIHNwZWNpZmljIHN3aXRjaCAoTWF4TGluZWFyIE14TDg2Mnh4KSBhbmQgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0b3IgZm9yIGl0LiBUaGlzICpkZWZpbml0ZWx5KiBmYWxscyB1bmRlciB0aGF0IGNhdGVnb3J5LgoKQWxyaWdodCwgSSYjMzk7bSBjb25maWRlbnQuIEkgd2lsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIChNYXhMaW5lYXIgTXhMODYyeHggc3dpdGNoKSB3aGljaCBpcyBhbiBNRElPIGRldmljZS4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0b3IgZm9yIHRoaXMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGEgZHJpdmVyIGZvciBwaHlzaWNhbCBoYXJkd2FyZSAoTWF4TGluZWFyIE14TDg2Mnh4IHN3aXRjaCkgd2hpY2ggaXMgYW4gTURJTyBkZXZpY2UuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTRUMDQ6NTc6MjEuMDQ1NTA0Mzc3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU1NTExMjc0NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgZHJpdmVyIGZvciBwaHlzaWNhbCBoYXJkd2FyZSAoTWF4TGluZWFyIE14TDg2Mnh4IHN3aXRjaCkgd2hpY2ggaXMgYW4gTURJTyBkZXZpY2UuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNDo1NzoyMS4wNDU1MDkwNTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MDAwODIxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGJhMmYwMmQ1YzMzN2QwOGMzNmYxYjcyMzgzZDk4ZGE1MDgxMTI4NGVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMDQ6NTc6MTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L01ha2VmaWxlIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L01ha2VmaWxlXFxuaW5kZXggYTdiZTBlNjY2OWRmYTUuLmJjY2FjMGQwZjcwM2Y2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9NYWtlZmlsZVxcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9NYWtlZmlsZVxcbkBAIC0xLDMgKzEsMyBAQFxcbiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuIG9iai0kKENPTkZJR19ORVRfRFNBX01YTDg2MikgKz0gbXhsODYyeHhfZHNhLm9cXG4tbXhsODYyeHhfZHNhLXkgOj0gbXhsODYyeHgubyBteGw4NjJ4eC1ob3N0Lm8gbXhsODYyeHgtcGh5bGluay5vXFxuK214bDg2Mnh4X2RzYS15IDo9IG14bDg2Mnh4Lm8gbXhsODYyeHgtaG9zdC5vIG14bDg2Mnh4LXBoeWxpbmsubyBteGw4NjJ4eC1mdy5vXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1jbWQuaCBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1jbWQuaFxcbmluZGV4IGM4N2E5NTVjMTNjNDhlLi5lMmFhMjkzNGU5ZTE2MiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtY21kLmhcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtY21kLmhcXG5AQCAtNzAsNiArNzAsNyBAQFxcbiAjZGVmaW5lIElOVF9HUEhZX1JFQURcXHRcXHRcXHQoR1BZX0dQWTJYWF9NQUdJQyArIDB4MSlcXG4gI2RlZmluZSBJTlRfR1BIWV9XUklURVxcdFxcdFxcdChHUFlfR1BZMlhYX01BR0lDICsgMHgyKVxcbiBcXG4rI2RlZmluZSBTWVNfTUlTQ19GV19VUERBVEVcXHRcXHQoU1lTX01JU0NfTUFHSUMgKyAweDEpXFxuICNkZWZpbmUgU1lTX01JU0NfRldfVkVSU0lPTlxcdFxcdChTWVNfTUlTQ19NQUdJQyArIDB4MilcXG4gXFxuICNkZWZpbmUgTVhMODYyWFhfWFBDU19QQ1NfQ09ORklHXFx0KE1YTDg2MlhYX1hQQ1NfTUFHSUMgKyAweDEpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1mdy5jIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWZ3LmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi44OGQ1M2JlYTMzNmZkNVxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtZncuY1xcbkBAIC0wLDAgKzEsNDM5IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyXFxuKy8qXFxuKyAqIEZpcm13YXJlIGZsYXNoIGFuZCBkZXZsaW5rIHN1cHBvcnQgZm9yIE1heExpbmVhciBNeEw4NjJ4eFxcbisgKlxcbisgKiBDb3B5cmlnaHQgKEMpIDIwMjUgRGFuaWVsIEdvbGxlIFxcdTAwM2NkYW5pZWxAbWFrcm90b3BpYS5vcmdcXHUwMDNlXFxuKyAqL1xcbitcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NyYzMyLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWxheS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZGV2aWNlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGRldmljZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3J0bmV0bGluay5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbmV0L2RzYS5oXFx1MDAzZVxcbitcXG4rI2luY2x1ZGUgXFxcIm14bDg2Mnh4LmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJteGw4NjJ4eC1hcGkuaFxcXCJcXG4rI2luY2x1ZGUgXFxcIm14bDg2Mnh4LWNtZC5oXFxcIlxcbisjaW5jbHVkZSBcXFwibXhsODYyeHgtZncuaFxcXCJcXG4rI2luY2x1ZGUgXFxcIm14bDg2Mnh4LWhvc3QuaFxcXCJcXG4rXFxuKy8qIFNCIFBESSByZWdpc3RlcnMgKGNsYXVzZS0yMiBTTURJTyBhZGRyZXNzIHNwYWNlKSAqL1xcbisjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9DVFJMXFx0XFx0MHhlMTAwXFxuKyNkZWZpbmUgTVhMODYyWFhfU0JfUERJX0FERFJcXHRcXHQweGUxMDFcXG4rI2RlZmluZSBNWEw4NjJYWF9TQl9QRElfREFUQVxcdFxcdDB4ZTEwMlxcbisjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9TVEFUXFx0XFx0MHhlMTAzXFxuK1xcbisvKiBTQiBQREkgQ1RSTCBtb2RlcyAqL1xcbisjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9DVFJMX1JTVFxcdDB4MDBcXG4rI2RlZmluZSBNWEw4NjJYWF9TQl9QRElfQ1RSTF9XUlxcdDB4MDJcXG4rXFxuKy8qIFNCIFBESSBoYW5kc2hha2UgbWFnaWMgKi9cXG4rI2RlZmluZSBNWEw4NjJYWF9TQl9QRElfUkVBRFlcXHRcXHQweGM1NWNcXG4rI2RlZmluZSBNWEw4NjJYWF9TQl9QRElfU1RBUlRcXHRcXHQweGY0OGZcXG4rI2RlZmluZSBNWEw4NjJYWF9TQl9QRElfRU5EXFx0XFx0MHgzY2MzXFxuK1xcbisvKiBGaXJtd2FyZSB0cmFuc2ZlciBnZW9tZXRyeSAqL1xcbisjZGVmaW5lIE1YTDg2MlhYX0ZXX0hEUl9TSVpFXFx0XFx0MjBcXG4rI2RlZmluZSBNWEw4NjJYWF9GV19CQU5LX0hBTEZcXHRcXHQxNjM4NFxcdC8qIHdvcmRzIHBlciBoYWxmLWJhbmsgKi9cXG4rI2RlZmluZSBNWEw4NjJYWF9GV19CQU5LX1NMSUNFXFx0XFx0MzI3NjBcXHQvKiB3b3JkcyBwZXIgZnVsbCBzbGljZSAqL1xcbisjZGVmaW5lIE1YTDg2MlhYX0ZXX1NCMV9BRERSXFx0XFx0MHg3ODAwXFx0LyogU0IxIHdvcmQgYWRkcmVzcyAqL1xcbitcXG4rLyogVGltZW91dHMgKGdlbmVyb3VzIHVwcGVyIGJvdW5kcykgKi9cXG4rI2RlZmluZSBNWEw4NjJYWF9GV19SRUFEWV9USU1FT1VUX01TXFx0MzAwMDBcXG4rI2RlZmluZSBNWEw4NjJYWF9GV19BQ0tfVElNRU9VVF9NU1xcdDUwMDBcXG4rI2RlZmluZSBNWEw4NjJYWF9GV19FUkFTRV9USU1FT1VUX01TXFx0MzAwMDAwXFxuKyNkZWZpbmUgTVhMODYyWFhfRldfV1JJVEVfVElNRU9VVF9NU1xcdDEyMDAwMFxcbisjZGVmaW5lIE1YTDg2MlhYX0ZXX1JFQk9PVF9ERUxBWV9NU1xcdDUwMDBcXG4rXFxuK3N0YXRpYyB2b2lkIG14bDg2Mnh4X3NiX3BkaV9yZXNldChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdilcXG4re1xcbitcXHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfQ1RSTCxcXG4rXFx0XFx0XFx0ICAgICBNWEw4NjJYWF9TQl9QRElfQ1RSTF9SU1QpO1xcbitcXHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfQUREUixcXG4rXFx0XFx0XFx0ICAgICBNWEw4NjJYWF9TQl9QRElfQ1RSTF9SU1QpO1xcbitcXHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfREFUQSxcXG4rXFx0XFx0XFx0ICAgICBNWEw4NjJYWF9TQl9QRElfQ1RSTF9SU1QpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUxNiBleHBlY3RlZCxcXG4rXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXRfbXMpXFxuK3tcXG4rXFx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXModGltZW91dF9tcyk7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRkbyB7XFxuK1xcdFxcdHJldCA9IG14bDg2Mnh4X3NtZGlvX3JlYWQocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVQpO1xcbitcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0XFx0aWYgKCh1MTYpcmV0ID09IGV4cGVjdGVkKVxcbitcXHRcXHRcXHRyZXR1cm4gMDtcXG4rXFx0XFx0dXNsZWVwX3JhbmdlKDEwMDAwLCAxMTAwMCk7XFxuK1xcdH0gd2hpbGUgKHRpbWVfYmVmb3JlKGppZmZpZXMsIHRpbWVvdXQpKTtcXG4rXFxuK1xcdHJldHVybiAtRVRJTUVET1VUO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IG14bDg2Mnh4X3NiX3BkaV9mbHVzaF9zbGljZShzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdixcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHUzMiBkYXRhX3dyaXR0ZW4pXFxuK3tcXG4rXFx0bXhsODYyeHhfc2JfcGRpX3Jlc2V0KHByaXYpO1xcbitcXHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfU1RBVCwgZGF0YV93cml0dGVuKTtcXG4rXFxuK1xcdHJldHVybiBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIDAsXFxuK1xcdFxcdFxcdFxcdFxcdCBNWEw4NjJYWF9GV19XUklURV9USU1FT1VUX01TKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgbXhsODYyeHhfZmxhc2hfbm90aWZ5KHN0cnVjdCBkZXZsaW5rICpkbCwgY29uc3QgY2hhciAqc3RhdHVzLFxcbitcXHRcXHRcXHRcXHQgIHUzMiBkb25lLCB1MzIgdG90YWwpXFxuK3tcXG4rXFx0ZGV2bGlua19mbGFzaF91cGRhdGVfc3RhdHVzX25vdGlmeShkbCwgc3RhdHVzLCBOVUxMLCBkb25lLCB0b3RhbCk7XFxuK31cXG4rXFxuKy8qKlxcbisgKiBteGw4NjJ4eF9yZXNjdWVfbW9kZV9kZXRlY3QgLSBjaGVjayB3aGV0aGVyIHRoZSBzd2l0Y2ggc2l0cyBpbiBNQ1Vib290XFxuKyAqIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBkYXRhXFxuKyAqXFxuKyAqIE1DVWJvb3Qgc2lnbmFscyByZWFkaW5lc3MgZm9yIGEgZmlybXdhcmUgZG93bmxvYWQgd2l0aCB0aGUgU0IgUERJXFxuKyAqIHJlYWR5IG1hZ2ljOyBvbmx5IHRoZSBjbGF1c2UtMjIgU01ESU8gaW50ZXJmYWNlIHdvcmtzIGluIHRoaXMgc3RhdGUuXFxuKyAqXFxuKyAqIFJldHVybjogdHJ1ZSBpZiBNQ1Vib290IGlzIHdhaXRpbmcgZm9yIGEgZmlybXdhcmUgZG93bmxvYWQuXFxuKyAqL1xcbitib29sIG14bDg2Mnh4X3Jlc2N1ZV9tb2RlX2RldGVjdChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdilcXG4re1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cmV0ID0gbXhsODYyeHhfc21kaW9fcmVhZChwcml2LCBNWEw4NjJYWF9TQl9QRElfU1RBVCk7XFxuK1xcbitcXHRyZXR1cm4gcmV0ID09IE1YTDg2MlhYX1NCX1BESV9SRUFEWTtcXG4rfVxcbitcXG4rLyogZGV2aWNlX3JlcHJvYmUoKSAtXFx1MDAzZSByZW1vdmUoKSBmcmVlcyBwcml2IHdoaWxlIHRoZSB3b3JrIHJ1bnMsIHNvXFxuKyAqIHRoZSB3b3JrIHN0cnVjdCBjYW5ub3QgbGl2ZSBpbiBteGw4NjJ4eF9wcml2LlxcbisgKi9cXG4rc3RydWN0IG14bDg2Mnh4X3JlcHJvYmUge1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkZXY7XFxuK1xcdHN0cnVjdCBkZWxheWVkX3dvcmsgZHdvcms7XFxuK307XFxuK1xcbitzdGF0aWMgdm9pZCBteGw4NjJ4eF9yZXByb2JlX3dvcmtfZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbit7XFxuK1xcdHN0cnVjdCBteGw4NjJ4eF9yZXByb2JlICpyZXByb2JlID1cXG4rXFx0XFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBteGw4NjJ4eF9yZXByb2JlLCBkd29yay53b3JrKTtcXG4rXFxuK1xcdGlmIChkZXZpY2VfcmVwcm9iZShyZXByb2JlLVxcdTAwM2VkZXYpKVxcbitcXHRcXHRkZXZfZXJyKHJlcHJvYmUtXFx1MDAzZWRldiwgXFxcInJlcHJvYmUgZmFpbGVkXFxcXG5cXFwiKTtcXG4rXFx0cHV0X2RldmljZShyZXByb2JlLVxcdTAwM2VkZXYpO1xcbitcXHRrZnJlZShyZXByb2JlKTtcXG4rXFx0bW9kdWxlX3B1dChUSElTX01PRFVMRSk7XFxuK31cXG4rXFxuKy8qIE1DVWJvb3QgZmlybXdhcmUgaW1hZ2UgaGVhZGVyICovXFxuK3N0cnVjdCBteGw4NjJ4eF9md19oZHIge1xcbitcXHRfX2xlMzIgaW1hZ2VfdHlwZTtcXG4rXFx0X19sZTMyIGltYWdlX3NpemVfMTtcXG4rXFx0X19sZTMyIGltYWdlX2NoZWNrc3VtXzE7XFxuK1xcdF9fbGUzMiBpbWFnZV9zaXplXzI7XFxuK1xcdF9fbGUzMiBpbWFnZV9jaGVja3N1bV8yO1xcbit9IF9fcGFja2VkO1xcbitcXG4rc3RhdGljIGludCBteGw4NjJ4eF9mbGFzaF9maXJtd2FyZShzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdixcXG4rXFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyxcXG4rXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRldmxpbmsgKmRsKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBteGw4NjJ4eF9md19oZHIgKmhkcjtcXG4rXFx0dTMyIHdvcmRfaWR4ID0gMCwgZGF0YV93cml0dGVuID0gMCwgaWR4ID0gMDtcXG4rXFx0dW5zaWduZWQgbG9uZyBuZXh0X25vdGlmeSA9IDA7XFxuK1xcdGNvbnN0IHU4ICpwYXlsb2FkO1xcbitcXHR1MzIgcGF5bG9hZF9zaXplO1xcbitcXHR1MTYgd29yZCwgZmRhdGE7XFxuK1xcdGludCByZXQsIGk7XFxuK1xcdHUzMiBjcmM7XFxuK1xcbitcXHRpZiAoZnctXFx1MDAzZXNpemUgXFx1MDAzYyBNWEw4NjJYWF9GV19IRFJfU0laRSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbitcXHRoZHIgPSAoY29uc3Qgc3RydWN0IG14bDg2Mnh4X2Z3X2hkciAqKWZ3LVxcdTAwM2VkYXRhO1xcbitcXHRwYXlsb2FkID0gZnctXFx1MDAzZWRhdGEgKyBNWEw4NjJYWF9GV19IRFJfU0laRTtcXG4rXFx0cGF5bG9hZF9zaXplID0gbGUzMl90b19jcHUoaGRyLVxcdTAwM2VpbWFnZV9zaXplXzEpICtcXG4rXFx0XFx0ICAgICAgIGxlMzJfdG9fY3B1KGhkci1cXHUwMDNlaW1hZ2Vfc2l6ZV8yKTtcXG4rXFxuK1xcdGlmIChwYXlsb2FkX3NpemUgXFx1MDAzZSBmdy1cXHUwMDNlc2l6ZSAtIE1YTDg2MlhYX0ZXX0hEUl9TSVpFKSB7XFxuK1xcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFxcImZsYXNoOiBmaXJtd2FyZSBmaWxlIHRvbyBzbWFsbCBmb3IgZGVjbGFyZWQgc2l6ZVxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbitcXHRpZiAobGUzMl90b19jcHUoaGRyLVxcdTAwM2VpbWFnZV9zaXplXzEpKSB7XFxuK1xcdFxcdGNyYyA9IH5jcmMzMl9sZSh+MFUsIHBheWxvYWQsXFxuK1xcdFxcdFxcdFxcdGxlMzJfdG9fY3B1KGhkci1cXHUwMDNlaW1hZ2Vfc2l6ZV8xKSk7XFxuK1xcdFxcdGlmIChjcmMgIT0gbGUzMl90b19jcHUoaGRyLVxcdTAwM2VpbWFnZV9jaGVja3N1bV8xKSkge1xcbitcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwcml2LVxcdTAwM2VtZGlvZGV2LVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdFxcdFxcXCJmbGFzaDogaW1hZ2UgMSBDUkMgbWlzbWF0Y2ggKGdvdCAlMDh4LCBleHBlY3RlZCAlMDh4KVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0Y3JjLCBsZTMyX3RvX2NwdShoZHItXFx1MDAzZWltYWdlX2NoZWNrc3VtXzEpKTtcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0aWYgKGxlMzJfdG9fY3B1KGhkci1cXHUwMDNlaW1hZ2Vfc2l6ZV8yKSkge1xcbitcXHRcXHRjcmMgPSB+Y3JjMzJfbGUofjBVLFxcbitcXHRcXHRcXHRcXHRwYXlsb2FkICsgbGUzMl90b19jcHUoaGRyLVxcdTAwM2VpbWFnZV9zaXplXzEpLFxcbitcXHRcXHRcXHRcXHRsZTMyX3RvX2NwdShoZHItXFx1MDAzZWltYWdlX3NpemVfMikpO1xcbitcXHRcXHRpZiAoY3JjICE9IGxlMzJfdG9fY3B1KGhkci1cXHUwMDNlaW1hZ2VfY2hlY2tzdW1fMikpIHtcXG4rXFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cHJpdi1cXHUwMDNlbWRpb2Rldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXHRcXFwiZmxhc2g6IGltYWdlIDIgQ1JDIG1pc21hdGNoIChnb3QgJTA4eCwgZXhwZWN0ZWQgJTA4eClcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdGNyYywgbGUzMl90b19jcHUoaGRyLVxcdTAwM2VpbWFnZV9jaGVja3N1bV8yKSk7XFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuK1xcdC8qIFN0ZXAgMTogcmVib290IHRoZSBmaXJtd2FyZSBpbnRvIE1DVWJvb3QgcmVzY3VlIG1vZGUgKi9cXG4rXFx0aWYgKCFwcml2LVxcdTAwM2VyZXNjdWVfbW9kZSkge1xcbitcXHRcXHRyZXQgPSBteGw4NjJ4eF9hcGlfd3JhcChwcml2LCBTWVNfTUlTQ19GV19VUERBVEUsIE5VTEwsIDAsXFxuK1xcdFxcdFxcdFxcdFxcdGZhbHNlLCBmYWxzZSk7XFxuK1xcdFxcdGlmIChyZXQpIHtcXG4rXFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cHJpdi1cXHUwMDNlbWRpb2Rldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXHRcXFwiZmxhc2g6IEZXX1VQREFURSBjb21tYW5kIGZhaWxlZDogJXBlXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRFUlJfUFRSKHJldCkpO1xcbitcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuK1xcdC8qIEZhaWx1cmVzIGZyb20gaGVyZSBvbiBtdXN0IGdvIHRocm91Z2ggZW5kX21hZ2ljIHNvIE1DVWJvb3RcXG4rXFx0ICogcmVib290cyBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yZXZlci5cXG4rXFx0ICovXFxuK1xcbitcXHQvKiBTdGVwIDI6IHdhaXQgZm9yIGJvb3Rsb2FkZXIgcmVhZHkgKi9cXG4rXFx0bXhsODYyeHhfZmxhc2hfbm90aWZ5KGRsLCBcXFwiV2FpdGluZyBmb3IgYm9vdGxvYWRlclxcXCIsIDAsIDApO1xcbitcXHRteGw4NjJ4eF9zYl9wZGlfcmVzZXQocHJpdik7XFxuK1xcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQocHJpdiwgTVhMODYyWFhfU0JfUERJX1JFQURZLFxcbitcXHRcXHRcXHRcXHRcXHRNWEw4NjJYWF9GV19SRUFEWV9USU1FT1VUX01TKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKFxcdTAwMjZwcml2LVxcdTAwM2VtZGlvZGV2LVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdFxcXCJmbGFzaDogYm9vdGxvYWRlciBub3QgcmVhZHk6ICVwZVxcXFxuXFxcIiwgRVJSX1BUUihyZXQpKTtcXG4rXFx0XFx0Z290byBlbmRfbWFnaWM7XFxuK1xcdH1cXG4rXFxuK1xcdC8qIFN0ZXAgMzogc3RhcnQgaGFuZHNoYWtlICovXFxuK1xcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9TVEFULFxcbitcXHRcXHRcXHQgICAgIE1YTDg2MlhYX1NCX1BESV9TVEFSVCk7XFxuK1xcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVJUICsgMSxcXG4rXFx0XFx0XFx0XFx0XFx0TVhMODYyWFhfRldfQUNLX1RJTUVPVVRfTVMpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFxcImZsYXNoOiBzdGFydCBoYW5kc2hha2UgZmFpbGVkOiAlcGVcXFxcblxcXCIsIEVSUl9QVFIocmV0KSk7XFxuK1xcdFxcdGdvdG8gZW5kX21hZ2ljO1xcbitcXHR9XFxuK1xcbitcXHQvKiBTdGVwIDQ6IHRyYW5zZmVyIGltYWdlIGhlYWRlciAqL1xcbitcXHRteGw4NjJ4eF9mbGFzaF9ub3RpZnkoZGwsIFxcXCJFcmFzaW5nIGZsYXNoXFxcIiwgMCwgMCk7XFxuK1xcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9DVFJMLFxcbitcXHRcXHRcXHQgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1dSKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1YTDg2MlhYX0ZXX0hEUl9TSVpFIC8gMjsgaSsrKSB7XFxuK1xcdFxcdHdvcmQgPSBmdy1cXHUwMDNlZGF0YVtpICogMl0gfFxcbitcXHRcXHQgICAgICAgKCh1MTYpZnctXFx1MDAzZWRhdGFbaSAqIDIgKyAxXSBcXHUwMDNjXFx1MDAzYyA4KTtcXG4rXFx0XFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0RBVEEsIHdvcmQpO1xcbitcXHR9XFxuK1xcdG14bDg2Mnh4X3NiX3BkaV9yZXNldChwcml2KTtcXG4rXFxuK1xcdC8qIHRoZSBieXRlIGNvdW50IGluIFNUQVQgdHJpZ2dlcnMgdGhlIGVyYXNlICovXFxuK1xcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9TVEFULFxcbitcXHRcXHRcXHQgICAgIE1YTDg2MlhYX0ZXX0hEUl9TSVpFKTtcXG4rXFxuK1xcdC8qIEFDSyBpcyBieXRlIGNvdW50ICsgMSAqL1xcbitcXHRyZXQgPSBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIE1YTDg2MlhYX0ZXX0hEUl9TSVpFICsgMSxcXG4rXFx0XFx0XFx0XFx0XFx0TVhMODYyWFhfRldfQUNLX1RJTUVPVVRfTVMpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFxcImZsYXNoOiBoZWFkZXIgQUNLIGZhaWxlZDogJXBlXFxcXG5cXFwiLCBFUlJfUFRSKHJldCkpO1xcbitcXHRcXHRnb3RvIGVuZF9tYWdpYztcXG4rXFx0fVxcbitcXG4rXFx0LyogU3RlcCA1OiB3YWl0IGZvciBlcmFzZSB0byBjb21wbGV0ZSAqL1xcbitcXHRyZXQgPSBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIDAsXFxuK1xcdFxcdFxcdFxcdFxcdE1YTDg2MlhYX0ZXX0VSQVNFX1RJTUVPVVRfTVMpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFxcImZsYXNoOiBlcmFzZSB0aW1lb3V0OiAlcGVcXFxcblxcXCIsIEVSUl9QVFIocmV0KSk7XFxuK1xcdFxcdGdvdG8gZW5kX21hZ2ljO1xcbitcXHR9XFxuK1xcbitcXHQvKiBTdGVwIDY6IHRyYW5zZmVyIHBheWxvYWQgKi9cXG4rXFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsXFxuK1xcdFxcdFxcdCAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfV1IpO1xcbitcXG4rXFx0d2hpbGUgKGlkeCBcXHUwMDNjIHBheWxvYWRfc2l6ZSkge1xcbitcXHRcXHRpZiAoaWR4ICsgMSBcXHUwMDNjIHBheWxvYWRfc2l6ZSkge1xcbitcXHRcXHRcXHRmZGF0YSA9IHBheWxvYWRbaWR4XSB8XFxuK1xcdFxcdFxcdFxcdCgodTE2KXBheWxvYWRbaWR4ICsgMV0gXFx1MDAzY1xcdTAwM2MgOCk7XFxuK1xcdFxcdFxcdGlkeCArPSAyO1xcbitcXHRcXHRcXHRkYXRhX3dyaXR0ZW4gKz0gMjtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0ZmRhdGEgPSBwYXlsb2FkW2lkeF07XFxuK1xcdFxcdFxcdGlkeCsrO1xcbitcXHRcXHRcXHRkYXRhX3dyaXR0ZW4rKztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0RBVEEsIGZkYXRhKTtcXG4rXFx0XFx0d29yZF9pZHgrKztcXG4rXFxuK1xcdFxcdGlmIChpZHggXFx1MDAzZT0gcGF5bG9hZF9zaXplKSB7XFxuK1xcdFxcdFxcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9mbHVzaF9zbGljZShwcml2LCBkYXRhX3dyaXR0ZW4pO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0LyogSGFsZi1iYW5rIGJvdW5kYXJ5OiBzd2l0Y2ggdG8gU0IxIGFkZHJlc3MgKi9cXG4rXFx0XFx0aWYgKHdvcmRfaWR4ID09IE1YTDg2MlhYX0ZXX0JBTktfSEFMRikge1xcbitcXHRcXHRcXHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfQ1RSTCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICBNWEw4NjJYWF9TQl9QRElfQ1RSTF9SU1QpO1xcbitcXHRcXHRcXHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfQUREUixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICBNWEw4NjJYWF9GV19TQjFfQUREUik7XFxuK1xcdFxcdFxcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9DVFJMLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1dSKTtcXG4rXFx0XFx0fSBlbHNlIGlmICh3b3JkX2lkeCBcXHUwMDNlPSBNWEw4NjJYWF9GV19CQU5LX1NMSUNFKSB7XFxuK1xcdFxcdFxcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9mbHVzaF9zbGljZShwcml2LCBkYXRhX3dyaXR0ZW4pO1xcbitcXHRcXHRcXHRpZiAocmV0KSB7XFxuK1xcdFxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFx0XFx0XFxcImZsYXNoOiB3cml0ZSB0aW1lb3V0IGF0ICV1LyV1OiAlcGVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdGlkeCwgcGF5bG9hZF9zaXplLCBFUlJfUFRSKHJldCkpO1xcbitcXHRcXHRcXHRcXHRnb3RvIGVuZF9tYWdpYztcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHR3b3JkX2lkeCA9IDA7XFxuK1xcdFxcdFxcdGRhdGFfd3JpdHRlbiA9IDA7XFxuK1xcdFxcdFxcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9DVFJMLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1dSKTtcXG4rXFxuK1xcdFxcdFxcdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIG5leHRfbm90aWZ5KSkge1xcbitcXHRcXHRcXHRcXHRteGw4NjJ4eF9mbGFzaF9ub3RpZnkoZGwsIFxcXCJGbGFzaGluZ1xcXCIsIGlkeCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgcGF5bG9hZF9zaXplKTtcXG4rXFx0XFx0XFx0XFx0bmV4dF9ub3RpZnkgPSBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyg1MDApO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKFxcdTAwMjZwcml2LVxcdTAwM2VtZGlvZGV2LVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdFxcXCJmbGFzaDogZmluYWwgd3JpdGUgdGltZW91dDogJXBlXFxcXG5cXFwiLCBFUlJfUFRSKHJldCkpO1xcbitcXHRcXHRnb3RvIGVuZF9tYWdpYztcXG4rXFx0fVxcbitcXG4rXFx0bXhsODYyeHhfZmxhc2hfbm90aWZ5KGRsLCBcXFwiRmxhc2hpbmdcXFwiLCBwYXlsb2FkX3NpemUsIHBheWxvYWRfc2l6ZSk7XFxuK1xcbitlbmRfbWFnaWM6XFxuK1xcdC8qIHJlYm9vdCBNQ1Vib290IGV2ZW4gYWZ0ZXIgYSBmYWlsZWQgdHJhbnNmZXIgKi9cXG4rXFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVQsXFxuK1xcdFxcdFxcdCAgICAgTVhMODYyWFhfU0JfUERJX0VORCk7XFxuK1xcdG1zbGVlcChNWEw4NjJYWF9GV19SRUJPT1RfREVMQVlfTVMpO1xcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4raW50IG14bDg2Mnh4X2RldmxpbmtfaW5mb19nZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbitcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2bGlua19pbmZvX3JlcSAqcmVxLFxcbitcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuK3tcXG4rXFx0c3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG4rXFx0Y29uc3QgY2hhciAqY29tcGF0aWJsZTtcXG4rXFx0Y2hhciB2ZXJfc3RyWzMyXTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdGlmICghb2ZfcHJvcGVydHlfcmVhZF9zdHJpbmdfaW5kZXgoZHMtXFx1MDAzZWRldi1cXHUwMDNlb2Zfbm9kZSwgXFxcImNvbXBhdGlibGVcXFwiLCAwLFxcbitcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2Y29tcGF0aWJsZSkpIHtcXG4rXFx0XFx0cmV0ID0gZGV2bGlua19pbmZvX3ZlcnNpb25fZml4ZWRfcHV0KHJlcSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBERVZMSU5LX0lORk9fVkVSU0lPTl9HRU5FUklDX0FTSUNfSUQsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgY29tcGF0aWJsZSk7XFxuK1xcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChwcml2LVxcdTAwM2VyZXNjdWVfbW9kZSlcXG4rXFx0XFx0cmV0dXJuIGRldmxpbmtfaW5mb192ZXJzaW9uX3J1bm5pbmdfcHV0KHJlcSwgXFxcImZ3XFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcIm1jdWJvb3QtcmVzY3VlXFxcIik7XFxuK1xcbitcXHRzbnByaW50Zih2ZXJfc3RyLCBzaXplb2YodmVyX3N0ciksIFxcXCIldS4ldS4ldVxcXCIsXFxuK1xcdFxcdCBwcml2LVxcdTAwM2Vmd192ZXJzaW9uLm1ham9yLCBwcml2LVxcdTAwM2Vmd192ZXJzaW9uLm1pbm9yLFxcbitcXHRcXHQgcHJpdi1cXHUwMDNlZndfdmVyc2lvbi5yZXZpc2lvbik7XFxuK1xcbitcXHRyZXR1cm4gZGV2bGlua19pbmZvX3ZlcnNpb25fcnVubmluZ19wdXQocmVxLCBcXFwiZndcXFwiLCB2ZXJfc3RyKTtcXG4rfVxcbitcXG4raW50IG14bDg2Mnh4X2RldmxpbmtfZmxhc2hfdXBkYXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZGV2bGlua19mbGFzaF91cGRhdGVfcGFyYW1zICpwYXJhbXMsXFxuK1xcdFxcdFxcdFxcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbit7XFxuK1xcdHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuK1xcdHN0cnVjdCBteGw4NjJ4eF9zeXNfZndfaW1hZ2VfdmVyc2lvbiB2ZXIgPSB7fTtcXG4rXFx0c3RydWN0IG14bDg2Mnh4X3JlcHJvYmUgKnJlcHJvYmU7XFxuK1xcdHN0cnVjdCBkc2FfcG9ydCAqZHA7XFxuK1xcdGludCByZXQsIGk7XFxuK1xcbitcXHRpZiAocGFyYW1zLVxcdTAwM2Vjb21wb25lbnQpIHtcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcImNvbXBvbmVudCBpcyBub3Qgc3VwcG9ydGVkXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKHByaXYtXFx1MDAzZXJlc2N1ZV9tb2RlKVxcbitcXHRcXHRkZXZfaW5mbyhkcy1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHQgXFxcImZsYXNoOiByZWNvdmVyaW5nIHN3aXRjaCBmcm9tIE1DVWJvb3QgcmVzY3VlIG1vZGVcXFxcblxcXCIpO1xcbitcXHRlbHNlXFxuK1xcdFxcdGRldl9pbmZvKGRzLVxcdTAwM2VkZXYsIFxcXCJmbGFzaDogcnVubmluZyBmaXJtd2FyZSAldS4ldS4ldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0IHByaXYtXFx1MDAzZWZ3X3ZlcnNpb24ubWFqb3IsIHByaXYtXFx1MDAzZWZ3X3ZlcnNpb24ubWlub3IsXFxuK1xcdFxcdFxcdCBwcml2LVxcdTAwM2Vmd192ZXJzaW9uLnJldmlzaW9uKTtcXG4rXFxuK1xcdC8qIENsb3NlIHBvcnRzIHdoaWxlIHRoZSBmaXJtd2FyZSBpcyBzdGlsbCBhbGl2ZSBzbyB0aGUgRFNBXFxuK1xcdCAqIGNvcmUncyBNREIvRkRCIHRyYWNraW5nIGlzIGRyYWluZWQsIGFuZCBkZXRhY2ggdXNlciBwb3J0c1xcbitcXHQgKiBzbyB1c2Vyc3BhY2UgY2Fubm90IHJlb3BlbiB0aGVtIGR1cmluZyB0aGUgZmxhc2guIFRoZVxcbitcXHQgKiBjb25kdWl0IGJlbG9uZ3MgdG8gdGhlIE1BQyBkcml2ZXIgYW5kIGlzIG9ubHkgY2xvc2VkLlxcbitcXHQgKi9cXG4rXFx0cnRubF9sb2NrKCk7XFxuK1xcdGRzYV9zd2l0Y2hfZm9yX2VhY2hfdXNlcl9wb3J0KGRwLCBkcykge1xcbitcXHRcXHRpZiAoZHAtXFx1MDAzZXVzZXIpIHtcXG4rXFx0XFx0XFx0ZGV2X2Nsb3NlKGRwLVxcdTAwM2V1c2VyKTtcXG4rXFx0XFx0XFx0bmV0aWZfZGV2aWNlX2RldGFjaChkcC1cXHUwMDNldXNlcik7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXHRkc2Ffc3dpdGNoX2Zvcl9lYWNoX2NwdV9wb3J0KGRwLCBkcylcXG4rXFx0XFx0ZGV2X2Nsb3NlKGRwLVxcdTAwM2Vjb25kdWl0KTtcXG4rXFx0cnRubF91bmxvY2soKTtcXG4rXFxuK1xcdHByaXYtXFx1MDAzZWJsb2NrX2hvc3QgPSB0cnVlO1xcbitcXG4rXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZwcml2LVxcdTAwM2VzdGF0c193b3JrKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRzLVxcdTAwM2VudW1fcG9ydHM7IGkrKylcXG4rXFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2cHJpdi1cXHUwMDNlcG9ydHNbaV0uaG9zdF9mbG9vZF93b3JrKTtcXG4rXFxuK1xcdHJldCA9IG14bDg2Mnh4X2ZsYXNoX2Zpcm13YXJlKHByaXYsIHBhcmFtcy1cXHUwMDNlZncsIGRzLVxcdTAwM2VkZXZsaW5rKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcImZpcm13YXJlIHRyYW5zZmVyIGZhaWxlZFxcXCIpO1xcbitcXG4rXFx0aWYgKCFyZXQpIHtcXG4rXFx0XFx0LyogbGlmdCB0aGUgYmxvY2sgdG8gcXVlcnkgdGhlIG5ldyBmaXJtd2FyZSB2ZXJzaW9uICovXFxuK1xcdFxcdHByaXYtXFx1MDAzZWJsb2NrX2hvc3QgPSBmYWxzZTtcXG4rXFx0XFx0cHJpdi1cXHUwMDNlcmVzY3VlX21vZGUgPSBmYWxzZTtcXG4rXFx0XFx0bWVtc2V0KFxcdTAwMjZ2ZXIsIDAsIHNpemVvZih2ZXIpKTtcXG4rXFx0XFx0aWYgKCFNWEw4NjJYWF9BUElfUkVBRF9RVUlFVChwcml2LCBTWVNfTUlTQ19GV19WRVJTSU9OLCB2ZXIpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICB2ZXIuaXZfbWFqb3IpXFxuK1xcdFxcdFxcdGRldl9pbmZvKGRzLVxcdTAwM2VkZXYsIFxcXCJmbGFzaDogbmV3IGZpcm13YXJlICV1LiV1LiV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgdmVyLml2X21ham9yLCB2ZXIuaXZfbWlub3IsXFxuK1xcdFxcdFxcdFxcdCBsZTE2X3RvX2NwdSh2ZXIuaXZfcmV2aXNpb24pKTtcXG4rXFx0fVxcbitcXG4rXFx0cHJpdi1cXHUwMDNlc2tpcF90ZWFyZG93biA9IHRydWU7XFxuK1xcbitcXHRyZXByb2JlID0ga3phbGxvY19vYmooKnJlcHJvYmUpO1xcbitcXHRpZiAoIXJlcHJvYmUpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRpZiAoIXRyeV9tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKSkge1xcbitcXHRcXHRrZnJlZShyZXByb2JlKTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0cmVwcm9iZS1cXHUwMDNlZGV2ID0gZ2V0X2RldmljZShkcy1cXHUwMDNlZGV2KTtcXG4rXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNnJlcHJvYmUtXFx1MDAzZWR3b3JrLCBteGw4NjJ4eF9yZXByb2JlX3dvcmtfZm4pO1xcbitcXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXFx1MDAyNnJlcHJvYmUtXFx1MDAzZWR3b3JrLCBtc2Vjc190b19qaWZmaWVzKDUwMCkpO1xcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtZncuaCBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1mdy5oXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNTdjMjAwMGNmZWU1MTlcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWZ3LmhcXG5AQCAtMCwwICsxLDE4IEBAXFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyICovXFxuK1xcbisjaWZuZGVmIF9fTVhMODYyWFhfRldfSFxcbisjZGVmaW5lIF9fTVhMODYyWFhfRldfSFxcbitcXG4rI2luY2x1ZGUgXFx1MDAzY25ldC9kc2EuaFxcdTAwM2VcXG4rXFxuK3N0cnVjdCBteGw4NjJ4eF9wcml2O1xcbitcXG4rYm9vbCBteGw4NjJ4eF9yZXNjdWVfbW9kZV9kZXRlY3Qoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYpO1xcbitpbnQgbXhsODYyeHhfZGV2bGlua19pbmZvX2dldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBkZXZsaW5rX2luZm9fcmVxICpyZXEsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuK2ludCBteGw4NjJ4eF9kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuK1xcdFxcdFxcdFxcdCAgc3RydWN0IGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLFxcbitcXHRcXHRcXHRcXHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuK1xcbisjZW5kaWYgLyogX19NWEw4NjJYWF9GV19IICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmMgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5jXFxuaW5kZXggNGFjZDIxNmY3Y2MwMDkuLmQ2YzBjZGZhMGU2ODkyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5jXFxuQEAgLTE1LDYgKzE1LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2RzYS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwibXhsODYyeHguaFxcXCJcXG4rI2luY2x1ZGUgXFxcIm14bDg2Mnh4LWNtZC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwibXhsODYyeHgtaG9zdC5oXFxcIlxcbiBcXG4gI2RlZmluZSBDVFJMX0JVU1lfTUFTS1xcdFxcdFxcdEJJVCgxNSlcXG5AQCAtMzM2LDYgKzMzNywxNSBAQCBpbnQgbXhsODYyeHhfYXBpX3dyYXAoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUxNiBjbWQsIHZvaWQgKl9kYXRhLFxcbiBcXHRpbnQgcmV0LCBjbWRfcmV0O1xcbiBcXHR1MTYgbWF4LCBjcmMsIGk7XFxuIFxcbitcXHRpZiAocHJpdi1cXHUwMDNlc2tpcF90ZWFyZG93bilcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRpZiAocHJpdi1cXHUwMDNlcmVzY3VlX21vZGUpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWJsb2NrX2hvc3QgXFx1MDAyNlxcdTAwMjYgY21kICE9IFNZU19NSVNDX0ZXX1VQREFURSlcXG4rXFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4rXFxuIFxcdGRldl9kYmcoXFx1MDAyNnByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWRldiwgXFxcIkNNRCAlMDR4IERBVEEgJSpwaFxcXFxuXFxcIiwgY21kLCBzaXplLCBkYXRhKTtcXG4gXFxuIFxcdG11dGV4X2xvY2tfbmVzdGVkKFxcdTAwMjZwcml2LVxcdTAwM2VtZGlvZGV2LVxcdTAwM2VidXMtXFx1MDAzZW1kaW9fbG9jaywgTURJT19NVVRFWF9ORVNURUQpO1xcbkBAIC00OTUsNiArNTA1LDQxIEBAIGludCBteGw4NjJ4eF9yZXNldChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4rI2RlZmluZSBNWEw4NjJYWF9TTURJT19BRERSX1JFR1xcdFxcdDB4MWZcXG4rI2RlZmluZSBNWEw4NjJYWF9TTURJT19QQUdFX01BU0tcXHQweGZmZjBcXG4rI2RlZmluZSBNWEw4NjJYWF9TTURJT19PRkZfTUFTS1xcdFxcdDB4MDAwZlxcbitcXG4raW50IG14bDg2Mnh4X3NtZGlvX3JlYWQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUzMiBhZGRyKVxcbit7XFxuK1xcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VtZGlvZGV2LVxcdTAwM2VidXM7XFxuK1xcdGludCBwaHkgPSBwcml2LVxcdTAwM2VtZGlvZGV2LVxcdTAwM2VhZGRyO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2YnVzLVxcdTAwM2VtZGlvX2xvY2spO1xcbitcXHRyZXQgPSBfX21kaW9idXNfd3JpdGUoYnVzLCBwaHksIE1YTDg2MlhYX1NNRElPX0FERFJfUkVHLFxcbitcXHRcXHRcXHQgICAgICBhZGRyIFxcdTAwMjYgTVhMODYyWFhfU01ESU9fUEFHRV9NQVNLKTtcXG4rXFx0aWYgKHJldCBcXHUwMDNlPSAwKVxcbitcXHRcXHRyZXQgPSBfX21kaW9idXNfcmVhZChidXMsIHBoeSwgYWRkciBcXHUwMDI2IE1YTDg2MlhYX1NNRElPX09GRl9NQVNLKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZidXMtXFx1MDAzZW1kaW9fbG9jayk7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK2ludCBteGw4NjJ4eF9zbWRpb193cml0ZShzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTMyIGFkZHIsIHUxNiB2YWwpXFxuK3tcXG4rXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWJ1cztcXG4rXFx0aW50IHBoeSA9IHByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWFkZHI7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZidXMtXFx1MDAzZW1kaW9fbG9jayk7XFxuK1xcdHJldCA9IF9fbWRpb2J1c193cml0ZShidXMsIHBoeSwgTVhMODYyWFhfU01ESU9fQUREUl9SRUcsXFxuK1xcdFxcdFxcdCAgICAgIGFkZHIgXFx1MDAyNiBNWEw4NjJYWF9TTURJT19QQUdFX01BU0spO1xcbitcXHRpZiAocmV0IFxcdTAwM2U9IDApXFxuK1xcdFxcdHJldCA9IF9fbWRpb2J1c193cml0ZShidXMsIHBoeSwgYWRkciBcXHUwMDI2IE1YTDg2MlhYX1NNRElPX09GRl9NQVNLLFxcbitcXHRcXHRcXHRcXHQgICAgICB2YWwpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmJ1cy1cXHUwMDNlbWRpb19sb2NrKTtcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4gdm9pZCBteGw4NjJ4eF9ob3N0X2luaXQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYpXFxuIHtcXG4gXFx0SU5JVF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2VjcmNfZXJyX3dvcmssIG14bDg2Mnh4X2NyY19lcnJfd29ya19mbik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmggYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5oXFxuaW5kZXggNjZkNmFlMTk4YWZmNDUuLjRlMDU0YzZlNGMwZTQwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmhcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5oXFxuQEAgLTE4LDUgKzE4LDcgQEAgaW50IG14bDg2Mnh4X2FwaV93cmFwKHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2LCB1MTYgY21kLCB2b2lkICpkYXRhLCB1MTYgc2l6ZSxcXG4gXFx0bXhsODYyeHhfYXBpX3dyYXAoZGV2LCBjbWQsIFxcdTAwMjYoZGF0YSksIHNpemVvZigoZGF0YSkpLCB0cnVlLCB0cnVlKVxcbiBcXG4gaW50IG14bDg2Mnh4X3Jlc2V0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KTtcXG4raW50IG14bDg2Mnh4X3NtZGlvX3JlYWQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUzMiBhZGRyKTtcXG4raW50IG14bDg2Mnh4X3NtZGlvX3dyaXRlKHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2LCB1MzIgYWRkciwgdTE2IHZhbCk7XFxuIFxcbiAjZW5kaWYgLyogX19NWEw4NjJYWF9IT1NUX0ggKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1waHlsaW5rLmNcXG5pbmRleCBiNjg5NjUyYWE5YjkyMC4uYTViNjk0MGI1NTJlOWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1waHlsaW5rLmNcXG5AQCAtNDA2LDYgKzQwNiw4IEBAIG14bDg2Mnh4X3BoeWxpbmtfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuIFxcbiBcXHRzd2l0Y2ggKHBvcnQpIHtcXG4gXFx0Y2FzZSA5IC4uLiAxNjpcXG4rXFx0XFx0aWYgKHByaXYtXFx1MDAzZXJlc2N1ZV9tb2RlKVxcbitcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0XFx0aWYgKCFNWEw4NjJYWF9GV19WRVJfTUlOKHByaXYsIDEsIDAsIDg0KSkge1xcbiBcXHRcXHRcXHRkZXZfd2Fybl9vbmNlKGRwLVxcdTAwM2Vkcy1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgICBcXFwiU2VyRGVzIFBDUyB1bnN1cHBvcnRlZCBvbiBvbGQgZmlybXdhcmUuXFxcXG5cXFwiKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguY1xcbmluZGV4IDQ1ZDIzN2IzYTQwZjEwLi5iNzM4NWNmYTU0NzQ1OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jXFxuQEAgLTIxLDYgKzIxLDcgQEBcXG4gI2luY2x1ZGUgXFxcIm14bDg2Mnh4LmhcXFwiXFxuICNpbmNsdWRlIFxcXCJteGw4NjJ4eC1hcGkuaFxcXCJcXG4gI2luY2x1ZGUgXFxcIm14bDg2Mnh4LWNtZC5oXFxcIlxcbisjaW5jbHVkZSBcXFwibXhsODYyeHgtZncuaFxcXCJcXG4gI2luY2x1ZGUgXFxcIm14bDg2Mnh4LWhvc3QuaFxcXCJcXG4gI2luY2x1ZGUgXFxcIm14bDg2Mnh4LXBoeWxpbmsuaFxcXCJcXG4gXFxuQEAgLTYyOCw5ICs2MjksMjIgQEAgc3RhdGljIGludCBteGw4NjJ4eF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRyZXQgPSBteGw4NjJ4eF93YWl0X3JlYWR5KGRzKTtcXG4tXFx0aWYgKHJldClcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0cHJpdi1cXHUwMDNlcmVzY3VlX21vZGUgPSBteGw4NjJ4eF9yZXNjdWVfbW9kZV9kZXRlY3QocHJpdik7XFxuK1xcdGlmICghcHJpdi1cXHUwMDNlcmVzY3VlX21vZGUpIHtcXG4rXFx0XFx0cmV0ID0gbXhsODYyeHhfd2FpdF9yZWFkeShkcyk7XFxuK1xcdFxcdGlmIChyZXQpIHtcXG4rXFx0XFx0XFx0LyogdGhlIHJlc2V0IG1heSBvbmx5IG5vdyBoYXZlIHRyaWdnZXJlZCByZXNjdWUgbW9kZSAqL1xcbitcXHRcXHRcXHRwcml2LVxcdTAwM2VyZXNjdWVfbW9kZSA9IG14bDg2Mnh4X3Jlc2N1ZV9tb2RlX2RldGVjdChwcml2KTtcXG4rXFx0XFx0XFx0aWYgKCFwcml2LVxcdTAwM2VyZXNjdWVfbW9kZSlcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbitcXHRpZiAocHJpdi1cXHUwMDNlcmVzY3VlX21vZGUpIHtcXG4rXFx0XFx0ZGV2X3dhcm4oZHMtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0IFxcXCJzd2l0Y2ggc3R1Y2sgaW4gTUNVYm9vdCByZXNjdWUgbW9kZSwgdXNlIGRldmxpbmsgdG8gZmxhc2ggbmV3IGZpcm13YXJlXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdH1cXG4gXFxuIFxcdG11dGV4X2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZXNlcmRlc19sb2NrKTtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUocHJpdi1cXHUwMDNlc2VyZGVzX3BvcnRzKTsgaSsrKVxcbkBAIC03MTUsMTEgKzcyOSwyMSBAQCBzdGF0aWMgaW50IG14bDg2Mnh4X3BvcnRfc3RhdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgYm9vbCBlbmFibGUpXFxuIHN0YXRpYyBpbnQgbXhsODYyeHhfcG9ydF9lbmFibGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4gXFx0XFx0XFx0XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4ge1xcbitcXHRzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiA9IGRzLVxcdTAwM2Vwcml2O1xcbitcXG4rXFx0aWYgKHByaXYtXFx1MDAzZXJlc2N1ZV9tb2RlKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuIFxcdHJldHVybiBteGw4NjJ4eF9wb3J0X3N0YXRlKGRzLCBwb3J0LCB0cnVlKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgbXhsODYyeHhfcG9ydF9kaXNhYmxlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXFxuIHtcXG4rXFx0c3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG4rXFxuK1xcdGlmIChwcml2LVxcdTAwM2VyZXNjdWVfbW9kZSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0aWYgKG14bDg2Mnh4X3BvcnRfc3RhdGUoZHMsIHBvcnQsIGZhbHNlKSlcXG4gXFx0XFx0ZGV2X2Vycihkcy1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGRpc2FibGUgcG9ydCAlZFxcXFxuXFxcIiwgcG9ydCk7XFxuIH1cXG5AQCAtMTMzNyw2ICsxMzYxLDEyIEBAIHN0YXRpYyBpbnQgbXhsODYyeHhfcG9ydF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbiBcXHRib29sIGlzX2NwdV9wb3J0ID0gZHNhX3BvcnRfaXNfY3B1KGRwKTtcXG4gXFx0aW50IHJldDtcXG4gXFxuK1xcdC8qIERTQSByZWluaXRzIGZhaWxlZCB1c2VyIHBvcnRzIGFzIHVudXNlZDsgc2hhcmVkIHBvcnRzIG11c3RcXG4rXFx0ICogc3VjY2VlZCBmb3IgdGhlIHRyZWUgdG8gcmVnaXN0ZXIuXFxuK1xcdCAqL1xcbitcXHRpZiAocHJpdi1cXHUwMDNlcmVzY3VlX21vZGUpXFxuK1xcdFxcdHJldHVybiBkc2FfcG9ydF9pc191c2VyKGRwKSA/IC1FTk9ERVYgOiAwO1xcbitcXG4gXFx0cmV0ID0gbXhsODYyeHhfcG9ydF9zdGF0ZShkcywgcG9ydCwgZmFsc2UpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbkBAIC0xNjI4LDYgKzE2NTgsOSBAQCBzdGF0aWMgdm9pZCBteGw4NjJ4eF9wb3J0X3N0cF9zdGF0ZV9zZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4gXFx0c3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG4gXFx0aW50IHJldDtcXG4gXFxuK1xcdGlmIChwcml2LVxcdTAwM2VyZXNjdWVfbW9kZSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0c3dpdGNoIChzdGF0ZSkge1xcbiBcXHRjYXNlIEJSX1NUQVRFX0RJU0FCTEVEOlxcbiBcXHRcXHRwYXJhbS5wb3J0X3N0YXRlID0gY3B1X3RvX2xlMzIoTVhMODYyWFhfU1RQX1BPUlRfU1RBVEVfRElTQUJMRSk7XFxuQEAgLTIwODYsNiArMjExOSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgbXhsODYyeHhfc3dpdGNoX29wcyA9IHtcXG4gXFx0LmdldF9wYXVzZV9zdGF0cyA9IG14bDg2Mnh4X2dldF9wYXVzZV9zdGF0cyxcXG4gXFx0LmdldF9ybW9uX3N0YXRzID0gbXhsODYyeHhfZ2V0X3Jtb25fc3RhdHMsXFxuIFxcdC5nZXRfc3RhdHM2NCA9IG14bDg2Mnh4X2dldF9zdGF0czY0LFxcbitcXHQuZGV2bGlua19pbmZvX2dldCA9IG14bDg2Mnh4X2RldmxpbmtfaW5mb19nZXQsXFxuK1xcdC5kZXZsaW5rX2ZsYXNoX3VwZGF0ZSA9IG14bDg2Mnh4X2RldmxpbmtfZmxhc2hfdXBkYXRlLFxcbiB9O1xcbiBcXG4gc3RhdGljIGludCBteGw4NjJ4eF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5oIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmhcXG5pbmRleCA0MzJhNWYzZjJlMDhlNi4uNWQyMTI5NjU2MWUzYWEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmhcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguaFxcbkBAIC0zMTksNiArMzE5LDEyIEBAIHN0cnVjdCBteGw4NjJ4eF9md192ZXJzaW9uIHtcXG4gICogQGV2bGFuX2luZ3Jlc3Nfc2l6ZTogcGVyLXBvcnQgaW5ncmVzcyBFeHRlbmRlZCBWTEFOIGJsb2NrIHNpemVcXG4gICogQGV2bGFuX2VncmVzc19zaXplOiAgcGVyLXBvcnQgZWdyZXNzIEV4dGVuZGVkIFZMQU4gYmxvY2sgc2l6ZVxcbiAgKiBAdmZfYmxvY2tfc2l6ZTogICAgICBwZXItcG9ydCBWTEFOIEZpbHRlciBibG9jayBzaXplXFxuKyAqIEBibG9ja19ob3N0OiAgICAgICAgIHJlamVjdCBmaXJtd2FyZSBBUEkgY29tbWFuZHMgKGV4Y2VwdCBGV19VUERBVEUpXFxuKyAqICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyBhIGZpcm13YXJlIGZsYXNoXFxuKyAqIEBza2lwX3RlYXJkb3duOiAgICAgIGRpc2NhcmQgZmlybXdhcmUgQVBJIGNvbW1hbmRzIGR1cmluZyB0aGUgdGVhcmRvd25cXG4rICogICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkIGJ5IHRoZSBwb3N0LWZsYXNoIHJlcHJvYmVcXG4rICogQHJlc2N1ZV9tb2RlOiAgICAgICAgc3dpdGNoIGlzIHN0dWNrIGluIE1DVWJvb3Q7IGZpcm13YXJlIEFQSSBjb21tYW5kc1xcbisgKiAgICAgICAgICAgICAgICAgICAgICBmYWlsIGZhc3QsIG9ubHkgY2xhdXNlLTIyIFNNRElPIHdvcmtzXFxuICAqIEBzdGF0c193b3JrOiAgICAgICAgIHBlcmlvZGljIHdvcmsgaXRlbSB0aGF0IHBvbGxzIFJNT04gaGFyZHdhcmUgY291bnRlcnNcXG4gICogICAgICAgICAgICAgICAgICAgICAgYW5kIGFjY3VtdWxhdGVzIHRoZW0gaW50byA2NC1iaXQgcGVyLXBvcnQgc3RhdHNcXG4gICovXFxuQEAgLTMzNyw2ICszNDMsOSBAQCBzdHJ1Y3QgbXhsODYyeHhfcHJpdiB7XFxuIFxcdHUxNiBldmxhbl9pbmdyZXNzX3NpemU7XFxuIFxcdHUxNiBldmxhbl9lZ3Jlc3Nfc2l6ZTtcXG4gXFx0dTE2IHZmX2Jsb2NrX3NpemU7XFxuK1xcdGJvb2wgYmxvY2tfaG9zdDtcXG4rXFx0Ym9vbCBza2lwX3RlYXJkb3duO1xcbitcXHRib29sIHJlc2N1ZV9tb2RlO1xcbiBcXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHN0YXRzX3dvcms7XFxuIH07XFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9kc2EuaCBiL2luY2x1ZGUvbmV0L2RzYS5oXFxuaW5kZXggOGMxNmVmMjNjYzEwMmEuLmM5ZTE5MzQ4ZGU2MTkzIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2RzYS5oXFxuKysrIGIvaW5jbHVkZS9uZXQvZHNhLmhcXG5AQCAtMTE3MCw2ICsxMTcwLDkgQEAgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIHtcXG4gXFx0aW50XFx0KCpkZXZsaW5rX2luZm9fZ2V0KShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuIFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZGV2bGlua19pbmZvX3JlcSAqcmVxLFxcbiBcXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG4rXFx0aW50XFx0KCpkZXZsaW5rX2ZsYXNoX3VwZGF0ZSkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbitcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZGV2bGlua19mbGFzaF91cGRhdGVfcGFyYW1zICpwYXJhbXMsXFxuK1xcdFxcdFxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuIFxcdGludFxcdCgqZGV2bGlua19zYl9wb29sX2dldCkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IHNiX2luZGV4LCB1MTYgcG9vbF9pbmRleCxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBkZXZsaW5rX3NiX3Bvb2xfaW5mbyAqcG9vbF9pbmZvKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS9kZXZsaW5rLmMgYi9uZXQvZHNhL2RldmxpbmsuY1xcbmluZGV4IGVkMzQyZjM0NTY5MmJiLi4yNTMxMWE4N2NiYzU2ZCAxMDA2NDRcXG4tLS0gYS9uZXQvZHNhL2RldmxpbmsuY1xcbisrKyBiL25ldC9kc2EvZGV2bGluay5jXFxuQEAgLTIwLDYgKzIwLDE4IEBAIHN0YXRpYyBpbnQgZHNhX2RldmxpbmtfaW5mb19nZXQoc3RydWN0IGRldmxpbmsgKmRsLFxcbiBcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgZHNhX2RldmxpbmtfZmxhc2hfdXBkYXRlKHN0cnVjdCBkZXZsaW5rICpkbCxcXG4rXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBkZXZsaW5rX2ZsYXNoX3VwZGF0ZV9wYXJhbXMgKnBhcmFtcyxcXG4rXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4re1xcbitcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkc2FfZGV2bGlua190b19kcyhkbCk7XFxuK1xcbitcXHRpZiAoIWRzLVxcdTAwM2VvcHMtXFx1MDAzZWRldmxpbmtfZmxhc2hfdXBkYXRlKVxcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcbitcXHRyZXR1cm4gZHMtXFx1MDAzZW9wcy1cXHUwMDNlZGV2bGlua19mbGFzaF91cGRhdGUoZHMsIHBhcmFtcywgZXh0YWNrKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBkc2FfZGV2bGlua19zYl9wb29sX2dldChzdHJ1Y3QgZGV2bGluayAqZGwsXFxuIFxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBzYl9pbmRleCwgdTE2IHBvb2xfaW5kZXgsXFxuIFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkZXZsaW5rX3NiX3Bvb2xfaW5mbyAqcG9vbF9pbmZvKVxcbkBAIC0xNjksNiArMTgxLDcgQEAgZHNhX2Rldmxpbmtfc2Jfb2NjX3RjX3BvcnRfYmluZF9nZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqZGxwLFxcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX29wcyBkc2FfZGV2bGlua19vcHMgPSB7XFxuIFxcdC5pbmZvX2dldFxcdFxcdFxcdD0gZHNhX2RldmxpbmtfaW5mb19nZXQsXFxuK1xcdC5mbGFzaF91cGRhdGVcXHRcXHRcXHQ9IGRzYV9kZXZsaW5rX2ZsYXNoX3VwZGF0ZSxcXG4gXFx0LnNiX3Bvb2xfZ2V0XFx0XFx0XFx0PSBkc2FfZGV2bGlua19zYl9wb29sX2dldCxcXG4gXFx0LnNiX3Bvb2xfc2V0XFx0XFx0XFx0PSBkc2FfZGV2bGlua19zYl9wb29sX3NldCxcXG4gXFx0LnNiX3BvcnRfcG9vbF9nZXRcXHRcXHQ9IGRzYV9kZXZsaW5rX3NiX3BvcnRfcG9vbF9nZXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA0OjU3OjIxLjU4NjIxMTcwN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjUwMTA0MTUwNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgZHJpdmVyIGZvciBwaHlzaWNhbCBoYXJkd2FyZSAoTWF4TGluZWFyIE14TDg2Mnh4IHN3aXRjaCkgd2hpY2ggaXMgYW4gTURJTyBkZXZpY2UuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGJhMmYwMmQ1YzMzN2QwOGMzNmYxYjcyMzgzZDk4ZGE1MDgxMTI4NGVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAwNDo1NzoxOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9NYWtlZmlsZVxuaW5kZXggYTdiZTBlNjY2OWRmYTUuLmJjY2FjMGQwZjcwM2Y2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L01ha2VmaWxlXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvTWFrZWZpbGVcbkBAIC0xLDMgKzEsMyBAQFxuICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiBvYmotJChDT05GSUdfTkVUX0RTQV9NWEw4NjIpICs9IG14bDg2Mnh4X2RzYS5vXG4tbXhsODYyeHhfZHNhLXkgOj0gbXhsODYyeHgubyBteGw4NjJ4eC1ob3N0Lm8gbXhsODYyeHgtcGh5bGluay5vXG4rbXhsODYyeHhfZHNhLXkgOj0gbXhsODYyeHgubyBteGw4NjJ4eC1ob3N0Lm8gbXhsODYyeHgtcGh5bGluay5vIG14bDg2Mnh4LWZ3Lm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtY21kLmggYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtY21kLmhcbmluZGV4IGM4N2E5NTVjMTNjNDhlLi5lMmFhMjkzNGU5ZTE2MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1jbWQuaFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWNtZC5oXG5AQCAtNzAsNiArNzAsNyBAQFxuICNkZWZpbmUgSU5UX0dQSFlfUkVBRFx0XHRcdChHUFlfR1BZMlhYX01BR0lDICsgMHgxKVxuICNkZWZpbmUgSU5UX0dQSFlfV1JJVEVcdFx0XHQoR1BZX0dQWTJYWF9NQUdJQyArIDB4MilcbiBcbisjZGVmaW5lIFNZU19NSVNDX0ZXX1VQREFURVx0XHQoU1lTX01JU0NfTUFHSUMgKyAweDEpXG4gI2RlZmluZSBTWVNfTUlTQ19GV19WRVJTSU9OXHRcdChTWVNfTUlTQ19NQUdJQyArIDB4MilcbiBcbiAjZGVmaW5lIE1YTDg2MlhYX1hQQ1NfUENTX0NPTkZJR1x0KE1YTDg2MlhYX1hQQ1NfTUFHSUMgKyAweDEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWZ3LmMgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtZncuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi44OGQ1M2JlYTMzNmZkNVxuLS0tIC9kZXYvbnVsbFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWZ3LmNcbkBAIC0wLDAgKzEsNDM5IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcbisvKlxuKyAqIEZpcm13YXJlIGZsYXNoIGFuZCBkZXZsaW5rIHN1cHBvcnQgZm9yIE1heExpbmVhciBNeEw4NjJ4eFxuKyAqXG4rICogQ29weXJpZ2h0IChDKSAyMDI1IERhbmllbCBHb2xsZSBcdTAwM2NkYW5pZWxAbWFrcm90b3BpYS5vcmdcdTAwM2VcbisgKi9cbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9jcmMzMi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9ydG5ldGxpbmsuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY25ldC9kc2EuaFx1MDAzZVxuK1xuKyNpbmNsdWRlIFwibXhsODYyeHguaFwiXG4rI2luY2x1ZGUgXCJteGw4NjJ4eC1hcGkuaFwiXG4rI2luY2x1ZGUgXCJteGw4NjJ4eC1jbWQuaFwiXG4rI2luY2x1ZGUgXCJteGw4NjJ4eC1mdy5oXCJcbisjaW5jbHVkZSBcIm14bDg2Mnh4LWhvc3QuaFwiXG4rXG4rLyogU0IgUERJIHJlZ2lzdGVycyAoY2xhdXNlLTIyIFNNRElPIGFkZHJlc3Mgc3BhY2UpICovXG4rI2RlZmluZSBNWEw4NjJYWF9TQl9QRElfQ1RSTFx0XHQweGUxMDBcbisjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9BRERSXHRcdDB4ZTEwMVxuKyNkZWZpbmUgTVhMODYyWFhfU0JfUERJX0RBVEFcdFx0MHhlMTAyXG4rI2RlZmluZSBNWEw4NjJYWF9TQl9QRElfU1RBVFx0XHQweGUxMDNcbitcbisvKiBTQiBQREkgQ1RSTCBtb2RlcyAqL1xuKyNkZWZpbmUgTVhMODYyWFhfU0JfUERJX0NUUkxfUlNUXHQweDAwXG4rI2RlZmluZSBNWEw4NjJYWF9TQl9QRElfQ1RSTF9XUlx0MHgwMlxuK1xuKy8qIFNCIFBESSBoYW5kc2hha2UgbWFnaWMgKi9cbisjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9SRUFEWVx0XHQweGM1NWNcbisjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9TVEFSVFx0XHQweGY0OGZcbisjZGVmaW5lIE1YTDg2MlhYX1NCX1BESV9FTkRcdFx0MHgzY2MzXG4rXG4rLyogRmlybXdhcmUgdHJhbnNmZXIgZ2VvbWV0cnkgKi9cbisjZGVmaW5lIE1YTDg2MlhYX0ZXX0hEUl9TSVpFXHRcdDIwXG4rI2RlZmluZSBNWEw4NjJYWF9GV19CQU5LX0hBTEZcdFx0MTYzODRcdC8qIHdvcmRzIHBlciBoYWxmLWJhbmsgKi9cbisjZGVmaW5lIE1YTDg2MlhYX0ZXX0JBTktfU0xJQ0VcdFx0MzI3NjBcdC8qIHdvcmRzIHBlciBmdWxsIHNsaWNlICovXG4rI2RlZmluZSBNWEw4NjJYWF9GV19TQjFfQUREUlx0XHQweDc4MDBcdC8qIFNCMSB3b3JkIGFkZHJlc3MgKi9cbitcbisvKiBUaW1lb3V0cyAoZ2VuZXJvdXMgdXBwZXIgYm91bmRzKSAqL1xuKyNkZWZpbmUgTVhMODYyWFhfRldfUkVBRFlfVElNRU9VVF9NU1x0MzAwMDBcbisjZGVmaW5lIE1YTDg2MlhYX0ZXX0FDS19USU1FT1VUX01TXHQ1MDAwXG4rI2RlZmluZSBNWEw4NjJYWF9GV19FUkFTRV9USU1FT1VUX01TXHQzMDAwMDBcbisjZGVmaW5lIE1YTDg2MlhYX0ZXX1dSSVRFX1RJTUVPVVRfTVNcdDEyMDAwMFxuKyNkZWZpbmUgTVhMODYyWFhfRldfUkVCT09UX0RFTEFZX01TXHQ1MDAwXG4rXG4rc3RhdGljIHZvaWQgbXhsODYyeHhfc2JfcGRpX3Jlc2V0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KVxuK3tcbitcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9DVFJMLFxuK1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfUlNUKTtcbitcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9BRERSLFxuK1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfUlNUKTtcbitcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9EQVRBLFxuK1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfUlNUKTtcbit9XG4rXG4rc3RhdGljIGludCBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2LCB1MTYgZXhwZWN0ZWQsXG4rXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dF9tcylcbit7XG4rXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyh0aW1lb3V0X21zKTtcbitcdGludCByZXQ7XG4rXG4rXHRkbyB7XG4rXHRcdHJldCA9IG14bDg2Mnh4X3NtZGlvX3JlYWQocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVQpO1xuK1x0XHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRcdHJldHVybiByZXQ7XG4rXHRcdGlmICgodTE2KXJldCA9PSBleHBlY3RlZClcbitcdFx0XHRyZXR1cm4gMDtcbitcdFx0dXNsZWVwX3JhbmdlKDEwMDAwLCAxMTAwMCk7XG4rXHR9IHdoaWxlICh0aW1lX2JlZm9yZShqaWZmaWVzLCB0aW1lb3V0KSk7XG4rXG4rXHRyZXR1cm4gLUVUSU1FRE9VVDtcbit9XG4rXG4rc3RhdGljIGludCBteGw4NjJ4eF9zYl9wZGlfZmx1c2hfc2xpY2Uoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsXG4rXHRcdFx0XHQgICAgICAgdTMyIGRhdGFfd3JpdHRlbilcbit7XG4rXHRteGw4NjJ4eF9zYl9wZGlfcmVzZXQocHJpdik7XG4rXHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfU1RBVCwgZGF0YV93cml0dGVuKTtcbitcbitcdHJldHVybiBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIDAsXG4rXHRcdFx0XHRcdCBNWEw4NjJYWF9GV19XUklURV9USU1FT1VUX01TKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgbXhsODYyeHhfZmxhc2hfbm90aWZ5KHN0cnVjdCBkZXZsaW5rICpkbCwgY29uc3QgY2hhciAqc3RhdHVzLFxuK1x0XHRcdFx0ICB1MzIgZG9uZSwgdTMyIHRvdGFsKVxuK3tcbitcdGRldmxpbmtfZmxhc2hfdXBkYXRlX3N0YXR1c19ub3RpZnkoZGwsIHN0YXR1cywgTlVMTCwgZG9uZSwgdG90YWwpO1xuK31cbitcbisvKipcbisgKiBteGw4NjJ4eF9yZXNjdWVfbW9kZV9kZXRlY3QgLSBjaGVjayB3aGV0aGVyIHRoZSBzd2l0Y2ggc2l0cyBpbiBNQ1Vib290XG4rICogQHByaXY6IGRyaXZlciBwcml2YXRlIGRhdGFcbisgKlxuKyAqIE1DVWJvb3Qgc2lnbmFscyByZWFkaW5lc3MgZm9yIGEgZmlybXdhcmUgZG93bmxvYWQgd2l0aCB0aGUgU0IgUERJXG4rICogcmVhZHkgbWFnaWM7IG9ubHkgdGhlIGNsYXVzZS0yMiBTTURJTyBpbnRlcmZhY2Ugd29ya3MgaW4gdGhpcyBzdGF0ZS5cbisgKlxuKyAqIFJldHVybjogdHJ1ZSBpZiBNQ1Vib290IGlzIHdhaXRpbmcgZm9yIGEgZmlybXdhcmUgZG93bmxvYWQuXG4rICovXG4rYm9vbCBteGw4NjJ4eF9yZXNjdWVfbW9kZV9kZXRlY3Qoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYpXG4re1xuK1x0aW50IHJldDtcbitcbitcdHJldCA9IG14bDg2Mnh4X3NtZGlvX3JlYWQocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVQpO1xuK1xuK1x0cmV0dXJuIHJldCA9PSBNWEw4NjJYWF9TQl9QRElfUkVBRFk7XG4rfVxuK1xuKy8qIGRldmljZV9yZXByb2JlKCkgLVx1MDAzZSByZW1vdmUoKSBmcmVlcyBwcml2IHdoaWxlIHRoZSB3b3JrIHJ1bnMsIHNvXG4rICogdGhlIHdvcmsgc3RydWN0IGNhbm5vdCBsaXZlIGluIG14bDg2Mnh4X3ByaXYuXG4rICovXG4rc3RydWN0IG14bDg2Mnh4X3JlcHJvYmUge1xuK1x0c3RydWN0IGRldmljZSAqZGV2O1xuK1x0c3RydWN0IGRlbGF5ZWRfd29yayBkd29yaztcbit9O1xuK1xuK3N0YXRpYyB2b2lkIG14bDg2Mnh4X3JlcHJvYmVfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4re1xuK1x0c3RydWN0IG14bDg2Mnh4X3JlcHJvYmUgKnJlcHJvYmUgPVxuK1x0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IG14bDg2Mnh4X3JlcHJvYmUsIGR3b3JrLndvcmspO1xuK1xuK1x0aWYgKGRldmljZV9yZXByb2JlKHJlcHJvYmUtXHUwMDNlZGV2KSlcbitcdFx0ZGV2X2VycihyZXByb2JlLVx1MDAzZWRldiwgXCJyZXByb2JlIGZhaWxlZFxcblwiKTtcbitcdHB1dF9kZXZpY2UocmVwcm9iZS1cdTAwM2VkZXYpO1xuK1x0a2ZyZWUocmVwcm9iZSk7XG4rXHRtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTtcbit9XG4rXG4rLyogTUNVYm9vdCBmaXJtd2FyZSBpbWFnZSBoZWFkZXIgKi9cbitzdHJ1Y3QgbXhsODYyeHhfZndfaGRyIHtcbitcdF9fbGUzMiBpbWFnZV90eXBlO1xuK1x0X19sZTMyIGltYWdlX3NpemVfMTtcbitcdF9fbGUzMiBpbWFnZV9jaGVja3N1bV8xO1xuK1x0X19sZTMyIGltYWdlX3NpemVfMjtcbitcdF9fbGUzMiBpbWFnZV9jaGVja3N1bV8yO1xuK30gX19wYWNrZWQ7XG4rXG4rc3RhdGljIGludCBteGw4NjJ4eF9mbGFzaF9maXJtd2FyZShzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdixcbitcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncsXG4rXHRcdFx0XHQgICBzdHJ1Y3QgZGV2bGluayAqZGwpXG4re1xuK1x0Y29uc3Qgc3RydWN0IG14bDg2Mnh4X2Z3X2hkciAqaGRyO1xuK1x0dTMyIHdvcmRfaWR4ID0gMCwgZGF0YV93cml0dGVuID0gMCwgaWR4ID0gMDtcbitcdHVuc2lnbmVkIGxvbmcgbmV4dF9ub3RpZnkgPSAwO1xuK1x0Y29uc3QgdTggKnBheWxvYWQ7XG4rXHR1MzIgcGF5bG9hZF9zaXplO1xuK1x0dTE2IHdvcmQsIGZkYXRhO1xuK1x0aW50IHJldCwgaTtcbitcdHUzMiBjcmM7XG4rXG4rXHRpZiAoZnctXHUwMDNlc2l6ZSBcdTAwM2MgTVhMODYyWFhfRldfSERSX1NJWkUpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0aGRyID0gKGNvbnN0IHN0cnVjdCBteGw4NjJ4eF9md19oZHIgKilmdy1cdTAwM2VkYXRhO1xuK1x0cGF5bG9hZCA9IGZ3LVx1MDAzZWRhdGEgKyBNWEw4NjJYWF9GV19IRFJfU0laRTtcbitcdHBheWxvYWRfc2l6ZSA9IGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9zaXplXzEpICtcbitcdFx0ICAgICAgIGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9zaXplXzIpO1xuK1xuK1x0aWYgKHBheWxvYWRfc2l6ZSBcdTAwM2UgZnctXHUwMDNlc2l6ZSAtIE1YTDg2MlhYX0ZXX0hEUl9TSVpFKSB7XG4rXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWRldixcbitcdFx0XHRcImZsYXNoOiBmaXJtd2FyZSBmaWxlIHRvbyBzbWFsbCBmb3IgZGVjbGFyZWQgc2l6ZVxcblwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRpZiAobGUzMl90b19jcHUoaGRyLVx1MDAzZWltYWdlX3NpemVfMSkpIHtcbitcdFx0Y3JjID0gfmNyYzMyX2xlKH4wVSwgcGF5bG9hZCxcbitcdFx0XHRcdGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9zaXplXzEpKTtcbitcdFx0aWYgKGNyYyAhPSBsZTMyX3RvX2NwdShoZHItXHUwMDNlaW1hZ2VfY2hlY2tzdW1fMSkpIHtcbitcdFx0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VkZXYsXG4rXHRcdFx0XHRcImZsYXNoOiBpbWFnZSAxIENSQyBtaXNtYXRjaCAoZ290ICUwOHgsIGV4cGVjdGVkICUwOHgpXFxuXCIsXG4rXHRcdFx0XHRjcmMsIGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9jaGVja3N1bV8xKSk7XG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdH1cbitcdH1cbitcbitcdGlmIChsZTMyX3RvX2NwdShoZHItXHUwMDNlaW1hZ2Vfc2l6ZV8yKSkge1xuK1x0XHRjcmMgPSB+Y3JjMzJfbGUofjBVLFxuK1x0XHRcdFx0cGF5bG9hZCArIGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9zaXplXzEpLFxuK1x0XHRcdFx0bGUzMl90b19jcHUoaGRyLVx1MDAzZWltYWdlX3NpemVfMikpO1xuK1x0XHRpZiAoY3JjICE9IGxlMzJfdG9fY3B1KGhkci1cdTAwM2VpbWFnZV9jaGVja3N1bV8yKSkge1xuK1x0XHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWRldixcbitcdFx0XHRcdFwiZmxhc2g6IGltYWdlIDIgQ1JDIG1pc21hdGNoIChnb3QgJTA4eCwgZXhwZWN0ZWQgJTA4eClcXG5cIixcbitcdFx0XHRcdGNyYywgbGUzMl90b19jcHUoaGRyLVx1MDAzZWltYWdlX2NoZWNrc3VtXzIpKTtcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0fVxuK1x0fVxuK1xuK1x0LyogU3RlcCAxOiByZWJvb3QgdGhlIGZpcm13YXJlIGludG8gTUNVYm9vdCByZXNjdWUgbW9kZSAqL1xuK1x0aWYgKCFwcml2LVx1MDAzZXJlc2N1ZV9tb2RlKSB7XG4rXHRcdHJldCA9IG14bDg2Mnh4X2FwaV93cmFwKHByaXYsIFNZU19NSVNDX0ZXX1VQREFURSwgTlVMTCwgMCxcbitcdFx0XHRcdFx0ZmFsc2UsIGZhbHNlKTtcbitcdFx0aWYgKHJldCkge1xuK1x0XHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWRldixcbitcdFx0XHRcdFwiZmxhc2g6IEZXX1VQREFURSBjb21tYW5kIGZhaWxlZDogJXBlXFxuXCIsXG4rXHRcdFx0XHRFUlJfUFRSKHJldCkpO1xuK1x0XHRcdHJldHVybiByZXQ7XG4rXHRcdH1cbitcdH1cbitcbitcdC8qIEZhaWx1cmVzIGZyb20gaGVyZSBvbiBtdXN0IGdvIHRocm91Z2ggZW5kX21hZ2ljIHNvIE1DVWJvb3RcbitcdCAqIHJlYm9vdHMgaW5zdGVhZCBvZiB3YWl0aW5nIGZvcmV2ZXIuXG4rXHQgKi9cbitcbitcdC8qIFN0ZXAgMjogd2FpdCBmb3IgYm9vdGxvYWRlciByZWFkeSAqL1xuK1x0bXhsODYyeHhfZmxhc2hfbm90aWZ5KGRsLCBcIldhaXRpbmcgZm9yIGJvb3Rsb2FkZXJcIiwgMCwgMCk7XG4rXHRteGw4NjJ4eF9zYl9wZGlfcmVzZXQocHJpdik7XG4rXHRyZXQgPSBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIE1YTDg2MlhYX1NCX1BESV9SRUFEWSxcbitcdFx0XHRcdFx0TVhMODYyWFhfRldfUkVBRFlfVElNRU9VVF9NUyk7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWRldixcbitcdFx0XHRcImZsYXNoOiBib290bG9hZGVyIG5vdCByZWFkeTogJXBlXFxuXCIsIEVSUl9QVFIocmV0KSk7XG4rXHRcdGdvdG8gZW5kX21hZ2ljO1xuK1x0fVxuK1xuK1x0LyogU3RlcCAzOiBzdGFydCBoYW5kc2hha2UgKi9cbitcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9TVEFULFxuK1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX1NUQVJUKTtcbitcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQocHJpdiwgTVhMODYyWFhfU0JfUERJX1NUQVJUICsgMSxcbitcdFx0XHRcdFx0TVhMODYyWFhfRldfQUNLX1RJTUVPVVRfTVMpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VkZXYsXG4rXHRcdFx0XCJmbGFzaDogc3RhcnQgaGFuZHNoYWtlIGZhaWxlZDogJXBlXFxuXCIsIEVSUl9QVFIocmV0KSk7XG4rXHRcdGdvdG8gZW5kX21hZ2ljO1xuK1x0fVxuK1xuK1x0LyogU3RlcCA0OiB0cmFuc2ZlciBpbWFnZSBoZWFkZXIgKi9cbitcdG14bDg2Mnh4X2ZsYXNoX25vdGlmeShkbCwgXCJFcmFzaW5nIGZsYXNoXCIsIDAsIDApO1xuK1x0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0NUUkwsXG4rXHRcdFx0ICAgICBNWEw4NjJYWF9TQl9QRElfQ1RSTF9XUik7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNWEw4NjJYWF9GV19IRFJfU0laRSAvIDI7IGkrKykge1xuK1x0XHR3b3JkID0gZnctXHUwMDNlZGF0YVtpICogMl0gfFxuK1x0XHQgICAgICAgKCh1MTYpZnctXHUwMDNlZGF0YVtpICogMiArIDFdIFx1MDAzY1x1MDAzYyA4KTtcbitcdFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0RBVEEsIHdvcmQpO1xuK1x0fVxuK1x0bXhsODYyeHhfc2JfcGRpX3Jlc2V0KHByaXYpO1xuK1xuK1x0LyogdGhlIGJ5dGUgY291bnQgaW4gU1RBVCB0cmlnZ2VycyB0aGUgZXJhc2UgKi9cbitcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9TVEFULFxuK1x0XHRcdCAgICAgTVhMODYyWFhfRldfSERSX1NJWkUpO1xuK1xuK1x0LyogQUNLIGlzIGJ5dGUgY291bnQgKyAxICovXG4rXHRyZXQgPSBteGw4NjJ4eF9zYl9wZGlfcG9sbF9zdGF0KHByaXYsIE1YTDg2MlhYX0ZXX0hEUl9TSVpFICsgMSxcbitcdFx0XHRcdFx0TVhMODYyWFhfRldfQUNLX1RJTUVPVVRfTVMpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VkZXYsXG4rXHRcdFx0XCJmbGFzaDogaGVhZGVyIEFDSyBmYWlsZWQ6ICVwZVxcblwiLCBFUlJfUFRSKHJldCkpO1xuK1x0XHRnb3RvIGVuZF9tYWdpYztcbitcdH1cbitcbitcdC8qIFN0ZXAgNTogd2FpdCBmb3IgZXJhc2UgdG8gY29tcGxldGUgKi9cbitcdHJldCA9IG14bDg2Mnh4X3NiX3BkaV9wb2xsX3N0YXQocHJpdiwgMCxcbitcdFx0XHRcdFx0TVhMODYyWFhfRldfRVJBU0VfVElNRU9VVF9NUyk7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWRldixcbitcdFx0XHRcImZsYXNoOiBlcmFzZSB0aW1lb3V0OiAlcGVcXG5cIiwgRVJSX1BUUihyZXQpKTtcbitcdFx0Z290byBlbmRfbWFnaWM7XG4rXHR9XG4rXG4rXHQvKiBTdGVwIDY6IHRyYW5zZmVyIHBheWxvYWQgKi9cbitcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9DVFJMLFxuK1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0NUUkxfV1IpO1xuK1xuK1x0d2hpbGUgKGlkeCBcdTAwM2MgcGF5bG9hZF9zaXplKSB7XG4rXHRcdGlmIChpZHggKyAxIFx1MDAzYyBwYXlsb2FkX3NpemUpIHtcbitcdFx0XHRmZGF0YSA9IHBheWxvYWRbaWR4XSB8XG4rXHRcdFx0XHQoKHUxNilwYXlsb2FkW2lkeCArIDFdIFx1MDAzY1x1MDAzYyA4KTtcbitcdFx0XHRpZHggKz0gMjtcbitcdFx0XHRkYXRhX3dyaXR0ZW4gKz0gMjtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRmZGF0YSA9IHBheWxvYWRbaWR4XTtcbitcdFx0XHRpZHgrKztcbitcdFx0XHRkYXRhX3dyaXR0ZW4rKztcbitcdFx0fVxuK1xuK1x0XHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfREFUQSwgZmRhdGEpO1xuK1x0XHR3b3JkX2lkeCsrO1xuK1xuK1x0XHRpZiAoaWR4IFx1MDAzZT0gcGF5bG9hZF9zaXplKSB7XG4rXHRcdFx0cmV0ID0gbXhsODYyeHhfc2JfcGRpX2ZsdXNoX3NsaWNlKHByaXYsIGRhdGFfd3JpdHRlbik7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcbitcdFx0LyogSGFsZi1iYW5rIGJvdW5kYXJ5OiBzd2l0Y2ggdG8gU0IxIGFkZHJlc3MgKi9cbitcdFx0aWYgKHdvcmRfaWR4ID09IE1YTDg2MlhYX0ZXX0JBTktfSEFMRikge1xuK1x0XHRcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9DVFJMLFxuK1x0XHRcdFx0XHQgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1JTVCk7XG4rXHRcdFx0bXhsODYyeHhfc21kaW9fd3JpdGUocHJpdiwgTVhMODYyWFhfU0JfUERJX0FERFIsXG4rXHRcdFx0XHRcdCAgICAgTVhMODYyWFhfRldfU0IxX0FERFIpO1xuK1x0XHRcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9DVFJMLFxuK1x0XHRcdFx0XHQgICAgIE1YTDg2MlhYX1NCX1BESV9DVFJMX1dSKTtcbitcdFx0fSBlbHNlIGlmICh3b3JkX2lkeCBcdTAwM2U9IE1YTDg2MlhYX0ZXX0JBTktfU0xJQ0UpIHtcbitcdFx0XHRyZXQgPSBteGw4NjJ4eF9zYl9wZGlfZmx1c2hfc2xpY2UocHJpdiwgZGF0YV93cml0dGVuKTtcbitcdFx0XHRpZiAocmV0KSB7XG4rXHRcdFx0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VkZXYsXG4rXHRcdFx0XHRcdFwiZmxhc2g6IHdyaXRlIHRpbWVvdXQgYXQgJXUvJXU6ICVwZVxcblwiLFxuK1x0XHRcdFx0XHRpZHgsIHBheWxvYWRfc2l6ZSwgRVJSX1BUUihyZXQpKTtcbitcdFx0XHRcdGdvdG8gZW5kX21hZ2ljO1xuK1x0XHRcdH1cbitcdFx0XHR3b3JkX2lkeCA9IDA7XG4rXHRcdFx0ZGF0YV93cml0dGVuID0gMDtcbitcdFx0XHRteGw4NjJ4eF9zbWRpb193cml0ZShwcml2LCBNWEw4NjJYWF9TQl9QRElfQ1RSTCxcbitcdFx0XHRcdFx0ICAgICBNWEw4NjJYWF9TQl9QRElfQ1RSTF9XUik7XG4rXG4rXHRcdFx0aWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgbmV4dF9ub3RpZnkpKSB7XG4rXHRcdFx0XHRteGw4NjJ4eF9mbGFzaF9ub3RpZnkoZGwsIFwiRmxhc2hpbmdcIiwgaWR4LFxuK1x0XHRcdFx0XHRcdCAgICAgIHBheWxvYWRfc2l6ZSk7XG4rXHRcdFx0XHRuZXh0X25vdGlmeSA9IGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKDUwMCk7XG4rXHRcdFx0fVxuK1x0XHR9XG4rXHR9XG4rXG4rXHRpZiAocmV0KSB7XG4rXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWRldixcbitcdFx0XHRcImZsYXNoOiBmaW5hbCB3cml0ZSB0aW1lb3V0OiAlcGVcXG5cIiwgRVJSX1BUUihyZXQpKTtcbitcdFx0Z290byBlbmRfbWFnaWM7XG4rXHR9XG4rXG4rXHRteGw4NjJ4eF9mbGFzaF9ub3RpZnkoZGwsIFwiRmxhc2hpbmdcIiwgcGF5bG9hZF9zaXplLCBwYXlsb2FkX3NpemUpO1xuK1xuK2VuZF9tYWdpYzpcbitcdC8qIHJlYm9vdCBNQ1Vib290IGV2ZW4gYWZ0ZXIgYSBmYWlsZWQgdHJhbnNmZXIgKi9cbitcdG14bDg2Mnh4X3NtZGlvX3dyaXRlKHByaXYsIE1YTDg2MlhYX1NCX1BESV9TVEFULFxuK1x0XHRcdCAgICAgTVhMODYyWFhfU0JfUERJX0VORCk7XG4rXHRtc2xlZXAoTVhMODYyWFhfRldfUkVCT09UX0RFTEFZX01TKTtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK2ludCBteGw4NjJ4eF9kZXZsaW5rX2luZm9fZ2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbitcdFx0XHQgICAgICBzdHJ1Y3QgZGV2bGlua19pbmZvX3JlcSAqcmVxLFxuK1x0XHRcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbit7XG4rXHRzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG4rXHRjb25zdCBjaGFyICpjb21wYXRpYmxlO1xuK1x0Y2hhciB2ZXJfc3RyWzMyXTtcbitcdGludCByZXQ7XG4rXG4rXHRpZiAoIW9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nX2luZGV4KGRzLVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcImNvbXBhdGlibGVcIiwgMCxcbitcdFx0XHRcdFx0ICAgXHUwMDI2Y29tcGF0aWJsZSkpIHtcbitcdFx0cmV0ID0gZGV2bGlua19pbmZvX3ZlcnNpb25fZml4ZWRfcHV0KHJlcSxcbitcdFx0XHRcdFx0XHQgICAgIERFVkxJTktfSU5GT19WRVJTSU9OX0dFTkVSSUNfQVNJQ19JRCxcbitcdFx0XHRcdFx0XHQgICAgIGNvbXBhdGlibGUpO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRpZiAocHJpdi1cdTAwM2VyZXNjdWVfbW9kZSlcbitcdFx0cmV0dXJuIGRldmxpbmtfaW5mb192ZXJzaW9uX3J1bm5pbmdfcHV0KHJlcSwgXCJmd1wiLFxuK1x0XHRcdFx0XHRcdFx0XCJtY3Vib290LXJlc2N1ZVwiKTtcbitcbitcdHNucHJpbnRmKHZlcl9zdHIsIHNpemVvZih2ZXJfc3RyKSwgXCIldS4ldS4ldVwiLFxuK1x0XHQgcHJpdi1cdTAwM2Vmd192ZXJzaW9uLm1ham9yLCBwcml2LVx1MDAzZWZ3X3ZlcnNpb24ubWlub3IsXG4rXHRcdCBwcml2LVx1MDAzZWZ3X3ZlcnNpb24ucmV2aXNpb24pO1xuK1xuK1x0cmV0dXJuIGRldmxpbmtfaW5mb192ZXJzaW9uX3J1bm5pbmdfcHV0KHJlcSwgXCJmd1wiLCB2ZXJfc3RyKTtcbit9XG4rXG4raW50IG14bDg2Mnh4X2RldmxpbmtfZmxhc2hfdXBkYXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbitcdFx0XHRcdCAgc3RydWN0IGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLFxuK1x0XHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4re1xuK1x0c3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuK1x0c3RydWN0IG14bDg2Mnh4X3N5c19md19pbWFnZV92ZXJzaW9uIHZlciA9IHt9O1xuK1x0c3RydWN0IG14bDg2Mnh4X3JlcHJvYmUgKnJlcHJvYmU7XG4rXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwO1xuK1x0aW50IHJldCwgaTtcbitcbitcdGlmIChwYXJhbXMtXHUwMDNlY29tcG9uZW50KSB7XG4rXHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiY29tcG9uZW50IGlzIG5vdCBzdXBwb3J0ZWRcIik7XG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcdH1cbitcbitcdGlmIChwcml2LVx1MDAzZXJlc2N1ZV9tb2RlKVxuK1x0XHRkZXZfaW5mbyhkcy1cdTAwM2VkZXYsXG4rXHRcdFx0IFwiZmxhc2g6IHJlY292ZXJpbmcgc3dpdGNoIGZyb20gTUNVYm9vdCByZXNjdWUgbW9kZVxcblwiKTtcbitcdGVsc2VcbitcdFx0ZGV2X2luZm8oZHMtXHUwMDNlZGV2LCBcImZsYXNoOiBydW5uaW5nIGZpcm13YXJlICV1LiV1LiV1XFxuXCIsXG4rXHRcdFx0IHByaXYtXHUwMDNlZndfdmVyc2lvbi5tYWpvciwgcHJpdi1cdTAwM2Vmd192ZXJzaW9uLm1pbm9yLFxuK1x0XHRcdCBwcml2LVx1MDAzZWZ3X3ZlcnNpb24ucmV2aXNpb24pO1xuK1xuK1x0LyogQ2xvc2UgcG9ydHMgd2hpbGUgdGhlIGZpcm13YXJlIGlzIHN0aWxsIGFsaXZlIHNvIHRoZSBEU0FcbitcdCAqIGNvcmUncyBNREIvRkRCIHRyYWNraW5nIGlzIGRyYWluZWQsIGFuZCBkZXRhY2ggdXNlciBwb3J0c1xuK1x0ICogc28gdXNlcnNwYWNlIGNhbm5vdCByZW9wZW4gdGhlbSBkdXJpbmcgdGhlIGZsYXNoLiBUaGVcbitcdCAqIGNvbmR1aXQgYmVsb25ncyB0byB0aGUgTUFDIGRyaXZlciBhbmQgaXMgb25seSBjbG9zZWQuXG4rXHQgKi9cbitcdHJ0bmxfbG9jaygpO1xuK1x0ZHNhX3N3aXRjaF9mb3JfZWFjaF91c2VyX3BvcnQoZHAsIGRzKSB7XG4rXHRcdGlmIChkcC1cdTAwM2V1c2VyKSB7XG4rXHRcdFx0ZGV2X2Nsb3NlKGRwLVx1MDAzZXVzZXIpO1xuK1x0XHRcdG5ldGlmX2RldmljZV9kZXRhY2goZHAtXHUwMDNldXNlcik7XG4rXHRcdH1cbitcdH1cbitcdGRzYV9zd2l0Y2hfZm9yX2VhY2hfY3B1X3BvcnQoZHAsIGRzKVxuK1x0XHRkZXZfY2xvc2UoZHAtXHUwMDNlY29uZHVpdCk7XG4rXHRydG5sX3VubG9jaygpO1xuK1xuK1x0cHJpdi1cdTAwM2VibG9ja19ob3N0ID0gdHJ1ZTtcbitcbitcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZwcml2LVx1MDAzZXN0YXRzX3dvcmspO1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgZHMtXHUwMDNlbnVtX3BvcnRzOyBpKyspXG4rXHRcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2cHJpdi1cdTAwM2Vwb3J0c1tpXS5ob3N0X2Zsb29kX3dvcmspO1xuK1xuK1x0cmV0ID0gbXhsODYyeHhfZmxhc2hfZmlybXdhcmUocHJpdiwgcGFyYW1zLVx1MDAzZWZ3LCBkcy1cdTAwM2VkZXZsaW5rKTtcbitcdGlmIChyZXQpXG4rXHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiZmlybXdhcmUgdHJhbnNmZXIgZmFpbGVkXCIpO1xuK1xuK1x0aWYgKCFyZXQpIHtcbitcdFx0LyogbGlmdCB0aGUgYmxvY2sgdG8gcXVlcnkgdGhlIG5ldyBmaXJtd2FyZSB2ZXJzaW9uICovXG4rXHRcdHByaXYtXHUwMDNlYmxvY2tfaG9zdCA9IGZhbHNlO1xuK1x0XHRwcml2LVx1MDAzZXJlc2N1ZV9tb2RlID0gZmFsc2U7XG4rXHRcdG1lbXNldChcdTAwMjZ2ZXIsIDAsIHNpemVvZih2ZXIpKTtcbitcdFx0aWYgKCFNWEw4NjJYWF9BUElfUkVBRF9RVUlFVChwcml2LCBTWVNfTUlTQ19GV19WRVJTSU9OLCB2ZXIpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgdmVyLml2X21ham9yKVxuK1x0XHRcdGRldl9pbmZvKGRzLVx1MDAzZWRldiwgXCJmbGFzaDogbmV3IGZpcm13YXJlICV1LiV1LiV1XFxuXCIsXG4rXHRcdFx0XHQgdmVyLml2X21ham9yLCB2ZXIuaXZfbWlub3IsXG4rXHRcdFx0XHQgbGUxNl90b19jcHUodmVyLml2X3JldmlzaW9uKSk7XG4rXHR9XG4rXG4rXHRwcml2LVx1MDAzZXNraXBfdGVhcmRvd24gPSB0cnVlO1xuK1xuK1x0cmVwcm9iZSA9IGt6YWxsb2Nfb2JqKCpyZXByb2JlKTtcbitcdGlmICghcmVwcm9iZSlcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdGlmICghdHJ5X21vZHVsZV9nZXQoVEhJU19NT0RVTEUpKSB7XG4rXHRcdGtmcmVlKHJlcHJvYmUpO1xuK1x0XHRyZXR1cm4gcmV0O1xuK1x0fVxuK1xuK1x0cmVwcm9iZS1cdTAwM2VkZXYgPSBnZXRfZGV2aWNlKGRzLVx1MDAzZWRldik7XG4rXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZyZXByb2JlLVx1MDAzZWR3b3JrLCBteGw4NjJ4eF9yZXByb2JlX3dvcmtfZm4pO1xuK1x0c2NoZWR1bGVfZGVsYXllZF93b3JrKFx1MDAyNnJlcHJvYmUtXHUwMDNlZHdvcmssIG1zZWNzX3RvX2ppZmZpZXMoNTAwKSk7XG4rXG4rXHRyZXR1cm4gcmV0O1xuK31cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtZncuaCBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1mdy5oXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjU3YzIwMDBjZmVlNTE5XG4tLS0gL2Rldi9udWxsXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtZncuaFxuQEAgLTAsMCArMSwxOCBAQFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyICovXG4rXG4rI2lmbmRlZiBfX01YTDg2MlhYX0ZXX0hcbisjZGVmaW5lIF9fTVhMODYyWFhfRldfSFxuK1xuKyNpbmNsdWRlIFx1MDAzY25ldC9kc2EuaFx1MDAzZVxuK1xuK3N0cnVjdCBteGw4NjJ4eF9wcml2O1xuK1xuK2Jvb2wgbXhsODYyeHhfcmVzY3VlX21vZGVfZGV0ZWN0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KTtcbitpbnQgbXhsODYyeHhfZGV2bGlua19pbmZvX2dldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG4rXHRcdFx0ICAgICAgc3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJlcSxcbitcdFx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuK2ludCBteGw4NjJ4eF9kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG4rXHRcdFx0XHQgIHN0cnVjdCBkZXZsaW5rX2ZsYXNoX3VwZGF0ZV9wYXJhbXMgKnBhcmFtcyxcbitcdFx0XHRcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbitcbisjZW5kaWYgLyogX19NWEw4NjJYWF9GV19IICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWhvc3QuYyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmNcbmluZGV4IDRhY2QyMTZmN2NjMDA5Li5kNmMwY2RmYTBlNjg5MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1ob3N0LmNcbkBAIC0xNSw2ICsxNSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHNhLmhcdTAwM2VcbiAjaW5jbHVkZSBcIm14bDg2Mnh4LmhcIlxuKyNpbmNsdWRlIFwibXhsODYyeHgtY21kLmhcIlxuICNpbmNsdWRlIFwibXhsODYyeHgtaG9zdC5oXCJcbiBcbiAjZGVmaW5lIENUUkxfQlVTWV9NQVNLXHRcdFx0QklUKDE1KVxuQEAgLTMzNiw2ICszMzcsMTUgQEAgaW50IG14bDg2Mnh4X2FwaV93cmFwKHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2LCB1MTYgY21kLCB2b2lkICpfZGF0YSxcbiBcdGludCByZXQsIGNtZF9yZXQ7XG4gXHR1MTYgbWF4LCBjcmMsIGk7XG4gXG4rXHRpZiAocHJpdi1cdTAwM2Vza2lwX3RlYXJkb3duKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdGlmIChwcml2LVx1MDAzZXJlc2N1ZV9tb2RlKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbitcdGlmIChwcml2LVx1MDAzZWJsb2NrX2hvc3QgXHUwMDI2XHUwMDI2IGNtZCAhPSBTWVNfTUlTQ19GV19VUERBVEUpXG4rXHRcdHJldHVybiAtRUJVU1k7XG4rXG4gXHRkZXZfZGJnKFx1MDAyNnByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VkZXYsIFwiQ01EICUwNHggREFUQSAlKnBoXFxuXCIsIGNtZCwgc2l6ZSwgZGF0YSk7XG4gXG4gXHRtdXRleF9sb2NrX25lc3RlZChcdTAwMjZwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlYnVzLVx1MDAzZW1kaW9fbG9jaywgTURJT19NVVRFWF9ORVNURUQpO1xuQEAgLTQ5NSw2ICs1MDUsNDEgQEAgaW50IG14bDg2Mnh4X3Jlc2V0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rI2RlZmluZSBNWEw4NjJYWF9TTURJT19BRERSX1JFR1x0XHQweDFmXG4rI2RlZmluZSBNWEw4NjJYWF9TTURJT19QQUdFX01BU0tcdDB4ZmZmMFxuKyNkZWZpbmUgTVhMODYyWFhfU01ESU9fT0ZGX01BU0tcdFx0MHgwMDBmXG4rXG4raW50IG14bDg2Mnh4X3NtZGlvX3JlYWQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUzMiBhZGRyKVxuK3tcbitcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlYnVzO1xuK1x0aW50IHBoeSA9IHByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VhZGRyO1xuK1x0aW50IHJldDtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2YnVzLVx1MDAzZW1kaW9fbG9jayk7XG4rXHRyZXQgPSBfX21kaW9idXNfd3JpdGUoYnVzLCBwaHksIE1YTDg2MlhYX1NNRElPX0FERFJfUkVHLFxuK1x0XHRcdCAgICAgIGFkZHIgXHUwMDI2IE1YTDg2MlhYX1NNRElPX1BBR0VfTUFTSyk7XG4rXHRpZiAocmV0IFx1MDAzZT0gMClcbitcdFx0cmV0ID0gX19tZGlvYnVzX3JlYWQoYnVzLCBwaHksIGFkZHIgXHUwMDI2IE1YTDg2MlhYX1NNRElPX09GRl9NQVNLKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZidXMtXHUwMDNlbWRpb19sb2NrKTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK2ludCBteGw4NjJ4eF9zbWRpb193cml0ZShzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdiwgdTMyIGFkZHIsIHUxNiB2YWwpXG4re1xuK1x0c3RydWN0IG1paV9idXMgKmJ1cyA9IHByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VidXM7XG4rXHRpbnQgcGh5ID0gcHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWFkZHI7XG4rXHRpbnQgcmV0O1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZidXMtXHUwMDNlbWRpb19sb2NrKTtcbitcdHJldCA9IF9fbWRpb2J1c193cml0ZShidXMsIHBoeSwgTVhMODYyWFhfU01ESU9fQUREUl9SRUcsXG4rXHRcdFx0ICAgICAgYWRkciBcdTAwMjYgTVhMODYyWFhfU01ESU9fUEFHRV9NQVNLKTtcbitcdGlmIChyZXQgXHUwMDNlPSAwKVxuK1x0XHRyZXQgPSBfX21kaW9idXNfd3JpdGUoYnVzLCBwaHksIGFkZHIgXHUwMDI2IE1YTDg2MlhYX1NNRElPX09GRl9NQVNLLFxuK1x0XHRcdFx0ICAgICAgdmFsKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZidXMtXHUwMDNlbWRpb19sb2NrKTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuIHZvaWQgbXhsODYyeHhfaG9zdF9pbml0KHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2KVxuIHtcbiBcdElOSVRfV09SSyhcdTAwMjZwcml2LVx1MDAzZWNyY19lcnJfd29yaywgbXhsODYyeHhfY3JjX2Vycl93b3JrX2ZuKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtaG9zdC5oIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWhvc3QuaFxuaW5kZXggNjZkNmFlMTk4YWZmNDUuLjRlMDU0YzZlNGMwZTQwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWhvc3QuaFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWhvc3QuaFxuQEAgLTE4LDUgKzE4LDcgQEAgaW50IG14bDg2Mnh4X2FwaV93cmFwKHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2LCB1MTYgY21kLCB2b2lkICpkYXRhLCB1MTYgc2l6ZSxcbiBcdG14bDg2Mnh4X2FwaV93cmFwKGRldiwgY21kLCBcdTAwMjYoZGF0YSksIHNpemVvZigoZGF0YSkpLCB0cnVlLCB0cnVlKVxuIFxuIGludCBteGw4NjJ4eF9yZXNldChzdHJ1Y3QgbXhsODYyeHhfcHJpdiAqcHJpdik7XG4raW50IG14bDg2Mnh4X3NtZGlvX3JlYWQoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUzMiBhZGRyKTtcbitpbnQgbXhsODYyeHhfc21kaW9fd3JpdGUoc3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYsIHUzMiBhZGRyLCB1MTYgdmFsKTtcbiBcbiAjZW5kaWYgLyogX19NWEw4NjJYWF9IT1NUX0ggKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuY1xuaW5kZXggYjY4OTY1MmFhOWI5MjAuLmE1YjY5NDBiNTUyZTllIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuY1xuQEAgLTQwNiw2ICs0MDYsOCBAQCBteGw4NjJ4eF9waHlsaW5rX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuIFxuIFx0c3dpdGNoIChwb3J0KSB7XG4gXHRjYXNlIDkgLi4uIDE2OlxuK1x0XHRpZiAocHJpdi1cdTAwM2VyZXNjdWVfbW9kZSlcbitcdFx0XHRyZXR1cm4gTlVMTDtcbiBcdFx0aWYgKCFNWEw4NjJYWF9GV19WRVJfTUlOKHByaXYsIDEsIDAsIDg0KSkge1xuIFx0XHRcdGRldl93YXJuX29uY2UoZHAtXHUwMDNlZHMtXHUwMDNlZGV2LFxuIFx0XHRcdFx0ICAgICAgXCJTZXJEZXMgUENTIHVuc3VwcG9ydGVkIG9uIG9sZCBmaXJtd2FyZS5cXG5cIik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguY1xuaW5kZXggNDVkMjM3YjNhNDBmMTAuLmI3Mzg1Y2ZhNTQ3NDU4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jXG5AQCAtMjEsNiArMjEsNyBAQFxuICNpbmNsdWRlIFwibXhsODYyeHguaFwiXG4gI2luY2x1ZGUgXCJteGw4NjJ4eC1hcGkuaFwiXG4gI2luY2x1ZGUgXCJteGw4NjJ4eC1jbWQuaFwiXG4rI2luY2x1ZGUgXCJteGw4NjJ4eC1mdy5oXCJcbiAjaW5jbHVkZSBcIm14bDg2Mnh4LWhvc3QuaFwiXG4gI2luY2x1ZGUgXCJteGw4NjJ4eC1waHlsaW5rLmhcIlxuIFxuQEAgLTYyOCw5ICs2MjksMjIgQEAgc3RhdGljIGludCBteGw4NjJ4eF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0cmV0ID0gbXhsODYyeHhfd2FpdF9yZWFkeShkcyk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuK1x0cHJpdi1cdTAwM2VyZXNjdWVfbW9kZSA9IG14bDg2Mnh4X3Jlc2N1ZV9tb2RlX2RldGVjdChwcml2KTtcbitcdGlmICghcHJpdi1cdTAwM2VyZXNjdWVfbW9kZSkge1xuK1x0XHRyZXQgPSBteGw4NjJ4eF93YWl0X3JlYWR5KGRzKTtcbitcdFx0aWYgKHJldCkge1xuK1x0XHRcdC8qIHRoZSByZXNldCBtYXkgb25seSBub3cgaGF2ZSB0cmlnZ2VyZWQgcmVzY3VlIG1vZGUgKi9cbitcdFx0XHRwcml2LVx1MDAzZXJlc2N1ZV9tb2RlID0gbXhsODYyeHhfcmVzY3VlX21vZGVfZGV0ZWN0KHByaXYpO1xuK1x0XHRcdGlmICghcHJpdi1cdTAwM2VyZXNjdWVfbW9kZSlcbitcdFx0XHRcdHJldHVybiByZXQ7XG4rXHRcdH1cbitcdH1cbitcbitcdGlmIChwcml2LVx1MDAzZXJlc2N1ZV9tb2RlKSB7XG4rXHRcdGRldl93YXJuKGRzLVx1MDAzZWRldixcbitcdFx0XHQgXCJzd2l0Y2ggc3R1Y2sgaW4gTUNVYm9vdCByZXNjdWUgbW9kZSwgdXNlIGRldmxpbmsgdG8gZmxhc2ggbmV3IGZpcm13YXJlXFxuXCIpO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbiBcbiBcdG11dGV4X2luaXQoXHUwMDI2cHJpdi1cdTAwM2VzZXJkZXNfbG9jayk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHByaXYtXHUwMDNlc2VyZGVzX3BvcnRzKTsgaSsrKVxuQEAgLTcxNSwxMSArNzI5LDIxIEBAIHN0YXRpYyBpbnQgbXhsODYyeHhfcG9ydF9zdGF0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBib29sIGVuYWJsZSlcbiBzdGF0aWMgaW50IG14bDg2Mnh4X3BvcnRfZW5hYmxlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXHRcdFx0XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbitcdHN0cnVjdCBteGw4NjJ4eF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbitcbitcdGlmIChwcml2LVx1MDAzZXJlc2N1ZV9tb2RlKVxuK1x0XHRyZXR1cm4gMDtcbitcbiBcdHJldHVybiBteGw4NjJ4eF9wb3J0X3N0YXRlKGRzLCBwb3J0LCB0cnVlKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbXhsODYyeHhfcG9ydF9kaXNhYmxlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG4ge1xuK1x0c3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuK1xuK1x0aWYgKHByaXYtXHUwMDNlcmVzY3VlX21vZGUpXG4rXHRcdHJldHVybjtcbitcbiBcdGlmIChteGw4NjJ4eF9wb3J0X3N0YXRlKGRzLCBwb3J0LCBmYWxzZSkpXG4gXHRcdGRldl9lcnIoZHMtXHUwMDNlZGV2LCBcImZhaWxlZCB0byBkaXNhYmxlIHBvcnQgJWRcXG5cIiwgcG9ydCk7XG4gfVxuQEAgLTEzMzcsNiArMTM2MSwxMiBAQCBzdGF0aWMgaW50IG14bDg2Mnh4X3BvcnRfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcbiBcdGJvb2wgaXNfY3B1X3BvcnQgPSBkc2FfcG9ydF9pc19jcHUoZHApO1xuIFx0aW50IHJldDtcbiBcbitcdC8qIERTQSByZWluaXRzIGZhaWxlZCB1c2VyIHBvcnRzIGFzIHVudXNlZDsgc2hhcmVkIHBvcnRzIG11c3RcbitcdCAqIHN1Y2NlZWQgZm9yIHRoZSB0cmVlIHRvIHJlZ2lzdGVyLlxuK1x0ICovXG4rXHRpZiAocHJpdi1cdTAwM2VyZXNjdWVfbW9kZSlcbitcdFx0cmV0dXJuIGRzYV9wb3J0X2lzX3VzZXIoZHApID8gLUVOT0RFViA6IDA7XG4rXG4gXHRyZXQgPSBteGw4NjJ4eF9wb3J0X3N0YXRlKGRzLCBwb3J0LCBmYWxzZSk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuQEAgLTE2MjgsNiArMTY1OCw5IEBAIHN0YXRpYyB2b2lkIG14bDg2Mnh4X3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuIFx0c3RydWN0IG14bDg2Mnh4X3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuIFx0aW50IHJldDtcbiBcbitcdGlmIChwcml2LVx1MDAzZXJlc2N1ZV9tb2RlKVxuK1x0XHRyZXR1cm47XG4rXG4gXHRzd2l0Y2ggKHN0YXRlKSB7XG4gXHRjYXNlIEJSX1NUQVRFX0RJU0FCTEVEOlxuIFx0XHRwYXJhbS5wb3J0X3N0YXRlID0gY3B1X3RvX2xlMzIoTVhMODYyWFhfU1RQX1BPUlRfU1RBVEVfRElTQUJMRSk7XG5AQCAtMjA4Niw2ICsyMTE5LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBteGw4NjJ4eF9zd2l0Y2hfb3BzID0ge1xuIFx0LmdldF9wYXVzZV9zdGF0cyA9IG14bDg2Mnh4X2dldF9wYXVzZV9zdGF0cyxcbiBcdC5nZXRfcm1vbl9zdGF0cyA9IG14bDg2Mnh4X2dldF9ybW9uX3N0YXRzLFxuIFx0LmdldF9zdGF0czY0ID0gbXhsODYyeHhfZ2V0X3N0YXRzNjQsXG4rXHQuZGV2bGlua19pbmZvX2dldCA9IG14bDg2Mnh4X2RldmxpbmtfaW5mb19nZXQsXG4rXHQuZGV2bGlua19mbGFzaF91cGRhdGUgPSBteGw4NjJ4eF9kZXZsaW5rX2ZsYXNoX3VwZGF0ZSxcbiB9O1xuIFxuIHN0YXRpYyBpbnQgbXhsODYyeHhfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5oIGIvZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmhcbmluZGV4IDQzMmE1ZjNmMmUwOGU2Li41ZDIxMjk2NTYxZTNhYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5oXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguaFxuQEAgLTMxOSw2ICszMTksMTIgQEAgc3RydWN0IG14bDg2Mnh4X2Z3X3ZlcnNpb24ge1xuICAqIEBldmxhbl9pbmdyZXNzX3NpemU6IHBlci1wb3J0IGluZ3Jlc3MgRXh0ZW5kZWQgVkxBTiBibG9jayBzaXplXG4gICogQGV2bGFuX2VncmVzc19zaXplOiAgcGVyLXBvcnQgZWdyZXNzIEV4dGVuZGVkIFZMQU4gYmxvY2sgc2l6ZVxuICAqIEB2Zl9ibG9ja19zaXplOiAgICAgIHBlci1wb3J0IFZMQU4gRmlsdGVyIGJsb2NrIHNpemVcbisgKiBAYmxvY2tfaG9zdDogICAgICAgICByZWplY3QgZmlybXdhcmUgQVBJIGNvbW1hbmRzIChleGNlcHQgRldfVVBEQVRFKVxuKyAqICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyBhIGZpcm13YXJlIGZsYXNoXG4rICogQHNraXBfdGVhcmRvd246ICAgICAgZGlzY2FyZCBmaXJtd2FyZSBBUEkgY29tbWFuZHMgZHVyaW5nIHRoZSB0ZWFyZG93blxuKyAqICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJlZCBieSB0aGUgcG9zdC1mbGFzaCByZXByb2JlXG4rICogQHJlc2N1ZV9tb2RlOiAgICAgICAgc3dpdGNoIGlzIHN0dWNrIGluIE1DVWJvb3Q7IGZpcm13YXJlIEFQSSBjb21tYW5kc1xuKyAqICAgICAgICAgICAgICAgICAgICAgIGZhaWwgZmFzdCwgb25seSBjbGF1c2UtMjIgU01ESU8gd29ya3NcbiAgKiBAc3RhdHNfd29yazogICAgICAgICBwZXJpb2RpYyB3b3JrIGl0ZW0gdGhhdCBwb2xscyBSTU9OIGhhcmR3YXJlIGNvdW50ZXJzXG4gICogICAgICAgICAgICAgICAgICAgICAgYW5kIGFjY3VtdWxhdGVzIHRoZW0gaW50byA2NC1iaXQgcGVyLXBvcnQgc3RhdHNcbiAgKi9cbkBAIC0zMzcsNiArMzQzLDkgQEAgc3RydWN0IG14bDg2Mnh4X3ByaXYge1xuIFx0dTE2IGV2bGFuX2luZ3Jlc3Nfc2l6ZTtcbiBcdHUxNiBldmxhbl9lZ3Jlc3Nfc2l6ZTtcbiBcdHUxNiB2Zl9ibG9ja19zaXplO1xuK1x0Ym9vbCBibG9ja19ob3N0O1xuK1x0Ym9vbCBza2lwX3RlYXJkb3duO1xuK1x0Ym9vbCByZXNjdWVfbW9kZTtcbiBcdHN0cnVjdCBkZWxheWVkX3dvcmsgc3RhdHNfd29yaztcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2RzYS5oIGIvaW5jbHVkZS9uZXQvZHNhLmhcbmluZGV4IDhjMTZlZjIzY2MxMDJhLi5jOWUxOTM0OGRlNjE5MyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2RzYS5oXG4rKysgYi9pbmNsdWRlL25ldC9kc2EuaFxuQEAgLTExNzAsNiArMTE3MCw5IEBAIHN0cnVjdCBkc2Ffc3dpdGNoX29wcyB7XG4gXHRpbnRcdCgqZGV2bGlua19pbmZvX2dldCkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBkZXZsaW5rX2luZm9fcmVxICpyZXEsXG4gXHRcdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbitcdGludFx0KCpkZXZsaW5rX2ZsYXNoX3VwZGF0ZSkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuK1x0XHRcdFx0XHRzdHJ1Y3QgZGV2bGlua19mbGFzaF91cGRhdGVfcGFyYW1zICpwYXJhbXMsXG4rXHRcdFx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG4gXHRpbnRcdCgqZGV2bGlua19zYl9wb29sX2dldCkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuIFx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBzYl9pbmRleCwgdTE2IHBvb2xfaW5kZXgsXG4gXHRcdFx0XHQgICAgICAgc3RydWN0IGRldmxpbmtfc2JfcG9vbF9pbmZvICpwb29sX2luZm8pO1xuZGlmZiAtLWdpdCBhL25ldC9kc2EvZGV2bGluay5jIGIvbmV0L2RzYS9kZXZsaW5rLmNcbmluZGV4IGVkMzQyZjM0NTY5MmJiLi4yNTMxMWE4N2NiYzU2ZCAxMDA2NDRcbi0tLSBhL25ldC9kc2EvZGV2bGluay5jXG4rKysgYi9uZXQvZHNhL2RldmxpbmsuY1xuQEAgLTIwLDYgKzIwLDE4IEBAIHN0YXRpYyBpbnQgZHNhX2RldmxpbmtfaW5mb19nZXQoc3RydWN0IGRldmxpbmsgKmRsLFxuIFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIH1cbiBcbitzdGF0aWMgaW50IGRzYV9kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZGV2bGluayAqZGwsXG4rXHRcdFx0XHQgICAgc3RydWN0IGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLFxuK1x0XHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbit7XG4rXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkc2FfZGV2bGlua190b19kcyhkbCk7XG4rXG4rXHRpZiAoIWRzLVx1MDAzZW9wcy1cdTAwM2VkZXZsaW5rX2ZsYXNoX3VwZGF0ZSlcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1xuK1x0cmV0dXJuIGRzLVx1MDAzZW9wcy1cdTAwM2VkZXZsaW5rX2ZsYXNoX3VwZGF0ZShkcywgcGFyYW1zLCBleHRhY2spO1xuK31cbitcbiBzdGF0aWMgaW50IGRzYV9kZXZsaW5rX3NiX3Bvb2xfZ2V0KHN0cnVjdCBkZXZsaW5rICpkbCxcbiBcdFx0XHRcdCAgIHVuc2lnbmVkIGludCBzYl9pbmRleCwgdTE2IHBvb2xfaW5kZXgsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgZGV2bGlua19zYl9wb29sX2luZm8gKnBvb2xfaW5mbylcbkBAIC0xNjksNiArMTgxLDcgQEAgZHNhX2Rldmxpbmtfc2Jfb2NjX3RjX3BvcnRfYmluZF9nZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqZGxwLFxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgZHNhX2Rldmxpbmtfb3BzID0ge1xuIFx0LmluZm9fZ2V0XHRcdFx0PSBkc2FfZGV2bGlua19pbmZvX2dldCxcbitcdC5mbGFzaF91cGRhdGVcdFx0XHQ9IGRzYV9kZXZsaW5rX2ZsYXNoX3VwZGF0ZSxcbiBcdC5zYl9wb29sX2dldFx0XHRcdD0gZHNhX2Rldmxpbmtfc2JfcG9vbF9nZXQsXG4gXHQuc2JfcG9vbF9zZXRcdFx0XHQ9IGRzYV9kZXZsaW5rX3NiX3Bvb2xfc2V0LFxuIFx0LnNiX3BvcnRfcG9vbF9nZXRcdFx0PSBkc2FfZGV2bGlua19zYl9wb3J0X3Bvb2xfZ2V0LFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDQ6NTc6MjEuNTg2MjE0MDc3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc2ODM4MjYwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE14TDg2Mnh4IFBhdGNoIGZvciBWaXJ0dWFsaXphdGlvbioqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCBhIG5ldyBwYXRjaCBpbmNvcnBvcmF0aW5nIGZpcm13YXJlIGZsYXNoaW5nIGFuZCBkZXZsaW5rIHN1cHBvcnQgZm9yIHRoZSBNYXhMaW5lYXIgTXhMODYyeHggc3dpdGNoLiBUaGUgY2hhbmdlcyBhcmUgZm9jdXNlZCBpbiBgZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L2AgYW5kIGBuZXQvZHNhL2RldmxpbmsuY2AuIFRoaXMgaXMgaW50cmlndWluZyBiZWNhdXNlIGl0IGVuYWJsZXMgZmlybXdhcmUgZmxhc2hpbmcgdGhyb3VnaCBkZXZsaW5rIOKAkyBhIHByZXR0eSBzaWduaWZpY2FudCBpbXByb3ZlbWVudC5cblxuTXkgcHJpbWFyeSBjb25jZXJuLCBhcyBhbHdheXMsIGlzIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBgZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L2AsIHdoaWNoIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCdzIGEgRFNBIHN3aXRjaCBkcml2ZXIgZm9yIHRoZSBNeEw4NjJ4eC4gVGhlIHZlcnkgbmF0dXJlIG9mIERTQSBzd2l0Y2hlcyBtYWtlcyBlbXVsYXRpb24gaGlnaGx5IGltcHJvYmFibGUuIFRoZXkncmUgdHlwaWNhbGx5IGRlZXBseSB0aWVkIHRvIHRoZSBoYXJkd2FyZS5cblxuVGhlcmVmb3JlLCB0aGUgcXVlc3Rpb24gYmVjb21lczogaG93IGNhbiB3ZSB0ZXN0IHRoaXMgaW4gYSB2aXJ0dWFsIHNldHRpbmc/IFdlJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIHRoZXJlJ3MgYW55IG1lbnRpb24gb2Ygc29mdHdhcmUgZW11bGF0aW9uIGFueXdoZXJlLCB0aG91Z2ggSSBoaWdobHkgZG91YnQgaXQuIERTQSBzd2l0Y2hlcyBhcmUgYWxtb3N0IGFsd2F5cyBhIHB1cmVseSBoYXJkd2FyZSBjb25jZXJuLiBUbyBiZSBjZXJ0YWluLCBJJ2xsIHJ1biBhIGtlcm5lbCBzZWFyY2ggZm9yIGBteGw4NjJ4eGAgdG8gY29uZmlybSBhbmQgZXhwYW5kIG91ciBrbm93bGVkZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzAwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDQ6NTc6MjYuMzU0NTk4MTQ1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NjgzNDM5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJteGw4NjJ4eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjMyNCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19ORVRfRFNBX01YTDg2MikgKz0gbXhsODYyeHhfZHNhLm9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvTWFrZWZpbGU6MzpteGw4NjJ4eF9kc2EteSA6PSBteGw4NjJ4eC5vIG14bDg2Mnh4LWhvc3QubyBteGw4NjJ4eC1waHlsaW5rLm8gbXhsODYyeHgtZncub1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oPTE2PXN0cnVjdCBtZGlvX3JlbGF5X2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIzLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyNDogKiBzdHJ1Y3QgbXhsODYyeHhfcmVnaXN0ZXJfbW9kIC0gUmVnaXN0ZXIgYWNjZXNzIHBhcmFtZXRlciB0byBkaXJlY3RseVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yNS0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZ5IGludGVybmFsIHJlZ2lzdGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTMxLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozMjpzdHJ1Y3QgbXhsODYyeHhfcmVnaXN0ZXJfbW9kIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzMtXFx0X19sZTE2IGFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzgtLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM5OiAqIGVudW0gbXhsODYyeHhfbWFjX3RhYmxlX2ZpbHRlciAtIFNvdXJjZS9EZXN0aW5hdGlvbiBNQUMgYWRkcmVzcyBmaWx0ZXJpbmdcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNDAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC00NS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NDY6ZW51bSBteGw4NjJ4eF9tYWNfdGFibGVfZmlsdGVyIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNDctXFx0TVhMODYyWFhfTUFDX0ZJTFRFUl9OT05FID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC02NC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NjU6ICogc3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9hZGQgLSBNQUMgVGFibGUgRW50cnkgdG8gYmUgYWRkZWRcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNjYtICogQGZpZDogRmlsdGVyaW5nIElkZW50aWZpZXIgKEZJRCkgKG5vdCBzdXBwb3J0ZWQgYnkgYWxsIHN3aXRjaGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc0LSAqIEBtYWM6IE1BQyBBZGRyZXNzIHRvIGFkZCB0byB0aGUgdGFibGVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NzU6ICogQGZpbHRlcl9mbGFnOiBTZWUgXFx1MDAyNmVudW0gbXhsODYyeHhfbWFjX3RhYmxlX2ZpbHRlclxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03Ni0gKiBAaWdtcF9jb250cm9sbGVkOiBQYWNrZXQgaXMgbWFya2VkIGFzIElHTVAgY29udHJvbGxlZCBpZiBkZXN0aW5hdGlvbiBNQUNcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04My0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODQ6c3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9hZGQge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04NS1cXHRfX2xlMTYgZmlkO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwMC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTAxOiAqIHN0cnVjdCBteGw4NjJ4eF9tYWNfdGFibGVfcmVtb3ZlIC0gTUFDIFRhYmxlIEVudHJ5IHRvIGJlIHJlbW92ZWRcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAyLSAqIEBmaWQ6IEZpbHRlcmluZyBJZGVudGlmaWVyIChGSUQpXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwMy0gKiBAbWFjOiBNQUMgQWRkcmVzcyB0byBiZSByZW1vdmVkIGZyb20gdGhlIHRhYmxlLlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDQ6ICogQGZpbHRlcl9mbGFnOiBTZWUgXFx1MDAyNmVudW0gbXhsODYyeHhfbWFjX3RhYmxlX2ZpbHRlclxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDUtICogQHRjaTogVENJIGZvciBCLVN0ZXBcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDktICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjExMDpzdHJ1Y3QgbXhsODYyeHhfbWFjX3RhYmxlX3JlbW92ZSB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMS1cXHRfX2xlMTYgZmlkO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExNy0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTE4OiAqIHN0cnVjdCBteGw4NjJ4eF9tYWNfdGFibGVfcmVhZCAtIE1BQyBUYWJsZSBFbnRyeSB0byBiZSByZWFkXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExOS0gKiBAaW5pdGlhbDogUmVzdGFydCB0aGUgZ2V0IG9wZXJhdGlvbiBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRhYmxlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTI4LSAqIEBtYWM6IE1BQyBBZGRyZXNzLiBGaWxsZWQgb3V0IGJ5IHRoZSBzd2l0Y2ggQVBJIGltcGxlbWVudGF0aW9uLlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMjk6ICogQGZpbHRlcl9mbGFnOiBTZWUgXFx1MDAyNmVudW0gbXhsODYyeHhfbWFjX3RhYmxlX2ZpbHRlclxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMzAtICogQGlnbXBfY29udHJvbGxlZDogUGFja2V0IGlzIG1hcmtlZCBhcyBJR01QIGNvbnRyb2xsZWQgaWYgZGVzdGluYXRpb24gTUFDXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQxLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxNDI6c3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9yZWFkIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTQzLVxcdHU4IGluaXRpYWw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTYyLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxNjM6ICogc3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9xdWVyeSAtIE1BQyBUYWJsZSBFbnRyeSBrZXktYmFzZWQgbG9va3VwXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE2NC0gKiBAbWFjOiBNQUMgQWRkcmVzcyB0byBzZWFyY2ggZm9yIChpbnB1dClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xNzItICogQHN0YXRpY19lbnRyeTogSW5kaWNhdGVzIGlmIHRoaXMgaXMgYSBTdGF0aWMgRW50cnlcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTczOiAqIEBmaWx0ZXJfZmxhZzogU2VlIFxcdTAwMjZlbnVtIG14bDg2Mnh4X21hY190YWJsZV9maWx0ZXIgKGlucHV0K291dHB1dClcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTc0LSAqIEBpZ21wX2NvbnRyb2xsZWQ6IElHTVAgY29udHJvbGxlZCBmbGFnXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTgwLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxODE6c3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9xdWVyeSB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTE4Mi1cXHR1OCBtYWNbRVRIX0FMRU5dO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIwMC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MjAxOiAqIGVudW0gbXhsODYyeHhfbWFjX2NsZWFyX3R5cGUgLSBNQUMgdGFibGUgY2xlYXIgdHlwZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yMDItICogQE1YTDg2MlhYX01BQ19DTEVBUl9QSFlfUE9SVDogY2xlYXIgZHluYW1pYyBlbnRyaWVzIGJhc2VkIG9uIHBvcnRfaWRcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yMDQtICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjIwNTplbnVtIG14bDg2Mnh4X21hY19jbGVhcl90eXBlIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjA2LVxcdE1YTDg2MlhYX01BQ19DTEVBUl9QSFlfUE9SVCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjEwLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyMTE6ICogc3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9jbGVhciAtIE1BQyB0YWJsZSBjbGVhclxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyMTI6ICogQHR5cGU6IHNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9tYWNfY2xlYXJfdHlwZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yMTMtICogQHBvcnRfaWQ6IHBoeXNpY2FsIHBvcnQgaWRcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjE0LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyMTU6c3RydWN0IG14bDg2Mnh4X21hY190YWJsZV9jbGVhciB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIxNi1cXHR1OCB0eXBlO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIyMC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MjIxOiAqIGVudW0gbXhsODYyeHhfYWdlX3RpbWVyIC0gQWdpbmcgVGltZXIgVmFsdWUuXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIyMi0gKiBATVhMODYyWFhfQUdFVElNRVJfMV9TRUM6IDEgc2Vjb25kIGFnaW5nIHRpbWVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yMjgtICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjIyOTplbnVtIG14bDg2Mnh4X2FnZV90aW1lciB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTIzMC1cXHRNWEw4NjJYWF9BR0VUSU1FUl8xX1NFQyA9IDEsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjM4LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyMzk6ICogc3RydWN0IG14bDg2Mnh4X2JyaWRnZV9hbGxvYyAtIEJyaWRnZSBBbGxvY2F0aW9uXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI0MC0gKiBAYnJpZGdlX2lkOiBJZiB0aGUgYnJpZGdlIGFsbG9jYXRpb24gaXMgc3VjY2Vzc2Z1bCwgYSB2YWxpZCBJRCB3aWxsIGJlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjQ3LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyNDg6c3RydWN0IG14bDg2Mnh4X2JyaWRnZV9hbGxvYyB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI0OS1cXHRfX2xlMTYgYnJpZGdlX2lkO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTI1Mi0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MjUzOiAqIGVudW0gbXhsODYyeHhfYnJpZGdlX2NvbmZpZ19tYXNrIC0gQnJpZGdlIGNvbmZpZ3VyYXRpb24gbWFza1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yNTQtICogQE1YTDg2MlhYX0JSSURHRV9DT05GSUdfTUFTS19NQUNfTEVBUk5JTkdfTElNSVQ6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjY3LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyNjg6ZW51bSBteGw4NjJ4eF9icmlkZ2VfY29uZmlnX21hc2sge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yNjktXFx0TVhMODYyWFhfQlJJREdFX0NPTkZJR19NQVNLX01BQ19MRUFSTklOR19MSU1JVCA9IEJJVCgwKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yNzgtLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjI3OTogKiBlbnVtIG14bDg2Mnh4X2JyaWRnZV9wb3J0X2VncmVzc19tZXRlciAtIE1ldGVycyBmb3IgZWdyZXNzIHRyYWZmaWMgdHlwZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yODAtICogQE1YTDg2MlhYX0JSSURHRV9QT1JUX0VHUkVTU19NRVRFUl9CUk9BRENBU1Q6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMjkzLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoyOTQ6ZW51bSBteGw4NjJ4eF9icmlkZ2VfcG9ydF9lZ3Jlc3NfbWV0ZXIge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0yOTUtXFx0TVhMODYyWFhfQlJJREdFX1BPUlRfRUdSRVNTX01FVEVSX0JST0FEQ0FTVCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzA0LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozMDU6ICogc3RydWN0IG14bDg2Mnh4X3Fvc19tZXRlcl9jZmcgLSBSYXRlIG1ldGVyIGNvbmZpZ3VyYXRpb25cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzA2LSAqIEBlbmFibGU6IEVuYWJsZS9kaXNhYmxlIG1ldGVyXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzIwLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozMjE6c3RydWN0IG14bDg2Mnh4X3Fvc19tZXRlcl9jZmcge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zMjItXFx0dTggZW5hYmxlO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTMzOC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzM5OiAqIGVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZSAtIEJyaWRnZSBmb3J3YXJkaW5nIHR5cGUgb2YgcGFja2V0XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM0MC0gKiBATVhMODYyWFhfQlJJREdFX0ZPUldBUkRfRkxPT0Q6IFBhY2tldCBpcyBmbG9vZGVkIHRvIHBvcnQgbWVtYmVycyBvZlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM0My0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzQ0OmVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZSB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM0NS1cXHRNWEw4NjJYWF9CUklER0VfRk9SV0FSRF9GTE9PRCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzQ5LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozNTA6ICogc3RydWN0IG14bDg2Mnh4X2JyaWRnZV9jb25maWcgLSBCcmlkZ2UgQ29uZmlndXJhdGlvblxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNTEtICogQGJyaWRnZV9pZDogQnJpZGdlIElEIChGSUQpXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM1MjogKiBAbWFzazogU2VlIFxcdTAwMjZlbnVtIG14bDg2Mnh4X2JyaWRnZV9jb25maWdfbWFza1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNTMtICogQG1hY19sZWFybmluZ19saW1pdF9lbmFibGU6IEVuYWJsZSBNQUMgbGVhcm5pbmcgbGltaXRhdGlvblxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM2My0gKiBAZm9yd2FyZF9icm9hZGNhc3Q6IEZvcndhcmRpbmcgbW9kZSBvZiBicm9hZGNhc3QgdHJhZmZpYy4gU2VlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM2NDogKiAgICAgICAgICAgICAgICAgICAgIFxcdTAwMjZlbnVtIG14bDg2Mnh4X2JyaWRnZV9mb3J3YXJkX21vZGVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzY1LSAqIEBmb3J3YXJkX3Vua25vd25fbXVsdGljYXN0X2lwOiBGb3J3YXJkaW5nIG1vZGUgb2YgdW5rbm93biBtdWx0aWNhc3QgSVBcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzY2LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFmZmljLlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozNjc6ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9icmlkZ2VfZm9yd2FyZF9tb2RlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM2OC0gKiBAZm9yd2FyZF91bmtub3duX211bHRpY2FzdF9ub25faXA6IEZvcndhcmRpbmcgbW9kZSBvZiB1bmtub3duIG11bHRpY2FzdFxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNjktICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub24tSVAgdHJhZmZpYy5cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzcwOiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIFxcdTAwMjZlbnVtIG14bDg2Mnh4X2JyaWRnZV9mb3J3YXJkX21vZGVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzcxLSAqIEBmb3J3YXJkX3Vua25vd25fdW5pY2FzdDogRm9yd2FyZGluZyBtb2RlIG9mIHVua25vd24gdW5pY2FzdCB0cmFmZmljLiBTZWVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzcyOiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgXFx1MDAyNmVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0zNzMtICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM3NDpzdHJ1Y3QgbXhsODYyeHhfYnJpZGdlX2NvbmZpZyB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM3NS1cXHRfX2xlMTYgYnJpZGdlX2lkO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozNzY6XFx0X19sZTMyIG1hc2s7IC8qIGVudW0gbXhsODYyeHhfYnJpZGdlX2NvbmZpZ19tYXNrICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM3Ny1cXHR1OCBtYWNfbGVhcm5pbmdfbGltaXRfZW5hYmxlO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM4Mi1cXHRfX2xlMTYgdHJhZmZpY19zdWJfbWV0ZXJfaWRbTVhMODYyWFhfQlJJREdFX1BPUlRfRUdSRVNTX01FVEVSX01BWF07XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjM4MzpcXHRfX2xlMzIgZm9yd2FyZF9icm9hZGNhc3Q7IC8qIGVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozODQ6XFx0X19sZTMyIGZvcndhcmRfdW5rbm93bl9tdWx0aWNhc3RfaXA7IC8qIGVudW0gbXhsODYyeHhfYnJpZGdlX2ZvcndhcmRfbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDozODU6XFx0X19sZTMyIGZvcndhcmRfdW5rbm93bl9tdWx0aWNhc3Rfbm9uX2lwOyAvKiBlbnVtIG14bDg2Mnh4X2JyaWRnZV9mb3J3YXJkX21vZGUgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6Mzg2OlxcdF9fbGUzMiBmb3J3YXJkX3Vua25vd25fdW5pY2FzdDsgLyogZW51bSBteGw4NjJ4eF9icmlkZ2VfZm9yd2FyZF9tb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM4Ny19IF9fcGFja2VkO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM4OS0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MzkwOiAqIHN0cnVjdCBteGw4NjJ4eF9icmlkZ2VfcG9ydF9hbGxvYyAtIEJyaWRnZSBQb3J0IEFsbG9jYXRpb25cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMzkxLSAqIEBicmlkZ2VfcG9ydF9pZDogSWYgdGhlIGJyaWRnZSBwb3J0IGFsbG9jYXRpb24gaXMgc3VjY2Vzc2Z1bCwgYSB2YWxpZCBJRFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM5Ny0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6Mzk4OnN0cnVjdCBteGw4NjJ4eF9icmlkZ2VfcG9ydF9hbGxvYyB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTM5OS1cXHRfX2xlMTYgYnJpZGdlX3BvcnRfaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNDAyLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo0MDM6ICogZW51bSBteGw4NjJ4eF9icmlkZ2VfcG9ydF9jb25maWdfbWFzayAtIEJyaWRnZSBQb3J0IGNvbmZpZ3VyYXRpb24gbWFza1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC00MDQtICogQE1YTDg2MlhYX0JSSURHRV9QT1JUX0NPTkZJR19NQVNLX0JSSURHRV9JRDpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC00NjItICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjQ2MzplbnVtIG14bDg2Mnh4X2JyaWRnZV9wb3J0X2NvbmZpZ19tYXNrIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNDY0LVxcdE1YTDg2MlhYX0JSSURHRV9QT1JUX0NPTkZJR19NQVNLX0JSSURHRV9JRCA9IEJJVCgwKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC00OTEtLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjQ5MjogKiBlbnVtIG14bDg2Mnh4X2NvbG9yX21hcmtpbmdfbW9kZSAtIENvbG9yIE1hcmtpbmcgTW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC00OTMtICogQE1YTDg2MlhYX01BUktJTkdfQUxMX0dSRUVOOiBtYXJrIHBhY2tldHMgKGV4Y2VwdCBjcml0aWNhbCkgdG8gZ3JlZW5cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01MDEtICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjUwMjplbnVtIG14bDg2Mnh4X2NvbG9yX21hcmtpbmdfbW9kZSB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTUwMy1cXHRNWEw4NjJYWF9NQVJLSU5HX0FMTF9HUkVFTiA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTEzLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo1MTQ6ICogZW51bSBteGw4NjJ4eF9jb2xvcl9yZW1hcmtpbmdfbW9kZSAtIENvbG9yIFJlbWFya2luZyBNb2RlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTUxNS0gKiBATVhMODYyWFhfUkVNQVJLSU5HX05PTkU6IHZhbHVlcyBmcm9tIGxhc3QgcHJvY2VzcyBzdGFnZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTUyMi0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTIzOmVudW0gbXhsODYyeHhfY29sb3JfcmVtYXJraW5nX21vZGUge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01MjQtXFx0TVhMODYyWFhfUkVNQVJLSU5HX05PTkUgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTUzMy0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTM0OiAqIGVudW0gbXhsODYyeHhfcG1hcHBlcl9tYXBwaW5nX21vZGUgLSBQLW1hcHBlciBNYXBwaW5nIE1vZGVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTM1LSAqIEBNWEw4NjJYWF9QTUFQUEVSX01BUFBJTkdfUENQOiBVc2UgUENQIGZvciBWTEFOIHRhZ2dlZCBwYWNrZXRzIHRvIGRlcml2ZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTU0MS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTQyOmVudW0gbXhsODYyeHhfcG1hcHBlcl9tYXBwaW5nX21vZGUge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01NDMtXFx0TVhMODYyWFhfUE1BUFBFUl9NQVBQSU5HX1BDUCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTQ4LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo1NDk6ICogc3RydWN0IG14bDg2Mnh4X3BtYXBwZXIgLSBQLW1hcHBlciBDb25maWd1cmF0aW9uXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTU1MC0gKiBAcG1hcHBlcl9pZDogSW5kZXggb2YgUC1tYXBwZXIgKDAtMzEpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTYwLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo1NjE6c3RydWN0IG14bDg2Mnh4X3BtYXBwZXIge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01NjItXFx0X19sZTE2IHBtYXBwZXJfaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTY2LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo1Njc6ICogc3RydWN0IG14bDg2Mnh4X2JyaWRnZV9wb3J0X2NvbmZpZyAtIEJyaWRnZSBQb3J0IENvbmZpZ3VyYXRpb25cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTY4LSAqIEBicmlkZ2VfcG9ydF9pZDogQnJpZGdlIFBvcnQgSUQgYWxsb2NhdGVkIGJ5IGJyaWRnZSBwb3J0IGFsbG9jYXRpb25cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTY5OiAqIEBtYXNrOiBTZWUgXFx1MDAyNmVudW0gbXhsODYyeHhfYnJpZGdlX3BvcnRfY29uZmlnX21hc2tcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTcwLSAqIEBicmlkZ2VfaWQ6IEJyaWRnZSBJRCAoRklEKSB0byB3aGljaCB0aGlzIGJyaWRnZSBwb3J0IGlzIGFzc29jaWF0ZWRcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01ODMtICogQGluZ3Jlc3NfbWFya2luZ19tb2RlOiBJbmdyZXNzIGNvbG9yIG1hcmtpbmcgbW9kZS4gU2VlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjU4NDogKiAgICAgICAgICAgICAgICAgICAgICAgIFxcdTAwMjZlbnVtIG14bDg2Mnh4X2NvbG9yX21hcmtpbmdfbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01ODUtICogQGVncmVzc19yZW1hcmtpbmdfbW9kZTogQ29sb3IgcmVtYXJraW5nIGZvciBlZ3Jlc3MgdHJhZmZpYy4gU2VlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjU4NjogKiAgICAgICAgICAgICAgICAgICAgICAgICBcXHUwMDI2ZW51bSBteGw4NjJ4eF9jb2xvcl9yZW1hcmtpbmdfbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC01ODctICogQGluZ3Jlc3NfbWV0ZXJpbmdfZW5hYmxlOiBUcmFmZmljIG1ldGVyaW5nIG9uIGluZ3Jlc3MgdHJhZmZpYyBhcHBsaWVzXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTk3LSAqIEBwbWFwcGVyX21hcHBpbmdfbW9kZTogUC1tYXBwZXIgbWFwcGluZyBtb2RlLiBTZWVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NTk4OiAqICAgICAgICAgICAgICAgICAgICAgICAgXFx1MDAyNmVudW0gbXhsODYyeHhfcG1hcHBlcl9tYXBwaW5nX21vZGVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNTk5LSAqIEBwbWFwcGVyX2lkX3ZhbGlkOiBXaGVuIHRydWUsIFAtbWFwcGVyIGlzIHJlLXVzZWQ7IHdoZW4gZmFsc2UsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNjUzLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo2NTQ6c3RydWN0IG14bDg2Mnh4X2JyaWRnZV9wb3J0X2NvbmZpZyB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTY1NS1cXHRfX2xlMTYgYnJpZGdlX3BvcnRfaWQ7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjY1NjpcXHRfX2xlMzIgbWFzazsgLyogZW51bSBteGw4NjJ4eF9icmlkZ2VfcG9ydF9jb25maWdfbWFzayAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC02NTctXFx0X19sZTE2IGJyaWRnZV9pZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC02NjMtXFx0X19sZTE2IGVncmVzc19leHRlbmRlZF92bGFuX2Jsb2NrX3NpemU7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjY2NDpcXHRfX2xlMzIgaW5ncmVzc19tYXJraW5nX21vZGU7IC8qIGVudW0gbXhsODYyeHhfY29sb3JfbWFya2luZ19tb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjY2NTpcXHRfX2xlMzIgZWdyZXNzX3JlbWFya2luZ19tb2RlOyAvKiBlbnVtIG14bDg2Mnh4X2NvbG9yX3JlbWFya2luZ19tb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTY2Ni1cXHR1OCBpbmdyZXNzX21ldGVyaW5nX2VuYWJsZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC02NzItXFx0X19sZTE2IGRlc3Rfc3ViX2lmX2lkX2dyb3VwO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo2NzM6XFx0X19sZTMyIHBtYXBwZXJfbWFwcGluZ19tb2RlOyAvKiBlbnVtIG14bDg2Mnh4X3BtYXBwZXJfbWFwcGluZ19tb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTY3NC1cXHR1OCBwbWFwcGVyX2lkX3ZhbGlkO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo2NzU6XFx0c3RydWN0IG14bDg2Mnh4X3BtYXBwZXIgcG1hcHBlcjtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNjc2LVxcdF9fbGUxNiBicmlkZ2VfcG9ydF9tYXBbOF07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzA5LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3MTA6ICogc3RydWN0IG14bDg2Mnh4X2NmZyAtICBHbG9iYWwgU3dpdGNoIGNvbmZpZ3VyYXRpb24gQXR0cmlidXRlc1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3MTE6ICogQG1hY190YWJsZV9hZ2VfdGltZXI6IFNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9hZ2VfdGltZXJcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzEyLSAqIEBhZ2VfdGltZXI6IEN1c3RvbSBNQUMgdGFibGUgYWdpbmcgdGltZXIgaW4gc2Vjb25kc1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTcyMi0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NzIzOnN0cnVjdCBteGw4NjJ4eF9jZmcge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3MjQ6XFx0X19sZTMyIG1hY190YWJsZV9hZ2VfdGltZXI7IC8qIGVudW0gbXhsODYyeHhfYWdlX3RpbWVyICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTcyNS1cXHRfX2xlMzIgYWdlX3RpbWVyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTczNC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NzM1OiAqIGVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl9maWx0ZXJfdHlwZSAtIEV4dGVuZGVkIFZMQU4gZmlsdGVyIHRhZyB0eXBlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTczNi0gKiBATVhMODYyWFhfRVhURU5ERURWTEFOX0ZJTFRFUl9UWVBFX05PUk1BTDogTm9ybWFsIHRhZ2dlZFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc0MC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NzQxOmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl9maWx0ZXJfdHlwZSB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc0Mi1cXHRNWEw4NjJYWF9FWFRFTkRFRFZMQU5fRklMVEVSX1RZUEVfTk9STUFMID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03NDgtLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjc0OTogKiBlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX3RwaWQgLSBFeHRlbmRlZCBWTEFOIGZpbHRlciBUUElEXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc1MC0gKiBATVhMODYyWFhfRVhURU5ERURWTEFOX0ZJTFRFUl9UUElEX05PX0ZJTFRFUjogTm8gVFBJRCBmaWx0ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03NTMtICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjc1NDplbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX3RwaWQge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03NTUtXFx0TVhMODYyWFhfRVhURU5ERURWTEFOX0ZJTFRFUl9UUElEX05PX0ZJTFRFUiA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzYwLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3NjE6ICogZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX2ZpbHRlcl9kZWkgLSBFeHRlbmRlZCBWTEFOIGZpbHRlciBERUlcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzYyLSAqIEBNWEw4NjJYWF9FWFRFTkRFRFZMQU5fRklMVEVSX0RFSV9OT19GSUxURVI6IE5vIERFSSBmaWx0ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03NjUtICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjc2NjplbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX2RlaSB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc2Ny1cXHRNWEw4NjJYWF9FWFRFTkRFRFZMQU5fRklMVEVSX0RFSV9OT19GSUxURVIgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc3Mi0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6NzczOiAqIGVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfcmVtb3ZlX3RhZyAtIFRhZyByZW1vdmFsIGFjdGlvblxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03NzQtICogQE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfTk9UX1JFTU9WRV9UQUc6IERvIG5vdCByZW1vdmUgdGFnXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzc4LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo3Nzk6ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF9yZW1vdmVfdGFnIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzgwLVxcdE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfTk9UX1JFTU9WRV9UQUcgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTc4Ni0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6Nzg3OiAqIGVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfcHJpb3JpdHkgLSBUcmVhdG1lbnQgcHJpb3JpdHkgbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03ODgtICogQE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfUFJJT1JJVFlfVkFMOiBVc2UgZXhwbGljaXQgdmFsdWVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC03OTItICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjc5MzplbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fdHJlYXRtZW50X3ByaW9yaXR5IHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtNzk0LVxcdE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfUFJJT1JJVFlfVkFMID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04MDAtLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjgwMTogKiBlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fdHJlYXRtZW50X3ZpZCAtIFRyZWF0bWVudCBWSUQgbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04MDItICogQE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfVklEX1ZBTDogVXNlIGV4cGxpY2l0IFZJRCB2YWx1ZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgwNS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODA2OmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfdmlkIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODA3LVxcdE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfVklEX1ZBTCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODEyLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4MTM6ICogZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF90cGlkIC0gVHJlYXRtZW50IFRQSUQgbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04MTQtICogQE1YTDg2MlhYX0VYVEVOREVEVkxBTl9UUkVBVE1FTlRfSU5ORVJfVFBJRDogQ29weSBmcm9tIGlubmVyIHRhZ1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgxOC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODE5OmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfdHBpZCB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgyMC1cXHRNWEw4NjJYWF9FWFRFTkRFRFZMQU5fVFJFQVRNRU5UX0lOTkVSX1RQSUQgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgyNi0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODI3OiAqIGVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfZGVpIC0gVHJlYXRtZW50IERFSSBtb2RlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgyOC0gKiBATVhMODYyWFhfRVhURU5ERURWTEFOX1RSRUFUTUVOVF9JTk5FUl9ERUk6IENvcHkgZnJvbSBpbm5lciB0YWdcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04MzItICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjgzMzplbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fdHJlYXRtZW50X2RlaSB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTgzNC1cXHRNWEw4NjJYWF9FWFRFTkRFRFZMQU5fVFJFQVRNRU5UX0lOTkVSX0RFSSA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODQwLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4NDE6ICogZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuXzRfdHBpZF9tb2RlIC0gNC1UUElEIG1vZGUgc2VsZWN0b3JcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODQyLSAqIEBNWEw4NjJYWF9FWFRFTkRFRFZMQU5fVFBJRF9WVEVUWVBFXzE6IFZMQU4gVFBJRCB0eXBlIDFcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04NDYtICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjg0NzplbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fNF90cGlkX21vZGUge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04NDgtXFx0TVhMODYyWFhfRVhURU5ERURWTEFOX1RQSURfVlRFVFlQRV8xID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04NTQtLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjg1NTogKiBlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX2V0aGVydHlwZSAtIEZpbHRlciBFdGhlclR5cGUgbWF0Y2hcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODU2LSAqIEBNWEw4NjJYWF9FWFRFTkRFRFZMQU5fRklMVEVSX0VUSEVSVFlQRV9OT19GSUxURVI6IE5vIGZpbHRlclxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg2NC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODY1OmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl9maWx0ZXJfZXRoZXJ0eXBlIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODY2LVxcdE1YTDg2MlhYX0VYVEVOREVEVkxBTl9GSUxURVJfRVRIRVJUWVBFX05PX0ZJTFRFUiA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODc2LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4Nzc6ICogc3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9maWx0ZXJfdmxhbiAtIFBlci10YWcgZmlsdGVyIGluIEV4dGVuZGVkIFZMQU5cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODc4OiAqIEB0eXBlOiBUYWcgcHJlc2VuY2UvdHlwZSBtYXRjaCAoc2VlIFxcdTAwMjZlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX3R5cGUpXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg3OS0gKiBAcHJpb3JpdHlfZW5hYmxlOiBFbmFibGUgUENQIHZhbHVlIG1hdGNoaW5nXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODgyLSAqIEB2aWRfdmFsOiBWSUQgdmFsdWUgdG8gbWF0Y2hcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODgzOiAqIEB0cGlkOiBUUElEIG1hdGNoIG1vZGUgKHNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX2ZpbHRlcl90cGlkKVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4ODQ6ICogQGRlaTogREVJIG1hdGNoIG1vZGUgKHNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX2ZpbHRlcl9kZWkpXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg4NS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6ODg2OnN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fZmlsdGVyX3ZsYW4ge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC04ODctXFx0X19sZTMyIHR5cGU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtODk2LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo4OTc6ICogc3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9maWx0ZXIgLSBFeHRlbmRlZCBWTEFOIGZpbHRlciBjb25maWd1cmF0aW9uXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg5OC0gKiBAb3JpZ2luYWxfcGFja2V0X2ZpbHRlcl9tb2RlOiBJZiB0cnVlLCBmaWx0ZXIgb24gb3JpZ2luYWwgKHByZS10cmVhdG1lbnQpXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTg5OS0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTAwOiAqIEBmaWx0ZXJfNF90cGlkX21vZGU6IDQtVFBJRCBtb2RlIChzZWUgXFx1MDAyNmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl80X3RwaWRfbW9kZSlcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTAxLSAqIEBvdXRlcl92bGFuOiBPdXRlciBWTEFOIHRhZyBmaWx0ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MDMtICogQGV0aGVyX3R5cGU6IEV0aGVyVHlwZSBmaWx0ZXIgKHNlZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5MDQ6ICogICAgICAgICAgICAgIFxcdTAwMjZlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fZmlsdGVyX2V0aGVydHlwZSlcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTA1LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5MDY6c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9maWx0ZXIge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MDctXFx0dTggb3JpZ2luYWxfcGFja2V0X2ZpbHRlcl9tb2RlO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MDgtXFx0X19sZTMyIGZpbHRlcl80X3RwaWRfbW9kZTtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTA5OlxcdHN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fZmlsdGVyX3ZsYW4gb3V0ZXJfdmxhbjtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTEwOlxcdHN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fZmlsdGVyX3ZsYW4gaW5uZXJfdmxhbjtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTExLVxcdF9fbGUzMiBldGhlcl90eXBlO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTkxNC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTE1OiAqIHN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fdHJlYXRtZW50X3ZsYW4gLSBQZXItdGFnIHRyZWF0bWVudCBpblxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MTYtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVuZGVkIFZMQU5cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTE3LSAqIEBwcmlvcml0eV9tb2RlOiBQcmlvcml0eSBhc3NpZ25tZW50IG1vZGVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTE4OiAqICAgICAgICAgICAgICAgICAoc2VlIFxcdTAwMjZlbnVtIG14bDg2Mnh4X2V4dGVuZGVkX3ZsYW5fdHJlYXRtZW50X3ByaW9yaXR5KVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MTktICogQHByaW9yaXR5X3ZhbDogUHJpb3JpdHkgdmFsdWUgKHdoZW4gbW9kZSBpcyBWQUwpXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTkyMC0gKiBAdmlkX21vZGU6IFZJRCBhc3NpZ25tZW50IG1vZGVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTIxOiAqICAgICAgICAgICAgKHNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF92aWQpXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTkyMi0gKiBAdmlkX3ZhbDogVklEIHZhbHVlICh3aGVuIG1vZGUgaXMgVkFMKVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MjMtICogQHRwaWQ6IFRQSUQgYXNzaWdubWVudCBtb2RlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjkyNDogKiAgICAgICAgKHNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF90cGlkKVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MjUtICogQGRlaTogREVJIGFzc2lnbm1lbnQgbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5MjY6ICogICAgICAgKHNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9leHRlbmRlZF92bGFuX3RyZWF0bWVudF9kZWkpXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTkyNy0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTI4OnN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fdHJlYXRtZW50X3ZsYW4ge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MjktXFx0X19sZTMyIHByaW9yaXR5X21vZGU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTM3LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5Mzg6ICogc3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl90cmVhdG1lbnQgLSBFeHRlbmRlZCBWTEFOIHRyZWF0bWVudFxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05MzktICogQHJlbW92ZV90YWc6IFRhZyByZW1vdmFsIGFjdGlvblxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5NDA6ICogICAgICAgICAgICAgIChzZWUgXFx1MDAyNmVudW0gbXhsODYyeHhfZXh0ZW5kZWRfdmxhbl90cmVhdG1lbnRfcmVtb3ZlX3RhZylcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTQxLSAqIEB0cmVhdG1lbnRfNF90cGlkX21vZGU6IDQtVFBJRCB0cmVhdG1lbnQgbW9kZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTk1OC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTU5OnN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fdHJlYXRtZW50IHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTYwLVxcdF9fbGUzMiByZW1vdmVfdGFnO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTk2Mi1cXHR1OCBhZGRfb3V0ZXJfdmxhbjtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6OTYzOlxcdHN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fdHJlYXRtZW50X3ZsYW4gb3V0ZXJfdmxhbjtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTY0LVxcdHU4IGFkZF9pbm5lcl92bGFuO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5NjU6XFx0c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl90cmVhdG1lbnRfdmxhbiBpbm5lcl92bGFuO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05NjYtXFx0dTggcmVhc3NpZ25fYnJpZGdlX3BvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTgwLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5ODE6ICogc3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9hbGxvYyAtIEV4dGVuZGVkIFZMQU4gYmxvY2sgYWxsb2NhdGlvblxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC05ODItICogQG51bWJlcl9vZl9lbnRyaWVzOiBOdW1iZXIgb2YgZW50cmllcyB0byBhbGxvY2F0ZSAoaW5wdXQpIC8gYWxsb2NhdGVkXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTg4LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5ODk6c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9hbGxvYyB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTk5MC1cXHRfX2xlMTYgbnVtYmVyX29mX2VudHJpZXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTk0LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDo5OTU6ICogc3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9jb25maWcgLSBFeHRlbmRlZCBWTEFOIGVudHJ5IGNvbmZpZ3VyYXRpb25cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtOTk2LSAqIEBleHRlbmRlZF92bGFuX2Jsb2NrX2lkOiBCbG9jayBJRCBmcm9tIGFsbG9jYXRpb25cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDAyLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDAzOnN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fY29uZmlnIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAwNC1cXHRfX2xlMTYgZXh0ZW5kZWRfdmxhbl9ibG9ja19pZDtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAwNS1cXHRfX2xlMTYgZW50cnlfaW5kZXg7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwMDY6XFx0c3RydWN0IG14bDg2Mnh4X2V4dGVuZGVkdmxhbl9maWx0ZXIgZmlsdGVyO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDA3OlxcdHN0cnVjdCBteGw4NjJ4eF9leHRlbmRlZHZsYW5fdHJlYXRtZW50IHRyZWF0bWVudDtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAwOC19IF9fcGFja2VkO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwMTAtLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwMTE6ICogZW51bSBteGw4NjJ4eF92bGFuX2ZpbHRlcl90Y2lfbWFzayAtIFZMQU4gRmlsdGVyIFRDSSBtYXNrXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwMTItICogQE1YTDg2MlhYX1ZMQU5fRklMVEVSX1RDSV9NQVNLX1ZJRDogVENJIG1hc2sgZm9yIFZMQU4gSURcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDE1LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDE2OmVudW0gbXhsODYyeHhfdmxhbl9maWx0ZXJfdGNpX21hc2sge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDE3LVxcdE1YTDg2MlhYX1ZMQU5fRklMVEVSX1RDSV9NQVNLX1ZJRCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAyMi0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTAyMzogKiBzdHJ1Y3QgbXhsODYyeHhfdmxhbmZpbHRlcl9hbGxvYyAtIFZMQU4gRmlsdGVyIGJsb2NrIGFsbG9jYXRpb25cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAyNC0gKiBAbnVtYmVyX29mX2VudHJpZXM6IE51bWJlciBvZiBlbnRyaWVzIHRvIGFsbG9jYXRlIChpbnB1dCkgLyBhbGxvY2F0ZWRcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDM0LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDM1OnN0cnVjdCBteGw4NjJ4eF92bGFuZmlsdGVyX2FsbG9jIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTAzNi1cXHRfX2xlMTYgbnVtYmVyX29mX2VudHJpZXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA0My0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTA0NDogKiBzdHJ1Y3QgbXhsODYyeHhfdmxhbmZpbHRlcl9jb25maWcgLSBWTEFOIEZpbHRlciBlbnRyeSBjb25maWd1cmF0aW9uXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwNDUtICogQHZsYW5fZmlsdGVyX2Jsb2NrX2lkOiBCbG9jayBJRCBmcm9tIGFsbG9jYXRpb25cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDQ3LSAqIEB2bGFuX2ZpbHRlcl9tYXNrOiBUQ0kgZmllbGQocykgdG8gbWF0Y2ggKHNlZVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDQ4OiAqICAgICAgICAgICAgICAgICAgICBcXHUwMDI2ZW51bSBteGw4NjJ4eF92bGFuX2ZpbHRlcl90Y2lfbWFzaylcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA0OS0gKiBAdmFsOiBUQ0kgdmFsdWUocykgdG8gbWF0Y2ggKFZJRCwgUENQLCBvciBmdWxsIFRDSSBkZXBlbmRpbmcgb24gbWFzaylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDU0LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDU1OnN0cnVjdCBteGw4NjJ4eF92bGFuZmlsdGVyX2NvbmZpZyB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwNTYtXFx0X19sZTE2IHZsYW5fZmlsdGVyX2Jsb2NrX2lkO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDU3LVxcdF9fbGUxNiBlbnRyeV9pbmRleDtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTA1ODpcXHRfX2xlMzIgdmxhbl9maWx0ZXJfbWFzazsgLyogZW51bSBteGw4NjJ4eF92bGFuX2ZpbHRlcl90Y2lfbWFzayAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDU5LVxcdF9fbGUzMiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA2My0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTA2NDogKiBlbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ19tYXNrIC0gU3BlY2lhbCB0YWcgdmFsaWQgZmllbGQgaW5kaWNhdG9yIGJpdHNcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA2NS0gKiBATVhMODYyWFhfU1NfU1BfVEFHX01BU0tfUlg6IHZhbGlkIFJYIHNwZWNpYWwgdGFnIG1vZGVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDY5LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMDcwOmVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX21hc2sge1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMDcxLVxcdE1YTDg2MlhYX1NTX1NQX1RBR19NQVNLX1JYID0gQklUKDApLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwNzctLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwNzg6ICogZW51bSBteGw4NjJ4eF9zc19zcF90YWdfcnggLSBSWCBzcGVjaWFsIHRhZyBtb2RlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwNzktICogQE1YTDg2MlhYX1NTX1NQX1RBR19SWF9OT19UQUdfTk9fSU5TRVJUOiBwYWNrZXQgZG9lcyBOT1QgaGF2ZSBzcGVjaWFsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTA4NS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTA4NjplbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ19yeCB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwODctXFx0TVhMODYyWFhfU1NfU1BfVEFHX1JYX05PX1RBR19OT19JTlNFUlQgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwOTItLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjEwOTM6ICogZW51bSBteGw4NjJ4eF9zc19zcF90YWdfdHggLSBUWCBzcGVjaWFsIHRhZyBtb2RlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTEwOTQtICogQE1YTDg2MlhYX1NTX1NQX1RBR19UWF9OT19UQUdfTk9fUkVNT1ZFOiBwYWNrZXQgZG9lcyBOT1QgaGF2ZSBzcGVjaWFsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTEwMi0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTEwMzplbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ190eCB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMDQtXFx0TVhMODYyWFhfU1NfU1BfVEFHX1RYX05PX1RBR19OT19SRU1PVkUgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMTAtLyoqXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjExMTE6ICogZW51bSBteGw4NjJ4eF9zc19zcF90YWdfcnhfcGVuIC0gUlggc3BlY2lhbCB0YWcgaW5mbyBvdmVyIHByZWFtYmxlXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMTItICogQE1YTDg2MlhYX1NTX1NQX1RBR19SWF9QRU5fQUxMXzA6IHNwZWNpYWwgdGFnIGluZm8gaW5zZXJ0ZWQgZnJvbSBieXRlIDJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMTIyLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTIzOmVudW0gbXhsODYyeHhfc3Nfc3BfdGFnX3J4X3BlbiB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMjQtXFx0TVhMODYyWFhfU1NfU1BfVEFHX1JYX1BFTl9BTExfMCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTEzMC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTEzMTogKiBzdHJ1Y3QgbXhsODYyeHhfc3Nfc3BfdGFnIC0gU3BlY2lhbCB0YWcgcG9ydCBzZXR0aW5nc1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaC0xMTMyLSAqIEBwaWQ6IHBvcnQgSUQgKDF+MTYpXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjExMzM6ICogQG1hc2s6IFNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9zc19zcF90YWdfbWFza1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTM0OiAqIEByeDogU2VlIFxcdTAwMjZlbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ19yeFxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTM1OiAqIEB0eDogU2VlIFxcdTAwMjZlbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ190eFxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTM2OiAqIEByeF9wZW46IFNlZSBcXHUwMDI2ZW51bSBteGw4NjJ4eF9zc19zcF90YWdfcnhfcGVuXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExMzctICogQHR4X3BlbjogVFggc3BlY2lhbCB0YWcgaW5mbyBvdmVyIHByZWFtYmxlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTE0MC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTE0MTpzdHJ1Y3QgbXhsODYyeHhfc3Nfc3BfdGFnIHtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTE0Mi1cXHR1OCBwaWQ7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oOjExNDM6XFx0dTggbWFzazsgLyogZW51bSBteGw4NjJ4eF9zc19zcF90YWdfbWFzayAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTQ0OlxcdHU4IHJ4OyAvKiBlbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ19yeCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTQ1OlxcdHU4IHR4OyAvKiBlbnVtIG14bDg2Mnh4X3NzX3NwX3RhZ190eCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1hcGkuaDoxMTQ2OlxcdHU4IHJ4X3BlbjsgLyogZW51bSBteGw4NjJ4eF9zc19zcF90YWdfcnhfcGVuICovXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LWFwaS5oLTExNDctXFx0dTggdHhfcGVuOyAvKiBib29sZWFuICovXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTE1MC0vKipcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmg6MTE1MTogKiBlbnVtIG14bDg2Mnh4X2xvZ2ljYWxfcG9ydF9tb2RlIC0gTG9naWNhbCBwb3J0IG1vZGVcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtYXBpLmgtMTE1Mi0gKiBATVhMODYyWFhfTE9HSUNBTF9QT1JUXzhCSVRfV0xBTjogV0xBTiB3aXRoIDgtYml0IHN0YXRpb24gSURcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNDo1NzoyNi42NTE0NDAyNDNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTA4NTQwNDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVhMODYyWFggU3dpdGNoIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguY2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGlzIGEgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVyLCB3aGljaCBpdCBhbG1vc3QgY2VydGFpbmx5IGlzLiBUaGUgbmFtZSBgbXhsODYyeHhgIHN0cm9uZ2x5IHN1Z2dlc3RzIGl0J3MgYSBNYXhMaW5lYXIgc3dpdGNoIG9mIHNvbWUgc29ydC4gVGhlIHJlYWwgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVyZSBpcyBhbnkgcG9zc2liaWxpdHksIGV2ZW4gYSBzbGltIG9uZSwgb2YgZW11bGF0aW5nIHRoaXMgZHJpdmVyIGZvciB0ZXN0aW5nIG9yIGRldmVsb3BtZW50IHB1cnBvc2VzP1xuXG5UbyBhbnN3ZXIgdGhhdCBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMuIEVpdGhlciBgZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L0tjb25maWdgIGRpcmVjdGx5IG9yIHRoZSBicm9hZGVyIGBkcml2ZXJzL25ldC9kc2EvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgaGludHMgYWJvdXQgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IGdpdmUgbWUgc29tZSBjbHVlcy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGRyaXZlciBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGFuZCBpZiB0aGVyZSdzIGFueSBmbGV4aWJpbGl0eSBpbiBob3cgaXQncyBidWlsdCBvciBjb25maWd1cmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDc2NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNDo1NzozMC41NTk5ODI4NzVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODczNTI2NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9EU0FfTVhMODYyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvS2NvbmZpZzoyOmNvbmZpZyBORVRfRFNBX01YTDg2MlxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1heExpbmVhciBNeEw4NjJ4eFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDQ6NTc6MzAuNjQ3Mzc2NjI4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQxODEzMDc1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGBkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvS2NvbmZpZ2AgZmlsZSwgdGhpbmtpbmcgbGlrZSBhIHNlYXNvbmVkIGVtYmVkZGVkIHN5c3RlbXMgZGV2ZWxvcGVyOlxuXG4qKkRlbHZpbmcgaW50byB0aGUgTVhMODYyWFggS2NvbmZpZyoqXG5cbkFscmlnaHQsIGxldCdzIGRpc3NlY3QgdGhpcyBLY29uZmlnIGZpbGUgZm9yIHRoZSBNYXJ2ZWxsIE1YTDg2MlhYIERTQSBkcml2ZXIuIEltbWVkaWF0ZWx5LCBJJ20gbG9va2luZyBmb3IgdGhlIGNvcmUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBNeSBpbml0aWFsIHRob3VnaHRzIGFyZSBnZWFyZWQgdG93YXJkIHVuZGVyc3RhbmRpbmcgd2hhdCBmZWF0dXJlcyBhcmUgY29uZmlndXJhYmxlIGFuZCBob3cgdGhleSB0aWUgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGdldCBhIGdyaXAgb24gdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLCB3aGljaCBpcyBrZXkuXG5cbkkgc2VlIHRoZSBgY29uZmlnIE1YTDg2MlhYYCBvcHRpb24g4oCTIHRoYXQncyB0aGUgcHJpbWFyeSBzd2l0Y2gsIEkgYXNzdW1lLiBJIG5lZWQgdG8gY2hlY2sgaXRzIGRlcGVuZGVuY2llcy4gTGlrZWx5LCB0aGlzIHdpbGwgZGVwZW5kIG9uIHNvbWUgYmFzZSBuZXR3b3JraW5nIG9yIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgY29uZmlndXJhdGlvbiBvcHRpb25zLiBMZXQgbWUgcXVpY2tseSBzY2FuIGZvciB0aG9zZS4uLiBBaCwgYE5FVF9EU0FgIHNlZW1zIGxpa2UgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQuIEdvb2QsIHRoYXQgbWFrZXMgc2Vuc2UuIEkgd291bGQgZXhwZWN0IHNvbWUgZGVwZW5kZW5jaWVzIG9uIE1ESU8gYXMgd2VsbC4gQW5kIHByb2JhYmx5IHNvbWUgQVJNLXNwZWNpZmljIHRoaW5ncyBzaW5jZSB0aGlzIGlzIGFuIGVtYmVkZGVkIHNvbHV0aW9uLlxuXG5UaGUgYHRyaXN0YXRlYCBuYXR1cmUgb2YgaXQgaXMgc3RhbmRhcmQuIFRoZSB1c2VyIHdpbGwgYmUgYWJsZSB0byBlaXRoZXIgYnVpbGQgaXQgaW50byB0aGUga2VybmVsLCBhcyBhIG1vZHVsZSwgb3Igbm90IGluY2x1ZGUgaXQgYXQgYWxsLCBiYXNlZCBvbiB0aGVpciBzZXR1cC5cblxuVGhlbiwgSSdsbCBhbmFseXplIHRoZSBpbmRpdmlkdWFsIHN1Yi1vcHRpb25zIHdpdGhpbiBgTVhMODYyWFhgLiBJJ20gZ3Vlc3NpbmcgdGhlcmUgd2lsbCBiZSB0b2dnbGVzIGZvciBkaWZmZXJlbnQgUEhZIG1vZGVzLCBtYW5hZ2VtZW50IGludGVyZmFjZXMgKE1ESU8/KSwgYW5kIHBlcmhhcHMgaGFyZHdhcmUgZmVhdHVyZXMgc3BlY2lmaWMgdG8gZGlmZmVyZW50IE1YTDg2MlhYIHJldmlzaW9ucywgb3IgZXZlbiBmZWF0dXJlcyBsaWtlIFZMQU4gc3VwcG9ydC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgbW9zdCBjb21tb24gdXNlIGNhc2VzLCBlc3BlY2lhbGx5IGlmIHRoZXkgYXJlIHNlbnNpYmxlIGRlZmF1bHRzIHRoYXQgYSB1c2VyIHdpbGwgbm90IG5lZWQgdG8gY2hhbmdlLlxuXG5UaGUgcHJlc2VuY2Ugb2YgYGhlbHBgIHRleHQgaXMgY3J1Y2lhbC4gVGhhdCdzIHdoZXJlIEkgd2lsbCBmaW5kIHRoZSByZWFsIG1lYXQgb2YgdGhlIGNvbmZpZ3VyYXRpb24sIHRoZSBleHBsYW5hdGlvbiBvZiBlYWNoIG9wdGlvbiwgd2hhdCBpdCBkb2VzLCBhbmQgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlIGRlc2NyaXB0aW9ucyBhcmUgY2xlYXIgYW5kIGFjY3VyYXRlLiBJcyB0aGVyZSBhbnkgY3Jvc3MtcmVmZXJlbmNpbmcgdG8gdGhlIGRldmljZSBkb2N1bWVudGF0aW9uIG9yIGRhdGFzaGVldHM/IFRoYXQgd291bGQgYmUgYSBodWdlIHBsdXMuXG5cbkkgYW0gYWxzbyBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzLiBEb2VzIG9uZSBvcHRpb24gZXhjbHVkZSBhbm90aGVyPyBPciBhcmUgdGhlcmUgaW50ZXJhY3Rpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gSSBuZWVkIHRvIGFuYWx5emUgaG93IHRoaXMgS2NvbmZpZyBmaWxlIGludGVncmF0ZXMgd2l0aCBvdGhlciBjb25maWd1cmF0aW9ucyBpbiB0aGUgYGRyaXZlcnMvbmV0L2RzYWAgc3VidHJlZSBhbmQgcG9zc2libHkgZXZlbiB0aGUgYnJvYWRlciBuZXR3b3JraW5nIHN0YWNrLiBJIG5lZWQgdG8gZW5zdXJlIGl0J3MgY2xlYW4gYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBzdXJwcmlzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMjM3LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDQ6NTc6MzUuMDY1NTA5MTgyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUyNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgTkVUX0RTQV9NWEw4NjJcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXhMaW5lYXIgTXhMODYyeHhcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0FcXG4gICA1OlxcdFxcdHNlbGVjdCBDUkMxNlxcbiAgIDY6XFx0XFx0c2VsZWN0IE5FVF9EU0FfVEFHX01YTF84NjJYWFxcbiAgIDc6XFx0XFx0aGVscFxcbiAgIDg6XFx0XFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIE1heExpbmVhciBNeEw4NjJ4eCBzd2l0Y2ggZmFtaWx5LlxcbiAgIDk6XFx0XFx0ICBUaGVzZSBzd2l0Y2hlcyBoYXZlIHR3byAxMEdFIFNlckRlcyBpbnRlcmZhY2VzLCBvbmUgdHlwaWNhbGx5XFxuICAxMDpcXHRcXHQgIHVzZWQgYXMgQ1BVIHBvcnQuXFxuICAxMTpcXHRcXHQgICAtIE14TDg2MjgyIGhhcyBlaWdodCAyLjUgR2lnYWJpdCBQSFlzXFxuICAxMjpcXHRcXHQgICAtIE14TDg2MjUyIGhhcyBmaXZlIDIuNSBHaWdhYml0IFBIWXNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDQ6NTc6MzUuMDY1NTY1ODcxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc0NTMzNDM5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEhhcmR3YXJlIFN3aXRjaCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRyaXZlci4gSXQncyBhIGhhcmR3YXJlIHN3aXRjaCBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhlIE1heExpbmVhciBNeEw4NjJ4eC4gVGhlIGZpcnN0IHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIGNhbiBJIGV2ZW4gZ2V0IGF0IHRoaXMgdGhpbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gTGlrZWx5IG5vdCwgc2luY2UgaXQncyBhICpwaHlzaWNhbCogaGFyZHdhcmUgZHJpdmVyLiBVbmxlc3MgdGhlcmUncyBzb21lIGtpbmQgb2YgZW11bGF0b3IgZm9yIHRoZSBNeEw4NjJ4eCwgYW5kIHRoYXQncyBwcmV0dHkgaW1wcm9iYWJsZS5cblxuVGhlbiBJIHJlbWVtYmVyIHNvbWV0aGluZyBpbXBvcnRhbnQ6IHN5emJvdCwgdGhlIGF1dG9tYXRlZCBrZXJuZWwgZnV6emVyIEknbSB1c2luZywgKmRvZXNuJ3QqIGhhdmUgdGhhdCBzcGVjaWZpYyBoYXJkd2FyZS4gVGhpcyBkcml2ZXIgaXMgb2ZmIHRoZSB0YWJsZSBmb3Igc3l6a2FsbGVyLlxuXG5IbW0sIGJ1dCBpcyB0aGVyZSAqYW55KiB3YXkgdG8gZW11bGF0ZSBpdD8gUGVyaGFwcyB0aGVyZSdzIGEgd29ya2Fyb3VuZC4gU2luY2UgaXQncyBhbiBNRElPIGRldmljZSwgSSB0aGluayB0aGVyZSBtYXkgYmUgYW4gb3B0aW9uLCBidXQgdGhlIGRldmljZSBuZWVkcyB0byByZWdpc3RlciB3aXRoIE1ESU8uIE5vdywgdGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguY2AgdG8gc2VlIGhvdyBpdCBwZXJmb3JtcyBpdHMgcHJvYmUsIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBob29rcyBJIGNhbiB1c2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMDMxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDQ6NTc6MzkuODEwOTAyOTMxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODc5OTA5MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXhsODYyeHhfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYz0yMDkwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgbXhsODYyeHhfc3dpdGNoX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTIxMjUtXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmM6MjEyNjpzdGF0aWMgaW50IG14bDg2Mnh4X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yMTI3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jPTIyMzU9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBteGw4NjJ4eF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmM6MjIzNjpcXHQucHJvYmUgID0gbXhsODYyeHhfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjIzNy1cXHQucmVtb3ZlID0gbXhsODYyeHhfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNDo1Nzo0MC4wOTg4OTg3OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDk3NzAyOTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk1ESU8gRHJpdmVyIEZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGFuIE1ESU8gZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIgZXZlbiB0b3VjaCBNRElPIGRldmljZXM/IFR5cGljYWxseSwgdGhleSdyZSBwcm9iZWQgdGhyb3VnaCBkZXZpY2UgdHJlZSBvciBBQ1BJLCBub3Qgc29tZXRoaW5nIHN5emthbGxlciBpcyByZWFkaWx5IHNldCB1cCB0byBoYW5kbGUsIHVubGVzcyB0aGVyZSdzIGEgc3BlY2lmaWMgcHNldWRvLWRldmljZSBvciBhIHN5emthbGxlci1jb250cm9sbGVkIHZpcnR1YWwgYnVzLiBJICpkb24ndCogdGhpbmsgc3l6a2FsbGVyIGNhbiBkaXJlY3RseSBpbmplY3QgTURJTyBkZXZpY2VzLCBhbmQgZXZlbiBpZiBpdCBjb3VsZCwgd2UnZCBiZSB0YWxraW5nIGFib3V0IG5lZWRpbmcgdGhlICpzcGVjaWZpYyogaGFyZHdhcmUgb3IgYSBkZXRhaWxlZCBzb2Z0d2FyZSBlbXVsYXRvci4gQW5kIHNpbmNlIHRoaXMgaXMgYSAqcGh5c2ljYWwqIGhhcmR3YXJlIGRyaXZlciwgaXQncyBhIG5vbi1zdGFydGVyIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBNeSBndXQgc2F5cywgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIi5cblxuTGV0IG1lIGRvdWJsZSBjaGVjay4uLiBhcmUgdGhlcmUgYW55IE5ldGxpbmsgaW50ZXJmYWNlcyB0aGF0IG1pZ2h0IHByb3ZpZGUgYSBiYWNrZG9vcj8gQWxyaWdodCwgdGhlIHBhdGNoIGFkZHMgYG14bDg2Mnh4X2RldmxpbmtfaW5mb19nZXRgIGFuZCBgbXhsODYyeHhfZGV2bGlua19mbGFzaF91cGRhdGVgLCB3aGljaCBhcmUgZGV2bGluayBvcGVyYXRpb25zLiBUaG9zZSBhcmUgcmVnaXN0ZXJlZCB3aGVuIHRoZSBEU0Egc3dpdGNoIGlzIHJlZ2lzdGVyZWQsIGFuZCB0aGUgRFNBIHN3aXRjaCBpdHNlbGYgaXMgcmVnaXN0ZXJlZCBpbiBgbXhsODYyeHhfcHJvYmVgLiBTbyBpZiB0aGUgZGV2aWNlIGRvZXNuJ3QgcHJvYmUsIHRoZXNlIGRldmxpbmsgb3BzICp3b24ndCogYmUgcmVnaXN0ZXJlZCwgYW5kIHRoYXQgY29kZSBpcyB1bnJlYWNoYWJsZS5cblxuT2theSwgaXMgdGhlcmUgKmFueSogb3RoZXIgY29uY2VpdmFibGUgcGF0aCB0byByZWFjaCB0aGlzIGNvZGU/IE5vcGUsIGl0J3MgYSBwdXJlIGhhcmR3YXJlIGRyaXZlci5cblxuV2FpdC4uLiBsZXQgbWUgcmUtcmVhZCB0aGUgcHJvbXB0LiBJdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gQW5kIHRoaXMgaXMgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgc3dpdGNoIChNYXhMaW5lYXIgTXhMODYyeHgpIGFuZCB0aGVyZSdzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciBpdC4gVGhpcyAqZGVmaW5pdGVseSogZmFsbHMgdW5kZXIgdGhhdCBjYXRlZ29yeS5cblxuQWxyaWdodCwgSSdtIGNvbmZpZGVudC4gSSB3aWxsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI3NjEsIk91dHB1dFRva2VucyI6ODUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDQ6NTc6NDYuNTk2NjA0MjE5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE0ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIChNYXhMaW5lYXIgTXhMODYyeHggc3dpdGNoKSB3aGljaCBpcyBhbiBNRElPIGRldmljZS4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0b3IgZm9yIHRoaXMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgZHJpdmVyIGZvciBwaHlzaWNhbCBoYXJkd2FyZSAoTWF4TGluZWFyIE14TDg2Mnh4IHN3aXRjaCkgd2hpY2ggaXMgYW4gTURJTyBkZXZpY2UuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow8vntn[1] Phase: Running StartedAt: 2026-07-14 04:57:58 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8vntn[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-14 04:57:58 +0000 UTC FinishedAt: 2026-07-14 04:58:04 +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,}