Name: series-workflow2nrtq Phase: Failed StartedAt: 2026-09-10 22:18:00 +0000 UTC FinishedAt: 2026-09-10 22:48:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2nrtq[0] Phase: Succeeded StartedAt: 2026-09-10 22:18:00 +0000 UTC FinishedAt: 2026-09-10 22:47:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2nrtq[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 22:18:00 +0000 UTC FinishedAt: 2026-09-10 22:47:49 +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+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgZnVuY3Rpb24gbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jIGV4cGxpY2l0bHkgY2hlY2tzIGBpZiAoIWlzX210NzYxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHJldHVybiAtRU9QTk9UU1VQUDtgIGJlZm9yZSBleGVjdXRpbmcgYW55IG1vZGlmaWVkIGxvZ2ljLiBUaGUgaXNfbXQ3NjE1IGNoZWNrIG9ubHkgc3VjY2VlZHMgZm9yIE1UNzYxNSBhbmQgTVQ3NjExIGRldmljZXMsIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIHdpcmVsZXNzIE5JQ3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBVU0IvU0RJTyB2YXJpYW50cyAoc3VjaCBhcyBNVDc2NjMpIGJhaWwgb3V0IGltbWVkaWF0ZWx5IGF0IHRoZSBpc19tdDc2MTUgY2hlY2sgYW5kIGNhbm5vdCBleGVjdXRlIHRoZSBtb2RpZmllZCBjb2RlLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmZDA5NTk2MTlhZTgzMjFmNGIyMGIzMDQzMjRiMTdjYzFmYTMwYTM2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMjI6NDY6MDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jXG5pbmRleCA0MmUxMWJhMTIwNmVlLi4wMmU1MWIyZDQyZWQ4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmNcbkBAIC01NDIsOCAmIzQzOzU0MiwxMCBAQCBpbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbiBcbiBcdG10NzYxNV9jYXBfZGJkY19lbmFibGUoZGV2KTtcbiBcdG1waHkgPSBtdDc2X2FsbG9jX3BoeShcdTAwMjZkZXYtXHUwMDNlbXQ3Niwgc2l6ZW9mKCpwaHkpLCBcdTAwMjZtdDc2MTVfb3BzLCBNVF9CQU5EMSk7XG4tXHRpZiAoIW1waHkpXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdGlmICghbXBoeSkge1xuJiM0MztcdFx0cmV0ID0gLUVOT01FTTtcbiYjNDM7XHRcdGdvdG8gZXJyb3I7XG4mIzQzO1x0fVxuIFxuIFx0cGh5ID0gbXBoeS1cdTAwM2Vwcml2O1xuIFx0cGh5LVx1MDAzZWRldiA9IGRldjtcbkBAIC01NzMsNyAmIzQzOzU3NSw3IEBAIGludCBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuIFxuIFx0cmV0ID0gbXQ3Nl9lZXByb21fb3ZlcnJpZGUobXBoeSk7XG4gXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0Z290byBlcnJvcl9mcmVlX2h3O1xuIFxuIFx0Lyogc2Vjb25kIHBoeSBjYW4gb25seSBoYW5kbGUgNSBHSHogKi9cbiBcdG1waHktXHUwMDNlY2FwLmhhc181Z2h6ID0gdHJ1ZTtcbkBAIC01OTEsNyAmIzQzOzU5MywxNCBAQCBpbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbiBcdHJldCA9IG10NzZfcmVnaXN0ZXJfcGh5KG1waHksIHRydWUsIG10NzZfcmF0ZXMsXG4gXHRcdFx0XHRBUlJBWV9TSVpFKG10NzZfcmF0ZXMpKTtcbiBcdGlmIChyZXQpXG4tXHRcdGllZWU4MDIxMV9mcmVlX2h3KG1waHktXHUwMDNlaHcpO1xuJiM0MztcdFx0Z290byBlcnJvcl9mcmVlX2h3O1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO2Vycm9yX2ZyZWVfaHc6XG4mIzQzO1x0aWVlZTgwMjExX2ZyZWVfaHcobXBoeS1cdTAwM2Vodyk7XG4mIzQzO2Vycm9yOlxuJiM0MztcdG10NzYxNV9jYXBfZGJkY19kaXNhYmxlKGRldik7XG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo0NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBmdW5jdGlvbiBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMgZXhwbGljaXRseSBjaGVja3MgYGlmICghaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSkgcmV0dXJuIC1FT1BOT1RTVVBQO2AgYmVmb3JlIGV4ZWN1dGluZyBhbnkgbW9kaWZpZWQgbG9naWMuIFRoZSBpc19tdDc2MTUgY2hlY2sgb25seSBzdWNjZWVkcyBmb3IgTVQ3NjE1IGFuZCBNVDc2MTEgZGV2aWNlcywgd2hpY2ggYXJlIHBoeXNpY2FsIFBDSWUgd2lyZWxlc3MgTklDcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMuIFVTQi9TRElPIHZhcmlhbnRzIChzdWNoIGFzIE1UNzY2MykgYmFpbCBvdXQgaW1tZWRpYXRlbHkgYXQgdGhlIGlzX210NzYxNSBjaGVjayBhbmQgY2Fubm90IGV4ZWN1dGUgdGhlIG1vZGlmaWVkIGNvZGUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZkMDk1OTYxOWFlODMyMWY0YjIwYjMwNDMyNGIxN2NjMWZhMzBhMzYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IFNlcCAxMCAyMjo0NjowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYwppbmRleCA0MmUxMWJhMTIwNmVlLi4wMmU1MWIyZDQyZWQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jCkBAIC01NDIsOCAmIzQzOzU0MiwxMCBAQCBpbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldikKIAogCW10NzYxNV9jYXBfZGJkY19lbmFibGUoZGV2KTsKIAltcGh5ID0gbXQ3Nl9hbGxvY19waHkoJmFtcDtkZXYtJmd0O210NzYsIHNpemVvZigqcGh5KSwgJmFtcDttdDc2MTVfb3BzLCBNVF9CQU5EMSk7Ci0JaWYgKCFtcGh5KQotCQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJaWYgKCFtcGh5KSB7CiYjNDM7CQlyZXQgPSAtRU5PTUVNOwomIzQzOwkJZ290byBlcnJvcjsKJiM0MzsJfQogCiAJcGh5ID0gbXBoeS0mZ3Q7cHJpdjsKIAlwaHktJmd0O2RldiA9IGRldjsKQEAgLTU3Myw3ICYjNDM7NTc1LDcgQEAgaW50IG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpCiAKIAlyZXQgPSBtdDc2X2VlcHJvbV9vdmVycmlkZShtcGh5KTsKIAlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwomIzQzOwkJZ290byBlcnJvcl9mcmVlX2h3OwogCiAJLyogc2Vjb25kIHBoeSBjYW4gb25seSBoYW5kbGUgNSBHSHogKi8KIAltcGh5LSZndDtjYXAuaGFzXzVnaHogPSB0cnVlOwpAQCAtNTkxLDcgJiM0Mzs1OTMsMTQgQEAgaW50IG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpCiAJcmV0ID0gbXQ3Nl9yZWdpc3Rlcl9waHkobXBoeSwgdHJ1ZSwgbXQ3Nl9yYXRlcywKIAkJCQlBUlJBWV9TSVpFKG10NzZfcmF0ZXMpKTsKIAlpZiAocmV0KQotCQlpZWVlODAyMTFfZnJlZV9odyhtcGh5LSZndDtodyk7CiYjNDM7CQlnb3RvIGVycm9yX2ZyZWVfaHc7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzOwomIzQzO2Vycm9yX2ZyZWVfaHc6CiYjNDM7CWllZWU4MDIxMV9mcmVlX2h3KG1waHktJmd0O2h3KTsKJiM0MztlcnJvcjoKJiM0MzsJbXQ3NjE1X2NhcF9kYmRjX2Rpc2FibGUoZGV2KTsKIAogCXJldHVybiByZXQ7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNjEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQ6IGlzIHRoaXMgc29tZXRoaW5nIHRoYXQmIzM5O3MgZ29pbmcgdG8gd29yayBzZWFtbGVzc2x5IGluIG15IHR5cGljYWwgdmlydHVhbGl6ZWQgc2V0dXBzIOKAkyB0aGluayBRRU1VIG9yIEdDRSDigJMgb3IgYXJlIHdlIGRlYWxpbmcgd2l0aCBhIGRyaXZlciB0aGF0JiMzOTtzIGZ1bmRhbWVudGFsbHkgdGllZCB0byBwaHlzaWNhbCBoYXJkd2FyZT8gSSBuZWVkIHRvIGtub3cgd2hlcmUgSSBjYW4gYWN0dWFsbHkgdGVzdCB0aGlzLgoKVGhlIHBhdGNoIGl0c2VsZiB0b3VjaGVzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAgZnVuY3Rpb24uIFRoYXQgZ2l2ZXMgbWUgYSBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gZ2V0IGEgYnJvYWRlciBwaWN0dXJlLiBJJiMzOTttIGdvaW5nIHRvIHNlYXJjaCB0aGUgY29kZWJhc2UgZm9yICYjMzQ7bXQ3NjE1JiMzNDsgdG8gZmlndXJlIG91dCB3aGF0IHR5cGUgb2YgYmVhc3QgdGhpcyBkcml2ZXIgYWN0dWFsbHkgaXMuIElzIGl0IFBDST8gVVNCPyBQbGF0Zm9ybS1zcGVjaWZpYywgbGlrZSBhbiBTb0MgaW50ZWdyYXRpb24/IEtub3dpbmcgdGhhdCB3aWxsIHNpZ25pZmljYW50bHkgaW1wYWN0IG15IHVuZGVyc3RhbmRpbmcgb2YgcG90ZW50aWFsIGRlcGVuZGVuY2llcywgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLCBhbmQgdGVzdGluZyBwcm9jZWR1cmVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNvZGViYXNlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NjE1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDQ2NSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTQ2PXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDc6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy00OC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9NDM9b2JqLSQoQ09ORklHX01UNzYwM0UpICYjNDM7PSBtdDc2MDMvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQ0Om9iai0kKENPTkZJR19NVDc2MTVfQ09NTU9OKSAmIzQzOz0gbXQ3NjE1L1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS00NS1vYmotJChDT05GSUdfTVQ3OTE1RSkgJiM0Mzs9IG10NzkxNS9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9NYWtlZmlsZS0yLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTVQ3NjE1X0NPTU1PTikgJiM0Mzs9IG10NzYxNS1jb21tb24ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTVQ3NjE1RSkgJiM0Mzs9IG10NzYxNWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGUtNS1vYmotJChDT05GSUdfTVQ3NjYzX1VTQl9TRElPX0NPTU1PTikgJiM0Mzs9IG10NzY2My11c2Itc2Rpby1jb21tb24ub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlPTk9Q0ZMQUdTX3RyYWNlLm8gOj0gLUkkKHNyYylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU6MTE6bXQ3NjE1LWNvbW1vbi15IDo9IG1haW4ubyBpbml0Lm8gbWN1Lm8gZWVwcm9tLm8gbWFjLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlLTEyLVx0XHQgICBkZWJ1Z2ZzLm8gdHJhY2Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU6MTM6bXQ3NjE1LWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGUtMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9NYWtlZmlsZToxNTptdDc2MTVlLXkgOj0gcGNpLm8gcGNpX2luaXQubyBkbWEubyBwY2lfbWFjLm8gbW1pby5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9NYWtlZmlsZToxNjptdDc2MTVlLSQoQ09ORklHX01UNzYyMl9XTUFDKSAmIzQzOz0gc29jLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlLTE3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjM6I2luY2x1ZGUgXCYjMzQ7bXQ3NjE1LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjY6bXQ3NjE1X3JlZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy03LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo4Olx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxMDpcdG10NzYxNV9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTEtXHRtdDc2X3dyKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIHZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTI6XHRtdDc2MTVfbXV0ZXhfcmVsZWFzZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTEzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0xNz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTg6bXQ3NjE1X3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIwOlx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjI6XHRtdDc2MTVfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIzLVx0KnZhbCA9IG10NzZfcnIoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjQ6XHRtdDc2MTVfbXV0ZXhfcmVsZWFzZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyOTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZWd2YWwsIG10NzYxNV9yZWdfZ2V0LCBtdDc2MTVfcmVnX3NldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zMC1cdFx0XHQgXCYjMzQ7MHglMDhsbHhcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0zMj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzM6bXQ3NjE1X3JhZGFyX3BhdHRlcm5fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjM1Olx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzYtXHRpbnQgZXJyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjM4Olx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zOS1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDE6XHRtdDc2MTVfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQyOlx0ZXJyID0gbXQ3NjE1X21jdV9yZGRfc2VuZF9wYXR0ZXJuKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDM6XHRtdDc2MTVfbXV0ZXhfcmVsZWFzZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQ0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz00OD1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yYWRhcl9wYXR0ZXJuLCBOVUxMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQ5Olx0XHRcdCBtdDc2MTVfcmFkYXJfcGF0dGVybl9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjUxOnN0YXRpYyBpbnQgbXQ3NjE1X2NvbmZpZyh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTUyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1MzpcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU0LVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1NjpcdG10NzYxNV9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTctXHRyZXQgPSBtdDc2X2Nvbm5hY19tY3VfY2hpcF9jb25maWcoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU4Olx0bXQ3NjE1X211dGV4X3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NjM6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfY29uZmlnLCBOVUxMLCBtdDc2MTVfY29uZmlnLCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz02NT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NjY6bXQ3NjE1X3Njc19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy02Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6Njg6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo2OTpcdHN0cnVjdCBtdDc2MTVfcGh5ICpleHRfcGh5O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjcxOlx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy03Mi1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NzQ6XHRtdDc2MTVfbWFjX3NldF9zY3MoXHUwMDI2ZGV2LVx1MDAzZXBoeSwgdmFsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo3NTpcdGV4dF9waHkgPSBtdDc2MTVfZXh0X3BoeShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTc2LVx0aWYgKGV4dF9waHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6Nzc6XHRcdG10NzYxNV9tYWNfc2V0X3NjcyhleHRfcGh5LCB2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTc4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz04Mj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6ODM6bXQ3NjE1X3Njc19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtODQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjg1Olx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtODYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjkyOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3NjcywgbXQ3NjE1X3Njc19nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6OTM6XHRcdFx0IG10NzYxNV9zY3Nfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy05NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz05NT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6OTY6bXQ3NjE1X3BtX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTk3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo5ODpcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTk5LVx0c3RydWN0IG10NzZfY29ubmFjX3BtICpwbSA9IFx1MDAyNmRldi1cdTAwM2VwbTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjEwMjpcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KGRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTAzLVx0XHRyZXR1cm4gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xMDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTA1Olx0aWYgKCFtdDc2MTVfZmlybXdhcmVfb2ZmbG9hZChkZXYpIHx8IG10NzZfaXNfdXNiKFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xMDYtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTM2PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxMzc6bXQ3NjE1X3BtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xMzgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjEzOTpcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE0MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjE0NjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbSwgbXQ3NjE1X3BtX2dldCwgbXQ3NjE1X3BtX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTE0OD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTQ5Om10NzYxNV9wbV9zdGF0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTUwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxNTE6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXHUwMDNlcHJpdmF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTUyLVx0c3RydWN0IG10NzZfY29ubmFjX3BtICpwbSA9IFx1MDAyNmRldi1cdTAwM2VwbTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTY4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxNjk6bXQ3NjE1X3BtX2lkbGVfdGltZW91dF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xNzAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjE3MTpcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE3Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTc4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxNzk6bXQ3NjE1X3BtX2lkbGVfdGltZW91dF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTgwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxODE6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xODItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxODg6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG1faWRsZV90aW1lb3V0LCBtdDc2MTVfcG1faWRsZV90aW1lb3V0X2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxODk6XHRcdFx0IG10NzYxNV9wbV9pZGxlX3RpbWVvdXRfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTkxPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxOTI6bXQ3NjE1X2RiZGNfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTkzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxOTQ6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTk2Olx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xOTctXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xOTktXHRpZiAodmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIwMDpcdFx0bXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMDEtXHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjAyOlx0XHRtdDc2MTVfdW5yZWdpc3Rlcl9leHRfcGh5KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjAzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yMDc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIwODptdDc2MTVfZGJkY19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjA5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMTA6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjEyOlx0KnZhbCA9ICEhbXQ3NjE1X2V4dF9waHkoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMTc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZGJkYywgbXQ3NjE1X2RiZGNfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIxODpcdFx0XHQgbXQ3NjE1X2RiZGNfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MjIwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMjE6bXQ3NjE1X2Z3X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIyMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjIzOlx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIyNTpcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KGRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjI2LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIzMDpcdG10NzYxNV9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjMxOlx0bXQ3NjE1X21jdV9md19sb2dfMl9ob3N0KGRldiwgZGV2LVx1MDAzZWZ3X2RlYnVnID8gMiA6IDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIzMjpcdG10NzYxNV9tdXRleF9yZWxlYXNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjMzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yMzc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIzODptdDc2MTVfZndfZGVidWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIzOS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjQwOlx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjQxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjQ3OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnLCBtdDc2MTVfZndfZGVidWdfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjI0ODpcdFx0XHQgbXQ3NjE1X2Z3X2RlYnVnX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTI1MD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjUxOm10NzYxNV9yZXNldF90ZXN0X3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI1Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjUzOlx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjU0LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjU2Olx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNTctXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjY1Olx0bXQ3NjE1X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNjYtXHRtdDc2X3R4X3F1ZXVlX3NrYl9yYXcoZGV2LCBkZXYtXHUwMDNlbXBoeS5xX3R4WzBdLCBza2IsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjI2NzpcdG10NzYxNV9tdXRleF9yZWxlYXNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yNzI9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXRfdGVzdCwgTlVMTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyNzM6XHRcdFx0IG10NzYxNV9yZXNldF90ZXN0X3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTI3NT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjI3NjptdDc2MTVfYW1wZHVfc3RhdF9yZWFkX3BoeShzdHJ1Y3QgbXQ3NjE1X3BoeSAqcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI3Ny1cdFx0XHQgICBzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjc4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyNzk6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZmlsZS1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI4MC1cdHUzMiByZWcgPSBpc19tdDc2NjMoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID8gTVRfTUlCX0FSTkcoMCkgOiBNVF9BR0dfQVNSQ1IwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0zMTE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMxMjptdDc2MTVfYW1wZHVfc3RhdF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zMTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMxNDpcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBmaWxlLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMxNjpcdG10NzYxNV9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMxODpcdG10NzYxNV9hbXBkdV9zdGF0X3JlYWRfcGh5KFx1MDAyNmRldi1cdTAwM2VwaHksIGZpbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMxOTpcdG10NzYxNV9hbXBkdV9zdGF0X3JlYWRfcGh5KG10NzYxNV9leHRfcGh5KGRldiksIGZpbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTMyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozMjE6XHRtdDc2MTVfbXV0ZXhfcmVsZWFzZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTMyMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMyNjpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3NjE1X2FtcGR1X3N0YXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTMyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0zMjg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozMjk6bXQ3NjE1X3JhZGlvX3JlYWRfcGh5KHN0cnVjdCBtdDc2MTVfcGh5ICpwaHksIHN0cnVjdCBzZXFfZmlsZSAqcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zMzAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMzMTpcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cdTAwM2Vwcml2YXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zMzItXHRib29sIGV4dF9waHkgPSBwaHkgIT0gXHUwMDI2ZGV2LVx1MDAzZXBoeTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MzQzPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozNDQ6bXQ3NjE1X3JhZGlvX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM0NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzQ2Olx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVx1MDAzZXByaXZhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozNDg6XHRtdDc2MTVfcmFkaW9fcmVhZF9waHkoXHUwMDI2ZGV2LVx1MDAzZXBoeSwgcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzQ5Olx0bXQ3NjE1X3JhZGlvX3JlYWRfcGh5KG10NzYxNV9leHRfcGh5KGRldiksIHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM1MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MzU0PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozNTU6bXQ3NjE1X3F1ZXVlc19hY3Eoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM1Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzU3Olx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVx1MDAzZXByaXZhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM1OC1cdGludCBpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozNjA6XHRtdDc2MTVfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM2MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjM4NTpcdG10NzYxNV9tdXRleF9yZWxlYXNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzg2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0zOTA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjM5MTptdDc2MTVfcXVldWVzX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM5Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzkzOlx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVx1MDAzZXByaXZhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM5NC1cdHN0cnVjdCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTQxNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDE3Om10NzYxNV9yZl9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDE4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0MTk6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00MjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDIxOlx0bXQ3NjE1X3JmX3dyKGRldiwgZGV2LVx1MDAzZWRlYnVnZnNfcmZfd2YsIGRldi1cdTAwM2VkZWJ1Z2ZzX3JmX3JlZywgdmFsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00MjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTQyNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDI3Om10NzYxNV9yZl9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQyOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDI5Olx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQzMTpcdCp2YWwgPSBtdDc2MTVfcmZfcnIoZGV2LCBkZXYtXHUwMDNlZGVidWdmc19yZl93ZiwgZGV2LVx1MDAzZWRlYnVnZnNfcmZfcmVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00MzItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0MzY6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmZfcmVnLCBtdDc2MTVfcmZfcmVnX2dldCwgbXQ3NjE1X3JmX3JlZ19zZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDM3LVx0XHRcdCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTQzOT1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQ0MDptdDc2MTVfZXh0X21hY19hZGRyX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyYnVmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQ0MS1cdFx0XHQgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDQyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0NDM6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDQ0LVx0dTMyIGxlbiA9IDMyICogKChFVEhfQUxFTiAqIDMpICYjNDM7IDQpICYjNDM7IDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTQ3Mz1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQ3NDptdDc2MTVfZXh0X21hY19hZGRyX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdXNlcmJ1ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00NzUtXHRcdFx0ICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00NzYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQ3NzpcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00NzgtXHR1bnNpZ25lZCBsb25nIGlkeCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTUyNj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX2V4dF9tYWNfYWRkciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTI4LVx0Lmxsc2VlayA9IGdlbmVyaWNfZmlsZV9sbHNlZWssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTI5Olx0LnJlYWQgPSBtdDc2MTVfZXh0X21hY19hZGRyX3JlYWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTMwOlx0LndyaXRlID0gbXQ3NjE1X2V4dF9tYWNfYWRkcl93cml0ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01MzEtXHQub3duZXIgPSBUSElTX01PRFVMRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9NTM1PW10NzY2M3Nfc2NoZWRfcXVvdGFfcmVhZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTM2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1Mzc6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXHUwMDNlcHJpdmF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTM4LVx0c3RydWN0IG10NzZfc2RpbyAqc2RpbyA9IFx1MDAyNmRldi1cdTAwM2VtdDc2LnNkaW87XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1NDg6aW50IG10NzYxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTU2Olx0aWYgKGlzX210NzYxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTU3LVx0XHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDt4bWl0LXF1ZXVlc1wmIzM0OywgZGlyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU1ODpcdFx0XHRcdFx0ICAgIG10NzYxNV9xdWV1ZXNfcmVhZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTU5LVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NjItXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDthY3FcJiMzNDssIGRpcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1NjM6XHRcdFx0XHQgICAgbXQ3NjE1X3F1ZXVlc19hY3EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU2NDpcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7YW1wZHVfc3RhdFwmIzM0OywgMDQwMCwgZGlyLCBkZXYsIFx1MDAyNm10NzYxNV9hbXBkdV9zdGF0X2ZvcHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU2NS1cdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7c2NzXCYjMzQ7LCAwNjAwLCBkaXIsIGRldiwgXHUwMDI2Zm9wc19zY3MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NzEtXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtydW50aW1lX3BtX3N0YXRzXCYjMzQ7LCBkaXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTcyOlx0XHRcdFx0ICAgIG10NzYxNV9wbV9zdGF0cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTczLVx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7cmFkaW9cJiMzNDssIGRpcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1NzQ6XHRcdFx0XHQgICAgbXQ3NjE1X3JhZGlvX3JlYWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1NzY6XHRpZiAoaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU3Ny1cdFx0ZGVidWdmc19jcmVhdGVfdTMyKFwmIzM0O2Rmc19od19wYXR0ZXJuXCYjMzQ7LCAwNDAwLCBkaXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTYwOC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NjA5OkVYUE9SVF9TWU1CT0xfR1BMKG10NzYxNV9pbml0X2RlYnVnZnMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoxMDojaW5jbHVkZSBcJiMzNDttdDc2MTUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMTEtI2luY2x1ZGUgXCYjMzQ7Li4vZG1hLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYz0xND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoxNTptdDc2MjJfaW5pdF90eF9xdWV1ZXNfbXVsdGkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTE2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYz00ND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzo0NTptdDc2MTVfaW5pdF90eF9xdWV1ZXMoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy01My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjU0Olx0aWYgKCFpc19tdDc2MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNTUtXHRcdHJldHVybiBtdDc2MjJfaW5pdF90eF9xdWV1ZXNfbXVsdGkoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjY2OnN0YXRpYyBpbnQgbXQ3NjE1X3BvbGxfdHgoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNjcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6Njg6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNjktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNzktXHRcdG10NzZfY29ubmFjX2lycV9lbmFibGUoXHUwMDI2ZGV2LVx1MDAzZW10NzYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzo4MDpcdFx0XHRcdCAgICAgICBtdDc2MTVfdHhfbWN1X2ludF9tYXNrKGRldikpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtODEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzo4NzpzdGF0aWMgaW50IG10NzYxNV9wb2xsX3J4KHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTg4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjg5Olx0c3RydWN0IG10NzYxNV9kZXYgKmRldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTkwLVx0aW50IGRvbmU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMTA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6MTA1OmludCBtdDc2MTVfd2FpdF9wZG1hX2J1c3koc3RydWN0IG10NzYxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTEwNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMTEwLVx0XHR1MzIgbWFzayA9IE1UX1BETUFfVFhfQlVTWSB8IE1UX1BETUFfUlhfQlVTWTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjExMTpcdFx0dTMyIHJlZyA9IG10NzYxNV9yZWdfbWFwKGRldiwgTVRfUERNQV9CVVNZKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTExMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0xNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoxNDI6c3RhdGljIHZvaWQgbXQ3NjIyX2RtYV9zY2hlZF9pbml0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0xNDMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6MTQ0Olx0dTMyIHJlZyA9IG10NzYxNV9yZWdfbWFwKGRldiwgTVRfRE1BU0hETF9CQVNFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTE0NS1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTE2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjE2NjpzdGF0aWMgdm9pZCBtdDc2NjNfZG1hX3NjaGVkX2luaXQoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTE2Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6MjAxOnZvaWQgbXQ3NjE1X2RtYV9zdGFydChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjAyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoyMjA6aW50IG10NzYxNV9kbWFfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjIxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoyNDU6XHRpZiAoaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjQ2LVx0XHRtdDc2X3NldChkZXYsIE1UX1dQRE1BX0dMT19DRkcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6MjYwOlx0cmV0ID0gbXQ3NjE1X2luaXRfdHhfcXVldWVzKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yNjEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjI3MTpcdGlmICghaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI3Mi1cdCAgICByeF9yaW5nX3NpemUgLz0gMjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoyODE6XHRyZXQgPSBtdDc2X2luaXRfcXVldWVzKGRldiwgbXQ3NjE1X3BvbGxfcngpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjgyLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yODUtXHRuZXRpZl9uYXBpX2FkZF90eChkZXYtXHUwMDNlbXQ3Ni50eF9uYXBpX2RldiwgXHUwMDI2ZGV2LVx1MDAzZW10NzYudHhfbmFwaSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjI4NjpcdFx0XHQgIG10NzYxNV9wb2xsX3R4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI4Ny1cdG5hcGlfZW5hYmxlKFx1MDAyNmRldi1cdTAwM2VtdDc2LnR4X25hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjI5NTpcdG1hc2sgPSBNVF9JTlRfUlhfRE9ORV9BTEwgfCBtdDc2MTVfdHhfbWN1X2ludF9tYXNrKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yOTYtXHRpZiAoaXNfbXQ3NjYzKFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0zMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzozMDM6XHRtdDc2MTVfZG1hX3N0YXJ0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0zMDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMzA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6MzA4OnZvaWQgbXQ3NjE1X2RtYV9jbGVhbnVwKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0zMDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTgtI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6OTojaW5jbHVkZSBcJiMzNDttdDc2MTUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTAtI2luY2x1ZGUgXCYjMzQ7ZWVwcm9tLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6MTI6c3RhdGljIGludCBtdDc2MTVfZWZ1c2VfcmVhZChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LCB1MzIgYmFzZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTEzLVx0XHRcdCAgICAgdTE2IGFkZHIsIHU4ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6NDQ6c3RhdGljIGludCBtdDc2MTVfZWZ1c2VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LCB1MzIgYmFzZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTQ1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjY2Olx0XHRyZXQgPSBtdDc2MTVfZWZ1c2VfcmVhZChkZXYsIGJhc2UsIGksIGJ1ZiAmIzQzOyBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTY3LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6NzQ6c3RhdGljIGludCBtdDc2MTVfZWVwcm9tX2xvYWQoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy03NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzo4NDpcdHJldHVybiBtdDc2MTVfZWZ1c2VfaW5pdChkZXYsIGFkZHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtODUtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzo4NzpzdGF0aWMgaW50IG10NzYxNV9jaGVja19lZXByb20oc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy04OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM9MTAxPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzoxMDI6bXQ3NjE1X2VlcHJvbV9wYXJzZV9od19iYW5kX2NhcChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTAzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0xNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzoxNDQ6c3RhdGljIHZvaWQgbXQ3NjE1X2VlcHJvbV9wYXJzZV9od19jYXAoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTE0NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6MTQ5Olx0bXQ3NjE1X2VlcHJvbV9wYXJzZV9od19iYW5kX2NhcChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTUwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTE3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjE3MzpzdGF0aWMgaW50IG10NzY2M19lZXByb21fZ2V0X3RhcmdldF9wb3dlcl9pbmRleChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTc0LVx0XHRcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0xODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzoxODU6XHRncm91cCA9IG10NzYxNV9nZXRfY2hhbm5lbF9ncm91cChjaGFuLVx1MDAzZWh3X3ZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTE4Ni1cdGlmIChjaGFpbl9pZHggPT0gMSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0xOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzoxOTQ6aW50IG10NzYxNV9lZXByb21fZ2V0X3RhcmdldF9wb3dlcl9pbmRleChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTk1LVx0XHRcdFx0XHQgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTIwNy1cdC8qIFRTU0kgZGlzYWJsZWQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjIwODpcdGlmIChtdDc2MTVfZXh0X3BhX2VuYWJsZWQoZGV2LCBjaGFuLVx1MDAzZWJhbmQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0yMDktXHRcdGlmIChjaGFuLVx1MDAzZWJhbmQgPT0gTkw4MDIxMV9CQU5EXzJHSFopXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMjE4LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjIxOTpcdFx0aW50IGdyb3VwID0gbXQ3NjE1X2dldF9jaGFubmVsX2dyb3VwKGNoYW4tXHUwMDNlaHdfdmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMjIwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTI0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjI0MjppbnQgbXQ3NjE1X2VlcHJvbV9nZXRfcG93ZXJfZGVsdGFfaW5kZXgoc3RydWN0IG10NzYxNV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTI0My1cdFx0XHRcdFx0ZW51bSBubDgwMjExX2JhbmQgYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0yNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzoyNTk6c3RhdGljIHZvaWQgbXQ3NjE1X2FwcGx5X2NhbF9mcmVlX2RhdGEoc3RydWN0IG10NzYxNV9kZXYgKmRldilcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMzA0CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBNVDc2MTUvTVQ3NjYzIEJ1cyBTdXBwb3J0KioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGJ1c2VzIHRoZSBNVDc2MTUgYW5kIE1UNzY2MyB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0LiBNeSB1c3VhbCBmaXJzdCBzdGVwIGlzIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlLCBzcGVjaWZpY2FsbHkgdGhlIGRyaXZlciBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBoZWFkIHN0cmFpZ2h0IHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnYC4gVGhpcyBLY29uZmlnIGZpbGUgc2hvdWxkIGRlZmluZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGNoaXAmIzM5O3MgYnVzIGludGVyZmFjZXMsIGxpa2VseSBwb2ludGluZyBtZSB0b3dhcmRzIHRoZSByZWxldmFudCBidXMgZHJpdmVycyAoZS5nLiwgUENJZSwgU0RJTywgVVNCKS4gRnJvbSB0aGVyZSBJIGNhbiBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGFyY2hpdGVjdHVyZSwgZGVwZW5kZW5jaWVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBUaW1lIHRvIHNlZSB3aGF0IEkgY2FuIGZpbmQuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRcbiAgIDM6XHRjb25maWcgTVQ3NjE1X0NPTU1PTlxuICAgNDpcdFx0dHJpc3RhdGVcbiAgIDU6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAgNjpcdFx0c2VsZWN0IE1UNzZfQ09OTkFDX0xJQlxuICAgNzpcdFxuICAgODpcdGNvbmZpZyBNVDc2MTVFXG4gICA5Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2MTVFIGFuZCBNVDc2NjNFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4gIDEwOlx0XHRzZWxlY3QgTVQ3NjE1X0NPTU1PTlxuICAxMTpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAxMjpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMTM6XHRcdGhlbHBcbiAgMTQ6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzYxNS1iYXNlZCBQQ0llIHdpcmVsZXNzIGRldmljZXMsXG4gIDE1Olx0XHQgIHdoaWNoIHN1cHBvcnQgY29uY3VycmVudCBkdWFsLWJhbmQgb3BlcmF0aW9uIGF0IGJvdGggNUdIelxuICAxNjpcdFx0ICBhbmQgMi40R0h6LCBJRUVFIDgwMi4xMWFjIDR4NDo0U1MgMTczM01icHMgUEhZIHJhdGUsIHdhdmUyXG4gIDE3Olx0XHQgIE1VLU1JTU8gdXAgdG8gNCB1c2Vycy9ncm91cCBhbmQgMTYwTUh6IGNoYW5uZWxzLlxuICAxODpcdFxuICAxOTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAyMDpcdFxuICAyMTpcdGNvbmZpZyBNVDc2MjJfV01BQ1xuICAyMjpcdFx0Ym9vbCBcJiMzNDtNVDc2MjIgKFNvQykgV01BQyBzdXBwb3J0XCYjMzQ7XG4gIDIzOlx0XHRkZXBlbmRzIG9uIE1UNzYxNUVcbiAgMjQ6XHRcdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RcbiAgMjU6XHRcdHNlbGVjdCBSRUdNQVBcbiAgMjY6XHRcdGRlZmF1bHQgeVxuICAyNzpcdFx0aGVscFxuICAyODpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGJ1aWx0LWluIFdNQUMgb24gTVQ3NjIyIFNvQyBkZXZpY2VzXG4gIDI5Olx0XHQgIHdoaWNoIGhhcyB0aGUgc2FtZSBmZWF0dXJlIHNldCBhcyBhIE1UNzYxNSwgYnV0IGxpbWl0ZWQgdG9cbiAgMzA6XHRcdCAgMi40IEdIeiBvbmx5LlxuICAzMTpcdFxuICAzMjpcdGNvbmZpZyBNVDc2NjNfVVNCX1NESU9fQ09NTU9OXG4gIDMzOlx0XHR0cmlzdGF0ZVxuICAzNDpcdFx0c2VsZWN0IE1UNzYxNV9DT01NT05cbiAgMzU6XHRcbiAgMzY6XHRjb25maWcgTVQ3NjYzVVxuICAzNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NjYzVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4gIDM4Olx0XHRzZWxlY3QgTVQ3Nl9VU0JcbiAgMzk6XHRcdHNlbGVjdCBNVDc2NjNfVVNCX1NESU9fQ09NTU9OXG4gIDQwOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDQxOlx0XHRkZXBlbmRzIG9uIFVTQlxuICA0MjpcdFx0aGVscFxuICA0MzpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjYzVSA4MDIuMTFhYyAyeDI6MiB3aXJlbGVzcyBkZXZpY2VzLlxuICA0NDpcdFxuICA0NTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICA0NjpcdFxuICA0NzpcdGNvbmZpZyBNVDc2NjNTXG4gIDQ4Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2NjNTIChTRElPKSBzdXBwb3J0XCYjMzQ7XG4gIDQ5Olx0XHRzZWxlY3QgTVQ3Nl9TRElPXG4gIDUwOlx0XHRzZWxlY3QgTVQ3NjYzX1VTQl9TRElPX0NPTU1PTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzExCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3NjYzVSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIGBDT05GSUdfTVQ3NjYzVWAuIFJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBVU0Igd2lyZWxlc3MgZHJpdmVyLCBNZWRpYVRlayBNVDc2NjNVLiBUaGlua2luZyBhYm91dCBpdCwgc2luY2UgaXQmIzM5O3MgVVNCLCBJIGNhbiBwcm9iYWJseSBmdXp6IGl0IHVzaW5nIFVTQiBSYXcgR2FkZ2V0IG9yIHRocm91Z2ggc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gSSBjb3VsZCBldmVuIGVtdWxhdGUgaXQgaW4gUUVNVSB3aXRoIHN5emthbGxlci4gVGhlIGtleSBoZXJlIGlzIFVTQi4KCk5vdywgYSBxdWVzdGlvbiBpcyBwb3BwaW5nIGludG8gbXkgaGVhZDogY2FuIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAgZXZlbiBiZSBjYWxsZWQgZm9yIE1UNzY2M1U/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIHByb2JhYmx5IFBDSWUtc3BlY2lmaWMsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gQ291bGQgaXQgcG9zc2libHkgYmUgZXhwb3NlZCB0aHJvdWdoIGRlYnVnZnMsIG9yIHBlcmhhcHMgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbj8gT3IsIGlzIGl0IHNvbWVob3cgaW50ZWdyYXRlZCB3aXRoaW4gbWFjODAyMTEgb3Igbmw4MDIxMT8KCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhlIGNvZGViYXNlLiBJJiMzOTttIGdvaW5nIHRvIHNlYXJjaCBmb3IgZXZlcnkgaW5zdGFuY2Ugd2hlcmUgYG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5YCBpcyBjYWxsZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgcmVsZXZhbnQgdG8gdGhpcyBVU0IgZHJpdmVyIGF0IGFsbC4gS25vd2luZyB3aGVyZSBpdCYjMzk7cyBjYWxsZWQgd2lsbCBoZWxwIG1lIGRldGVybWluZSBpdHMgcHVycG9zZSBhbmQgaG93IHRvIGFwcHJvYWNoIGFueSBwb3RlbnRpYWwgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTE5Mj1tdDc2MTVfZGJkY19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTk5LVx0aWYgKHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMDA6XHRcdG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjAxLVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYz01MjY9RVhQT1JUX1NZTUJPTF9HUEwobXQ3NjE1X2xlZF9zZXRfYnJpZ2h0bmVzcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtNTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jOjUyODppbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy01Mjkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy02MDYtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jOjYwNzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtNjA4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oPTM4Mz12b2lkIG10NzYxNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjM4NDppbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC0zODUtdm9pZCBtdDc2MTVfdW5yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmM9Njk9aW50IG10NzYxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jLTEwMy1cdGlmIChkZXYtXHUwMDNlZGJkY19zdXBwb3J0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jOjEwNDpcdFx0cmV0ID0gbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmMtMTA1LVx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTY0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIHRoZSBNVDc2MTUgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBkZWJ1ZyBmaWxlIHN5c3RlbSBpcyBpbml0aWFsaXplZCB3aXRoaW4gdGhlIE1UNzYxNSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgVVNCIHZlcnNpb24uIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogZG9lcyBgdXNiX2luaXRgIHRyaWdnZXIgdGhlIGNhbGwgdG8gYG10NzYxNV9pbml0X2RlYnVnZnNgPyBPciBwZXJoYXBzIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWA/IEFsdGVybmF0aXZlbHksIG1heWJlIGBtdDc2NjN1YCBpdHNlbGYgaGFuZGxlcyB0aGUgZGVidWdmcyBpbml0aWFsaXphdGlvbi4KClRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMsIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocy4gRmlyc3QsIEkgbmVlZCB0byBwaW5wb2ludCB3aGVyZSBgbXQ3NjE1X2luaXRfZGVidWdmc2AgaXMgYWN0dWFsbHkgKmNhbGxlZCouIFRoZW4sIEkmIzM5O2xsIGZvY3VzIG9uIHRoZSBVU0Itc3BlY2lmaWMgY29kZSB3aXRoaW4gdGhlIE1UNzYxNSBkcml2ZXIsIHNvIEkmIzM5O2xsIGJlIGxvb2tpbmcgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuY2AgZmlsZSwgb3Igc29tZXRoaW5nIHNpbWlsYXJseSBuYW1lZCB3aXRoaW4gdGhhdCBkaXJlY3Rvcnkgc3RydWN0dXJlLCB0byBzZWUgaWYgSSBjYW4gZmluZCB0aGUgYW5zd2VyLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzYxNV9pbml0X2RlYnVnZnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz01MzU9bXQ3NjYzc19zY2hlZF9xdW90YV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU0ODppbnQgbXQ3NjE1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU0OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTYwOC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NjA5OkVYUE9SVF9TWU1CT0xfR1BMKG10NzYxNV9pbml0X2RlYnVnZnMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oPTUyNj1pbnQgbXQ3NjE1X21jdV9zZXRfcm9jKHN0cnVjdCBtdDc2MTVfcGh5ICpwaHksIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg6NTI5OmludCBtdDc2MTVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTMwLWludCBtdDc2MTVfbWN1X3dhaXRfcmVzcG9uc2Uoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgaW50IGNtZCwgaW50IHNlcSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYz02OT1pbnQgbXQ3NjE1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmMtMTA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYzoxMDk6XHRyZXR1cm4gbXQ3NjE1X2luaXRfZGVidWdmcyhkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYy0xMTAtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM9MzA2PWludCBtdDc2NjNfdXNiX3NkaW9fcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjM0NjpcdHJldHVybiBtdDc2MTVfaW5pdF9kZWJ1Z2ZzKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTM0Ny19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNzQ5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgTWVkaWF0ZWsgTVQ3NjE1IFVTQiBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBHaXZlbiB0aGUgY29udGV4dCwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIE1lZGlhdGVrIE1UNzYxNSBVU0IgZHJpdmVyIGltcGxlbWVudGF0aW9uLiBNeSBmaXJzdCBwb2ludCBvZiBhdHRhY2sgd2lsbCBiZSBlaXRoZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jYCBvciwgaWYgdGhpcyBpcyBhbiBTRElPLWJhc2VkIGltcGxlbWVudGF0aW9uLCBgdXNiX3NkaW8uY2AuIFRoZSBjb3JlIGlzc3VlIGxpa2VseSBjZW50ZXJzIGFyb3VuZCBVU0IgZHJpdmVyIHJlZ2lzdHJhdGlvbiBvciBzb21lIFVTQi1zcGVjaWZpYyBjb25maWd1cmF0aW9uLiBUaGVyZWZvcmUsIG15IHByaW1hcnkgc2VhcmNoIGZvY3VzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2AgZGlyZWN0b3J5IHdpbGwgYmUgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgVVNCIGRyaXZlciByZWdpc3RyYXRpb24gcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBVU0IgZGV2aWNlIGlzIGluaXRpYWxseSBpbml0aWFsaXplZCBhbmQgaW50ZWdyYXRlZCB3aXRoIHRoZSBrZXJuZWwsIGFuZCB0aGUgYHVzYi5jYCBmaWxlIGlzIHVzdWFsbHkgdGhlIHBsYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2JfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYz0yNjY9TU9EVUxFX0ZJUk1XQVJFKE1UNzY2M19ST01fUEFUQ0gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MjY4OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2NjN1X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI2OS1cdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjgwLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoyODE6bW9kdWxlX3VzYl9kcml2ZXIobXQ3NjYzdV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjgyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTM0Nj1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzQ4OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2eDBfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzQ5LVx0Lm5hbWVcdFx0PSBLQlVJTERfTU9ETkFNRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zNTgtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjM1OTptb2R1bGVfdXNiX2RyaXZlcihtdDc2eDBfZHJpdmVyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYz0xMzg9TU9EVUxFX0ZJUk1XQVJFKE1UNzY2Ml9ST01fUEFUQ0gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmMtMTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM6MTQwOnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2eDJ1X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTE0MS1cdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmMtMTUyLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYzoxNTM6bW9kdWxlX3VzYl9kcml2ZXIobXQ3NngydV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmMtMTU0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTMyOT1NT0RVTEVfRklSTVdBUkUoTVQ3OTIxX1JPTV9QQVRDSCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozMzE6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzkyMXVfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzMyLVx0Lm5hbWVcdFx0PSBLQlVJTERfTU9ETkFNRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNDMtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM0NDptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjF1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNDUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzI3PU1PRFVMRV9GSVJNV0FSRShNVDc5MjVfUk9NX1BBVENIKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTMyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjMyOTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3OTI1dV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zMzAtXHQubmFtZVx0XHQ9IEtCVUlMRF9NT0ROQU1FLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM0MS19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzQyOm1vZHVsZV91c2JfZHJpdmVyKG10NzkyNXVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM0My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUzMDEKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAzNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE1UNzY2M1UgRHJpdmVyIGFuZCBEQkRDIFN1cHBvcnQqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIE1UNzY2M1UgVVNCIGRyaXZlci4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBpdCBsZXZlcmFnZXMgYG10NzYxNS1jb21tb25gLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIHRoZSBgbXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZWAgZnVuY3Rpb24sIHRyaWdnZXJlZCB3aGVuIGEgVVNCIGRldmljZSBtYXRjaGVzICYjMzQ7bXQ3NjYzdS4mIzM0OyBUaGlzIGluIHR1cm4gY2FsbHMgYG10NzYxNV9pbml0X2RlYnVnZnNgLgoKSW5zaWRlIGBtdDc2MTVfaW5pdF9kZWJ1Z2ZzYCwgdGhlcmUmIzM5O3MgYSBkZWJ1Z2ZzIGVudHJ5IGJlaW5nIGNyZWF0ZWQ6IGEgZmlsZSBuYW1lZCAmIzM0O2RiZGMmIzM0OyB3aXRoIHBlcm1pc3Npb25zIDA2MDAuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcuIFRoaXMgJiMzNDtkYmRjJiMzNDsgZmlsZSB1c2VzIGBmb3BzX2RiZGNgLCB3aGljaCBoYW5kbGVzIGZpbGUgb3BlcmF0aW9ucyByZWxhdGVkIHRvIERCREMuIExvb2tpbmcgY2xvc2VyIGF0IGBmb3BzX2RiZGNgLCBJIHNlZSBgbXQ3NjE1X2RiZGNfc2V0YC4gVGhhdCBmdW5jdGlvbiB0YWtlcyBhIHU2NCB2YWx1ZSBhbmQsIGFmdGVyIGEgY2hlY2sgd2l0aCBgbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0YCwgaXQgZWl0aGVyIGNhbGxzIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAgb3IgYG10NzYxNV91bnJlZ2lzdGVyX2V4dF9waHlgIGJhc2VkIG9uIHRoZSB2YWx1ZS4KClNvLCBpZiB0aGUgdmFsdWUgcHJvdmlkZWQgdG8gYG10NzYxNV9kYmRjX3NldGAgaXMgbm9uLXplcm8sIGl0IGFjdGl2YXRlcyB0aGUgZXh0ZW5kZWQgUEhZIHRocm91Z2ggYG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KGRldilgLiBDbGVhcmx5LCB3ZSYjMzk7cmUgb24gdGhlIHJpZ2h0IHRyYWNrISBUaGUgcHJlc2VuY2Ugb2YgdGhpcyBkZWJ1Z2ZzIGVudHJ5IGFuZCBpdHMgYXNzb2NpYXRlZCBmdW5jdGlvbnMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhpcyBpcyBob3cgREJEQyBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgoKTm93LCBJIHdhbnQgdG8gY29uZmlybSBob3cgREJEQyBpcyB1c2VkIGluIHRoZSB3aWRlciBjb250ZXh0IG9mIHRoZSBtdDc2MTUgYW5kIG10NzY2MyBmYW1pbHkuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuY2AgYW5kIHNwZWNpZmljYWxseSBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIG9mIHRoZSBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIGNhbGwuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBtdWNoIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgREJEQyBpcyBpbml0aWFsaXplZCwgbWFuYWdlZCwgYW5kIHBvdGVudGlhbGx5IHVzZWQgaW4gYSBkdWFsLWJhbmQgZHVhbC1jb25jdXJyZW50IGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDg1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1MjU6XHR9XG4gNTI2Olx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3NjE1X2xlZF9zZXRfYnJpZ2h0bmVzcyk7XG4gNTI3Olx0XG4gNTI4Olx0aW50IG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG4gNTI5Olx0e1xuIDUzMDpcdFx0c3RydWN0IG10NzYxNV9waHkgKnBoeSA9IG10NzYxNV9leHRfcGh5KGRldik7XG4gNTMxOlx0XHRzdHJ1Y3QgbXQ3Nl9waHkgKm1waHk7XG4gNTMyOlx0XHRpbnQgaSwgcmV0O1xuIDUzMzpcdFxuIDUzNDpcdFx0aWYgKCFpc19tdDc2MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuIDUzNTpcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gNTM2Olx0XG4gNTM3Olx0XHRpZiAodGVzdF9iaXQoTVQ3Nl9TVEFURV9SVU5OSU5HLCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSkpXG4gNTM4Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDUzOTpcdFxuIDU0MDpcdFx0aWYgKHBoeSlcbiA1NDE6XHRcdFx0cmV0dXJuIDA7XG4gNTQyOlx0XG4gNTQzOlx0XHRtdDc2MTVfY2FwX2RiZGNfZW5hYmxlKGRldik7XG4gNTQ0Olx0XHRtcGh5ID0gbXQ3Nl9hbGxvY19waHkoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHNpemVvZigqcGh5KSwgXHUwMDI2bXQ3NjE1X29wcywgTVRfQkFORDEpO1xuIDU0NTpcdFx0aWYgKCFtcGh5KSB7XG4gNTQ2Olx0XHRcdHJldCA9IC1FTk9NRU07XG4gNTQ3Olx0XHRcdGdvdG8gZXJyb3I7XG4gNTQ4Olx0XHR9XG4gNTQ5Olx0XG4gNTUwOlx0XHRwaHkgPSBtcGh5LVx1MDAzZXByaXY7XG4gNTUxOlx0XHRwaHktXHUwMDNlZGV2ID0gZGV2O1xuIDU1MjpcdFx0cGh5LVx1MDAzZW10NzYgPSBtcGh5O1xuIDU1MzpcdFx0bXBoeS1cdTAwM2VjaGFpbm1hc2sgPSBkZXYtXHUwMDNlY2hhaW5tYXNrIFx1MDAyNiB+ZGV2LVx1MDAzZW1waHkuY2hhaW5tYXNrO1xuIDU1NDpcdFx0bXBoeS1cdTAwM2VhbnRlbm5hX21hc2sgPSBCSVQoaHdlaWdodDgobXBoeS1cdTAwM2VjaGFpbm1hc2spKSAtIDE7XG4gNTU1Olx0XHRtdDc2MTVfaW5pdF93aXBoeShtcGh5LVx1MDAzZWh3KTtcbiA1NTY6XHRcbiA1NTc6XHRcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1waHktXHUwMDNlbWFjX3dvcmssIG10NzYxNV9tYWNfd29yayk7XG4gNTU4Olx0XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZwaHktXHUwMDNlc2Nhbl93b3JrLCBtdDc2MTVfc2Nhbl93b3JrKTtcbiA1NTk6XHRcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2cGh5LVx1MDAzZXNjYW5fZXZlbnRfbGlzdCk7XG4gNTYwOlx0XG4gNTYxOlx0XHRJTklUX1dPUksoXHUwMDI2cGh5LVx1MDAzZXJvY193b3JrLCBtdDc2MTVfcm9jX3dvcmspO1xuIDU2MjpcdFx0dGltZXJfc2V0dXAoXHUwMDI2cGh5LVx1MDAzZXJvY190aW1lciwgbXQ3NjE1X3JvY190aW1lciwgMCk7XG4gNTYzOlx0XHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNnBoeS1cdTAwM2Vyb2Nfd2FpdCk7XG4gNTY0Olx0XG4gNTY1Olx0XHRtdDc2MTVfbWFjX3NldF9zY3MocGh5LCB0cnVlKTtcbiA1NjY6XHRcbiA1Njc6XHRcdC8qXG4gNTY4Olx0XHQgKiBNYWtlIHRoZSBzZWNvbmRhcnkgUEhZIE1BQyBhZGRyZXNzIGxvY2FsIHdpdGhvdXQgb3ZlcmxhcHBpbmcgd2l0aFxuIDU2OTpcdFx0ICogdGhlIHVzdWFsIE1BQyBhZGRyZXNzIGFsbG9jYXRpb24gc2NoZW1lIG9uIG11bHRpcGxlIHZpcnR1YWwgaW50ZXJmYWNlc1xuIDU3MDpcdFx0ICovXG4gNTcxOlx0XHRtZW1jcHkobXBoeS1cdTAwM2VtYWNhZGRyLCBkZXYtXHUwMDNlbXQ3Ni5lZXByb20uZGF0YSAmIzQzOyBNVF9FRV9NQUNfQUREUixcbiA1NzI6XHRcdCAgICAgICBFVEhfQUxFTik7XG4gNTczOlx0XHRtcGh5LVx1MDAzZW1hY2FkZHJbMF0gfD0gMjtcbiA1NzQ6XHRcdG1waHktXHUwMDNlbWFjYWRkclswXSBePSBCSVQoNyk7XG4gNTc1Olx0XG4gNTc2Olx0XHRyZXQgPSBtdDc2X2VlcHJvbV9vdmVycmlkZShtcGh5KTtcbiA1Nzc6XHRcdGlmIChyZXQpXG4gNTc4Olx0XHRcdGdvdG8gZXJyb3JfZnJlZV9odztcbiA1Nzk6XHRcbiA1ODA6XHRcdC8qIHNlY29uZCBwaHkgY2FuIG9ubHkgaGFuZGxlIDUgR0h6ICovXG4gNTgxOlx0XHRtcGh5LVx1MDAzZWNhcC5oYXNfNWdoeiA9IHRydWU7XG4gNTgyOlx0XG4gNTgzOlx0XHQvKiBtdDc2MTUgc2Vjb25kIHBoeSBzaGFyZXMgdGhlIHNhbWUgaHcgcXVldWVzIHdpdGggdGhlIHByaW1hcnkgb25lICovXG4gNTg0Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYz0gTVRfVFhRX1BTRCA7IGkmIzQzOyYjNDM7KVxuIDU4NTpcdFx0XHRtcGh5LVx1MDAzZXFfdHhbaV0gPSBkZXYtXHUwMDNlbXBoeS5xX3R4W2ldO1xuIDU4NjpcdFxuIDU4NzpcdFx0LyogaW5pdCBsZWQgY2FsbGJhY2tzICovXG4gNTg4Olx0XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTVQ3Nl9MRURTKSkge1xuIDU4OTpcdFx0XHRtcGh5LVx1MDAzZWxlZHMuY2Rldi5icmlnaHRuZXNzX3NldCA9IG10NzYxNV9sZWRfc2V0X2JyaWdodG5lc3M7XG4gNTkwOlx0XHRcdG1waHktXHUwMDNlbGVkcy5jZGV2LmJsaW5rX3NldCA9IG10NzYxNV9sZWRfc2V0X2JsaW5rO1xuIDU5MTpcdFx0fVxuIDU5MjpcdFxuIDU5MzpcdFx0cmV0ID0gbXQ3Nl9yZWdpc3Rlcl9waHkobXBoeSwgdHJ1ZSwgbXQ3Nl9yYXRlcyxcbiA1OTQ6XHRcdFx0XHRcdEFSUkFZX1NJWkUobXQ3Nl9yYXRlcykpO1xuIDU5NTpcdFx0aWYgKHJldClcbiA1OTY6XHRcdFx0Z290byBlcnJvcl9mcmVlX2h3O1xuIDU5NzpcdFxuIDU5ODpcdFx0cmV0dXJuIDA7XG4gNTk5Olx0XG4gNjAwOlx0ZXJyb3JfZnJlZV9odzpcbiA2MDE6XHRcdGllZWU4MDIxMV9mcmVlX2h3KG1waHktXHUwMDNlaHcpO1xuIDYwMjpcdGVycm9yOlxuIDYwMzpcdFx0bXQ3NjE1X2NhcF9kYmRjX2Rpc2FibGUoZGV2KTtcbiA2MDQ6XHRcbiA2MDU6XHRcdHJldHVybiByZXQ7XG4gNjA2Olx0fVxuIDYwNzpcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KTtcbiA2MDg6XHRcbiA2MDk6XHR2b2lkIG10NzYxNV91bnJlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc1OTYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvZGUgLSBBIFF1aWNrIENoZWNrKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQhIE15IGV5ZXMganVzdCBzbmFnZ2VkIG9uIGxpbmUgNTM0IGluIHRoYXQgQyBjb2RlLiBMZXQgbWUgcGFyc2UgdGhhdC4uLiBBaCwgdGhlcmUmIzM5O3MgYSBjcnVjaWFsIGNoZWNrIHJpZ2h0IHRoZXJlOiBgaWYgKCFpc19tdDc2MTUoJmFtcDtkZXYtJmd0O210NzYpKWAuIE15IGV4cGVydCBicmFpbiBpbW1lZGlhdGVseSBzcG90cyB0aGUgcG90ZW50aWFsIGlzc3VlOiBUaGlzIGZ1bmN0aW9uIGFwcGVhcnMgdG8gYmUgYW4gZXJyb3IgcGF0aCwgYW5kIGl0IHdpbGwgb25seSBnZXQgdGhlcmUgaWYgYSBjZXJ0YWluIGNoaXAgaXNuJiMzOTt0IGEgY2VydGFpbiB0eXBlLiAmIzM0O1dhaXQsIHdoYXQmIzM5O3MgYGlzX210NzYxNWAgYWN0dWFsbHkgY2hlY2tpbmcgZm9yPyYjMzQ7IEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGF0IGhhcmR3YXJlIGNvbXBvbmVudHMgdGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBoYW5kbGUuIFRoaXMgZGVtYW5kcyBhIGNsb3NlciBsb29rIGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYGlzX210NzYxNWAgZnVuY3Rpb24gdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgYW5kIGludGVuZGVkIHNjb3BlLiBJIGJldHRlciB0cmFjayBkb3duIHRoZSBkZWZpbml0aW9uIG9mIHRoYXQgZnVuY3Rpb24gcmlnaHQgbm93LiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzX210NzYxNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTU0OD1pbnQgbXQ3NjE1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTU2Olx0aWYgKGlzX210NzYxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTU3LVx0XHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDt4bWl0LXF1ZXVlc1wmIzM0OywgZGlyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTc2Olx0aWYgKGlzX210NzYxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NzctXHRcdGRlYnVnZnNfY3JlYXRlX3UzMihcJiMzNDtkZnNfaHdfcGF0dGVyblwmIzM0OywgMDQwMCwgZGlyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jPTQ1PW10NzYxNV9pbml0X3R4X3F1ZXVlcyhzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6NTQ6XHRpZiAoIWlzX210NzYxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy01NS1cdFx0cmV0dXJuIG10NzYyMl9pbml0X3R4X3F1ZXVlc19tdWx0aShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jPTIyMD1pbnQgbXQ3NjE1X2RtYV9pbml0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6MjQ1Olx0aWYgKGlzX210NzYxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI0Ni1cdFx0bXQ3Nl9zZXQoZGV2LCBNVF9XUERNQV9HTE9fQ0ZHLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjI3MTpcdGlmICghaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI3Mi1cdCAgICByeF9yaW5nX3NpemUgLz0gMjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM9MzYwPW10NzYxNV9pbml0X3dpcGh5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy00MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM6NDA5Olx0aWYgKGlzX210NzYxNShcdTAwMjZwaHktXHUwMDNlZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jLTQxMC1cdFx0aHctXHUwMDNlbWF4X3R4X2ZyYWdtZW50cyA9IE1UX1RYUF9NQVhfQlVGX05VTTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM9NTI4PWludCBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy01MzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM6NTM0Olx0aWYgKCFpc19tdDc2MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jLTUzNS1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jPTE1NTI9c3RhdGljIHZvaWQgbXQ3NjE1X21hY190eF9mcmVlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmMtMTU1OS1cdG10NzZfcXVldWVfdHhfY2xlYW51cChkZXYsIGRldi1cdTAwM2VtcGh5LnFfdHhbTVRfVFhRX1BTRF0sIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jOjE1NjA6XHRpZiAoaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmMtMTU2MS1cdFx0bXQ3Nl9xdWV1ZV90eF9jbGVhbnVwKGRldiwgZGV2LVx1MDAzZW1waHkucV90eFtNVF9UWFFfQkVdLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmMtMTU2Ny1cdGNvdW50ID0gbGUxNl9nZXRfYml0cyhmcmVlLVx1MDAzZWN0cmwsIE1UX1RYX0ZSRUVfTVNEVV9JRF9DTlQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmM6MTU2ODpcdGlmIChpc19tdDc2MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWMuYy0xNTY5LVx0XHRfX2xlMTYgKnRva2VuID0gdHhfdG9rZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jPTI4ND1pbnQgbXQ3NjE1X3NldF9jaGFubmVsKHN0cnVjdCBtdDc2X3BoeSAqbXBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWluLmMtMjkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jOjI5MzpcdGlmIChpc19tdDc2MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpIFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNlZmxhc2hfZWVwcm9tKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWluLmMtMjk0LVx0XHRyZXQgPSBtdDc2MTVfbWN1X2FwcGx5X3J4X2Rjb2MocGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYz0xMzMyPXN0YXRpYyBpbnQgbXQ3NjE1X2xvYWRfbjkoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgY29uc3QgY2hhciAqbmFtZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xMzY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM6MTM3MDpcdGlmICghaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmMtMTM3MS1cdFx0ZGV2LVx1MDAzZWZ3X3ZlciA9IE1UNzYxNV9GSVJNV0FSRV9WMjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfbWFjLmM9NjA9aW50IG10NzYxNV90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9tYWMuYy0xMDMtXHRtZW1zZXQodHhwLCAwLCBzaXplb2Yoc3RydWN0IG10NzZfY29ubmFjX3R4cF9jb21tb24pKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9tYWMuYzoxMDQ6XHRpZiAoaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9tYWMuYy0xMDUtXHRcdG10NzYxNV93cml0ZV9md190eHAoZGV2LCB0eF9pbmZvLCB0eHAsIGlkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjUxPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MjIoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoyNTk6c3RhdGljIGlubGluZSBib29sIGlzX210NzYxNShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNjAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yNjk9c3RhdGljIGlubGluZSBib29sIGlzX2Nvbm5hY192MShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNzAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjI3MTpcdHJldHVybiBpc19tdDc2MTUoZGV2KSB8fCBpc19tdDc2NjMoZGV2KSB8fCBpc19tdDc2MjIoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNzItfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDMzNwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhhdCBxdWVyeSwgYXMgaWYgaXQgd2VyZSBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBNVDc2MTUgRHJpdmVyKioKCkFscmlnaHQsIHNvIHNvbWVvbmUmIzM5O3MgYXNrZWQgYWJvdXQgdGhlIGBpc19tdDc2MTUoZGV2KWAgZnVuY3Rpb24uIEdpdmVuIG15IGV4cGVydGlzZSBpbiB0aGlzIGFyZWEsIG15IGZpcnN0IHRob3VnaHQgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmRvZXMqLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2YCBkaXJlY3RvcnkgaXMgdGhlIGNhbm9uaWNhbCBsb2NhdGlvbiBmb3IgTWVkaWF0ZWsgV2lGaSBkcml2ZXJzIHdpdGhpbiB0aGUga2VybmVsIHRyZWUsIGFuZCB0aGUgYG10NzZfY29ubmFjLmhgIGhlYWRlciBmaWxlIGlzIGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgaW50ZXJmYWNlLXJlbGF0ZWQgZGVmaW5pdGlvbnMuIFNvLCBsZXQmIzM5O3Mgb3BlbiB1cCB0aGF0IGhlYWRlciBmaWxlIGFuZCBzZWUgd2hhdCBgaXNfbXQ3NjE1KGRldilgIGlzIGRlZmluZWQgYXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCBpZGVudGlmaWVzIGFuIE1UNzYxNSBkZXZpY2U7IGxpa2VseSBjaGVja2luZyBzb21lIHNvcnQgb2YgaGFyZHdhcmUgSUQgb3IgYm9hcmQgaW5mb3JtYXRpb24gYWdhaW5zdCBhIGtub3duIHZhbHVlLiBJIGV4cGVjdCB0aGUgZGVmaW5pdGlvbiB0byBiZSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZDogZWl0aGVyIGEgZGlyZWN0IGNoZWNrIGZvciBhIHNwZWNpZmljIElELCBvciBwZXJoYXBzIGEgbW9yZSBjb21wbGV4IG1hY3JvIHRoYXQgaW5jb3Jwb3JhdGVzIGZhbWlseSBjaGVja3MgYW5kIHZlcnNpb25pbmcuIExldCYjMzk7cyBnZXQgdG8gdGhlIGNvZGUgYW5kIHNlZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI1MDpcdFxuIDI1MTpcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MjIoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4gMjUyOlx0e1xuIDI1MzpcdFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19NVDc2MjJfV01BQykpXG4gMjU0Olx0XHRcdHJldHVybiBmYWxzZTtcbiAyNTU6XHRcbiAyNTY6XHRcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MjI7XG4gMjU3Olx0fVxuIDI1ODpcdFxuIDI1OTpcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MTUoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4gMjYwOlx0e1xuIDI2MTpcdFx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4NzYxNSB8fCBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MTE7XG4gMjYyOlx0fVxuIDI2MzpcdFxuIDI2NDpcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MTEoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4gMjY1Olx0e1xuIDI2NjpcdFx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4NzYxMTtcbiAyNjc6XHR9XG4gMjY4Olx0XG4gMjY5Olx0c3RhdGljIGlubGluZSBib29sIGlzX2Nvbm5hY192MShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbiAyNzA6XHR7XG4gMjcxOlx0XHRyZXR1cm4gaXNfbXQ3NjE1KGRldikgfHwgaXNfbXQ3NjYzKGRldikgfHwgaXNfbXQ3NjIyKGRldik7XG4gMjcyOlx0fVxuIDI3MzpcdFxuIDI3NDpcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2X2Z3X3R4cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzExMDUKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiBteSBmaWVsZDoKCioqQ2hpcCBJRCBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZ2V0dGluZyBhIGhhbmRsZSBvbiB3aGljaCBkZXZpY2VzIGFyZSBjdXJyZW50bHkgdXRpbGl6aW5nIGVpdGhlciB0aGUgMHg3NjE1IG9yIDB4NzYxMSBjaGlwIElEcy4gSXQmIzM5O3MgdGhlIG1vc3QgbG9naWNhbCBmaXJzdCBzdGVwIHRvIHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgaGFyZHdhcmUgaW52ZW50b3J5LiBGcm9tIHRoZXJlLCBJIG5lZWQgdG8gdHJhY2UgYmFjayB3aGVyZSB0aGVzZSBzcGVjaWZpYyBjaGlwcyBhcmUgYmVpbmcgcHJvYmVkIHdpdGhpbiB0aGUgc3lzdGVtLiBUaGF0JiMzOTtsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBjaGlwIElEcyBhcmUgYmVpbmcgdXRpbGl6ZWQgaW4gcHJhY3RpY2UuIFVuZGVyc3RhbmRpbmcgdGhlIHByb2JlIHBvaW50cyB3aWxsIGxpa2VseSBwb2ludCB0aGUgd2F5IHRvIHRoZSByaWdodCBkcml2ZXJzLCBjb25maWd1cmF0aW9ucywgb3IgaGFyZHdhcmUgc3BlY2lmaWNhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggb2YgdGhvc2UgY2hpcHMuIEZyb20gdGhlcmUgSSBjYW4gZGV0ZXJtaW5lIGhvdyBJIGNhbiBtYWtlIGNoYW5nZXMgd2l0aG91dCBicmVha2luZyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7MHg3NjE1fDB4NzYxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM9ODc9c3RhdGljIGludCBtdDc2MTVfY2hlY2tfZWVwcm9tKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTkxLVx0c3dpdGNoICh2YWwpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjkyOlx0Y2FzZSAweDc2MTU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy05My1cdGNhc2UgMHg3NjIyOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jPTMxNT1zdGF0aWMgdm9pZCBtdDc2MTVfY2FsX2ZyZWVfZGF0YShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTMyNS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzozMjY6XHRjYXNlIDB4NzYxNTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjMyNzpcdGNhc2UgMHg3NjExOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMzI4LVx0XHRtdDc2MTVfYXBwbHlfY2FsX2ZyZWVfZGF0YShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaS5jPTE1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtdDc2MTVfcGNpX2RldmljZV90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpLmM6MTY6XHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3NjE1KSB9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpLmMtMTctXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3NjYzKSB9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpLmM6MTg6XHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3NjExKSB9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpLmMtMTktXHR7IH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTI1OT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3NjE1KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI2MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjYxOlx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4NzYxNSB8fCBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MTE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjYyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjY0PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MTEoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjY1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoyNjY6XHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3NjExO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI2Ny19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMzIwCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgTVQ3NjE1IFBDSSBEZXZpY2UgVGFibGUgYW5kIFJlbGF0ZWQgVVNCIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYG10NzYxNV9wY2lfZGV2aWNlX3RhYmxlYCByaWdodCBub3cuIEludGVyZXN0aW5nLi4uIGl0IHNlZW1zIHRvIGJlIGxpc3RpbmcgUENJIGRldmljZXMsIHNwZWNpZmljYWxseSB0aG9zZSB3aXRoIHRoZSAweDc2MTUgYW5kIDB4NzYxMSBkZXZpY2UgSURzLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIG5vdGUgdGhvc2UgSURzOyBzZWVtcyBsaWtlIGEgbG9naWNhbCBzdGFydGluZyBwb2ludCB3aGVuIEkmIzM5O20gZGVhbGluZyB3aXRoIE1UNzYxNSwgb3IgZXZlbiB2YXJpYW50cy4gQnV0LCBob2xkIG9uIGEgc2Vjb25kLi4uIHdoYXQgYWJvdXQgdGhlIGBtdDc2NjN1YCBkcml2ZXI/IFdoZXJlIGRvZXMgdGhhdCBjaGlwIGZpdCBpbnRvIHRoaXMgcGljdHVyZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgb3RoZXIgZGV2aWNlcywgYW5kIHdoaWNoIGRldmljZSBJIGFtIGxvb2tpbmcgZm9yLiBJIHNob3VsZCBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHJlbGF0aW9uc2hpcHMsIG9yIGNvbW1vbmFsaXRpZXMgdG8gYmUgZm91bmQuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGltbWVkaWF0ZSBjb3JyZWxhdGlvbiB0aGVyZS4uLiB0aGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBsb29rIGZvciBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdC8qIENvcHlyaWdodCAoQykgMjAxOSBNZWRpYVRlayBJbmMuXG4gICAzOlx0ICpcbiAgIDQ6XHQgKiBBdXRob3I6IEZlbGl4IEZpZXRrYXUgXHUwMDNjbmJkQG5iZC5uYW1lXHUwMDNlXG4gICA1Olx0ICpcdCAgIExvcmVuem8gQmlhbmNvbmkgXHUwMDNjbG9yZW56b0BrZXJuZWwub3JnXHUwMDNlXG4gICA2Olx0ICpcdCAgIFNlYW4gV2FuZyBcdTAwM2NzZWFuLndhbmdAbWVkaWF0ZWsuY29tXHUwMDNlXG4gICA3Olx0ICovXG4gICA4Olx0XG4gICA5Olx0I2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAgMTA6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICAxMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3VzYi5oXHUwMDNlXG4gIDEyOlx0XG4gIDEzOlx0I2luY2x1ZGUgXCYjMzQ7bXQ3NjE1LmhcJiMzNDtcbiAgMTQ6XHQjaW5jbHVkZSBcJiMzNDttYWMuaFwmIzM0O1xuICAxNTpcdCNpbmNsdWRlIFwmIzM0O21jdS5oXCYjMzQ7XG4gIDE2Olx0I2luY2x1ZGUgXCYjMzQ7cmVncy5oXCYjMzQ7XG4gIDE3Olx0XG4gIDE4Olx0c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG10NzYxNV9kZXZpY2VfdGFibGVbXSA9IHtcbiAgMTk6XHRcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwZThkLCAweDc2NjMsIDB4ZmYsIDB4ZmYsIDB4ZmYpIH0sXG4gIDIwOlx0XHR7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MDQzZSwgMHgzMTBjLCAweGZmLCAweGZmLCAweGZmKSB9LFxuICAyMTpcdFx0eyB9LFxuICAyMjpcdH07XG4gIDIzOlx0XG4gIDI0Olx0c3RhdGljIHUzMiBtdDc2NjN1X3JyKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYWRkcilcbiAgMjU6XHR7XG4gIDI2Olx0XHR1MzIgcmV0O1xuICAyNzpcdFxuICAyODpcdFx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNldXNiLnVzYl9jdHJsX210eCk7XG4gIDI5Olx0XHRyZXQgPSBfX19tdDc2dV9ycihkZXYsIE1UX1ZFTkRfUkVBRF9FWFQsXG4gIDMwOlx0XHRcdFx0ICBVU0JfRElSX0lOIHwgVVNCX1RZUEVfVkVORE9SLCBhZGRyKTtcbiAgMzE6XHRcdG11dGV4X3VubG9jayhcdTAwMjZkZXYtXHUwMDNldXNiLnVzYl9jdHJsX210eCk7XG4gIDMyOlx0XG4gIDMzOlx0XHRyZXR1cm4gcmV0O1xuICAzNDpcdH1cbiAgMzU6XHRcbiAgMzY6XHRzdGF0aWMgdm9pZCBtdDc2NjN1X3dyKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYWRkciwgdTMyIHZhbClcbiAgMzc6XHR7XG4gIDM4Olx0XHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2V1c2IudXNiX2N0cmxfbXR4KTtcbiAgMzk6XHRcdF9fX210NzZ1X3dyKGRldiwgTVRfVkVORF9XUklURV9FWFQsXG4gIDQwOlx0XHRcdCAgICBVU0JfRElSX09VVCB8IFVTQl9UWVBFX1ZFTkRPUiwgYWRkciwgdmFsKTtcbiAgNDE6XHRcdG11dGV4X3VubG9jayhcdTAwMjZkZXYtXHUwMDNldXNiLnVzYl9jdHJsX210eCk7XG4gIDQyOlx0fVxuICA0MzpcdFxuICA0NDpcdHN0YXRpYyB1MzIgbXQ3NjYzdV9ybXcoc3RydWN0IG10NzZfZGV2ICpkZXYsIHUzMiBhZGRyLFxuICA0NTpcdFx0XHQgICAgICAgdTMyIG1hc2ssIHUzMiB2YWwpXG4gIDQ2Olx0e1xuICA0NzpcdFx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNldXNiLnVzYl9jdHJsX210eCk7XG4gIDQ4Olx0XHR2YWwgfD0gX19fbXQ3NnVfcnIoZGV2LCBNVF9WRU5EX1JFQURfRVhULFxuICA0OTpcdFx0XHRcdCAgIFVTQl9ESVJfSU4gfCBVU0JfVFlQRV9WRU5ET1IsIGFkZHIpIFx1MDAyNiB+bWFzaztcbiAgNTA6XHRcdF9fX210NzZ1X3dyKGRldiwgTVRfVkVORF9XUklURV9FWFQsXG4gIDUxOlx0XHRcdCAgICBVU0JfRElSX09VVCB8IFVTQl9UWVBFX1ZFTkRPUiwgYWRkciwgdmFsKTtcbiAgNTI6XHRcdG11dGV4X3VubG9jayhcdTAwMjZkZXYtXHUwMDNldXNiLnVzYl9jdHJsX210eCk7XG4gIDUzOlx0XG4gIDU0Olx0XHRyZXR1cm4gdmFsO1xuICA1NTpcdH1cbiAgNTY6XHRcbiAgNTc6XHRzdGF0aWMgdm9pZCBtdDc2NjN1X2NvcHkoc3RydWN0IG10NzZfZGV2ICpkZXYsIHUzMiBvZmZzZXQsXG4gIDU4Olx0XHRcdFx0IGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4pXG4gIDU5Olx0e1xuICA2MDpcdFx0c3RydWN0IG10NzZfdXNiICp1c2IgPSBcdTAwMjZkZXYtXHUwMDNldXNiO1xuICA2MTpcdFx0aW50IHJldCwgaSA9IDAsIGJhdGNoX2xlbjtcbiAgNjI6XHRcdGNvbnN0IHU4ICp2YWwgPSBkYXRhO1xuICA2MzpcdFxuICA2NDpcdFx0bGVuID0gcm91bmRfdXAobGVuLCA0KTtcbiAgNjU6XHRcbiAgNjY6XHRcdG11dGV4X2xvY2soXHUwMDI2dXNiLVx1MDAzZXVzYl9jdHJsX210eCk7XG4gIDY3Olx0XHR3aGlsZSAoaSBcdTAwM2MgbGVuKSB7XG4gIDY4Olx0XHRcdGJhdGNoX2xlbiA9IG1pbl90KGludCwgdXNiLVx1MDAzZWRhdGFfbGVuLCBsZW4gLSBpKTtcbiAgNjk6XHRcdFx0bWVtY3B5KHVzYi1cdTAwM2VkYXRhLCB2YWwgJiM0MzsgaSwgYmF0Y2hfbGVuKTtcbiAgNzA6XHRcdFx0cmV0ID0gX19tdDc2dV92ZW5kb3JfcmVxdWVzdChkZXYsIE1UX1ZFTkRfV1JJVEVfRVhULFxuICA3MTpcdFx0XHRcdFx0XHQgICAgIFVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfVkVORE9SLFxuICA3MjpcdFx0XHRcdFx0XHQgICAgIChvZmZzZXQgJiM0MzsgaSkgXHUwMDNlXHUwMDNlIDE2LCBvZmZzZXQgJiM0MzsgaSxcbiAgNzM6XHRcdFx0XHRcdFx0ICAgICB1c2ItXHUwMDNlZGF0YSwgYmF0Y2hfbGVuKTtcbiAgNzQ6XHRcdFx0aWYgKHJldCBcdTAwM2MgMClcbiAgNzU6XHRcdFx0XHRicmVhaztcbiAgNzY6XHRcbiAgNzc6XHRcdFx0aSAmIzQzOz0gYmF0Y2hfbGVuO1xuICA3ODpcdFx0fVxuICA3OTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnVzYi1cdTAwM2V1c2JfY3RybF9tdHgpO1xuICA4MDpcdH1cbiAgODE6XHRcbiAgODI6XHRzdGF0aWMgdm9pZCBtdDc2NjN1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcbiAgODM6XHR7XG4gIDg0Olx0XHRzdHJ1Y3QgbXQ3NjE1X3BoeSAqcGh5ID0gbXQ3NjE1X2h3X3BoeShodyk7XG4gIDg1Olx0XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gaHctXHUwMDNlcHJpdjtcbiAgODY6XHRcbiAgODc6XHRcdGNsZWFyX2JpdChNVDc2X1NUQVRFX1JVTk5JTkcsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbiAgODg6XHRcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNnBoeS1cdTAwM2Vyb2NfdGltZXIpO1xuICA4OTpcdFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZwaHktXHUwMDNlcm9jX3dvcmspO1xuICA5MDpcdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnBoeS1cdTAwM2VzY2FuX3dvcmspO1xuICA5MTpcdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnBoeS1cdTAwM2VtdDc2LVx1MDAzZW1hY193b3JrKTtcbiAgOTI6XHRcdG10NzZ1X3N0b3BfdHgoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuICA5MzpcdH1cbiAgOTQ6XHRcbiAgOTU6XHRzdGF0aWMgdm9pZCBtdDc2NjN1X2NsZWFudXAoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbiAgOTY6XHR7XG4gIDk3Olx0XHRjbGVhcl9iaXQoTVQ3Nl9TVEFURV9JTklUSUFMSVpFRCwgXHUwMDI2ZGV2LVx1MDAzZW1waHkuc3RhdGUpO1xuICA5ODpcdFx0bXQ3NnVfcXVldWVzX2RlaW5pdChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gIDk5Olx0fVxuIDEwMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDMxOAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgRGVlcGVyIGludG8gdGhlIE1UNzYxNSBVU0IgRHJpdmVyKioKCkFscmlnaHQsIHNvIHdlJiMzOTt2ZSBiZWVuIGZvY3VzaW5nIG9uIHRoYXQgc3BlY2lmaWMgYXJlYSBvZiB0aGUgTVQ3NjE1IFVTQiBkcml2ZXIsIGJ1dCBpdCYjMzk7cyB0aW1lIHRvIGJyb2FkZW4gdGhlIHNjb3BlLiBJIG5lZWQgdG8gZ2V0IGEgbW9yZSBjb21wcmVoZW5zaXZlIHZpZXcgb2YgaG93IHRoaXMgYWxsIGZ1bmN0aW9ucy4gSSBzaG91bGQgZGVmaW5pdGVseSBleGFtaW5lIHRoZSB3aG9sZSBvZiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHBpZWNlcywgd2hlcmUgdGhlIGNvbnRyb2wgZmxvdyBvcmlnaW5hdGVzLCBhbmQgaG93IGl0IGFsbCBoYW5ncyB0b2dldGhlci4gVGhlcmUgY291bGQgYmUgY3JpdGljYWwgY2x1ZXMgd2l0aGluIHRoZSBzZWVtaW5nbHkgJiMzNDt1bmltcG9ydGFudCYjMzQ7IHNlY3Rpb25zLCBkZXRhaWxzIHRoYXQgYWZmZWN0IHRoZSBtb2R1bGUgYmVoYXZpb3IuIFRoaXMgZGVlcGVyIGRpdmUgd2lsbCBleHBvc2UgaG93IHRoaXMgcGFydGljdWxhciBtb2R1bGUgaXMgaW50ZWdyYXRlZCBpbnRvIHRoZSByZXN0IG9mIHRoZSBsYXJnZXIgTVQ3NiBmcmFtZXdvcmssIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGNlcnRhaW4gZGVzaWduIGNob2ljZXMuIFRoYXQgYnJvYWRlciBjb250ZXh0IHdpbGwgYmUgY3J1Y2lhbCBmb3IgdGhlIHByb2JsZW0gSSYjMzk7bSB3b3JraW5nIG9uLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogOTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4MDpcdFx0aWYgKHJldClcbiAxODE6XHRcdFx0Z290byBlcnJvcjtcbiAxODI6XHRcbiAxODM6XHRcdHJldCA9IG10NzZ1X2FsbG9jX3F1ZXVlcyhcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMTg0Olx0XHRpZiAocmV0KVxuIDE4NTpcdFx0XHRnb3RvIGVycm9yO1xuIDE4NjpcdFxuIDE4NzpcdFx0cmV0ID0gbXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZShkZXYpO1xuIDE4ODpcdFx0aWYgKHJldClcbiAxODk6XHRcdFx0Z290byBlcnJvcjtcbiAxOTA6XHRcbiAxOTE6XHRcdHJldHVybiAwO1xuIDE5MjpcdFxuIDE5MzpcdGVycm9yOlxuIDE5NDpcdFx0bXQ3NnVfcXVldWVzX2RlaW5pdChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMTk1Olx0XHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcbiAxOTY6XHRcdHVzYl9wdXRfZGV2KGludGVyZmFjZV90b191c2JkZXYodXNiX2ludGYpKTtcbiAxOTc6XHRcbiAxOTg6XHRcdG10NzZfZnJlZV9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuIDE5OTpcdFxuIDIwMDpcdFx0cmV0dXJuIHJldDtcbiAyMDE6XHR9XG4gMjAyOlx0XG4gMjAzOlx0c3RhdGljIHZvaWQgbXQ3NjYzdV9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcbiAyMDQ6XHR7XG4gMjA1Olx0XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YSh1c2JfaW50Zik7XG4gMjA2Olx0XG4gMjA3Olx0XHRpZiAoIXRlc3RfYml0KE1UNzZfU1RBVEVfSU5JVElBTElaRUQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKSlcbiAyMDg6XHRcdFx0cmV0dXJuO1xuIDIwOTpcdFxuIDIxMDpcdFx0aWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoZGV2LVx1MDAzZW10NzYuaHcpO1xuIDIxMTpcdFx0bXQ3NjYzdV9jbGVhbnVwKGRldik7XG4gMjEyOlx0XG4gMjEzOlx0XHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcbiAyMTQ6XHRcdHVzYl9wdXRfZGV2KGludGVyZmFjZV90b191c2JkZXYodXNiX2ludGYpKTtcbiAyMTU6XHRcbiAyMTY6XHRcdG10NzZfZnJlZV9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuIDIxNzpcdH1cbiAyMTg6XHRcbiAyMTk6XHQjaWZkZWYgQ09ORklHX1BNXG4gMjIwOlx0c3RhdGljIGludCBtdDc2NjN1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcbiAyMjE6XHR7XG4gMjIyOlx0XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbiAyMjM6XHRcbiAyMjQ6XHRcdGlmICghdGVzdF9iaXQoTVQ3Nl9TVEFURV9TVVNQRU5ELCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSkgXHUwMDI2XHUwMDI2XG4gMjI1Olx0XHQgICAgbXQ3NjE1X2Zpcm13YXJlX29mZmxvYWQoZGV2KSkge1xuIDIyNjpcdFx0XHRpbnQgZXJyO1xuIDIyNzpcdFxuIDIyODpcdFx0XHRlcnIgPSBtdDc2X2Nvbm5hY19tY3Vfc2V0X2hpZl9zdXNwZW5kKFx1MDAyNmRldi1cdTAwM2VtdDc2LCB0cnVlLCB0cnVlKTtcbiAyMjk6XHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbiAyMzA6XHRcdFx0XHRyZXR1cm4gZXJyO1xuIDIzMTpcdFx0fVxuIDIzMjpcdFxuIDIzMzpcdFx0bXQ3NnVfc3RvcF9yeChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMjM0Olx0XHRtdDc2dV9zdG9wX3R4KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiAyMzU6XHRcbiAyMzY6XHRcdHJldHVybiAwO1xuIDIzNzpcdH1cbiAyMzg6XHRcbiAyMzk6XHRzdGF0aWMgaW50IG10NzY2M3VfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIDI0MDpcdHtcbiAyNDE6XHRcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xuIDI0MjpcdFx0aW50IGVycjtcbiAyNDM6XHRcbiAyNDQ6XHRcdGVyciA9IG10NzZ1X3ZlbmRvcl9yZXF1ZXN0KFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNVF9WRU5EX0ZFQVRVUkVfU0VULFxuIDI0NTpcdFx0XHRcdFx0ICAgVVNCX0RJUl9PVVQgfCBVU0JfVFlQRV9WRU5ET1IsXG4gMjQ2Olx0XHRcdFx0XHQgICAweDUsIDB4MCwgTlVMTCwgMCk7XG4gMjQ3Olx0XHRpZiAoZXJyKVxuIDI0ODpcdFx0XHRyZXR1cm4gZXJyO1xuIDI0OTpcdFxuIDI1MDpcdFx0ZXJyID0gbXQ3NnVfcmVzdW1lX3J4KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiAyNTE6XHRcdGlmIChlcnIgXHUwMDNjIDApXG4gMjUyOlx0XHRcdHJldHVybiBlcnI7XG4gMjUzOlx0XG4gMjU0Olx0XHRpZiAoIXRlc3RfYml0KE1UNzZfU1RBVEVfU1VTUEVORCwgXHUwMDI2ZGV2LVx1MDAzZW1waHkuc3RhdGUpIFx1MDAyNlx1MDAyNlxuIDI1NTpcdFx0ICAgIG10NzYxNV9maXJtd2FyZV9vZmZsb2FkKGRldikpXG4gMjU2Olx0XHRcdGVyciA9IG10NzZfY29ubmFjX21jdV9zZXRfaGlmX3N1c3BlbmQoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIGZhbHNlLCB0cnVlKTtcbiAyNTc6XHRcbiAyNTg6XHRcdHJldHVybiBlcnI7XG4gMjU5Olx0fVxuIDI2MDpcdCNlbmRpZiAvKiBDT05GSUdfUE0gKi9cbiAyNjE6XHRcbiAyNjI6XHRNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgbXQ3NjE1X2RldmljZV90YWJsZSk7XG4gMjYzOlx0TU9EVUxFX0ZJUk1XQVJFKE1UNzY2M19PRkZMT0FEX0ZJUk1XQVJFX045KTtcbiAyNjQ6XHRNT0RVTEVfRklSTVdBUkUoTVQ3NjYzX09GRkxPQURfUk9NX1BBVENIKTtcbiAyNjU6XHRNT0RVTEVfRklSTVdBUkUoTVQ3NjYzX0ZJUk1XQVJFX045KTtcbiAyNjY6XHRNT0RVTEVfRklSTVdBUkUoTVQ3NjYzX1JPTV9QQVRDSCk7XG4gMjY3Olx0XG4gMjY4Olx0c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzY2M3VfZHJpdmVyID0ge1xuIDI2OTpcdFx0Lm5hbWVcdFx0PSBLQlVJTERfTU9ETkFNRSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYwNDUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA2MTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNVDc2NjNVIGFuZCBtdDc2MTUgRHJpdmVyIEludGVyYWN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZvciB0aGUgTVQ3NjYzVSwgdGhlIGNoaXAgSUQgaXMgMHg3NjYzLiBJIHdhcyBsb29raW5nIGF0IGhvdyB0aGUgYG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5YCBmdW5jdGlvbiBoYW5kbGVzIHRoaXMsIGFuZCBJIHNlZSBhIHByb2JsZW0gcmlnaHQgYXdheS4gVGhlIGZ1bmN0aW9uIGluY2x1ZGVzIHRoaXMgY2hlY2s6CgpgYGBjCglpZiAoIWlzX210NzYxNSgmYW1wO2Rldi0mZ3Q7bXQ3NikpCgkJcmV0dXJuIC1FT1BOT1RTVVBQOwpgYGAKCmBpc19tdDc2MTVgIGNoZWNrcyBmb3IgYG10NzZfY2hpcChkZXYpID09IDB4NzYxNSB8fCBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MTFgLiBCdXQgd2FpdCwgdGhlIE1UNzY2MyBoYXMgYSBjaGlwIElEIG9mIDB4NzY2My4gU28sIGZvciB0aGUgTVQ3NjYzVSAodGhlIFVTQiB2ZXJzaW9uKSwgYG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5YCBpcyBpbW1lZGlhdGVseSByZXR1cm5pbmcgYC1FT1BOT1RTVVBQYCEgVGhpcyBoYXBwZW5zICpiZWZvcmUqIGFueSBvZiB0aGUgbG9naWMgSSYjMzk7bSBpbnRlcmVzdGVkIGluIQoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBpcyBoYXBwZW5pbmcuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgbXQ3NjE1YCAoMHg3NjE1IC8gMHg3NjExKSBldmVuICpleGlzdHMqIGFzIGEgVVNCIGRldmljZSwgb3IgaWYgaXQmIzM5O3Mgc3RyaWN0bHkgUENJZS4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBzZWFyY2ggdGhlIGBtdDc2MTVgIGRyaXZlciBmb3IgZGV2aWNlIGluZm9ybWF0aW9uLgoKT2theSwgbGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvYCBkaXJlY3RvcnkuCgoqICAgYHBjaS5jYDogQWgsIHRoZXJlJiMzOTtzIGEgYG10NzYxNV9wY2lfZGV2aWNlX3RhYmxlYCB0aGF0IGluY2x1ZGVzIGRldmljZXMgd2l0aCB0aGUgdmVuZG9yIElEIGFuZCAweDc2MTUsIDB4NzY2MywgYW5kIDB4NzYxMSBjaGlwIElEcy4gVGhpcyBjbGVhcmx5IGRlZmluZXMgUENJZSBkZXZpY2VzLgoqICAgYHVzYi5jYDogRXhjZWxsZW50LiBUaGUgYG10NzYxNV9kZXZpY2VfdGFibGVgIGluY2x1ZGVzIFVTQiBkZXZpY2VzOiB0aGUgVVNCIGRldmljZSBgMHgwZThkLCAweDc2NjNgICphbmQqIGAweDA0M2UsIDB4MzEwY2Agd2hpY2ggaXMgYWxzbyBhbiBNVDc2NjNVIQoqICAgYHNkaW8uY2A6IEZvdW5kIGEgZGV2aWNlIGhlcmUgZm9yIGBtdDc2NjNzYCAoU0RJTykuCiogICBgc29jLmNgOiBDb250YWlucyBjb2RlIGZvciBgTVQ3NjIyX1dNQUNgIChidWlsdC1pbiBXTUFDIG9uIE1UNzYyMiBTb0MsIEFSTSAvIEFSQ0hfTUVESUFURUspLgoKQWxyaWdodCwgSSBzZWUgYSBjbGVhciBkZWxpbmVhdGlvbi4gVGhlIE1UNzYxNS9NVDc2MTEgZHJpdmVycyBhcmUgbm90ICpvbmx5KiBmb3IgUENJZSBkZXZpY2VzLCBzaW5jZSBVU0IgYW5kIFNESU8gYXJlIGNvdmVyZWQuIFRoZSBgdXNiLmNgIGZpbGUgY29uZmlybXMgdGhhdCB0aGVyZSBpcyBzdXBwb3J0IGZvciB0aGVzZSBjaGlwcyBvdmVyIFVTQi4gU28sIHRoZSBpc3N1ZSBpc24mIzM5O3QgdGhhdCBgbXQ3NjE1YCBpcyAqb25seSogUENJZS4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGUgZHJpdmVyIGlzIHJlamVjdGluZyB0aGUgTVQ3NjYzVSBiYXNlZCBvbiB0aGF0IGNoZWNrLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgbW9yZSBjbG9zZWx5IGF0IGhvdyB0aGUgZHJpdmVyIGlkZW50aWZpZXMgdGhlc2Ugc3BlY2lmaWMgZGV2aWNlcyBhbmQgd2hlcmUgdGhpcyBjb2RlIG1pZ2h0IGJlIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NkaW9fZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM6MjI6c3RhdGljIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCBtdDc2NjNzX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtMjMtXHR7IFNESU9fREVWSUNFKFNESU9fVkVORE9SX0lEX01FRElBVEVLLCAweDc2MDMpIH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jPTc2PXN0YXRpYyBpbnQgbXQ3NjYzc19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjc3Olx0XHRcdCBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTc4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmMtMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6MTk6c3RhdGljIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCBtdDc5MjFzX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmMtMjAtXHR7IFNESU9fREVWSUNFKFNESU9fVkVORE9SX0lEX01FRElBVEVLLCAweDc5MDEpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYz05MD1zdGF0aWMgaW50IG10NzkyMXNfcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYzo5MTpcdFx0XHQgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYy05Mi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3ODk4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogODQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gVGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2Ugc2hvdWxkIGNvbnNpZGVyIGZ1enppbmcgdGhlIGNvZGUgd2l0aGluIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAuIFRoZSBmaXJzdCBodXJkbGUgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uLCBvbiB0aGUgZmFjZSBvZiBpdCwgc2VlbXMgdGlnaHRseSBjb3VwbGVkIHRvIHBoeXNpY2FsIGhhcmR3YXJlLiBTcGVjaWZpY2FsbHksIHRoZSBmdW5jdGlvbiBsb2dpYyBpcyB1c2VkIG9ubHkgd2hlbiBhbiBleHRlcm5hbCBQSFkgaXMgcmVnaXN0ZXJlZC4gYGlzX210NzYxNWAgY2hlY2tzIGZvciBNZWRpYXRlayBjaGlwIElEcyAweDc2MTUgb3IgMHg3NjExLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhlc2UgYXJlIGZvdW5kIGluIHRoZSBgbXQ3NjE1X3BjaV9kZXZpY2VfdGFibGVgLCB3aGljaCBzdHJvbmdseSBzdWdnZXN0cyBQQ0llIGRldmljZXMuCgpUaGUga2V5IG5lZ2F0aXZlIGNyaXRlcmlvbiBpbiB0aGUgcHJvbXB0IGlzIGFib3V0ICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCYjMzQ7IHNwZWNpZmljYWxseSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyBhIHJlZCBmbGFnISBTdGFuZGFyZCBRRU1VLCBhcyBmYXIgYXMgSSBrbm93LCBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBNZWRpYVRlayBNVDc2MTUvTVQ3NjExIFBDSWUgaGFyZHdhcmUuIFRoaXMgd291bGQgYXV0b21hdGljYWxseSBleGNsdWRlIGl0IGZyb20gYmVpbmcgZnV6emFibGUuCgpCdXQgd2UgaGF2ZSB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uIExldCYjMzk7cyB0cmFjZSB0aGUgY2FsbGVycyBvZiBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgLiBXZSYjMzk7dmUgZ290IHR3byBjYWxsZXJzOgoKMS4gIGBtdDc2MTVfcmVnaXN0ZXJfZGV2aWNlYCAodmlhIGBtdDc2MTVfcGNpX3Byb2JlYCk6IFRoaXMgaXMgY2FsbGVkIGR1cmluZyB0aGUgUENJZSBwcm9iZS4gU28sIGEgTWVkaWF0ZWsgTVQ3NjE1IFBDSWUgY2FyZCBwcm9iZS4gVGhhdCYjMzk7cyBhIHBoeXNpY2FsIGNhcmQgcHJvYmUuCjIuICBgbXQ3NjE1X2RiZGNfc2V0YDogIFRoaXMgaXMgY2FsbGVkIHZpYSBhIGRlYnVnZnMgZW50cnkuIEhvd2V2ZXIsIHRvICpjcmVhdGUqIHRoZSBkZWJ1Z2ZzIGVudHJ5LCB5b3UmIzM5O2QgaGF2ZSB0byBpbml0aWFsaXplIGEgYG10NzYxNWAgZGV2aWNlIChlaXRoZXIgdmlhIGBtdDc2MTVfcmVnaXN0ZXJfZGV2aWNlYCwgb3IgYnkgYSBVU0Igb3IgU0RJTyBkZXZpY2UgcmVnaXN0ZXJpbmcpLiBUaGlzIGlzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nLiBJZiBpdCB3YXMgY3JlYXRlZCBieSBgbXQ3NjYzdWAgKFVTQiksIGFuZCBzb21lb25lIHdyaXRlcyB0byBgZGJkY2AsIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAgd2lsbCBleGVjdXRlLiBIb3dldmVyLCBiZWNhdXNlIE1UNzY2MyBoYXMgY2hpcCBJRCAweDc2NjMgKGAhaXNfbXQ3NjE1YCksIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAgaW1tZWRpYXRlbHkgcmV0dXJucyBgLUVPUE5PVFNVUFBgLiBUaGUgbW9kaWZpZWQgY29kZSBpcyBuZXZlciByZWFjaGVkIGluIHRoaXMgc2NlbmFyaW8hIEFsc28sIGZvciB0aGUgTVQ3NjE1IFBDSWUgZGV2aWNlICh3aGljaCBJUyBgaXNfbXQ3NjE1YCksIHRoZSBkZXZpY2UgY2Fubm90IGJlIHByb2JlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUgLyBHQ0UpIGJlY2F1c2UgTVQ3NjE1IGlzIHBoeXNpY2FsIE1lZGlhVGVrIFBDSWUgaGFyZHdhcmUuCgpTbywgaW4gdGhlIGZpcnN0IGNhbGxpbmcgcGF0aCwgeW91IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUuIEluIHRoZSBzZWNvbmQgY2FsbGluZyBwYXRoLCBpZiBpdCBleGVjdXRlcyB3aXRoIGEgVVNCIG9yIFNESU8gZGV2aWNlLCB5b3UgaGF2ZSBhbiBlYXJseSByZXR1cm4gZnJvbSBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIHRoYXQgc2tpcHMgdGhlIG1vZGlmaWVkIGNvZGUuCgpUaGUgZmluYWwgcXVlc3Rpb246IGlzIHRoZXJlIGFueSB2aXJ0dWFsIG9yIG1vY2sgaW50ZXJmYWNlIGZvciBgbXQ3NmA/IE1heWJlIHNvbWUgYG1hYzgwMjExX2h3c2ltYCBvciBzaW1pbGFyPyBMZXQgbWUgZG8gYSBxdWljayBzZWFyY2guLi4gTm8sIG5vdGhpbmcgaW1tZWRpYXRlbHkgYXBwYXJlbnQuIFRoYXQgd291bGQgYmUgdGhlIG9ubHkgY2hhbmNlIG9mIHJ1bm5pbmcgdGhpcyBpbiBhIFZNLgoKQmFzZWQgb24gdGhlIGV2aWRlbmNlLCB0aGUgbW9kaWZpZWQgY29kZSBpbiBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIGlzIG9ubHkgcmVhY2hhYmxlIG9uIHBoeXNpY2FsIGhhcmR3YXJlLiBJdCBzZWVtcyB3ZSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NTI0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuCgoqKkludmVzdGlnYXRpbmcgdGhlIGBtdDc2X2NoaXBgIENvbnRleHQqKgoKUmlnaHQsIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IGNvbm5lY3Rpb24gYmV0d2VlbiB0aGlzIGBtYWM4MDIxMV9od3NpbWAgZHJpdmVyIGFuZCB0aGUgYG10NzZgIGZyYW1ld29yay4gVGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZXkgYXJlIGNvbXBsZXRlbHkgc2VwYXJhdGU7IGBtYWM4MDIxMV9od3NpbWAgaXMgZXhwbGljaXRseSBhIHNvZnR3YXJlIHNpbXVsYXRpb24gb2YgdGhlIGhhcmR3YXJlIGFuZCBoYXMgbm8gaW5oZXJlbnQgbGluayB0byBNZWRpYVRlayYjMzk7cyBgbXQ3NmAgZHJpdmVycy4gSXQmIzM5O3MgZGVzaWduZWQgdG8gYmUgaW5kZXBlbmRlbnQuCgpIb3dldmVyLCBJIG5lZWQgdG8gYmUgKmFic29sdXRlbHkqIHN1cmUuIFRoZSBxdWVzdGlvbiBpczogY291bGQgdGhlcmUgYmUgc29tZSB1bmZvcmVzZWVuIGludGVyYWN0aW9uLCBwZXJoYXBzIGEgc3VidGxlIGRlcGVuZGVuY3ksIG9yIGV2ZW4gYSBtaXNjb25maWd1cmF0aW9uIHRoYXQgY291bGQgbGVhZCB0byBzb21ldGhpbmcgYmVpbmcgaW5jb3JyZWN0bHkgc2V0PyBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGJvb2xlYW4gYGlzX210NzYxNWAuIENhbiB0aGF0IGV2ZXIgYmUgdHJ1ZSBpbiB0aGUgY29udGV4dCBvZiBhIFVTQiBkZXZpY2UsIG9yIGEgdmlydHVhbCBkZXZpY2UgbGlrZSBgbWFjODAyMTFfaHdzaW1gPyBTZWVtcyB1bmxpa2VseSBvbiB0aGUgZmFjZSBvZiBpdCwgYnV0IGJldHRlciB0byBjb25maXJtLgoKVGhlcmVmb3JlLCBteSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gY2hlY2sgd2hlcmUgdGhlIGBtdDc2X2NoaXBgIGRhdGEgc3RydWN0dXJlIGlzIGJlaW5nIGluaXRpYWxpemVkIGFuZCBzZXQuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYW55IGxvZ2ljIHRoYXQgbWlnaHQgcG90ZW50aWFsbHkgbWlzaWRlbnRpZnkgYSBkZXZpY2UsIG9yIGFueSBjb2RlIHBhdGhzIHRoYXQgY291bGQgbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yIGluIGEgdmlydHVhbGl6ZWQgb3IgVVNCLWNvbm5lY3RlZCBzY2VuYXJpby4gSSYjMzk7bSBsb29raW5nIGZvciBjbHVlcyBpbiB0aGUgaW5pdGlhbCBzZXR1cCBvZiB0aGlzIGNoaXAgaWRlbnRpZmljYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7LVx1MDAzZWNoaXAuZGV2X2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5OTk4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZToKCioqRmluZGluZyB0aGUgT3JpZ2luIG9mIG10NzZfY2hpcCBhbmQgUmVsYXRlZCBWYXJpYWJsZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGRlZmluaXRpb24gb2YgYG10NzZfY2hpcGAsIGFuZCB1bmRlcnN0YW5kIHdoZXJlIGBkZXYtJmd0O2NoaXBgIGFuZCBgY2hpcF9pZGAgYXJlIGJlaW5nIGFzc2lnbmVkIHRoZWlyIHZhbHVlcy4gVGhpcyB1c3VhbGx5IG1lYW5zIHN0YXJ0aW5nIHdpdGggYSBncmVwIHNlYXJjaCBhY3Jvc3MgdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dC4gSXMgdGhpcyBhIHNwZWNpZmljIGRyaXZlcj8gSXMgYG10NzZfY2hpcGAgYSBzdHJ1Y3R1cmUsIGEgbWFjcm8sIG9yIHNvbWV0aGluZyBlbHNlPyBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgYnJvYWRlciBzZWFyY2ggZm9yIGBtdDc2X2NoaXBgIGFuZCBpdHMgdXNlcy4gVGhlbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBkZXYtJmd0O2NoaXBgICh3aGljaCBpcyBsaWtlbHkgYSBtZW1iZXIgb2YgYSBkZXZpY2Ugc3RydWN0dXJlKSBhbmQgYGNoaXBfaWRgLiBJcyBgY2hpcF9pZGAgc29tZSBraW5kIG9mIGlkZW50aWZpZXI/IElzIGBkZXYtJmd0O2NoaXBgIGEgcG9pbnRlciB0byBzb21ldGhpbmcgZWxzZT8gVW5kZXJzdGFuZGluZyB0aGlzIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgY29uZmlndXJhdGlvbiBmbG93LiBJJiMzOTtsbCBuZWVkIHRvIGZvbGxvdyB0aGUgY29kZSBwYXRocyB3aGVyZSB0aGVzZSBhcmUgdXNlZCBhbmQvb3Igc2V0LCBsb29raW5nIGZvciBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgcHJvYmUgZnVuY3Rpb25zLCBhbmQgYW55IG90aGVyIHBsYWNlcyB3aGVyZSBoYXJkd2FyZSBpZGVudGlmaWNhdGlvbiBvciBzZXR1cCBpcyBsaWtlbHkgb2NjdXJyaW5nLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGVzZSB2YXJpYWJsZXMgcmVsYXRlIGFuZCB3aGVyZSB0aGV5IGFyZSBzZXQgaXMgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRlc2lnbiBhbmQgb3BlcmF0aW9uIG9mIHRoaXMgZHJpdmVyLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X2NoaXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEyMjc9Ym9vbCBtdDc2X3BjaV9hc3BtX3N1cHBvcnRlZChzdHJ1Y3QgcGNpX2RldiAqcGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTIyOTpzdGF0aWMgaW5saW5lIHUxNiBtdDc2X2NoaXAoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjMwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMjYxPXN0YXRpYyBpbmxpbmUgaW50IG10NzZfd2VkX2RtYV9zZXR1cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEyNjg6I2RlZmluZSBtdDc2eHhfY2hpcChkZXYpIG10NzZfY2hpcChcdTAwMjYoKGRldiktXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjY5LSNkZWZpbmUgbXQ3Nnh4X3JldihkZXYpIG10NzZfcmV2KFx1MDAyNigoZGV2KS1cdTAwM2VtdDc2KSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYz0zMTU9c3RhdGljIHZvaWQgbXQ3NjE1X2NhbF9mcmVlX2RhdGEoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0zMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzozMjI6XHRzd2l0Y2ggKG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTMyMy1cdGNhc2UgMHg3NjIyOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jPTE2OTY9aW50IG10NzYxNV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE3MTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYzoxNzExOlx0c3dpdGNoIChtdDc2X2NoaXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNzEyLVx0Y2FzZSAweDc2MjI6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM9MTc0Nz1pbnQgbXQ3NjE1X21jdV9zZXRfZWVwcm9tKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmMtMTc1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jOjE3NjA6XHRzd2l0Y2ggKG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE3NjEtXHRjYXNlIDB4NzYyMjpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MTc1PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5MjUoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMTc2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoxNzc6XHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3OTI1O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE3OC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTE4MD1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTIwKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE4MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MTgyOlx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4NzkyMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xODMtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0xODU9c3RhdGljIGlubGluZSBib29sIGlzX210NzkwMihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xODYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjE4NzpcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc5MDI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMTg4LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MTkwPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5MjIoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMTkxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoxOTI6XHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3OTIyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE5My19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTE5NT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfY29ubmFjMihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xOTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjE5NzpcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc5NjEgfHwgaXNfbXQ3OTIyKGRldikgfHwgaXNfbXQ3OTIwKGRldikgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xOTgtXHRcdFx0XHRpc19tdDc5MDIoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjAxPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2NjMoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjAyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoyMDM6XHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3NjYzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIwNC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTIwNj1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTE1KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIwNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjA4Olx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4NzkxNTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMDktfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yMTE9c3RhdGljIGlubGluZSBib29sIGlzX210NzkxNihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMTIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjIxMzpcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc5MDY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjE0LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjE2PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5ODEoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjE3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoyMTg6XHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3OTgxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIxOS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTIyMT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTg2KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIyMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjIzOlx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4Nzk4NjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMjQtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yMzE9c3RhdGljIGlubGluZSBib29sIGlzX210Nzk5NihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMzIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjIzMzpcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc5OTA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjM0LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjM2PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5OTIoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjM3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoyMzg6XHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3OTkyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIzOS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTI0MT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTkwKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI0Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjQzOlx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4Nzk5MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNDQtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yNTE9c3RhdGljIGlubGluZSBib29sIGlzX210NzYyMihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjI1NjpcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MjI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjU3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjU5PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MTUoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjYwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoyNjE6XHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3NjE1IHx8IG10NzZfY2hpcChkZXYpID09IDB4NzYxMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNjItfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yNjQ9c3RhdGljIGlubGluZSBib29sIGlzX210NzYxMShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNjUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjI2NjpcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MTE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjY3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9Mjc0PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2X2Z3X3R4cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNzUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjI3NjpcdHN3aXRjaCAobXQ3Nl9jaGlwKGRldikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNzctXHRjYXNlIDB4Nzk2MTpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaD0zMT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3NjEwZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaC0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oOjM2Olx0cmV0dXJuIG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikgPT0gMHg3NjEwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmgtMzctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oPTM5PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MzAoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaC00MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaDo0MTpcdHJldHVybiBtdDc2X2NoaXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID09IDB4NzYzMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oLTQyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2kuYz05NT1zdGF0aWMgaW50IG10NzZ4MGVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgYm9vbCByZXN1bWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmMtMTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmM6MTIwOlx0aWYgKG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikgPT0gMHg3NjEwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2kuYy0xMjEtXHRcdHUxNiB2YWw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpX21jdS5jPTEzPXN0YXRpYyBpbnQgbXQ3NngwZV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpX21jdS5jLTE0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaV9tY3UuYzoxNTpcdGJvb2wgaXNfY29tYm9fY2hpcCA9IG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikgIT0gMHg3NjEwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpX21jdS5jLTE2LVx0dTMyIHZhbCwgaWxtX2xlbiwgZGxtX2xlbiwgb2Zmc2V0ID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaD0yMjc9c3RhdGljIGlubGluZSBib29sIGlzX210NzZ4MChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oLTIyOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaDoyMjk6XHRyZXR1cm4gbXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSA9PSAweDc2MTAgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oOjIzMDpcdCAgICAgICBtdDc2X2NoaXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID09IDB4NzYzMCB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmg6MjMxOlx0ICAgICAgIG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikgPT0gMHg3NjUwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmgtMjMyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaD0yMzQ9c3RhdGljIGlubGluZSBib29sIGlzX210NzZ4MihzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oLTIzNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaDoyMzY6XHRyZXR1cm4gbXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSA9PSAweDc2MTIgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oOjIzNzpcdCAgICAgICBtdDc2X2NoaXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID09IDB4NzYzMiB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmg6MjM4Olx0ICAgICAgIG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikgPT0gMHg3NjYyIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaDoyMzk6XHQgICAgICAgbXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSA9PSAweDc2MDI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaC0yNDAtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9kZnMuYz04MjQ9dm9pZCBtdDc2eDAyX2Rmc19pbml0X3BhcmFtcyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfZGZzLmMtODM5LVx0XHRtdDc2X3dyKGRldiwgTVRfQkJQKERGUywgMSksIDB4Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfZGZzLmM6ODQwOlx0XHRpZiAobXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSA9PSAweDc2MTAgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9kZnMuYzo4NDE6XHRcdCAgICBtdDc2X2NoaXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID09IDB4NzYzMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9kZnMuYy04NDItXHRcdFx0bXQ3Nl93cihkZXYsIE1UX0JCUChJQkksIDExKSwgMHhmZGU4MDgxKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9tdDc2eDIuaD0yNj1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3NjEyKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngyLmgtMjcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngyLmg6Mjg6XHRyZXR1cm4gbXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSA9PSAweDc2MTI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9tdDc2eDIuaC0yOS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYz04OT1tdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTMyICpudW0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTkwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6OTE6XHRzd2l0Y2ggKG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtOTItXHRjYXNlIDB4NzkxNTpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTMwMj1zdGF0aWMgc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqbXQ3OTE1X2NvcmVkdW1wX2J1aWxkKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zMzgtXHRkdW1wLVx1MDAzZXR2X25zZWMgPSBjcmFzaF9kYXRhLVx1MDAzZXRpbWVzdGFtcC50dl9uc2VjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozMzk6XHRkdW1wLVx1MDAzZWRldmljZV9pZCA9IG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM0MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYz02Nz1zdGF0aWMgY2hhciAqbXQ3OTE1X2VlcHJvbV9uYW1lKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYy02OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYzo2OTpcdHN3aXRjaCAobXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmMtNzAtXHRjYXNlIDB4NzkxNTpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYz0zNjM9bXQ3OTE1X2VlcHJvbV9oYXNfYmFja2dyb3VuZF9yYWRhcihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5jLTM2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5jOjM2OTpcdHN3aXRjaCAobXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmMtMzcwLVx0Y2FzZSAweDc5MTU6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTU1NT1tdDc5MTVfaW5pdF9sZWRfbXV4KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTU2MC1cdGlmIChkZXYtXHUwMDNlZGJkY19zdXBwb3J0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6NTYxOlx0XHRzd2l0Y2ggKG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01NjItXHRcdGNhc2UgMHg3OTE1OlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01ODMtXHR9IGVsc2UgaWYgKGRldi1cdTAwM2VtcGh5LmxlZHMucGluKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6NTg0Olx0XHRzd2l0Y2ggKG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01ODUtXHRcdGNhc2UgMHg3OTE1OlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy02MDAtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjYwMTpcdFx0c3dpdGNoIChtdDc2X2NoaXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNjAyLVx0XHRjYXNlIDB4NzkxNTpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0xMS1cdGNoYXIgKl9mdztcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MTI6XHRzd2l0Y2ggKG10NzZfY2hpcChcdTAwMjYoX2RldiktXHUwMDNlbXQ3NikpIHtcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMTMtXHRjYXNlIDB4NzkxNTpcdFx0XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg9NDUxPXN0YXRpYyBpbmxpbmUgY2hhciAqbXQ3OTJ4X3JhbV9uYW1lKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTQ1Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oOjQ1MzpcdHN3aXRjaCAobXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC00NTQtXHRjYXNlIDB4NzkwMjpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oPTQ2Nz1zdGF0aWMgaW5saW5lIGNoYXIgKm10NzkyeF9wYXRjaF9uYW1lKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTQ2OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oOjQ2OTpcdHN3aXRjaCAobXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC00NzAtXHRjYXNlIDB4NzkwMjpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jPTQ4PW10Nzk5Nl9jb3JlZHVtcF9nZXRfbWVtX2xheW91dChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCB1MzIgKm51bSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNDkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo1MDpcdHN3aXRjaCAobXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy01MS1cdGNhc2UgTVQ3OTk2X0RFVklDRV9JRDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jPTE2Mj1zdGF0aWMgc3RydWN0IG10Nzk5Nl9jb3JlZHVtcCAqbXQ3OTk2X2NvcmVkdW1wX2J1aWxkKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0xOTgtXHRkdW1wLVx1MDAzZXR2X25zZWMgPSBjcmFzaF9kYXRhLVx1MDAzZXRpbWVzdGFtcC50dl9uc2VjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoxOTk6XHRkdW1wLVx1MDAzZWRldmljZV9pZCA9IG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTIwMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYz00Nj1zdGF0aWMgdm9pZCBtdDc5OTZfZG1hX2NvbmZpZyhzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6Njg6XHRzd2l0Y2ggKG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTY5LVx0Y2FzZSBNVDc5OTJfREVWSUNFX0lEOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jPTI3PXN0YXRpYyBjaGFyICptdDc5OTZfZWVwcm9tX25hbWUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTI4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jOjI5Olx0c3dpdGNoIChtdDc2X2NoaXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zMC1cdGNhc2UgTVQ3OTkyX0RFVklDRV9JRDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYz0zODk9Ym9vbCBtdDc5OTZfZWVwcm9tX2hhc19iYWNrZ3JvdW5kX3JhZGFyKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zOTAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM6MzkxOlx0c3dpdGNoIChtdDc2X2NoaXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zOTItXHRjYXNlIE1UNzk5Nl9ERVZJQ0VfSUQ6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTExODI9c3RhdGljIGludCBtdDc5OTZfdmFyaWFudF90eXBlX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTE4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxMTg3Olx0c3dpdGNoIChtdDc2X2NoaXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTE4OC1cdGNhc2UgTVQ3OTk2X0RFVklDRV9JRDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0xNC1cdGNoYXIgKl9mdztcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MTU6XHRzd2l0Y2ggKG10NzZfY2hpcChcdTAwMjYoX2RldiktXHUwMDNlbXQ3NikpIHtcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMTYtXHRjYXNlIE1UNzk5Ml9ERVZJQ0VfSUQ6XHRcdFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz00MTA4PW10Nzk5Nl9tY3VfZ2V0X2NhbF9mcmVlX2RhdGEoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy00MTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6NDE2MzpcdHN3aXRjaCAobXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNDE2NC1cdGNhc2UgTVQ3OTk2X0RFVklDRV9JRDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jPTkxMD1tdDc2dV9hY190b19od3Eoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLCB1OCBxaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy05MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jOjkxNDpcdHN3aXRjaCAobXQ3Nl9jaGlwKGRldikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmMtOTE1LVx0Y2FzZSAweDc2NjM6IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg1NzMKCQkJCQkJCW91dHB1dDogMTk2CgkJCQkJCQl0aG91Z2h0czogNzA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIE1UNzYxNSBEcml2ZXIgUGF0Y2ggUmVhY2hhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBpbnRvIHRoaXMgcGF0Y2ggYW5kIGRldGVybWluZWQgaXRzIHJlYWNoYWJpbGl0eSBmb3IgZnV6emluZy4gVGhlIGtleSBpcyB0aGF0IHRoZSBtb2RpZmljYXRpb24gYWZmZWN0cyB0aGUgYG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5YCBmdW5jdGlvbiwgZm91bmQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuY2AuCgpSaWdodCBvZmYgdGhlIGJhdCwgdGhlIGZ1bmN0aW9uIGJlZ2lucyB3aXRoIGEgY2hlY2sgdXNpbmcgYGlzX210NzYxNSgmYW1wO2Rldi0mZ3Q7bXQ3NilgLiBUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBpc3N1ZS4gVGhpcyBmdW5jdGlvbiAqb25seSogcmV0dXJucyB0cnVlIGZvciB0aGUgTWVkaWFUZWsgTVQ3NjE1IGFuZCBNVDc2MTEgY2hpcHNldHMsIHNwZWNpZmljYWxseSB0aGUgKlBDSWUqIHZhcmlhbnRzLgoKTm93LCBjb25zaWRlciB0aGUgZW52aXJvbm1lbnQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aC4gU3l6a2FsbGVyIGFuZCBzdGFuZGFyZCB2aXJ0dWFsaXplZCBzZXR1cHMgbGlrZSBRRU1VIGFuZCBHQ0UgKmRvbiYjMzk7dCogZW11bGF0ZSB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcmVxdWlyZWQgYnkgdGhlc2UgUENJZSB3aXJlbGVzcyBOSUNzLiBUaGVzZSBhcmUgcmVhbCwgdGFuZ2libGUgUENJZSBjYXJkcyB0aGF0IG5lZWQgdG8gYmUgcGx1Z2dlZCBpbnRvIGEgcGh5c2ljYWwgc3lzdGVtLiBUaGVyZSYjMzk7cyBubyBlbXVsYXRpb24gZm9yIHRoYXQgbGV2ZWwgb2YgZGV0YWlsLgoKQ29uc2VxdWVudGx5LCBhbnkgVVNCIG9yIFNESU8gZGV2aWNlcyB1c2luZyBNZWRpYVRlayBjaGlwcyAobGlrZSB0aGUgTVQ3NjYzVSkgd2lsbCBpbW1lZGlhdGVseSBnZXQgcmVqZWN0ZWQuIFRoZWlyIGNoaXAgSURzIHdpbGwgdHJpZ2dlciB0aGUgYCFpc19tdDc2MTVgIGNvbmRpdGlvbiBhbmQgbGVhZCB0byBhIGAtRU9QTk9UU1VQUGAgcmV0dXJuICpiZWZvcmUqIGhpdHRpbmcgYW55IG9mIHRoZSBtb2RpZmllZCBjb2RlLCBpbmNsdWRpbmcgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCBEQkRDIGNsZWFudXAgcGF0aHMuIFNvLCB0aGF0IG1vZGlmaWVkIHNlY3Rpb24sIHRoZSB0YXJnZXQgb2YgdGhpcyBwYXRjaCwgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIHVuZGVyIHRob3NlIGNvbmRpdGlvbnMuCgpFc3NlbnRpYWxseSwgdGhlIHBhdGNoIHRhcmdldHMgaGFyZHdhcmUgdGhhdCBpcyBmdW5kYW1lbnRhbGx5IHVuYXZhaWxhYmxlIGluIHRoZSB0YXJnZXQgZnV6emluZyBlbnZpcm9ubWVudC4gVGhlIHBhdGNoIHJlcXVpcmVzIHRoYXQgTWVkaWFUZWsgTVQ3NjE1L01UNzYxMSBQQ0llIGhhcmR3YXJlIGlzIGluc3RhbnRpYXRlZCwgd2hpY2ggaXMgaW1wb3NzaWJsZSBpbiBvdXIgY3VycmVudCBzZXR1cC4KClRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLCBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBmdW5jdGlvbiBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMgZXhwbGljaXRseSBjaGVja3MgYGlmICghaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSkgcmV0dXJuIC1FT1BOT1RTVVBQO2AgYmVmb3JlIGV4ZWN1dGluZyBhbnkgbW9kaWZpZWQgbG9naWMuIFRoZSBpc19tdDc2MTUgY2hlY2sgb25seSBzdWNjZWVkcyBmb3IgTVQ3NjE1IGFuZCBNVDc2MTEgZGV2aWNlcywgd2hpY2ggYXJlIHBoeXNpY2FsIFBDSWUgd2lyZWxlc3MgTklDcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMuIFVTQi9TRElPIHZhcmlhbnRzIChzdWNoIGFzIE1UNzY2MykgYmFpbCBvdXQgaW1tZWRpYXRlbHkgYXQgdGhlIGlzX210NzYxNSBjaGVjayBhbmQgY2Fubm90IGV4ZWN1dGUgdGhlIG1vZGlmaWVkIGNvZGUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgZnVuY3Rpb24gbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jIGV4cGxpY2l0bHkgY2hlY2tzIGBpZiAoIWlzX210NzYxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHJldHVybiAtRU9QTk9UU1VQUDtgIGJlZm9yZSBleGVjdXRpbmcgYW55IG1vZGlmaWVkIGxvZ2ljLiBUaGUgaXNfbXQ3NjE1IGNoZWNrIG9ubHkgc3VjY2VlZHMgZm9yIE1UNzYxNSBhbmQgTVQ3NjExIGRldmljZXMsIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIHdpcmVsZXNzIE5JQ3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBVU0IvU0RJTyB2YXJpYW50cyAoc3VjaCBhcyBNVDc2NjMpIGJhaWwgb3V0IGltbWVkaWF0ZWx5IGF0IHRoZSBpc19tdDc2MTUgY2hlY2sgYW5kIGNhbm5vdCBleGVjdXRlIHRoZSBtb2RpZmllZCBjb2RlLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0NjowMy4yMjc3MDU4MjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDEyMzMzMDc3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5IGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYyBleHBsaWNpdGx5IGNoZWNrcyBgaWYgKCFpc19tdDc2MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHJldHVybiAtRU9QTk9UU1VQUDtgIGJlZm9yZSBleGVjdXRpbmcgYW55IG1vZGlmaWVkIGxvZ2ljLiBUaGUgaXNfbXQ3NjE1IGNoZWNrIG9ubHkgc3VjY2VlZHMgZm9yIE1UNzYxNSBhbmQgTVQ3NjExIGRldmljZXMsIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIHdpcmVsZXNzIE5JQ3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBVU0IvU0RJTyB2YXJpYW50cyAoc3VjaCBhcyBNVDc2NjMpIGJhaWwgb3V0IGltbWVkaWF0ZWx5IGF0IHRoZSBpc19tdDc2MTUgY2hlY2sgYW5kIGNhbm5vdCBleGVjdXRlIHRoZSBtb2RpZmllZCBjb2RlLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjAzLjIyNzcxMTMxNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzMTMzODIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmQwOTU5NjE5YWU4MzIxZjRiMjBiMzA0MzI0YjE3Y2MxZmEzMGEzNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IFNlcCAxMCAyMjo0NjowMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmNcXG5pbmRleCA0MmUxMWJhMTIwNmVlLi4wMmU1MWIyZDQyZWQ4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuY1xcbkBAIC01NDIsOCArNTQyLDEwIEBAIGludCBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbiBcXG4gXFx0bXQ3NjE1X2NhcF9kYmRjX2VuYWJsZShkZXYpO1xcbiBcXHRtcGh5ID0gbXQ3Nl9hbGxvY19waHkoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Niwgc2l6ZW9mKCpwaHkpLCBcXHUwMDI2bXQ3NjE1X29wcywgTVRfQkFORDEpO1xcbi1cXHRpZiAoIW1waHkpXFxuLVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHRpZiAoIW1waHkpIHtcXG4rXFx0XFx0cmV0ID0gLUVOT01FTTtcXG4rXFx0XFx0Z290byBlcnJvcjtcXG4rXFx0fVxcbiBcXG4gXFx0cGh5ID0gbXBoeS1cXHUwMDNlcHJpdjtcXG4gXFx0cGh5LVxcdTAwM2VkZXYgPSBkZXY7XFxuQEAgLTU3Myw3ICs1NzUsNyBAQCBpbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4gXFxuIFxcdHJldCA9IG10NzZfZWVwcm9tX292ZXJyaWRlKG1waHkpO1xcbiBcXHRpZiAocmV0KVxcbi1cXHRcXHRyZXR1cm4gcmV0O1xcbitcXHRcXHRnb3RvIGVycm9yX2ZyZWVfaHc7XFxuIFxcbiBcXHQvKiBzZWNvbmQgcGh5IGNhbiBvbmx5IGhhbmRsZSA1IEdIeiAqL1xcbiBcXHRtcGh5LVxcdTAwM2VjYXAuaGFzXzVnaHogPSB0cnVlO1xcbkBAIC01OTEsNyArNTkzLDE0IEBAIGludCBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbiBcXHRyZXQgPSBtdDc2X3JlZ2lzdGVyX3BoeShtcGh5LCB0cnVlLCBtdDc2X3JhdGVzLFxcbiBcXHRcXHRcXHRcXHRBUlJBWV9TSVpFKG10NzZfcmF0ZXMpKTtcXG4gXFx0aWYgKHJldClcXG4tXFx0XFx0aWVlZTgwMjExX2ZyZWVfaHcobXBoeS1cXHUwMDNlaHcpO1xcbitcXHRcXHRnb3RvIGVycm9yX2ZyZWVfaHc7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rXFxuK2Vycm9yX2ZyZWVfaHc6XFxuK1xcdGllZWU4MDIxMV9mcmVlX2h3KG1waHktXFx1MDAzZWh3KTtcXG4rZXJyb3I6XFxuK1xcdG10NzYxNV9jYXBfZGJkY19kaXNhYmxlKGRldik7XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjAzLjY2MTU1NzcxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo3OTY4OTQ2NjU3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgZnVuY3Rpb24gbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jIGV4cGxpY2l0bHkgY2hlY2tzIGBpZiAoIWlzX210NzYxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkgcmV0dXJuIC1FT1BOT1RTVVBQO2AgYmVmb3JlIGV4ZWN1dGluZyBhbnkgbW9kaWZpZWQgbG9naWMuIFRoZSBpc19tdDc2MTUgY2hlY2sgb25seSBzdWNjZWVkcyBmb3IgTVQ3NjE1IGFuZCBNVDc2MTEgZGV2aWNlcywgd2hpY2ggYXJlIHBoeXNpY2FsIFBDSWUgd2lyZWxlc3MgTklDcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMuIFVTQi9TRElPIHZhcmlhbnRzIChzdWNoIGFzIE1UNzY2MykgYmFpbCBvdXQgaW1tZWRpYXRlbHkgYXQgdGhlIGlzX210NzYxNSBjaGVjayBhbmQgY2Fubm90IGV4ZWN1dGUgdGhlIG1vZGlmaWVkIGNvZGUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmZDA5NTk2MTlhZTgzMjFmNGIyMGIzMDQzMjRiMTdjYzFmYTMwYTM2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMjI6NDY6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmNcbmluZGV4IDQyZTExYmExMjA2ZWUuLjAyZTUxYjJkNDJlZDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuY1xuQEAgLTU0Miw4ICs1NDIsMTAgQEAgaW50IG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG4gXG4gXHRtdDc2MTVfY2FwX2RiZGNfZW5hYmxlKGRldik7XG4gXHRtcGh5ID0gbXQ3Nl9hbGxvY19waHkoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHNpemVvZigqcGh5KSwgXHUwMDI2bXQ3NjE1X29wcywgTVRfQkFORDEpO1xuLVx0aWYgKCFtcGh5KVxuLVx0XHRyZXR1cm4gLUVOT01FTTtcbitcdGlmICghbXBoeSkge1xuK1x0XHRyZXQgPSAtRU5PTUVNO1xuK1x0XHRnb3RvIGVycm9yO1xuK1x0fVxuIFxuIFx0cGh5ID0gbXBoeS1cdTAwM2Vwcml2O1xuIFx0cGh5LVx1MDAzZWRldiA9IGRldjtcbkBAIC01NzMsNyArNTc1LDcgQEAgaW50IG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG4gXG4gXHRyZXQgPSBtdDc2X2VlcHJvbV9vdmVycmlkZShtcGh5KTtcbiBcdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4rXHRcdGdvdG8gZXJyb3JfZnJlZV9odztcbiBcbiBcdC8qIHNlY29uZCBwaHkgY2FuIG9ubHkgaGFuZGxlIDUgR0h6ICovXG4gXHRtcGh5LVx1MDAzZWNhcC5oYXNfNWdoeiA9IHRydWU7XG5AQCAtNTkxLDcgKzU5MywxNCBAQCBpbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbiBcdHJldCA9IG10NzZfcmVnaXN0ZXJfcGh5KG1waHksIHRydWUsIG10NzZfcmF0ZXMsXG4gXHRcdFx0XHRBUlJBWV9TSVpFKG10NzZfcmF0ZXMpKTtcbiBcdGlmIChyZXQpXG4tXHRcdGllZWU4MDIxMV9mcmVlX2h3KG1waHktXHUwMDNlaHcpO1xuK1x0XHRnb3RvIGVycm9yX2ZyZWVfaHc7XG4rXG4rXHRyZXR1cm4gMDtcbitcbitlcnJvcl9mcmVlX2h3OlxuK1x0aWVlZTgwMjExX2ZyZWVfaHcobXBoeS1cdTAwM2Vodyk7XG4rZXJyb3I6XG4rXHRtdDc2MTVfY2FwX2RiZGNfZGlzYWJsZShkZXYpO1xuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0NjowMy42NjE1NTkwOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcxMjY4NzEwNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRldGVybWluZSB0aGUgdGFyZ2V0IGVudmlyb25tZW50OiBpcyB0aGlzIHNvbWV0aGluZyB0aGF0J3MgZ29pbmcgdG8gd29yayBzZWFtbGVzc2x5IGluIG15IHR5cGljYWwgdmlydHVhbGl6ZWQgc2V0dXBzIOKAkyB0aGluayBRRU1VIG9yIEdDRSDigJMgb3IgYXJlIHdlIGRlYWxpbmcgd2l0aCBhIGRyaXZlciB0aGF0J3MgZnVuZGFtZW50YWxseSB0aWVkIHRvIHBoeXNpY2FsIGhhcmR3YXJlPyBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIGNhbiBhY3R1YWxseSB0ZXN0IHRoaXMuXG5cblRoZSBwYXRjaCBpdHNlbGYgdG91Y2hlcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIGZ1bmN0aW9uLiBUaGF0IGdpdmVzIG1lIGEgc3RhcnRpbmcgcG9pbnQuIE5vdywgSSBuZWVkIHRvIGdldCBhIGJyb2FkZXIgcGljdHVyZS4gSSdtIGdvaW5nIHRvIHNlYXJjaCB0aGUgY29kZWJhc2UgZm9yIFwibXQ3NjE1XCIgdG8gZmlndXJlIG91dCB3aGF0IHR5cGUgb2YgYmVhc3QgdGhpcyBkcml2ZXIgYWN0dWFsbHkgaXMuIElzIGl0IFBDST8gVVNCPyBQbGF0Zm9ybS1zcGVjaWZpYywgbGlrZSBhbiBTb0MgaW50ZWdyYXRpb24/IEtub3dpbmcgdGhhdCB3aWxsIHNpZ25pZmljYW50bHkgaW1wYWN0IG15IHVuZGVyc3RhbmRpbmcgb2YgcG90ZW50aWFsIGRlcGVuZGVuY2llcywgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLCBhbmQgdGVzdGluZyBwcm9jZWR1cmVzLiBMZXQncyBzZWUgd2hhdCB0aGUgY29kZWJhc2UgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI2MSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjEwLjc4ODQzMzgxMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDkyNTE1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2MTVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDQ0NjUgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz00Nj1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQ3OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNDgtc291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT00Mz1vYmotJChDT05GSUdfTVQ3NjAzRSkgKz0gbXQ3NjAzL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX01UNzYxNV9DT01NT04pICs9IG10NzYxNS9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTQ1LW9iai0kKENPTkZJR19NVDc5MTVFKSArPSBtdDc5MTUvXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9NYWtlZmlsZS0yLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01UNzYxNV9DT01NT04pICs9IG10NzYxNS1jb21tb24ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX01UNzYxNUUpICs9IG10NzYxNWUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlLTUtb2JqLSQoQ09ORklHX01UNzY2M19VU0JfU0RJT19DT01NT04pICs9IG10NzY2My11c2Itc2Rpby1jb21tb24ub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU9OT1DRkxBR1NfdHJhY2UubyA6PSAtSSQoc3JjKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlOjExOm10NzYxNS1jb21tb24teSA6PSBtYWluLm8gaW5pdC5vIG1jdS5vIGVlcHJvbS5vIG1hYy5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9NYWtlZmlsZS0xMi1cXHRcXHQgICBkZWJ1Z2ZzLm8gdHJhY2Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlOjEzOm10NzYxNS1jb21tb24tJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlOjE1Om10NzYxNWUteSA6PSBwY2kubyBwY2lfaW5pdC5vIGRtYS5vIHBjaV9tYWMubyBtbWlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9NYWtlZmlsZToxNjptdDc2MTVlLSQoQ09ORklHX01UNzYyMl9XTUFDKSArPSBzb2Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlLTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjM6I2luY2x1ZGUgXFxcIm10NzYxNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz01PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NjptdDc2MTVfcmVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy03LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6ODpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTA6XFx0bXQ3NjE1X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTEtXFx0bXQ3Nl93cihkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgdmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTI6XFx0bXQ3NjE1X211dGV4X3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxODptdDc2MTVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMDpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIyOlxcdG10NzYxNV9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIzLVxcdCp2YWwgPSBtdDc2X3JyKGRldiwgZGV2LVxcdTAwM2VtdDc2LmRlYnVnZnNfcmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjQ6XFx0bXQ3NjE1X211dGV4X3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjI5OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3NjE1X3JlZ19nZXQsIG10NzYxNV9yZWdfc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zMC1cXHRcXHRcXHQgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0zMj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMzOm10NzYxNV9yYWRhcl9wYXR0ZXJuX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjM1OlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zNi1cXHRpbnQgZXJyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6Mzg6XFx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzktXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0MTpcXHRtdDc2MTVfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0MjpcXHRlcnIgPSBtdDc2MTVfbWN1X3JkZF9zZW5kX3BhdHRlcm4oZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDM6XFx0bXQ3NjE1X211dGV4X3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9NDg9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmFkYXJfcGF0dGVybiwgTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDk6XFx0XFx0XFx0IG10NzYxNV9yYWRhcl9wYXR0ZXJuX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTE6c3RhdGljIGludCBtdDc2MTVfY29uZmlnKHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTUyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTM6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU0LVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1NjpcXHRtdDc2MTVfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01Ny1cXHRyZXQgPSBtdDc2X2Nvbm5hY19tY3VfY2hpcF9jb25maWcoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU4OlxcdG10NzYxNV9tdXRleF9yZWxlYXNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo2MzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19jb25maWcsIE5VTEwsIG10NzYxNV9jb25maWcsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTY1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NjY6bXQ3NjE1X3Njc19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNjcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo2ODpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6Njk6XFx0c3RydWN0IG10NzYxNV9waHkgKmV4dF9waHk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo3MTpcXHRpZiAoIW10NzYxNV93YWl0X2Zvcl9tY3VfaW5pdChkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy03Mi1cXHRcXHRyZXR1cm4gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjc0OlxcdG10NzYxNV9tYWNfc2V0X3NjcyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHksIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjc1OlxcdGV4dF9waHkgPSBtdDc2MTVfZXh0X3BoeShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy03Ni1cXHRpZiAoZXh0X3BoeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6Nzc6XFx0XFx0bXQ3NjE1X21hY19zZXRfc2NzKGV4dF9waHksIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTc4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTgyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6ODM6bXQ3NjE1X3Njc19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTg0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6ODU6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTg2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo5MjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19zY3MsIG10NzYxNV9zY3NfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo5MzpcXHRcXHRcXHQgbXQ3NjE1X3Njc19zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTk1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6OTY6bXQ3NjE1X3BtX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy05Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjk4OlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy05OS1cXHRzdHJ1Y3QgbXQ3Nl9jb25uYWNfcG0gKnBtID0gXFx1MDAyNmRldi1cXHUwMDNlcG07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxMDI6XFx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTAzLVxcdFxcdHJldHVybiAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjEwNTpcXHRpZiAoIW10NzYxNV9maXJtd2FyZV9vZmZsb2FkKGRldikgfHwgbXQ3Nl9pc191c2IoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTEwNi1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTM2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTM3Om10NzYxNV9wbV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTEzOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjEzOTpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTQwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTQ2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtLCBtdDc2MTVfcG1fZ2V0LCBtdDc2MTVfcG1fc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTQ4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTQ5Om10NzYxNV9wbV9zdGF0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE1MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjE1MTpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXFx1MDAzZXByaXZhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xNTItXFx0c3RydWN0IG10NzZfY29ubmFjX3BtICpwbSA9IFxcdTAwMjZkZXYtXFx1MDAzZXBtO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTE2OD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjE2OTptdDc2MTVfcG1faWRsZV90aW1lb3V0X3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xNzAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxNzE6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE3Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0xNzg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxNzk6bXQ3NjE1X3BtX2lkbGVfdGltZW91dF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE4MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjE4MTpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTgyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTg4OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtX2lkbGVfdGltZW91dCwgbXQ3NjE1X3BtX2lkbGVfdGltZW91dF9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjE4OTpcXHRcXHRcXHQgbXQ3NjE1X3BtX2lkbGVfdGltZW91dF9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0xOTE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxOTI6bXQ3NjE1X2RiZGNfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE5My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjE5NDpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxOTY6XFx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTk3LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE5OS1cXHRpZiAodmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMDA6XFx0XFx0bXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjAxLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjAyOlxcdFxcdG10NzYxNV91bnJlZ2lzdGVyX2V4dF9waHkoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTIwNz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIwODptdDc2MTVfZGJkY19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIwOS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIxMDpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMTI6XFx0KnZhbCA9ICEhbXQ3NjE1X2V4dF9waHkoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjE3OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2RiZGMsIG10NzYxNV9kYmRjX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjE4OlxcdFxcdFxcdCBtdDc2MTVfZGJkY19zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yMjA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMjE6bXQ3NjE1X2Z3X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMjIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMjM6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjI1OlxcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIyNi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIzMDpcXHRtdDc2MTVfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMzE6XFx0bXQ3NjE1X21jdV9md19sb2dfMl9ob3N0KGRldiwgZGV2LVxcdTAwM2Vmd19kZWJ1ZyA/IDIgOiAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjMyOlxcdG10NzYxNV9tdXRleF9yZWxlYXNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIzMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yMzc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMzg6bXQ3NjE1X2Z3X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjM5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjQwOlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyNDc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWcsIG10NzYxNV9md19kZWJ1Z19nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjI0ODpcXHRcXHRcXHQgbXQ3NjE1X2Z3X2RlYnVnX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTI1MD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjI1MTptdDc2MTVfcmVzZXRfdGVzdF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjUyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjUzOlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNTQtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyNTY6XFx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjU3LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjY1OlxcdG10NzYxNV9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI2Ni1cXHRtdDc2X3R4X3F1ZXVlX3NrYl9yYXcoZGV2LCBkZXYtXFx1MDAzZW1waHkucV90eFswXSwgc2tiLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjY3OlxcdG10NzYxNV9tdXRleF9yZWxlYXNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yNzI9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXRfdGVzdCwgTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjczOlxcdFxcdFxcdCBtdDc2MTVfcmVzZXRfdGVzdF9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yNzU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6Mjc2Om10NzYxNV9hbXBkdV9zdGF0X3JlYWRfcGh5KHN0cnVjdCBtdDc2MTVfcGh5ICpwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI3Ny1cXHRcXHRcXHQgICBzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI3OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjI3OTpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjgwLVxcdHUzMiByZWcgPSBpc19tdDc2NjMoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgPyBNVF9NSUJfQVJORygwKSA6IE1UX0FHR19BU1JDUjA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MzExPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzEyOm10NzYxNV9hbXBkdV9zdGF0X3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zMTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozMTQ6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGZpbGUtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTMxNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzE2OlxcdG10NzYxNV9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTMxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzE4OlxcdG10NzYxNV9hbXBkdV9zdGF0X3JlYWRfcGh5KFxcdTAwMjZkZXYtXFx1MDAzZXBoeSwgZmlsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMxOTpcXHRtdDc2MTVfYW1wZHVfc3RhdF9yZWFkX3BoeShtdDc2MTVfZXh0X3BoeShkZXYpLCBmaWxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozMjE6XFx0bXQ3NjE1X211dGV4X3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzIyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTMyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzI2OkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc2MTVfYW1wZHVfc3RhdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTMyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MzI4PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMyOTptdDc2MTVfcmFkaW9fcmVhZF9waHkoc3RydWN0IG10NzYxNV9waHkgKnBoeSwgc3RydWN0IHNlcV9maWxlICpzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zMzAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozMzE6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVxcdTAwM2Vwcml2YXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzMyLVxcdGJvb2wgZXh0X3BoeSA9IHBoeSAhPSBcXHUwMDI2ZGV2LVxcdTAwM2VwaHk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MzQzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzQ0Om10NzYxNV9yYWRpb19yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzQ1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzQ2OlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cXHUwMDNlcHJpdmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzQ4OlxcdG10NzYxNV9yYWRpb19yZWFkX3BoeShcXHUwMDI2ZGV2LVxcdTAwM2VwaHksIHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozNDk6XFx0bXQ3NjE1X3JhZGlvX3JlYWRfcGh5KG10NzYxNV9leHRfcGh5KGRldiksIHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zNTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MzU0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzU1Om10NzYxNV9xdWV1ZXNfYWNxKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzU2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzU3OlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cXHUwMDNlcHJpdmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM1OC1cXHRpbnQgaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozNjA6XFx0bXQ3NjE1X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzYxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6Mzg1OlxcdG10NzYxNV9tdXRleF9yZWxlYXNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM4Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0zOTA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozOTE6bXQ3NjE1X3F1ZXVlc19yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzkyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzkzOlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cXHUwMDNlcHJpdmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM5NC1cXHRzdHJ1Y3Qge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTQxNj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQxNzptdDc2MTVfcmZfcmVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00MTgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0MTk6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDIxOlxcdG10NzYxNV9yZl93cihkZXYsIGRldi1cXHUwMDNlZGVidWdmc19yZl93ZiwgZGV2LVxcdTAwM2VkZWJ1Z2ZzX3JmX3JlZywgdmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDIyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTQyNj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQyNzptdDc2MTVfcmZfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDI4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDI5OlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00MzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQzMTpcXHQqdmFsID0gbXQ3NjE1X3JmX3JyKGRldiwgZGV2LVxcdTAwM2VkZWJ1Z2ZzX3JmX3dmLCBkZXYtXFx1MDAzZWRlYnVnZnNfcmZfcmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDMyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDM2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JmX3JlZywgbXQ3NjE1X3JmX3JlZ19nZXQsIG10NzYxNV9yZl9yZWdfc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00MzctXFx0XFx0XFx0IFxcXCIweCUwOGxseFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9NDM5PXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQ0MDptdDc2MTVfZXh0X21hY19hZGRyX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00NDEtXFx0XFx0XFx0IHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00NDIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0NDM6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDQ0LVxcdHUzMiBsZW4gPSAzMiAqICgoRVRIX0FMRU4gKiAzKSArIDQpICsgMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz00NzM9c3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDc0Om10NzYxNV9leHRfbWFjX2FkZHJfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1c2VyYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00NzUtXFx0XFx0XFx0ICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDc2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDc3OlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQ3OC1cXHR1bnNpZ25lZCBsb25nIGlkeCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9NTI2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfZXh0X21hY19hZGRyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTUyOC1cXHQubGxzZWVrID0gZ2VuZXJpY19maWxlX2xsc2VlayxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTI5OlxcdC5yZWFkID0gbXQ3NjE1X2V4dF9tYWNfYWRkcl9yZWFkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1MzA6XFx0LndyaXRlID0gbXQ3NjE1X2V4dF9tYWNfYWRkcl93cml0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTMxLVxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTUzNT1tdDc2NjNzX3NjaGVkX3F1b3RhX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01MzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1Mzc6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVxcdTAwM2Vwcml2YXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTM4LVxcdHN0cnVjdCBtdDc2X3NkaW8gKnNkaW8gPSBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnNkaW87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1NDg6aW50IG10NzYxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU1NjpcXHRpZiAoaXNfbXQ3NjE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NTctXFx0XFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJ4bWl0LXF1ZXVlc1xcXCIsIGRpcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTU4OlxcdFxcdFxcdFxcdFxcdCAgICBtdDc2MTVfcXVldWVzX3JlYWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NTktXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU2Mi1cXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcImFjcVxcXCIsIGRpcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTYzOlxcdFxcdFxcdFxcdCAgICBtdDc2MTVfcXVldWVzX2FjcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU2NDpcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJhbXBkdV9zdGF0XFxcIiwgMDQwMCwgZGlyLCBkZXYsIFxcdTAwMjZtdDc2MTVfYW1wZHVfc3RhdF9mb3BzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTY1LVxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInNjc1xcXCIsIDA2MDAsIGRpciwgZGV2LCBcXHUwMDI2Zm9wc19zY3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU3MS1cXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcInJ1bnRpbWVfcG1fc3RhdHNcXFwiLCBkaXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU3MjpcXHRcXHRcXHRcXHQgICAgbXQ3NjE1X3BtX3N0YXRzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTczLVxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwicmFkaW9cXFwiLCBkaXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU3NDpcXHRcXHRcXHRcXHQgICAgbXQ3NjE1X3JhZGlvX3JlYWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU3NjpcXHRpZiAoaXNfbXQ3NjE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU3Ny1cXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV91MzIoXFxcImRmc19od19wYXR0ZXJuXFxcIiwgMDQwMCwgZGlyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTYwOC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjYwOTpFWFBPUlRfU1lNQk9MX0dQTChtdDc2MTVfaW5pdF9kZWJ1Z2ZzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6MTA6I2luY2x1ZGUgXFxcIm10NzYxNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTExLSNpbmNsdWRlIFxcXCIuLi9kbWEuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jPTE0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoxNTptdDc2MjJfaW5pdF90eF9xdWV1ZXNfbXVsdGkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0xNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYz00ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6NDU6bXQ3NjE1X2luaXRfdHhfcXVldWVzKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6NTQ6XFx0aWYgKCFpc19tdDc2MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNTUtXFx0XFx0cmV0dXJuIG10NzYyMl9pbml0X3R4X3F1ZXVlc19tdWx0aShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6NjY6c3RhdGljIGludCBtdDc2MTVfcG9sbF90eChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNjcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjY4OlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy03OS1cXHRcXHRtdDc2X2Nvbm5hY19pcnFfZW5hYmxlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6ODA6XFx0XFx0XFx0XFx0ICAgICAgIG10NzYxNV90eF9tY3VfaW50X21hc2soZGV2KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtODEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy04Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzo4NzpzdGF0aWMgaW50IG10NzYxNV9wb2xsX3J4KHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy04OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6ODk6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy05MC1cXHRpbnQgZG9uZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTEwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoxMDU6aW50IG10NzYxNV93YWl0X3BkbWFfYnVzeShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTEwNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0xMTAtXFx0XFx0dTMyIG1hc2sgPSBNVF9QRE1BX1RYX0JVU1kgfCBNVF9QRE1BX1JYX0JVU1k7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6MTExOlxcdFxcdHUzMiByZWcgPSBtdDc2MTVfcmVnX21hcChkZXYsIE1UX1BETUFfQlVTWSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMTEyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjE0MjpzdGF0aWMgdm9pZCBtdDc2MjJfZG1hX3NjaGVkX2luaXQoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0xNDMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjE0NDpcXHR1MzIgcmVnID0gbXQ3NjE1X3JlZ19tYXAoZGV2LCBNVF9ETUFTSERMX0JBU0UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTE0NS1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTE2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoxNjY6c3RhdGljIHZvaWQgbXQ3NjYzX2RtYV9zY2hlZF9pbml0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMTY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTIwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoyMDE6dm9pZCBtdDc2MTVfZG1hX3N0YXJ0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTIxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoyMjA6aW50IG10NzYxNV9kbWFfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTIyMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6MjQ1OlxcdGlmIChpc19tdDc2MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yNDYtXFx0XFx0bXQ3Nl9zZXQoZGV2LCBNVF9XUERNQV9HTE9fQ0ZHLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjI2MDpcXHRyZXQgPSBtdDc2MTVfaW5pdF90eF9xdWV1ZXMoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yNjEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoyNzE6XFx0aWYgKCFpc19tdDc2MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjcyLVxcdCAgICByeF9yaW5nX3NpemUgLz0gMjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoyODE6XFx0cmV0ID0gbXQ3Nl9pbml0X3F1ZXVlcyhkZXYsIG10NzYxNV9wb2xsX3J4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yODItXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yODUtXFx0bmV0aWZfbmFwaV9hZGRfdHgoZGV2LVxcdTAwM2VtdDc2LnR4X25hcGlfZGV2LCBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnR4X25hcGksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6Mjg2OlxcdFxcdFxcdCAgbXQ3NjE1X3BvbGxfdHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI4Ny1cXHRuYXBpX2VuYWJsZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnR4X25hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjI5NTpcXHRtYXNrID0gTVRfSU5UX1JYX0RPTkVfQUxMIHwgbXQ3NjE1X3R4X21jdV9pbnRfbWFzayhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI5Ni1cXHRpZiAoaXNfbXQ3NjYzKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMzAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjMwMzpcXHRtdDc2MTVfZG1hX3N0YXJ0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMzA0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMzA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjMwODp2b2lkIG10NzYxNV9kbWFfY2xlYW51cChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTMwOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy04LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZi5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjk6I2luY2x1ZGUgXFxcIm10NzYxNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTEwLSNpbmNsdWRlIFxcXCJlZXByb20uaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzoxMjpzdGF0aWMgaW50IG10NzYxNV9lZnVzZV9yZWFkKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYsIHUzMiBiYXNlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTEzLVxcdFxcdFxcdCAgICAgdTE2IGFkZHIsIHU4ICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6NDQ6c3RhdGljIGludCBtdDc2MTVfZWZ1c2VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LCB1MzIgYmFzZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy00NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy02NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzo2NjpcXHRcXHRyZXQgPSBtdDc2MTVfZWZ1c2VfcmVhZChkZXYsIGJhc2UsIGksIGJ1ZiArIGkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTY3LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy03My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzo3NDpzdGF0aWMgaW50IG10NzYxNV9lZXByb21fbG9hZChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy03NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy04My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzo4NDpcXHRyZXR1cm4gbXQ3NjE1X2VmdXNlX2luaXQoZGV2LCBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy04NS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6ODc6c3RhdGljIGludCBtdDc2MTVfY2hlY2tfZWVwcm9tKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTg4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jPTEwMT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjEwMjptdDc2MTVfZWVwcm9tX3BhcnNlX2h3X2JhbmRfY2FwKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTAzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTE0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzoxNDQ6c3RhdGljIHZvaWQgbXQ3NjE1X2VlcHJvbV9wYXJzZV9od19jYXAoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0xNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjE0OTpcXHRtdDc2MTVfZWVwcm9tX3BhcnNlX2h3X2JhbmRfY2FwKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTUwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjE3MzpzdGF0aWMgaW50IG10NzY2M19lZXByb21fZ2V0X3RhcmdldF9wb3dlcl9pbmRleChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTE3NC1cXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0xODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6MTg1OlxcdGdyb3VwID0gbXQ3NjE1X2dldF9jaGFubmVsX2dyb3VwKGNoYW4tXFx1MDAzZWh3X3ZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0xODYtXFx0aWYgKGNoYWluX2lkeCA9PSAxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjE5NDppbnQgbXQ3NjE1X2VlcHJvbV9nZXRfdGFyZ2V0X3Bvd2VyX2luZGV4KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTk1LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0yMDctXFx0LyogVFNTSSBkaXNhYmxlZCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjIwODpcXHRpZiAobXQ3NjE1X2V4dF9wYV9lbmFibGVkKGRldiwgY2hhbi1cXHUwMDNlYmFuZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0yMDktXFx0XFx0aWYgKGNoYW4tXFx1MDAzZWJhbmQgPT0gTkw4MDIxMV9CQU5EXzJHSFopXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0yMTgtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzoyMTk6XFx0XFx0aW50IGdyb3VwID0gbXQ3NjE1X2dldF9jaGFubmVsX2dyb3VwKGNoYW4tXFx1MDAzZWh3X3ZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0yMjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0yNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6MjQyOmludCBtdDc2MTVfZWVwcm9tX2dldF9wb3dlcl9kZWx0YV9pbmRleChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTI0My1cXHRcXHRcXHRcXHRcXHRlbnVtIG5sODAyMTFfYmFuZCBiYW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMjU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjI1OTpzdGF0aWMgdm9pZCBtdDc2MTVfYXBwbHlfY2FsX2ZyZWVfZGF0YShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0NjoxMC44MzkzNjM3OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMzNDQyMTEyMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBNVDc2MTUvTVQ3NjYzIEJ1cyBTdXBwb3J0KipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggYnVzZXMgdGhlIE1UNzYxNSBhbmQgTVQ3NjYzIHdpcmVsZXNzIGNoaXBzIHN1cHBvcnQuIE15IHVzdWFsIGZpcnN0IHN0ZXAgaXMgdG8gZGlnIGludG8gdGhlIGtlcm5lbCBzb3VyY2UsIHNwZWNpZmljYWxseSB0aGUgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIEknbGwgaGVhZCBzdHJhaWdodCB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZ2AuIFRoaXMgS2NvbmZpZyBmaWxlIHNob3VsZCBkZWZpbmUgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBjaGlwJ3MgYnVzIGludGVyZmFjZXMsIGxpa2VseSBwb2ludGluZyBtZSB0b3dhcmRzIHRoZSByZWxldmFudCBidXMgZHJpdmVycyAoZS5nLiwgUENJZSwgU0RJTywgVVNCKS4gRnJvbSB0aGVyZSBJIGNhbiBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGFyY2hpdGVjdHVyZSwgZGVwZW5kZW5jaWVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBUaW1lIHRvIHNlZSB3aGF0IEkgY2FuIGZpbmQuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzMDQsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0NjoxNC4xODM1Nzg0NjhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRcXG4gICAzOlxcdGNvbmZpZyBNVDc2MTVfQ09NTU9OXFxuICAgNDpcXHRcXHR0cmlzdGF0ZVxcbiAgIDU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAgNjpcXHRcXHRzZWxlY3QgTVQ3Nl9DT05OQUNfTElCXFxuICAgNzpcXHRcXG4gICA4OlxcdGNvbmZpZyBNVDc2MTVFXFxuICAgOTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NjE1RSBhbmQgTVQ3NjYzRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4gIDEwOlxcdFxcdHNlbGVjdCBNVDc2MTVfQ09NTU9OXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTM6XFx0XFx0aGVscFxcbiAgMTQ6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjE1LWJhc2VkIFBDSWUgd2lyZWxlc3MgZGV2aWNlcyxcXG4gIDE1OlxcdFxcdCAgd2hpY2ggc3VwcG9ydCBjb25jdXJyZW50IGR1YWwtYmFuZCBvcGVyYXRpb24gYXQgYm90aCA1R0h6XFxuICAxNjpcXHRcXHQgIGFuZCAyLjRHSHosIElFRUUgODAyLjExYWMgNHg0OjRTUyAxNzMzTWJwcyBQSFkgcmF0ZSwgd2F2ZTJcXG4gIDE3OlxcdFxcdCAgTVUtTUlNTyB1cCB0byA0IHVzZXJzL2dyb3VwIGFuZCAxNjBNSHogY2hhbm5lbHMuXFxuICAxODpcXHRcXG4gIDE5OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDIwOlxcdFxcbiAgMjE6XFx0Y29uZmlnIE1UNzYyMl9XTUFDXFxuICAyMjpcXHRcXHRib29sIFxcXCJNVDc2MjIgKFNvQykgV01BQyBzdXBwb3J0XFxcIlxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiBNVDc2MTVFXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIEFSQ0hfTUVESUFURUsgfHwgQ09NUElMRV9URVNUXFxuICAyNTpcXHRcXHRzZWxlY3QgUkVHTUFQXFxuICAyNjpcXHRcXHRkZWZhdWx0IHlcXG4gIDI3OlxcdFxcdGhlbHBcXG4gIDI4OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHRoZSBidWlsdC1pbiBXTUFDIG9uIE1UNzYyMiBTb0MgZGV2aWNlc1xcbiAgMjk6XFx0XFx0ICB3aGljaCBoYXMgdGhlIHNhbWUgZmVhdHVyZSBzZXQgYXMgYSBNVDc2MTUsIGJ1dCBsaW1pdGVkIHRvXFxuICAzMDpcXHRcXHQgIDIuNCBHSHogb25seS5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIE1UNzY2M19VU0JfU0RJT19DT01NT05cXG4gIDMzOlxcdFxcdHRyaXN0YXRlXFxuICAzNDpcXHRcXHRzZWxlY3QgTVQ3NjE1X0NPTU1PTlxcbiAgMzU6XFx0XFxuICAzNjpcXHRjb25maWcgTVQ3NjYzVVxcbiAgMzc6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzY2M1UgKFVTQikgc3VwcG9ydFxcXCJcXG4gIDM4OlxcdFxcdHNlbGVjdCBNVDc2X1VTQlxcbiAgMzk6XFx0XFx0c2VsZWN0IE1UNzY2M19VU0JfU0RJT19DT01NT05cXG4gIDQwOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDQxOlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICA0MjpcXHRcXHRoZWxwXFxuICA0MzpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc2NjNVIDgwMi4xMWFjIDJ4MjoyIHdpcmVsZXNzIGRldmljZXMuXFxuICA0NDpcXHRcXG4gIDQ1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0Y29uZmlnIE1UNzY2M1NcXG4gIDQ4OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2NjNTIChTRElPKSBzdXBwb3J0XFxcIlxcbiAgNDk6XFx0XFx0c2VsZWN0IE1UNzZfU0RJT1xcbiAgNTA6XFx0XFx0c2VsZWN0IE1UNzY2M19VU0JfU0RJT19DT01NT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NDY6MTQuMTgzNjUzMDI4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjg0NzU4NjAzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1UNzY2M1UgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgYENPTkZJR19NVDc2NjNVYC4gUmlnaHQsIHRoYXQncyB0aGUgVVNCIHdpcmVsZXNzIGRyaXZlciwgTWVkaWFUZWsgTVQ3NjYzVS4gVGhpbmtpbmcgYWJvdXQgaXQsIHNpbmNlIGl0J3MgVVNCLCBJIGNhbiBwcm9iYWJseSBmdXp6IGl0IHVzaW5nIFVTQiBSYXcgR2FkZ2V0IG9yIHRocm91Z2ggc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBJIGNvdWxkIGV2ZW4gZW11bGF0ZSBpdCBpbiBRRU1VIHdpdGggc3l6a2FsbGVyLiBUaGUga2V5IGhlcmUgaXMgVVNCLlxuXG5Ob3csIGEgcXVlc3Rpb24gaXMgcG9wcGluZyBpbnRvIG15IGhlYWQ6IGNhbiBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIGV2ZW4gYmUgY2FsbGVkIGZvciBNVDc2NjNVPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIHByb2JhYmx5IFBDSWUtc3BlY2lmaWMsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gQ291bGQgaXQgcG9zc2libHkgYmUgZXhwb3NlZCB0aHJvdWdoIGRlYnVnZnMsIG9yIHBlcmhhcHMgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbj8gT3IsIGlzIGl0IHNvbWVob3cgaW50ZWdyYXRlZCB3aXRoaW4gbWFjODAyMTEgb3Igbmw4MDIxMT9cblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGUgY29kZWJhc2UuIEknbSBnb2luZyB0byBzZWFyY2ggZm9yIGV2ZXJ5IGluc3RhbmNlIHdoZXJlIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAgaXMgY2FsbGVkLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0J3MgcmVsZXZhbnQgdG8gdGhpcyBVU0IgZHJpdmVyIGF0IGFsbC4gS25vd2luZyB3aGVyZSBpdCdzIGNhbGxlZCB3aWxsIGhlbHAgbWUgZGV0ZXJtaW5lIGl0cyBwdXJwb3NlIGFuZCBob3cgdG8gYXBwcm9hY2ggYW55IHBvdGVudGlhbCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTMxMSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjE3LjAzMTI0MjI5MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTY4ODMzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0xOTI9bXQ3NjE1X2RiZGNfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTk5LVxcdGlmICh2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIwMDpcXHRcXHRtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMDEtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jPTUyNj1FWFBPUlRfU1lNQk9MX0dQTChtdDc2MTVfbGVkX3NldF9icmlnaHRuZXNzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtNTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYzo1Mjg6aW50IG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jLTUyOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtNjA2LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM6NjA3OkVYUE9SVF9TWU1CT0xfR1BMKG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtNjA4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg9MzgzPXZvaWQgbXQ3NjE1X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjM4NDppbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtMzg1LXZvaWQgbXQ3NjE1X3VucmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmM9Njk9aW50IG10NzYxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmMtMTAzLVxcdGlmIChkZXYtXFx1MDAzZWRiZGNfc3VwcG9ydCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmM6MTA0OlxcdFxcdHJldCA9IG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYy0xMDUtXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NDY6MTcuMDgyOTM0ODcxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQxNDY3NDQ3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgdGhlIE1UNzYxNSBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBkZWJ1ZyBmaWxlIHN5c3RlbSBpcyBpbml0aWFsaXplZCB3aXRoaW4gdGhlIE1UNzYxNSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgVVNCIHZlcnNpb24uIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogZG9lcyBgdXNiX2luaXRgIHRyaWdnZXIgdGhlIGNhbGwgdG8gYG10NzYxNV9pbml0X2RlYnVnZnNgPyBPciBwZXJoYXBzIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWA/IEFsdGVybmF0aXZlbHksIG1heWJlIGBtdDc2NjN1YCBpdHNlbGYgaGFuZGxlcyB0aGUgZGVidWdmcyBpbml0aWFsaXphdGlvbi5cblxuVG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcywgSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzLiBGaXJzdCwgSSBuZWVkIHRvIHBpbnBvaW50IHdoZXJlIGBtdDc2MTVfaW5pdF9kZWJ1Z2ZzYCBpcyBhY3R1YWxseSAqY2FsbGVkKi4gVGhlbiwgSSdsbCBmb2N1cyBvbiB0aGUgVVNCLXNwZWNpZmljIGNvZGUgd2l0aGluIHRoZSBNVDc2MTUgZHJpdmVyLCBzbyBJJ2xsIGJlIGxvb2tpbmcgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuY2AgZmlsZSwgb3Igc29tZXRoaW5nIHNpbWlsYXJseSBuYW1lZCB3aXRoaW4gdGhhdCBkaXJlY3Rvcnkgc3RydWN0dXJlLCB0byBzZWUgaWYgSSBjYW4gZmluZCB0aGUgYW5zd2VyLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI1NjQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0NjoxOS40OTc2MTIyOTJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODQ2ODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzYxNV9pbml0X2RlYnVnZnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9NTM1PW10NzY2M3Nfc2NoZWRfcXVvdGFfcmVhZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1NDg6aW50IG10NzYxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy02MDgtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo2MDk6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NjE1X2luaXRfZGVidWdmcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaD01MjY9aW50IG10NzYxNV9tY3Vfc2V0X3JvYyhzdHJ1Y3QgbXQ3NjE1X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjUyOTppbnQgbXQ3NjE1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01MzAtaW50IG10NzYxNV9tY3Vfd2FpdF9yZXNwb25zZShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LCBpbnQgY21kLCBpbnQgc2VxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmM9Njk9aW50IG10NzYxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmMtMTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmM6MTA5OlxcdHJldHVybiBtdDc2MTVfaW5pdF9kZWJ1Z2ZzKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYy0xMTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYz0zMDY9aW50IG10NzY2M191c2Jfc2Rpb19yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MzQ2OlxcdHJldHVybiBtdDc2MTVfaW5pdF9kZWJ1Z2ZzKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zNDctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0NjoxOS41NDY0NjQ0MzlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzgyNjk3NjI2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBNZWRpYXRlayBNVDc2MTUgVVNCIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBHaXZlbiB0aGUgY29udGV4dCwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIE1lZGlhdGVrIE1UNzYxNSBVU0IgZHJpdmVyIGltcGxlbWVudGF0aW9uLiBNeSBmaXJzdCBwb2ludCBvZiBhdHRhY2sgd2lsbCBiZSBlaXRoZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jYCBvciwgaWYgdGhpcyBpcyBhbiBTRElPLWJhc2VkIGltcGxlbWVudGF0aW9uLCBgdXNiX3NkaW8uY2AuIFRoZSBjb3JlIGlzc3VlIGxpa2VseSBjZW50ZXJzIGFyb3VuZCBVU0IgZHJpdmVyIHJlZ2lzdHJhdGlvbiBvciBzb21lIFVTQi1zcGVjaWZpYyBjb25maWd1cmF0aW9uLiBUaGVyZWZvcmUsIG15IHByaW1hcnkgc2VhcmNoIGZvY3VzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2AgZGlyZWN0b3J5IHdpbGwgYmUgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgVVNCIGRyaXZlciByZWdpc3RyYXRpb24gcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBVU0IgZGV2aWNlIGlzIGluaXRpYWxseSBpbml0aWFsaXplZCBhbmQgaW50ZWdyYXRlZCB3aXRoIHRoZSBrZXJuZWwsIGFuZCB0aGUgYHVzYi5jYCBmaWxlIGlzIHVzdWFsbHkgdGhlIHBsYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzc0OSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjI3LjM3MzQ0MjYyOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM3Njg4NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNiX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jPTI2Nj1NT0RVTEVfRklSTVdBUkUoTVQ3NjYzX1JPTV9QQVRDSCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjI2ODpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3NjYzdV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjY5LVxcdC5uYW1lXFx0XFx0PSBLQlVJTERfTU9ETkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI4MC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjI4MTptb2R1bGVfdXNiX2RyaXZlcihtdDc2NjN1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjgyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MzQ2PU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zNDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzQ4OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2eDBfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTM0OS1cXHQubmFtZVxcdFxcdD0gS0JVSUxEX01PRE5BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zNTgtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozNTk6bW9kdWxlX3VzYl9kcml2ZXIobXQ3NngwX2RyaXZlcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYz0xMzg9TU9EVUxFX0ZJUk1XQVJFKE1UNzY2Ml9ST01fUEFUQ0gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTEzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYzoxNDA6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzZ4MnVfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTE0MS1cXHQubmFtZVxcdFxcdD0gS0JVSUxEX01PRE5BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xNTItfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYzoxNTM6bW9kdWxlX3VzYl9kcml2ZXIobXQ3NngydV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTE1NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTMyOT1NT0RVTEVfRklSTVdBUkUoTVQ3OTIxX1JPTV9QQVRDSCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjMzMTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3OTIxdV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzMyLVxcdC5uYW1lXFx0XFx0PSBLQlVJTERfTU9ETkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM0My19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM0NDptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjF1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzI3PU1PRFVMRV9GSVJNV0FSRShNVDc5MjVfUk9NX1BBVENIKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzI5OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjV1X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zMzAtXFx0Lm5hbWVcXHRcXHQ9IEtCVUlMRF9NT0ROQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzQxLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzQyOm1vZHVsZV91c2JfZHJpdmVyKG10NzkyNXVfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNDMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjI3LjQyNzIxOTk5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUwOTYwOTk1MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIE1UNzY2M1UgRHJpdmVyIGFuZCBEQkRDIFN1cHBvcnQqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBNVDc2NjNVIFVTQiBkcml2ZXIuIEZyb20gd2hhdCBJJ20gc2VlaW5nLCBpdCBsZXZlcmFnZXMgYG10NzYxNS1jb21tb25gLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIHRoZSBgbXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZWAgZnVuY3Rpb24sIHRyaWdnZXJlZCB3aGVuIGEgVVNCIGRldmljZSBtYXRjaGVzIFwibXQ3NjYzdS5cIiBUaGlzIGluIHR1cm4gY2FsbHMgYG10NzYxNV9pbml0X2RlYnVnZnNgLlxuXG5JbnNpZGUgYG10NzYxNV9pbml0X2RlYnVnZnNgLCB0aGVyZSdzIGEgZGVidWdmcyBlbnRyeSBiZWluZyBjcmVhdGVkOiBhIGZpbGUgbmFtZWQgXCJkYmRjXCIgd2l0aCBwZXJtaXNzaW9ucyAwNjAwLiBUaGF0J3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcuIFRoaXMgXCJkYmRjXCIgZmlsZSB1c2VzIGBmb3BzX2RiZGNgLCB3aGljaCBoYW5kbGVzIGZpbGUgb3BlcmF0aW9ucyByZWxhdGVkIHRvIERCREMuIExvb2tpbmcgY2xvc2VyIGF0IGBmb3BzX2RiZGNgLCBJIHNlZSBgbXQ3NjE1X2RiZGNfc2V0YC4gVGhhdCBmdW5jdGlvbiB0YWtlcyBhIHU2NCB2YWx1ZSBhbmQsIGFmdGVyIGEgY2hlY2sgd2l0aCBgbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0YCwgaXQgZWl0aGVyIGNhbGxzIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAgb3IgYG10NzYxNV91bnJlZ2lzdGVyX2V4dF9waHlgIGJhc2VkIG9uIHRoZSB2YWx1ZS5cblxuU28sIGlmIHRoZSB2YWx1ZSBwcm92aWRlZCB0byBgbXQ3NjE1X2RiZGNfc2V0YCBpcyBub24temVybywgaXQgYWN0aXZhdGVzIHRoZSBleHRlbmRlZCBQSFkgdGhyb3VnaCBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoZGV2KWAuIENsZWFybHksIHdlJ3JlIG9uIHRoZSByaWdodCB0cmFjayEgVGhlIHByZXNlbmNlIG9mIHRoaXMgZGVidWdmcyBlbnRyeSBhbmQgaXRzIGFzc29jaWF0ZWQgZnVuY3Rpb25zIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoaXMgaXMgaG93IERCREMgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC5cblxuTm93LCBJIHdhbnQgdG8gY29uZmlybSBob3cgREJEQyBpcyB1c2VkIGluIHRoZSB3aWRlciBjb250ZXh0IG9mIHRoZSBtdDc2MTUgYW5kIG10NzY2MyBmYW1pbHkuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuY2AgYW5kIHNwZWNpZmljYWxseSBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIG9mIHRoZSBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIGNhbGwuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBtdWNoIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgREJEQyBpcyBpbml0aWFsaXplZCwgbWFuYWdlZCwgYW5kIHBvdGVudGlhbGx5IHVzZWQgaW4gYSBkdWFsLWJhbmQgZHVhbC1jb25jdXJyZW50IGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MzAxLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjMyLjUyMzMyMjc1N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTQ5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTI1LFxuICBcIkxpbmVDb3VudFwiOiA4NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTI1OlxcdH1cXG4gNTI2OlxcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzYxNV9sZWRfc2V0X2JyaWdodG5lc3MpO1xcbiA1Mjc6XFx0XFxuIDUyODpcXHRpbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4gNTI5OlxcdHtcXG4gNTMwOlxcdFxcdHN0cnVjdCBtdDc2MTVfcGh5ICpwaHkgPSBtdDc2MTVfZXh0X3BoeShkZXYpO1xcbiA1MzE6XFx0XFx0c3RydWN0IG10NzZfcGh5ICptcGh5O1xcbiA1MzI6XFx0XFx0aW50IGksIHJldDtcXG4gNTMzOlxcdFxcbiA1MzQ6XFx0XFx0aWYgKCFpc19tdDc2MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuIDUzNTpcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIDUzNjpcXHRcXG4gNTM3OlxcdFxcdGlmICh0ZXN0X2JpdChNVDc2X1NUQVRFX1JVTk5JTkcsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc3RhdGUpKVxcbiA1Mzg6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDUzOTpcXHRcXG4gNTQwOlxcdFxcdGlmIChwaHkpXFxuIDU0MTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNTQyOlxcdFxcbiA1NDM6XFx0XFx0bXQ3NjE1X2NhcF9kYmRjX2VuYWJsZShkZXYpO1xcbiA1NDQ6XFx0XFx0bXBoeSA9IG10NzZfYWxsb2NfcGh5KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHNpemVvZigqcGh5KSwgXFx1MDAyNm10NzYxNV9vcHMsIE1UX0JBTkQxKTtcXG4gNTQ1OlxcdFxcdGlmICghbXBoeSkge1xcbiA1NDY6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4gNTQ3OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDU0ODpcXHRcXHR9XFxuIDU0OTpcXHRcXG4gNTUwOlxcdFxcdHBoeSA9IG1waHktXFx1MDAzZXByaXY7XFxuIDU1MTpcXHRcXHRwaHktXFx1MDAzZWRldiA9IGRldjtcXG4gNTUyOlxcdFxcdHBoeS1cXHUwMDNlbXQ3NiA9IG1waHk7XFxuIDU1MzpcXHRcXHRtcGh5LVxcdTAwM2VjaGFpbm1hc2sgPSBkZXYtXFx1MDAzZWNoYWlubWFzayBcXHUwMDI2IH5kZXYtXFx1MDAzZW1waHkuY2hhaW5tYXNrO1xcbiA1NTQ6XFx0XFx0bXBoeS1cXHUwMDNlYW50ZW5uYV9tYXNrID0gQklUKGh3ZWlnaHQ4KG1waHktXFx1MDAzZWNoYWlubWFzaykpIC0gMTtcXG4gNTU1OlxcdFxcdG10NzYxNV9pbml0X3dpcGh5KG1waHktXFx1MDAzZWh3KTtcXG4gNTU2OlxcdFxcbiA1NTc6XFx0XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNm1waHktXFx1MDAzZW1hY193b3JrLCBtdDc2MTVfbWFjX3dvcmspO1xcbiA1NTg6XFx0XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNnBoeS1cXHUwMDNlc2Nhbl93b3JrLCBtdDc2MTVfc2Nhbl93b3JrKTtcXG4gNTU5OlxcdFxcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNnBoeS1cXHUwMDNlc2Nhbl9ldmVudF9saXN0KTtcXG4gNTYwOlxcdFxcbiA1NjE6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZwaHktXFx1MDAzZXJvY193b3JrLCBtdDc2MTVfcm9jX3dvcmspO1xcbiA1NjI6XFx0XFx0dGltZXJfc2V0dXAoXFx1MDAyNnBoeS1cXHUwMDNlcm9jX3RpbWVyLCBtdDc2MTVfcm9jX3RpbWVyLCAwKTtcXG4gNTYzOlxcdFxcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXFx1MDAyNnBoeS1cXHUwMDNlcm9jX3dhaXQpO1xcbiA1NjQ6XFx0XFxuIDU2NTpcXHRcXHRtdDc2MTVfbWFjX3NldF9zY3MocGh5LCB0cnVlKTtcXG4gNTY2OlxcdFxcbiA1Njc6XFx0XFx0LypcXG4gNTY4OlxcdFxcdCAqIE1ha2UgdGhlIHNlY29uZGFyeSBQSFkgTUFDIGFkZHJlc3MgbG9jYWwgd2l0aG91dCBvdmVybGFwcGluZyB3aXRoXFxuIDU2OTpcXHRcXHQgKiB0aGUgdXN1YWwgTUFDIGFkZHJlc3MgYWxsb2NhdGlvbiBzY2hlbWUgb24gbXVsdGlwbGUgdmlydHVhbCBpbnRlcmZhY2VzXFxuIDU3MDpcXHRcXHQgKi9cXG4gNTcxOlxcdFxcdG1lbWNweShtcGh5LVxcdTAwM2VtYWNhZGRyLCBkZXYtXFx1MDAzZW10NzYuZWVwcm9tLmRhdGEgKyBNVF9FRV9NQUNfQUREUixcXG4gNTcyOlxcdFxcdCAgICAgICBFVEhfQUxFTik7XFxuIDU3MzpcXHRcXHRtcGh5LVxcdTAwM2VtYWNhZGRyWzBdIHw9IDI7XFxuIDU3NDpcXHRcXHRtcGh5LVxcdTAwM2VtYWNhZGRyWzBdIF49IEJJVCg3KTtcXG4gNTc1OlxcdFxcbiA1NzY6XFx0XFx0cmV0ID0gbXQ3Nl9lZXByb21fb3ZlcnJpZGUobXBoeSk7XFxuIDU3NzpcXHRcXHRpZiAocmV0KVxcbiA1Nzg6XFx0XFx0XFx0Z290byBlcnJvcl9mcmVlX2h3O1xcbiA1Nzk6XFx0XFxuIDU4MDpcXHRcXHQvKiBzZWNvbmQgcGh5IGNhbiBvbmx5IGhhbmRsZSA1IEdIeiAqL1xcbiA1ODE6XFx0XFx0bXBoeS1cXHUwMDNlY2FwLmhhc181Z2h6ID0gdHJ1ZTtcXG4gNTgyOlxcdFxcbiA1ODM6XFx0XFx0LyogbXQ3NjE1IHNlY29uZCBwaHkgc2hhcmVzIHRoZSBzYW1lIGh3IHF1ZXVlcyB3aXRoIHRoZSBwcmltYXJ5IG9uZSAqL1xcbiA1ODQ6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjPSBNVF9UWFFfUFNEIDsgaSsrKVxcbiA1ODU6XFx0XFx0XFx0bXBoeS1cXHUwMDNlcV90eFtpXSA9IGRldi1cXHUwMDNlbXBoeS5xX3R4W2ldO1xcbiA1ODY6XFx0XFxuIDU4NzpcXHRcXHQvKiBpbml0IGxlZCBjYWxsYmFja3MgKi9cXG4gNTg4OlxcdFxcdGlmIChJU19FTkFCTEVEKENPTkZJR19NVDc2X0xFRFMpKSB7XFxuIDU4OTpcXHRcXHRcXHRtcGh5LVxcdTAwM2VsZWRzLmNkZXYuYnJpZ2h0bmVzc19zZXQgPSBtdDc2MTVfbGVkX3NldF9icmlnaHRuZXNzO1xcbiA1OTA6XFx0XFx0XFx0bXBoeS1cXHUwMDNlbGVkcy5jZGV2LmJsaW5rX3NldCA9IG10NzYxNV9sZWRfc2V0X2JsaW5rO1xcbiA1OTE6XFx0XFx0fVxcbiA1OTI6XFx0XFxuIDU5MzpcXHRcXHRyZXQgPSBtdDc2X3JlZ2lzdGVyX3BoeShtcGh5LCB0cnVlLCBtdDc2X3JhdGVzLFxcbiA1OTQ6XFx0XFx0XFx0XFx0XFx0QVJSQVlfU0laRShtdDc2X3JhdGVzKSk7XFxuIDU5NTpcXHRcXHRpZiAocmV0KVxcbiA1OTY6XFx0XFx0XFx0Z290byBlcnJvcl9mcmVlX2h3O1xcbiA1OTc6XFx0XFxuIDU5ODpcXHRcXHRyZXR1cm4gMDtcXG4gNTk5OlxcdFxcbiA2MDA6XFx0ZXJyb3JfZnJlZV9odzpcXG4gNjAxOlxcdFxcdGllZWU4MDIxMV9mcmVlX2h3KG1waHktXFx1MDAzZWh3KTtcXG4gNjAyOlxcdGVycm9yOlxcbiA2MDM6XFx0XFx0bXQ3NjE1X2NhcF9kYmRjX2Rpc2FibGUoZGV2KTtcXG4gNjA0OlxcdFxcbiA2MDU6XFx0XFx0cmV0dXJuIHJldDtcXG4gNjA2OlxcdH1cXG4gNjA3OlxcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KTtcXG4gNjA4OlxcdFxcbiA2MDk6XFx0dm9pZCBtdDc2MTVfdW5yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjMyLjUyMzQxNTkzN1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMDExODc1NjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29kZSAtIEEgUXVpY2sgQ2hlY2sqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kISBNeSBleWVzIGp1c3Qgc25hZ2dlZCBvbiBsaW5lIDUzNCBpbiB0aGF0IEMgY29kZS4gTGV0IG1lIHBhcnNlIHRoYXQuLi4gQWgsIHRoZXJlJ3MgYSBjcnVjaWFsIGNoZWNrIHJpZ2h0IHRoZXJlOiBgaWYgKCFpc19tdDc2MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKWAuIE15IGV4cGVydCBicmFpbiBpbW1lZGlhdGVseSBzcG90cyB0aGUgcG90ZW50aWFsIGlzc3VlOiBUaGlzIGZ1bmN0aW9uIGFwcGVhcnMgdG8gYmUgYW4gZXJyb3IgcGF0aCwgYW5kIGl0IHdpbGwgb25seSBnZXQgdGhlcmUgaWYgYSBjZXJ0YWluIGNoaXAgaXNuJ3QgYSBjZXJ0YWluIHR5cGUuIFwiV2FpdCwgd2hhdCdzIGBpc19tdDc2MTVgIGFjdHVhbGx5IGNoZWNraW5nIGZvcj9cIiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBoYXJkd2FyZSBjb21wb25lbnRzIHRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gaGFuZGxlLiBUaGlzIGRlbWFuZHMgYSBjbG9zZXIgbG9vayBhdCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGBpc19tdDc2MTVgIGZ1bmN0aW9uIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIGFuZCBpbnRlbmRlZCBzY29wZS4gSSBiZXR0ZXIgdHJhY2sgZG93biB0aGUgZGVmaW5pdGlvbiBvZiB0aGF0IGZ1bmN0aW9uIHJpZ2h0IG5vdy4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NTk2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0NjozNS41MzUyOTQ2MzdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMTk3NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlzX210NzYxNVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz01NDg9aW50IG10NzYxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU1NjpcXHRpZiAoaXNfbXQ3NjE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NTctXFx0XFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJ4bWl0LXF1ZXVlc1xcXCIsIGRpcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU3NjpcXHRpZiAoaXNfbXQ3NjE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU3Ny1cXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV91MzIoXFxcImRmc19od19wYXR0ZXJuXFxcIiwgMDQwMCwgZGlyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM9NDU9bXQ3NjE1X2luaXRfdHhfcXVldWVzKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy01My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzo1NDpcXHRpZiAoIWlzX210NzYxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy01NS1cXHRcXHRyZXR1cm4gbXQ3NjIyX2luaXRfdHhfcXVldWVzX211bHRpKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYz0yMjA9aW50IG10NzYxNV9kbWFfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjI0NTpcXHRpZiAoaXNfbXQ3NjE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjQ2LVxcdFxcdG10NzZfc2V0KGRldiwgTVRfV1BETUFfR0xPX0NGRyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoyNzE6XFx0aWYgKCFpc19tdDc2MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjcyLVxcdCAgICByeF9yaW5nX3NpemUgLz0gMjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYz0zNjA9bXQ3NjE1X2luaXRfd2lwaHkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtNDA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYzo0MDk6XFx0aWYgKGlzX210NzYxNShcXHUwMDI2cGh5LVxcdTAwM2VkZXYtXFx1MDAzZW10NzYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy00MTAtXFx0XFx0aHctXFx1MDAzZW1heF90eF9mcmFnbWVudHMgPSBNVF9UWFBfTUFYX0JVRl9OVU07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM9NTI4PWludCBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jLTUzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM6NTM0OlxcdGlmICghaXNfbXQ3NjE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy01MzUtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmM9MTU1Mj1zdGF0aWMgdm9pZCBtdDc2MTVfbWFjX3R4X2ZyZWUoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgdm9pZCAqZGF0YSwgaW50IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTE1NTktXFx0bXQ3Nl9xdWV1ZV90eF9jbGVhbnVwKGRldiwgZGV2LVxcdTAwM2VtcGh5LnFfdHhbTVRfVFhRX1BTRF0sIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWMuYzoxNTYwOlxcdGlmIChpc19tdDc2MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWMuYy0xNTYxLVxcdFxcdG10NzZfcXVldWVfdHhfY2xlYW51cChkZXYsIGRldi1cXHUwMDNlbXBoeS5xX3R4W01UX1RYUV9CRV0sIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTE1NjctXFx0Y291bnQgPSBsZTE2X2dldF9iaXRzKGZyZWUtXFx1MDAzZWN0cmwsIE1UX1RYX0ZSRUVfTVNEVV9JRF9DTlQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jOjE1Njg6XFx0aWYgKGlzX210NzYxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTE1NjktXFx0XFx0X19sZTE2ICp0b2tlbiA9IHR4X3Rva2VuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jPTI4ND1pbnQgbXQ3NjE1X3NldF9jaGFubmVsKHN0cnVjdCBtdDc2X3BoeSAqbXBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21haW4uYy0yOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jOjI5MzpcXHRpZiAoaXNfbXQ3NjE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpIFxcdTAwMjZcXHUwMDI2IGRldi1cXHUwMDNlZmxhc2hfZWVwcm9tKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jLTI5NC1cXHRcXHRyZXQgPSBtdDc2MTVfbWN1X2FwcGx5X3J4X2Rjb2MocGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jPTEzMzI9c3RhdGljIGludCBtdDc2MTVfbG9hZF9uOShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LCBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmMtMTM2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYzoxMzcwOlxcdGlmICghaXNfbXQ3NjE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmMtMTM3MS1cXHRcXHRkZXYtXFx1MDAzZWZ3X3ZlciA9IE1UNzYxNV9GSVJNV0FSRV9WMjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9tYWMuYz02MD1pbnQgbXQ3NjE1X3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfbWFjLmMtMTAzLVxcdG1lbXNldCh0eHAsIDAsIHNpemVvZihzdHJ1Y3QgbXQ3Nl9jb25uYWNfdHhwX2NvbW1vbikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9tYWMuYzoxMDQ6XFx0aWYgKGlzX210NzYxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfbWFjLmMtMTA1LVxcdFxcdG10NzYxNV93cml0ZV9md190eHAoZGV2LCB0eF9pbmZvLCB0eHAsIGlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yNTE9c3RhdGljIGlubGluZSBib29sIGlzX210NzYyMihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjI1OTpzdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3NjE1KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTI2OT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfY29ubmFjX3YxKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNzAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoyNzE6XFx0cmV0dXJuIGlzX210NzYxNShkZXYpIHx8IGlzX210NzY2MyhkZXYpIHx8IGlzX210NzYyMihkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNzItfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0NjozNS41ODY0OTc5NDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI0NTk1OTExMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoYXQgcXVlcnksIGFzIGlmIGl0IHdlcmUgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc2MTUgRHJpdmVyKipcblxuQWxyaWdodCwgc28gc29tZW9uZSdzIGFza2VkIGFib3V0IHRoZSBgaXNfbXQ3NjE1KGRldilgIGZ1bmN0aW9uLiBHaXZlbiBteSBleHBlcnRpc2UgaW4gdGhpcyBhcmVhLCBteSBmaXJzdCB0aG91Z2h0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5ICpkb2VzKi4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NmAgZGlyZWN0b3J5IGlzIHRoZSBjYW5vbmljYWwgbG9jYXRpb24gZm9yIE1lZGlhdGVrIFdpRmkgZHJpdmVycyB3aXRoaW4gdGhlIGtlcm5lbCB0cmVlLCBhbmQgdGhlIGBtdDc2X2Nvbm5hYy5oYCBoZWFkZXIgZmlsZSBpcyBhIGxpa2VseSBjYW5kaWRhdGUgZm9yIGludGVyZmFjZS1yZWxhdGVkIGRlZmluaXRpb25zLiBTbywgbGV0J3Mgb3BlbiB1cCB0aGF0IGhlYWRlciBmaWxlIGFuZCBzZWUgd2hhdCBgaXNfbXQ3NjE1KGRldilgIGlzIGRlZmluZWQgYXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCBpZGVudGlmaWVzIGFuIE1UNzYxNSBkZXZpY2U7IGxpa2VseSBjaGVja2luZyBzb21lIHNvcnQgb2YgaGFyZHdhcmUgSUQgb3IgYm9hcmQgaW5mb3JtYXRpb24gYWdhaW5zdCBhIGtub3duIHZhbHVlLiBJIGV4cGVjdCB0aGUgZGVmaW5pdGlvbiB0byBiZSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZDogZWl0aGVyIGEgZGlyZWN0IGNoZWNrIGZvciBhIHNwZWNpZmljIElELCBvciBwZXJoYXBzIGEgbW9yZSBjb21wbGV4IG1hY3JvIHRoYXQgaW5jb3Jwb3JhdGVzIGZhbWlseSBjaGVja3MgYW5kIHZlcnNpb25pbmcuIExldCdzIGdldCB0byB0aGUgY29kZSBhbmQgc2VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDMzNywiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjM3LjgzMjQ1OTI5N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMjUwLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjUwOlxcdFxcbiAyNTE6XFx0c3RhdGljIGlubGluZSBib29sIGlzX210NzYyMihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG4gMjUyOlxcdHtcXG4gMjUzOlxcdFxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTVQ3NjIyX1dNQUMpKVxcbiAyNTQ6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiAyNTU6XFx0XFxuIDI1NjpcXHRcXHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3NjIyO1xcbiAyNTc6XFx0fVxcbiAyNTg6XFx0XFxuIDI1OTpcXHRzdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3NjE1KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbiAyNjA6XFx0e1xcbiAyNjE6XFx0XFx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4NzYxNSB8fCBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MTE7XFxuIDI2MjpcXHR9XFxuIDI2MzpcXHRcXG4gMjY0OlxcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MTEoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuIDI2NTpcXHR7XFxuIDI2NjpcXHRcXHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3NjExO1xcbiAyNjc6XFx0fVxcbiAyNjg6XFx0XFxuIDI2OTpcXHRzdGF0aWMgaW5saW5lIGJvb2wgaXNfY29ubmFjX3YxKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbiAyNzA6XFx0e1xcbiAyNzE6XFx0XFx0cmV0dXJuIGlzX210NzYxNShkZXYpIHx8IGlzX210NzY2MyhkZXYpIHx8IGlzX210NzYyMihkZXYpO1xcbiAyNzI6XFx0fVxcbiAyNzM6XFx0XFxuIDI3NDpcXHRzdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3Nl9md190eHAoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjM3LjgzMjUzODg0N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTg3NDAwOTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gbXkgZmllbGQ6XG5cbioqQ2hpcCBJRCBJbnZlc3RpZ2F0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGdldHRpbmcgYSBoYW5kbGUgb24gd2hpY2ggZGV2aWNlcyBhcmUgY3VycmVudGx5IHV0aWxpemluZyBlaXRoZXIgdGhlIDB4NzYxNSBvciAweDc2MTEgY2hpcCBJRHMuIEl0J3MgdGhlIG1vc3QgbG9naWNhbCBmaXJzdCBzdGVwIHRvIHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgaGFyZHdhcmUgaW52ZW50b3J5LiBGcm9tIHRoZXJlLCBJIG5lZWQgdG8gdHJhY2UgYmFjayB3aGVyZSB0aGVzZSBzcGVjaWZpYyBjaGlwcyBhcmUgYmVpbmcgcHJvYmVkIHdpdGhpbiB0aGUgc3lzdGVtLiBUaGF0J2xsIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXNlIGNoaXAgSURzIGFyZSBiZWluZyB1dGlsaXplZCBpbiBwcmFjdGljZS4gVW5kZXJzdGFuZGluZyB0aGUgcHJvYmUgcG9pbnRzIHdpbGwgbGlrZWx5IHBvaW50IHRoZSB3YXkgdG8gdGhlIHJpZ2h0IGRyaXZlcnMsIGNvbmZpZ3VyYXRpb25zLCBvciBoYXJkd2FyZSBzcGVjaWZpY2F0aW9ucyBhc3NvY2lhdGVkIHdpdGggZWFjaCBvZiB0aG9zZSBjaGlwcy4gRnJvbSB0aGVyZSBJIGNhbiBkZXRlcm1pbmUgaG93IEkgY2FuIG1ha2UgY2hhbmdlcyB3aXRob3V0IGJyZWFraW5nIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTEwNSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NDY6MzkuODE5OTQyODYxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzY0MzI2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIweDc2MTV8MHg3NjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM9ODc9c3RhdGljIGludCBtdDc2MTVfY2hlY2tfZWVwcm9tKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtOTEtXFx0c3dpdGNoICh2YWwpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzo5MjpcXHRjYXNlIDB4NzYxNTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy05My1cXHRjYXNlIDB4NzYyMjpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jPTMxNT1zdGF0aWMgdm9pZCBtdDc2MTVfY2FsX2ZyZWVfZGF0YShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMzI1LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjMyNjpcXHRjYXNlIDB4NzYxNTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzozMjc6XFx0Y2FzZSAweDc2MTE6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMzI4LVxcdFxcdG10NzYxNV9hcHBseV9jYWxfZnJlZV9kYXRhKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2kuYz0xNT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbXQ3NjE1X3BjaV9kZXZpY2VfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2kuYzoxNjpcXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3NjE1KSB9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaS5jLTE3LVxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01FRElBVEVLLCAweDc2NjMpIH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpLmM6MTg6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUVESUFURUssIDB4NzYxMSkgfSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2kuYy0xOS1cXHR7IH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjU5PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MTUoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI2MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjI2MTpcXHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3NjE1IHx8IG10NzZfY2hpcChkZXYpID09IDB4NzYxMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjYyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yNjQ9c3RhdGljIGlubGluZSBib29sIGlzX210NzYxMShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjY1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjY2OlxcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MTE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI2Ny19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjM5Ljg3MzU5MTY4MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NDIxNDA0Mzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIE1UNzYxNSBQQ0kgRGV2aWNlIFRhYmxlIGFuZCBSZWxhdGVkIFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgbXQ3NjE1X3BjaV9kZXZpY2VfdGFibGVgIHJpZ2h0IG5vdy4gSW50ZXJlc3RpbmcuLi4gaXQgc2VlbXMgdG8gYmUgbGlzdGluZyBQQ0kgZGV2aWNlcywgc3BlY2lmaWNhbGx5IHRob3NlIHdpdGggdGhlIDB4NzYxNSBhbmQgMHg3NjExIGRldmljZSBJRHMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gbm90ZSB0aG9zZSBJRHM7IHNlZW1zIGxpa2UgYSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IHdoZW4gSSdtIGRlYWxpbmcgd2l0aCBNVDc2MTUsIG9yIGV2ZW4gdmFyaWFudHMuIEJ1dCwgaG9sZCBvbiBhIHNlY29uZC4uLiB3aGF0IGFib3V0IHRoZSBgbXQ3NjYzdWAgZHJpdmVyPyBXaGVyZSBkb2VzIHRoYXQgY2hpcCBmaXQgaW50byB0aGlzIHBpY3R1cmU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIG90aGVyIGRldmljZXMsIGFuZCB3aGljaCBkZXZpY2UgSSBhbSBsb29raW5nIGZvci4gSSBzaG91bGQgY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWxhdGlvbnNoaXBzLCBvciBjb21tb25hbGl0aWVzIHRvIGJlIGZvdW5kLiBMZXQncyBzZWUgaWYgdGhlcmUncyBhbnkgaW1tZWRpYXRlIGNvcnJlbGF0aW9uIHRoZXJlLi4uIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gbG9vayBmb3Igbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjMyMCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjQ0LjI5NDk5ODcxNloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHQvKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWVkaWFUZWsgSW5jLlxcbiAgIDM6XFx0ICpcXG4gICA0OlxcdCAqIEF1dGhvcjogRmVsaXggRmlldGthdSBcXHUwMDNjbmJkQG5iZC5uYW1lXFx1MDAzZVxcbiAgIDU6XFx0ICpcXHQgICBMb3JlbnpvIEJpYW5jb25pIFxcdTAwM2Nsb3JlbnpvQGtlcm5lbC5vcmdcXHUwMDNlXFxuICAgNjpcXHQgKlxcdCAgIFNlYW4gV2FuZyBcXHUwMDNjc2Vhbi53YW5nQG1lZGlhdGVrLmNvbVxcdTAwM2VcXG4gICA3OlxcdCAqL1xcbiAgIDg6XFx0XFxuICAgOTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuICAxMDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAxMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvdXNiLmhcXHUwMDNlXFxuICAxMjpcXHRcXG4gIDEzOlxcdCNpbmNsdWRlIFxcXCJtdDc2MTUuaFxcXCJcXG4gIDE0OlxcdCNpbmNsdWRlIFxcXCJtYWMuaFxcXCJcXG4gIDE1OlxcdCNpbmNsdWRlIFxcXCJtY3UuaFxcXCJcXG4gIDE2OlxcdCNpbmNsdWRlIFxcXCJyZWdzLmhcXFwiXFxuICAxNzpcXHRcXG4gIDE4OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtdDc2MTVfZGV2aWNlX3RhYmxlW10gPSB7XFxuICAxOTpcXHRcXHR7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MGU4ZCwgMHg3NjYzLCAweGZmLCAweGZmLCAweGZmKSB9LFxcbiAgMjA6XFx0XFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDA0M2UsIDB4MzEwYywgMHhmZiwgMHhmZiwgMHhmZikgfSxcXG4gIDIxOlxcdFxcdHsgfSxcXG4gIDIyOlxcdH07XFxuICAyMzpcXHRcXG4gIDI0OlxcdHN0YXRpYyB1MzIgbXQ3NjYzdV9ycihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGFkZHIpXFxuICAyNTpcXHR7XFxuICAyNjpcXHRcXHR1MzIgcmV0O1xcbiAgMjc6XFx0XFxuICAyODpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXVzYi51c2JfY3RybF9tdHgpO1xcbiAgMjk6XFx0XFx0cmV0ID0gX19fbXQ3NnVfcnIoZGV2LCBNVF9WRU5EX1JFQURfRVhULFxcbiAgMzA6XFx0XFx0XFx0XFx0ICBVU0JfRElSX0lOIHwgVVNCX1RZUEVfVkVORE9SLCBhZGRyKTtcXG4gIDMxOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2V1c2IudXNiX2N0cmxfbXR4KTtcXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0cmV0dXJuIHJldDtcXG4gIDM0OlxcdH1cXG4gIDM1OlxcdFxcbiAgMzY6XFx0c3RhdGljIHZvaWQgbXQ3NjYzdV93cihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGFkZHIsIHUzMiB2YWwpXFxuICAzNzpcXHR7XFxuICAzODpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXVzYi51c2JfY3RybF9tdHgpO1xcbiAgMzk6XFx0XFx0X19fbXQ3NnVfd3IoZGV2LCBNVF9WRU5EX1dSSVRFX0VYVCxcXG4gIDQwOlxcdFxcdFxcdCAgICBVU0JfRElSX09VVCB8IFVTQl9UWVBFX1ZFTkRPUiwgYWRkciwgdmFsKTtcXG4gIDQxOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2V1c2IudXNiX2N0cmxfbXR4KTtcXG4gIDQyOlxcdH1cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0c3RhdGljIHUzMiBtdDc2NjN1X3JtdyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGFkZHIsXFxuICA0NTpcXHRcXHRcXHQgICAgICAgdTMyIG1hc2ssIHUzMiB2YWwpXFxuICA0NjpcXHR7XFxuICA0NzpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXVzYi51c2JfY3RybF9tdHgpO1xcbiAgNDg6XFx0XFx0dmFsIHw9IF9fX210NzZ1X3JyKGRldiwgTVRfVkVORF9SRUFEX0VYVCxcXG4gIDQ5OlxcdFxcdFxcdFxcdCAgIFVTQl9ESVJfSU4gfCBVU0JfVFlQRV9WRU5ET1IsIGFkZHIpIFxcdTAwMjYgfm1hc2s7XFxuICA1MDpcXHRcXHRfX19tdDc2dV93cihkZXYsIE1UX1ZFTkRfV1JJVEVfRVhULFxcbiAgNTE6XFx0XFx0XFx0ICAgIFVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfVkVORE9SLCBhZGRyLCB2YWwpO1xcbiAgNTI6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXVzYi51c2JfY3RybF9tdHgpO1xcbiAgNTM6XFx0XFxuICA1NDpcXHRcXHRyZXR1cm4gdmFsO1xcbiAgNTU6XFx0fVxcbiAgNTY6XFx0XFxuICA1NzpcXHRzdGF0aWMgdm9pZCBtdDc2NjN1X2NvcHkoc3RydWN0IG10NzZfZGV2ICpkZXYsIHUzMiBvZmZzZXQsXFxuICA1ODpcXHRcXHRcXHRcXHQgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbilcXG4gIDU5OlxcdHtcXG4gIDYwOlxcdFxcdHN0cnVjdCBtdDc2X3VzYiAqdXNiID0gXFx1MDAyNmRldi1cXHUwMDNldXNiO1xcbiAgNjE6XFx0XFx0aW50IHJldCwgaSA9IDAsIGJhdGNoX2xlbjtcXG4gIDYyOlxcdFxcdGNvbnN0IHU4ICp2YWwgPSBkYXRhO1xcbiAgNjM6XFx0XFxuICA2NDpcXHRcXHRsZW4gPSByb3VuZF91cChsZW4sIDQpO1xcbiAgNjU6XFx0XFxuICA2NjpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ1c2ItXFx1MDAzZXVzYl9jdHJsX210eCk7XFxuICA2NzpcXHRcXHR3aGlsZSAoaSBcXHUwMDNjIGxlbikge1xcbiAgNjg6XFx0XFx0XFx0YmF0Y2hfbGVuID0gbWluX3QoaW50LCB1c2ItXFx1MDAzZWRhdGFfbGVuLCBsZW4gLSBpKTtcXG4gIDY5OlxcdFxcdFxcdG1lbWNweSh1c2ItXFx1MDAzZWRhdGEsIHZhbCArIGksIGJhdGNoX2xlbik7XFxuICA3MDpcXHRcXHRcXHRyZXQgPSBfX210NzZ1X3ZlbmRvcl9yZXF1ZXN0KGRldiwgTVRfVkVORF9XUklURV9FWFQsXFxuICA3MTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfVkVORE9SLFxcbiAgNzI6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAob2Zmc2V0ICsgaSkgXFx1MDAzZVxcdTAwM2UgMTYsIG9mZnNldCArIGksXFxuICA3MzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHVzYi1cXHUwMDNlZGF0YSwgYmF0Y2hfbGVuKTtcXG4gIDc0OlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiAgNzU6XFx0XFx0XFx0XFx0YnJlYWs7XFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdFxcdGkgKz0gYmF0Y2hfbGVuO1xcbiAgNzg6XFx0XFx0fVxcbiAgNzk6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ1c2ItXFx1MDAzZXVzYl9jdHJsX210eCk7XFxuICA4MDpcXHR9XFxuICA4MTpcXHRcXG4gIDgyOlxcdHN0YXRpYyB2b2lkIG10NzY2M3Vfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxcbiAgODM6XFx0e1xcbiAgODQ6XFx0XFx0c3RydWN0IG10NzYxNV9waHkgKnBoeSA9IG10NzYxNV9od19waHkoaHcpO1xcbiAgODU6XFx0XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGh3LVxcdTAwM2Vwcml2O1xcbiAgODY6XFx0XFxuICA4NzpcXHRcXHRjbGVhcl9iaXQoTVQ3Nl9TVEFURV9SVU5OSU5HLCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4gIDg4OlxcdFxcdHRpbWVyX2RlbGV0ZV9zeW5jKFxcdTAwMjZwaHktXFx1MDAzZXJvY190aW1lcik7XFxuICA4OTpcXHRcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZwaHktXFx1MDAzZXJvY193b3JrKTtcXG4gIDkwOlxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2cGh5LVxcdTAwM2VzY2FuX3dvcmspO1xcbiAgOTE6XFx0XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZwaHktXFx1MDAzZW10NzYtXFx1MDAzZW1hY193b3JrKTtcXG4gIDkyOlxcdFxcdG10NzZ1X3N0b3BfdHgoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuICA5MzpcXHR9XFxuICA5NDpcXHRcXG4gIDk1OlxcdHN0YXRpYyB2b2lkIG10NzY2M3VfY2xlYW51cChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbiAgOTY6XFx0e1xcbiAgOTc6XFx0XFx0Y2xlYXJfYml0KE1UNzZfU1RBVEVfSU5JVElBTElaRUQsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc3RhdGUpO1xcbiAgOTg6XFx0XFx0bXQ3NnVfcXVldWVzX2RlaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gIDk5OlxcdH1cXG4gMTAwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0Njo0NC4yOTUwOTQzMDZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTIxMzMwMTY3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBEZWVwZXIgaW50byB0aGUgTVQ3NjE1IFVTQiBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBzbyB3ZSd2ZSBiZWVuIGZvY3VzaW5nIG9uIHRoYXQgc3BlY2lmaWMgYXJlYSBvZiB0aGUgTVQ3NjE1IFVTQiBkcml2ZXIsIGJ1dCBpdCdzIHRpbWUgdG8gYnJvYWRlbiB0aGUgc2NvcGUuIEkgbmVlZCB0byBnZXQgYSBtb3JlIGNvbXByZWhlbnNpdmUgdmlldyBvZiBob3cgdGhpcyBhbGwgZnVuY3Rpb25zLiBJIHNob3VsZCBkZWZpbml0ZWx5IGV4YW1pbmUgdGhlIHdob2xlIG9mIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgcGllY2VzLCB3aGVyZSB0aGUgY29udHJvbCBmbG93IG9yaWdpbmF0ZXMsIGFuZCBob3cgaXQgYWxsIGhhbmdzIHRvZ2V0aGVyLiBUaGVyZSBjb3VsZCBiZSBjcml0aWNhbCBjbHVlcyB3aXRoaW4gdGhlIHNlZW1pbmdseSBcInVuaW1wb3J0YW50XCIgc2VjdGlvbnMsIGRldGFpbHMgdGhhdCBhZmZlY3QgdGhlIG1vZHVsZSBiZWhhdmlvci4gVGhpcyBkZWVwZXIgZGl2ZSB3aWxsIGV4cG9zZSBob3cgdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZSBpcyBpbnRlZ3JhdGVkIGludG8gdGhlIHJlc3Qgb2YgdGhlIGxhcmdlciBNVDc2IGZyYW1ld29yaywgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgY2VydGFpbiBkZXNpZ24gY2hvaWNlcy4gVGhhdCBicm9hZGVyIGNvbnRleHQgd2lsbCBiZSBjcnVjaWFsIGZvciB0aGUgcHJvYmxlbSBJJ20gd29ya2luZyBvbi4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MzE4LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0Njo0OS41MDgzOTkwMzVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTgwLFxuICBcIkxpbmVDb3VudFwiOiA5MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTgwOlxcdFxcdGlmIChyZXQpXFxuIDE4MTpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiAxODI6XFx0XFxuIDE4MzpcXHRcXHRyZXQgPSBtdDc2dV9hbGxvY19xdWV1ZXMoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDE4NDpcXHRcXHRpZiAocmV0KVxcbiAxODU6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gMTg2OlxcdFxcbiAxODc6XFx0XFx0cmV0ID0gbXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZShkZXYpO1xcbiAxODg6XFx0XFx0aWYgKHJldClcXG4gMTg5OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDE5MDpcXHRcXG4gMTkxOlxcdFxcdHJldHVybiAwO1xcbiAxOTI6XFx0XFxuIDE5MzpcXHRlcnJvcjpcXG4gMTk0OlxcdFxcdG10NzZ1X3F1ZXVlc19kZWluaXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDE5NTpcXHRcXHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcXG4gMTk2OlxcdFxcdHVzYl9wdXRfZGV2KGludGVyZmFjZV90b191c2JkZXYodXNiX2ludGYpKTtcXG4gMTk3OlxcdFxcbiAxOTg6XFx0XFx0bXQ3Nl9mcmVlX2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMTk5OlxcdFxcbiAyMDA6XFx0XFx0cmV0dXJuIHJldDtcXG4gMjAxOlxcdH1cXG4gMjAyOlxcdFxcbiAyMDM6XFx0c3RhdGljIHZvaWQgbXQ3NjYzdV9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcXG4gMjA0OlxcdHtcXG4gMjA1OlxcdFxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKHVzYl9pbnRmKTtcXG4gMjA2OlxcdFxcbiAyMDc6XFx0XFx0aWYgKCF0ZXN0X2JpdChNVDc2X1NUQVRFX0lOSVRJQUxJWkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKSlcXG4gMjA4OlxcdFxcdFxcdHJldHVybjtcXG4gMjA5OlxcdFxcbiAyMTA6XFx0XFx0aWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoZGV2LVxcdTAwM2VtdDc2Lmh3KTtcXG4gMjExOlxcdFxcdG10NzY2M3VfY2xlYW51cChkZXYpO1xcbiAyMTI6XFx0XFxuIDIxMzpcXHRcXHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcXG4gMjE0OlxcdFxcdHVzYl9wdXRfZGV2KGludGVyZmFjZV90b191c2JkZXYodXNiX2ludGYpKTtcXG4gMjE1OlxcdFxcbiAyMTY6XFx0XFx0bXQ3Nl9mcmVlX2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMjE3OlxcdH1cXG4gMjE4OlxcdFxcbiAyMTk6XFx0I2lmZGVmIENPTkZJR19QTVxcbiAyMjA6XFx0c3RhdGljIGludCBtdDc2NjN1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcXG4gMjIxOlxcdHtcXG4gMjIyOlxcdFxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xcbiAyMjM6XFx0XFxuIDIyNDpcXHRcXHRpZiAoIXRlc3RfYml0KE1UNzZfU1RBVEVfU1VTUEVORCwgXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5zdGF0ZSkgXFx1MDAyNlxcdTAwMjZcXG4gMjI1OlxcdFxcdCAgICBtdDc2MTVfZmlybXdhcmVfb2ZmbG9hZChkZXYpKSB7XFxuIDIyNjpcXHRcXHRcXHRpbnQgZXJyO1xcbiAyMjc6XFx0XFxuIDIyODpcXHRcXHRcXHRlcnIgPSBtdDc2X2Nvbm5hY19tY3Vfc2V0X2hpZl9zdXNwZW5kKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHRydWUsIHRydWUpO1xcbiAyMjk6XFx0XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIDIzMDpcXHRcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiAyMzE6XFx0XFx0fVxcbiAyMzI6XFx0XFxuIDIzMzpcXHRcXHRtdDc2dV9zdG9wX3J4KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbiAyMzQ6XFx0XFx0bXQ3NnVfc3RvcF90eChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMjM1OlxcdFxcbiAyMzY6XFx0XFx0cmV0dXJuIDA7XFxuIDIzNzpcXHR9XFxuIDIzODpcXHRcXG4gMjM5OlxcdHN0YXRpYyBpbnQgbXQ3NjYzdV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuIDI0MDpcXHR7XFxuIDI0MTpcXHRcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcXG4gMjQyOlxcdFxcdGludCBlcnI7XFxuIDI0MzpcXHRcXG4gMjQ0OlxcdFxcdGVyciA9IG10NzZ1X3ZlbmRvcl9yZXF1ZXN0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1UX1ZFTkRfRkVBVFVSRV9TRVQsXFxuIDI0NTpcXHRcXHRcXHRcXHRcXHQgICBVU0JfRElSX09VVCB8IFVTQl9UWVBFX1ZFTkRPUixcXG4gMjQ2OlxcdFxcdFxcdFxcdFxcdCAgIDB4NSwgMHgwLCBOVUxMLCAwKTtcXG4gMjQ3OlxcdFxcdGlmIChlcnIpXFxuIDI0ODpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiAyNDk6XFx0XFxuIDI1MDpcXHRcXHRlcnIgPSBtdDc2dV9yZXN1bWVfcngoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDI1MTpcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4gMjUyOlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDI1MzpcXHRcXG4gMjU0OlxcdFxcdGlmICghdGVzdF9iaXQoTVQ3Nl9TVEFURV9TVVNQRU5ELCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKSBcXHUwMDI2XFx1MDAyNlxcbiAyNTU6XFx0XFx0ICAgIG10NzYxNV9maXJtd2FyZV9vZmZsb2FkKGRldikpXFxuIDI1NjpcXHRcXHRcXHRlcnIgPSBtdDc2X2Nvbm5hY19tY3Vfc2V0X2hpZl9zdXNwZW5kKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIGZhbHNlLCB0cnVlKTtcXG4gMjU3OlxcdFxcbiAyNTg6XFx0XFx0cmV0dXJuIGVycjtcXG4gMjU5OlxcdH1cXG4gMjYwOlxcdCNlbmRpZiAvKiBDT05GSUdfUE0gKi9cXG4gMjYxOlxcdFxcbiAyNjI6XFx0TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG10NzYxNV9kZXZpY2VfdGFibGUpO1xcbiAyNjM6XFx0TU9EVUxFX0ZJUk1XQVJFKE1UNzY2M19PRkZMT0FEX0ZJUk1XQVJFX045KTtcXG4gMjY0OlxcdE1PRFVMRV9GSVJNV0FSRShNVDc2NjNfT0ZGTE9BRF9ST01fUEFUQ0gpO1xcbiAyNjU6XFx0TU9EVUxFX0ZJUk1XQVJFKE1UNzY2M19GSVJNV0FSRV9OOSk7XFxuIDI2NjpcXHRNT0RVTEVfRklSTVdBUkUoTVQ3NjYzX1JPTV9QQVRDSCk7XFxuIDI2NzpcXHRcXG4gMjY4OlxcdHN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2NjN1X2RyaXZlciA9IHtcXG4gMjY5OlxcdFxcdC5uYW1lXFx0XFx0PSBLQlVJTERfTU9ETkFNRSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NDY6NDkuNTA4NDk1NDc1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY4ODQ5Njc2MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc2NjNVIGFuZCBtdDc2MTUgRHJpdmVyIEludGVyYWN0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGb3IgdGhlIE1UNzY2M1UsIHRoZSBjaGlwIElEIGlzIDB4NzY2My4gSSB3YXMgbG9va2luZyBhdCBob3cgdGhlIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAgZnVuY3Rpb24gaGFuZGxlcyB0aGlzLCBhbmQgSSBzZWUgYSBwcm9ibGVtIHJpZ2h0IGF3YXkuIFRoZSBmdW5jdGlvbiBpbmNsdWRlcyB0aGlzIGNoZWNrOlxuXG5gYGBjXG5cdGlmICghaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcblx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG5gYGBcblxuYGlzX210NzYxNWAgY2hlY2tzIGZvciBgbXQ3Nl9jaGlwKGRldikgPT0gMHg3NjE1IHx8IG10NzZfY2hpcChkZXYpID09IDB4NzYxMWAuIEJ1dCB3YWl0LCB0aGUgTVQ3NjYzIGhhcyBhIGNoaXAgSUQgb2YgMHg3NjYzLiBTbywgZm9yIHRoZSBNVDc2NjNVICh0aGUgVVNCIHZlcnNpb24pLCBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIGlzIGltbWVkaWF0ZWx5IHJldHVybmluZyBgLUVPUE5PVFNVUFBgISBUaGlzIGhhcHBlbnMgKmJlZm9yZSogYW55IG9mIHRoZSBsb2dpYyBJJ20gaW50ZXJlc3RlZCBpbiFcblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBpcyBoYXBwZW5pbmcuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgbXQ3NjE1YCAoMHg3NjE1IC8gMHg3NjExKSBldmVuICpleGlzdHMqIGFzIGEgVVNCIGRldmljZSwgb3IgaWYgaXQncyBzdHJpY3RseSBQQ0llLiBMZXQncyBzZWUuLi4gSSdsbCBzZWFyY2ggdGhlIGBtdDc2MTVgIGRyaXZlciBmb3IgZGV2aWNlIGluZm9ybWF0aW9uLlxuXG5Pa2F5LCBsZXQncyBkaWcgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2AgZGlyZWN0b3J5LlxuXG4qICAgYHBjaS5jYDogQWgsIHRoZXJlJ3MgYSBgbXQ3NjE1X3BjaV9kZXZpY2VfdGFibGVgIHRoYXQgaW5jbHVkZXMgZGV2aWNlcyB3aXRoIHRoZSB2ZW5kb3IgSUQgYW5kIDB4NzYxNSwgMHg3NjYzLCBhbmQgMHg3NjExIGNoaXAgSURzLiBUaGlzIGNsZWFybHkgZGVmaW5lcyBQQ0llIGRldmljZXMuXG4qICAgYHVzYi5jYDogRXhjZWxsZW50LiBUaGUgYG10NzYxNV9kZXZpY2VfdGFibGVgIGluY2x1ZGVzIFVTQiBkZXZpY2VzOiB0aGUgVVNCIGRldmljZSBgMHgwZThkLCAweDc2NjNgICphbmQqIGAweDA0M2UsIDB4MzEwY2Agd2hpY2ggaXMgYWxzbyBhbiBNVDc2NjNVIVxuKiAgIGBzZGlvLmNgOiBGb3VuZCBhIGRldmljZSBoZXJlIGZvciBgbXQ3NjYzc2AgKFNESU8pLlxuKiAgIGBzb2MuY2A6IENvbnRhaW5zIGNvZGUgZm9yIGBNVDc2MjJfV01BQ2AgKGJ1aWx0LWluIFdNQUMgb24gTVQ3NjIyIFNvQywgQVJNIC8gQVJDSF9NRURJQVRFSykuXG5cbkFscmlnaHQsIEkgc2VlIGEgY2xlYXIgZGVsaW5lYXRpb24uIFRoZSBNVDc2MTUvTVQ3NjExIGRyaXZlcnMgYXJlIG5vdCAqb25seSogZm9yIFBDSWUgZGV2aWNlcywgc2luY2UgVVNCIGFuZCBTRElPIGFyZSBjb3ZlcmVkLiBUaGUgYHVzYi5jYCBmaWxlIGNvbmZpcm1zIHRoYXQgdGhlcmUgaXMgc3VwcG9ydCBmb3IgdGhlc2UgY2hpcHMgb3ZlciBVU0IuIFNvLCB0aGUgaXNzdWUgaXNuJ3QgdGhhdCBgbXQ3NjE1YCBpcyAqb25seSogUENJZS4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGUgZHJpdmVyIGlzIHJlamVjdGluZyB0aGUgTVQ3NjYzVSBiYXNlZCBvbiB0aGF0IGNoZWNrLiBJJ2xsIG5lZWQgdG8gbG9vayBtb3JlIGNsb3NlbHkgYXQgaG93IHRoZSBkcml2ZXIgaWRlbnRpZmllcyB0aGVzZSBzcGVjaWZpYyBkZXZpY2VzIGFuZCB3aGVyZSB0aGlzIGNvZGUgbWlnaHQgYmUgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYwNDUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0Njo1Ni4zOTM0NjYwMDdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2ODQ2Mzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNkaW9fZGV2aWNlX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYzoyMjpzdGF0aWMgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkIG10NzY2M3NfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtMjMtXFx0eyBTRElPX0RFVklDRShTRElPX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3NjAzKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jPTc2PXN0YXRpYyBpbnQgbXQ3NjYzc19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYzo3NzpcXHRcXHRcXHQgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtNzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYzoxOTpzdGF0aWMgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkIG10NzkyMXNfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmMtMjAtXFx0eyBTRElPX0RFVklDRShTRElPX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3OTAxKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYz05MD1zdGF0aWMgaW50IG10NzkyMXNfcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6OTE6XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTkyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NDY6NTYuNDUwMzE5NDcxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY0NjgzOTI3MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmcgYG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5YCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gVGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2Ugc2hvdWxkIGNvbnNpZGVyIGZ1enppbmcgdGhlIGNvZGUgd2l0aGluIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAuIFRoZSBmaXJzdCBodXJkbGUgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uLCBvbiB0aGUgZmFjZSBvZiBpdCwgc2VlbXMgdGlnaHRseSBjb3VwbGVkIHRvIHBoeXNpY2FsIGhhcmR3YXJlLiBTcGVjaWZpY2FsbHksIHRoZSBmdW5jdGlvbiBsb2dpYyBpcyB1c2VkIG9ubHkgd2hlbiBhbiBleHRlcm5hbCBQSFkgaXMgcmVnaXN0ZXJlZC4gYGlzX210NzYxNWAgY2hlY2tzIGZvciBNZWRpYXRlayBjaGlwIElEcyAweDc2MTUgb3IgMHg3NjExLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhlc2UgYXJlIGZvdW5kIGluIHRoZSBgbXQ3NjE1X3BjaV9kZXZpY2VfdGFibGVgLCB3aGljaCBzdHJvbmdseSBzdWdnZXN0cyBQQ0llIGRldmljZXMuXG5cblRoZSBrZXkgbmVnYXRpdmUgY3JpdGVyaW9uIGluIHRoZSBwcm9tcHQgaXMgYWJvdXQgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsXCIgc3BlY2lmaWNhbGx5IHZlbmRvci1zcGVjaWZpYyBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgYSByZWQgZmxhZyEgU3RhbmRhcmQgUUVNVSwgYXMgZmFyIGFzIEkga25vdywgZG9lc24ndCBlbXVsYXRlIHRoZSBNZWRpYVRlayBNVDc2MTUvTVQ3NjExIFBDSWUgaGFyZHdhcmUuIFRoaXMgd291bGQgYXV0b21hdGljYWxseSBleGNsdWRlIGl0IGZyb20gYmVpbmcgZnV6emFibGUuXG5cbkJ1dCB3ZSBoYXZlIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gTGV0J3MgdHJhY2UgdGhlIGNhbGxlcnMgb2YgYG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5YC4gV2UndmUgZ290IHR3byBjYWxsZXJzOlxuXG4xLiAgYG10NzYxNV9yZWdpc3Rlcl9kZXZpY2VgICh2aWEgYG10NzYxNV9wY2lfcHJvYmVgKTogVGhpcyBpcyBjYWxsZWQgZHVyaW5nIHRoZSBQQ0llIHByb2JlLiBTbywgYSBNZWRpYXRlayBNVDc2MTUgUENJZSBjYXJkIHByb2JlLiBUaGF0J3MgYSBwaHlzaWNhbCBjYXJkIHByb2JlLlxuMi4gIGBtdDc2MTVfZGJkY19zZXRgOiAgVGhpcyBpcyBjYWxsZWQgdmlhIGEgZGVidWdmcyBlbnRyeS4gSG93ZXZlciwgdG8gKmNyZWF0ZSogdGhlIGRlYnVnZnMgZW50cnksIHlvdSdkIGhhdmUgdG8gaW5pdGlhbGl6ZSBhIGBtdDc2MTVgIGRldmljZSAoZWl0aGVyIHZpYSBgbXQ3NjE1X3JlZ2lzdGVyX2RldmljZWAsIG9yIGJ5IGEgVVNCIG9yIFNESU8gZGV2aWNlIHJlZ2lzdGVyaW5nKS4gVGhpcyBpcyBwb3RlbnRpYWxseSBpbnRlcmVzdGluZy4gSWYgaXQgd2FzIGNyZWF0ZWQgYnkgYG10NzY2M3VgIChVU0IpLCBhbmQgc29tZW9uZSB3cml0ZXMgdG8gYGRiZGNgLCBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIHdpbGwgZXhlY3V0ZS4gSG93ZXZlciwgYmVjYXVzZSBNVDc2NjMgaGFzIGNoaXAgSUQgMHg3NjYzIChgIWlzX210NzYxNWApLCBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIGltbWVkaWF0ZWx5IHJldHVybnMgYC1FT1BOT1RTVVBQYC4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgbmV2ZXIgcmVhY2hlZCBpbiB0aGlzIHNjZW5hcmlvISBBbHNvLCBmb3IgdGhlIE1UNzYxNSBQQ0llIGRldmljZSAod2hpY2ggSVMgYGlzX210NzYxNWApLCB0aGUgZGV2aWNlIGNhbm5vdCBiZSBwcm9iZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VIC8gR0NFKSBiZWNhdXNlIE1UNzYxNSBpcyBwaHlzaWNhbCBNZWRpYVRlayBQQ0llIGhhcmR3YXJlLlxuXG5TbywgaW4gdGhlIGZpcnN0IGNhbGxpbmcgcGF0aCwgeW91IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUuIEluIHRoZSBzZWNvbmQgY2FsbGluZyBwYXRoLCBpZiBpdCBleGVjdXRlcyB3aXRoIGEgVVNCIG9yIFNESU8gZGV2aWNlLCB5b3UgaGF2ZSBhbiBlYXJseSByZXR1cm4gZnJvbSBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIHRoYXQgc2tpcHMgdGhlIG1vZGlmaWVkIGNvZGUuXG5cblRoZSBmaW5hbCBxdWVzdGlvbjogaXMgdGhlcmUgYW55IHZpcnR1YWwgb3IgbW9jayBpbnRlcmZhY2UgZm9yIGBtdDc2YD8gTWF5YmUgc29tZSBgbWFjODAyMTFfaHdzaW1gIG9yIHNpbWlsYXI/IExldCBtZSBkbyBhIHF1aWNrIHNlYXJjaC4uLiBObywgbm90aGluZyBpbW1lZGlhdGVseSBhcHBhcmVudC4gVGhhdCB3b3VsZCBiZSB0aGUgb25seSBjaGFuY2Ugb2YgcnVubmluZyB0aGlzIGluIGEgVk0uXG5cbkJhc2VkIG9uIHRoZSBldmlkZW5jZSwgdGhlIG1vZGlmaWVkIGNvZGUgaW4gYG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5YCBpcyBvbmx5IHJlYWNoYWJsZSBvbiBwaHlzaWNhbCBoYXJkd2FyZS4gSXQgc2VlbXMgd2Ugc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc4OTgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NDc6MDIuOTE4NzE0MTc2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODM2NDg3NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3Nl9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NDc6MDIuOTY3MDg2MjQyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExNTYxNjQxOTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYG10NzZfY2hpcGAgQ29udGV4dCoqXG5cblJpZ2h0LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhbnkgY29ubmVjdGlvbiBiZXR3ZWVuIHRoaXMgYG1hYzgwMjExX2h3c2ltYCBkcml2ZXIgYW5kIHRoZSBgbXQ3NmAgZnJhbWV3b3JrLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhleSBhcmUgY29tcGxldGVseSBzZXBhcmF0ZTsgYG1hYzgwMjExX2h3c2ltYCBpcyBleHBsaWNpdGx5IGEgc29mdHdhcmUgc2ltdWxhdGlvbiBvZiB0aGUgaGFyZHdhcmUgYW5kIGhhcyBubyBpbmhlcmVudCBsaW5rIHRvIE1lZGlhVGVrJ3MgYG10NzZgIGRyaXZlcnMuIEl0J3MgZGVzaWduZWQgdG8gYmUgaW5kZXBlbmRlbnQuXG5cbkhvd2V2ZXIsIEkgbmVlZCB0byBiZSAqYWJzb2x1dGVseSogc3VyZS4gVGhlIHF1ZXN0aW9uIGlzOiBjb3VsZCB0aGVyZSBiZSBzb21lIHVuZm9yZXNlZW4gaW50ZXJhY3Rpb24sIHBlcmhhcHMgYSBzdWJ0bGUgZGVwZW5kZW5jeSwgb3IgZXZlbiBhIG1pc2NvbmZpZ3VyYXRpb24gdGhhdCBjb3VsZCBsZWFkIHRvIHNvbWV0aGluZyBiZWluZyBpbmNvcnJlY3RseSBzZXQ/IFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBib29sZWFuIGBpc19tdDc2MTVgLiBDYW4gdGhhdCBldmVyIGJlIHRydWUgaW4gdGhlIGNvbnRleHQgb2YgYSBVU0IgZGV2aWNlLCBvciBhIHZpcnR1YWwgZGV2aWNlIGxpa2UgYG1hYzgwMjExX2h3c2ltYD8gU2VlbXMgdW5saWtlbHkgb24gdGhlIGZhY2Ugb2YgaXQsIGJ1dCBiZXR0ZXIgdG8gY29uZmlybS5cblxuVGhlcmVmb3JlLCBteSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYCBkaXJlY3RvcnkuIFRoYXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBjaGVjayB3aGVyZSB0aGUgYG10NzZfY2hpcGAgZGF0YSBzdHJ1Y3R1cmUgaXMgYmVpbmcgaW5pdGlhbGl6ZWQgYW5kIHNldC4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBsb2dpYyB0aGF0IG1pZ2h0IHBvdGVudGlhbGx5IG1pc2lkZW50aWZ5IGEgZGV2aWNlLCBvciBhbnkgY29kZSBwYXRocyB0aGF0IGNvdWxkIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBpbiBhIHZpcnR1YWxpemVkIG9yIFVTQi1jb25uZWN0ZWQgc2NlbmFyaW8uIEknbSBsb29raW5nIGZvciBjbHVlcyBpbiB0aGUgaW5pdGlhbCBzZXR1cCBvZiB0aGlzIGNoaXAgaWRlbnRpZmljYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NTI0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NDc6MTQuNTI4NzMyMDExWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mzg5NDgwMSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiLVxcdTAwM2VjaGlwLmRldl9pZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0NzoxNC41ODI2MzQzMDJaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM5MTE4NzY2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6XG5cbioqRmluZGluZyB0aGUgT3JpZ2luIG9mIG10NzZfY2hpcCBhbmQgUmVsYXRlZCBWYXJpYWJsZXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgZGVmaW5pdGlvbiBvZiBgbXQ3Nl9jaGlwYCwgYW5kIHVuZGVyc3RhbmQgd2hlcmUgYGRldi1cdTAwM2VjaGlwYCBhbmQgYGNoaXBfaWRgIGFyZSBiZWluZyBhc3NpZ25lZCB0aGVpciB2YWx1ZXMuIFRoaXMgdXN1YWxseSBtZWFucyBzdGFydGluZyB3aXRoIGEgZ3JlcCBzZWFyY2ggYWNyb3NzIHRoZSByZWxldmFudCBzb3VyY2UgY29kZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQuIElzIHRoaXMgYSBzcGVjaWZpYyBkcml2ZXI/IElzIGBtdDc2X2NoaXBgIGEgc3RydWN0dXJlLCBhIG1hY3JvLCBvciBzb21ldGhpbmcgZWxzZT8gSSdsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgYnJvYWRlciBzZWFyY2ggZm9yIGBtdDc2X2NoaXBgIGFuZCBpdHMgdXNlcy4gVGhlbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBkZXYtXHUwMDNlY2hpcGAgKHdoaWNoIGlzIGxpa2VseSBhIG1lbWJlciBvZiBhIGRldmljZSBzdHJ1Y3R1cmUpIGFuZCBgY2hpcF9pZGAuIElzIGBjaGlwX2lkYCBzb21lIGtpbmQgb2YgaWRlbnRpZmllcj8gSXMgYGRldi1cdTAwM2VjaGlwYCBhIHBvaW50ZXIgdG8gc29tZXRoaW5nIGVsc2U/IFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gZmxvdy4gSSdsbCBuZWVkIHRvIGZvbGxvdyB0aGUgY29kZSBwYXRocyB3aGVyZSB0aGVzZSBhcmUgdXNlZCBhbmQvb3Igc2V0LCBsb29raW5nIGZvciBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgcHJvYmUgZnVuY3Rpb25zLCBhbmQgYW55IG90aGVyIHBsYWNlcyB3aGVyZSBoYXJkd2FyZSBpZGVudGlmaWNhdGlvbiBvciBzZXR1cCBpcyBsaWtlbHkgb2NjdXJyaW5nLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGVzZSB2YXJpYWJsZXMgcmVsYXRlIGFuZCB3aGVyZSB0aGV5IGFyZSBzZXQgaXMgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRlc2lnbiBhbmQgb3BlcmF0aW9uIG9mIHRoaXMgZHJpdmVyLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5OTk4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NDc6MTYuOTczODI0NzExWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTAwNjM4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X2NoaXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMjI3PWJvb2wgbXQ3Nl9wY2lfYXNwbV9zdXBwb3J0ZWQoc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTIyOTpzdGF0aWMgaW5saW5lIHUxNiBtdDc2X2NoaXAoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTIzMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMjYxPXN0YXRpYyBpbmxpbmUgaW50IG10NzZfd2VkX2RtYV9zZXR1cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEyNjg6I2RlZmluZSBtdDc2eHhfY2hpcChkZXYpIG10NzZfY2hpcChcXHUwMDI2KChkZXYpLVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjY5LSNkZWZpbmUgbXQ3Nnh4X3JldihkZXYpIG10NzZfcmV2KFxcdTAwMjYoKGRldiktXFx1MDAzZW10NzYpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM9MzE1PXN0YXRpYyB2b2lkIG10NzYxNV9jYWxfZnJlZV9kYXRhKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0zMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6MzIyOlxcdHN3aXRjaCAobXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMzIzLVxcdGNhc2UgMHg3NjIyOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM9MTY5Nj1pbnQgbXQ3NjE1X21jdV9pbml0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNzEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jOjE3MTE6XFx0c3dpdGNoIChtdDc2X2NoaXAoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNzEyLVxcdGNhc2UgMHg3NjIyOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM9MTc0Nz1pbnQgbXQ3NjE1X21jdV9zZXRfZWVwcm9tKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNzU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jOjE3NjA6XFx0c3dpdGNoIChtdDc2X2NoaXAoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNzYxLVxcdGNhc2UgMHg3NjIyOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTE3NT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTI1KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xNzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoxNzc6XFx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4NzkyNTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMTc4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0xODA9c3RhdGljIGlubGluZSBib29sIGlzX210NzkyMChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMTgxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MTgyOlxcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc5MjA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE4My19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MTg1PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5MDIoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE4Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjE4NzpcXHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3OTAyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xODgtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTE5MD1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTIyKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xOTEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoxOTI6XFx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4NzkyMjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMTkzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0xOTU9c3RhdGljIGlubGluZSBib29sIGlzX2Nvbm5hYzIoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE5Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjE5NzpcXHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3OTYxIHx8IGlzX210NzkyMihkZXYpIHx8IGlzX210NzkyMChkZXYpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE5OC1cXHRcXHRcXHRcXHRpc19tdDc5MDIoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yMDE9c3RhdGljIGlubGluZSBib29sIGlzX210NzY2MyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjAyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjAzOlxcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc2NjM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIwNC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjA2PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5MTUoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIwNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjIwODpcXHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3OTE1O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMDktfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTIxMT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTE2KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMTIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoyMTM6XFx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4NzkwNjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjE0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yMTY9c3RhdGljIGlubGluZSBib29sIGlzX210Nzk4MShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjE3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjE4OlxcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc5ODE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIxOS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjIxPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5ODYoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIyMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjIyMzpcXHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3OTg2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMjQtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTIzMT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTk2KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMzIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoyMzM6XFx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4Nzk5MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjM0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yMzY9c3RhdGljIGlubGluZSBib29sIGlzX210Nzk5MihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjM3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjM4OlxcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc5OTI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIzOS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjQxPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5OTAoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI0Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjI0MzpcXHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3OTkzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNDQtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTI1MT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3NjIyKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjU2OlxcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MjI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI1Ny19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjU5PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MTUoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI2MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjI2MTpcXHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3NjE1IHx8IG10NzZfY2hpcChkZXYpID09IDB4NzYxMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjYyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yNjQ9c3RhdGljIGlubGluZSBib29sIGlzX210NzYxMShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjY1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjY2OlxcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MTE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI2Ny19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9Mjc0PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2X2Z3X3R4cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjc1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6Mjc2OlxcdHN3aXRjaCAobXQ3Nl9jaGlwKGRldikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjc3LVxcdGNhc2UgMHg3OTYxOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmg9MzE9c3RhdGljIGlubGluZSBib29sIGlzX210NzYxMGUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaC0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaDozNjpcXHRyZXR1cm4gbXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID09IDB4NzYxMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaC0zNy19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaD0zOT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3NjMwKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oLTQwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaDo0MTpcXHRyZXR1cm4gbXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID09IDB4NzYzMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaC00Mi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2kuYz05NT1zdGF0aWMgaW50IG10NzZ4MGVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgYm9vbCByZXN1bWUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2kuYy0xMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmM6MTIwOlxcdGlmIChtdDc2X2NoaXAoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgPT0gMHg3NjEwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmMtMTIxLVxcdFxcdHUxNiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2lfbWN1LmM9MTM9c3RhdGljIGludCBtdDc2eDBlX2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpX21jdS5jLTE0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2lfbWN1LmM6MTU6XFx0Ym9vbCBpc19jb21ib19jaGlwID0gbXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpICE9IDB4NzYxMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2lfbWN1LmMtMTYtXFx0dTMyIHZhbCwgaWxtX2xlbiwgZGxtX2xlbiwgb2Zmc2V0ID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oPTIyNz1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3NngwKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oLTIyOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmg6MjI5OlxcdHJldHVybiBtdDc2X2NoaXAoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgPT0gMHg3NjEwIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmg6MjMwOlxcdCAgICAgICBtdDc2X2NoaXAoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgPT0gMHg3NjMwIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmg6MjMxOlxcdCAgICAgICBtdDc2X2NoaXAoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgPT0gMHg3NjUwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oLTIzMi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaD0yMzQ9c3RhdGljIGlubGluZSBib29sIGlzX210NzZ4MihzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaC0yMzUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oOjIzNjpcXHRyZXR1cm4gbXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID09IDB4NzYxMiB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oOjIzNzpcXHQgICAgICAgbXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID09IDB4NzYzMiB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oOjIzODpcXHQgICAgICAgbXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID09IDB4NzY2MiB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oOjIzOTpcXHQgICAgICAgbXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID09IDB4NzYwMjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaC0yNDAtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX2Rmcy5jPTgyND12b2lkIG10NzZ4MDJfZGZzX2luaXRfcGFyYW1zKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX2Rmcy5jLTgzOS1cXHRcXHRtdDc2X3dyKGRldiwgTVRfQkJQKERGUywgMSksIDB4Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX2Rmcy5jOjg0MDpcXHRcXHRpZiAobXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID09IDB4NzYxMCB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9kZnMuYzo4NDE6XFx0XFx0ICAgIG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA9PSAweDc2MzApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX2Rmcy5jLTg0Mi1cXHRcXHRcXHRtdDc2X3dyKGRldiwgTVRfQkJQKElCSSwgMTEpLCAweGZkZTgwODEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngyLmg9MjY9c3RhdGljIGlubGluZSBib29sIGlzX210NzYxMihzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9tdDc2eDIuaC0yNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngyLmg6Mjg6XFx0cmV0dXJuIG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA9PSAweDc2MTI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngyLmgtMjktfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYz04OT1tdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTMyICpudW0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy05MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo5MTpcXHRzd2l0Y2ggKG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtOTItXFx0Y2FzZSAweDc5MTU6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTMwMj1zdGF0aWMgc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqbXQ3OTE1X2NvcmVkdW1wX2J1aWxkKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTMzOC1cXHRkdW1wLVxcdTAwM2V0dl9uc2VjID0gY3Jhc2hfZGF0YS1cXHUwMDNldGltZXN0YW1wLnR2X25zZWM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozMzk6XFx0ZHVtcC1cXHUwMDNlZGV2aWNlX2lkID0gbXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzQwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmM9Njc9c3RhdGljIGNoYXIgKm10NzkxNV9lZXByb21fbmFtZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5jLTY4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYzo2OTpcXHRzd2l0Y2ggKG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5jLTcwLVxcdGNhc2UgMHg3OTE1Olxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmM9MzYzPW10NzkxNV9lZXByb21faGFzX2JhY2tncm91bmRfcmFkYXIoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5jLTM2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYzozNjk6XFx0c3dpdGNoIChtdDc2X2NoaXAoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYy0zNzAtXFx0Y2FzZSAweDc5MTU6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9NTU1PW10NzkxNV9pbml0X2xlZF9tdXgoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01NjAtXFx0aWYgKGRldi1cXHUwMDNlZGJkY19zdXBwb3J0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjU2MTpcXHRcXHRzd2l0Y2ggKG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01NjItXFx0XFx0Y2FzZSAweDc5MTU6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNTgzLVxcdH0gZWxzZSBpZiAoZGV2LVxcdTAwM2VtcGh5LmxlZHMucGluKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjU4NDpcXHRcXHRzd2l0Y2ggKG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01ODUtXFx0XFx0Y2FzZSAweDc5MTU6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNjAwLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjYwMTpcXHRcXHRzd2l0Y2ggKG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy02MDItXFx0XFx0Y2FzZSAweDc5MTU6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0xMS1cXHRjaGFyICpfZnc7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjEyOlxcdHN3aXRjaCAobXQ3Nl9jaGlwKFxcdTAwMjYoX2RldiktXFx1MDAzZW10NzYpKSB7XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTEzLVxcdGNhc2UgMHg3OTE1OlxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg9NDUxPXN0YXRpYyBpbmxpbmUgY2hhciAqbXQ3OTJ4X3JhbV9uYW1lKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC00NTIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6NDUzOlxcdHN3aXRjaCAobXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC00NTQtXFx0Y2FzZSAweDc5MDI6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oPTQ2Nz1zdGF0aWMgaW5saW5lIGNoYXIgKm10NzkyeF9wYXRjaF9uYW1lKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC00Njgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6NDY5OlxcdHN3aXRjaCAobXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC00NzAtXFx0Y2FzZSAweDc5MDI6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jPTQ4PW10Nzk5Nl9jb3JlZHVtcF9nZXRfbWVtX2xheW91dChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCB1MzIgKm51bSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTQ5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjUwOlxcdHN3aXRjaCAobXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy01MS1cXHRjYXNlIE1UNzk5Nl9ERVZJQ0VfSUQ6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jPTE2Mj1zdGF0aWMgc3RydWN0IG10Nzk5Nl9jb3JlZHVtcCAqbXQ3OTk2X2NvcmVkdW1wX2J1aWxkKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTE5OC1cXHRkdW1wLVxcdTAwM2V0dl9uc2VjID0gY3Jhc2hfZGF0YS1cXHUwMDNldGltZXN0YW1wLnR2X25zZWM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoxOTk6XFx0ZHVtcC1cXHUwMDNlZGV2aWNlX2lkID0gbXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMjAwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9NDY9c3RhdGljIHZvaWQgbXQ3OTk2X2RtYV9jb25maWcoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjY4OlxcdHN3aXRjaCAobXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNjktXFx0Y2FzZSBNVDc5OTJfREVWSUNFX0lEOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM9Mjc9c3RhdGljIGNoYXIgKm10Nzk5Nl9lZXByb21fbmFtZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTI4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYzoyOTpcXHRzd2l0Y2ggKG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTMwLVxcdGNhc2UgTVQ3OTkyX0RFVklDRV9JRDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jPTM4OT1ib29sIG10Nzk5Nl9lZXByb21faGFzX2JhY2tncm91bmRfcmFkYXIoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zOTAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jOjM5MTpcXHRzd2l0Y2ggKG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTM5Mi1cXHRjYXNlIE1UNzk5Nl9ERVZJQ0VfSUQ6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9MTE4Mj1zdGF0aWMgaW50IG10Nzk5Nl92YXJpYW50X3R5cGVfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTExODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjExODc6XFx0c3dpdGNoIChtdDc2X2NoaXAoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTE4OC1cXHRjYXNlIE1UNzk5Nl9ERVZJQ0VfSUQ6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0xNC1cXHRjaGFyICpfZnc7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjE1OlxcdHN3aXRjaCAobXQ3Nl9jaGlwKFxcdTAwMjYoX2RldiktXFx1MDAzZW10NzYpKSB7XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTE2LVxcdGNhc2UgTVQ3OTkyX0RFVklDRV9JRDpcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz00MTA4PW10Nzk5Nl9tY3VfZ2V0X2NhbF9mcmVlX2RhdGEoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQxNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6NDE2MzpcXHRzd2l0Y2ggKG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQxNjQtXFx0Y2FzZSBNVDc5OTZfREVWSUNFX0lEOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYz05MTA9bXQ3NnVfYWNfdG9faHdxKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSwgdTggcWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy05MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYzo5MTQ6XFx0c3dpdGNoIChtdDc2X2NoaXAoZGV2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmMtOTE1LVxcdGNhc2UgMHg3NjYzOiB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ3OjE3LjAyNDgzOTIxWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYzMjYxNTUzMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgTVQ3NjE1IERyaXZlciBQYXRjaCBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBpbnRvIHRoaXMgcGF0Y2ggYW5kIGRldGVybWluZWQgaXRzIHJlYWNoYWJpbGl0eSBmb3IgZnV6emluZy4gVGhlIGtleSBpcyB0aGF0IHRoZSBtb2RpZmljYXRpb24gYWZmZWN0cyB0aGUgYG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5YCBmdW5jdGlvbiwgZm91bmQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuY2AuXG5cblJpZ2h0IG9mZiB0aGUgYmF0LCB0aGUgZnVuY3Rpb24gYmVnaW5zIHdpdGggYSBjaGVjayB1c2luZyBgaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KWAuIFRoaXMgaXMgdGhlIGNydXggb2YgdGhlIGlzc3VlLiBUaGlzIGZ1bmN0aW9uICpvbmx5KiByZXR1cm5zIHRydWUgZm9yIHRoZSBNZWRpYVRlayBNVDc2MTUgYW5kIE1UNzYxMSBjaGlwc2V0cywgc3BlY2lmaWNhbGx5IHRoZSAqUENJZSogdmFyaWFudHMuXG5cbk5vdywgY29uc2lkZXIgdGhlIGVudmlyb25tZW50IHdlJ3JlIHdvcmtpbmcgd2l0aC4gU3l6a2FsbGVyIGFuZCBzdGFuZGFyZCB2aXJ0dWFsaXplZCBzZXR1cHMgbGlrZSBRRU1VIGFuZCBHQ0UgKmRvbid0KiBlbXVsYXRlIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSByZXF1aXJlZCBieSB0aGVzZSBQQ0llIHdpcmVsZXNzIE5JQ3MuIFRoZXNlIGFyZSByZWFsLCB0YW5naWJsZSBQQ0llIGNhcmRzIHRoYXQgbmVlZCB0byBiZSBwbHVnZ2VkIGludG8gYSBwaHlzaWNhbCBzeXN0ZW0uIFRoZXJlJ3Mgbm8gZW11bGF0aW9uIGZvciB0aGF0IGxldmVsIG9mIGRldGFpbC5cblxuQ29uc2VxdWVudGx5LCBhbnkgVVNCIG9yIFNESU8gZGV2aWNlcyB1c2luZyBNZWRpYVRlayBjaGlwcyAobGlrZSB0aGUgTVQ3NjYzVSkgd2lsbCBpbW1lZGlhdGVseSBnZXQgcmVqZWN0ZWQuIFRoZWlyIGNoaXAgSURzIHdpbGwgdHJpZ2dlciB0aGUgYCFpc19tdDc2MTVgIGNvbmRpdGlvbiBhbmQgbGVhZCB0byBhIGAtRU9QTk9UU1VQUGAgcmV0dXJuICpiZWZvcmUqIGhpdHRpbmcgYW55IG9mIHRoZSBtb2RpZmllZCBjb2RlLCBpbmNsdWRpbmcgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCBEQkRDIGNsZWFudXAgcGF0aHMuIFNvLCB0aGF0IG1vZGlmaWVkIHNlY3Rpb24sIHRoZSB0YXJnZXQgb2YgdGhpcyBwYXRjaCwgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIHVuZGVyIHRob3NlIGNvbmRpdGlvbnMuXG5cbkVzc2VudGlhbGx5LCB0aGUgcGF0Y2ggdGFyZ2V0cyBoYXJkd2FyZSB0aGF0IGlzIGZ1bmRhbWVudGFsbHkgdW5hdmFpbGFibGUgaW4gdGhlIHRhcmdldCBmdXp6aW5nIGVudmlyb25tZW50LiBUaGUgcGF0Y2ggcmVxdWlyZXMgdGhhdCBNZWRpYVRlayBNVDc2MTUvTVQ3NjExIFBDSWUgaGFyZHdhcmUgaXMgaW5zdGFudGlhdGVkLCB3aGljaCBpcyBpbXBvc3NpYmxlIGluIG91ciBjdXJyZW50IHNldHVwLlxuXG5UaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg1NzMsIk91dHB1dFRva2VucyI6MTk2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ3OjIzLjM1MDk5Njg2OVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5IGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYyBleHBsaWNpdGx5IGNoZWNrcyBgaWYgKCFpc19tdDc2MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHJldHVybiAtRU9QTk9UU1VQUDtgIGJlZm9yZSBleGVjdXRpbmcgYW55IG1vZGlmaWVkIGxvZ2ljLiBUaGUgaXNfbXQ3NjE1IGNoZWNrIG9ubHkgc3VjY2VlZHMgZm9yIE1UNzYxNSBhbmQgTVQ3NjExIGRldmljZXMsIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIHdpcmVsZXNzIE5JQ3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBVU0IvU0RJTyB2YXJpYW50cyAoc3VjaCBhcyBNVDc2NjMpIGJhaWwgb3V0IGltbWVkaWF0ZWx5IGF0IHRoZSBpc19tdDc2MTUgY2hlY2sgYW5kIGNhbm5vdCBleGVjdXRlIHRoZSBtb2RpZmllZCBjb2RlLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5IGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYyBleHBsaWNpdGx5IGNoZWNrcyBgaWYgKCFpc19tdDc2MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHJldHVybiAtRU9QTk9UU1VQUDtgIGJlZm9yZSBleGVjdXRpbmcgYW55IG1vZGlmaWVkIGxvZ2ljLiBUaGUgaXNfbXQ3NjE1IGNoZWNrIG9ubHkgc3VjY2VlZHMgZm9yIE1UNzYxNSBhbmQgTVQ3NjExIGRldmljZXMsIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIHdpcmVsZXNzIE5JQ3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBVU0IvU0RJTyB2YXJpYW50cyAoc3VjaCBhcyBNVDc2NjMpIGJhaWwgb3V0IGltbWVkaWF0ZWx5IGF0IHRoZSBpc19tdDc2MTUgY2hlY2sgYW5kIGNhbm5vdCBleGVjdXRlIHRoZSBtb2RpZmllZCBjb2RlLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ3OjIzLjM1MTAyNjM5OVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow2nrtq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 22:18:00 +0000 UTC FinishedAt: 2026-09-10 22:47:25 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgZnVuY3Rpb24gbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jIGV4cGxpY2l0bHkgY2hlY2tzIGBpZiAoIWlzX210NzYxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHJldHVybiAtRU9QTk9UU1VQUDtgIGJlZm9yZSBleGVjdXRpbmcgYW55IG1vZGlmaWVkIGxvZ2ljLiBUaGUgaXNfbXQ3NjE1IGNoZWNrIG9ubHkgc3VjY2VlZHMgZm9yIE1UNzYxNSBhbmQgTVQ3NjExIGRldmljZXMsIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIHdpcmVsZXNzIE5JQ3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBVU0IvU0RJTyB2YXJpYW50cyAoc3VjaCBhcyBNVDc2NjMpIGJhaWwgb3V0IGltbWVkaWF0ZWx5IGF0IHRoZSBpc19tdDc2MTUgY2hlY2sgYW5kIGNhbm5vdCBleGVjdXRlIHRoZSBtb2RpZmllZCBjb2RlLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmZDA5NTk2MTlhZTgzMjFmNGIyMGIzMDQzMjRiMTdjYzFmYTMwYTM2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMjI6NDY6MDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jXG5pbmRleCA0MmUxMWJhMTIwNmVlLi4wMmU1MWIyZDQyZWQ4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmNcbkBAIC01NDIsOCAmIzQzOzU0MiwxMCBAQCBpbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbiBcbiBcdG10NzYxNV9jYXBfZGJkY19lbmFibGUoZGV2KTtcbiBcdG1waHkgPSBtdDc2X2FsbG9jX3BoeShcdTAwMjZkZXYtXHUwMDNlbXQ3Niwgc2l6ZW9mKCpwaHkpLCBcdTAwMjZtdDc2MTVfb3BzLCBNVF9CQU5EMSk7XG4tXHRpZiAoIW1waHkpXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdGlmICghbXBoeSkge1xuJiM0MztcdFx0cmV0ID0gLUVOT01FTTtcbiYjNDM7XHRcdGdvdG8gZXJyb3I7XG4mIzQzO1x0fVxuIFxuIFx0cGh5ID0gbXBoeS1cdTAwM2Vwcml2O1xuIFx0cGh5LVx1MDAzZWRldiA9IGRldjtcbkBAIC01NzMsNyAmIzQzOzU3NSw3IEBAIGludCBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuIFxuIFx0cmV0ID0gbXQ3Nl9lZXByb21fb3ZlcnJpZGUobXBoeSk7XG4gXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0Z290byBlcnJvcl9mcmVlX2h3O1xuIFxuIFx0Lyogc2Vjb25kIHBoeSBjYW4gb25seSBoYW5kbGUgNSBHSHogKi9cbiBcdG1waHktXHUwMDNlY2FwLmhhc181Z2h6ID0gdHJ1ZTtcbkBAIC01OTEsNyAmIzQzOzU5MywxNCBAQCBpbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbiBcdHJldCA9IG10NzZfcmVnaXN0ZXJfcGh5KG1waHksIHRydWUsIG10NzZfcmF0ZXMsXG4gXHRcdFx0XHRBUlJBWV9TSVpFKG10NzZfcmF0ZXMpKTtcbiBcdGlmIChyZXQpXG4tXHRcdGllZWU4MDIxMV9mcmVlX2h3KG1waHktXHUwMDNlaHcpO1xuJiM0MztcdFx0Z290byBlcnJvcl9mcmVlX2h3O1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO2Vycm9yX2ZyZWVfaHc6XG4mIzQzO1x0aWVlZTgwMjExX2ZyZWVfaHcobXBoeS1cdTAwM2Vodyk7XG4mIzQzO2Vycm9yOlxuJiM0MztcdG10NzYxNV9jYXBfZGJkY19kaXNhYmxlKGRldik7XG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo0NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBmdW5jdGlvbiBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMgZXhwbGljaXRseSBjaGVja3MgYGlmICghaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSkgcmV0dXJuIC1FT1BOT1RTVVBQO2AgYmVmb3JlIGV4ZWN1dGluZyBhbnkgbW9kaWZpZWQgbG9naWMuIFRoZSBpc19tdDc2MTUgY2hlY2sgb25seSBzdWNjZWVkcyBmb3IgTVQ3NjE1IGFuZCBNVDc2MTEgZGV2aWNlcywgd2hpY2ggYXJlIHBoeXNpY2FsIFBDSWUgd2lyZWxlc3MgTklDcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMuIFVTQi9TRElPIHZhcmlhbnRzIChzdWNoIGFzIE1UNzY2MykgYmFpbCBvdXQgaW1tZWRpYXRlbHkgYXQgdGhlIGlzX210NzYxNSBjaGVjayBhbmQgY2Fubm90IGV4ZWN1dGUgdGhlIG1vZGlmaWVkIGNvZGUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZkMDk1OTYxOWFlODMyMWY0YjIwYjMwNDMyNGIxN2NjMWZhMzBhMzYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IFNlcCAxMCAyMjo0NjowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYwppbmRleCA0MmUxMWJhMTIwNmVlLi4wMmU1MWIyZDQyZWQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jCkBAIC01NDIsOCAmIzQzOzU0MiwxMCBAQCBpbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldikKIAogCW10NzYxNV9jYXBfZGJkY19lbmFibGUoZGV2KTsKIAltcGh5ID0gbXQ3Nl9hbGxvY19waHkoJmFtcDtkZXYtJmd0O210NzYsIHNpemVvZigqcGh5KSwgJmFtcDttdDc2MTVfb3BzLCBNVF9CQU5EMSk7Ci0JaWYgKCFtcGh5KQotCQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJaWYgKCFtcGh5KSB7CiYjNDM7CQlyZXQgPSAtRU5PTUVNOwomIzQzOwkJZ290byBlcnJvcjsKJiM0MzsJfQogCiAJcGh5ID0gbXBoeS0mZ3Q7cHJpdjsKIAlwaHktJmd0O2RldiA9IGRldjsKQEAgLTU3Myw3ICYjNDM7NTc1LDcgQEAgaW50IG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpCiAKIAlyZXQgPSBtdDc2X2VlcHJvbV9vdmVycmlkZShtcGh5KTsKIAlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwomIzQzOwkJZ290byBlcnJvcl9mcmVlX2h3OwogCiAJLyogc2Vjb25kIHBoeSBjYW4gb25seSBoYW5kbGUgNSBHSHogKi8KIAltcGh5LSZndDtjYXAuaGFzXzVnaHogPSB0cnVlOwpAQCAtNTkxLDcgJiM0Mzs1OTMsMTQgQEAgaW50IG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpCiAJcmV0ID0gbXQ3Nl9yZWdpc3Rlcl9waHkobXBoeSwgdHJ1ZSwgbXQ3Nl9yYXRlcywKIAkJCQlBUlJBWV9TSVpFKG10NzZfcmF0ZXMpKTsKIAlpZiAocmV0KQotCQlpZWVlODAyMTFfZnJlZV9odyhtcGh5LSZndDtodyk7CiYjNDM7CQlnb3RvIGVycm9yX2ZyZWVfaHc7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzOwomIzQzO2Vycm9yX2ZyZWVfaHc6CiYjNDM7CWllZWU4MDIxMV9mcmVlX2h3KG1waHktJmd0O2h3KTsKJiM0MztlcnJvcjoKJiM0MzsJbXQ3NjE1X2NhcF9kYmRjX2Rpc2FibGUoZGV2KTsKIAogCXJldHVybiByZXQ7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNjEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQ6IGlzIHRoaXMgc29tZXRoaW5nIHRoYXQmIzM5O3MgZ29pbmcgdG8gd29yayBzZWFtbGVzc2x5IGluIG15IHR5cGljYWwgdmlydHVhbGl6ZWQgc2V0dXBzIOKAkyB0aGluayBRRU1VIG9yIEdDRSDigJMgb3IgYXJlIHdlIGRlYWxpbmcgd2l0aCBhIGRyaXZlciB0aGF0JiMzOTtzIGZ1bmRhbWVudGFsbHkgdGllZCB0byBwaHlzaWNhbCBoYXJkd2FyZT8gSSBuZWVkIHRvIGtub3cgd2hlcmUgSSBjYW4gYWN0dWFsbHkgdGVzdCB0aGlzLgoKVGhlIHBhdGNoIGl0c2VsZiB0b3VjaGVzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAgZnVuY3Rpb24uIFRoYXQgZ2l2ZXMgbWUgYSBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gZ2V0IGEgYnJvYWRlciBwaWN0dXJlLiBJJiMzOTttIGdvaW5nIHRvIHNlYXJjaCB0aGUgY29kZWJhc2UgZm9yICYjMzQ7bXQ3NjE1JiMzNDsgdG8gZmlndXJlIG91dCB3aGF0IHR5cGUgb2YgYmVhc3QgdGhpcyBkcml2ZXIgYWN0dWFsbHkgaXMuIElzIGl0IFBDST8gVVNCPyBQbGF0Zm9ybS1zcGVjaWZpYywgbGlrZSBhbiBTb0MgaW50ZWdyYXRpb24/IEtub3dpbmcgdGhhdCB3aWxsIHNpZ25pZmljYW50bHkgaW1wYWN0IG15IHVuZGVyc3RhbmRpbmcgb2YgcG90ZW50aWFsIGRlcGVuZGVuY2llcywgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLCBhbmQgdGVzdGluZyBwcm9jZWR1cmVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNvZGViYXNlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NjE1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDQ2NSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTQ2PXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDc6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy00OC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9NDM9b2JqLSQoQ09ORklHX01UNzYwM0UpICYjNDM7PSBtdDc2MDMvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQ0Om9iai0kKENPTkZJR19NVDc2MTVfQ09NTU9OKSAmIzQzOz0gbXQ3NjE1L1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS00NS1vYmotJChDT05GSUdfTVQ3OTE1RSkgJiM0Mzs9IG10NzkxNS9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9NYWtlZmlsZS0yLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTVQ3NjE1X0NPTU1PTikgJiM0Mzs9IG10NzYxNS1jb21tb24ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTVQ3NjE1RSkgJiM0Mzs9IG10NzYxNWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGUtNS1vYmotJChDT05GSUdfTVQ3NjYzX1VTQl9TRElPX0NPTU1PTikgJiM0Mzs9IG10NzY2My11c2Itc2Rpby1jb21tb24ub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlPTk9Q0ZMQUdTX3RyYWNlLm8gOj0gLUkkKHNyYylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU6MTE6bXQ3NjE1LWNvbW1vbi15IDo9IG1haW4ubyBpbml0Lm8gbWN1Lm8gZWVwcm9tLm8gbWFjLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlLTEyLVx0XHQgICBkZWJ1Z2ZzLm8gdHJhY2Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU6MTM6bXQ3NjE1LWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGUtMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9NYWtlZmlsZToxNTptdDc2MTVlLXkgOj0gcGNpLm8gcGNpX2luaXQubyBkbWEubyBwY2lfbWFjLm8gbW1pby5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9NYWtlZmlsZToxNjptdDc2MTVlLSQoQ09ORklHX01UNzYyMl9XTUFDKSAmIzQzOz0gc29jLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlLTE3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjM6I2luY2x1ZGUgXCYjMzQ7bXQ3NjE1LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjY6bXQ3NjE1X3JlZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy03LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo4Olx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxMDpcdG10NzYxNV9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTEtXHRtdDc2X3dyKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIHZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTI6XHRtdDc2MTVfbXV0ZXhfcmVsZWFzZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTEzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0xNz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTg6bXQ3NjE1X3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIwOlx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjI6XHRtdDc2MTVfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIzLVx0KnZhbCA9IG10NzZfcnIoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjQ6XHRtdDc2MTVfbXV0ZXhfcmVsZWFzZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyOTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZWd2YWwsIG10NzYxNV9yZWdfZ2V0LCBtdDc2MTVfcmVnX3NldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zMC1cdFx0XHQgXCYjMzQ7MHglMDhsbHhcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0zMj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzM6bXQ3NjE1X3JhZGFyX3BhdHRlcm5fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjM1Olx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzYtXHRpbnQgZXJyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjM4Olx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zOS1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDE6XHRtdDc2MTVfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQyOlx0ZXJyID0gbXQ3NjE1X21jdV9yZGRfc2VuZF9wYXR0ZXJuKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDM6XHRtdDc2MTVfbXV0ZXhfcmVsZWFzZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQ0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz00OD1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yYWRhcl9wYXR0ZXJuLCBOVUxMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQ5Olx0XHRcdCBtdDc2MTVfcmFkYXJfcGF0dGVybl9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjUxOnN0YXRpYyBpbnQgbXQ3NjE1X2NvbmZpZyh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTUyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1MzpcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU0LVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1NjpcdG10NzYxNV9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTctXHRyZXQgPSBtdDc2X2Nvbm5hY19tY3VfY2hpcF9jb25maWcoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU4Olx0bXQ3NjE1X211dGV4X3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NjM6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfY29uZmlnLCBOVUxMLCBtdDc2MTVfY29uZmlnLCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz02NT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NjY6bXQ3NjE1X3Njc19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy02Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6Njg6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo2OTpcdHN0cnVjdCBtdDc2MTVfcGh5ICpleHRfcGh5O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjcxOlx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy03Mi1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NzQ6XHRtdDc2MTVfbWFjX3NldF9zY3MoXHUwMDI2ZGV2LVx1MDAzZXBoeSwgdmFsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo3NTpcdGV4dF9waHkgPSBtdDc2MTVfZXh0X3BoeShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTc2LVx0aWYgKGV4dF9waHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6Nzc6XHRcdG10NzYxNV9tYWNfc2V0X3NjcyhleHRfcGh5LCB2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTc4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz04Mj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6ODM6bXQ3NjE1X3Njc19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtODQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjg1Olx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtODYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjkyOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3NjcywgbXQ3NjE1X3Njc19nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6OTM6XHRcdFx0IG10NzYxNV9zY3Nfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy05NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz05NT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6OTY6bXQ3NjE1X3BtX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTk3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo5ODpcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTk5LVx0c3RydWN0IG10NzZfY29ubmFjX3BtICpwbSA9IFx1MDAyNmRldi1cdTAwM2VwbTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjEwMjpcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KGRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTAzLVx0XHRyZXR1cm4gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xMDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTA1Olx0aWYgKCFtdDc2MTVfZmlybXdhcmVfb2ZmbG9hZChkZXYpIHx8IG10NzZfaXNfdXNiKFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xMDYtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTM2PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxMzc6bXQ3NjE1X3BtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xMzgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjEzOTpcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE0MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjE0NjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbSwgbXQ3NjE1X3BtX2dldCwgbXQ3NjE1X3BtX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTE0OD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTQ5Om10NzYxNV9wbV9zdGF0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTUwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxNTE6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXHUwMDNlcHJpdmF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTUyLVx0c3RydWN0IG10NzZfY29ubmFjX3BtICpwbSA9IFx1MDAyNmRldi1cdTAwM2VwbTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTY4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxNjk6bXQ3NjE1X3BtX2lkbGVfdGltZW91dF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xNzAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjE3MTpcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE3Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTc4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxNzk6bXQ3NjE1X3BtX2lkbGVfdGltZW91dF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTgwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxODE6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xODItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxODg6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG1faWRsZV90aW1lb3V0LCBtdDc2MTVfcG1faWRsZV90aW1lb3V0X2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxODk6XHRcdFx0IG10NzYxNV9wbV9pZGxlX3RpbWVvdXRfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTkxPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxOTI6bXQ3NjE1X2RiZGNfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTkzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxOTQ6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTk2Olx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xOTctXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xOTktXHRpZiAodmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIwMDpcdFx0bXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMDEtXHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjAyOlx0XHRtdDc2MTVfdW5yZWdpc3Rlcl9leHRfcGh5KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjAzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yMDc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIwODptdDc2MTVfZGJkY19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjA5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMTA6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjEyOlx0KnZhbCA9ICEhbXQ3NjE1X2V4dF9waHkoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMTc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZGJkYywgbXQ3NjE1X2RiZGNfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIxODpcdFx0XHQgbXQ3NjE1X2RiZGNfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MjIwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMjE6bXQ3NjE1X2Z3X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIyMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjIzOlx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIyNTpcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KGRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjI2LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIzMDpcdG10NzYxNV9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjMxOlx0bXQ3NjE1X21jdV9md19sb2dfMl9ob3N0KGRldiwgZGV2LVx1MDAzZWZ3X2RlYnVnID8gMiA6IDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIzMjpcdG10NzYxNV9tdXRleF9yZWxlYXNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjMzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yMzc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIzODptdDc2MTVfZndfZGVidWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIzOS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjQwOlx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjQxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjQ3OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnLCBtdDc2MTVfZndfZGVidWdfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjI0ODpcdFx0XHQgbXQ3NjE1X2Z3X2RlYnVnX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTI1MD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjUxOm10NzYxNV9yZXNldF90ZXN0X3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI1Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjUzOlx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjU0LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjU2Olx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNTctXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjY1Olx0bXQ3NjE1X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNjYtXHRtdDc2X3R4X3F1ZXVlX3NrYl9yYXcoZGV2LCBkZXYtXHUwMDNlbXBoeS5xX3R4WzBdLCBza2IsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjI2NzpcdG10NzYxNV9tdXRleF9yZWxlYXNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yNzI9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXRfdGVzdCwgTlVMTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyNzM6XHRcdFx0IG10NzYxNV9yZXNldF90ZXN0X3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTI3NT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjI3NjptdDc2MTVfYW1wZHVfc3RhdF9yZWFkX3BoeShzdHJ1Y3QgbXQ3NjE1X3BoeSAqcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI3Ny1cdFx0XHQgICBzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjc4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyNzk6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZmlsZS1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI4MC1cdHUzMiByZWcgPSBpc19tdDc2NjMoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID8gTVRfTUlCX0FSTkcoMCkgOiBNVF9BR0dfQVNSQ1IwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0zMTE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMxMjptdDc2MTVfYW1wZHVfc3RhdF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zMTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMxNDpcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBmaWxlLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMxNjpcdG10NzYxNV9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMxODpcdG10NzYxNV9hbXBkdV9zdGF0X3JlYWRfcGh5KFx1MDAyNmRldi1cdTAwM2VwaHksIGZpbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMxOTpcdG10NzYxNV9hbXBkdV9zdGF0X3JlYWRfcGh5KG10NzYxNV9leHRfcGh5KGRldiksIGZpbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTMyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozMjE6XHRtdDc2MTVfbXV0ZXhfcmVsZWFzZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTMyMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMyNjpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3NjE1X2FtcGR1X3N0YXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTMyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0zMjg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozMjk6bXQ3NjE1X3JhZGlvX3JlYWRfcGh5KHN0cnVjdCBtdDc2MTVfcGh5ICpwaHksIHN0cnVjdCBzZXFfZmlsZSAqcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zMzAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMzMTpcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cdTAwM2Vwcml2YXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zMzItXHRib29sIGV4dF9waHkgPSBwaHkgIT0gXHUwMDI2ZGV2LVx1MDAzZXBoeTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MzQzPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozNDQ6bXQ3NjE1X3JhZGlvX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM0NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzQ2Olx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVx1MDAzZXByaXZhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozNDg6XHRtdDc2MTVfcmFkaW9fcmVhZF9waHkoXHUwMDI2ZGV2LVx1MDAzZXBoeSwgcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzQ5Olx0bXQ3NjE1X3JhZGlvX3JlYWRfcGh5KG10NzYxNV9leHRfcGh5KGRldiksIHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM1MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MzU0PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozNTU6bXQ3NjE1X3F1ZXVlc19hY3Eoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM1Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzU3Olx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVx1MDAzZXByaXZhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM1OC1cdGludCBpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozNjA6XHRtdDc2MTVfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM2MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjM4NTpcdG10NzYxNV9tdXRleF9yZWxlYXNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzg2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0zOTA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjM5MTptdDc2MTVfcXVldWVzX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM5Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzkzOlx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVx1MDAzZXByaXZhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM5NC1cdHN0cnVjdCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTQxNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDE3Om10NzYxNV9yZl9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDE4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0MTk6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00MjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDIxOlx0bXQ3NjE1X3JmX3dyKGRldiwgZGV2LVx1MDAzZWRlYnVnZnNfcmZfd2YsIGRldi1cdTAwM2VkZWJ1Z2ZzX3JmX3JlZywgdmFsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00MjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTQyNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDI3Om10NzYxNV9yZl9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQyOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDI5Olx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQzMTpcdCp2YWwgPSBtdDc2MTVfcmZfcnIoZGV2LCBkZXYtXHUwMDNlZGVidWdmc19yZl93ZiwgZGV2LVx1MDAzZWRlYnVnZnNfcmZfcmVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00MzItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0MzY6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmZfcmVnLCBtdDc2MTVfcmZfcmVnX2dldCwgbXQ3NjE1X3JmX3JlZ19zZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDM3LVx0XHRcdCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTQzOT1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQ0MDptdDc2MTVfZXh0X21hY19hZGRyX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyYnVmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQ0MS1cdFx0XHQgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDQyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0NDM6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDQ0LVx0dTMyIGxlbiA9IDMyICogKChFVEhfQUxFTiAqIDMpICYjNDM7IDQpICYjNDM7IDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTQ3Mz1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQ3NDptdDc2MTVfZXh0X21hY19hZGRyX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdXNlcmJ1ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00NzUtXHRcdFx0ICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00NzYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQ3NzpcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00NzgtXHR1bnNpZ25lZCBsb25nIGlkeCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTUyNj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX2V4dF9tYWNfYWRkciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTI4LVx0Lmxsc2VlayA9IGdlbmVyaWNfZmlsZV9sbHNlZWssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTI5Olx0LnJlYWQgPSBtdDc2MTVfZXh0X21hY19hZGRyX3JlYWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTMwOlx0LndyaXRlID0gbXQ3NjE1X2V4dF9tYWNfYWRkcl93cml0ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01MzEtXHQub3duZXIgPSBUSElTX01PRFVMRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9NTM1PW10NzY2M3Nfc2NoZWRfcXVvdGFfcmVhZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTM2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1Mzc6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXHUwMDNlcHJpdmF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTM4LVx0c3RydWN0IG10NzZfc2RpbyAqc2RpbyA9IFx1MDAyNmRldi1cdTAwM2VtdDc2LnNkaW87XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1NDg6aW50IG10NzYxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTU2Olx0aWYgKGlzX210NzYxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTU3LVx0XHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDt4bWl0LXF1ZXVlc1wmIzM0OywgZGlyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU1ODpcdFx0XHRcdFx0ICAgIG10NzYxNV9xdWV1ZXNfcmVhZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTU5LVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NjItXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDthY3FcJiMzNDssIGRpcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1NjM6XHRcdFx0XHQgICAgbXQ3NjE1X3F1ZXVlc19hY3EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU2NDpcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7YW1wZHVfc3RhdFwmIzM0OywgMDQwMCwgZGlyLCBkZXYsIFx1MDAyNm10NzYxNV9hbXBkdV9zdGF0X2ZvcHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU2NS1cdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7c2NzXCYjMzQ7LCAwNjAwLCBkaXIsIGRldiwgXHUwMDI2Zm9wc19zY3MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NzEtXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtydW50aW1lX3BtX3N0YXRzXCYjMzQ7LCBkaXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTcyOlx0XHRcdFx0ICAgIG10NzYxNV9wbV9zdGF0cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTczLVx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7cmFkaW9cJiMzNDssIGRpcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1NzQ6XHRcdFx0XHQgICAgbXQ3NjE1X3JhZGlvX3JlYWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1NzY6XHRpZiAoaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU3Ny1cdFx0ZGVidWdmc19jcmVhdGVfdTMyKFwmIzM0O2Rmc19od19wYXR0ZXJuXCYjMzQ7LCAwNDAwLCBkaXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTYwOC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NjA5OkVYUE9SVF9TWU1CT0xfR1BMKG10NzYxNV9pbml0X2RlYnVnZnMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoxMDojaW5jbHVkZSBcJiMzNDttdDc2MTUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMTEtI2luY2x1ZGUgXCYjMzQ7Li4vZG1hLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYz0xND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoxNTptdDc2MjJfaW5pdF90eF9xdWV1ZXNfbXVsdGkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTE2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYz00ND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzo0NTptdDc2MTVfaW5pdF90eF9xdWV1ZXMoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy01My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjU0Olx0aWYgKCFpc19tdDc2MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNTUtXHRcdHJldHVybiBtdDc2MjJfaW5pdF90eF9xdWV1ZXNfbXVsdGkoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjY2OnN0YXRpYyBpbnQgbXQ3NjE1X3BvbGxfdHgoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNjcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6Njg6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNjktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNzktXHRcdG10NzZfY29ubmFjX2lycV9lbmFibGUoXHUwMDI2ZGV2LVx1MDAzZW10NzYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzo4MDpcdFx0XHRcdCAgICAgICBtdDc2MTVfdHhfbWN1X2ludF9tYXNrKGRldikpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtODEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzo4NzpzdGF0aWMgaW50IG10NzYxNV9wb2xsX3J4KHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTg4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjg5Olx0c3RydWN0IG10NzYxNV9kZXYgKmRldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTkwLVx0aW50IGRvbmU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMTA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6MTA1OmludCBtdDc2MTVfd2FpdF9wZG1hX2J1c3koc3RydWN0IG10NzYxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTEwNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMTEwLVx0XHR1MzIgbWFzayA9IE1UX1BETUFfVFhfQlVTWSB8IE1UX1BETUFfUlhfQlVTWTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjExMTpcdFx0dTMyIHJlZyA9IG10NzYxNV9yZWdfbWFwKGRldiwgTVRfUERNQV9CVVNZKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTExMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0xNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoxNDI6c3RhdGljIHZvaWQgbXQ3NjIyX2RtYV9zY2hlZF9pbml0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0xNDMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6MTQ0Olx0dTMyIHJlZyA9IG10NzYxNV9yZWdfbWFwKGRldiwgTVRfRE1BU0hETF9CQVNFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTE0NS1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTE2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjE2NjpzdGF0aWMgdm9pZCBtdDc2NjNfZG1hX3NjaGVkX2luaXQoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTE2Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6MjAxOnZvaWQgbXQ3NjE1X2RtYV9zdGFydChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjAyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoyMjA6aW50IG10NzYxNV9kbWFfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjIxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoyNDU6XHRpZiAoaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjQ2LVx0XHRtdDc2X3NldChkZXYsIE1UX1dQRE1BX0dMT19DRkcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6MjYwOlx0cmV0ID0gbXQ3NjE1X2luaXRfdHhfcXVldWVzKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yNjEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjI3MTpcdGlmICghaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI3Mi1cdCAgICByeF9yaW5nX3NpemUgLz0gMjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoyODE6XHRyZXQgPSBtdDc2X2luaXRfcXVldWVzKGRldiwgbXQ3NjE1X3BvbGxfcngpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjgyLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yODUtXHRuZXRpZl9uYXBpX2FkZF90eChkZXYtXHUwMDNlbXQ3Ni50eF9uYXBpX2RldiwgXHUwMDI2ZGV2LVx1MDAzZW10NzYudHhfbmFwaSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjI4NjpcdFx0XHQgIG10NzYxNV9wb2xsX3R4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI4Ny1cdG5hcGlfZW5hYmxlKFx1MDAyNmRldi1cdTAwM2VtdDc2LnR4X25hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjI5NTpcdG1hc2sgPSBNVF9JTlRfUlhfRE9ORV9BTEwgfCBtdDc2MTVfdHhfbWN1X2ludF9tYXNrKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yOTYtXHRpZiAoaXNfbXQ3NjYzKFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0zMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzozMDM6XHRtdDc2MTVfZG1hX3N0YXJ0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0zMDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMzA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6MzA4OnZvaWQgbXQ3NjE1X2RtYV9jbGVhbnVwKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0zMDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTgtI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6OTojaW5jbHVkZSBcJiMzNDttdDc2MTUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTAtI2luY2x1ZGUgXCYjMzQ7ZWVwcm9tLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6MTI6c3RhdGljIGludCBtdDc2MTVfZWZ1c2VfcmVhZChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LCB1MzIgYmFzZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTEzLVx0XHRcdCAgICAgdTE2IGFkZHIsIHU4ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6NDQ6c3RhdGljIGludCBtdDc2MTVfZWZ1c2VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LCB1MzIgYmFzZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTQ1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjY2Olx0XHRyZXQgPSBtdDc2MTVfZWZ1c2VfcmVhZChkZXYsIGJhc2UsIGksIGJ1ZiAmIzQzOyBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTY3LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6NzQ6c3RhdGljIGludCBtdDc2MTVfZWVwcm9tX2xvYWQoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy03NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzo4NDpcdHJldHVybiBtdDc2MTVfZWZ1c2VfaW5pdChkZXYsIGFkZHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtODUtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzo4NzpzdGF0aWMgaW50IG10NzYxNV9jaGVja19lZXByb20oc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy04OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM9MTAxPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzoxMDI6bXQ3NjE1X2VlcHJvbV9wYXJzZV9od19iYW5kX2NhcChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTAzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0xNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzoxNDQ6c3RhdGljIHZvaWQgbXQ3NjE1X2VlcHJvbV9wYXJzZV9od19jYXAoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTE0NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6MTQ5Olx0bXQ3NjE1X2VlcHJvbV9wYXJzZV9od19iYW5kX2NhcChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTUwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTE3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjE3MzpzdGF0aWMgaW50IG10NzY2M19lZXByb21fZ2V0X3RhcmdldF9wb3dlcl9pbmRleChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTc0LVx0XHRcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0xODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzoxODU6XHRncm91cCA9IG10NzYxNV9nZXRfY2hhbm5lbF9ncm91cChjaGFuLVx1MDAzZWh3X3ZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTE4Ni1cdGlmIChjaGFpbl9pZHggPT0gMSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0xOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzoxOTQ6aW50IG10NzYxNV9lZXByb21fZ2V0X3RhcmdldF9wb3dlcl9pbmRleChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTk1LVx0XHRcdFx0XHQgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTIwNy1cdC8qIFRTU0kgZGlzYWJsZWQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjIwODpcdGlmIChtdDc2MTVfZXh0X3BhX2VuYWJsZWQoZGV2LCBjaGFuLVx1MDAzZWJhbmQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0yMDktXHRcdGlmIChjaGFuLVx1MDAzZWJhbmQgPT0gTkw4MDIxMV9CQU5EXzJHSFopXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMjE4LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjIxOTpcdFx0aW50IGdyb3VwID0gbXQ3NjE1X2dldF9jaGFubmVsX2dyb3VwKGNoYW4tXHUwMDNlaHdfdmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMjIwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTI0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjI0MjppbnQgbXQ3NjE1X2VlcHJvbV9nZXRfcG93ZXJfZGVsdGFfaW5kZXgoc3RydWN0IG10NzYxNV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTI0My1cdFx0XHRcdFx0ZW51bSBubDgwMjExX2JhbmQgYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0yNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzoyNTk6c3RhdGljIHZvaWQgbXQ3NjE1X2FwcGx5X2NhbF9mcmVlX2RhdGEoc3RydWN0IG10NzYxNV9kZXYgKmRldilcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMzA0CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBNVDc2MTUvTVQ3NjYzIEJ1cyBTdXBwb3J0KioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGJ1c2VzIHRoZSBNVDc2MTUgYW5kIE1UNzY2MyB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0LiBNeSB1c3VhbCBmaXJzdCBzdGVwIGlzIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlLCBzcGVjaWZpY2FsbHkgdGhlIGRyaXZlciBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBoZWFkIHN0cmFpZ2h0IHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnYC4gVGhpcyBLY29uZmlnIGZpbGUgc2hvdWxkIGRlZmluZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGNoaXAmIzM5O3MgYnVzIGludGVyZmFjZXMsIGxpa2VseSBwb2ludGluZyBtZSB0b3dhcmRzIHRoZSByZWxldmFudCBidXMgZHJpdmVycyAoZS5nLiwgUENJZSwgU0RJTywgVVNCKS4gRnJvbSB0aGVyZSBJIGNhbiBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGFyY2hpdGVjdHVyZSwgZGVwZW5kZW5jaWVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBUaW1lIHRvIHNlZSB3aGF0IEkgY2FuIGZpbmQuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRcbiAgIDM6XHRjb25maWcgTVQ3NjE1X0NPTU1PTlxuICAgNDpcdFx0dHJpc3RhdGVcbiAgIDU6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAgNjpcdFx0c2VsZWN0IE1UNzZfQ09OTkFDX0xJQlxuICAgNzpcdFxuICAgODpcdGNvbmZpZyBNVDc2MTVFXG4gICA5Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2MTVFIGFuZCBNVDc2NjNFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4gIDEwOlx0XHRzZWxlY3QgTVQ3NjE1X0NPTU1PTlxuICAxMTpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAxMjpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMTM6XHRcdGhlbHBcbiAgMTQ6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzYxNS1iYXNlZCBQQ0llIHdpcmVsZXNzIGRldmljZXMsXG4gIDE1Olx0XHQgIHdoaWNoIHN1cHBvcnQgY29uY3VycmVudCBkdWFsLWJhbmQgb3BlcmF0aW9uIGF0IGJvdGggNUdIelxuICAxNjpcdFx0ICBhbmQgMi40R0h6LCBJRUVFIDgwMi4xMWFjIDR4NDo0U1MgMTczM01icHMgUEhZIHJhdGUsIHdhdmUyXG4gIDE3Olx0XHQgIE1VLU1JTU8gdXAgdG8gNCB1c2Vycy9ncm91cCBhbmQgMTYwTUh6IGNoYW5uZWxzLlxuICAxODpcdFxuICAxOTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAyMDpcdFxuICAyMTpcdGNvbmZpZyBNVDc2MjJfV01BQ1xuICAyMjpcdFx0Ym9vbCBcJiMzNDtNVDc2MjIgKFNvQykgV01BQyBzdXBwb3J0XCYjMzQ7XG4gIDIzOlx0XHRkZXBlbmRzIG9uIE1UNzYxNUVcbiAgMjQ6XHRcdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RcbiAgMjU6XHRcdHNlbGVjdCBSRUdNQVBcbiAgMjY6XHRcdGRlZmF1bHQgeVxuICAyNzpcdFx0aGVscFxuICAyODpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGJ1aWx0LWluIFdNQUMgb24gTVQ3NjIyIFNvQyBkZXZpY2VzXG4gIDI5Olx0XHQgIHdoaWNoIGhhcyB0aGUgc2FtZSBmZWF0dXJlIHNldCBhcyBhIE1UNzYxNSwgYnV0IGxpbWl0ZWQgdG9cbiAgMzA6XHRcdCAgMi40IEdIeiBvbmx5LlxuICAzMTpcdFxuICAzMjpcdGNvbmZpZyBNVDc2NjNfVVNCX1NESU9fQ09NTU9OXG4gIDMzOlx0XHR0cmlzdGF0ZVxuICAzNDpcdFx0c2VsZWN0IE1UNzYxNV9DT01NT05cbiAgMzU6XHRcbiAgMzY6XHRjb25maWcgTVQ3NjYzVVxuICAzNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NjYzVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4gIDM4Olx0XHRzZWxlY3QgTVQ3Nl9VU0JcbiAgMzk6XHRcdHNlbGVjdCBNVDc2NjNfVVNCX1NESU9fQ09NTU9OXG4gIDQwOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDQxOlx0XHRkZXBlbmRzIG9uIFVTQlxuICA0MjpcdFx0aGVscFxuICA0MzpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjYzVSA4MDIuMTFhYyAyeDI6MiB3aXJlbGVzcyBkZXZpY2VzLlxuICA0NDpcdFxuICA0NTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICA0NjpcdFxuICA0NzpcdGNvbmZpZyBNVDc2NjNTXG4gIDQ4Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2NjNTIChTRElPKSBzdXBwb3J0XCYjMzQ7XG4gIDQ5Olx0XHRzZWxlY3QgTVQ3Nl9TRElPXG4gIDUwOlx0XHRzZWxlY3QgTVQ3NjYzX1VTQl9TRElPX0NPTU1PTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzExCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3NjYzVSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIGBDT05GSUdfTVQ3NjYzVWAuIFJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBVU0Igd2lyZWxlc3MgZHJpdmVyLCBNZWRpYVRlayBNVDc2NjNVLiBUaGlua2luZyBhYm91dCBpdCwgc2luY2UgaXQmIzM5O3MgVVNCLCBJIGNhbiBwcm9iYWJseSBmdXp6IGl0IHVzaW5nIFVTQiBSYXcgR2FkZ2V0IG9yIHRocm91Z2ggc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gSSBjb3VsZCBldmVuIGVtdWxhdGUgaXQgaW4gUUVNVSB3aXRoIHN5emthbGxlci4gVGhlIGtleSBoZXJlIGlzIFVTQi4KCk5vdywgYSBxdWVzdGlvbiBpcyBwb3BwaW5nIGludG8gbXkgaGVhZDogY2FuIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAgZXZlbiBiZSBjYWxsZWQgZm9yIE1UNzY2M1U/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIHByb2JhYmx5IFBDSWUtc3BlY2lmaWMsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gQ291bGQgaXQgcG9zc2libHkgYmUgZXhwb3NlZCB0aHJvdWdoIGRlYnVnZnMsIG9yIHBlcmhhcHMgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbj8gT3IsIGlzIGl0IHNvbWVob3cgaW50ZWdyYXRlZCB3aXRoaW4gbWFjODAyMTEgb3Igbmw4MDIxMT8KCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhlIGNvZGViYXNlLiBJJiMzOTttIGdvaW5nIHRvIHNlYXJjaCBmb3IgZXZlcnkgaW5zdGFuY2Ugd2hlcmUgYG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5YCBpcyBjYWxsZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgcmVsZXZhbnQgdG8gdGhpcyBVU0IgZHJpdmVyIGF0IGFsbC4gS25vd2luZyB3aGVyZSBpdCYjMzk7cyBjYWxsZWQgd2lsbCBoZWxwIG1lIGRldGVybWluZSBpdHMgcHVycG9zZSBhbmQgaG93IHRvIGFwcHJvYWNoIGFueSBwb3RlbnRpYWwgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTE5Mj1tdDc2MTVfZGJkY19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTk5LVx0aWYgKHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMDA6XHRcdG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjAxLVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYz01MjY9RVhQT1JUX1NZTUJPTF9HUEwobXQ3NjE1X2xlZF9zZXRfYnJpZ2h0bmVzcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtNTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jOjUyODppbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy01Mjkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy02MDYtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jOjYwNzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtNjA4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oPTM4Mz12b2lkIG10NzYxNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjM4NDppbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC0zODUtdm9pZCBtdDc2MTVfdW5yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmM9Njk9aW50IG10NzYxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jLTEwMy1cdGlmIChkZXYtXHUwMDNlZGJkY19zdXBwb3J0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jOjEwNDpcdFx0cmV0ID0gbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmMtMTA1LVx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTY0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIHRoZSBNVDc2MTUgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBkZWJ1ZyBmaWxlIHN5c3RlbSBpcyBpbml0aWFsaXplZCB3aXRoaW4gdGhlIE1UNzYxNSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgVVNCIHZlcnNpb24uIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogZG9lcyBgdXNiX2luaXRgIHRyaWdnZXIgdGhlIGNhbGwgdG8gYG10NzYxNV9pbml0X2RlYnVnZnNgPyBPciBwZXJoYXBzIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWA/IEFsdGVybmF0aXZlbHksIG1heWJlIGBtdDc2NjN1YCBpdHNlbGYgaGFuZGxlcyB0aGUgZGVidWdmcyBpbml0aWFsaXphdGlvbi4KClRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMsIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocy4gRmlyc3QsIEkgbmVlZCB0byBwaW5wb2ludCB3aGVyZSBgbXQ3NjE1X2luaXRfZGVidWdmc2AgaXMgYWN0dWFsbHkgKmNhbGxlZCouIFRoZW4sIEkmIzM5O2xsIGZvY3VzIG9uIHRoZSBVU0Itc3BlY2lmaWMgY29kZSB3aXRoaW4gdGhlIE1UNzYxNSBkcml2ZXIsIHNvIEkmIzM5O2xsIGJlIGxvb2tpbmcgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuY2AgZmlsZSwgb3Igc29tZXRoaW5nIHNpbWlsYXJseSBuYW1lZCB3aXRoaW4gdGhhdCBkaXJlY3Rvcnkgc3RydWN0dXJlLCB0byBzZWUgaWYgSSBjYW4gZmluZCB0aGUgYW5zd2VyLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzYxNV9pbml0X2RlYnVnZnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz01MzU9bXQ3NjYzc19zY2hlZF9xdW90YV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU0ODppbnQgbXQ3NjE1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU0OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTYwOC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NjA5OkVYUE9SVF9TWU1CT0xfR1BMKG10NzYxNV9pbml0X2RlYnVnZnMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oPTUyNj1pbnQgbXQ3NjE1X21jdV9zZXRfcm9jKHN0cnVjdCBtdDc2MTVfcGh5ICpwaHksIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg6NTI5OmludCBtdDc2MTVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTMwLWludCBtdDc2MTVfbWN1X3dhaXRfcmVzcG9uc2Uoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgaW50IGNtZCwgaW50IHNlcSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYz02OT1pbnQgbXQ3NjE1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmMtMTA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYzoxMDk6XHRyZXR1cm4gbXQ3NjE1X2luaXRfZGVidWdmcyhkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYy0xMTAtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM9MzA2PWludCBtdDc2NjNfdXNiX3NkaW9fcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjM0NjpcdHJldHVybiBtdDc2MTVfaW5pdF9kZWJ1Z2ZzKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTM0Ny19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNzQ5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgTWVkaWF0ZWsgTVQ3NjE1IFVTQiBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBHaXZlbiB0aGUgY29udGV4dCwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIE1lZGlhdGVrIE1UNzYxNSBVU0IgZHJpdmVyIGltcGxlbWVudGF0aW9uLiBNeSBmaXJzdCBwb2ludCBvZiBhdHRhY2sgd2lsbCBiZSBlaXRoZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jYCBvciwgaWYgdGhpcyBpcyBhbiBTRElPLWJhc2VkIGltcGxlbWVudGF0aW9uLCBgdXNiX3NkaW8uY2AuIFRoZSBjb3JlIGlzc3VlIGxpa2VseSBjZW50ZXJzIGFyb3VuZCBVU0IgZHJpdmVyIHJlZ2lzdHJhdGlvbiBvciBzb21lIFVTQi1zcGVjaWZpYyBjb25maWd1cmF0aW9uLiBUaGVyZWZvcmUsIG15IHByaW1hcnkgc2VhcmNoIGZvY3VzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2AgZGlyZWN0b3J5IHdpbGwgYmUgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgVVNCIGRyaXZlciByZWdpc3RyYXRpb24gcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBVU0IgZGV2aWNlIGlzIGluaXRpYWxseSBpbml0aWFsaXplZCBhbmQgaW50ZWdyYXRlZCB3aXRoIHRoZSBrZXJuZWwsIGFuZCB0aGUgYHVzYi5jYCBmaWxlIGlzIHVzdWFsbHkgdGhlIHBsYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2JfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYz0yNjY9TU9EVUxFX0ZJUk1XQVJFKE1UNzY2M19ST01fUEFUQ0gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MjY4OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2NjN1X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI2OS1cdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjgwLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoyODE6bW9kdWxlX3VzYl9kcml2ZXIobXQ3NjYzdV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjgyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTM0Nj1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzQ4OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2eDBfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzQ5LVx0Lm5hbWVcdFx0PSBLQlVJTERfTU9ETkFNRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zNTgtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjM1OTptb2R1bGVfdXNiX2RyaXZlcihtdDc2eDBfZHJpdmVyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYz0xMzg9TU9EVUxFX0ZJUk1XQVJFKE1UNzY2Ml9ST01fUEFUQ0gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmMtMTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM6MTQwOnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2eDJ1X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTE0MS1cdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmMtMTUyLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYzoxNTM6bW9kdWxlX3VzYl9kcml2ZXIobXQ3NngydV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmMtMTU0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTMyOT1NT0RVTEVfRklSTVdBUkUoTVQ3OTIxX1JPTV9QQVRDSCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozMzE6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzkyMXVfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzMyLVx0Lm5hbWVcdFx0PSBLQlVJTERfTU9ETkFNRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNDMtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM0NDptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjF1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNDUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzI3PU1PRFVMRV9GSVJNV0FSRShNVDc5MjVfUk9NX1BBVENIKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTMyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjMyOTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3OTI1dV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zMzAtXHQubmFtZVx0XHQ9IEtCVUlMRF9NT0ROQU1FLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM0MS19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzQyOm1vZHVsZV91c2JfZHJpdmVyKG10NzkyNXVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM0My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUzMDEKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAzNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE1UNzY2M1UgRHJpdmVyIGFuZCBEQkRDIFN1cHBvcnQqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIE1UNzY2M1UgVVNCIGRyaXZlci4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBpdCBsZXZlcmFnZXMgYG10NzYxNS1jb21tb25gLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIHRoZSBgbXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZWAgZnVuY3Rpb24sIHRyaWdnZXJlZCB3aGVuIGEgVVNCIGRldmljZSBtYXRjaGVzICYjMzQ7bXQ3NjYzdS4mIzM0OyBUaGlzIGluIHR1cm4gY2FsbHMgYG10NzYxNV9pbml0X2RlYnVnZnNgLgoKSW5zaWRlIGBtdDc2MTVfaW5pdF9kZWJ1Z2ZzYCwgdGhlcmUmIzM5O3MgYSBkZWJ1Z2ZzIGVudHJ5IGJlaW5nIGNyZWF0ZWQ6IGEgZmlsZSBuYW1lZCAmIzM0O2RiZGMmIzM0OyB3aXRoIHBlcm1pc3Npb25zIDA2MDAuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcuIFRoaXMgJiMzNDtkYmRjJiMzNDsgZmlsZSB1c2VzIGBmb3BzX2RiZGNgLCB3aGljaCBoYW5kbGVzIGZpbGUgb3BlcmF0aW9ucyByZWxhdGVkIHRvIERCREMuIExvb2tpbmcgY2xvc2VyIGF0IGBmb3BzX2RiZGNgLCBJIHNlZSBgbXQ3NjE1X2RiZGNfc2V0YC4gVGhhdCBmdW5jdGlvbiB0YWtlcyBhIHU2NCB2YWx1ZSBhbmQsIGFmdGVyIGEgY2hlY2sgd2l0aCBgbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0YCwgaXQgZWl0aGVyIGNhbGxzIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAgb3IgYG10NzYxNV91bnJlZ2lzdGVyX2V4dF9waHlgIGJhc2VkIG9uIHRoZSB2YWx1ZS4KClNvLCBpZiB0aGUgdmFsdWUgcHJvdmlkZWQgdG8gYG10NzYxNV9kYmRjX3NldGAgaXMgbm9uLXplcm8sIGl0IGFjdGl2YXRlcyB0aGUgZXh0ZW5kZWQgUEhZIHRocm91Z2ggYG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KGRldilgLiBDbGVhcmx5LCB3ZSYjMzk7cmUgb24gdGhlIHJpZ2h0IHRyYWNrISBUaGUgcHJlc2VuY2Ugb2YgdGhpcyBkZWJ1Z2ZzIGVudHJ5IGFuZCBpdHMgYXNzb2NpYXRlZCBmdW5jdGlvbnMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhpcyBpcyBob3cgREJEQyBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgoKTm93LCBJIHdhbnQgdG8gY29uZmlybSBob3cgREJEQyBpcyB1c2VkIGluIHRoZSB3aWRlciBjb250ZXh0IG9mIHRoZSBtdDc2MTUgYW5kIG10NzY2MyBmYW1pbHkuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuY2AgYW5kIHNwZWNpZmljYWxseSBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIG9mIHRoZSBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIGNhbGwuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBtdWNoIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgREJEQyBpcyBpbml0aWFsaXplZCwgbWFuYWdlZCwgYW5kIHBvdGVudGlhbGx5IHVzZWQgaW4gYSBkdWFsLWJhbmQgZHVhbC1jb25jdXJyZW50IGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDg1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1MjU6XHR9XG4gNTI2Olx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3NjE1X2xlZF9zZXRfYnJpZ2h0bmVzcyk7XG4gNTI3Olx0XG4gNTI4Olx0aW50IG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG4gNTI5Olx0e1xuIDUzMDpcdFx0c3RydWN0IG10NzYxNV9waHkgKnBoeSA9IG10NzYxNV9leHRfcGh5KGRldik7XG4gNTMxOlx0XHRzdHJ1Y3QgbXQ3Nl9waHkgKm1waHk7XG4gNTMyOlx0XHRpbnQgaSwgcmV0O1xuIDUzMzpcdFxuIDUzNDpcdFx0aWYgKCFpc19tdDc2MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuIDUzNTpcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gNTM2Olx0XG4gNTM3Olx0XHRpZiAodGVzdF9iaXQoTVQ3Nl9TVEFURV9SVU5OSU5HLCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSkpXG4gNTM4Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDUzOTpcdFxuIDU0MDpcdFx0aWYgKHBoeSlcbiA1NDE6XHRcdFx0cmV0dXJuIDA7XG4gNTQyOlx0XG4gNTQzOlx0XHRtdDc2MTVfY2FwX2RiZGNfZW5hYmxlKGRldik7XG4gNTQ0Olx0XHRtcGh5ID0gbXQ3Nl9hbGxvY19waHkoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHNpemVvZigqcGh5KSwgXHUwMDI2bXQ3NjE1X29wcywgTVRfQkFORDEpO1xuIDU0NTpcdFx0aWYgKCFtcGh5KSB7XG4gNTQ2Olx0XHRcdHJldCA9IC1FTk9NRU07XG4gNTQ3Olx0XHRcdGdvdG8gZXJyb3I7XG4gNTQ4Olx0XHR9XG4gNTQ5Olx0XG4gNTUwOlx0XHRwaHkgPSBtcGh5LVx1MDAzZXByaXY7XG4gNTUxOlx0XHRwaHktXHUwMDNlZGV2ID0gZGV2O1xuIDU1MjpcdFx0cGh5LVx1MDAzZW10NzYgPSBtcGh5O1xuIDU1MzpcdFx0bXBoeS1cdTAwM2VjaGFpbm1hc2sgPSBkZXYtXHUwMDNlY2hhaW5tYXNrIFx1MDAyNiB+ZGV2LVx1MDAzZW1waHkuY2hhaW5tYXNrO1xuIDU1NDpcdFx0bXBoeS1cdTAwM2VhbnRlbm5hX21hc2sgPSBCSVQoaHdlaWdodDgobXBoeS1cdTAwM2VjaGFpbm1hc2spKSAtIDE7XG4gNTU1Olx0XHRtdDc2MTVfaW5pdF93aXBoeShtcGh5LVx1MDAzZWh3KTtcbiA1NTY6XHRcbiA1NTc6XHRcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1waHktXHUwMDNlbWFjX3dvcmssIG10NzYxNV9tYWNfd29yayk7XG4gNTU4Olx0XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZwaHktXHUwMDNlc2Nhbl93b3JrLCBtdDc2MTVfc2Nhbl93b3JrKTtcbiA1NTk6XHRcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2cGh5LVx1MDAzZXNjYW5fZXZlbnRfbGlzdCk7XG4gNTYwOlx0XG4gNTYxOlx0XHRJTklUX1dPUksoXHUwMDI2cGh5LVx1MDAzZXJvY193b3JrLCBtdDc2MTVfcm9jX3dvcmspO1xuIDU2MjpcdFx0dGltZXJfc2V0dXAoXHUwMDI2cGh5LVx1MDAzZXJvY190aW1lciwgbXQ3NjE1X3JvY190aW1lciwgMCk7XG4gNTYzOlx0XHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNnBoeS1cdTAwM2Vyb2Nfd2FpdCk7XG4gNTY0Olx0XG4gNTY1Olx0XHRtdDc2MTVfbWFjX3NldF9zY3MocGh5LCB0cnVlKTtcbiA1NjY6XHRcbiA1Njc6XHRcdC8qXG4gNTY4Olx0XHQgKiBNYWtlIHRoZSBzZWNvbmRhcnkgUEhZIE1BQyBhZGRyZXNzIGxvY2FsIHdpdGhvdXQgb3ZlcmxhcHBpbmcgd2l0aFxuIDU2OTpcdFx0ICogdGhlIHVzdWFsIE1BQyBhZGRyZXNzIGFsbG9jYXRpb24gc2NoZW1lIG9uIG11bHRpcGxlIHZpcnR1YWwgaW50ZXJmYWNlc1xuIDU3MDpcdFx0ICovXG4gNTcxOlx0XHRtZW1jcHkobXBoeS1cdTAwM2VtYWNhZGRyLCBkZXYtXHUwMDNlbXQ3Ni5lZXByb20uZGF0YSAmIzQzOyBNVF9FRV9NQUNfQUREUixcbiA1NzI6XHRcdCAgICAgICBFVEhfQUxFTik7XG4gNTczOlx0XHRtcGh5LVx1MDAzZW1hY2FkZHJbMF0gfD0gMjtcbiA1NzQ6XHRcdG1waHktXHUwMDNlbWFjYWRkclswXSBePSBCSVQoNyk7XG4gNTc1Olx0XG4gNTc2Olx0XHRyZXQgPSBtdDc2X2VlcHJvbV9vdmVycmlkZShtcGh5KTtcbiA1Nzc6XHRcdGlmIChyZXQpXG4gNTc4Olx0XHRcdGdvdG8gZXJyb3JfZnJlZV9odztcbiA1Nzk6XHRcbiA1ODA6XHRcdC8qIHNlY29uZCBwaHkgY2FuIG9ubHkgaGFuZGxlIDUgR0h6ICovXG4gNTgxOlx0XHRtcGh5LVx1MDAzZWNhcC5oYXNfNWdoeiA9IHRydWU7XG4gNTgyOlx0XG4gNTgzOlx0XHQvKiBtdDc2MTUgc2Vjb25kIHBoeSBzaGFyZXMgdGhlIHNhbWUgaHcgcXVldWVzIHdpdGggdGhlIHByaW1hcnkgb25lICovXG4gNTg0Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYz0gTVRfVFhRX1BTRCA7IGkmIzQzOyYjNDM7KVxuIDU4NTpcdFx0XHRtcGh5LVx1MDAzZXFfdHhbaV0gPSBkZXYtXHUwMDNlbXBoeS5xX3R4W2ldO1xuIDU4NjpcdFxuIDU4NzpcdFx0LyogaW5pdCBsZWQgY2FsbGJhY2tzICovXG4gNTg4Olx0XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTVQ3Nl9MRURTKSkge1xuIDU4OTpcdFx0XHRtcGh5LVx1MDAzZWxlZHMuY2Rldi5icmlnaHRuZXNzX3NldCA9IG10NzYxNV9sZWRfc2V0X2JyaWdodG5lc3M7XG4gNTkwOlx0XHRcdG1waHktXHUwMDNlbGVkcy5jZGV2LmJsaW5rX3NldCA9IG10NzYxNV9sZWRfc2V0X2JsaW5rO1xuIDU5MTpcdFx0fVxuIDU5MjpcdFxuIDU5MzpcdFx0cmV0ID0gbXQ3Nl9yZWdpc3Rlcl9waHkobXBoeSwgdHJ1ZSwgbXQ3Nl9yYXRlcyxcbiA1OTQ6XHRcdFx0XHRcdEFSUkFZX1NJWkUobXQ3Nl9yYXRlcykpO1xuIDU5NTpcdFx0aWYgKHJldClcbiA1OTY6XHRcdFx0Z290byBlcnJvcl9mcmVlX2h3O1xuIDU5NzpcdFxuIDU5ODpcdFx0cmV0dXJuIDA7XG4gNTk5Olx0XG4gNjAwOlx0ZXJyb3JfZnJlZV9odzpcbiA2MDE6XHRcdGllZWU4MDIxMV9mcmVlX2h3KG1waHktXHUwMDNlaHcpO1xuIDYwMjpcdGVycm9yOlxuIDYwMzpcdFx0bXQ3NjE1X2NhcF9kYmRjX2Rpc2FibGUoZGV2KTtcbiA2MDQ6XHRcbiA2MDU6XHRcdHJldHVybiByZXQ7XG4gNjA2Olx0fVxuIDYwNzpcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KTtcbiA2MDg6XHRcbiA2MDk6XHR2b2lkIG10NzYxNV91bnJlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc1OTYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvZGUgLSBBIFF1aWNrIENoZWNrKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQhIE15IGV5ZXMganVzdCBzbmFnZ2VkIG9uIGxpbmUgNTM0IGluIHRoYXQgQyBjb2RlLiBMZXQgbWUgcGFyc2UgdGhhdC4uLiBBaCwgdGhlcmUmIzM5O3MgYSBjcnVjaWFsIGNoZWNrIHJpZ2h0IHRoZXJlOiBgaWYgKCFpc19tdDc2MTUoJmFtcDtkZXYtJmd0O210NzYpKWAuIE15IGV4cGVydCBicmFpbiBpbW1lZGlhdGVseSBzcG90cyB0aGUgcG90ZW50aWFsIGlzc3VlOiBUaGlzIGZ1bmN0aW9uIGFwcGVhcnMgdG8gYmUgYW4gZXJyb3IgcGF0aCwgYW5kIGl0IHdpbGwgb25seSBnZXQgdGhlcmUgaWYgYSBjZXJ0YWluIGNoaXAgaXNuJiMzOTt0IGEgY2VydGFpbiB0eXBlLiAmIzM0O1dhaXQsIHdoYXQmIzM5O3MgYGlzX210NzYxNWAgYWN0dWFsbHkgY2hlY2tpbmcgZm9yPyYjMzQ7IEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGF0IGhhcmR3YXJlIGNvbXBvbmVudHMgdGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBoYW5kbGUuIFRoaXMgZGVtYW5kcyBhIGNsb3NlciBsb29rIGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYGlzX210NzYxNWAgZnVuY3Rpb24gdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgYW5kIGludGVuZGVkIHNjb3BlLiBJIGJldHRlciB0cmFjayBkb3duIHRoZSBkZWZpbml0aW9uIG9mIHRoYXQgZnVuY3Rpb24gcmlnaHQgbm93LiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzX210NzYxNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTU0OD1pbnQgbXQ3NjE1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTU2Olx0aWYgKGlzX210NzYxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTU3LVx0XHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDt4bWl0LXF1ZXVlc1wmIzM0OywgZGlyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTc2Olx0aWYgKGlzX210NzYxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NzctXHRcdGRlYnVnZnNfY3JlYXRlX3UzMihcJiMzNDtkZnNfaHdfcGF0dGVyblwmIzM0OywgMDQwMCwgZGlyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jPTQ1PW10NzYxNV9pbml0X3R4X3F1ZXVlcyhzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6NTQ6XHRpZiAoIWlzX210NzYxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy01NS1cdFx0cmV0dXJuIG10NzYyMl9pbml0X3R4X3F1ZXVlc19tdWx0aShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jPTIyMD1pbnQgbXQ3NjE1X2RtYV9pbml0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6MjQ1Olx0aWYgKGlzX210NzYxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI0Ni1cdFx0bXQ3Nl9zZXQoZGV2LCBNVF9XUERNQV9HTE9fQ0ZHLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjI3MTpcdGlmICghaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI3Mi1cdCAgICByeF9yaW5nX3NpemUgLz0gMjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM9MzYwPW10NzYxNV9pbml0X3dpcGh5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy00MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM6NDA5Olx0aWYgKGlzX210NzYxNShcdTAwMjZwaHktXHUwMDNlZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jLTQxMC1cdFx0aHctXHUwMDNlbWF4X3R4X2ZyYWdtZW50cyA9IE1UX1RYUF9NQVhfQlVGX05VTTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM9NTI4PWludCBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy01MzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM6NTM0Olx0aWYgKCFpc19tdDc2MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jLTUzNS1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jPTE1NTI9c3RhdGljIHZvaWQgbXQ3NjE1X21hY190eF9mcmVlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmMtMTU1OS1cdG10NzZfcXVldWVfdHhfY2xlYW51cChkZXYsIGRldi1cdTAwM2VtcGh5LnFfdHhbTVRfVFhRX1BTRF0sIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jOjE1NjA6XHRpZiAoaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmMtMTU2MS1cdFx0bXQ3Nl9xdWV1ZV90eF9jbGVhbnVwKGRldiwgZGV2LVx1MDAzZW1waHkucV90eFtNVF9UWFFfQkVdLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmMtMTU2Ny1cdGNvdW50ID0gbGUxNl9nZXRfYml0cyhmcmVlLVx1MDAzZWN0cmwsIE1UX1RYX0ZSRUVfTVNEVV9JRF9DTlQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmM6MTU2ODpcdGlmIChpc19tdDc2MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWMuYy0xNTY5LVx0XHRfX2xlMTYgKnRva2VuID0gdHhfdG9rZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jPTI4ND1pbnQgbXQ3NjE1X3NldF9jaGFubmVsKHN0cnVjdCBtdDc2X3BoeSAqbXBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWluLmMtMjkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jOjI5MzpcdGlmIChpc19tdDc2MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpIFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNlZmxhc2hfZWVwcm9tKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWluLmMtMjk0LVx0XHRyZXQgPSBtdDc2MTVfbWN1X2FwcGx5X3J4X2Rjb2MocGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYz0xMzMyPXN0YXRpYyBpbnQgbXQ3NjE1X2xvYWRfbjkoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgY29uc3QgY2hhciAqbmFtZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xMzY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM6MTM3MDpcdGlmICghaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmMtMTM3MS1cdFx0ZGV2LVx1MDAzZWZ3X3ZlciA9IE1UNzYxNV9GSVJNV0FSRV9WMjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfbWFjLmM9NjA9aW50IG10NzYxNV90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9tYWMuYy0xMDMtXHRtZW1zZXQodHhwLCAwLCBzaXplb2Yoc3RydWN0IG10NzZfY29ubmFjX3R4cF9jb21tb24pKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9tYWMuYzoxMDQ6XHRpZiAoaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9tYWMuYy0xMDUtXHRcdG10NzYxNV93cml0ZV9md190eHAoZGV2LCB0eF9pbmZvLCB0eHAsIGlkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjUxPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MjIoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoyNTk6c3RhdGljIGlubGluZSBib29sIGlzX210NzYxNShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNjAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yNjk9c3RhdGljIGlubGluZSBib29sIGlzX2Nvbm5hY192MShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNzAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjI3MTpcdHJldHVybiBpc19tdDc2MTUoZGV2KSB8fCBpc19tdDc2NjMoZGV2KSB8fCBpc19tdDc2MjIoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNzItfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDMzNwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhhdCBxdWVyeSwgYXMgaWYgaXQgd2VyZSBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBNVDc2MTUgRHJpdmVyKioKCkFscmlnaHQsIHNvIHNvbWVvbmUmIzM5O3MgYXNrZWQgYWJvdXQgdGhlIGBpc19tdDc2MTUoZGV2KWAgZnVuY3Rpb24uIEdpdmVuIG15IGV4cGVydGlzZSBpbiB0aGlzIGFyZWEsIG15IGZpcnN0IHRob3VnaHQgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmRvZXMqLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2YCBkaXJlY3RvcnkgaXMgdGhlIGNhbm9uaWNhbCBsb2NhdGlvbiBmb3IgTWVkaWF0ZWsgV2lGaSBkcml2ZXJzIHdpdGhpbiB0aGUga2VybmVsIHRyZWUsIGFuZCB0aGUgYG10NzZfY29ubmFjLmhgIGhlYWRlciBmaWxlIGlzIGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgaW50ZXJmYWNlLXJlbGF0ZWQgZGVmaW5pdGlvbnMuIFNvLCBsZXQmIzM5O3Mgb3BlbiB1cCB0aGF0IGhlYWRlciBmaWxlIGFuZCBzZWUgd2hhdCBgaXNfbXQ3NjE1KGRldilgIGlzIGRlZmluZWQgYXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCBpZGVudGlmaWVzIGFuIE1UNzYxNSBkZXZpY2U7IGxpa2VseSBjaGVja2luZyBzb21lIHNvcnQgb2YgaGFyZHdhcmUgSUQgb3IgYm9hcmQgaW5mb3JtYXRpb24gYWdhaW5zdCBhIGtub3duIHZhbHVlLiBJIGV4cGVjdCB0aGUgZGVmaW5pdGlvbiB0byBiZSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZDogZWl0aGVyIGEgZGlyZWN0IGNoZWNrIGZvciBhIHNwZWNpZmljIElELCBvciBwZXJoYXBzIGEgbW9yZSBjb21wbGV4IG1hY3JvIHRoYXQgaW5jb3Jwb3JhdGVzIGZhbWlseSBjaGVja3MgYW5kIHZlcnNpb25pbmcuIExldCYjMzk7cyBnZXQgdG8gdGhlIGNvZGUgYW5kIHNlZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI1MDpcdFxuIDI1MTpcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MjIoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4gMjUyOlx0e1xuIDI1MzpcdFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19NVDc2MjJfV01BQykpXG4gMjU0Olx0XHRcdHJldHVybiBmYWxzZTtcbiAyNTU6XHRcbiAyNTY6XHRcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MjI7XG4gMjU3Olx0fVxuIDI1ODpcdFxuIDI1OTpcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MTUoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4gMjYwOlx0e1xuIDI2MTpcdFx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4NzYxNSB8fCBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MTE7XG4gMjYyOlx0fVxuIDI2MzpcdFxuIDI2NDpcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MTEoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4gMjY1Olx0e1xuIDI2NjpcdFx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4NzYxMTtcbiAyNjc6XHR9XG4gMjY4Olx0XG4gMjY5Olx0c3RhdGljIGlubGluZSBib29sIGlzX2Nvbm5hY192MShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbiAyNzA6XHR7XG4gMjcxOlx0XHRyZXR1cm4gaXNfbXQ3NjE1KGRldikgfHwgaXNfbXQ3NjYzKGRldikgfHwgaXNfbXQ3NjIyKGRldik7XG4gMjcyOlx0fVxuIDI3MzpcdFxuIDI3NDpcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2X2Z3X3R4cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzExMDUKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiBteSBmaWVsZDoKCioqQ2hpcCBJRCBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZ2V0dGluZyBhIGhhbmRsZSBvbiB3aGljaCBkZXZpY2VzIGFyZSBjdXJyZW50bHkgdXRpbGl6aW5nIGVpdGhlciB0aGUgMHg3NjE1IG9yIDB4NzYxMSBjaGlwIElEcy4gSXQmIzM5O3MgdGhlIG1vc3QgbG9naWNhbCBmaXJzdCBzdGVwIHRvIHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgaGFyZHdhcmUgaW52ZW50b3J5LiBGcm9tIHRoZXJlLCBJIG5lZWQgdG8gdHJhY2UgYmFjayB3aGVyZSB0aGVzZSBzcGVjaWZpYyBjaGlwcyBhcmUgYmVpbmcgcHJvYmVkIHdpdGhpbiB0aGUgc3lzdGVtLiBUaGF0JiMzOTtsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBjaGlwIElEcyBhcmUgYmVpbmcgdXRpbGl6ZWQgaW4gcHJhY3RpY2UuIFVuZGVyc3RhbmRpbmcgdGhlIHByb2JlIHBvaW50cyB3aWxsIGxpa2VseSBwb2ludCB0aGUgd2F5IHRvIHRoZSByaWdodCBkcml2ZXJzLCBjb25maWd1cmF0aW9ucywgb3IgaGFyZHdhcmUgc3BlY2lmaWNhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggb2YgdGhvc2UgY2hpcHMuIEZyb20gdGhlcmUgSSBjYW4gZGV0ZXJtaW5lIGhvdyBJIGNhbiBtYWtlIGNoYW5nZXMgd2l0aG91dCBicmVha2luZyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7MHg3NjE1fDB4NzYxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM9ODc9c3RhdGljIGludCBtdDc2MTVfY2hlY2tfZWVwcm9tKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTkxLVx0c3dpdGNoICh2YWwpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjkyOlx0Y2FzZSAweDc2MTU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy05My1cdGNhc2UgMHg3NjIyOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jPTMxNT1zdGF0aWMgdm9pZCBtdDc2MTVfY2FsX2ZyZWVfZGF0YShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTMyNS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzozMjY6XHRjYXNlIDB4NzYxNTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjMyNzpcdGNhc2UgMHg3NjExOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMzI4LVx0XHRtdDc2MTVfYXBwbHlfY2FsX2ZyZWVfZGF0YShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaS5jPTE1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtdDc2MTVfcGNpX2RldmljZV90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpLmM6MTY6XHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3NjE1KSB9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpLmMtMTctXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3NjYzKSB9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpLmM6MTg6XHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3NjExKSB9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpLmMtMTktXHR7IH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTI1OT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3NjE1KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI2MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjYxOlx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4NzYxNSB8fCBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MTE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjYyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjY0PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MTEoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjY1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoyNjY6XHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3NjExO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI2Ny19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMzIwCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgTVQ3NjE1IFBDSSBEZXZpY2UgVGFibGUgYW5kIFJlbGF0ZWQgVVNCIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYG10NzYxNV9wY2lfZGV2aWNlX3RhYmxlYCByaWdodCBub3cuIEludGVyZXN0aW5nLi4uIGl0IHNlZW1zIHRvIGJlIGxpc3RpbmcgUENJIGRldmljZXMsIHNwZWNpZmljYWxseSB0aG9zZSB3aXRoIHRoZSAweDc2MTUgYW5kIDB4NzYxMSBkZXZpY2UgSURzLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIG5vdGUgdGhvc2UgSURzOyBzZWVtcyBsaWtlIGEgbG9naWNhbCBzdGFydGluZyBwb2ludCB3aGVuIEkmIzM5O20gZGVhbGluZyB3aXRoIE1UNzYxNSwgb3IgZXZlbiB2YXJpYW50cy4gQnV0LCBob2xkIG9uIGEgc2Vjb25kLi4uIHdoYXQgYWJvdXQgdGhlIGBtdDc2NjN1YCBkcml2ZXI/IFdoZXJlIGRvZXMgdGhhdCBjaGlwIGZpdCBpbnRvIHRoaXMgcGljdHVyZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgb3RoZXIgZGV2aWNlcywgYW5kIHdoaWNoIGRldmljZSBJIGFtIGxvb2tpbmcgZm9yLiBJIHNob3VsZCBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHJlbGF0aW9uc2hpcHMsIG9yIGNvbW1vbmFsaXRpZXMgdG8gYmUgZm91bmQuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGltbWVkaWF0ZSBjb3JyZWxhdGlvbiB0aGVyZS4uLiB0aGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBsb29rIGZvciBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdC8qIENvcHlyaWdodCAoQykgMjAxOSBNZWRpYVRlayBJbmMuXG4gICAzOlx0ICpcbiAgIDQ6XHQgKiBBdXRob3I6IEZlbGl4IEZpZXRrYXUgXHUwMDNjbmJkQG5iZC5uYW1lXHUwMDNlXG4gICA1Olx0ICpcdCAgIExvcmVuem8gQmlhbmNvbmkgXHUwMDNjbG9yZW56b0BrZXJuZWwub3JnXHUwMDNlXG4gICA2Olx0ICpcdCAgIFNlYW4gV2FuZyBcdTAwM2NzZWFuLndhbmdAbWVkaWF0ZWsuY29tXHUwMDNlXG4gICA3Olx0ICovXG4gICA4Olx0XG4gICA5Olx0I2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAgMTA6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICAxMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3VzYi5oXHUwMDNlXG4gIDEyOlx0XG4gIDEzOlx0I2luY2x1ZGUgXCYjMzQ7bXQ3NjE1LmhcJiMzNDtcbiAgMTQ6XHQjaW5jbHVkZSBcJiMzNDttYWMuaFwmIzM0O1xuICAxNTpcdCNpbmNsdWRlIFwmIzM0O21jdS5oXCYjMzQ7XG4gIDE2Olx0I2luY2x1ZGUgXCYjMzQ7cmVncy5oXCYjMzQ7XG4gIDE3Olx0XG4gIDE4Olx0c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG10NzYxNV9kZXZpY2VfdGFibGVbXSA9IHtcbiAgMTk6XHRcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwZThkLCAweDc2NjMsIDB4ZmYsIDB4ZmYsIDB4ZmYpIH0sXG4gIDIwOlx0XHR7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MDQzZSwgMHgzMTBjLCAweGZmLCAweGZmLCAweGZmKSB9LFxuICAyMTpcdFx0eyB9LFxuICAyMjpcdH07XG4gIDIzOlx0XG4gIDI0Olx0c3RhdGljIHUzMiBtdDc2NjN1X3JyKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYWRkcilcbiAgMjU6XHR7XG4gIDI2Olx0XHR1MzIgcmV0O1xuICAyNzpcdFxuICAyODpcdFx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNldXNiLnVzYl9jdHJsX210eCk7XG4gIDI5Olx0XHRyZXQgPSBfX19tdDc2dV9ycihkZXYsIE1UX1ZFTkRfUkVBRF9FWFQsXG4gIDMwOlx0XHRcdFx0ICBVU0JfRElSX0lOIHwgVVNCX1RZUEVfVkVORE9SLCBhZGRyKTtcbiAgMzE6XHRcdG11dGV4X3VubG9jayhcdTAwMjZkZXYtXHUwMDNldXNiLnVzYl9jdHJsX210eCk7XG4gIDMyOlx0XG4gIDMzOlx0XHRyZXR1cm4gcmV0O1xuICAzNDpcdH1cbiAgMzU6XHRcbiAgMzY6XHRzdGF0aWMgdm9pZCBtdDc2NjN1X3dyKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYWRkciwgdTMyIHZhbClcbiAgMzc6XHR7XG4gIDM4Olx0XHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2V1c2IudXNiX2N0cmxfbXR4KTtcbiAgMzk6XHRcdF9fX210NzZ1X3dyKGRldiwgTVRfVkVORF9XUklURV9FWFQsXG4gIDQwOlx0XHRcdCAgICBVU0JfRElSX09VVCB8IFVTQl9UWVBFX1ZFTkRPUiwgYWRkciwgdmFsKTtcbiAgNDE6XHRcdG11dGV4X3VubG9jayhcdTAwMjZkZXYtXHUwMDNldXNiLnVzYl9jdHJsX210eCk7XG4gIDQyOlx0fVxuICA0MzpcdFxuICA0NDpcdHN0YXRpYyB1MzIgbXQ3NjYzdV9ybXcoc3RydWN0IG10NzZfZGV2ICpkZXYsIHUzMiBhZGRyLFxuICA0NTpcdFx0XHQgICAgICAgdTMyIG1hc2ssIHUzMiB2YWwpXG4gIDQ2Olx0e1xuICA0NzpcdFx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNldXNiLnVzYl9jdHJsX210eCk7XG4gIDQ4Olx0XHR2YWwgfD0gX19fbXQ3NnVfcnIoZGV2LCBNVF9WRU5EX1JFQURfRVhULFxuICA0OTpcdFx0XHRcdCAgIFVTQl9ESVJfSU4gfCBVU0JfVFlQRV9WRU5ET1IsIGFkZHIpIFx1MDAyNiB+bWFzaztcbiAgNTA6XHRcdF9fX210NzZ1X3dyKGRldiwgTVRfVkVORF9XUklURV9FWFQsXG4gIDUxOlx0XHRcdCAgICBVU0JfRElSX09VVCB8IFVTQl9UWVBFX1ZFTkRPUiwgYWRkciwgdmFsKTtcbiAgNTI6XHRcdG11dGV4X3VubG9jayhcdTAwMjZkZXYtXHUwMDNldXNiLnVzYl9jdHJsX210eCk7XG4gIDUzOlx0XG4gIDU0Olx0XHRyZXR1cm4gdmFsO1xuICA1NTpcdH1cbiAgNTY6XHRcbiAgNTc6XHRzdGF0aWMgdm9pZCBtdDc2NjN1X2NvcHkoc3RydWN0IG10NzZfZGV2ICpkZXYsIHUzMiBvZmZzZXQsXG4gIDU4Olx0XHRcdFx0IGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4pXG4gIDU5Olx0e1xuICA2MDpcdFx0c3RydWN0IG10NzZfdXNiICp1c2IgPSBcdTAwMjZkZXYtXHUwMDNldXNiO1xuICA2MTpcdFx0aW50IHJldCwgaSA9IDAsIGJhdGNoX2xlbjtcbiAgNjI6XHRcdGNvbnN0IHU4ICp2YWwgPSBkYXRhO1xuICA2MzpcdFxuICA2NDpcdFx0bGVuID0gcm91bmRfdXAobGVuLCA0KTtcbiAgNjU6XHRcbiAgNjY6XHRcdG11dGV4X2xvY2soXHUwMDI2dXNiLVx1MDAzZXVzYl9jdHJsX210eCk7XG4gIDY3Olx0XHR3aGlsZSAoaSBcdTAwM2MgbGVuKSB7XG4gIDY4Olx0XHRcdGJhdGNoX2xlbiA9IG1pbl90KGludCwgdXNiLVx1MDAzZWRhdGFfbGVuLCBsZW4gLSBpKTtcbiAgNjk6XHRcdFx0bWVtY3B5KHVzYi1cdTAwM2VkYXRhLCB2YWwgJiM0MzsgaSwgYmF0Y2hfbGVuKTtcbiAgNzA6XHRcdFx0cmV0ID0gX19tdDc2dV92ZW5kb3JfcmVxdWVzdChkZXYsIE1UX1ZFTkRfV1JJVEVfRVhULFxuICA3MTpcdFx0XHRcdFx0XHQgICAgIFVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfVkVORE9SLFxuICA3MjpcdFx0XHRcdFx0XHQgICAgIChvZmZzZXQgJiM0MzsgaSkgXHUwMDNlXHUwMDNlIDE2LCBvZmZzZXQgJiM0MzsgaSxcbiAgNzM6XHRcdFx0XHRcdFx0ICAgICB1c2ItXHUwMDNlZGF0YSwgYmF0Y2hfbGVuKTtcbiAgNzQ6XHRcdFx0aWYgKHJldCBcdTAwM2MgMClcbiAgNzU6XHRcdFx0XHRicmVhaztcbiAgNzY6XHRcbiAgNzc6XHRcdFx0aSAmIzQzOz0gYmF0Y2hfbGVuO1xuICA3ODpcdFx0fVxuICA3OTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnVzYi1cdTAwM2V1c2JfY3RybF9tdHgpO1xuICA4MDpcdH1cbiAgODE6XHRcbiAgODI6XHRzdGF0aWMgdm9pZCBtdDc2NjN1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcbiAgODM6XHR7XG4gIDg0Olx0XHRzdHJ1Y3QgbXQ3NjE1X3BoeSAqcGh5ID0gbXQ3NjE1X2h3X3BoeShodyk7XG4gIDg1Olx0XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gaHctXHUwMDNlcHJpdjtcbiAgODY6XHRcbiAgODc6XHRcdGNsZWFyX2JpdChNVDc2X1NUQVRFX1JVTk5JTkcsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbiAgODg6XHRcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNnBoeS1cdTAwM2Vyb2NfdGltZXIpO1xuICA4OTpcdFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZwaHktXHUwMDNlcm9jX3dvcmspO1xuICA5MDpcdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnBoeS1cdTAwM2VzY2FuX3dvcmspO1xuICA5MTpcdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnBoeS1cdTAwM2VtdDc2LVx1MDAzZW1hY193b3JrKTtcbiAgOTI6XHRcdG10NzZ1X3N0b3BfdHgoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuICA5MzpcdH1cbiAgOTQ6XHRcbiAgOTU6XHRzdGF0aWMgdm9pZCBtdDc2NjN1X2NsZWFudXAoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbiAgOTY6XHR7XG4gIDk3Olx0XHRjbGVhcl9iaXQoTVQ3Nl9TVEFURV9JTklUSUFMSVpFRCwgXHUwMDI2ZGV2LVx1MDAzZW1waHkuc3RhdGUpO1xuICA5ODpcdFx0bXQ3NnVfcXVldWVzX2RlaW5pdChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gIDk5Olx0fVxuIDEwMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDMxOAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgRGVlcGVyIGludG8gdGhlIE1UNzYxNSBVU0IgRHJpdmVyKioKCkFscmlnaHQsIHNvIHdlJiMzOTt2ZSBiZWVuIGZvY3VzaW5nIG9uIHRoYXQgc3BlY2lmaWMgYXJlYSBvZiB0aGUgTVQ3NjE1IFVTQiBkcml2ZXIsIGJ1dCBpdCYjMzk7cyB0aW1lIHRvIGJyb2FkZW4gdGhlIHNjb3BlLiBJIG5lZWQgdG8gZ2V0IGEgbW9yZSBjb21wcmVoZW5zaXZlIHZpZXcgb2YgaG93IHRoaXMgYWxsIGZ1bmN0aW9ucy4gSSBzaG91bGQgZGVmaW5pdGVseSBleGFtaW5lIHRoZSB3aG9sZSBvZiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHBpZWNlcywgd2hlcmUgdGhlIGNvbnRyb2wgZmxvdyBvcmlnaW5hdGVzLCBhbmQgaG93IGl0IGFsbCBoYW5ncyB0b2dldGhlci4gVGhlcmUgY291bGQgYmUgY3JpdGljYWwgY2x1ZXMgd2l0aGluIHRoZSBzZWVtaW5nbHkgJiMzNDt1bmltcG9ydGFudCYjMzQ7IHNlY3Rpb25zLCBkZXRhaWxzIHRoYXQgYWZmZWN0IHRoZSBtb2R1bGUgYmVoYXZpb3IuIFRoaXMgZGVlcGVyIGRpdmUgd2lsbCBleHBvc2UgaG93IHRoaXMgcGFydGljdWxhciBtb2R1bGUgaXMgaW50ZWdyYXRlZCBpbnRvIHRoZSByZXN0IG9mIHRoZSBsYXJnZXIgTVQ3NiBmcmFtZXdvcmssIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGNlcnRhaW4gZGVzaWduIGNob2ljZXMuIFRoYXQgYnJvYWRlciBjb250ZXh0IHdpbGwgYmUgY3J1Y2lhbCBmb3IgdGhlIHByb2JsZW0gSSYjMzk7bSB3b3JraW5nIG9uLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogOTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4MDpcdFx0aWYgKHJldClcbiAxODE6XHRcdFx0Z290byBlcnJvcjtcbiAxODI6XHRcbiAxODM6XHRcdHJldCA9IG10NzZ1X2FsbG9jX3F1ZXVlcyhcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMTg0Olx0XHRpZiAocmV0KVxuIDE4NTpcdFx0XHRnb3RvIGVycm9yO1xuIDE4NjpcdFxuIDE4NzpcdFx0cmV0ID0gbXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZShkZXYpO1xuIDE4ODpcdFx0aWYgKHJldClcbiAxODk6XHRcdFx0Z290byBlcnJvcjtcbiAxOTA6XHRcbiAxOTE6XHRcdHJldHVybiAwO1xuIDE5MjpcdFxuIDE5MzpcdGVycm9yOlxuIDE5NDpcdFx0bXQ3NnVfcXVldWVzX2RlaW5pdChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMTk1Olx0XHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcbiAxOTY6XHRcdHVzYl9wdXRfZGV2KGludGVyZmFjZV90b191c2JkZXYodXNiX2ludGYpKTtcbiAxOTc6XHRcbiAxOTg6XHRcdG10NzZfZnJlZV9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuIDE5OTpcdFxuIDIwMDpcdFx0cmV0dXJuIHJldDtcbiAyMDE6XHR9XG4gMjAyOlx0XG4gMjAzOlx0c3RhdGljIHZvaWQgbXQ3NjYzdV9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcbiAyMDQ6XHR7XG4gMjA1Olx0XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YSh1c2JfaW50Zik7XG4gMjA2Olx0XG4gMjA3Olx0XHRpZiAoIXRlc3RfYml0KE1UNzZfU1RBVEVfSU5JVElBTElaRUQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKSlcbiAyMDg6XHRcdFx0cmV0dXJuO1xuIDIwOTpcdFxuIDIxMDpcdFx0aWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoZGV2LVx1MDAzZW10NzYuaHcpO1xuIDIxMTpcdFx0bXQ3NjYzdV9jbGVhbnVwKGRldik7XG4gMjEyOlx0XG4gMjEzOlx0XHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcbiAyMTQ6XHRcdHVzYl9wdXRfZGV2KGludGVyZmFjZV90b191c2JkZXYodXNiX2ludGYpKTtcbiAyMTU6XHRcbiAyMTY6XHRcdG10NzZfZnJlZV9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuIDIxNzpcdH1cbiAyMTg6XHRcbiAyMTk6XHQjaWZkZWYgQ09ORklHX1BNXG4gMjIwOlx0c3RhdGljIGludCBtdDc2NjN1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcbiAyMjE6XHR7XG4gMjIyOlx0XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbiAyMjM6XHRcbiAyMjQ6XHRcdGlmICghdGVzdF9iaXQoTVQ3Nl9TVEFURV9TVVNQRU5ELCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSkgXHUwMDI2XHUwMDI2XG4gMjI1Olx0XHQgICAgbXQ3NjE1X2Zpcm13YXJlX29mZmxvYWQoZGV2KSkge1xuIDIyNjpcdFx0XHRpbnQgZXJyO1xuIDIyNzpcdFxuIDIyODpcdFx0XHRlcnIgPSBtdDc2X2Nvbm5hY19tY3Vfc2V0X2hpZl9zdXNwZW5kKFx1MDAyNmRldi1cdTAwM2VtdDc2LCB0cnVlLCB0cnVlKTtcbiAyMjk6XHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbiAyMzA6XHRcdFx0XHRyZXR1cm4gZXJyO1xuIDIzMTpcdFx0fVxuIDIzMjpcdFxuIDIzMzpcdFx0bXQ3NnVfc3RvcF9yeChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMjM0Olx0XHRtdDc2dV9zdG9wX3R4KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiAyMzU6XHRcbiAyMzY6XHRcdHJldHVybiAwO1xuIDIzNzpcdH1cbiAyMzg6XHRcbiAyMzk6XHRzdGF0aWMgaW50IG10NzY2M3VfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIDI0MDpcdHtcbiAyNDE6XHRcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xuIDI0MjpcdFx0aW50IGVycjtcbiAyNDM6XHRcbiAyNDQ6XHRcdGVyciA9IG10NzZ1X3ZlbmRvcl9yZXF1ZXN0KFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNVF9WRU5EX0ZFQVRVUkVfU0VULFxuIDI0NTpcdFx0XHRcdFx0ICAgVVNCX0RJUl9PVVQgfCBVU0JfVFlQRV9WRU5ET1IsXG4gMjQ2Olx0XHRcdFx0XHQgICAweDUsIDB4MCwgTlVMTCwgMCk7XG4gMjQ3Olx0XHRpZiAoZXJyKVxuIDI0ODpcdFx0XHRyZXR1cm4gZXJyO1xuIDI0OTpcdFxuIDI1MDpcdFx0ZXJyID0gbXQ3NnVfcmVzdW1lX3J4KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiAyNTE6XHRcdGlmIChlcnIgXHUwMDNjIDApXG4gMjUyOlx0XHRcdHJldHVybiBlcnI7XG4gMjUzOlx0XG4gMjU0Olx0XHRpZiAoIXRlc3RfYml0KE1UNzZfU1RBVEVfU1VTUEVORCwgXHUwMDI2ZGV2LVx1MDAzZW1waHkuc3RhdGUpIFx1MDAyNlx1MDAyNlxuIDI1NTpcdFx0ICAgIG10NzYxNV9maXJtd2FyZV9vZmZsb2FkKGRldikpXG4gMjU2Olx0XHRcdGVyciA9IG10NzZfY29ubmFjX21jdV9zZXRfaGlmX3N1c3BlbmQoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIGZhbHNlLCB0cnVlKTtcbiAyNTc6XHRcbiAyNTg6XHRcdHJldHVybiBlcnI7XG4gMjU5Olx0fVxuIDI2MDpcdCNlbmRpZiAvKiBDT05GSUdfUE0gKi9cbiAyNjE6XHRcbiAyNjI6XHRNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgbXQ3NjE1X2RldmljZV90YWJsZSk7XG4gMjYzOlx0TU9EVUxFX0ZJUk1XQVJFKE1UNzY2M19PRkZMT0FEX0ZJUk1XQVJFX045KTtcbiAyNjQ6XHRNT0RVTEVfRklSTVdBUkUoTVQ3NjYzX09GRkxPQURfUk9NX1BBVENIKTtcbiAyNjU6XHRNT0RVTEVfRklSTVdBUkUoTVQ3NjYzX0ZJUk1XQVJFX045KTtcbiAyNjY6XHRNT0RVTEVfRklSTVdBUkUoTVQ3NjYzX1JPTV9QQVRDSCk7XG4gMjY3Olx0XG4gMjY4Olx0c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzY2M3VfZHJpdmVyID0ge1xuIDI2OTpcdFx0Lm5hbWVcdFx0PSBLQlVJTERfTU9ETkFNRSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYwNDUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA2MTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNVDc2NjNVIGFuZCBtdDc2MTUgRHJpdmVyIEludGVyYWN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZvciB0aGUgTVQ3NjYzVSwgdGhlIGNoaXAgSUQgaXMgMHg3NjYzLiBJIHdhcyBsb29raW5nIGF0IGhvdyB0aGUgYG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5YCBmdW5jdGlvbiBoYW5kbGVzIHRoaXMsIGFuZCBJIHNlZSBhIHByb2JsZW0gcmlnaHQgYXdheS4gVGhlIGZ1bmN0aW9uIGluY2x1ZGVzIHRoaXMgY2hlY2s6CgpgYGBjCglpZiAoIWlzX210NzYxNSgmYW1wO2Rldi0mZ3Q7bXQ3NikpCgkJcmV0dXJuIC1FT1BOT1RTVVBQOwpgYGAKCmBpc19tdDc2MTVgIGNoZWNrcyBmb3IgYG10NzZfY2hpcChkZXYpID09IDB4NzYxNSB8fCBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MTFgLiBCdXQgd2FpdCwgdGhlIE1UNzY2MyBoYXMgYSBjaGlwIElEIG9mIDB4NzY2My4gU28sIGZvciB0aGUgTVQ3NjYzVSAodGhlIFVTQiB2ZXJzaW9uKSwgYG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5YCBpcyBpbW1lZGlhdGVseSByZXR1cm5pbmcgYC1FT1BOT1RTVVBQYCEgVGhpcyBoYXBwZW5zICpiZWZvcmUqIGFueSBvZiB0aGUgbG9naWMgSSYjMzk7bSBpbnRlcmVzdGVkIGluIQoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBpcyBoYXBwZW5pbmcuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgbXQ3NjE1YCAoMHg3NjE1IC8gMHg3NjExKSBldmVuICpleGlzdHMqIGFzIGEgVVNCIGRldmljZSwgb3IgaWYgaXQmIzM5O3Mgc3RyaWN0bHkgUENJZS4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBzZWFyY2ggdGhlIGBtdDc2MTVgIGRyaXZlciBmb3IgZGV2aWNlIGluZm9ybWF0aW9uLgoKT2theSwgbGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvYCBkaXJlY3RvcnkuCgoqICAgYHBjaS5jYDogQWgsIHRoZXJlJiMzOTtzIGEgYG10NzYxNV9wY2lfZGV2aWNlX3RhYmxlYCB0aGF0IGluY2x1ZGVzIGRldmljZXMgd2l0aCB0aGUgdmVuZG9yIElEIGFuZCAweDc2MTUsIDB4NzY2MywgYW5kIDB4NzYxMSBjaGlwIElEcy4gVGhpcyBjbGVhcmx5IGRlZmluZXMgUENJZSBkZXZpY2VzLgoqICAgYHVzYi5jYDogRXhjZWxsZW50LiBUaGUgYG10NzYxNV9kZXZpY2VfdGFibGVgIGluY2x1ZGVzIFVTQiBkZXZpY2VzOiB0aGUgVVNCIGRldmljZSBgMHgwZThkLCAweDc2NjNgICphbmQqIGAweDA0M2UsIDB4MzEwY2Agd2hpY2ggaXMgYWxzbyBhbiBNVDc2NjNVIQoqICAgYHNkaW8uY2A6IEZvdW5kIGEgZGV2aWNlIGhlcmUgZm9yIGBtdDc2NjNzYCAoU0RJTykuCiogICBgc29jLmNgOiBDb250YWlucyBjb2RlIGZvciBgTVQ3NjIyX1dNQUNgIChidWlsdC1pbiBXTUFDIG9uIE1UNzYyMiBTb0MsIEFSTSAvIEFSQ0hfTUVESUFURUspLgoKQWxyaWdodCwgSSBzZWUgYSBjbGVhciBkZWxpbmVhdGlvbi4gVGhlIE1UNzYxNS9NVDc2MTEgZHJpdmVycyBhcmUgbm90ICpvbmx5KiBmb3IgUENJZSBkZXZpY2VzLCBzaW5jZSBVU0IgYW5kIFNESU8gYXJlIGNvdmVyZWQuIFRoZSBgdXNiLmNgIGZpbGUgY29uZmlybXMgdGhhdCB0aGVyZSBpcyBzdXBwb3J0IGZvciB0aGVzZSBjaGlwcyBvdmVyIFVTQi4gU28sIHRoZSBpc3N1ZSBpc24mIzM5O3QgdGhhdCBgbXQ3NjE1YCBpcyAqb25seSogUENJZS4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGUgZHJpdmVyIGlzIHJlamVjdGluZyB0aGUgTVQ3NjYzVSBiYXNlZCBvbiB0aGF0IGNoZWNrLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgbW9yZSBjbG9zZWx5IGF0IGhvdyB0aGUgZHJpdmVyIGlkZW50aWZpZXMgdGhlc2Ugc3BlY2lmaWMgZGV2aWNlcyBhbmQgd2hlcmUgdGhpcyBjb2RlIG1pZ2h0IGJlIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NkaW9fZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM6MjI6c3RhdGljIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCBtdDc2NjNzX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtMjMtXHR7IFNESU9fREVWSUNFKFNESU9fVkVORE9SX0lEX01FRElBVEVLLCAweDc2MDMpIH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jPTc2PXN0YXRpYyBpbnQgbXQ3NjYzc19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjc3Olx0XHRcdCBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTc4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmMtMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6MTk6c3RhdGljIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCBtdDc5MjFzX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmMtMjAtXHR7IFNESU9fREVWSUNFKFNESU9fVkVORE9SX0lEX01FRElBVEVLLCAweDc5MDEpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYz05MD1zdGF0aWMgaW50IG10NzkyMXNfcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYzo5MTpcdFx0XHQgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYy05Mi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3ODk4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogODQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gVGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2Ugc2hvdWxkIGNvbnNpZGVyIGZ1enppbmcgdGhlIGNvZGUgd2l0aGluIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAuIFRoZSBmaXJzdCBodXJkbGUgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uLCBvbiB0aGUgZmFjZSBvZiBpdCwgc2VlbXMgdGlnaHRseSBjb3VwbGVkIHRvIHBoeXNpY2FsIGhhcmR3YXJlLiBTcGVjaWZpY2FsbHksIHRoZSBmdW5jdGlvbiBsb2dpYyBpcyB1c2VkIG9ubHkgd2hlbiBhbiBleHRlcm5hbCBQSFkgaXMgcmVnaXN0ZXJlZC4gYGlzX210NzYxNWAgY2hlY2tzIGZvciBNZWRpYXRlayBjaGlwIElEcyAweDc2MTUgb3IgMHg3NjExLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhlc2UgYXJlIGZvdW5kIGluIHRoZSBgbXQ3NjE1X3BjaV9kZXZpY2VfdGFibGVgLCB3aGljaCBzdHJvbmdseSBzdWdnZXN0cyBQQ0llIGRldmljZXMuCgpUaGUga2V5IG5lZ2F0aXZlIGNyaXRlcmlvbiBpbiB0aGUgcHJvbXB0IGlzIGFib3V0ICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCYjMzQ7IHNwZWNpZmljYWxseSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyBhIHJlZCBmbGFnISBTdGFuZGFyZCBRRU1VLCBhcyBmYXIgYXMgSSBrbm93LCBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBNZWRpYVRlayBNVDc2MTUvTVQ3NjExIFBDSWUgaGFyZHdhcmUuIFRoaXMgd291bGQgYXV0b21hdGljYWxseSBleGNsdWRlIGl0IGZyb20gYmVpbmcgZnV6emFibGUuCgpCdXQgd2UgaGF2ZSB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uIExldCYjMzk7cyB0cmFjZSB0aGUgY2FsbGVycyBvZiBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgLiBXZSYjMzk7dmUgZ290IHR3byBjYWxsZXJzOgoKMS4gIGBtdDc2MTVfcmVnaXN0ZXJfZGV2aWNlYCAodmlhIGBtdDc2MTVfcGNpX3Byb2JlYCk6IFRoaXMgaXMgY2FsbGVkIGR1cmluZyB0aGUgUENJZSBwcm9iZS4gU28sIGEgTWVkaWF0ZWsgTVQ3NjE1IFBDSWUgY2FyZCBwcm9iZS4gVGhhdCYjMzk7cyBhIHBoeXNpY2FsIGNhcmQgcHJvYmUuCjIuICBgbXQ3NjE1X2RiZGNfc2V0YDogIFRoaXMgaXMgY2FsbGVkIHZpYSBhIGRlYnVnZnMgZW50cnkuIEhvd2V2ZXIsIHRvICpjcmVhdGUqIHRoZSBkZWJ1Z2ZzIGVudHJ5LCB5b3UmIzM5O2QgaGF2ZSB0byBpbml0aWFsaXplIGEgYG10NzYxNWAgZGV2aWNlIChlaXRoZXIgdmlhIGBtdDc2MTVfcmVnaXN0ZXJfZGV2aWNlYCwgb3IgYnkgYSBVU0Igb3IgU0RJTyBkZXZpY2UgcmVnaXN0ZXJpbmcpLiBUaGlzIGlzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nLiBJZiBpdCB3YXMgY3JlYXRlZCBieSBgbXQ3NjYzdWAgKFVTQiksIGFuZCBzb21lb25lIHdyaXRlcyB0byBgZGJkY2AsIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAgd2lsbCBleGVjdXRlLiBIb3dldmVyLCBiZWNhdXNlIE1UNzY2MyBoYXMgY2hpcCBJRCAweDc2NjMgKGAhaXNfbXQ3NjE1YCksIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAgaW1tZWRpYXRlbHkgcmV0dXJucyBgLUVPUE5PVFNVUFBgLiBUaGUgbW9kaWZpZWQgY29kZSBpcyBuZXZlciByZWFjaGVkIGluIHRoaXMgc2NlbmFyaW8hIEFsc28sIGZvciB0aGUgTVQ3NjE1IFBDSWUgZGV2aWNlICh3aGljaCBJUyBgaXNfbXQ3NjE1YCksIHRoZSBkZXZpY2UgY2Fubm90IGJlIHByb2JlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUgLyBHQ0UpIGJlY2F1c2UgTVQ3NjE1IGlzIHBoeXNpY2FsIE1lZGlhVGVrIFBDSWUgaGFyZHdhcmUuCgpTbywgaW4gdGhlIGZpcnN0IGNhbGxpbmcgcGF0aCwgeW91IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUuIEluIHRoZSBzZWNvbmQgY2FsbGluZyBwYXRoLCBpZiBpdCBleGVjdXRlcyB3aXRoIGEgVVNCIG9yIFNESU8gZGV2aWNlLCB5b3UgaGF2ZSBhbiBlYXJseSByZXR1cm4gZnJvbSBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIHRoYXQgc2tpcHMgdGhlIG1vZGlmaWVkIGNvZGUuCgpUaGUgZmluYWwgcXVlc3Rpb246IGlzIHRoZXJlIGFueSB2aXJ0dWFsIG9yIG1vY2sgaW50ZXJmYWNlIGZvciBgbXQ3NmA/IE1heWJlIHNvbWUgYG1hYzgwMjExX2h3c2ltYCBvciBzaW1pbGFyPyBMZXQgbWUgZG8gYSBxdWljayBzZWFyY2guLi4gTm8sIG5vdGhpbmcgaW1tZWRpYXRlbHkgYXBwYXJlbnQuIFRoYXQgd291bGQgYmUgdGhlIG9ubHkgY2hhbmNlIG9mIHJ1bm5pbmcgdGhpcyBpbiBhIFZNLgoKQmFzZWQgb24gdGhlIGV2aWRlbmNlLCB0aGUgbW9kaWZpZWQgY29kZSBpbiBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIGlzIG9ubHkgcmVhY2hhYmxlIG9uIHBoeXNpY2FsIGhhcmR3YXJlLiBJdCBzZWVtcyB3ZSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NTI0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuCgoqKkludmVzdGlnYXRpbmcgdGhlIGBtdDc2X2NoaXBgIENvbnRleHQqKgoKUmlnaHQsIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IGNvbm5lY3Rpb24gYmV0d2VlbiB0aGlzIGBtYWM4MDIxMV9od3NpbWAgZHJpdmVyIGFuZCB0aGUgYG10NzZgIGZyYW1ld29yay4gVGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZXkgYXJlIGNvbXBsZXRlbHkgc2VwYXJhdGU7IGBtYWM4MDIxMV9od3NpbWAgaXMgZXhwbGljaXRseSBhIHNvZnR3YXJlIHNpbXVsYXRpb24gb2YgdGhlIGhhcmR3YXJlIGFuZCBoYXMgbm8gaW5oZXJlbnQgbGluayB0byBNZWRpYVRlayYjMzk7cyBgbXQ3NmAgZHJpdmVycy4gSXQmIzM5O3MgZGVzaWduZWQgdG8gYmUgaW5kZXBlbmRlbnQuCgpIb3dldmVyLCBJIG5lZWQgdG8gYmUgKmFic29sdXRlbHkqIHN1cmUuIFRoZSBxdWVzdGlvbiBpczogY291bGQgdGhlcmUgYmUgc29tZSB1bmZvcmVzZWVuIGludGVyYWN0aW9uLCBwZXJoYXBzIGEgc3VidGxlIGRlcGVuZGVuY3ksIG9yIGV2ZW4gYSBtaXNjb25maWd1cmF0aW9uIHRoYXQgY291bGQgbGVhZCB0byBzb21ldGhpbmcgYmVpbmcgaW5jb3JyZWN0bHkgc2V0PyBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGJvb2xlYW4gYGlzX210NzYxNWAuIENhbiB0aGF0IGV2ZXIgYmUgdHJ1ZSBpbiB0aGUgY29udGV4dCBvZiBhIFVTQiBkZXZpY2UsIG9yIGEgdmlydHVhbCBkZXZpY2UgbGlrZSBgbWFjODAyMTFfaHdzaW1gPyBTZWVtcyB1bmxpa2VseSBvbiB0aGUgZmFjZSBvZiBpdCwgYnV0IGJldHRlciB0byBjb25maXJtLgoKVGhlcmVmb3JlLCBteSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gY2hlY2sgd2hlcmUgdGhlIGBtdDc2X2NoaXBgIGRhdGEgc3RydWN0dXJlIGlzIGJlaW5nIGluaXRpYWxpemVkIGFuZCBzZXQuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYW55IGxvZ2ljIHRoYXQgbWlnaHQgcG90ZW50aWFsbHkgbWlzaWRlbnRpZnkgYSBkZXZpY2UsIG9yIGFueSBjb2RlIHBhdGhzIHRoYXQgY291bGQgbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yIGluIGEgdmlydHVhbGl6ZWQgb3IgVVNCLWNvbm5lY3RlZCBzY2VuYXJpby4gSSYjMzk7bSBsb29raW5nIGZvciBjbHVlcyBpbiB0aGUgaW5pdGlhbCBzZXR1cCBvZiB0aGlzIGNoaXAgaWRlbnRpZmljYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7LVx1MDAzZWNoaXAuZGV2X2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5OTk4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZToKCioqRmluZGluZyB0aGUgT3JpZ2luIG9mIG10NzZfY2hpcCBhbmQgUmVsYXRlZCBWYXJpYWJsZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGRlZmluaXRpb24gb2YgYG10NzZfY2hpcGAsIGFuZCB1bmRlcnN0YW5kIHdoZXJlIGBkZXYtJmd0O2NoaXBgIGFuZCBgY2hpcF9pZGAgYXJlIGJlaW5nIGFzc2lnbmVkIHRoZWlyIHZhbHVlcy4gVGhpcyB1c3VhbGx5IG1lYW5zIHN0YXJ0aW5nIHdpdGggYSBncmVwIHNlYXJjaCBhY3Jvc3MgdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dC4gSXMgdGhpcyBhIHNwZWNpZmljIGRyaXZlcj8gSXMgYG10NzZfY2hpcGAgYSBzdHJ1Y3R1cmUsIGEgbWFjcm8sIG9yIHNvbWV0aGluZyBlbHNlPyBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgYnJvYWRlciBzZWFyY2ggZm9yIGBtdDc2X2NoaXBgIGFuZCBpdHMgdXNlcy4gVGhlbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBkZXYtJmd0O2NoaXBgICh3aGljaCBpcyBsaWtlbHkgYSBtZW1iZXIgb2YgYSBkZXZpY2Ugc3RydWN0dXJlKSBhbmQgYGNoaXBfaWRgLiBJcyBgY2hpcF9pZGAgc29tZSBraW5kIG9mIGlkZW50aWZpZXI/IElzIGBkZXYtJmd0O2NoaXBgIGEgcG9pbnRlciB0byBzb21ldGhpbmcgZWxzZT8gVW5kZXJzdGFuZGluZyB0aGlzIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgY29uZmlndXJhdGlvbiBmbG93LiBJJiMzOTtsbCBuZWVkIHRvIGZvbGxvdyB0aGUgY29kZSBwYXRocyB3aGVyZSB0aGVzZSBhcmUgdXNlZCBhbmQvb3Igc2V0LCBsb29raW5nIGZvciBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgcHJvYmUgZnVuY3Rpb25zLCBhbmQgYW55IG90aGVyIHBsYWNlcyB3aGVyZSBoYXJkd2FyZSBpZGVudGlmaWNhdGlvbiBvciBzZXR1cCBpcyBsaWtlbHkgb2NjdXJyaW5nLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGVzZSB2YXJpYWJsZXMgcmVsYXRlIGFuZCB3aGVyZSB0aGV5IGFyZSBzZXQgaXMgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRlc2lnbiBhbmQgb3BlcmF0aW9uIG9mIHRoaXMgZHJpdmVyLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X2NoaXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEyMjc9Ym9vbCBtdDc2X3BjaV9hc3BtX3N1cHBvcnRlZChzdHJ1Y3QgcGNpX2RldiAqcGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTIyOTpzdGF0aWMgaW5saW5lIHUxNiBtdDc2X2NoaXAoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjMwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMjYxPXN0YXRpYyBpbmxpbmUgaW50IG10NzZfd2VkX2RtYV9zZXR1cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEyNjg6I2RlZmluZSBtdDc2eHhfY2hpcChkZXYpIG10NzZfY2hpcChcdTAwMjYoKGRldiktXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjY5LSNkZWZpbmUgbXQ3Nnh4X3JldihkZXYpIG10NzZfcmV2KFx1MDAyNigoZGV2KS1cdTAwM2VtdDc2KSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYz0zMTU9c3RhdGljIHZvaWQgbXQ3NjE1X2NhbF9mcmVlX2RhdGEoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0zMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzozMjI6XHRzd2l0Y2ggKG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTMyMy1cdGNhc2UgMHg3NjIyOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jPTE2OTY9aW50IG10NzYxNV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE3MTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYzoxNzExOlx0c3dpdGNoIChtdDc2X2NoaXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNzEyLVx0Y2FzZSAweDc2MjI6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM9MTc0Nz1pbnQgbXQ3NjE1X21jdV9zZXRfZWVwcm9tKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmMtMTc1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jOjE3NjA6XHRzd2l0Y2ggKG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE3NjEtXHRjYXNlIDB4NzYyMjpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MTc1PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5MjUoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMTc2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoxNzc6XHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3OTI1O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE3OC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTE4MD1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTIwKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE4MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MTgyOlx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4NzkyMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xODMtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0xODU9c3RhdGljIGlubGluZSBib29sIGlzX210NzkwMihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xODYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjE4NzpcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc5MDI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMTg4LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MTkwPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5MjIoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMTkxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoxOTI6XHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3OTIyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE5My19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTE5NT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfY29ubmFjMihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xOTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjE5NzpcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc5NjEgfHwgaXNfbXQ3OTIyKGRldikgfHwgaXNfbXQ3OTIwKGRldikgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xOTgtXHRcdFx0XHRpc19tdDc5MDIoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjAxPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2NjMoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjAyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoyMDM6XHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3NjYzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIwNC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTIwNj1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTE1KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIwNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjA4Olx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4NzkxNTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMDktfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yMTE9c3RhdGljIGlubGluZSBib29sIGlzX210NzkxNihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMTIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjIxMzpcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc5MDY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjE0LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjE2PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5ODEoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjE3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoyMTg6XHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3OTgxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIxOS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTIyMT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTg2KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIyMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjIzOlx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4Nzk4NjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMjQtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yMzE9c3RhdGljIGlubGluZSBib29sIGlzX210Nzk5NihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMzIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjIzMzpcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc5OTA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjM0LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjM2PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5OTIoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjM3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoyMzg6XHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3OTkyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIzOS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTI0MT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTkwKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI0Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjQzOlx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4Nzk5MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNDQtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yNTE9c3RhdGljIGlubGluZSBib29sIGlzX210NzYyMihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjI1NjpcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MjI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjU3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjU5PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MTUoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjYwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoyNjE6XHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3NjE1IHx8IG10NzZfY2hpcChkZXYpID09IDB4NzYxMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNjItfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yNjQ9c3RhdGljIGlubGluZSBib29sIGlzX210NzYxMShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNjUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjI2NjpcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MTE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjY3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9Mjc0PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2X2Z3X3R4cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNzUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjI3NjpcdHN3aXRjaCAobXQ3Nl9jaGlwKGRldikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNzctXHRjYXNlIDB4Nzk2MTpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaD0zMT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3NjEwZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaC0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oOjM2Olx0cmV0dXJuIG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikgPT0gMHg3NjEwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmgtMzctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oPTM5PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MzAoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaC00MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaDo0MTpcdHJldHVybiBtdDc2X2NoaXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID09IDB4NzYzMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oLTQyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2kuYz05NT1zdGF0aWMgaW50IG10NzZ4MGVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgYm9vbCByZXN1bWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmMtMTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmM6MTIwOlx0aWYgKG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikgPT0gMHg3NjEwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2kuYy0xMjEtXHRcdHUxNiB2YWw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpX21jdS5jPTEzPXN0YXRpYyBpbnQgbXQ3NngwZV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpX21jdS5jLTE0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaV9tY3UuYzoxNTpcdGJvb2wgaXNfY29tYm9fY2hpcCA9IG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikgIT0gMHg3NjEwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpX21jdS5jLTE2LVx0dTMyIHZhbCwgaWxtX2xlbiwgZGxtX2xlbiwgb2Zmc2V0ID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaD0yMjc9c3RhdGljIGlubGluZSBib29sIGlzX210NzZ4MChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oLTIyOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaDoyMjk6XHRyZXR1cm4gbXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSA9PSAweDc2MTAgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oOjIzMDpcdCAgICAgICBtdDc2X2NoaXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID09IDB4NzYzMCB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmg6MjMxOlx0ICAgICAgIG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikgPT0gMHg3NjUwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmgtMjMyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaD0yMzQ9c3RhdGljIGlubGluZSBib29sIGlzX210NzZ4MihzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oLTIzNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaDoyMzY6XHRyZXR1cm4gbXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSA9PSAweDc2MTIgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oOjIzNzpcdCAgICAgICBtdDc2X2NoaXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID09IDB4NzYzMiB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmg6MjM4Olx0ICAgICAgIG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikgPT0gMHg3NjYyIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaDoyMzk6XHQgICAgICAgbXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSA9PSAweDc2MDI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaC0yNDAtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9kZnMuYz04MjQ9dm9pZCBtdDc2eDAyX2Rmc19pbml0X3BhcmFtcyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfZGZzLmMtODM5LVx0XHRtdDc2X3dyKGRldiwgTVRfQkJQKERGUywgMSksIDB4Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfZGZzLmM6ODQwOlx0XHRpZiAobXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSA9PSAweDc2MTAgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9kZnMuYzo4NDE6XHRcdCAgICBtdDc2X2NoaXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID09IDB4NzYzMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9kZnMuYy04NDItXHRcdFx0bXQ3Nl93cihkZXYsIE1UX0JCUChJQkksIDExKSwgMHhmZGU4MDgxKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9tdDc2eDIuaD0yNj1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3NjEyKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngyLmgtMjcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngyLmg6Mjg6XHRyZXR1cm4gbXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSA9PSAweDc2MTI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9tdDc2eDIuaC0yOS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYz04OT1tdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTMyICpudW0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTkwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6OTE6XHRzd2l0Y2ggKG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtOTItXHRjYXNlIDB4NzkxNTpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTMwMj1zdGF0aWMgc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqbXQ3OTE1X2NvcmVkdW1wX2J1aWxkKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zMzgtXHRkdW1wLVx1MDAzZXR2X25zZWMgPSBjcmFzaF9kYXRhLVx1MDAzZXRpbWVzdGFtcC50dl9uc2VjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozMzk6XHRkdW1wLVx1MDAzZWRldmljZV9pZCA9IG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM0MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYz02Nz1zdGF0aWMgY2hhciAqbXQ3OTE1X2VlcHJvbV9uYW1lKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYy02OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYzo2OTpcdHN3aXRjaCAobXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmMtNzAtXHRjYXNlIDB4NzkxNTpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYz0zNjM9bXQ3OTE1X2VlcHJvbV9oYXNfYmFja2dyb3VuZF9yYWRhcihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5jLTM2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5jOjM2OTpcdHN3aXRjaCAobXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmMtMzcwLVx0Y2FzZSAweDc5MTU6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTU1NT1tdDc5MTVfaW5pdF9sZWRfbXV4KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTU2MC1cdGlmIChkZXYtXHUwMDNlZGJkY19zdXBwb3J0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6NTYxOlx0XHRzd2l0Y2ggKG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01NjItXHRcdGNhc2UgMHg3OTE1OlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01ODMtXHR9IGVsc2UgaWYgKGRldi1cdTAwM2VtcGh5LmxlZHMucGluKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6NTg0Olx0XHRzd2l0Y2ggKG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01ODUtXHRcdGNhc2UgMHg3OTE1OlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy02MDAtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjYwMTpcdFx0c3dpdGNoIChtdDc2X2NoaXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNjAyLVx0XHRjYXNlIDB4NzkxNTpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0xMS1cdGNoYXIgKl9mdztcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MTI6XHRzd2l0Y2ggKG10NzZfY2hpcChcdTAwMjYoX2RldiktXHUwMDNlbXQ3NikpIHtcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMTMtXHRjYXNlIDB4NzkxNTpcdFx0XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg9NDUxPXN0YXRpYyBpbmxpbmUgY2hhciAqbXQ3OTJ4X3JhbV9uYW1lKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTQ1Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oOjQ1MzpcdHN3aXRjaCAobXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC00NTQtXHRjYXNlIDB4NzkwMjpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oPTQ2Nz1zdGF0aWMgaW5saW5lIGNoYXIgKm10NzkyeF9wYXRjaF9uYW1lKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTQ2OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oOjQ2OTpcdHN3aXRjaCAobXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC00NzAtXHRjYXNlIDB4NzkwMjpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jPTQ4PW10Nzk5Nl9jb3JlZHVtcF9nZXRfbWVtX2xheW91dChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCB1MzIgKm51bSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNDkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo1MDpcdHN3aXRjaCAobXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy01MS1cdGNhc2UgTVQ3OTk2X0RFVklDRV9JRDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jPTE2Mj1zdGF0aWMgc3RydWN0IG10Nzk5Nl9jb3JlZHVtcCAqbXQ3OTk2X2NvcmVkdW1wX2J1aWxkKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0xOTgtXHRkdW1wLVx1MDAzZXR2X25zZWMgPSBjcmFzaF9kYXRhLVx1MDAzZXRpbWVzdGFtcC50dl9uc2VjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoxOTk6XHRkdW1wLVx1MDAzZWRldmljZV9pZCA9IG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTIwMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYz00Nj1zdGF0aWMgdm9pZCBtdDc5OTZfZG1hX2NvbmZpZyhzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6Njg6XHRzd2l0Y2ggKG10NzZfY2hpcChcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTY5LVx0Y2FzZSBNVDc5OTJfREVWSUNFX0lEOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jPTI3PXN0YXRpYyBjaGFyICptdDc5OTZfZWVwcm9tX25hbWUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTI4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jOjI5Olx0c3dpdGNoIChtdDc2X2NoaXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zMC1cdGNhc2UgTVQ3OTkyX0RFVklDRV9JRDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYz0zODk9Ym9vbCBtdDc5OTZfZWVwcm9tX2hhc19iYWNrZ3JvdW5kX3JhZGFyKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zOTAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM6MzkxOlx0c3dpdGNoIChtdDc2X2NoaXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zOTItXHRjYXNlIE1UNzk5Nl9ERVZJQ0VfSUQ6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTExODI9c3RhdGljIGludCBtdDc5OTZfdmFyaWFudF90eXBlX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTE4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxMTg3Olx0c3dpdGNoIChtdDc2X2NoaXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTE4OC1cdGNhc2UgTVQ3OTk2X0RFVklDRV9JRDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0xNC1cdGNoYXIgKl9mdztcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MTU6XHRzd2l0Y2ggKG10NzZfY2hpcChcdTAwMjYoX2RldiktXHUwMDNlbXQ3NikpIHtcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMTYtXHRjYXNlIE1UNzk5Ml9ERVZJQ0VfSUQ6XHRcdFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz00MTA4PW10Nzk5Nl9tY3VfZ2V0X2NhbF9mcmVlX2RhdGEoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy00MTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6NDE2MzpcdHN3aXRjaCAobXQ3Nl9jaGlwKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNDE2NC1cdGNhc2UgTVQ3OTk2X0RFVklDRV9JRDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jPTkxMD1tdDc2dV9hY190b19od3Eoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLCB1OCBxaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy05MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jOjkxNDpcdHN3aXRjaCAobXQ3Nl9jaGlwKGRldikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmMtOTE1LVx0Y2FzZSAweDc2NjM6IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg1NzMKCQkJCQkJCW91dHB1dDogMTk2CgkJCQkJCQl0aG91Z2h0czogNzA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIE1UNzYxNSBEcml2ZXIgUGF0Y2ggUmVhY2hhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBpbnRvIHRoaXMgcGF0Y2ggYW5kIGRldGVybWluZWQgaXRzIHJlYWNoYWJpbGl0eSBmb3IgZnV6emluZy4gVGhlIGtleSBpcyB0aGF0IHRoZSBtb2RpZmljYXRpb24gYWZmZWN0cyB0aGUgYG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5YCBmdW5jdGlvbiwgZm91bmQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuY2AuCgpSaWdodCBvZmYgdGhlIGJhdCwgdGhlIGZ1bmN0aW9uIGJlZ2lucyB3aXRoIGEgY2hlY2sgdXNpbmcgYGlzX210NzYxNSgmYW1wO2Rldi0mZ3Q7bXQ3NilgLiBUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBpc3N1ZS4gVGhpcyBmdW5jdGlvbiAqb25seSogcmV0dXJucyB0cnVlIGZvciB0aGUgTWVkaWFUZWsgTVQ3NjE1IGFuZCBNVDc2MTEgY2hpcHNldHMsIHNwZWNpZmljYWxseSB0aGUgKlBDSWUqIHZhcmlhbnRzLgoKTm93LCBjb25zaWRlciB0aGUgZW52aXJvbm1lbnQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aC4gU3l6a2FsbGVyIGFuZCBzdGFuZGFyZCB2aXJ0dWFsaXplZCBzZXR1cHMgbGlrZSBRRU1VIGFuZCBHQ0UgKmRvbiYjMzk7dCogZW11bGF0ZSB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcmVxdWlyZWQgYnkgdGhlc2UgUENJZSB3aXJlbGVzcyBOSUNzLiBUaGVzZSBhcmUgcmVhbCwgdGFuZ2libGUgUENJZSBjYXJkcyB0aGF0IG5lZWQgdG8gYmUgcGx1Z2dlZCBpbnRvIGEgcGh5c2ljYWwgc3lzdGVtLiBUaGVyZSYjMzk7cyBubyBlbXVsYXRpb24gZm9yIHRoYXQgbGV2ZWwgb2YgZGV0YWlsLgoKQ29uc2VxdWVudGx5LCBhbnkgVVNCIG9yIFNESU8gZGV2aWNlcyB1c2luZyBNZWRpYVRlayBjaGlwcyAobGlrZSB0aGUgTVQ3NjYzVSkgd2lsbCBpbW1lZGlhdGVseSBnZXQgcmVqZWN0ZWQuIFRoZWlyIGNoaXAgSURzIHdpbGwgdHJpZ2dlciB0aGUgYCFpc19tdDc2MTVgIGNvbmRpdGlvbiBhbmQgbGVhZCB0byBhIGAtRU9QTk9UU1VQUGAgcmV0dXJuICpiZWZvcmUqIGhpdHRpbmcgYW55IG9mIHRoZSBtb2RpZmllZCBjb2RlLCBpbmNsdWRpbmcgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCBEQkRDIGNsZWFudXAgcGF0aHMuIFNvLCB0aGF0IG1vZGlmaWVkIHNlY3Rpb24sIHRoZSB0YXJnZXQgb2YgdGhpcyBwYXRjaCwgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIHVuZGVyIHRob3NlIGNvbmRpdGlvbnMuCgpFc3NlbnRpYWxseSwgdGhlIHBhdGNoIHRhcmdldHMgaGFyZHdhcmUgdGhhdCBpcyBmdW5kYW1lbnRhbGx5IHVuYXZhaWxhYmxlIGluIHRoZSB0YXJnZXQgZnV6emluZyBlbnZpcm9ubWVudC4gVGhlIHBhdGNoIHJlcXVpcmVzIHRoYXQgTWVkaWFUZWsgTVQ3NjE1L01UNzYxMSBQQ0llIGhhcmR3YXJlIGlzIGluc3RhbnRpYXRlZCwgd2hpY2ggaXMgaW1wb3NzaWJsZSBpbiBvdXIgY3VycmVudCBzZXR1cC4KClRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLCBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBmdW5jdGlvbiBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMgZXhwbGljaXRseSBjaGVja3MgYGlmICghaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSkgcmV0dXJuIC1FT1BOT1RTVVBQO2AgYmVmb3JlIGV4ZWN1dGluZyBhbnkgbW9kaWZpZWQgbG9naWMuIFRoZSBpc19tdDc2MTUgY2hlY2sgb25seSBzdWNjZWVkcyBmb3IgTVQ3NjE1IGFuZCBNVDc2MTEgZGV2aWNlcywgd2hpY2ggYXJlIHBoeXNpY2FsIFBDSWUgd2lyZWxlc3MgTklDcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMuIFVTQi9TRElPIHZhcmlhbnRzIChzdWNoIGFzIE1UNzY2MykgYmFpbCBvdXQgaW1tZWRpYXRlbHkgYXQgdGhlIGlzX210NzYxNSBjaGVjayBhbmQgY2Fubm90IGV4ZWN1dGUgdGhlIG1vZGlmaWVkIGNvZGUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgZnVuY3Rpb24gbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jIGV4cGxpY2l0bHkgY2hlY2tzIGBpZiAoIWlzX210NzYxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHJldHVybiAtRU9QTk9UU1VQUDtgIGJlZm9yZSBleGVjdXRpbmcgYW55IG1vZGlmaWVkIGxvZ2ljLiBUaGUgaXNfbXQ3NjE1IGNoZWNrIG9ubHkgc3VjY2VlZHMgZm9yIE1UNzYxNSBhbmQgTVQ3NjExIGRldmljZXMsIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIHdpcmVsZXNzIE5JQ3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBVU0IvU0RJTyB2YXJpYW50cyAoc3VjaCBhcyBNVDc2NjMpIGJhaWwgb3V0IGltbWVkaWF0ZWx5IGF0IHRoZSBpc19tdDc2MTUgY2hlY2sgYW5kIGNhbm5vdCBleGVjdXRlIHRoZSBtb2RpZmllZCBjb2RlLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjQ3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0NjowMy4yMjc3MDU4MjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDEyMzMzMDc3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5IGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYyBleHBsaWNpdGx5IGNoZWNrcyBgaWYgKCFpc19tdDc2MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHJldHVybiAtRU9QTk9UU1VQUDtgIGJlZm9yZSBleGVjdXRpbmcgYW55IG1vZGlmaWVkIGxvZ2ljLiBUaGUgaXNfbXQ3NjE1IGNoZWNrIG9ubHkgc3VjY2VlZHMgZm9yIE1UNzYxNSBhbmQgTVQ3NjExIGRldmljZXMsIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIHdpcmVsZXNzIE5JQ3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBVU0IvU0RJTyB2YXJpYW50cyAoc3VjaCBhcyBNVDc2NjMpIGJhaWwgb3V0IGltbWVkaWF0ZWx5IGF0IHRoZSBpc19tdDc2MTUgY2hlY2sgYW5kIGNhbm5vdCBleGVjdXRlIHRoZSBtb2RpZmllZCBjb2RlLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjAzLjIyNzcxMTMxNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzMTMzODIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmQwOTU5NjE5YWU4MzIxZjRiMjBiMzA0MzI0YjE3Y2MxZmEzMGEzNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IFNlcCAxMCAyMjo0NjowMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmNcXG5pbmRleCA0MmUxMWJhMTIwNmVlLi4wMmU1MWIyZDQyZWQ4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuY1xcbkBAIC01NDIsOCArNTQyLDEwIEBAIGludCBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbiBcXG4gXFx0bXQ3NjE1X2NhcF9kYmRjX2VuYWJsZShkZXYpO1xcbiBcXHRtcGh5ID0gbXQ3Nl9hbGxvY19waHkoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Niwgc2l6ZW9mKCpwaHkpLCBcXHUwMDI2bXQ3NjE1X29wcywgTVRfQkFORDEpO1xcbi1cXHRpZiAoIW1waHkpXFxuLVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHRpZiAoIW1waHkpIHtcXG4rXFx0XFx0cmV0ID0gLUVOT01FTTtcXG4rXFx0XFx0Z290byBlcnJvcjtcXG4rXFx0fVxcbiBcXG4gXFx0cGh5ID0gbXBoeS1cXHUwMDNlcHJpdjtcXG4gXFx0cGh5LVxcdTAwM2VkZXYgPSBkZXY7XFxuQEAgLTU3Myw3ICs1NzUsNyBAQCBpbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4gXFxuIFxcdHJldCA9IG10NzZfZWVwcm9tX292ZXJyaWRlKG1waHkpO1xcbiBcXHRpZiAocmV0KVxcbi1cXHRcXHRyZXR1cm4gcmV0O1xcbitcXHRcXHRnb3RvIGVycm9yX2ZyZWVfaHc7XFxuIFxcbiBcXHQvKiBzZWNvbmQgcGh5IGNhbiBvbmx5IGhhbmRsZSA1IEdIeiAqL1xcbiBcXHRtcGh5LVxcdTAwM2VjYXAuaGFzXzVnaHogPSB0cnVlO1xcbkBAIC01OTEsNyArNTkzLDE0IEBAIGludCBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbiBcXHRyZXQgPSBtdDc2X3JlZ2lzdGVyX3BoeShtcGh5LCB0cnVlLCBtdDc2X3JhdGVzLFxcbiBcXHRcXHRcXHRcXHRBUlJBWV9TSVpFKG10NzZfcmF0ZXMpKTtcXG4gXFx0aWYgKHJldClcXG4tXFx0XFx0aWVlZTgwMjExX2ZyZWVfaHcobXBoeS1cXHUwMDNlaHcpO1xcbitcXHRcXHRnb3RvIGVycm9yX2ZyZWVfaHc7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rXFxuK2Vycm9yX2ZyZWVfaHc6XFxuK1xcdGllZWU4MDIxMV9mcmVlX2h3KG1waHktXFx1MDAzZWh3KTtcXG4rZXJyb3I6XFxuK1xcdG10NzYxNV9jYXBfZGJkY19kaXNhYmxlKGRldik7XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjAzLjY2MTU1NzcxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo3OTY4OTQ2NjU3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgZnVuY3Rpb24gbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jIGV4cGxpY2l0bHkgY2hlY2tzIGBpZiAoIWlzX210NzYxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkgcmV0dXJuIC1FT1BOT1RTVVBQO2AgYmVmb3JlIGV4ZWN1dGluZyBhbnkgbW9kaWZpZWQgbG9naWMuIFRoZSBpc19tdDc2MTUgY2hlY2sgb25seSBzdWNjZWVkcyBmb3IgTVQ3NjE1IGFuZCBNVDc2MTEgZGV2aWNlcywgd2hpY2ggYXJlIHBoeXNpY2FsIFBDSWUgd2lyZWxlc3MgTklDcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMuIFVTQi9TRElPIHZhcmlhbnRzIChzdWNoIGFzIE1UNzY2MykgYmFpbCBvdXQgaW1tZWRpYXRlbHkgYXQgdGhlIGlzX210NzYxNSBjaGVjayBhbmQgY2Fubm90IGV4ZWN1dGUgdGhlIG1vZGlmaWVkIGNvZGUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmZDA5NTk2MTlhZTgzMjFmNGIyMGIzMDQzMjRiMTdjYzFmYTMwYTM2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMjI6NDY6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmNcbmluZGV4IDQyZTExYmExMjA2ZWUuLjAyZTUxYjJkNDJlZDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuY1xuQEAgLTU0Miw4ICs1NDIsMTAgQEAgaW50IG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG4gXG4gXHRtdDc2MTVfY2FwX2RiZGNfZW5hYmxlKGRldik7XG4gXHRtcGh5ID0gbXQ3Nl9hbGxvY19waHkoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHNpemVvZigqcGh5KSwgXHUwMDI2bXQ3NjE1X29wcywgTVRfQkFORDEpO1xuLVx0aWYgKCFtcGh5KVxuLVx0XHRyZXR1cm4gLUVOT01FTTtcbitcdGlmICghbXBoeSkge1xuK1x0XHRyZXQgPSAtRU5PTUVNO1xuK1x0XHRnb3RvIGVycm9yO1xuK1x0fVxuIFxuIFx0cGh5ID0gbXBoeS1cdTAwM2Vwcml2O1xuIFx0cGh5LVx1MDAzZWRldiA9IGRldjtcbkBAIC01NzMsNyArNTc1LDcgQEAgaW50IG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG4gXG4gXHRyZXQgPSBtdDc2X2VlcHJvbV9vdmVycmlkZShtcGh5KTtcbiBcdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4rXHRcdGdvdG8gZXJyb3JfZnJlZV9odztcbiBcbiBcdC8qIHNlY29uZCBwaHkgY2FuIG9ubHkgaGFuZGxlIDUgR0h6ICovXG4gXHRtcGh5LVx1MDAzZWNhcC5oYXNfNWdoeiA9IHRydWU7XG5AQCAtNTkxLDcgKzU5MywxNCBAQCBpbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbiBcdHJldCA9IG10NzZfcmVnaXN0ZXJfcGh5KG1waHksIHRydWUsIG10NzZfcmF0ZXMsXG4gXHRcdFx0XHRBUlJBWV9TSVpFKG10NzZfcmF0ZXMpKTtcbiBcdGlmIChyZXQpXG4tXHRcdGllZWU4MDIxMV9mcmVlX2h3KG1waHktXHUwMDNlaHcpO1xuK1x0XHRnb3RvIGVycm9yX2ZyZWVfaHc7XG4rXG4rXHRyZXR1cm4gMDtcbitcbitlcnJvcl9mcmVlX2h3OlxuK1x0aWVlZTgwMjExX2ZyZWVfaHcobXBoeS1cdTAwM2Vodyk7XG4rZXJyb3I6XG4rXHRtdDc2MTVfY2FwX2RiZGNfZGlzYWJsZShkZXYpO1xuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0NjowMy42NjE1NTkwOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcxMjY4NzEwNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRldGVybWluZSB0aGUgdGFyZ2V0IGVudmlyb25tZW50OiBpcyB0aGlzIHNvbWV0aGluZyB0aGF0J3MgZ29pbmcgdG8gd29yayBzZWFtbGVzc2x5IGluIG15IHR5cGljYWwgdmlydHVhbGl6ZWQgc2V0dXBzIOKAkyB0aGluayBRRU1VIG9yIEdDRSDigJMgb3IgYXJlIHdlIGRlYWxpbmcgd2l0aCBhIGRyaXZlciB0aGF0J3MgZnVuZGFtZW50YWxseSB0aWVkIHRvIHBoeXNpY2FsIGhhcmR3YXJlPyBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIGNhbiBhY3R1YWxseSB0ZXN0IHRoaXMuXG5cblRoZSBwYXRjaCBpdHNlbGYgdG91Y2hlcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIGZ1bmN0aW9uLiBUaGF0IGdpdmVzIG1lIGEgc3RhcnRpbmcgcG9pbnQuIE5vdywgSSBuZWVkIHRvIGdldCBhIGJyb2FkZXIgcGljdHVyZS4gSSdtIGdvaW5nIHRvIHNlYXJjaCB0aGUgY29kZWJhc2UgZm9yIFwibXQ3NjE1XCIgdG8gZmlndXJlIG91dCB3aGF0IHR5cGUgb2YgYmVhc3QgdGhpcyBkcml2ZXIgYWN0dWFsbHkgaXMuIElzIGl0IFBDST8gVVNCPyBQbGF0Zm9ybS1zcGVjaWZpYywgbGlrZSBhbiBTb0MgaW50ZWdyYXRpb24/IEtub3dpbmcgdGhhdCB3aWxsIHNpZ25pZmljYW50bHkgaW1wYWN0IG15IHVuZGVyc3RhbmRpbmcgb2YgcG90ZW50aWFsIGRlcGVuZGVuY2llcywgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLCBhbmQgdGVzdGluZyBwcm9jZWR1cmVzLiBMZXQncyBzZWUgd2hhdCB0aGUgY29kZWJhc2UgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI2MSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjEwLjc4ODQzMzgxMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDkyNTE1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2MTVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDQ0NjUgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz00Nj1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQ3OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNDgtc291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT00Mz1vYmotJChDT05GSUdfTVQ3NjAzRSkgKz0gbXQ3NjAzL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX01UNzYxNV9DT01NT04pICs9IG10NzYxNS9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTQ1LW9iai0kKENPTkZJR19NVDc5MTVFKSArPSBtdDc5MTUvXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9NYWtlZmlsZS0yLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01UNzYxNV9DT01NT04pICs9IG10NzYxNS1jb21tb24ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX01UNzYxNUUpICs9IG10NzYxNWUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlLTUtb2JqLSQoQ09ORklHX01UNzY2M19VU0JfU0RJT19DT01NT04pICs9IG10NzY2My11c2Itc2Rpby1jb21tb24ub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU9OT1DRkxBR1NfdHJhY2UubyA6PSAtSSQoc3JjKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlOjExOm10NzYxNS1jb21tb24teSA6PSBtYWluLm8gaW5pdC5vIG1jdS5vIGVlcHJvbS5vIG1hYy5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9NYWtlZmlsZS0xMi1cXHRcXHQgICBkZWJ1Z2ZzLm8gdHJhY2Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlOjEzOm10NzYxNS1jb21tb24tJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlOjE1Om10NzYxNWUteSA6PSBwY2kubyBwY2lfaW5pdC5vIGRtYS5vIHBjaV9tYWMubyBtbWlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9NYWtlZmlsZToxNjptdDc2MTVlLSQoQ09ORklHX01UNzYyMl9XTUFDKSArPSBzb2Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlLTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjM6I2luY2x1ZGUgXFxcIm10NzYxNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz01PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NjptdDc2MTVfcmVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy03LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6ODpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTA6XFx0bXQ3NjE1X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTEtXFx0bXQ3Nl93cihkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgdmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTI6XFx0bXQ3NjE1X211dGV4X3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxODptdDc2MTVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMDpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIyOlxcdG10NzYxNV9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIzLVxcdCp2YWwgPSBtdDc2X3JyKGRldiwgZGV2LVxcdTAwM2VtdDc2LmRlYnVnZnNfcmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjQ6XFx0bXQ3NjE1X211dGV4X3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjI5OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3NjE1X3JlZ19nZXQsIG10NzYxNV9yZWdfc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zMC1cXHRcXHRcXHQgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0zMj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMzOm10NzYxNV9yYWRhcl9wYXR0ZXJuX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjM1OlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zNi1cXHRpbnQgZXJyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6Mzg6XFx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzktXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0MTpcXHRtdDc2MTVfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0MjpcXHRlcnIgPSBtdDc2MTVfbWN1X3JkZF9zZW5kX3BhdHRlcm4oZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDM6XFx0bXQ3NjE1X211dGV4X3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9NDg9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmFkYXJfcGF0dGVybiwgTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDk6XFx0XFx0XFx0IG10NzYxNV9yYWRhcl9wYXR0ZXJuX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTE6c3RhdGljIGludCBtdDc2MTVfY29uZmlnKHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTUyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTM6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU0LVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1NjpcXHRtdDc2MTVfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01Ny1cXHRyZXQgPSBtdDc2X2Nvbm5hY19tY3VfY2hpcF9jb25maWcoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU4OlxcdG10NzYxNV9tdXRleF9yZWxlYXNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo2MzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19jb25maWcsIE5VTEwsIG10NzYxNV9jb25maWcsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTY1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NjY6bXQ3NjE1X3Njc19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNjcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo2ODpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6Njk6XFx0c3RydWN0IG10NzYxNV9waHkgKmV4dF9waHk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo3MTpcXHRpZiAoIW10NzYxNV93YWl0X2Zvcl9tY3VfaW5pdChkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy03Mi1cXHRcXHRyZXR1cm4gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjc0OlxcdG10NzYxNV9tYWNfc2V0X3NjcyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHksIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjc1OlxcdGV4dF9waHkgPSBtdDc2MTVfZXh0X3BoeShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy03Ni1cXHRpZiAoZXh0X3BoeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6Nzc6XFx0XFx0bXQ3NjE1X21hY19zZXRfc2NzKGV4dF9waHksIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTc4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTgyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6ODM6bXQ3NjE1X3Njc19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTg0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6ODU6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTg2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo5MjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19zY3MsIG10NzYxNV9zY3NfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo5MzpcXHRcXHRcXHQgbXQ3NjE1X3Njc19zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTk1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6OTY6bXQ3NjE1X3BtX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy05Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjk4OlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy05OS1cXHRzdHJ1Y3QgbXQ3Nl9jb25uYWNfcG0gKnBtID0gXFx1MDAyNmRldi1cXHUwMDNlcG07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxMDI6XFx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTAzLVxcdFxcdHJldHVybiAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjEwNTpcXHRpZiAoIW10NzYxNV9maXJtd2FyZV9vZmZsb2FkKGRldikgfHwgbXQ3Nl9pc191c2IoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTEwNi1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTM2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTM3Om10NzYxNV9wbV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTEzOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjEzOTpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTQwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTQ2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtLCBtdDc2MTVfcG1fZ2V0LCBtdDc2MTVfcG1fc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTQ4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTQ5Om10NzYxNV9wbV9zdGF0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE1MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjE1MTpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXFx1MDAzZXByaXZhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xNTItXFx0c3RydWN0IG10NzZfY29ubmFjX3BtICpwbSA9IFxcdTAwMjZkZXYtXFx1MDAzZXBtO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTE2OD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjE2OTptdDc2MTVfcG1faWRsZV90aW1lb3V0X3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xNzAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxNzE6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE3Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0xNzg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxNzk6bXQ3NjE1X3BtX2lkbGVfdGltZW91dF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE4MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjE4MTpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTgyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTg4OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtX2lkbGVfdGltZW91dCwgbXQ3NjE1X3BtX2lkbGVfdGltZW91dF9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjE4OTpcXHRcXHRcXHQgbXQ3NjE1X3BtX2lkbGVfdGltZW91dF9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0xOTE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxOTI6bXQ3NjE1X2RiZGNfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE5My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjE5NDpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxOTY6XFx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTk3LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE5OS1cXHRpZiAodmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMDA6XFx0XFx0bXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjAxLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjAyOlxcdFxcdG10NzYxNV91bnJlZ2lzdGVyX2V4dF9waHkoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTIwNz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIwODptdDc2MTVfZGJkY19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIwOS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIxMDpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMTI6XFx0KnZhbCA9ICEhbXQ3NjE1X2V4dF9waHkoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjE3OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2RiZGMsIG10NzYxNV9kYmRjX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjE4OlxcdFxcdFxcdCBtdDc2MTVfZGJkY19zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yMjA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMjE6bXQ3NjE1X2Z3X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMjIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMjM6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjI1OlxcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIyNi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIzMDpcXHRtdDc2MTVfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMzE6XFx0bXQ3NjE1X21jdV9md19sb2dfMl9ob3N0KGRldiwgZGV2LVxcdTAwM2Vmd19kZWJ1ZyA/IDIgOiAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjMyOlxcdG10NzYxNV9tdXRleF9yZWxlYXNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIzMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yMzc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMzg6bXQ3NjE1X2Z3X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjM5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjQwOlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyNDc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWcsIG10NzYxNV9md19kZWJ1Z19nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjI0ODpcXHRcXHRcXHQgbXQ3NjE1X2Z3X2RlYnVnX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTI1MD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjI1MTptdDc2MTVfcmVzZXRfdGVzdF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjUyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjUzOlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNTQtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyNTY6XFx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjU3LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjY1OlxcdG10NzYxNV9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI2Ni1cXHRtdDc2X3R4X3F1ZXVlX3NrYl9yYXcoZGV2LCBkZXYtXFx1MDAzZW1waHkucV90eFswXSwgc2tiLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjY3OlxcdG10NzYxNV9tdXRleF9yZWxlYXNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yNzI9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXRfdGVzdCwgTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjczOlxcdFxcdFxcdCBtdDc2MTVfcmVzZXRfdGVzdF9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yNzU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6Mjc2Om10NzYxNV9hbXBkdV9zdGF0X3JlYWRfcGh5KHN0cnVjdCBtdDc2MTVfcGh5ICpwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI3Ny1cXHRcXHRcXHQgICBzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI3OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjI3OTpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjgwLVxcdHUzMiByZWcgPSBpc19tdDc2NjMoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgPyBNVF9NSUJfQVJORygwKSA6IE1UX0FHR19BU1JDUjA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MzExPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzEyOm10NzYxNV9hbXBkdV9zdGF0X3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zMTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozMTQ6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGZpbGUtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTMxNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzE2OlxcdG10NzYxNV9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTMxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzE4OlxcdG10NzYxNV9hbXBkdV9zdGF0X3JlYWRfcGh5KFxcdTAwMjZkZXYtXFx1MDAzZXBoeSwgZmlsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMxOTpcXHRtdDc2MTVfYW1wZHVfc3RhdF9yZWFkX3BoeShtdDc2MTVfZXh0X3BoeShkZXYpLCBmaWxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozMjE6XFx0bXQ3NjE1X211dGV4X3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzIyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTMyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzI2OkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc2MTVfYW1wZHVfc3RhdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTMyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MzI4PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjMyOTptdDc2MTVfcmFkaW9fcmVhZF9waHkoc3RydWN0IG10NzYxNV9waHkgKnBoeSwgc3RydWN0IHNlcV9maWxlICpzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zMzAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozMzE6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVxcdTAwM2Vwcml2YXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzMyLVxcdGJvb2wgZXh0X3BoeSA9IHBoeSAhPSBcXHUwMDI2ZGV2LVxcdTAwM2VwaHk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MzQzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzQ0Om10NzYxNV9yYWRpb19yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzQ1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzQ2OlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cXHUwMDNlcHJpdmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzQ4OlxcdG10NzYxNV9yYWRpb19yZWFkX3BoeShcXHUwMDI2ZGV2LVxcdTAwM2VwaHksIHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozNDk6XFx0bXQ3NjE1X3JhZGlvX3JlYWRfcGh5KG10NzYxNV9leHRfcGh5KGRldiksIHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zNTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MzU0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzU1Om10NzYxNV9xdWV1ZXNfYWNxKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzU2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzU3OlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cXHUwMDNlcHJpdmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM1OC1cXHRpbnQgaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozNjA6XFx0bXQ3NjE1X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzYxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6Mzg1OlxcdG10NzYxNV9tdXRleF9yZWxlYXNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM4Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0zOTA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzozOTE6bXQ3NjE1X3F1ZXVlc19yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzkyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MzkzOlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cXHUwMDNlcHJpdmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM5NC1cXHRzdHJ1Y3Qge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTQxNj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQxNzptdDc2MTVfcmZfcmVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00MTgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0MTk6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDIxOlxcdG10NzYxNV9yZl93cihkZXYsIGRldi1cXHUwMDNlZGVidWdmc19yZl93ZiwgZGV2LVxcdTAwM2VkZWJ1Z2ZzX3JmX3JlZywgdmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDIyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTQyNj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQyNzptdDc2MTVfcmZfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDI4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDI5OlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00MzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQzMTpcXHQqdmFsID0gbXQ3NjE1X3JmX3JyKGRldiwgZGV2LVxcdTAwM2VkZWJ1Z2ZzX3JmX3dmLCBkZXYtXFx1MDAzZWRlYnVnZnNfcmZfcmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDMyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDM2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JmX3JlZywgbXQ3NjE1X3JmX3JlZ19nZXQsIG10NzYxNV9yZl9yZWdfc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00MzctXFx0XFx0XFx0IFxcXCIweCUwOGxseFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9NDM5PXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjQ0MDptdDc2MTVfZXh0X21hY19hZGRyX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00NDEtXFx0XFx0XFx0IHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00NDIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0NDM6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDQ0LVxcdHUzMiBsZW4gPSAzMiAqICgoRVRIX0FMRU4gKiAzKSArIDQpICsgMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz00NzM9c3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDc0Om10NzYxNV9leHRfbWFjX2FkZHJfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1c2VyYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00NzUtXFx0XFx0XFx0ICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDc2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDc3OlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQ3OC1cXHR1bnNpZ25lZCBsb25nIGlkeCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9NTI2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfZXh0X21hY19hZGRyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTUyOC1cXHQubGxzZWVrID0gZ2VuZXJpY19maWxlX2xsc2VlayxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTI5OlxcdC5yZWFkID0gbXQ3NjE1X2V4dF9tYWNfYWRkcl9yZWFkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1MzA6XFx0LndyaXRlID0gbXQ3NjE1X2V4dF9tYWNfYWRkcl93cml0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTMxLVxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTUzNT1tdDc2NjNzX3NjaGVkX3F1b3RhX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01MzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1Mzc6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVxcdTAwM2Vwcml2YXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTM4LVxcdHN0cnVjdCBtdDc2X3NkaW8gKnNkaW8gPSBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnNkaW87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1NDg6aW50IG10NzYxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU1NjpcXHRpZiAoaXNfbXQ3NjE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NTctXFx0XFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJ4bWl0LXF1ZXVlc1xcXCIsIGRpcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTU4OlxcdFxcdFxcdFxcdFxcdCAgICBtdDc2MTVfcXVldWVzX3JlYWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NTktXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU2Mi1cXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcImFjcVxcXCIsIGRpcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NTYzOlxcdFxcdFxcdFxcdCAgICBtdDc2MTVfcXVldWVzX2FjcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU2NDpcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJhbXBkdV9zdGF0XFxcIiwgMDQwMCwgZGlyLCBkZXYsIFxcdTAwMjZtdDc2MTVfYW1wZHVfc3RhdF9mb3BzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTY1LVxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInNjc1xcXCIsIDA2MDAsIGRpciwgZGV2LCBcXHUwMDI2Zm9wc19zY3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU3MS1cXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcInJ1bnRpbWVfcG1fc3RhdHNcXFwiLCBkaXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU3MjpcXHRcXHRcXHRcXHQgICAgbXQ3NjE1X3BtX3N0YXRzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTczLVxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwicmFkaW9cXFwiLCBkaXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU3NDpcXHRcXHRcXHRcXHQgICAgbXQ3NjE1X3JhZGlvX3JlYWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU3NjpcXHRpZiAoaXNfbXQ3NjE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU3Ny1cXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV91MzIoXFxcImRmc19od19wYXR0ZXJuXFxcIiwgMDQwMCwgZGlyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTYwOC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjYwOTpFWFBPUlRfU1lNQk9MX0dQTChtdDc2MTVfaW5pdF9kZWJ1Z2ZzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6MTA6I2luY2x1ZGUgXFxcIm10NzYxNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTExLSNpbmNsdWRlIFxcXCIuLi9kbWEuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jPTE0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoxNTptdDc2MjJfaW5pdF90eF9xdWV1ZXNfbXVsdGkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0xNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYz00ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6NDU6bXQ3NjE1X2luaXRfdHhfcXVldWVzKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6NTQ6XFx0aWYgKCFpc19tdDc2MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNTUtXFx0XFx0cmV0dXJuIG10NzYyMl9pbml0X3R4X3F1ZXVlc19tdWx0aShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6NjY6c3RhdGljIGludCBtdDc2MTVfcG9sbF90eChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNjcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjY4OlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtNjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy03OS1cXHRcXHRtdDc2X2Nvbm5hY19pcnFfZW5hYmxlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6ODA6XFx0XFx0XFx0XFx0ICAgICAgIG10NzYxNV90eF9tY3VfaW50X21hc2soZGV2KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtODEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy04Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzo4NzpzdGF0aWMgaW50IG10NzYxNV9wb2xsX3J4KHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy04OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6ODk6XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy05MC1cXHRpbnQgZG9uZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTEwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoxMDU6aW50IG10NzYxNV93YWl0X3BkbWFfYnVzeShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTEwNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0xMTAtXFx0XFx0dTMyIG1hc2sgPSBNVF9QRE1BX1RYX0JVU1kgfCBNVF9QRE1BX1JYX0JVU1k7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6MTExOlxcdFxcdHUzMiByZWcgPSBtdDc2MTVfcmVnX21hcChkZXYsIE1UX1BETUFfQlVTWSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMTEyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjE0MjpzdGF0aWMgdm9pZCBtdDc2MjJfZG1hX3NjaGVkX2luaXQoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0xNDMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjE0NDpcXHR1MzIgcmVnID0gbXQ3NjE1X3JlZ19tYXAoZGV2LCBNVF9ETUFTSERMX0JBU0UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTE0NS1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTE2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoxNjY6c3RhdGljIHZvaWQgbXQ3NjYzX2RtYV9zY2hlZF9pbml0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMTY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTIwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoyMDE6dm9pZCBtdDc2MTVfZG1hX3N0YXJ0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTIxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoyMjA6aW50IG10NzYxNV9kbWFfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTIyMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6MjQ1OlxcdGlmIChpc19tdDc2MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yNDYtXFx0XFx0bXQ3Nl9zZXQoZGV2LCBNVF9XUERNQV9HTE9fQ0ZHLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjI2MDpcXHRyZXQgPSBtdDc2MTVfaW5pdF90eF9xdWV1ZXMoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yNjEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoyNzE6XFx0aWYgKCFpc19tdDc2MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjcyLVxcdCAgICByeF9yaW5nX3NpemUgLz0gMjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoyODE6XFx0cmV0ID0gbXQ3Nl9pbml0X3F1ZXVlcyhkZXYsIG10NzYxNV9wb2xsX3J4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yODItXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy0yODUtXFx0bmV0aWZfbmFwaV9hZGRfdHgoZGV2LVxcdTAwM2VtdDc2LnR4X25hcGlfZGV2LCBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnR4X25hcGksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM6Mjg2OlxcdFxcdFxcdCAgbXQ3NjE1X3BvbGxfdHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI4Ny1cXHRuYXBpX2VuYWJsZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnR4X25hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjI5NTpcXHRtYXNrID0gTVRfSU5UX1JYX0RPTkVfQUxMIHwgbXQ3NjE1X3R4X21jdV9pbnRfbWFzayhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI5Ni1cXHRpZiAoaXNfbXQ3NjYzKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMzAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjMwMzpcXHRtdDc2MTVfZG1hX3N0YXJ0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMzA0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMzA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjMwODp2b2lkIG10NzYxNV9kbWFfY2xlYW51cChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTMwOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy04LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZi5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjk6I2luY2x1ZGUgXFxcIm10NzYxNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTEwLSNpbmNsdWRlIFxcXCJlZXByb20uaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzoxMjpzdGF0aWMgaW50IG10NzYxNV9lZnVzZV9yZWFkKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYsIHUzMiBiYXNlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTEzLVxcdFxcdFxcdCAgICAgdTE2IGFkZHIsIHU4ICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6NDQ6c3RhdGljIGludCBtdDc2MTVfZWZ1c2VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LCB1MzIgYmFzZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy00NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy02NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzo2NjpcXHRcXHRyZXQgPSBtdDc2MTVfZWZ1c2VfcmVhZChkZXYsIGJhc2UsIGksIGJ1ZiArIGkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTY3LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy03My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzo3NDpzdGF0aWMgaW50IG10NzYxNV9lZXByb21fbG9hZChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy03NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy04My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzo4NDpcXHRyZXR1cm4gbXQ3NjE1X2VmdXNlX2luaXQoZGV2LCBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy04NS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6ODc6c3RhdGljIGludCBtdDc2MTVfY2hlY2tfZWVwcm9tKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTg4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jPTEwMT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjEwMjptdDc2MTVfZWVwcm9tX3BhcnNlX2h3X2JhbmRfY2FwKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTAzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTE0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzoxNDQ6c3RhdGljIHZvaWQgbXQ3NjE1X2VlcHJvbV9wYXJzZV9od19jYXAoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0xNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjE0OTpcXHRtdDc2MTVfZWVwcm9tX3BhcnNlX2h3X2JhbmRfY2FwKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTUwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjE3MzpzdGF0aWMgaW50IG10NzY2M19lZXByb21fZ2V0X3RhcmdldF9wb3dlcl9pbmRleChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTE3NC1cXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0xODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6MTg1OlxcdGdyb3VwID0gbXQ3NjE1X2dldF9jaGFubmVsX2dyb3VwKGNoYW4tXFx1MDAzZWh3X3ZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0xODYtXFx0aWYgKGNoYWluX2lkeCA9PSAxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjE5NDppbnQgbXQ3NjE1X2VlcHJvbV9nZXRfdGFyZ2V0X3Bvd2VyX2luZGV4KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMTk1LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0yMDctXFx0LyogVFNTSSBkaXNhYmxlZCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjIwODpcXHRpZiAobXQ3NjE1X2V4dF9wYV9lbmFibGVkKGRldiwgY2hhbi1cXHUwMDNlYmFuZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0yMDktXFx0XFx0aWYgKGNoYW4tXFx1MDAzZWJhbmQgPT0gTkw4MDIxMV9CQU5EXzJHSFopXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0yMTgtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzoyMTk6XFx0XFx0aW50IGdyb3VwID0gbXQ3NjE1X2dldF9jaGFubmVsX2dyb3VwKGNoYW4tXFx1MDAzZWh3X3ZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0yMjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0yNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6MjQyOmludCBtdDc2MTVfZWVwcm9tX2dldF9wb3dlcl9kZWx0YV9pbmRleChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jLTI0My1cXHRcXHRcXHRcXHRcXHRlbnVtIG5sODAyMTFfYmFuZCBiYW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMjU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjI1OTpzdGF0aWMgdm9pZCBtdDc2MTVfYXBwbHlfY2FsX2ZyZWVfZGF0YShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0NjoxMC44MzkzNjM3OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMzNDQyMTEyMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBNVDc2MTUvTVQ3NjYzIEJ1cyBTdXBwb3J0KipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggYnVzZXMgdGhlIE1UNzYxNSBhbmQgTVQ3NjYzIHdpcmVsZXNzIGNoaXBzIHN1cHBvcnQuIE15IHVzdWFsIGZpcnN0IHN0ZXAgaXMgdG8gZGlnIGludG8gdGhlIGtlcm5lbCBzb3VyY2UsIHNwZWNpZmljYWxseSB0aGUgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIEknbGwgaGVhZCBzdHJhaWdodCB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZ2AuIFRoaXMgS2NvbmZpZyBmaWxlIHNob3VsZCBkZWZpbmUgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBjaGlwJ3MgYnVzIGludGVyZmFjZXMsIGxpa2VseSBwb2ludGluZyBtZSB0b3dhcmRzIHRoZSByZWxldmFudCBidXMgZHJpdmVycyAoZS5nLiwgUENJZSwgU0RJTywgVVNCKS4gRnJvbSB0aGVyZSBJIGNhbiBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGFyY2hpdGVjdHVyZSwgZGVwZW5kZW5jaWVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBUaW1lIHRvIHNlZSB3aGF0IEkgY2FuIGZpbmQuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzMDQsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0NjoxNC4xODM1Nzg0NjhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRcXG4gICAzOlxcdGNvbmZpZyBNVDc2MTVfQ09NTU9OXFxuICAgNDpcXHRcXHR0cmlzdGF0ZVxcbiAgIDU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAgNjpcXHRcXHRzZWxlY3QgTVQ3Nl9DT05OQUNfTElCXFxuICAgNzpcXHRcXG4gICA4OlxcdGNvbmZpZyBNVDc2MTVFXFxuICAgOTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NjE1RSBhbmQgTVQ3NjYzRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4gIDEwOlxcdFxcdHNlbGVjdCBNVDc2MTVfQ09NTU9OXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTM6XFx0XFx0aGVscFxcbiAgMTQ6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjE1LWJhc2VkIFBDSWUgd2lyZWxlc3MgZGV2aWNlcyxcXG4gIDE1OlxcdFxcdCAgd2hpY2ggc3VwcG9ydCBjb25jdXJyZW50IGR1YWwtYmFuZCBvcGVyYXRpb24gYXQgYm90aCA1R0h6XFxuICAxNjpcXHRcXHQgIGFuZCAyLjRHSHosIElFRUUgODAyLjExYWMgNHg0OjRTUyAxNzMzTWJwcyBQSFkgcmF0ZSwgd2F2ZTJcXG4gIDE3OlxcdFxcdCAgTVUtTUlNTyB1cCB0byA0IHVzZXJzL2dyb3VwIGFuZCAxNjBNSHogY2hhbm5lbHMuXFxuICAxODpcXHRcXG4gIDE5OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDIwOlxcdFxcbiAgMjE6XFx0Y29uZmlnIE1UNzYyMl9XTUFDXFxuICAyMjpcXHRcXHRib29sIFxcXCJNVDc2MjIgKFNvQykgV01BQyBzdXBwb3J0XFxcIlxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiBNVDc2MTVFXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIEFSQ0hfTUVESUFURUsgfHwgQ09NUElMRV9URVNUXFxuICAyNTpcXHRcXHRzZWxlY3QgUkVHTUFQXFxuICAyNjpcXHRcXHRkZWZhdWx0IHlcXG4gIDI3OlxcdFxcdGhlbHBcXG4gIDI4OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHRoZSBidWlsdC1pbiBXTUFDIG9uIE1UNzYyMiBTb0MgZGV2aWNlc1xcbiAgMjk6XFx0XFx0ICB3aGljaCBoYXMgdGhlIHNhbWUgZmVhdHVyZSBzZXQgYXMgYSBNVDc2MTUsIGJ1dCBsaW1pdGVkIHRvXFxuICAzMDpcXHRcXHQgIDIuNCBHSHogb25seS5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIE1UNzY2M19VU0JfU0RJT19DT01NT05cXG4gIDMzOlxcdFxcdHRyaXN0YXRlXFxuICAzNDpcXHRcXHRzZWxlY3QgTVQ3NjE1X0NPTU1PTlxcbiAgMzU6XFx0XFxuICAzNjpcXHRjb25maWcgTVQ3NjYzVVxcbiAgMzc6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzY2M1UgKFVTQikgc3VwcG9ydFxcXCJcXG4gIDM4OlxcdFxcdHNlbGVjdCBNVDc2X1VTQlxcbiAgMzk6XFx0XFx0c2VsZWN0IE1UNzY2M19VU0JfU0RJT19DT01NT05cXG4gIDQwOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDQxOlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICA0MjpcXHRcXHRoZWxwXFxuICA0MzpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc2NjNVIDgwMi4xMWFjIDJ4MjoyIHdpcmVsZXNzIGRldmljZXMuXFxuICA0NDpcXHRcXG4gIDQ1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0Y29uZmlnIE1UNzY2M1NcXG4gIDQ4OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2NjNTIChTRElPKSBzdXBwb3J0XFxcIlxcbiAgNDk6XFx0XFx0c2VsZWN0IE1UNzZfU0RJT1xcbiAgNTA6XFx0XFx0c2VsZWN0IE1UNzY2M19VU0JfU0RJT19DT01NT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NDY6MTQuMTgzNjUzMDI4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjg0NzU4NjAzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1UNzY2M1UgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgYENPTkZJR19NVDc2NjNVYC4gUmlnaHQsIHRoYXQncyB0aGUgVVNCIHdpcmVsZXNzIGRyaXZlciwgTWVkaWFUZWsgTVQ3NjYzVS4gVGhpbmtpbmcgYWJvdXQgaXQsIHNpbmNlIGl0J3MgVVNCLCBJIGNhbiBwcm9iYWJseSBmdXp6IGl0IHVzaW5nIFVTQiBSYXcgR2FkZ2V0IG9yIHRocm91Z2ggc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBJIGNvdWxkIGV2ZW4gZW11bGF0ZSBpdCBpbiBRRU1VIHdpdGggc3l6a2FsbGVyLiBUaGUga2V5IGhlcmUgaXMgVVNCLlxuXG5Ob3csIGEgcXVlc3Rpb24gaXMgcG9wcGluZyBpbnRvIG15IGhlYWQ6IGNhbiBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIGV2ZW4gYmUgY2FsbGVkIGZvciBNVDc2NjNVPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIHByb2JhYmx5IFBDSWUtc3BlY2lmaWMsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gQ291bGQgaXQgcG9zc2libHkgYmUgZXhwb3NlZCB0aHJvdWdoIGRlYnVnZnMsIG9yIHBlcmhhcHMgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbj8gT3IsIGlzIGl0IHNvbWVob3cgaW50ZWdyYXRlZCB3aXRoaW4gbWFjODAyMTEgb3Igbmw4MDIxMT9cblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGUgY29kZWJhc2UuIEknbSBnb2luZyB0byBzZWFyY2ggZm9yIGV2ZXJ5IGluc3RhbmNlIHdoZXJlIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAgaXMgY2FsbGVkLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0J3MgcmVsZXZhbnQgdG8gdGhpcyBVU0IgZHJpdmVyIGF0IGFsbC4gS25vd2luZyB3aGVyZSBpdCdzIGNhbGxlZCB3aWxsIGhlbHAgbWUgZGV0ZXJtaW5lIGl0cyBwdXJwb3NlIGFuZCBob3cgdG8gYXBwcm9hY2ggYW55IHBvdGVudGlhbCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTMxMSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjE3LjAzMTI0MjI5MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTY4ODMzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0xOTI9bXQ3NjE1X2RiZGNfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTk5LVxcdGlmICh2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjIwMDpcXHRcXHRtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMDEtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jPTUyNj1FWFBPUlRfU1lNQk9MX0dQTChtdDc2MTVfbGVkX3NldF9icmlnaHRuZXNzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtNTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYzo1Mjg6aW50IG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jLTUyOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtNjA2LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM6NjA3OkVYUE9SVF9TWU1CT0xfR1BMKG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtNjA4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg9MzgzPXZvaWQgbXQ3NjE1X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjM4NDppbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtMzg1LXZvaWQgbXQ3NjE1X3VucmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmM9Njk9aW50IG10NzYxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmMtMTAzLVxcdGlmIChkZXYtXFx1MDAzZWRiZGNfc3VwcG9ydCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmM6MTA0OlxcdFxcdHJldCA9IG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYy0xMDUtXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NDY6MTcuMDgyOTM0ODcxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQxNDY3NDQ3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgdGhlIE1UNzYxNSBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBkZWJ1ZyBmaWxlIHN5c3RlbSBpcyBpbml0aWFsaXplZCB3aXRoaW4gdGhlIE1UNzYxNSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgVVNCIHZlcnNpb24uIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogZG9lcyBgdXNiX2luaXRgIHRyaWdnZXIgdGhlIGNhbGwgdG8gYG10NzYxNV9pbml0X2RlYnVnZnNgPyBPciBwZXJoYXBzIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWA/IEFsdGVybmF0aXZlbHksIG1heWJlIGBtdDc2NjN1YCBpdHNlbGYgaGFuZGxlcyB0aGUgZGVidWdmcyBpbml0aWFsaXphdGlvbi5cblxuVG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcywgSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzLiBGaXJzdCwgSSBuZWVkIHRvIHBpbnBvaW50IHdoZXJlIGBtdDc2MTVfaW5pdF9kZWJ1Z2ZzYCBpcyBhY3R1YWxseSAqY2FsbGVkKi4gVGhlbiwgSSdsbCBmb2N1cyBvbiB0aGUgVVNCLXNwZWNpZmljIGNvZGUgd2l0aGluIHRoZSBNVDc2MTUgZHJpdmVyLCBzbyBJJ2xsIGJlIGxvb2tpbmcgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuY2AgZmlsZSwgb3Igc29tZXRoaW5nIHNpbWlsYXJseSBuYW1lZCB3aXRoaW4gdGhhdCBkaXJlY3Rvcnkgc3RydWN0dXJlLCB0byBzZWUgaWYgSSBjYW4gZmluZCB0aGUgYW5zd2VyLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI1NjQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0NjoxOS40OTc2MTIyOTJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODQ2ODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzYxNV9pbml0X2RlYnVnZnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9NTM1PW10NzY2M3Nfc2NoZWRfcXVvdGFfcmVhZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1NDg6aW50IG10NzYxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy02MDgtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo2MDk6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NjE1X2luaXRfZGVidWdmcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaD01MjY9aW50IG10NzYxNV9tY3Vfc2V0X3JvYyhzdHJ1Y3QgbXQ3NjE1X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjUyOTppbnQgbXQ3NjE1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01MzAtaW50IG10NzYxNV9tY3Vfd2FpdF9yZXNwb25zZShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LCBpbnQgY21kLCBpbnQgc2VxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmM9Njk9aW50IG10NzYxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmMtMTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmM6MTA5OlxcdHJldHVybiBtdDc2MTVfaW5pdF9kZWJ1Z2ZzKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYy0xMTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYz0zMDY9aW50IG10NzY2M191c2Jfc2Rpb19yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MzQ2OlxcdHJldHVybiBtdDc2MTVfaW5pdF9kZWJ1Z2ZzKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zNDctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0NjoxOS41NDY0NjQ0MzlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzgyNjk3NjI2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBNZWRpYXRlayBNVDc2MTUgVVNCIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBHaXZlbiB0aGUgY29udGV4dCwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIE1lZGlhdGVrIE1UNzYxNSBVU0IgZHJpdmVyIGltcGxlbWVudGF0aW9uLiBNeSBmaXJzdCBwb2ludCBvZiBhdHRhY2sgd2lsbCBiZSBlaXRoZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jYCBvciwgaWYgdGhpcyBpcyBhbiBTRElPLWJhc2VkIGltcGxlbWVudGF0aW9uLCBgdXNiX3NkaW8uY2AuIFRoZSBjb3JlIGlzc3VlIGxpa2VseSBjZW50ZXJzIGFyb3VuZCBVU0IgZHJpdmVyIHJlZ2lzdHJhdGlvbiBvciBzb21lIFVTQi1zcGVjaWZpYyBjb25maWd1cmF0aW9uLiBUaGVyZWZvcmUsIG15IHByaW1hcnkgc2VhcmNoIGZvY3VzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2AgZGlyZWN0b3J5IHdpbGwgYmUgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgVVNCIGRyaXZlciByZWdpc3RyYXRpb24gcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBVU0IgZGV2aWNlIGlzIGluaXRpYWxseSBpbml0aWFsaXplZCBhbmQgaW50ZWdyYXRlZCB3aXRoIHRoZSBrZXJuZWwsIGFuZCB0aGUgYHVzYi5jYCBmaWxlIGlzIHVzdWFsbHkgdGhlIHBsYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzc0OSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjI3LjM3MzQ0MjYyOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM3Njg4NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNiX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jPTI2Nj1NT0RVTEVfRklSTVdBUkUoTVQ3NjYzX1JPTV9QQVRDSCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjI2ODpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3NjYzdV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjY5LVxcdC5uYW1lXFx0XFx0PSBLQlVJTERfTU9ETkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI4MC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjI4MTptb2R1bGVfdXNiX2RyaXZlcihtdDc2NjN1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjgyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MzQ2PU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zNDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzQ4OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2eDBfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTM0OS1cXHQubmFtZVxcdFxcdD0gS0JVSUxEX01PRE5BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zNTgtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozNTk6bW9kdWxlX3VzYl9kcml2ZXIobXQ3NngwX2RyaXZlcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYz0xMzg9TU9EVUxFX0ZJUk1XQVJFKE1UNzY2Ml9ST01fUEFUQ0gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTEzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYzoxNDA6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzZ4MnVfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTE0MS1cXHQubmFtZVxcdFxcdD0gS0JVSUxEX01PRE5BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xNTItfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYzoxNTM6bW9kdWxlX3VzYl9kcml2ZXIobXQ3NngydV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTE1NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTMyOT1NT0RVTEVfRklSTVdBUkUoTVQ3OTIxX1JPTV9QQVRDSCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjMzMTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3OTIxdV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzMyLVxcdC5uYW1lXFx0XFx0PSBLQlVJTERfTU9ETkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM0My19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM0NDptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjF1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzI3PU1PRFVMRV9GSVJNV0FSRShNVDc5MjVfUk9NX1BBVENIKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzI5OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjV1X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zMzAtXFx0Lm5hbWVcXHRcXHQ9IEtCVUlMRF9NT0ROQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzQxLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzQyOm1vZHVsZV91c2JfZHJpdmVyKG10NzkyNXVfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNDMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjI3LjQyNzIxOTk5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUwOTYwOTk1MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIE1UNzY2M1UgRHJpdmVyIGFuZCBEQkRDIFN1cHBvcnQqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBNVDc2NjNVIFVTQiBkcml2ZXIuIEZyb20gd2hhdCBJJ20gc2VlaW5nLCBpdCBsZXZlcmFnZXMgYG10NzYxNS1jb21tb25gLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIHRoZSBgbXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZWAgZnVuY3Rpb24sIHRyaWdnZXJlZCB3aGVuIGEgVVNCIGRldmljZSBtYXRjaGVzIFwibXQ3NjYzdS5cIiBUaGlzIGluIHR1cm4gY2FsbHMgYG10NzYxNV9pbml0X2RlYnVnZnNgLlxuXG5JbnNpZGUgYG10NzYxNV9pbml0X2RlYnVnZnNgLCB0aGVyZSdzIGEgZGVidWdmcyBlbnRyeSBiZWluZyBjcmVhdGVkOiBhIGZpbGUgbmFtZWQgXCJkYmRjXCIgd2l0aCBwZXJtaXNzaW9ucyAwNjAwLiBUaGF0J3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcuIFRoaXMgXCJkYmRjXCIgZmlsZSB1c2VzIGBmb3BzX2RiZGNgLCB3aGljaCBoYW5kbGVzIGZpbGUgb3BlcmF0aW9ucyByZWxhdGVkIHRvIERCREMuIExvb2tpbmcgY2xvc2VyIGF0IGBmb3BzX2RiZGNgLCBJIHNlZSBgbXQ3NjE1X2RiZGNfc2V0YC4gVGhhdCBmdW5jdGlvbiB0YWtlcyBhIHU2NCB2YWx1ZSBhbmQsIGFmdGVyIGEgY2hlY2sgd2l0aCBgbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0YCwgaXQgZWl0aGVyIGNhbGxzIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAgb3IgYG10NzYxNV91bnJlZ2lzdGVyX2V4dF9waHlgIGJhc2VkIG9uIHRoZSB2YWx1ZS5cblxuU28sIGlmIHRoZSB2YWx1ZSBwcm92aWRlZCB0byBgbXQ3NjE1X2RiZGNfc2V0YCBpcyBub24temVybywgaXQgYWN0aXZhdGVzIHRoZSBleHRlbmRlZCBQSFkgdGhyb3VnaCBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoZGV2KWAuIENsZWFybHksIHdlJ3JlIG9uIHRoZSByaWdodCB0cmFjayEgVGhlIHByZXNlbmNlIG9mIHRoaXMgZGVidWdmcyBlbnRyeSBhbmQgaXRzIGFzc29jaWF0ZWQgZnVuY3Rpb25zIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoaXMgaXMgaG93IERCREMgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC5cblxuTm93LCBJIHdhbnQgdG8gY29uZmlybSBob3cgREJEQyBpcyB1c2VkIGluIHRoZSB3aWRlciBjb250ZXh0IG9mIHRoZSBtdDc2MTUgYW5kIG10NzY2MyBmYW1pbHkuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuY2AgYW5kIHNwZWNpZmljYWxseSBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIG9mIHRoZSBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIGNhbGwuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBtdWNoIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgREJEQyBpcyBpbml0aWFsaXplZCwgbWFuYWdlZCwgYW5kIHBvdGVudGlhbGx5IHVzZWQgaW4gYSBkdWFsLWJhbmQgZHVhbC1jb25jdXJyZW50IGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MzAxLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjMyLjUyMzMyMjc1N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTQ5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTI1LFxuICBcIkxpbmVDb3VudFwiOiA4NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTI1OlxcdH1cXG4gNTI2OlxcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzYxNV9sZWRfc2V0X2JyaWdodG5lc3MpO1xcbiA1Mjc6XFx0XFxuIDUyODpcXHRpbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4gNTI5OlxcdHtcXG4gNTMwOlxcdFxcdHN0cnVjdCBtdDc2MTVfcGh5ICpwaHkgPSBtdDc2MTVfZXh0X3BoeShkZXYpO1xcbiA1MzE6XFx0XFx0c3RydWN0IG10NzZfcGh5ICptcGh5O1xcbiA1MzI6XFx0XFx0aW50IGksIHJldDtcXG4gNTMzOlxcdFxcbiA1MzQ6XFx0XFx0aWYgKCFpc19tdDc2MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuIDUzNTpcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIDUzNjpcXHRcXG4gNTM3OlxcdFxcdGlmICh0ZXN0X2JpdChNVDc2X1NUQVRFX1JVTk5JTkcsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc3RhdGUpKVxcbiA1Mzg6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDUzOTpcXHRcXG4gNTQwOlxcdFxcdGlmIChwaHkpXFxuIDU0MTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNTQyOlxcdFxcbiA1NDM6XFx0XFx0bXQ3NjE1X2NhcF9kYmRjX2VuYWJsZShkZXYpO1xcbiA1NDQ6XFx0XFx0bXBoeSA9IG10NzZfYWxsb2NfcGh5KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHNpemVvZigqcGh5KSwgXFx1MDAyNm10NzYxNV9vcHMsIE1UX0JBTkQxKTtcXG4gNTQ1OlxcdFxcdGlmICghbXBoeSkge1xcbiA1NDY6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4gNTQ3OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDU0ODpcXHRcXHR9XFxuIDU0OTpcXHRcXG4gNTUwOlxcdFxcdHBoeSA9IG1waHktXFx1MDAzZXByaXY7XFxuIDU1MTpcXHRcXHRwaHktXFx1MDAzZWRldiA9IGRldjtcXG4gNTUyOlxcdFxcdHBoeS1cXHUwMDNlbXQ3NiA9IG1waHk7XFxuIDU1MzpcXHRcXHRtcGh5LVxcdTAwM2VjaGFpbm1hc2sgPSBkZXYtXFx1MDAzZWNoYWlubWFzayBcXHUwMDI2IH5kZXYtXFx1MDAzZW1waHkuY2hhaW5tYXNrO1xcbiA1NTQ6XFx0XFx0bXBoeS1cXHUwMDNlYW50ZW5uYV9tYXNrID0gQklUKGh3ZWlnaHQ4KG1waHktXFx1MDAzZWNoYWlubWFzaykpIC0gMTtcXG4gNTU1OlxcdFxcdG10NzYxNV9pbml0X3dpcGh5KG1waHktXFx1MDAzZWh3KTtcXG4gNTU2OlxcdFxcbiA1NTc6XFx0XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNm1waHktXFx1MDAzZW1hY193b3JrLCBtdDc2MTVfbWFjX3dvcmspO1xcbiA1NTg6XFx0XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNnBoeS1cXHUwMDNlc2Nhbl93b3JrLCBtdDc2MTVfc2Nhbl93b3JrKTtcXG4gNTU5OlxcdFxcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNnBoeS1cXHUwMDNlc2Nhbl9ldmVudF9saXN0KTtcXG4gNTYwOlxcdFxcbiA1NjE6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZwaHktXFx1MDAzZXJvY193b3JrLCBtdDc2MTVfcm9jX3dvcmspO1xcbiA1NjI6XFx0XFx0dGltZXJfc2V0dXAoXFx1MDAyNnBoeS1cXHUwMDNlcm9jX3RpbWVyLCBtdDc2MTVfcm9jX3RpbWVyLCAwKTtcXG4gNTYzOlxcdFxcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXFx1MDAyNnBoeS1cXHUwMDNlcm9jX3dhaXQpO1xcbiA1NjQ6XFx0XFxuIDU2NTpcXHRcXHRtdDc2MTVfbWFjX3NldF9zY3MocGh5LCB0cnVlKTtcXG4gNTY2OlxcdFxcbiA1Njc6XFx0XFx0LypcXG4gNTY4OlxcdFxcdCAqIE1ha2UgdGhlIHNlY29uZGFyeSBQSFkgTUFDIGFkZHJlc3MgbG9jYWwgd2l0aG91dCBvdmVybGFwcGluZyB3aXRoXFxuIDU2OTpcXHRcXHQgKiB0aGUgdXN1YWwgTUFDIGFkZHJlc3MgYWxsb2NhdGlvbiBzY2hlbWUgb24gbXVsdGlwbGUgdmlydHVhbCBpbnRlcmZhY2VzXFxuIDU3MDpcXHRcXHQgKi9cXG4gNTcxOlxcdFxcdG1lbWNweShtcGh5LVxcdTAwM2VtYWNhZGRyLCBkZXYtXFx1MDAzZW10NzYuZWVwcm9tLmRhdGEgKyBNVF9FRV9NQUNfQUREUixcXG4gNTcyOlxcdFxcdCAgICAgICBFVEhfQUxFTik7XFxuIDU3MzpcXHRcXHRtcGh5LVxcdTAwM2VtYWNhZGRyWzBdIHw9IDI7XFxuIDU3NDpcXHRcXHRtcGh5LVxcdTAwM2VtYWNhZGRyWzBdIF49IEJJVCg3KTtcXG4gNTc1OlxcdFxcbiA1NzY6XFx0XFx0cmV0ID0gbXQ3Nl9lZXByb21fb3ZlcnJpZGUobXBoeSk7XFxuIDU3NzpcXHRcXHRpZiAocmV0KVxcbiA1Nzg6XFx0XFx0XFx0Z290byBlcnJvcl9mcmVlX2h3O1xcbiA1Nzk6XFx0XFxuIDU4MDpcXHRcXHQvKiBzZWNvbmQgcGh5IGNhbiBvbmx5IGhhbmRsZSA1IEdIeiAqL1xcbiA1ODE6XFx0XFx0bXBoeS1cXHUwMDNlY2FwLmhhc181Z2h6ID0gdHJ1ZTtcXG4gNTgyOlxcdFxcbiA1ODM6XFx0XFx0LyogbXQ3NjE1IHNlY29uZCBwaHkgc2hhcmVzIHRoZSBzYW1lIGh3IHF1ZXVlcyB3aXRoIHRoZSBwcmltYXJ5IG9uZSAqL1xcbiA1ODQ6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjPSBNVF9UWFFfUFNEIDsgaSsrKVxcbiA1ODU6XFx0XFx0XFx0bXBoeS1cXHUwMDNlcV90eFtpXSA9IGRldi1cXHUwMDNlbXBoeS5xX3R4W2ldO1xcbiA1ODY6XFx0XFxuIDU4NzpcXHRcXHQvKiBpbml0IGxlZCBjYWxsYmFja3MgKi9cXG4gNTg4OlxcdFxcdGlmIChJU19FTkFCTEVEKENPTkZJR19NVDc2X0xFRFMpKSB7XFxuIDU4OTpcXHRcXHRcXHRtcGh5LVxcdTAwM2VsZWRzLmNkZXYuYnJpZ2h0bmVzc19zZXQgPSBtdDc2MTVfbGVkX3NldF9icmlnaHRuZXNzO1xcbiA1OTA6XFx0XFx0XFx0bXBoeS1cXHUwMDNlbGVkcy5jZGV2LmJsaW5rX3NldCA9IG10NzYxNV9sZWRfc2V0X2JsaW5rO1xcbiA1OTE6XFx0XFx0fVxcbiA1OTI6XFx0XFxuIDU5MzpcXHRcXHRyZXQgPSBtdDc2X3JlZ2lzdGVyX3BoeShtcGh5LCB0cnVlLCBtdDc2X3JhdGVzLFxcbiA1OTQ6XFx0XFx0XFx0XFx0XFx0QVJSQVlfU0laRShtdDc2X3JhdGVzKSk7XFxuIDU5NTpcXHRcXHRpZiAocmV0KVxcbiA1OTY6XFx0XFx0XFx0Z290byBlcnJvcl9mcmVlX2h3O1xcbiA1OTc6XFx0XFxuIDU5ODpcXHRcXHRyZXR1cm4gMDtcXG4gNTk5OlxcdFxcbiA2MDA6XFx0ZXJyb3JfZnJlZV9odzpcXG4gNjAxOlxcdFxcdGllZWU4MDIxMV9mcmVlX2h3KG1waHktXFx1MDAzZWh3KTtcXG4gNjAyOlxcdGVycm9yOlxcbiA2MDM6XFx0XFx0bXQ3NjE1X2NhcF9kYmRjX2Rpc2FibGUoZGV2KTtcXG4gNjA0OlxcdFxcbiA2MDU6XFx0XFx0cmV0dXJuIHJldDtcXG4gNjA2OlxcdH1cXG4gNjA3OlxcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5KTtcXG4gNjA4OlxcdFxcbiA2MDk6XFx0dm9pZCBtdDc2MTVfdW5yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjMyLjUyMzQxNTkzN1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMDExODc1NjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29kZSAtIEEgUXVpY2sgQ2hlY2sqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kISBNeSBleWVzIGp1c3Qgc25hZ2dlZCBvbiBsaW5lIDUzNCBpbiB0aGF0IEMgY29kZS4gTGV0IG1lIHBhcnNlIHRoYXQuLi4gQWgsIHRoZXJlJ3MgYSBjcnVjaWFsIGNoZWNrIHJpZ2h0IHRoZXJlOiBgaWYgKCFpc19tdDc2MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKWAuIE15IGV4cGVydCBicmFpbiBpbW1lZGlhdGVseSBzcG90cyB0aGUgcG90ZW50aWFsIGlzc3VlOiBUaGlzIGZ1bmN0aW9uIGFwcGVhcnMgdG8gYmUgYW4gZXJyb3IgcGF0aCwgYW5kIGl0IHdpbGwgb25seSBnZXQgdGhlcmUgaWYgYSBjZXJ0YWluIGNoaXAgaXNuJ3QgYSBjZXJ0YWluIHR5cGUuIFwiV2FpdCwgd2hhdCdzIGBpc19tdDc2MTVgIGFjdHVhbGx5IGNoZWNraW5nIGZvcj9cIiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBoYXJkd2FyZSBjb21wb25lbnRzIHRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gaGFuZGxlLiBUaGlzIGRlbWFuZHMgYSBjbG9zZXIgbG9vayBhdCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGBpc19tdDc2MTVgIGZ1bmN0aW9uIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIGFuZCBpbnRlbmRlZCBzY29wZS4gSSBiZXR0ZXIgdHJhY2sgZG93biB0aGUgZGVmaW5pdGlvbiBvZiB0aGF0IGZ1bmN0aW9uIHJpZ2h0IG5vdy4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NTk2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0NjozNS41MzUyOTQ2MzdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMTk3NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlzX210NzYxNVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz01NDg9aW50IG10NzYxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU1NjpcXHRpZiAoaXNfbXQ3NjE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NTctXFx0XFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJ4bWl0LXF1ZXVlc1xcXCIsIGRpcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy01NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU3NjpcXHRpZiAoaXNfbXQ3NjE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTU3Ny1cXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV91MzIoXFxcImRmc19od19wYXR0ZXJuXFxcIiwgMDQwMCwgZGlyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmM9NDU9bXQ3NjE1X2luaXRfdHhfcXVldWVzKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy01My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzo1NDpcXHRpZiAoIWlzX210NzYxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYy01NS1cXHRcXHRyZXR1cm4gbXQ3NjIyX2luaXRfdHhfcXVldWVzX211bHRpKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYz0yMjA9aW50IG10NzYxNV9kbWFfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jOjI0NTpcXHRpZiAoaXNfbXQ3NjE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjQ2LVxcdFxcdG10NzZfc2V0KGRldiwgTVRfV1BETUFfR0xPX0NGRyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RtYS5jLTI3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kbWEuYzoyNzE6XFx0aWYgKCFpc19tdDc2MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZG1hLmMtMjcyLVxcdCAgICByeF9yaW5nX3NpemUgLz0gMjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYz0zNjA9bXQ3NjE1X2luaXRfd2lwaHkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtNDA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYzo0MDk6XFx0aWYgKGlzX210NzYxNShcXHUwMDI2cGh5LVxcdTAwM2VkZXYtXFx1MDAzZW10NzYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy00MTAtXFx0XFx0aHctXFx1MDAzZW1heF90eF9mcmFnbWVudHMgPSBNVF9UWFBfTUFYX0JVRl9OVU07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM9NTI4PWludCBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jLTUzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM6NTM0OlxcdGlmICghaXNfbXQ3NjE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy01MzUtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmM9MTU1Mj1zdGF0aWMgdm9pZCBtdDc2MTVfbWFjX3R4X2ZyZWUoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgdm9pZCAqZGF0YSwgaW50IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTE1NTktXFx0bXQ3Nl9xdWV1ZV90eF9jbGVhbnVwKGRldiwgZGV2LVxcdTAwM2VtcGh5LnFfdHhbTVRfVFhRX1BTRF0sIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWMuYzoxNTYwOlxcdGlmIChpc19tdDc2MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWMuYy0xNTYxLVxcdFxcdG10NzZfcXVldWVfdHhfY2xlYW51cChkZXYsIGRldi1cXHUwMDNlbXBoeS5xX3R4W01UX1RYUV9CRV0sIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTE1NjctXFx0Y291bnQgPSBsZTE2X2dldF9iaXRzKGZyZWUtXFx1MDAzZWN0cmwsIE1UX1RYX0ZSRUVfTVNEVV9JRF9DTlQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jOjE1Njg6XFx0aWYgKGlzX210NzYxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTE1NjktXFx0XFx0X19sZTE2ICp0b2tlbiA9IHR4X3Rva2VuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jPTI4ND1pbnQgbXQ3NjE1X3NldF9jaGFubmVsKHN0cnVjdCBtdDc2X3BoeSAqbXBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21haW4uYy0yOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jOjI5MzpcXHRpZiAoaXNfbXQ3NjE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpIFxcdTAwMjZcXHUwMDI2IGRldi1cXHUwMDNlZmxhc2hfZWVwcm9tKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jLTI5NC1cXHRcXHRyZXQgPSBtdDc2MTVfbWN1X2FwcGx5X3J4X2Rjb2MocGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jPTEzMzI9c3RhdGljIGludCBtdDc2MTVfbG9hZF9uOShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LCBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmMtMTM2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYzoxMzcwOlxcdGlmICghaXNfbXQ3NjE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmMtMTM3MS1cXHRcXHRkZXYtXFx1MDAzZWZ3X3ZlciA9IE1UNzYxNV9GSVJNV0FSRV9WMjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9tYWMuYz02MD1pbnQgbXQ3NjE1X3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfbWFjLmMtMTAzLVxcdG1lbXNldCh0eHAsIDAsIHNpemVvZihzdHJ1Y3QgbXQ3Nl9jb25uYWNfdHhwX2NvbW1vbikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9tYWMuYzoxMDQ6XFx0aWYgKGlzX210NzYxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfbWFjLmMtMTA1LVxcdFxcdG10NzYxNV93cml0ZV9md190eHAoZGV2LCB0eF9pbmZvLCB0eHAsIGlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yNTE9c3RhdGljIGlubGluZSBib29sIGlzX210NzYyMihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjI1OTpzdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3NjE1KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTI2OT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfY29ubmFjX3YxKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNzAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoyNzE6XFx0cmV0dXJuIGlzX210NzYxNShkZXYpIHx8IGlzX210NzY2MyhkZXYpIHx8IGlzX210NzYyMihkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNzItfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0NjozNS41ODY0OTc5NDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI0NTk1OTExMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoYXQgcXVlcnksIGFzIGlmIGl0IHdlcmUgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc2MTUgRHJpdmVyKipcblxuQWxyaWdodCwgc28gc29tZW9uZSdzIGFza2VkIGFib3V0IHRoZSBgaXNfbXQ3NjE1KGRldilgIGZ1bmN0aW9uLiBHaXZlbiBteSBleHBlcnRpc2UgaW4gdGhpcyBhcmVhLCBteSBmaXJzdCB0aG91Z2h0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5ICpkb2VzKi4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NmAgZGlyZWN0b3J5IGlzIHRoZSBjYW5vbmljYWwgbG9jYXRpb24gZm9yIE1lZGlhdGVrIFdpRmkgZHJpdmVycyB3aXRoaW4gdGhlIGtlcm5lbCB0cmVlLCBhbmQgdGhlIGBtdDc2X2Nvbm5hYy5oYCBoZWFkZXIgZmlsZSBpcyBhIGxpa2VseSBjYW5kaWRhdGUgZm9yIGludGVyZmFjZS1yZWxhdGVkIGRlZmluaXRpb25zLiBTbywgbGV0J3Mgb3BlbiB1cCB0aGF0IGhlYWRlciBmaWxlIGFuZCBzZWUgd2hhdCBgaXNfbXQ3NjE1KGRldilgIGlzIGRlZmluZWQgYXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCBpZGVudGlmaWVzIGFuIE1UNzYxNSBkZXZpY2U7IGxpa2VseSBjaGVja2luZyBzb21lIHNvcnQgb2YgaGFyZHdhcmUgSUQgb3IgYm9hcmQgaW5mb3JtYXRpb24gYWdhaW5zdCBhIGtub3duIHZhbHVlLiBJIGV4cGVjdCB0aGUgZGVmaW5pdGlvbiB0byBiZSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZDogZWl0aGVyIGEgZGlyZWN0IGNoZWNrIGZvciBhIHNwZWNpZmljIElELCBvciBwZXJoYXBzIGEgbW9yZSBjb21wbGV4IG1hY3JvIHRoYXQgaW5jb3Jwb3JhdGVzIGZhbWlseSBjaGVja3MgYW5kIHZlcnNpb25pbmcuIExldCdzIGdldCB0byB0aGUgY29kZSBhbmQgc2VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDMzNywiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjM3LjgzMjQ1OTI5N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMjUwLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjUwOlxcdFxcbiAyNTE6XFx0c3RhdGljIGlubGluZSBib29sIGlzX210NzYyMihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG4gMjUyOlxcdHtcXG4gMjUzOlxcdFxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTVQ3NjIyX1dNQUMpKVxcbiAyNTQ6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiAyNTU6XFx0XFxuIDI1NjpcXHRcXHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3NjIyO1xcbiAyNTc6XFx0fVxcbiAyNTg6XFx0XFxuIDI1OTpcXHRzdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3NjE1KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbiAyNjA6XFx0e1xcbiAyNjE6XFx0XFx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4NzYxNSB8fCBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MTE7XFxuIDI2MjpcXHR9XFxuIDI2MzpcXHRcXG4gMjY0OlxcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MTEoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuIDI2NTpcXHR7XFxuIDI2NjpcXHRcXHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3NjExO1xcbiAyNjc6XFx0fVxcbiAyNjg6XFx0XFxuIDI2OTpcXHRzdGF0aWMgaW5saW5lIGJvb2wgaXNfY29ubmFjX3YxKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbiAyNzA6XFx0e1xcbiAyNzE6XFx0XFx0cmV0dXJuIGlzX210NzYxNShkZXYpIHx8IGlzX210NzY2MyhkZXYpIHx8IGlzX210NzYyMihkZXYpO1xcbiAyNzI6XFx0fVxcbiAyNzM6XFx0XFxuIDI3NDpcXHRzdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3Nl9md190eHAoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjM3LjgzMjUzODg0N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTg3NDAwOTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gbXkgZmllbGQ6XG5cbioqQ2hpcCBJRCBJbnZlc3RpZ2F0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGdldHRpbmcgYSBoYW5kbGUgb24gd2hpY2ggZGV2aWNlcyBhcmUgY3VycmVudGx5IHV0aWxpemluZyBlaXRoZXIgdGhlIDB4NzYxNSBvciAweDc2MTEgY2hpcCBJRHMuIEl0J3MgdGhlIG1vc3QgbG9naWNhbCBmaXJzdCBzdGVwIHRvIHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgaGFyZHdhcmUgaW52ZW50b3J5LiBGcm9tIHRoZXJlLCBJIG5lZWQgdG8gdHJhY2UgYmFjayB3aGVyZSB0aGVzZSBzcGVjaWZpYyBjaGlwcyBhcmUgYmVpbmcgcHJvYmVkIHdpdGhpbiB0aGUgc3lzdGVtLiBUaGF0J2xsIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXNlIGNoaXAgSURzIGFyZSBiZWluZyB1dGlsaXplZCBpbiBwcmFjdGljZS4gVW5kZXJzdGFuZGluZyB0aGUgcHJvYmUgcG9pbnRzIHdpbGwgbGlrZWx5IHBvaW50IHRoZSB3YXkgdG8gdGhlIHJpZ2h0IGRyaXZlcnMsIGNvbmZpZ3VyYXRpb25zLCBvciBoYXJkd2FyZSBzcGVjaWZpY2F0aW9ucyBhc3NvY2lhdGVkIHdpdGggZWFjaCBvZiB0aG9zZSBjaGlwcy4gRnJvbSB0aGVyZSBJIGNhbiBkZXRlcm1pbmUgaG93IEkgY2FuIG1ha2UgY2hhbmdlcyB3aXRob3V0IGJyZWFraW5nIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTEwNSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NDY6MzkuODE5OTQyODYxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzY0MzI2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIweDc2MTV8MHg3NjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM9ODc9c3RhdGljIGludCBtdDc2MTVfY2hlY2tfZWVwcm9tKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtOTEtXFx0c3dpdGNoICh2YWwpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzo5MjpcXHRjYXNlIDB4NzYxNTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy05My1cXHRjYXNlIDB4NzYyMjpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jPTMxNT1zdGF0aWMgdm9pZCBtdDc2MTVfY2FsX2ZyZWVfZGF0YShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMzI1LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2VlcHJvbS5jOjMyNjpcXHRjYXNlIDB4NzYxNTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzozMjc6XFx0Y2FzZSAweDc2MTE6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMzI4LVxcdFxcdG10NzYxNV9hcHBseV9jYWxfZnJlZV9kYXRhKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2kuYz0xNT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbXQ3NjE1X3BjaV9kZXZpY2VfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2kuYzoxNjpcXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3NjE1KSB9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaS5jLTE3LVxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01FRElBVEVLLCAweDc2NjMpIH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpLmM6MTg6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUVESUFURUssIDB4NzYxMSkgfSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2kuYy0xOS1cXHR7IH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjU5PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MTUoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI2MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjI2MTpcXHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3NjE1IHx8IG10NzZfY2hpcChkZXYpID09IDB4NzYxMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjYyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yNjQ9c3RhdGljIGlubGluZSBib29sIGlzX210NzYxMShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjY1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjY2OlxcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MTE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI2Ny19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjM5Ljg3MzU5MTY4MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NDIxNDA0Mzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIE1UNzYxNSBQQ0kgRGV2aWNlIFRhYmxlIGFuZCBSZWxhdGVkIFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgbXQ3NjE1X3BjaV9kZXZpY2VfdGFibGVgIHJpZ2h0IG5vdy4gSW50ZXJlc3RpbmcuLi4gaXQgc2VlbXMgdG8gYmUgbGlzdGluZyBQQ0kgZGV2aWNlcywgc3BlY2lmaWNhbGx5IHRob3NlIHdpdGggdGhlIDB4NzYxNSBhbmQgMHg3NjExIGRldmljZSBJRHMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gbm90ZSB0aG9zZSBJRHM7IHNlZW1zIGxpa2UgYSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IHdoZW4gSSdtIGRlYWxpbmcgd2l0aCBNVDc2MTUsIG9yIGV2ZW4gdmFyaWFudHMuIEJ1dCwgaG9sZCBvbiBhIHNlY29uZC4uLiB3aGF0IGFib3V0IHRoZSBgbXQ3NjYzdWAgZHJpdmVyPyBXaGVyZSBkb2VzIHRoYXQgY2hpcCBmaXQgaW50byB0aGlzIHBpY3R1cmU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIG90aGVyIGRldmljZXMsIGFuZCB3aGljaCBkZXZpY2UgSSBhbSBsb29raW5nIGZvci4gSSBzaG91bGQgY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWxhdGlvbnNoaXBzLCBvciBjb21tb25hbGl0aWVzIHRvIGJlIGZvdW5kLiBMZXQncyBzZWUgaWYgdGhlcmUncyBhbnkgaW1tZWRpYXRlIGNvcnJlbGF0aW9uIHRoZXJlLi4uIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gbG9vayBmb3Igbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjMyMCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ2OjQ0LjI5NDk5ODcxNloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHQvKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWVkaWFUZWsgSW5jLlxcbiAgIDM6XFx0ICpcXG4gICA0OlxcdCAqIEF1dGhvcjogRmVsaXggRmlldGthdSBcXHUwMDNjbmJkQG5iZC5uYW1lXFx1MDAzZVxcbiAgIDU6XFx0ICpcXHQgICBMb3JlbnpvIEJpYW5jb25pIFxcdTAwM2Nsb3JlbnpvQGtlcm5lbC5vcmdcXHUwMDNlXFxuICAgNjpcXHQgKlxcdCAgIFNlYW4gV2FuZyBcXHUwMDNjc2Vhbi53YW5nQG1lZGlhdGVrLmNvbVxcdTAwM2VcXG4gICA3OlxcdCAqL1xcbiAgIDg6XFx0XFxuICAgOTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuICAxMDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAxMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvdXNiLmhcXHUwMDNlXFxuICAxMjpcXHRcXG4gIDEzOlxcdCNpbmNsdWRlIFxcXCJtdDc2MTUuaFxcXCJcXG4gIDE0OlxcdCNpbmNsdWRlIFxcXCJtYWMuaFxcXCJcXG4gIDE1OlxcdCNpbmNsdWRlIFxcXCJtY3UuaFxcXCJcXG4gIDE2OlxcdCNpbmNsdWRlIFxcXCJyZWdzLmhcXFwiXFxuICAxNzpcXHRcXG4gIDE4OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtdDc2MTVfZGV2aWNlX3RhYmxlW10gPSB7XFxuICAxOTpcXHRcXHR7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MGU4ZCwgMHg3NjYzLCAweGZmLCAweGZmLCAweGZmKSB9LFxcbiAgMjA6XFx0XFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDA0M2UsIDB4MzEwYywgMHhmZiwgMHhmZiwgMHhmZikgfSxcXG4gIDIxOlxcdFxcdHsgfSxcXG4gIDIyOlxcdH07XFxuICAyMzpcXHRcXG4gIDI0OlxcdHN0YXRpYyB1MzIgbXQ3NjYzdV9ycihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGFkZHIpXFxuICAyNTpcXHR7XFxuICAyNjpcXHRcXHR1MzIgcmV0O1xcbiAgMjc6XFx0XFxuICAyODpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXVzYi51c2JfY3RybF9tdHgpO1xcbiAgMjk6XFx0XFx0cmV0ID0gX19fbXQ3NnVfcnIoZGV2LCBNVF9WRU5EX1JFQURfRVhULFxcbiAgMzA6XFx0XFx0XFx0XFx0ICBVU0JfRElSX0lOIHwgVVNCX1RZUEVfVkVORE9SLCBhZGRyKTtcXG4gIDMxOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2V1c2IudXNiX2N0cmxfbXR4KTtcXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0cmV0dXJuIHJldDtcXG4gIDM0OlxcdH1cXG4gIDM1OlxcdFxcbiAgMzY6XFx0c3RhdGljIHZvaWQgbXQ3NjYzdV93cihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGFkZHIsIHUzMiB2YWwpXFxuICAzNzpcXHR7XFxuICAzODpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXVzYi51c2JfY3RybF9tdHgpO1xcbiAgMzk6XFx0XFx0X19fbXQ3NnVfd3IoZGV2LCBNVF9WRU5EX1dSSVRFX0VYVCxcXG4gIDQwOlxcdFxcdFxcdCAgICBVU0JfRElSX09VVCB8IFVTQl9UWVBFX1ZFTkRPUiwgYWRkciwgdmFsKTtcXG4gIDQxOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2V1c2IudXNiX2N0cmxfbXR4KTtcXG4gIDQyOlxcdH1cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0c3RhdGljIHUzMiBtdDc2NjN1X3JtdyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGFkZHIsXFxuICA0NTpcXHRcXHRcXHQgICAgICAgdTMyIG1hc2ssIHUzMiB2YWwpXFxuICA0NjpcXHR7XFxuICA0NzpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXVzYi51c2JfY3RybF9tdHgpO1xcbiAgNDg6XFx0XFx0dmFsIHw9IF9fX210NzZ1X3JyKGRldiwgTVRfVkVORF9SRUFEX0VYVCxcXG4gIDQ5OlxcdFxcdFxcdFxcdCAgIFVTQl9ESVJfSU4gfCBVU0JfVFlQRV9WRU5ET1IsIGFkZHIpIFxcdTAwMjYgfm1hc2s7XFxuICA1MDpcXHRcXHRfX19tdDc2dV93cihkZXYsIE1UX1ZFTkRfV1JJVEVfRVhULFxcbiAgNTE6XFx0XFx0XFx0ICAgIFVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfVkVORE9SLCBhZGRyLCB2YWwpO1xcbiAgNTI6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXVzYi51c2JfY3RybF9tdHgpO1xcbiAgNTM6XFx0XFxuICA1NDpcXHRcXHRyZXR1cm4gdmFsO1xcbiAgNTU6XFx0fVxcbiAgNTY6XFx0XFxuICA1NzpcXHRzdGF0aWMgdm9pZCBtdDc2NjN1X2NvcHkoc3RydWN0IG10NzZfZGV2ICpkZXYsIHUzMiBvZmZzZXQsXFxuICA1ODpcXHRcXHRcXHRcXHQgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbilcXG4gIDU5OlxcdHtcXG4gIDYwOlxcdFxcdHN0cnVjdCBtdDc2X3VzYiAqdXNiID0gXFx1MDAyNmRldi1cXHUwMDNldXNiO1xcbiAgNjE6XFx0XFx0aW50IHJldCwgaSA9IDAsIGJhdGNoX2xlbjtcXG4gIDYyOlxcdFxcdGNvbnN0IHU4ICp2YWwgPSBkYXRhO1xcbiAgNjM6XFx0XFxuICA2NDpcXHRcXHRsZW4gPSByb3VuZF91cChsZW4sIDQpO1xcbiAgNjU6XFx0XFxuICA2NjpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ1c2ItXFx1MDAzZXVzYl9jdHJsX210eCk7XFxuICA2NzpcXHRcXHR3aGlsZSAoaSBcXHUwMDNjIGxlbikge1xcbiAgNjg6XFx0XFx0XFx0YmF0Y2hfbGVuID0gbWluX3QoaW50LCB1c2ItXFx1MDAzZWRhdGFfbGVuLCBsZW4gLSBpKTtcXG4gIDY5OlxcdFxcdFxcdG1lbWNweSh1c2ItXFx1MDAzZWRhdGEsIHZhbCArIGksIGJhdGNoX2xlbik7XFxuICA3MDpcXHRcXHRcXHRyZXQgPSBfX210NzZ1X3ZlbmRvcl9yZXF1ZXN0KGRldiwgTVRfVkVORF9XUklURV9FWFQsXFxuICA3MTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfVkVORE9SLFxcbiAgNzI6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAob2Zmc2V0ICsgaSkgXFx1MDAzZVxcdTAwM2UgMTYsIG9mZnNldCArIGksXFxuICA3MzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHVzYi1cXHUwMDNlZGF0YSwgYmF0Y2hfbGVuKTtcXG4gIDc0OlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiAgNzU6XFx0XFx0XFx0XFx0YnJlYWs7XFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdFxcdGkgKz0gYmF0Y2hfbGVuO1xcbiAgNzg6XFx0XFx0fVxcbiAgNzk6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ1c2ItXFx1MDAzZXVzYl9jdHJsX210eCk7XFxuICA4MDpcXHR9XFxuICA4MTpcXHRcXG4gIDgyOlxcdHN0YXRpYyB2b2lkIG10NzY2M3Vfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxcbiAgODM6XFx0e1xcbiAgODQ6XFx0XFx0c3RydWN0IG10NzYxNV9waHkgKnBoeSA9IG10NzYxNV9od19waHkoaHcpO1xcbiAgODU6XFx0XFx0c3RydWN0IG10NzYxNV9kZXYgKmRldiA9IGh3LVxcdTAwM2Vwcml2O1xcbiAgODY6XFx0XFxuICA4NzpcXHRcXHRjbGVhcl9iaXQoTVQ3Nl9TVEFURV9SVU5OSU5HLCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4gIDg4OlxcdFxcdHRpbWVyX2RlbGV0ZV9zeW5jKFxcdTAwMjZwaHktXFx1MDAzZXJvY190aW1lcik7XFxuICA4OTpcXHRcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZwaHktXFx1MDAzZXJvY193b3JrKTtcXG4gIDkwOlxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2cGh5LVxcdTAwM2VzY2FuX3dvcmspO1xcbiAgOTE6XFx0XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZwaHktXFx1MDAzZW10NzYtXFx1MDAzZW1hY193b3JrKTtcXG4gIDkyOlxcdFxcdG10NzZ1X3N0b3BfdHgoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuICA5MzpcXHR9XFxuICA5NDpcXHRcXG4gIDk1OlxcdHN0YXRpYyB2b2lkIG10NzY2M3VfY2xlYW51cChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbiAgOTY6XFx0e1xcbiAgOTc6XFx0XFx0Y2xlYXJfYml0KE1UNzZfU1RBVEVfSU5JVElBTElaRUQsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc3RhdGUpO1xcbiAgOTg6XFx0XFx0bXQ3NnVfcXVldWVzX2RlaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gIDk5OlxcdH1cXG4gMTAwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0Njo0NC4yOTUwOTQzMDZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTIxMzMwMTY3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBEZWVwZXIgaW50byB0aGUgTVQ3NjE1IFVTQiBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBzbyB3ZSd2ZSBiZWVuIGZvY3VzaW5nIG9uIHRoYXQgc3BlY2lmaWMgYXJlYSBvZiB0aGUgTVQ3NjE1IFVTQiBkcml2ZXIsIGJ1dCBpdCdzIHRpbWUgdG8gYnJvYWRlbiB0aGUgc2NvcGUuIEkgbmVlZCB0byBnZXQgYSBtb3JlIGNvbXByZWhlbnNpdmUgdmlldyBvZiBob3cgdGhpcyBhbGwgZnVuY3Rpb25zLiBJIHNob3VsZCBkZWZpbml0ZWx5IGV4YW1pbmUgdGhlIHdob2xlIG9mIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgcGllY2VzLCB3aGVyZSB0aGUgY29udHJvbCBmbG93IG9yaWdpbmF0ZXMsIGFuZCBob3cgaXQgYWxsIGhhbmdzIHRvZ2V0aGVyLiBUaGVyZSBjb3VsZCBiZSBjcml0aWNhbCBjbHVlcyB3aXRoaW4gdGhlIHNlZW1pbmdseSBcInVuaW1wb3J0YW50XCIgc2VjdGlvbnMsIGRldGFpbHMgdGhhdCBhZmZlY3QgdGhlIG1vZHVsZSBiZWhhdmlvci4gVGhpcyBkZWVwZXIgZGl2ZSB3aWxsIGV4cG9zZSBob3cgdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZSBpcyBpbnRlZ3JhdGVkIGludG8gdGhlIHJlc3Qgb2YgdGhlIGxhcmdlciBNVDc2IGZyYW1ld29yaywgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgY2VydGFpbiBkZXNpZ24gY2hvaWNlcy4gVGhhdCBicm9hZGVyIGNvbnRleHQgd2lsbCBiZSBjcnVjaWFsIGZvciB0aGUgcHJvYmxlbSBJJ20gd29ya2luZyBvbi4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MzE4LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0Njo0OS41MDgzOTkwMzVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTgwLFxuICBcIkxpbmVDb3VudFwiOiA5MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTgwOlxcdFxcdGlmIChyZXQpXFxuIDE4MTpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiAxODI6XFx0XFxuIDE4MzpcXHRcXHRyZXQgPSBtdDc2dV9hbGxvY19xdWV1ZXMoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDE4NDpcXHRcXHRpZiAocmV0KVxcbiAxODU6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gMTg2OlxcdFxcbiAxODc6XFx0XFx0cmV0ID0gbXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZShkZXYpO1xcbiAxODg6XFx0XFx0aWYgKHJldClcXG4gMTg5OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDE5MDpcXHRcXG4gMTkxOlxcdFxcdHJldHVybiAwO1xcbiAxOTI6XFx0XFxuIDE5MzpcXHRlcnJvcjpcXG4gMTk0OlxcdFxcdG10NzZ1X3F1ZXVlc19kZWluaXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDE5NTpcXHRcXHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcXG4gMTk2OlxcdFxcdHVzYl9wdXRfZGV2KGludGVyZmFjZV90b191c2JkZXYodXNiX2ludGYpKTtcXG4gMTk3OlxcdFxcbiAxOTg6XFx0XFx0bXQ3Nl9mcmVlX2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMTk5OlxcdFxcbiAyMDA6XFx0XFx0cmV0dXJuIHJldDtcXG4gMjAxOlxcdH1cXG4gMjAyOlxcdFxcbiAyMDM6XFx0c3RhdGljIHZvaWQgbXQ3NjYzdV9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcXG4gMjA0OlxcdHtcXG4gMjA1OlxcdFxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKHVzYl9pbnRmKTtcXG4gMjA2OlxcdFxcbiAyMDc6XFx0XFx0aWYgKCF0ZXN0X2JpdChNVDc2X1NUQVRFX0lOSVRJQUxJWkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKSlcXG4gMjA4OlxcdFxcdFxcdHJldHVybjtcXG4gMjA5OlxcdFxcbiAyMTA6XFx0XFx0aWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoZGV2LVxcdTAwM2VtdDc2Lmh3KTtcXG4gMjExOlxcdFxcdG10NzY2M3VfY2xlYW51cChkZXYpO1xcbiAyMTI6XFx0XFxuIDIxMzpcXHRcXHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcXG4gMjE0OlxcdFxcdHVzYl9wdXRfZGV2KGludGVyZmFjZV90b191c2JkZXYodXNiX2ludGYpKTtcXG4gMjE1OlxcdFxcbiAyMTY6XFx0XFx0bXQ3Nl9mcmVlX2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMjE3OlxcdH1cXG4gMjE4OlxcdFxcbiAyMTk6XFx0I2lmZGVmIENPTkZJR19QTVxcbiAyMjA6XFx0c3RhdGljIGludCBtdDc2NjN1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcXG4gMjIxOlxcdHtcXG4gMjIyOlxcdFxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xcbiAyMjM6XFx0XFxuIDIyNDpcXHRcXHRpZiAoIXRlc3RfYml0KE1UNzZfU1RBVEVfU1VTUEVORCwgXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5zdGF0ZSkgXFx1MDAyNlxcdTAwMjZcXG4gMjI1OlxcdFxcdCAgICBtdDc2MTVfZmlybXdhcmVfb2ZmbG9hZChkZXYpKSB7XFxuIDIyNjpcXHRcXHRcXHRpbnQgZXJyO1xcbiAyMjc6XFx0XFxuIDIyODpcXHRcXHRcXHRlcnIgPSBtdDc2X2Nvbm5hY19tY3Vfc2V0X2hpZl9zdXNwZW5kKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHRydWUsIHRydWUpO1xcbiAyMjk6XFx0XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIDIzMDpcXHRcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiAyMzE6XFx0XFx0fVxcbiAyMzI6XFx0XFxuIDIzMzpcXHRcXHRtdDc2dV9zdG9wX3J4KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbiAyMzQ6XFx0XFx0bXQ3NnVfc3RvcF90eChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMjM1OlxcdFxcbiAyMzY6XFx0XFx0cmV0dXJuIDA7XFxuIDIzNzpcXHR9XFxuIDIzODpcXHRcXG4gMjM5OlxcdHN0YXRpYyBpbnQgbXQ3NjYzdV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuIDI0MDpcXHR7XFxuIDI0MTpcXHRcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcXG4gMjQyOlxcdFxcdGludCBlcnI7XFxuIDI0MzpcXHRcXG4gMjQ0OlxcdFxcdGVyciA9IG10NzZ1X3ZlbmRvcl9yZXF1ZXN0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1UX1ZFTkRfRkVBVFVSRV9TRVQsXFxuIDI0NTpcXHRcXHRcXHRcXHRcXHQgICBVU0JfRElSX09VVCB8IFVTQl9UWVBFX1ZFTkRPUixcXG4gMjQ2OlxcdFxcdFxcdFxcdFxcdCAgIDB4NSwgMHgwLCBOVUxMLCAwKTtcXG4gMjQ3OlxcdFxcdGlmIChlcnIpXFxuIDI0ODpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiAyNDk6XFx0XFxuIDI1MDpcXHRcXHRlcnIgPSBtdDc2dV9yZXN1bWVfcngoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDI1MTpcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4gMjUyOlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDI1MzpcXHRcXG4gMjU0OlxcdFxcdGlmICghdGVzdF9iaXQoTVQ3Nl9TVEFURV9TVVNQRU5ELCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKSBcXHUwMDI2XFx1MDAyNlxcbiAyNTU6XFx0XFx0ICAgIG10NzYxNV9maXJtd2FyZV9vZmZsb2FkKGRldikpXFxuIDI1NjpcXHRcXHRcXHRlcnIgPSBtdDc2X2Nvbm5hY19tY3Vfc2V0X2hpZl9zdXNwZW5kKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIGZhbHNlLCB0cnVlKTtcXG4gMjU3OlxcdFxcbiAyNTg6XFx0XFx0cmV0dXJuIGVycjtcXG4gMjU5OlxcdH1cXG4gMjYwOlxcdCNlbmRpZiAvKiBDT05GSUdfUE0gKi9cXG4gMjYxOlxcdFxcbiAyNjI6XFx0TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG10NzYxNV9kZXZpY2VfdGFibGUpO1xcbiAyNjM6XFx0TU9EVUxFX0ZJUk1XQVJFKE1UNzY2M19PRkZMT0FEX0ZJUk1XQVJFX045KTtcXG4gMjY0OlxcdE1PRFVMRV9GSVJNV0FSRShNVDc2NjNfT0ZGTE9BRF9ST01fUEFUQ0gpO1xcbiAyNjU6XFx0TU9EVUxFX0ZJUk1XQVJFKE1UNzY2M19GSVJNV0FSRV9OOSk7XFxuIDI2NjpcXHRNT0RVTEVfRklSTVdBUkUoTVQ3NjYzX1JPTV9QQVRDSCk7XFxuIDI2NzpcXHRcXG4gMjY4OlxcdHN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2NjN1X2RyaXZlciA9IHtcXG4gMjY5OlxcdFxcdC5uYW1lXFx0XFx0PSBLQlVJTERfTU9ETkFNRSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NDY6NDkuNTA4NDk1NDc1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY4ODQ5Njc2MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc2NjNVIGFuZCBtdDc2MTUgRHJpdmVyIEludGVyYWN0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGb3IgdGhlIE1UNzY2M1UsIHRoZSBjaGlwIElEIGlzIDB4NzY2My4gSSB3YXMgbG9va2luZyBhdCBob3cgdGhlIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAgZnVuY3Rpb24gaGFuZGxlcyB0aGlzLCBhbmQgSSBzZWUgYSBwcm9ibGVtIHJpZ2h0IGF3YXkuIFRoZSBmdW5jdGlvbiBpbmNsdWRlcyB0aGlzIGNoZWNrOlxuXG5gYGBjXG5cdGlmICghaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcblx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG5gYGBcblxuYGlzX210NzYxNWAgY2hlY2tzIGZvciBgbXQ3Nl9jaGlwKGRldikgPT0gMHg3NjE1IHx8IG10NzZfY2hpcChkZXYpID09IDB4NzYxMWAuIEJ1dCB3YWl0LCB0aGUgTVQ3NjYzIGhhcyBhIGNoaXAgSUQgb2YgMHg3NjYzLiBTbywgZm9yIHRoZSBNVDc2NjNVICh0aGUgVVNCIHZlcnNpb24pLCBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIGlzIGltbWVkaWF0ZWx5IHJldHVybmluZyBgLUVPUE5PVFNVUFBgISBUaGlzIGhhcHBlbnMgKmJlZm9yZSogYW55IG9mIHRoZSBsb2dpYyBJJ20gaW50ZXJlc3RlZCBpbiFcblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBpcyBoYXBwZW5pbmcuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgbXQ3NjE1YCAoMHg3NjE1IC8gMHg3NjExKSBldmVuICpleGlzdHMqIGFzIGEgVVNCIGRldmljZSwgb3IgaWYgaXQncyBzdHJpY3RseSBQQ0llLiBMZXQncyBzZWUuLi4gSSdsbCBzZWFyY2ggdGhlIGBtdDc2MTVgIGRyaXZlciBmb3IgZGV2aWNlIGluZm9ybWF0aW9uLlxuXG5Pa2F5LCBsZXQncyBkaWcgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2AgZGlyZWN0b3J5LlxuXG4qICAgYHBjaS5jYDogQWgsIHRoZXJlJ3MgYSBgbXQ3NjE1X3BjaV9kZXZpY2VfdGFibGVgIHRoYXQgaW5jbHVkZXMgZGV2aWNlcyB3aXRoIHRoZSB2ZW5kb3IgSUQgYW5kIDB4NzYxNSwgMHg3NjYzLCBhbmQgMHg3NjExIGNoaXAgSURzLiBUaGlzIGNsZWFybHkgZGVmaW5lcyBQQ0llIGRldmljZXMuXG4qICAgYHVzYi5jYDogRXhjZWxsZW50LiBUaGUgYG10NzYxNV9kZXZpY2VfdGFibGVgIGluY2x1ZGVzIFVTQiBkZXZpY2VzOiB0aGUgVVNCIGRldmljZSBgMHgwZThkLCAweDc2NjNgICphbmQqIGAweDA0M2UsIDB4MzEwY2Agd2hpY2ggaXMgYWxzbyBhbiBNVDc2NjNVIVxuKiAgIGBzZGlvLmNgOiBGb3VuZCBhIGRldmljZSBoZXJlIGZvciBgbXQ3NjYzc2AgKFNESU8pLlxuKiAgIGBzb2MuY2A6IENvbnRhaW5zIGNvZGUgZm9yIGBNVDc2MjJfV01BQ2AgKGJ1aWx0LWluIFdNQUMgb24gTVQ3NjIyIFNvQywgQVJNIC8gQVJDSF9NRURJQVRFSykuXG5cbkFscmlnaHQsIEkgc2VlIGEgY2xlYXIgZGVsaW5lYXRpb24uIFRoZSBNVDc2MTUvTVQ3NjExIGRyaXZlcnMgYXJlIG5vdCAqb25seSogZm9yIFBDSWUgZGV2aWNlcywgc2luY2UgVVNCIGFuZCBTRElPIGFyZSBjb3ZlcmVkLiBUaGUgYHVzYi5jYCBmaWxlIGNvbmZpcm1zIHRoYXQgdGhlcmUgaXMgc3VwcG9ydCBmb3IgdGhlc2UgY2hpcHMgb3ZlciBVU0IuIFNvLCB0aGUgaXNzdWUgaXNuJ3QgdGhhdCBgbXQ3NjE1YCBpcyAqb25seSogUENJZS4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGUgZHJpdmVyIGlzIHJlamVjdGluZyB0aGUgTVQ3NjYzVSBiYXNlZCBvbiB0aGF0IGNoZWNrLiBJJ2xsIG5lZWQgdG8gbG9vayBtb3JlIGNsb3NlbHkgYXQgaG93IHRoZSBkcml2ZXIgaWRlbnRpZmllcyB0aGVzZSBzcGVjaWZpYyBkZXZpY2VzIGFuZCB3aGVyZSB0aGlzIGNvZGUgbWlnaHQgYmUgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYwNDUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0Njo1Ni4zOTM0NjYwMDdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2ODQ2Mzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNkaW9fZGV2aWNlX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYzoyMjpzdGF0aWMgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkIG10NzY2M3NfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtMjMtXFx0eyBTRElPX0RFVklDRShTRElPX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3NjAzKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jPTc2PXN0YXRpYyBpbnQgbXQ3NjYzc19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYzo3NzpcXHRcXHRcXHQgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtNzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYzoxOTpzdGF0aWMgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkIG10NzkyMXNfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmMtMjAtXFx0eyBTRElPX0RFVklDRShTRElPX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3OTAxKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYz05MD1zdGF0aWMgaW50IG10NzkyMXNfcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6OTE6XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTkyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NDY6NTYuNDUwMzE5NDcxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY0NjgzOTI3MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmcgYG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5YCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gVGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2Ugc2hvdWxkIGNvbnNpZGVyIGZ1enppbmcgdGhlIGNvZGUgd2l0aGluIGBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeWAuIFRoZSBmaXJzdCBodXJkbGUgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uLCBvbiB0aGUgZmFjZSBvZiBpdCwgc2VlbXMgdGlnaHRseSBjb3VwbGVkIHRvIHBoeXNpY2FsIGhhcmR3YXJlLiBTcGVjaWZpY2FsbHksIHRoZSBmdW5jdGlvbiBsb2dpYyBpcyB1c2VkIG9ubHkgd2hlbiBhbiBleHRlcm5hbCBQSFkgaXMgcmVnaXN0ZXJlZC4gYGlzX210NzYxNWAgY2hlY2tzIGZvciBNZWRpYXRlayBjaGlwIElEcyAweDc2MTUgb3IgMHg3NjExLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhlc2UgYXJlIGZvdW5kIGluIHRoZSBgbXQ3NjE1X3BjaV9kZXZpY2VfdGFibGVgLCB3aGljaCBzdHJvbmdseSBzdWdnZXN0cyBQQ0llIGRldmljZXMuXG5cblRoZSBrZXkgbmVnYXRpdmUgY3JpdGVyaW9uIGluIHRoZSBwcm9tcHQgaXMgYWJvdXQgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsXCIgc3BlY2lmaWNhbGx5IHZlbmRvci1zcGVjaWZpYyBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgYSByZWQgZmxhZyEgU3RhbmRhcmQgUUVNVSwgYXMgZmFyIGFzIEkga25vdywgZG9lc24ndCBlbXVsYXRlIHRoZSBNZWRpYVRlayBNVDc2MTUvTVQ3NjExIFBDSWUgaGFyZHdhcmUuIFRoaXMgd291bGQgYXV0b21hdGljYWxseSBleGNsdWRlIGl0IGZyb20gYmVpbmcgZnV6emFibGUuXG5cbkJ1dCB3ZSBoYXZlIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gTGV0J3MgdHJhY2UgdGhlIGNhbGxlcnMgb2YgYG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5YC4gV2UndmUgZ290IHR3byBjYWxsZXJzOlxuXG4xLiAgYG10NzYxNV9yZWdpc3Rlcl9kZXZpY2VgICh2aWEgYG10NzYxNV9wY2lfcHJvYmVgKTogVGhpcyBpcyBjYWxsZWQgZHVyaW5nIHRoZSBQQ0llIHByb2JlLiBTbywgYSBNZWRpYXRlayBNVDc2MTUgUENJZSBjYXJkIHByb2JlLiBUaGF0J3MgYSBwaHlzaWNhbCBjYXJkIHByb2JlLlxuMi4gIGBtdDc2MTVfZGJkY19zZXRgOiAgVGhpcyBpcyBjYWxsZWQgdmlhIGEgZGVidWdmcyBlbnRyeS4gSG93ZXZlciwgdG8gKmNyZWF0ZSogdGhlIGRlYnVnZnMgZW50cnksIHlvdSdkIGhhdmUgdG8gaW5pdGlhbGl6ZSBhIGBtdDc2MTVgIGRldmljZSAoZWl0aGVyIHZpYSBgbXQ3NjE1X3JlZ2lzdGVyX2RldmljZWAsIG9yIGJ5IGEgVVNCIG9yIFNESU8gZGV2aWNlIHJlZ2lzdGVyaW5nKS4gVGhpcyBpcyBwb3RlbnRpYWxseSBpbnRlcmVzdGluZy4gSWYgaXQgd2FzIGNyZWF0ZWQgYnkgYG10NzY2M3VgIChVU0IpLCBhbmQgc29tZW9uZSB3cml0ZXMgdG8gYGRiZGNgLCBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIHdpbGwgZXhlY3V0ZS4gSG93ZXZlciwgYmVjYXVzZSBNVDc2NjMgaGFzIGNoaXAgSUQgMHg3NjYzIChgIWlzX210NzYxNWApLCBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIGltbWVkaWF0ZWx5IHJldHVybnMgYC1FT1BOT1RTVVBQYC4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgbmV2ZXIgcmVhY2hlZCBpbiB0aGlzIHNjZW5hcmlvISBBbHNvLCBmb3IgdGhlIE1UNzYxNSBQQ0llIGRldmljZSAod2hpY2ggSVMgYGlzX210NzYxNWApLCB0aGUgZGV2aWNlIGNhbm5vdCBiZSBwcm9iZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VIC8gR0NFKSBiZWNhdXNlIE1UNzYxNSBpcyBwaHlzaWNhbCBNZWRpYVRlayBQQ0llIGhhcmR3YXJlLlxuXG5TbywgaW4gdGhlIGZpcnN0IGNhbGxpbmcgcGF0aCwgeW91IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUuIEluIHRoZSBzZWNvbmQgY2FsbGluZyBwYXRoLCBpZiBpdCBleGVjdXRlcyB3aXRoIGEgVVNCIG9yIFNESU8gZGV2aWNlLCB5b3UgaGF2ZSBhbiBlYXJseSByZXR1cm4gZnJvbSBgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHlgIHRoYXQgc2tpcHMgdGhlIG1vZGlmaWVkIGNvZGUuXG5cblRoZSBmaW5hbCBxdWVzdGlvbjogaXMgdGhlcmUgYW55IHZpcnR1YWwgb3IgbW9jayBpbnRlcmZhY2UgZm9yIGBtdDc2YD8gTWF5YmUgc29tZSBgbWFjODAyMTFfaHdzaW1gIG9yIHNpbWlsYXI/IExldCBtZSBkbyBhIHF1aWNrIHNlYXJjaC4uLiBObywgbm90aGluZyBpbW1lZGlhdGVseSBhcHBhcmVudC4gVGhhdCB3b3VsZCBiZSB0aGUgb25seSBjaGFuY2Ugb2YgcnVubmluZyB0aGlzIGluIGEgVk0uXG5cbkJhc2VkIG9uIHRoZSBldmlkZW5jZSwgdGhlIG1vZGlmaWVkIGNvZGUgaW4gYG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5YCBpcyBvbmx5IHJlYWNoYWJsZSBvbiBwaHlzaWNhbCBoYXJkd2FyZS4gSXQgc2VlbXMgd2Ugc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc4OTgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NDc6MDIuOTE4NzE0MTc2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODM2NDg3NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3Nl9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NDc6MDIuOTY3MDg2MjQyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExNTYxNjQxOTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYG10NzZfY2hpcGAgQ29udGV4dCoqXG5cblJpZ2h0LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhbnkgY29ubmVjdGlvbiBiZXR3ZWVuIHRoaXMgYG1hYzgwMjExX2h3c2ltYCBkcml2ZXIgYW5kIHRoZSBgbXQ3NmAgZnJhbWV3b3JrLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhleSBhcmUgY29tcGxldGVseSBzZXBhcmF0ZTsgYG1hYzgwMjExX2h3c2ltYCBpcyBleHBsaWNpdGx5IGEgc29mdHdhcmUgc2ltdWxhdGlvbiBvZiB0aGUgaGFyZHdhcmUgYW5kIGhhcyBubyBpbmhlcmVudCBsaW5rIHRvIE1lZGlhVGVrJ3MgYG10NzZgIGRyaXZlcnMuIEl0J3MgZGVzaWduZWQgdG8gYmUgaW5kZXBlbmRlbnQuXG5cbkhvd2V2ZXIsIEkgbmVlZCB0byBiZSAqYWJzb2x1dGVseSogc3VyZS4gVGhlIHF1ZXN0aW9uIGlzOiBjb3VsZCB0aGVyZSBiZSBzb21lIHVuZm9yZXNlZW4gaW50ZXJhY3Rpb24sIHBlcmhhcHMgYSBzdWJ0bGUgZGVwZW5kZW5jeSwgb3IgZXZlbiBhIG1pc2NvbmZpZ3VyYXRpb24gdGhhdCBjb3VsZCBsZWFkIHRvIHNvbWV0aGluZyBiZWluZyBpbmNvcnJlY3RseSBzZXQ/IFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBib29sZWFuIGBpc19tdDc2MTVgLiBDYW4gdGhhdCBldmVyIGJlIHRydWUgaW4gdGhlIGNvbnRleHQgb2YgYSBVU0IgZGV2aWNlLCBvciBhIHZpcnR1YWwgZGV2aWNlIGxpa2UgYG1hYzgwMjExX2h3c2ltYD8gU2VlbXMgdW5saWtlbHkgb24gdGhlIGZhY2Ugb2YgaXQsIGJ1dCBiZXR0ZXIgdG8gY29uZmlybS5cblxuVGhlcmVmb3JlLCBteSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYCBkaXJlY3RvcnkuIFRoYXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBjaGVjayB3aGVyZSB0aGUgYG10NzZfY2hpcGAgZGF0YSBzdHJ1Y3R1cmUgaXMgYmVpbmcgaW5pdGlhbGl6ZWQgYW5kIHNldC4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBsb2dpYyB0aGF0IG1pZ2h0IHBvdGVudGlhbGx5IG1pc2lkZW50aWZ5IGEgZGV2aWNlLCBvciBhbnkgY29kZSBwYXRocyB0aGF0IGNvdWxkIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBpbiBhIHZpcnR1YWxpemVkIG9yIFVTQi1jb25uZWN0ZWQgc2NlbmFyaW8uIEknbSBsb29raW5nIGZvciBjbHVlcyBpbiB0aGUgaW5pdGlhbCBzZXR1cCBvZiB0aGlzIGNoaXAgaWRlbnRpZmljYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NTI0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NDc6MTQuNTI4NzMyMDExWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mzg5NDgwMSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiLVxcdTAwM2VjaGlwLmRldl9pZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo0NzoxNC41ODI2MzQzMDJaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM5MTE4NzY2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6XG5cbioqRmluZGluZyB0aGUgT3JpZ2luIG9mIG10NzZfY2hpcCBhbmQgUmVsYXRlZCBWYXJpYWJsZXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgZGVmaW5pdGlvbiBvZiBgbXQ3Nl9jaGlwYCwgYW5kIHVuZGVyc3RhbmQgd2hlcmUgYGRldi1cdTAwM2VjaGlwYCBhbmQgYGNoaXBfaWRgIGFyZSBiZWluZyBhc3NpZ25lZCB0aGVpciB2YWx1ZXMuIFRoaXMgdXN1YWxseSBtZWFucyBzdGFydGluZyB3aXRoIGEgZ3JlcCBzZWFyY2ggYWNyb3NzIHRoZSByZWxldmFudCBzb3VyY2UgY29kZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQuIElzIHRoaXMgYSBzcGVjaWZpYyBkcml2ZXI/IElzIGBtdDc2X2NoaXBgIGEgc3RydWN0dXJlLCBhIG1hY3JvLCBvciBzb21ldGhpbmcgZWxzZT8gSSdsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgYnJvYWRlciBzZWFyY2ggZm9yIGBtdDc2X2NoaXBgIGFuZCBpdHMgdXNlcy4gVGhlbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBkZXYtXHUwMDNlY2hpcGAgKHdoaWNoIGlzIGxpa2VseSBhIG1lbWJlciBvZiBhIGRldmljZSBzdHJ1Y3R1cmUpIGFuZCBgY2hpcF9pZGAuIElzIGBjaGlwX2lkYCBzb21lIGtpbmQgb2YgaWRlbnRpZmllcj8gSXMgYGRldi1cdTAwM2VjaGlwYCBhIHBvaW50ZXIgdG8gc29tZXRoaW5nIGVsc2U/IFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gZmxvdy4gSSdsbCBuZWVkIHRvIGZvbGxvdyB0aGUgY29kZSBwYXRocyB3aGVyZSB0aGVzZSBhcmUgdXNlZCBhbmQvb3Igc2V0LCBsb29raW5nIGZvciBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgcHJvYmUgZnVuY3Rpb25zLCBhbmQgYW55IG90aGVyIHBsYWNlcyB3aGVyZSBoYXJkd2FyZSBpZGVudGlmaWNhdGlvbiBvciBzZXR1cCBpcyBsaWtlbHkgb2NjdXJyaW5nLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGVzZSB2YXJpYWJsZXMgcmVsYXRlIGFuZCB3aGVyZSB0aGV5IGFyZSBzZXQgaXMgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRlc2lnbiBhbmQgb3BlcmF0aW9uIG9mIHRoaXMgZHJpdmVyLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5OTk4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NDc6MTYuOTczODI0NzExWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTAwNjM4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X2NoaXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMjI3PWJvb2wgbXQ3Nl9wY2lfYXNwbV9zdXBwb3J0ZWQoc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTIyOTpzdGF0aWMgaW5saW5lIHUxNiBtdDc2X2NoaXAoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTIzMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMjYxPXN0YXRpYyBpbmxpbmUgaW50IG10NzZfd2VkX2RtYV9zZXR1cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEyNjg6I2RlZmluZSBtdDc2eHhfY2hpcChkZXYpIG10NzZfY2hpcChcXHUwMDI2KChkZXYpLVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjY5LSNkZWZpbmUgbXQ3Nnh4X3JldihkZXYpIG10NzZfcmV2KFxcdTAwMjYoKGRldiktXFx1MDAzZW10NzYpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM9MzE1PXN0YXRpYyB2b2lkIG10NzYxNV9jYWxfZnJlZV9kYXRhKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0zMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6MzIyOlxcdHN3aXRjaCAobXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMzIzLVxcdGNhc2UgMHg3NjIyOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM9MTY5Nj1pbnQgbXQ3NjE1X21jdV9pbml0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNzEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jOjE3MTE6XFx0c3dpdGNoIChtdDc2X2NoaXAoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNzEyLVxcdGNhc2UgMHg3NjIyOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM9MTc0Nz1pbnQgbXQ3NjE1X21jdV9zZXRfZWVwcm9tKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNzU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jOjE3NjA6XFx0c3dpdGNoIChtdDc2X2NoaXAoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNzYxLVxcdGNhc2UgMHg3NjIyOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTE3NT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTI1KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xNzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoxNzc6XFx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4NzkyNTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMTc4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0xODA9c3RhdGljIGlubGluZSBib29sIGlzX210NzkyMChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMTgxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MTgyOlxcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc5MjA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE4My19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MTg1PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5MDIoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE4Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjE4NzpcXHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3OTAyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xODgtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTE5MD1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTIyKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xOTEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoxOTI6XFx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4NzkyMjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMTkzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0xOTU9c3RhdGljIGlubGluZSBib29sIGlzX2Nvbm5hYzIoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE5Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjE5NzpcXHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3OTYxIHx8IGlzX210NzkyMihkZXYpIHx8IGlzX210NzkyMChkZXYpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE5OC1cXHRcXHRcXHRcXHRpc19tdDc5MDIoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yMDE9c3RhdGljIGlubGluZSBib29sIGlzX210NzY2MyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjAyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjAzOlxcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc2NjM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIwNC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjA2PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5MTUoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIwNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjIwODpcXHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3OTE1O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMDktfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTIxMT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTE2KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMTIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoyMTM6XFx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4NzkwNjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjE0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yMTY9c3RhdGljIGlubGluZSBib29sIGlzX210Nzk4MShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjE3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjE4OlxcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc5ODE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIxOS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjIxPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5ODYoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIyMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjIyMzpcXHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3OTg2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMjQtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTIzMT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTk2KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMzIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoyMzM6XFx0cmV0dXJuIG10NzZfY2hpcChkZXYpID09IDB4Nzk5MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjM0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yMzY9c3RhdGljIGlubGluZSBib29sIGlzX210Nzk5MihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjM3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjM4OlxcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc5OTI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIzOS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjQxPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5OTAoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI0Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjI0MzpcXHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3OTkzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yNDQtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTI1MT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3NjIyKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjU2OlxcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MjI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI1Ny19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MjU5PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MTUoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI2MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjI2MTpcXHRyZXR1cm4gbXQ3Nl9jaGlwKGRldikgPT0gMHg3NjE1IHx8IG10NzZfY2hpcChkZXYpID09IDB4NzYxMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjYyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yNjQ9c3RhdGljIGlubGluZSBib29sIGlzX210NzYxMShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjY1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MjY2OlxcdHJldHVybiBtdDc2X2NoaXAoZGV2KSA9PSAweDc2MTE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTI2Ny19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9Mjc0PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2X2Z3X3R4cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjc1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6Mjc2OlxcdHN3aXRjaCAobXQ3Nl9jaGlwKGRldikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjc3LVxcdGNhc2UgMHg3OTYxOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmg9MzE9c3RhdGljIGlubGluZSBib29sIGlzX210NzYxMGUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaC0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaDozNjpcXHRyZXR1cm4gbXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID09IDB4NzYxMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaC0zNy19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaD0zOT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3NjMwKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oLTQwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaDo0MTpcXHRyZXR1cm4gbXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID09IDB4NzYzMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaC00Mi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2kuYz05NT1zdGF0aWMgaW50IG10NzZ4MGVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgYm9vbCByZXN1bWUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2kuYy0xMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmM6MTIwOlxcdGlmIChtdDc2X2NoaXAoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgPT0gMHg3NjEwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmMtMTIxLVxcdFxcdHUxNiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2lfbWN1LmM9MTM9c3RhdGljIGludCBtdDc2eDBlX2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpX21jdS5jLTE0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2lfbWN1LmM6MTU6XFx0Ym9vbCBpc19jb21ib19jaGlwID0gbXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpICE9IDB4NzYxMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2lfbWN1LmMtMTYtXFx0dTMyIHZhbCwgaWxtX2xlbiwgZGxtX2xlbiwgb2Zmc2V0ID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oPTIyNz1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3NngwKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oLTIyOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmg6MjI5OlxcdHJldHVybiBtdDc2X2NoaXAoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgPT0gMHg3NjEwIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmg6MjMwOlxcdCAgICAgICBtdDc2X2NoaXAoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgPT0gMHg3NjMwIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmg6MjMxOlxcdCAgICAgICBtdDc2X2NoaXAoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgPT0gMHg3NjUwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oLTIzMi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaD0yMzQ9c3RhdGljIGlubGluZSBib29sIGlzX210NzZ4MihzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaC0yMzUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oOjIzNjpcXHRyZXR1cm4gbXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID09IDB4NzYxMiB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oOjIzNzpcXHQgICAgICAgbXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID09IDB4NzYzMiB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oOjIzODpcXHQgICAgICAgbXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID09IDB4NzY2MiB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oOjIzOTpcXHQgICAgICAgbXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID09IDB4NzYwMjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaC0yNDAtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX2Rmcy5jPTgyND12b2lkIG10NzZ4MDJfZGZzX2luaXRfcGFyYW1zKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX2Rmcy5jLTgzOS1cXHRcXHRtdDc2X3dyKGRldiwgTVRfQkJQKERGUywgMSksIDB4Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX2Rmcy5jOjg0MDpcXHRcXHRpZiAobXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID09IDB4NzYxMCB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9kZnMuYzo4NDE6XFx0XFx0ICAgIG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA9PSAweDc2MzApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX2Rmcy5jLTg0Mi1cXHRcXHRcXHRtdDc2X3dyKGRldiwgTVRfQkJQKElCSSwgMTEpLCAweGZkZTgwODEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngyLmg9MjY9c3RhdGljIGlubGluZSBib29sIGlzX210NzYxMihzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9tdDc2eDIuaC0yNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngyLmg6Mjg6XFx0cmV0dXJuIG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA9PSAweDc2MTI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngyLmgtMjktfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYz04OT1tdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTMyICpudW0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy05MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo5MTpcXHRzd2l0Y2ggKG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtOTItXFx0Y2FzZSAweDc5MTU6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTMwMj1zdGF0aWMgc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqbXQ3OTE1X2NvcmVkdW1wX2J1aWxkKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTMzOC1cXHRkdW1wLVxcdTAwM2V0dl9uc2VjID0gY3Jhc2hfZGF0YS1cXHUwMDNldGltZXN0YW1wLnR2X25zZWM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozMzk6XFx0ZHVtcC1cXHUwMDNlZGV2aWNlX2lkID0gbXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzQwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmM9Njc9c3RhdGljIGNoYXIgKm10NzkxNV9lZXByb21fbmFtZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5jLTY4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYzo2OTpcXHRzd2l0Y2ggKG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5jLTcwLVxcdGNhc2UgMHg3OTE1Olxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmM9MzYzPW10NzkxNV9lZXByb21faGFzX2JhY2tncm91bmRfcmFkYXIoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5jLTM2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYzozNjk6XFx0c3dpdGNoIChtdDc2X2NoaXAoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYy0zNzAtXFx0Y2FzZSAweDc5MTU6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9NTU1PW10NzkxNV9pbml0X2xlZF9tdXgoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01NjAtXFx0aWYgKGRldi1cXHUwMDNlZGJkY19zdXBwb3J0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjU2MTpcXHRcXHRzd2l0Y2ggKG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01NjItXFx0XFx0Y2FzZSAweDc5MTU6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNTgzLVxcdH0gZWxzZSBpZiAoZGV2LVxcdTAwM2VtcGh5LmxlZHMucGluKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjU4NDpcXHRcXHRzd2l0Y2ggKG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01ODUtXFx0XFx0Y2FzZSAweDc5MTU6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNjAwLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjYwMTpcXHRcXHRzd2l0Y2ggKG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy02MDItXFx0XFx0Y2FzZSAweDc5MTU6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0xMS1cXHRjaGFyICpfZnc7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjEyOlxcdHN3aXRjaCAobXQ3Nl9jaGlwKFxcdTAwMjYoX2RldiktXFx1MDAzZW10NzYpKSB7XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTEzLVxcdGNhc2UgMHg3OTE1OlxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg9NDUxPXN0YXRpYyBpbmxpbmUgY2hhciAqbXQ3OTJ4X3JhbV9uYW1lKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC00NTIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6NDUzOlxcdHN3aXRjaCAobXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC00NTQtXFx0Y2FzZSAweDc5MDI6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oPTQ2Nz1zdGF0aWMgaW5saW5lIGNoYXIgKm10NzkyeF9wYXRjaF9uYW1lKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC00Njgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6NDY5OlxcdHN3aXRjaCAobXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC00NzAtXFx0Y2FzZSAweDc5MDI6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jPTQ4PW10Nzk5Nl9jb3JlZHVtcF9nZXRfbWVtX2xheW91dChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCB1MzIgKm51bSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTQ5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjUwOlxcdHN3aXRjaCAobXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy01MS1cXHRjYXNlIE1UNzk5Nl9ERVZJQ0VfSUQ6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jPTE2Mj1zdGF0aWMgc3RydWN0IG10Nzk5Nl9jb3JlZHVtcCAqbXQ3OTk2X2NvcmVkdW1wX2J1aWxkKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTE5OC1cXHRkdW1wLVxcdTAwM2V0dl9uc2VjID0gY3Jhc2hfZGF0YS1cXHUwMDNldGltZXN0YW1wLnR2X25zZWM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoxOTk6XFx0ZHVtcC1cXHUwMDNlZGV2aWNlX2lkID0gbXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMjAwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9NDY9c3RhdGljIHZvaWQgbXQ3OTk2X2RtYV9jb25maWcoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjY4OlxcdHN3aXRjaCAobXQ3Nl9jaGlwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNjktXFx0Y2FzZSBNVDc5OTJfREVWSUNFX0lEOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM9Mjc9c3RhdGljIGNoYXIgKm10Nzk5Nl9lZXByb21fbmFtZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTI4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYzoyOTpcXHRzd2l0Y2ggKG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTMwLVxcdGNhc2UgTVQ3OTkyX0RFVklDRV9JRDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jPTM4OT1ib29sIG10Nzk5Nl9lZXByb21faGFzX2JhY2tncm91bmRfcmFkYXIoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zOTAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jOjM5MTpcXHRzd2l0Y2ggKG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTM5Mi1cXHRjYXNlIE1UNzk5Nl9ERVZJQ0VfSUQ6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9MTE4Mj1zdGF0aWMgaW50IG10Nzk5Nl92YXJpYW50X3R5cGVfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTExODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjExODc6XFx0c3dpdGNoIChtdDc2X2NoaXAoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTE4OC1cXHRjYXNlIE1UNzk5Nl9ERVZJQ0VfSUQ6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0xNC1cXHRjaGFyICpfZnc7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjE1OlxcdHN3aXRjaCAobXQ3Nl9jaGlwKFxcdTAwMjYoX2RldiktXFx1MDAzZW10NzYpKSB7XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTE2LVxcdGNhc2UgTVQ3OTkyX0RFVklDRV9JRDpcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz00MTA4PW10Nzk5Nl9tY3VfZ2V0X2NhbF9mcmVlX2RhdGEoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQxNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6NDE2MzpcXHRzd2l0Y2ggKG10NzZfY2hpcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQxNjQtXFx0Y2FzZSBNVDc5OTZfREVWSUNFX0lEOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYz05MTA9bXQ3NnVfYWNfdG9faHdxKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSwgdTggcWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy05MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYzo5MTQ6XFx0c3dpdGNoIChtdDc2X2NoaXAoZGV2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmMtOTE1LVxcdGNhc2UgMHg3NjYzOiB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ3OjE3LjAyNDgzOTIxWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYzMjYxNTUzMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgTVQ3NjE1IERyaXZlciBQYXRjaCBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBpbnRvIHRoaXMgcGF0Y2ggYW5kIGRldGVybWluZWQgaXRzIHJlYWNoYWJpbGl0eSBmb3IgZnV6emluZy4gVGhlIGtleSBpcyB0aGF0IHRoZSBtb2RpZmljYXRpb24gYWZmZWN0cyB0aGUgYG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5YCBmdW5jdGlvbiwgZm91bmQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuY2AuXG5cblJpZ2h0IG9mZiB0aGUgYmF0LCB0aGUgZnVuY3Rpb24gYmVnaW5zIHdpdGggYSBjaGVjayB1c2luZyBgaXNfbXQ3NjE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KWAuIFRoaXMgaXMgdGhlIGNydXggb2YgdGhlIGlzc3VlLiBUaGlzIGZ1bmN0aW9uICpvbmx5KiByZXR1cm5zIHRydWUgZm9yIHRoZSBNZWRpYVRlayBNVDc2MTUgYW5kIE1UNzYxMSBjaGlwc2V0cywgc3BlY2lmaWNhbGx5IHRoZSAqUENJZSogdmFyaWFudHMuXG5cbk5vdywgY29uc2lkZXIgdGhlIGVudmlyb25tZW50IHdlJ3JlIHdvcmtpbmcgd2l0aC4gU3l6a2FsbGVyIGFuZCBzdGFuZGFyZCB2aXJ0dWFsaXplZCBzZXR1cHMgbGlrZSBRRU1VIGFuZCBHQ0UgKmRvbid0KiBlbXVsYXRlIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSByZXF1aXJlZCBieSB0aGVzZSBQQ0llIHdpcmVsZXNzIE5JQ3MuIFRoZXNlIGFyZSByZWFsLCB0YW5naWJsZSBQQ0llIGNhcmRzIHRoYXQgbmVlZCB0byBiZSBwbHVnZ2VkIGludG8gYSBwaHlzaWNhbCBzeXN0ZW0uIFRoZXJlJ3Mgbm8gZW11bGF0aW9uIGZvciB0aGF0IGxldmVsIG9mIGRldGFpbC5cblxuQ29uc2VxdWVudGx5LCBhbnkgVVNCIG9yIFNESU8gZGV2aWNlcyB1c2luZyBNZWRpYVRlayBjaGlwcyAobGlrZSB0aGUgTVQ3NjYzVSkgd2lsbCBpbW1lZGlhdGVseSBnZXQgcmVqZWN0ZWQuIFRoZWlyIGNoaXAgSURzIHdpbGwgdHJpZ2dlciB0aGUgYCFpc19tdDc2MTVgIGNvbmRpdGlvbiBhbmQgbGVhZCB0byBhIGAtRU9QTk9UU1VQUGAgcmV0dXJuICpiZWZvcmUqIGhpdHRpbmcgYW55IG9mIHRoZSBtb2RpZmllZCBjb2RlLCBpbmNsdWRpbmcgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCBEQkRDIGNsZWFudXAgcGF0aHMuIFNvLCB0aGF0IG1vZGlmaWVkIHNlY3Rpb24sIHRoZSB0YXJnZXQgb2YgdGhpcyBwYXRjaCwgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIHVuZGVyIHRob3NlIGNvbmRpdGlvbnMuXG5cbkVzc2VudGlhbGx5LCB0aGUgcGF0Y2ggdGFyZ2V0cyBoYXJkd2FyZSB0aGF0IGlzIGZ1bmRhbWVudGFsbHkgdW5hdmFpbGFibGUgaW4gdGhlIHRhcmdldCBmdXp6aW5nIGVudmlyb25tZW50LiBUaGUgcGF0Y2ggcmVxdWlyZXMgdGhhdCBNZWRpYVRlayBNVDc2MTUvTVQ3NjExIFBDSWUgaGFyZHdhcmUgaXMgaW5zdGFudGlhdGVkLCB3aGljaCBpcyBpbXBvc3NpYmxlIGluIG91ciBjdXJyZW50IHNldHVwLlxuXG5UaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg1NzMsIk91dHB1dFRva2VucyI6MTk2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ3OjIzLjM1MDk5Njg2OVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5IGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYyBleHBsaWNpdGx5IGNoZWNrcyBgaWYgKCFpc19tdDc2MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHJldHVybiAtRU9QTk9UU1VQUDtgIGJlZm9yZSBleGVjdXRpbmcgYW55IG1vZGlmaWVkIGxvZ2ljLiBUaGUgaXNfbXQ3NjE1IGNoZWNrIG9ubHkgc3VjY2VlZHMgZm9yIE1UNzYxNSBhbmQgTVQ3NjExIGRldmljZXMsIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIHdpcmVsZXNzIE5JQ3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBVU0IvU0RJTyB2YXJpYW50cyAoc3VjaCBhcyBNVDc2NjMpIGJhaWwgb3V0IGltbWVkaWF0ZWx5IGF0IHRoZSBpc19tdDc2MTUgY2hlY2sgYW5kIGNhbm5vdCBleGVjdXRlIHRoZSBtb2RpZmllZCBjb2RlLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIG10NzYxNV9yZWdpc3Rlcl9leHRfcGh5IGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYyBleHBsaWNpdGx5IGNoZWNrcyBgaWYgKCFpc19tdDc2MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHJldHVybiAtRU9QTk9UU1VQUDtgIGJlZm9yZSBleGVjdXRpbmcgYW55IG1vZGlmaWVkIGxvZ2ljLiBUaGUgaXNfbXQ3NjE1IGNoZWNrIG9ubHkgc3VjY2VlZHMgZm9yIE1UNzYxNSBhbmQgTVQ3NjExIGRldmljZXMsIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIHdpcmVsZXNzIE5JQ3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBVU0IvU0RJTyB2YXJpYW50cyAoc3VjaCBhcyBNVDc2NjMpIGJhaWwgb3V0IGltbWVkaWF0ZWx5IGF0IHRoZSBpc19tdDc2MTUgY2hlY2sgYW5kIGNhbm5vdCBleGVjdXRlIHRoZSBtb2RpZmllZCBjb2RlLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjQ3OjIzLjM1MTAyNjM5OVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow2nrtq[1] Phase: Running StartedAt: 2026-09-10 22:47:49 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2nrtq[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-10 22:47:49 +0000 UTC FinishedAt: 2026-09-10 22:47:59 +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,}