Name: series-workflownvvbm Phase: Failed StartedAt: 2026-07-02 14:58:05 +0000 UTC FinishedAt: 2026-07-02 15:17:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvvbm[0] Phase: Succeeded StartedAt: 2026-07-02 14:58:05 +0000 UTC FinishedAt: 2026-07-02 15:17:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvvbm[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 14:58:05 +0000 UTC FinishedAt: 2026-07-02 15:17:31 +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+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgYSBudW1lcmljIGNvbnN0YW50IGluaXRpYWxpemF0aW9uICguYmVhY29uX2ludF9taW5fZ2NkID0gMTAwKSBmcm9tIGEgc3RhdGljIGNvbmZpZ3VyYXRpb24gc3RydWN0IGluIHRoZSBNZWRpYXRlayBNVDc5OTYgUENJZSBXaS1GaSBkcml2ZXIuIFRoaXMgaXMgYSB0cml2aWFsIGRhdGEgc3RydWN0dXJlIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZHJpdmVyJiMzOTtzIGV4ZWN1dGlvbiBmbG93LiBGdXJ0aGVybW9yZSwgdGhlIE1UNzk5NiBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBtZWFuaW5nZnVsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2Q4YWNmMzk3Y2VhZDhhOTdmNGVmMDEyMTY4YjFlODg5NWE1MjUzYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMTU6MTY6MTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jXG5pbmRleCBkNmY5YWExYWI1MmQxMi4uMDZmNzY0YTU0NDA1MjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuY1xuQEAgLTM0LDcgJiM0MzszNCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGlmX2NvbWJfZ2xvYmFsID0ge1xuIFx0XHRcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzQwKSB8XG4gXHRcdFx0ICAgICAgIEJJVChOTDgwMjExX0NIQU5fV0lEVEhfODApIHxcbiBcdFx0XHQgICAgICAgQklUKE5MODAyMTFfQ0hBTl9XSURUSF8xNjApLFxuLVx0LmJlYWNvbl9pbnRfbWluX2djZCA9IDEwMCxcbiB9O1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGlmX2NvbWJfZ2xvYmFsXzc5OTIgPSB7XG5AQCAtNDcsNyAmIzQzOzQ2LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gaWZfY29tYl9nbG9iYWxfNzk5MiA9IHtcbiBcdFx0XHQgICAgICAgQklUKE5MODAyMTFfQ0hBTl9XSURUSF80MCkgfFxuIFx0XHRcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzgwKSB8XG4gXHRcdFx0ICAgICAgIEJJVChOTDgwMjExX0NIQU5fV0lEVEhfMTYwKSxcbi1cdC5iZWFjb25faW50X21pbl9nY2QgPSAxMDAsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9saW1pdCBpZl9saW1pdHNbXSA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNToxNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGEgbnVtZXJpYyBjb25zdGFudCBpbml0aWFsaXphdGlvbiAoLmJlYWNvbl9pbnRfbWluX2djZCA9IDEwMCkgZnJvbSBhIHN0YXRpYyBjb25maWd1cmF0aW9uIHN0cnVjdCBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTk2IFBDSWUgV2ktRmkgZHJpdmVyLiBUaGlzIGlzIGEgdHJpdmlhbCBkYXRhIHN0cnVjdHVyZSBjaGFuZ2UgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGRyaXZlciYjMzk7cyBleGVjdXRpb24gZmxvdy4gRnVydGhlcm1vcmUsIHRoZSBNVDc5OTYgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIG1ha2luZyBpdCB1bnJlYWNoYWJsZSBmb3IgbWVhbmluZ2Z1bCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgN2Q4YWNmMzk3Y2VhZDhhOTdmNGVmMDEyMTY4YjFlODg5NWE1MjUzYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIgMTU6MTY6MTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMKaW5kZXggZDZmOWFhMWFiNTJkMTIuLjA2Zjc2NGE1NDQwNTIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jCkBAIC0zNCw3ICYjNDM7MzQsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbiBpZl9jb21iX2dsb2JhbCA9IHsKIAkJCSAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzQwKSB8CiAJCQkgICAgICAgQklUKE5MODAyMTFfQ0hBTl9XSURUSF84MCkgfAogCQkJICAgICAgIEJJVChOTDgwMjExX0NIQU5fV0lEVEhfMTYwKSwKLQkuYmVhY29uX2ludF9taW5fZ2NkID0gMTAwLAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gaWZfY29tYl9nbG9iYWxfNzk5MiA9IHsKQEAgLTQ3LDcgJiM0Mzs0Niw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGlmX2NvbWJfZ2xvYmFsXzc5OTIgPSB7CiAJCQkgICAgICAgQklUKE5MODAyMTFfQ0hBTl9XSURUSF80MCkgfAogCQkJICAgICAgIEJJVChOTDgwMjExX0NIQU5fV0lEVEhfODApIHwKIAkJCSAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzE2MCksCi0JLmJlYWNvbl9pbnRfbWluX2djZCA9IDEwMCwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2xpbWl0IGlmX2xpbWl0c1tdID0gewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDU1CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1pbm9yIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuY2AuIEl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGl0IHJlbW92ZXMgYC5iZWFjb25faW50X21pbl9nY2QgPSAxMDAsYCBmcm9tIHR3byBgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbmAgdmFyaWFibGVzLCBgaWZfY29tYl9nbG9iYWxgIGFuZCBgaWZfY29tYl9nbG9iYWxfNzk5MmAuIEZ1bmN0aW9uYWxseSwgdGhpcyB0d2Vha3MgYSBjb25zdHJhaW50IHJlbGF0ZWQgdG8gdGhlIGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yIGZvciB0aGUgYmVhY29uIGludGVydmFsLiBJdCYjMzk7cyBhIHNtYWxsIGNoYW5nZSwgbm90aGluZyBlYXJ0aC1zaGF0dGVyaW5nLgoKQnV0IHdhaXQgYSBtaW51dGUsIEkgbmVlZCB0byBjb25zaWRlciB0aGUgY29udGV4dC4gVGhpcyBpcyBhIE1lZGlhdGVrIE1UNzk5NiB3aXJlbGVzcyBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gdGhpcyBldmVuIGJlIHRyaWdnZXJlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVT8gVGhlc2UgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBvZnRlbiBhcmVuJiMzOTt0IGVhc2lseSByZWFjaGFibGUgdW5sZXNzIHRoZXJlJiMzOTtzIGFuIGVtdWxhdG9yIG9yIGl0JiMzOTtzIGEgVVNCIGRldmljZSB0aGF0IGNhbiBiZSBlbXVsYXRlZCB1c2luZyBhIGR1bW15IGhvc3QgY29udHJvbGxlciBvciBhIFVTQiBnYWRnZXQuIEl0IHJlYWxseSBkZXBlbmRzIG9uIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2UuIFNvLCBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlIE1UNzk5NiBpcyBhIFBDSWUsIFVTQiwgb3IgU0RJTyBkZXZpY2UuIFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIGluZm9ybWF0aW9uIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTk2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2NTE4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9NYWtlZmlsZS0yLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTVQ3OTk2RSkgJiM0Mzs9IG10Nzk5NmUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvTWFrZWZpbGUtNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L01ha2VmaWxlOjU6bXQ3OTk2ZS15IDo9IHBjaS5vIGluaXQubyBkbWEubyBlZXByb20ubyBtYWluLm8gbWN1Lm8gbWFjLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L01ha2VmaWxlLTYtXHQgICAgIGRlYnVnZnMubyBtbWlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L01ha2VmaWxlLTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9NYWtlZmlsZTo4Om10Nzk5NmUtJChDT05GSUdfTVQ3OTk2X05QVSkgJiM0Mzs9IG5wdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9NYWtlZmlsZTo5Om10Nzk5NmUtJChDT05GSUdfREVWX0NPUkVEVU1QKSAmIzQzOz0gY29yZWR1bXAub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM9MTI9TU9EVUxFX1BBUk1fREVTQyhjb3JlZHVtcF9tZW1kdW1wLCBcJiMzNDtPcHRpb25hbCBhYmlsaXR5IHRvIGR1bXAgZmlybXdhcmUgbWVtb3J5XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjE0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTk2X21lbV9yZWdpb24gbXQ3OTk2X21lbV9yZWdpb25zW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTE1LVx0e1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjQ3OmNvbnN0IHN0cnVjdCBtdDc5OTZfbWVtX3JlZ2lvbipcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6NDg6bXQ3OTk2X2NvcmVkdW1wX2dldF9tZW1fbGF5b3V0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHUzMiAqbnVtKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy00OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy01Mi1cdGNhc2UgTVQ3OTk2X0RFVklDRV9JRF8yOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo1MzpcdFx0Km51bSA9IEFSUkFZX1NJWkUobXQ3OTk2X21lbV9yZWdpb25zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6NTQ6XHRcdHJldHVybiBcdTAwMjZtdDc5OTZfbWVtX3JlZ2lvbnNbMF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTU1LVx0ZGVmYXVsdDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo2MDpzdGF0aWMgaW50IG10Nzk5Nl9jb3JlZHVtcF9nZXRfbWVtX3NpemUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNjEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo2MjpcdGNvbnN0IHN0cnVjdCBtdDc5OTZfbWVtX3JlZ2lvbiAqbWVtX3JlZ2lvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNjMtXHRzaXplX3Qgc2l6ZSA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy02Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6Njc6XHRtZW1fcmVnaW9uID0gbXQ3OTk2X2NvcmVkdW1wX2dldF9tZW1fbGF5b3V0KGRldiwgXHUwMDI2bnVtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNjgtXHRpZiAoIW1lbV9yZWdpb24pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy03Ni1cdC8qIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBoZWFkZXJzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjc3Olx0c2l6ZSAmIzQzOz0gbnVtICogc2l6ZW9mKHN0cnVjdCBtdDc5OTZfbWVtX2hkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTc4LVx0LyogbWFrZSBzdXJlIGl0IGlzIGFsaWduZWQgNCBieXRlcyBmb3IgZGVidWcgbWVzc2FnZSBwcmludCBvdXQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo4NDpzdHJ1Y3QgbXQ3OTk2X2NyYXNoX2RhdGEgKm10Nzk5Nl9jb3JlZHVtcF9uZXcoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtODUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo4NjpcdHN0cnVjdCBtdDc5OTZfY3Jhc2hfZGF0YSAqY3Jhc2hfZGF0YSA9IGRldi1cdTAwM2Vjb3JlZHVtcC5jcmFzaF9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy04Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jPTEwMD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoxMDE6bXQ3OTk2X2NvcmVkdW1wX2Z3X3N0YXRlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBtdDc5OTZfY29yZWR1bXAgKmR1bXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTEwMi1cdFx0XHQgYm9vbCAqZXhjZXB0aW9uKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM9MTE3PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjExODptdDc5OTZfY29yZWR1bXBfZndfc3RhY2soc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IG10Nzk5Nl9jb3JlZHVtcCAqZHVtcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMTE5LVx0XHRcdCBib29sIGV4Y2VwdGlvbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTE2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MTYyOnN0YXRpYyBzdHJ1Y3QgbXQ3OTk2X2NvcmVkdW1wICptdDc5OTZfY29yZWR1bXBfYnVpbGQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMTYzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MTY0Olx0c3RydWN0IG10Nzk5Nl9jcmFzaF9kYXRhICpjcmFzaF9kYXRhID0gZGV2LVx1MDAzZWNvcmVkdW1wLmNyYXNoX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjE2NTpcdHN0cnVjdCBtdDc5OTZfY29yZWR1bXAgKmR1bXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjE2NjpcdHN0cnVjdCBtdDc5OTZfY29yZWR1bXBfbWVtICpkdW1wX21lbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMTY3LVx0c2l6ZV90IGxlbiwgc29mYXIgPSAwLCBoZHJfbGVuID0gc2l6ZW9mKCpkdW1wKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTE4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MTg3Olx0ZHVtcCA9IChzdHJ1Y3QgbXQ3OTk2X2NvcmVkdW1wICopKGJ1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTE4OC1cdGR1bXAtXHUwMDNlbGVuID0gbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMjAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoyMDE6XHRtdDc5OTZfY29yZWR1bXBfZndfc3RhdGUoZGV2LCBkdW1wLCBcdTAwMjZleGNlcHRpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoyMDI6XHRtdDc5OTZfY29yZWR1bXBfZndfc3RhY2soZGV2LCBkdW1wLCBleGNlcHRpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTIwNC1cdC8qIGdhdGhlciBtZW1vcnkgY29udGVudCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoyMDU6XHRkdW1wX21lbSA9IChzdHJ1Y3QgbXQ3OTk2X2NvcmVkdW1wX21lbSAqKShidWYgJiM0Mzsgc29mYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMDYtXHRkdW1wX21lbS1cdTAwM2VsZW4gPSBjcmFzaF9kYXRhLVx1MDAzZW1lbWR1bXBfYnVmX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTIxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MjE2OmludCBtdDc5OTZfY29yZWR1bXBfc3VibWl0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTIxNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjIxODpcdHN0cnVjdCBtdDc5OTZfY29yZWR1bXAgKmR1bXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTIxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MjIwOlx0ZHVtcCA9IG10Nzk5Nl9jb3JlZHVtcF9idWlsZChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMjEtXHRpZiAoIWR1bXApIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTIzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MjMxOmludCBtdDc5OTZfY29yZWR1bXBfcmVnaXN0ZXIoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMjMyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MjMzOlx0c3RydWN0IG10Nzk5Nl9jcmFzaF9kYXRhICpjcmFzaF9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yNDEtXHRpZiAoY29yZWR1bXBfbWVtZHVtcCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoyNDI6XHRcdGNyYXNoX2RhdGEtXHUwMDNlbWVtZHVtcF9idWZfbGVuID0gbXQ3OTk2X2NvcmVkdW1wX2dldF9tZW1fc2l6ZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yNDMtXHRcdGlmICghY3Jhc2hfZGF0YS1cdTAwM2VtZW1kdW1wX2J1Zl9sZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjI1Nzp2b2lkIG10Nzk5Nl9jb3JlZHVtcF91bnJlZ2lzdGVyKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTI1OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo3OiNpbmNsdWRlIFwmIzM0O210Nzk5Ni5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oOjk6c3RydWN0IG10Nzk5Nl9jb3JlZHVtcCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTEwLVx0Y2hhciBtYWdpY1sxNl07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NDA6c3RydWN0IG10Nzk5Nl9jb3JlZHVtcF9tZW0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC00MS1cdHUzMiBsZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC00NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NDU6c3RydWN0IG10Nzk5Nl9tZW1faGRyIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtNDYtXHR1MzIgc3RhcnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC01MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NTE6c3RydWN0IG10Nzk5Nl9tZW1fcmVnaW9uIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtNTItXHR1MzIgc3RhcnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC01OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NjA6Y29uc3Qgc3RydWN0IG10Nzk5Nl9tZW1fcmVnaW9uICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NjE6bXQ3OTk2X2NvcmVkdW1wX2dldF9tZW1fbGF5b3V0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHUzMiAqbnVtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NjI6c3RydWN0IG10Nzk5Nl9jcmFzaF9kYXRhICptdDc5OTZfY29yZWR1bXBfbmV3KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo2MzppbnQgbXQ3OTk2X2NvcmVkdW1wX3N1Ym1pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NjQ6aW50IG10Nzk5Nl9jb3JlZHVtcF9yZWdpc3RlcihzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NjU6dm9pZCBtdDc5OTZfY29yZWR1bXBfdW5yZWdpc3RlcihzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtNjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC02OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6Njk6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgbXQ3OTk2X21lbV9yZWdpb24gKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo3MDptdDc5OTZfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgdTMyICpudW0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTcxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo3NTpzdGF0aWMgaW5saW5lIGludCBtdDc5OTZfY29yZWR1bXBfc3VibWl0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTc2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oPTgwPXN0YXRpYyBpbmxpbmUgc3RydWN0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oOjgxOm10Nzk5Nl9jcmFzaF9kYXRhICptdDc5OTZfY29yZWR1bXBfbmV3KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTgyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTg1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo4NjpzdGF0aWMgaW5saW5lIGludCBtdDc5OTZfY29yZWR1bXBfcmVnaXN0ZXIoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtODcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oOjkxOnN0YXRpYyBpbmxpbmUgdm9pZCBtdDc5OTZfY29yZWR1bXBfdW5yZWdpc3RlcihzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC05Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTYtI2luY2x1ZGUgXHUwMDNjbGludXgvcmVsYXkuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc6I2luY2x1ZGUgXCYjMzQ7bXQ3OTk2LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04LSNpbmNsdWRlIFwmIzM0O2VlcHJvbS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTIzPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyNDptdDc5OTZfaW1wbGljaXRfdHhiZl9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MjY6XHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MzM6XHRyZXR1cm4gbXQ3OTk2X21jdV9zZXRfdHhiZihkZXYsIEJGX0hXX0VOX1VQREFURSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzQtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0zNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6Mzc6bXQ3OTk2X2ltcGxpY2l0X3R4YmZfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozOTpcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo0NjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19pbXBsaWNpdF90eGJmLCBtdDc5OTZfaW1wbGljaXRfdHhiZl9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDc6XHRcdFx0IG10Nzk5Nl9pbXBsaWNpdF90eGJmX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTUwPXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NTE6bXQ3OTk2X3N5c19yZWNvdmVyeV9zZXQoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy01Mi1cdFx0XHRzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy01My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NTQ6XHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTUtXHRjaGFyIGJ1ZlsxNl0sICpzZXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTkxLVx0Y2FzZSBVTklfQ01EX1NFUl9RVUVSWTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo5MjpcdFx0cmV0ID0gbXQ3OTk2X21jdV9zZXRfc2VyKGRldiwgVU5JX0NNRF9TRVJfUVVFUlksIDAsIGJhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTkzLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTAwLVx0Y2FzZSBVTklfQ01EX1NFUl9TRVRfUkVDT1ZFUl9MNF9NRFA6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MTAxOlx0XHRyZXQgPSBtdDc5OTZfbWN1X3NldF9zZXIoZGV2LCBVTklfQ01EX1NFUl9TRVQsIEJJVCh2YWwpLCBiYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0xMDItXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTEwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoxMDU6XHRcdHJldCA9IG10Nzk5Nl9tY3Vfc2V0X3NlcihkZXYsIFVOSV9DTURfU0VSX1RSSUdHRVIsIHZhbCwgYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTA2LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTExLVx0XHRkZXYtXHUwMDNlcmVjb3Zlcnkuc3RhdGUgfD0gTVRfTUNVX0NNRF9XRFRfTUFTSztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoxMTI6XHRcdG10Nzk5Nl9yZXNldChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTExMy1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTExNi1cdGNhc2UgVU5JX0NNRF9TRVJfU0VUX1NZU1RFTV9BU1NFUlQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MTE3Olx0XHRyZXQgPSBtdDc5OTZfbWN1X3RyaWdnZXJfYXNzZXJ0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTE4LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0xMjg9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoxMjk6bXQ3OTk2X3N5c19yZWNvdmVyeV9nZXQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0xMzAtXHRcdFx0c2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTMxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoxMzI6XHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTMzLVx0Y2hhciAqYnVmZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMjE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjIxNTpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBtdDc5OTZfc3lzX3JlY292ZXJ5X29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyMTY6XHQud3JpdGUgPSBtdDc5OTZfc3lzX3JlY292ZXJ5X3NldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyMTc6XHQucmVhZCA9IG10Nzk5Nl9zeXNfcmVjb3ZlcnlfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTIxOC1cdC5vcGVuID0gc2ltcGxlX29wZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTIyMj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MjIzOm10Nzk5Nl9yYWRhcl90cmlnZ2VyKHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMjI0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMjI2LSNkZWZpbmUgUkFEQVJfQkFDS0dST1VORFx0MlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjIyNzpcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjIyODpcdHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkgPSBtdDc5OTZfYmFuZF9waHkoZGV2LCBOTDgwMjExX0JBTkRfNUdIWik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMjI5LVx0c3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MjQ4Olx0cmRkX2lkeCA9IG10Nzk5Nl9nZXRfcmRkX2lkeChwaHksIHZhbCA9PSBSQURBUl9CQUNLR1JPVU5EKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNDktXHRpZiAocmRkX2lkeCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MjU5Olx0cmV0dXJuIG10Nzk5Nl9tY3VfcmRkX2NtZChkZXYsIFJERF9SQURBUl9FTVVMQVRFLCByZGRfaWR4LCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNjAtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0yNjI9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmFkYXJfdHJpZ2dlciwgTlVMTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyNjM6XHRcdFx0IG10Nzk5Nl9yYWRhcl90cmlnZ2VyLCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9MjY1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyNjY6bXQ3OTk2X3JkZF9tb25pdG9yKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNjcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjI2ODpcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cdTAwM2Vwcml2YXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNjktXHRzdHJ1Y3QgY2ZnODAyMTFfY2hhbl9kZWYgKmNoYW5kZWYgPSBcdTAwMjZkZXYtXHUwMDNlcmRkMl9jaGFuZGVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0zMTI9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjMxMzptdDc5OTZfZndfZGVidWdfd21fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzE0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozMTU6XHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zMTYtXHRlbnVtIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjMzODpcdHJldCA9IG10Nzk5Nl9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV00sIHZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzM5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM1MTpcdFx0cmV0ID0gbXQ3OTk2X21jdV9md19kYmdfY3RybChkZXYsIGRlYnVnLCB2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM1Mi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9MzU5PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozNjA6bXQ3OTk2X2Z3X2RlYnVnX3dtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zNjEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM2MjpcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM2My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM2OTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193bSwgbXQ3OTk2X2Z3X2RlYnVnX3dtX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozNzA6XHRcdFx0IG10Nzk5Nl9md19kZWJ1Z193bV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0zNzI9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM3MzptdDc5OTZfZndfZGVidWdfd2Ffc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzc0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozNzU6XHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zNzYtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zNzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MzgwOlx0cmV0ID0gbXQ3OTk2X21jdV9md19sb2dfMl9ob3N0KGRldiwgTUNVX0ZXX0xPR19XQSwgZGV2LVx1MDAzZWZ3X2RlYnVnX3dhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zODEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6Mzg0Olx0cmV0dXJuIG10Nzk5Nl9tY3Vfd2FfY21kKGRldiwgTUNVX1dBX1BBUkFNX0NNRChTRVQpLCBNQ1VfV0FfUEFSQU1fUERNQV9SWCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zODUtXHRcdFx0XHQgISFkZXYtXHUwMDNlZndfZGVidWdfd2EsIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0zODg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM4OTptdDc5OTZfZndfZGVidWdfd2FfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM5MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MzkxOlx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzkyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zOTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6Mzk4OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX3dhLCBtdDc5OTZfZndfZGVidWdfd2FfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM5OTpcdFx0XHQgbXQ3OTk2X2Z3X2RlYnVnX3dhX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDAwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz00MjU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjQyNjptdDc5OTZfZndfZGVidWdfYmluX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQyNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQzMS1cdH07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDMyOlx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDMzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDQ0Olx0cmV0dXJuIG10Nzk5Nl9md19kZWJ1Z193bV9zZXQoZGV2LCBkZXYtXHUwMDNlZndfZGVidWdfd20pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ0NS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTQ0Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDQ4Om10Nzk5Nl9md19kZWJ1Z19iaW5fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ0OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDUwOlx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDUxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDU3OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX2JpbiwgbXQ3OTk2X2Z3X2RlYnVnX2Jpbl9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDU4Olx0XHRcdCBtdDc5OTZfZndfZGVidWdfYmluX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTQ2MD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDYxOm10Nzk5Nl9md191dGlsX3dhX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ2Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDYzOlx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGZpbGUtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDY1LVx0aWYgKGRldi1cdTAwM2Vmd19kZWJ1Z193YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo0NjY6XHRcdHJldHVybiBtdDc5OTZfbWN1X3dhX2NtZChkZXYsIE1DVV9XQV9QQVJBTV9DTUQoUVVFUlkpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ2Ny1cdFx0XHRcdFx0IE1DVV9XQV9QQVJBTV9DUFVfVVRJTCwgMCwgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo0NzI6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10Nzk5Nl9md191dGlsX3dhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9NDc0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDc1Om10Nzk5Nl9hbXBkdV9zdGF0X3JlYWRfcGh5KHN0cnVjdCBtdDc5OTZfcGh5ICpwaHksIHN0cnVjdCBzZXFfZmlsZSAqZmlsZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NzYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjQ3NzpcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ3OC1cdGludCBib3VuZFsxNV0sIHJhbmdlWzhdLCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz01MDQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1MDU6bXQ3OTk2X3R4YmZfc3RhdF9yZWFkX3BoeShzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5LCBzdHJ1Y3Qgc2VxX2ZpbGUgKnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTA2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9NTUyPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NTUzOm10Nzk5Nl90eF9zdGF0c19zaG93X3BoeShzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTU0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjU1OTpcdG10Nzk5Nl9tYWNfdXBkYXRlX3N0YXRzKHBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NTYwOlx0bXQ3OTk2X2FtcGR1X3N0YXRfcmVhZF9waHkocGh5LCBmaWxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy01NjEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTU2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1Njk6XHRtdDc5OTZfdHhiZl9zdGF0X3JlYWRfcGh5KHBoeSwgZmlsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTcwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz01ODQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjU4NTptdDc5OTZfdHhfc3RhdHNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTg2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1ODc6XHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZmlsZS1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjU4ODpcdHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkgPSBcdTAwMjZkZXYtXHUwMDNlcGh5O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTU4OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjU5MjpcdG10Nzk5Nl90eF9zdGF0c19zaG93X3BoeShmaWxlLCBwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjU5MzpcdHBoeSA9IG10Nzk5Nl9waHkyKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTk0LVx0aWYgKHBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1OTU6XHRcdG10Nzk5Nl90eF9zdGF0c19zaG93X3BoeShmaWxlLCBwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjU5NjpcdHBoeSA9IG10Nzk5Nl9waHkzKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTk3LVx0aWYgKHBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1OTg6XHRcdG10Nzk5Nl90eF9zdGF0c19zaG93X3BoeShmaWxlLCBwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTU5OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNjA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjYwNTpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3OTk2X3R4X3N0YXRzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9NjA3PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjA4Om10Nzk5Nl9od19xdWV1ZV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdTMyIHNpemUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNjA5LVx0XHQgICAgIGNvbnN0IHN0cnVjdCBod19xdWV1ZV9tYXAgKm1hcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02MTAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjYxMTpcdHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkgPSBzLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjEyOlx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IHBoeS1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNjEzLVx0dTMyIGksIHZhbDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9NjM4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjM5Om10Nzk5Nl9zdGFfaHdfcXVldWVfcmVhZCh2b2lkICpkYXRhLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTY0MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjQxOlx0c3RydWN0IG10Nzk5Nl9zdGEgKm1zdGEgPSAoc3RydWN0IG10Nzk5Nl9zdGEgKilzdGEtXHUwMDNlZHJ2X3ByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjQyOlx0c3RydWN0IG10Nzk5Nl92aWYgKm12aWYgPSBtc3RhLVx1MDAzZXZpZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo2NDM6XHRzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5ID0gbXQ3OTk2X3ZpZl9saW5rX3BoeShcdTAwMjZtdmlmLVx1MDAzZWRlZmxpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTY0NC1cdHN0cnVjdCBpZWVlODAyMTFfbGlua19zdGEgKmxpbmtfc3RhO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02NDYtXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjY0NzpcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNjQ4LVx0dW5zaWduZWQgaW50IGxpbmtfaWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTY1OC1cdGZvcl9lYWNoX3N0YV9hY3RpdmVfbGluayh2aWYsIHN0YSwgbGlua19zdGEsIGxpbmtfaWQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo2NTk6XHRcdHN0cnVjdCBtdDc5OTZfc3RhX2xpbmsgKm1zdGFfbGluaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02NjAtXHRcdHN0cnVjdCBtdDc2X3ZpZl9saW5rICptbGluaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNjY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjY2NzpcdFx0bXN0YV9saW5rID0gbXQ3OTk2X3N0YV9saW5rKG1zdGEsIGxpbmtfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTY2OC1cdFx0aWYgKCFtc3RhX2xpbmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTY5ND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6Njk1Om10Nzk5Nl9od19xdWV1ZXNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNjk2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo2OTc6XHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZmlsZS1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjY5ODpcdHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkgPSBcdTAwMjZkZXYtXHUwMDNlcGh5O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTY5OS1cdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaHdfcXVldWVfbWFwIHBsZV9xdWV1ZV9tYXBbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzQ3LVx0c2VxX3B1dHMoZmlsZSwgXCYjMzQ7UExFIG5vbi1lbXB0eSBxdWV1ZSBpbmZvOlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NzQ4Olx0bXQ3OTk2X2h3X3F1ZXVlX3JlYWQoZmlsZSwgQVJSQVlfU0laRShwbGVfcXVldWVfbWFwKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NDktXHRcdFx0ICAgICBcdTAwMjZwbGVfcXVldWVfbWFwWzBdKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzUyLVx0aWVlZTgwMjExX2l0ZXJhdGVfc3RhdGlvbnNfYXRvbWljKHBoeS1cdTAwM2VtdDc2LVx1MDAzZWh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc1MzpcdFx0XHRcdFx0ICBtdDc5OTZfc3RhX2h3X3F1ZXVlX3JlYWQsIGZpbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc1NDpcdHBoeSA9IG10Nzk5Nl9waHkyKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzU1LVx0aWYgKHBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NTYtXHRcdGllZWU4MDIxMV9pdGVyYXRlX3N0YXRpb25zX2F0b21pYyhwaHktXHUwMDNlbXQ3Ni1cdTAwM2VodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo3NTc6XHRcdFx0XHRcdFx0ICBtdDc5OTZfc3RhX2h3X3F1ZXVlX3JlYWQsIGZpbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc1ODpcdHBoeSA9IG10Nzk5Nl9waHkzKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzU5LVx0aWYgKHBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NjAtXHRcdGllZWU4MDIxMV9pdGVyYXRlX3N0YXRpb25zX2F0b21pYyhwaHktXHUwMDNlbXQ3Ni1cdTAwM2VodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo3NjE6XHRcdFx0XHRcdFx0ICBtdDc5OTZfc3RhX2h3X3F1ZXVlX3JlYWQsIGZpbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTc2Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzY0LVx0c2VxX3B1dHMoZmlsZSwgXCYjMzQ7UFNFIG5vbi1lbXB0eSBxdWV1ZSBpbmZvOlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NzY1Olx0bXQ3OTk2X2h3X3F1ZXVlX3JlYWQoZmlsZSwgQVJSQVlfU0laRShwc2VfcXVldWVfbWFwKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NjYtXHRcdFx0ICAgICBcdTAwMjZwc2VfcXVldWVfbWFwWzBdKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc3MTpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3OTk2X2h3X3F1ZXVlcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTc3Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6Nzc0Om10Nzk5Nl94bWl0X3F1ZXVlc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NzUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc3NjpcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBmaWxlLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6Nzc3Olx0c3RydWN0IG10Nzk5Nl9waHkgKnBoeTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NzgtXHRzdHJ1Y3Qge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NzkxOlx0cGh5ID0gbXQ3OTk2X3BoeTIoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03OTItXHRpZiAocGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03OTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6Nzk1Olx0cGh5ID0gbXQ3OTk2X3BoeTMoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03OTYtXHRpZiAocGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODE0OkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5OTZfeG1pdF9xdWV1ZXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTgxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz04MTY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjgxNzptdDc5OTZfdHd0X3N0YXRzKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04MTgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjgxOTpcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cdTAwM2Vwcml2YXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4MjA6XHRzdHJ1Y3QgbXQ3OTk2X3R3dF9mbG93ICppdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTgyMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9ODQ1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4NDY6bXQ3OTk2X3JmX3JlZ3ZhbF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODQ3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4NDg6XHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NDktXHR1MzIgcmVndmFsO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODUyOlx0cmV0ID0gbXQ3OTk2X21jdV9yZl9yZWd2YWwoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXHUwMDI2cmVndmFsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODUzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9ODYxPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4NjI6bXQ3OTk2X3JmX3JlZ3ZhbF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NjMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg2NDpcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg2NS1cdHUzMiB2YWwzMiA9IHZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODY3Olx0cmV0dXJuIG10Nzk5Nl9tY3VfcmZfcmVndmFsKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIFx1MDAyNnZhbDMyLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NjgtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4NzA6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmZfcmVndmFsLCBtdDc5OTZfcmZfcmVndmFsX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4NzE6XHRcdFx0IG10Nzk5Nl9yZl9yZWd2YWxfc2V0LCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg3MzppbnQgbXQ3OTk2X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg3NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg3OS1cdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7aHctcXVldWVzXCYjMzQ7LCAwNDAwLCBkaXIsIGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4ODA6XHRcdFx0ICAgIFx1MDAyNm10Nzk5Nl9od19xdWV1ZXNfZm9wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODgxLVx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDt4bWl0LXF1ZXVlc1wmIzM0OywgMDQwMCwgZGlyLCBkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODgyOlx0XHRcdCAgICBcdTAwMjZtdDc5OTZfeG1pdF9xdWV1ZXNfZm9wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODgzOlx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDt0eF9zdGF0c1wmIzM0OywgMDQwMCwgZGlyLCBkZXYsIFx1MDAyNm10Nzk5Nl90eF9zdGF0c19mb3BzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04ODQtXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3N5c19yZWNvdmVyeVwmIzM0OywgMDYwMCwgZGlyLCBkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODg1Olx0XHRcdCAgICBcdTAwMjZtdDc5OTZfc3lzX3JlY292ZXJ5X29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODg2LVx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtmd19kZWJ1Z193bVwmIzM0OywgMDYwMCwgZGlyLCBkZXYsIFx1MDAyNmZvcHNfZndfZGVidWdfd20pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04OTAtXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O2Z3X3V0aWxfd2FcJiMzNDssIDA0MDAsIGRpciwgZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg5MTpcdFx0XHQgICAgXHUwMDI2bXQ3OTk2X2Z3X3V0aWxfd2FfZm9wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODkyLVx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtpbXBsaWNpdF90eGJmXCYjMzQ7LCAwNjAwLCBkaXIsIGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODk0LVx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7dHd0X3N0YXRzXCYjMzQ7LCBkaXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODk1Olx0XHRcdFx0ICAgIG10Nzk5Nl90d3Rfc3RhdHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg5Ni1cdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7cmZfcmVndmFsXCYjMzQ7LCAwNjAwLCBkaXIsIGRldiwgXHUwMDI2Zm9wc19yZl9yZWd2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05MDEtXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtyZGRfbW9uaXRvclwmIzM0OywgZGlyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjkwMjpcdFx0XHRcdCAgICBtdDc5OTZfcmRkX21vbml0b3IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTkwMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9OTA5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6OTEwOm10Nzk5Nl9kZWJ1Z2ZzX3dyaXRlX2Z3bG9nKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGNvbnN0IHZvaWQgKmhkciwgaW50IGhkcmxlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05MTEtXHRcdFx0ICAgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtOTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjkzNDp2b2lkIG10Nzk5Nl9kZWJ1Z2ZzX3J4X2Z3X21vbml0b3Ioc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05MzUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05NTUtXHRoZHIubGVuID0gKihfX2xlMTYgKilkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjk1NjpcdG10Nzk5Nl9kZWJ1Z2ZzX3dyaXRlX2Z3bG9nKGRldiwgXHUwMDI2aGRyLCBzaXplb2YoaGRyKSwgZGF0YSwgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05NTctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTk1OC1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MzkxCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIHRoZSBNVDc5OTZFIERyaXZlciBpbiBhIEZ1enppbmcgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdG8gYWN0dWFsbHkgZ2V0IGF0IHRoaXMgYG10Nzk5NmVgIChQQ0llKSBhbmQgYG10Nzk5Nl9ucHVgIGRyaXZlci4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjb25zaWRlciB2aXJ0dWFsaXphdGlvbiDigJMgYXJlIHdlIGFibGUgdG8gZ2V0IHRvIGl0IGluIHNvbWV0aGluZyBsaWtlIFFFTVU/IEJ1dCB0aGVuIEkgcmVtZW1iZXIgYG1hYzgwMjExX2h3c2ltYCwgd2hpY2gsIHdoaWxlIHVzZWZ1bCBmb3Igc2ltdWxhdGluZyBtYWM4MDIxMSBkZXZpY2VzLCBpc24mIzM5O3QgZ29pbmcgdG8gZ2V0IG1lIGEgKnNwZWNpZmljKiBNZWRpYXRlayBQQ0llIGRldmljZSBsaWtlIHRoaXMuIFVubGVzcyB0aGVyZSYjMzk7cyBhIHNwZWNpYWxpemVkIE1lZGlhdGVrIE1UNzk5NiBlbXVsYXRvciBvdXQgdGhlcmUsIGl0IGxvb2tzIGxpa2UgdGhhdCYjMzk7cyBhIGRlYWQgZW5kIGluIFFFTVUuCgpOZXh0LCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgUENJIGVtdWxhdGlvbi4gQ2FuIHdlIGxldmVyYWdlIHRoYXQgZm9yIHRoaXMgZGV2aWNlPyBVc3VhbGx5LCBJJiMzOTtkIGxlYW4gb24gc29tZXRoaW5nIGxpa2Ugc3l6a2FsbGVyJiMzOTtzIGdlbmVyaWMgUENJIGZ1enplciwgYnV0IHRoYXQgdXN1YWxseSBuZWVkcyB0aGUgZHJpdmVyIHRvIGJlIGFscmVhZHkgbG9hZGVkIGFuZCBwcm9iZWQuIFRoZW4gaXQgaGl0cyBtZeKAlHN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIhIEl0IGNhbiBlbXVsYXRlIFBDSSBkZXZpY2VzIGFuZCB0cmlnZ2VyIHRoZWlyIHByb2JlIGZ1bmN0aW9ucywgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEkgbmVlZC4KCk15IG5leHQgc3RlcCBpcyB0byBjaGVjayBpZiBgQ09ORklHX01UNzk5NkVgIGlzIGVuYWJsZWQgb3IgYXQgbGVhc3QgY29uZmlndXJhYmxlLiBJZiBzeXprYWxsZXIgY2FuIGluZGVlZCBmdXp6IFBDSSBkZXZpY2VzIGFuZCB0cmlnZ2VyIHByb2JpbmcsIHRoaXMgZHJpdmVyIG1pZ2h0IGFjdHVhbGx5IGJlIHJlYWNoYWJsZS4gSG93ZXZlciwgSSBoYXZlIHRvIGJlIHJlYWxpc3RpYyBoZXJlLiBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBpcyBrbm93biB0byBiZSByZWxhdGl2ZWx5IGJhc2ljLCBhbmQgbGlrZWx5IHRvIHByaW1hcmlseSBoaXQgdGhlIHByb2JlL2luaXQgcGF0aHMsIHdoaWNoIGFyZSBncmVhdCB0byBzdGFydCB3aXRoLCBidXQgbWF5IG5vdCBjb3ZlciBldmVyeXRoaW5nLiBTbyBub3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayB3aGVyZSB0aGlzIHBhdGNoIGluIHF1ZXN0aW9uIGlzLCBhbmQgbG9vayBhdCB0aGUgYGluaXQuY2AgZmlsZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZl9jb21iX2dsb2JhbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9MTc9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfbGltaXQgaWZfbGltaXRzX2dsb2JhbCA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6Mjc6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gaWZfY29tYl9nbG9iYWwgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMjgtXHQubGltaXRzID0gXHUwMDI2aWZfbGltaXRzX2dsb2JhbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6Mzk6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gaWZfY29tYl9nbG9iYWxfNzk5MiA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy00MC1cdC5saW1pdHMgPSBcdTAwMjZpZl9saW1pdHNfZ2xvYmFsLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz00NzY9bXQ3OTk2X2luaXRfd2lwaHkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy01MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6NTAxOlx0d2lwaHktXHUwMDNlaWZhY2VfY29tYmluYXRpb25zID0gaXNfbXQ3OTk2KFx1MDAyNmRldi1cdTAwM2VtdDc2KSA/IFx1MDAyNmlmX2NvbWJfZ2xvYmFsIDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo1MDI6XHRcdFx0XHRcdFx0XHQgICAgXHUwMDI2aWZfY29tYl9nbG9iYWxfNzk5MjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy01MDMtXHR3aXBoeS1cdTAwM2VuX2lmYWNlX2NvbWJpbmF0aW9ucyA9IDE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1ODUKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA1NjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQ6IFJlbW92aW5nIGEgQ29uZmlndXJhdGlvbiBDb25zdHJhaW50KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSByZW1vdmluZyBgLmJlYWNvbl9pbnRfbWluX2djZCA9IDEwMCxgIGZyb20gdGhlIGBpZl9jb21iX2dsb2JhbGAgYW5kIGBpZl9jb21iX2dsb2JhbF83OTkyYCBzdHJ1Y3RzIGluIHRoZSBgd2lwaHlgIGludGVyZmFjZSBjb21iaW5hdGlvbnMuIEl0JiMzOTtzIGp1c3QgYSBzdGF0aWMgY29uZmlndXJhdGlvbiBjaGFuZ2UsIGVzc2VudGlhbGx5IHJlbW92aW5nIGEgY29uc3RyYWludCBvbiBiZWFjb24gaW50ZXJ2YWxzLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCAmIzM0O0lzIHRoaXMgZXZlbiB3b3J0aCBmdXp6aW5nPyYjMzQ7CgpJdCYjMzk7cyBlc3NlbnRpYWxseSBhIGRhdGEgc3RydWN0dXJlIG1vZGlmaWNhdGlvbi4gTm8gbmV3IGxvZ2ljIGlzIGJlaW5nIGludHJvZHVjZWQ7IHRoZSBwYXRjaCBqdXN0IHJlbGF4ZXMgYSBjb25zdHJhaW50IHdpdGhpbiB0aGUgbWFjODAyMTEgbGF5ZXIgd2hlbiBpdCBjcmVhdGVzIGludGVyZmFjZXMuIFRoYXQgcmVsYXhhdGlvbiBtZWFucyB3ZSAqbWlnaHQqIGJlIGFibGUgdG8gY3JlYXRlIGludGVyZmFjZXMgd2l0aCBiZWFjb24gaW50ZXJ2YWxzIHRoYXQgd2VyZW4mIzM5O3QgbXVsdGlwbGVzIG9mIDEwMCBiZWZvcmUsIGJ1dCBpdCYjMzk7cyBzcGVjaWZpY2FsbHkgdGllZCB0byB0aGUgTVQ3OTk2IGRyaXZlci4KClRoZSBiaWcgcXVlc3Rpb24gaXMgd2hldGhlciB3ZSBjYW4gZXZlbiAqcmVhY2gqIHRoaXMgaW4gYSB0eXBpY2FsIFFFTVUgZW52aXJvbm1lbnQuIFVubGVzcyB3ZSBnZXQgZXh0cmVtZWx5IGx1Y2t5LCBvciB1c2UgYSBQQ0kgZnV6emVyLCBJJiMzOTttIHRoaW5raW5nIHRoZSBkcml2ZXIgaXNuJiMzOTt0IGZ1bGx5IGFjY2Vzc2libGUuIFdlIGhhdmUgdG8gY29uc2lkZXIgd2hldGhlciB0aGUgY2hhbmdlIGlzIHNpZ25pZmljYW50IGVub3VnaCB0byB3YXJyYW50IGZ1enppbmcgaWYgdGhlIGRyaXZlciBpcyBub3QgZWFzaWx5IHJlYWNoZWQuIFdlIGNvdWxkIHJlYWNoIGBwcm9iZWAsIGJ1dCBpdCYjMzk7cyBoaWdobHkgbGlrZWx5IHRoYXQgZmlybXdhcmUgbG9hZGluZyBvciBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiB3aWxsIGZhaWwgYmVmb3JlIHdlIGNhbiBnZXQgdG8gdGhlIGNvcmUgbG9naWMuIFRoZXJlJiMzOTtzIGFsc28gdGhlIHF1ZXN0aW9uIG9mIHdoZXRoZXIgdGhpcyBtaW5vciBjb25maWcgY2hhbmdlIGhhcyAqYW55KiBpbXBhY3Qgb24gZXhpc3RpbmcgY29kZS4KCkkgbmVlZCB0byB0aGluayBhYm91dCB3aGVyZSBgYmVhY29uX2ludF9taW5fZ2NkYCBpcyB1c2VkLiBJIHJlbWVtYmVyIGl0JiMzOTtzIHBhcnQgb2YgbWFjODAyMTEmIzM5O3MgaW50ZXJmYWNlIHZhbGlkYXRpb24uIFNpbmNlIHRoaXMgaXMgaGFyZHdhcmUtc3BlY2lmaWMsIGFuZCB0aGUgY2hhbmdlIGlzIHRyaXZpYWwgKGp1c3QgcmVtb3ZpbmcgYSBjb25zdHJhaW50KSwgaXQmIzM5O3MgcHJvYmFibHkgKm5vdCogd29ydGggZnV6emluZywgb3IgaWYgaXQgaXMsIHRoZSBmdXp6aW5nIGlzIG1vcmUgZm9jdXNlZCBvbiBjb25maWcgY2hhbmdlcywgYW5kIG5vdCBvbiBjb3JlIGxvZ2ljLgoKTGV0JiMzOTtzIHJlZmVyIGJhY2sgdG8gdGhvc2UgZ3VpZGVsaW5lcy4gSXQgc3VnZ2VzdHMgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvbiYjMzk7dCBhbHRlciBleGVjdXRpb24gZmxvdywgb3IgaWYgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gQW5kIGl0IGxvb2tzIGxpa2UgTVQ3OTk2IHJlbGllcyBvbiBhIHBoeXNpY2FsIFBDSWUgY2FyZCwgc28gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgY29kZSBwYXRocyBsaWtlbHkgdW5yZWFjaGFibGUgaW4gUUVNVS4gRXZlbiB3aXRoIGEgUENJIGZ1enplciwgd2UgcHJvYmFibHkgd29uJiMzOTt0IGdldCBwYXN0IHRoZSBwcm9iZSBzdGFnZSBkdWUgdG8gdGhlIGZpcm13YXJlIG9yIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIGZhaWxpbmcgd2l0aG91dCB0aGUgcmVhbCBoYXJkd2FyZS4gYG10Nzk5Nl9pbml0X3dpcGh5YCBpcyBjYWxsZWQgZnJvbSBgbXQ3OTk2X3JlZ2lzdGVyX2V4dF9waHlgIG9yIGBtdDc5OTZfcmVnaXN0ZXJfcGh5YCwgYnV0IHRoYXQgd29uJiMzOTt0IHJ1bi4KClRoZXJlZm9yZSwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlIGFuZCB0aGUgbGltaXRhdGlvbnMgb2YgUUVNVSBhY2Nlc3MgdG8gdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSwgbXkgaW5zdGluY3QgaXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCYjMzk7cyBhIGNvbmZpZyBjaGFuZ2UsIGFuZCBub3QgYSBjcml0aWNhbCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTk2X2luaXRfd2lwaHkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTQxNT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjQxNjptdDc5OTZfaW5pdF93aXBoeV9iYW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTQxNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTQ3NT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjQ3NjptdDc5OTZfaW5pdF93aXBoeShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNDc3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjU1MjpcdG10Nzk5Nl9pbml0X3dpcGh5X2JhbmQoaHcsIFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTU1My19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTY4MD1zdGF0aWMgaW50IG10Nzk5Nl9yZWdpc3Rlcl9waHkoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgZW51bSBtdDc2X2JhbmRfaWQgYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNzMxLVx0LyogaW5pdCB3aXBoeSBhY2NvcmRpbmcgdG8gbXBoeSBhbmQgcGh5ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6NzMyOlx0bXQ3OTk2X2luaXRfd2lwaHlfYmFuZChtcGh5LVx1MDAzZWh3LCBwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTczMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9MTcyOT1pbnQgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xNzUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjE3NTI6XHRtdDc5OTZfaW5pdF93aXBoeShodywgXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTE3NTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI1MTIKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyBgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZWAgQ2FsbGVycyoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyBhbmQgc3BlY2lmaWNhbGx5LCB0byBpZGVudGlmeSB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCBgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZWAuIFRoaXMgaXMgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCB3aGVuIHJldmVyc2UgZW5naW5lZXJpbmcgb3IgZGVidWdnaW5nIGRyaXZlciBjb2RlLCBiZWNhdXNlIHVuZGVyc3RhbmRpbmcgKmhvdyogdGhlIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQgaXMgY3J1Y2lhbC4gVGhpcyB3aWxsIGhlbHAgbWUgZ3Jhc3AgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBicm9hZGVyIGRyaXZlciBhcmNoaXRlY3R1cmUgYW5kIGlkZW50aWZ5IHBvdGVudGlhbCBpc3N1ZXMgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbi4gVGhpcyB3aWxsIGJlIHRoZSBmaXJzdCB0aGluZyBJIGRvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5OTZfcmVnaXN0ZXJfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz0xNzE0PXZvaWQgbXQ3OTk2X3NldF9zdHJlYW1faGVfZWh0X2NhcHMoc3RydWN0IG10Nzk5Nl9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTcyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxNzI5OmludCBtdDc5OTZfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTczMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg9Njc3PXU2NCBfX210Nzk5Nl9nZXRfdHNmKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgbXQ3OTk2X3ZpZl9saW5rICpsaW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oOjY3ODppbnQgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oLTY3OS12b2lkIG10Nzk5Nl91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYz05OT1zdGF0aWMgaW50IG10Nzk5Nl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM6MTk1Olx0cmV0ID0gbXQ3OTk2X3JlZ2lzdGVyX2RldmljZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMTk2LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMyMjgKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIHNuaXBwZXQsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3ZWxsLXZlcnNlZCBpbiB0aGlzIGtpbmQgb2YgZHJpdmVyIGFuYWx5c2lzOgoKKipEZWx2aW5nIGludG8gdGhlIGBtdDc5OTZfcGNpX3Byb2JlYCBGdW5jdGlvbioqCgpBbHJpZ2h0LCBzbyB0aGUgY2FsbHN0YWNrIHBvaW50cyB0byBgbXQ3OTk2X3BjaV9wcm9iZWAuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIHN0YXJ0cywgdGhlIGluaXRpYWwgc2V0dXAgZm9yIHRoaXMgcGFydGljdWxhciBkZXZpY2Ugb24gYSBQQ0kgYnVzLiBJIGtub3cgdGhlIGRyaWxsLCB0eXBpY2FsbHksIHRoZXJlJiMzOTtzIGEgc2VxdWVuY2Ugb2YgaW5pdGlhbGl6YXRpb24gc3RlcHMgYmVmb3JlIHRoZSBjb3JlIGRyaXZlciBmdW5jdGlvbmFsaXR5IGtpY2tzIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3QgZmxvdyB0byBwcm9wZXJseSBnZXQgdGhpcyBjaGlwIHRvIHdvcmsuCgpNeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgbGlrZWx5IHRoZSBmaXJtd2FyZSBsb2FkaW5nIHNlcXVlbmNlIHdpdGhpbiB0aGlzIGBtdDc5OTZfcGNpX3Byb2JlYCBmdW5jdGlvbi4gSSBoYXZlIGEgZmVlbGluZyB0aGUgZHJpdmVyIHdpbGwgbmVlZCBzb21lIGZpcm13YXJlIHRvIGxvYWQsIGl0IHdpbGwgYmUgdGhlIGhlYXJ0IG9mIGl0cyBvcGVyYXRpb24sIG9yIGF0IGxlYXN0IGEgbWFqb3IgcGFydC4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBwb2ludCB3aGVyZSBpdCBkZXRlcm1pbmVzIHdoZXRoZXIgZmlybXdhcmUgaXMgbmVlZGVkLCBhbmQgdGhlbiBob3cgaXQgbG9hZHMgaXQuIFRoYXQmIzM5O3MgYWx3YXlzIGEga2V5IGFyZWEgdG8gc2NydXRpbml6ZS4gS25vd2luZyB0aGlzLCBJIGNhbiBzdGFydCB0byBtYXAgb3V0IGhvdyB0aGUgd2hvbGUgdGhpbmcgd29ya3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210Nzk5Nl9wY2lfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM9Nzk9c3RhdGljIGludCBtdDc5OTZfcGNpX2hpZjJfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYzo5OTpzdGF0aWMgaW50IG10Nzk5Nl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYy0xMDAtXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYz0yNDQ9c3RydWN0IHBjaV9kcml2ZXIgbXQ3OTk2X2hpZl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjQ2LVx0LmlkX3RhYmxlXHQ9IG10Nzk5Nl9oaWZfZGV2aWNlX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM6MjQ3Olx0LnByb2JlXHRcdD0gbXQ3OTk2X3BjaV9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTI0OC1cdC5yZW1vdmVcdFx0PSBtdDc5OTZfaGlmX3JlbW92ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYz0yNTE9c3RydWN0IHBjaV9kcml2ZXIgbXQ3OTk2X3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjUzLVx0LmlkX3RhYmxlXHQ9IG10Nzk5Nl9wY2lfZGV2aWNlX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM6MjU0Olx0LnByb2JlXHRcdD0gbXQ3OTk2X3BjaV9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTI1NS1cdC5yZW1vdmVcdFx0PSBtdDc5OTZfcGNpX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQxMzAKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gYG10Nzk5Nl9wY2lfcHJvYmVgIGZvciBGdXp6aW5nIFJlc2lsaWVuY2UqKgoKQWxyaWdodCwgYmVmb3JlIEkgdW5sZWFzaCB0aGUgZnV6emVycyBvbiB0aGlzLCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIGdvaW5nIG9uIGluc2lkZSBgbXQ3OTk2X3BjaV9wcm9iZWAuIE15IHByaW1hcnkgY29uY2VybiBpcywgb2YgY291cnNlLCBpZGVudGlmeWluZyBwb3RlbnRpYWwgcGl0ZmFsbHMgZm9yIGEgZnV6emluZyBjYW1wYWlnbi4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8ga25vdyBpZiB0aGlzIHByb2JlIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIHRyeSB0byBsb2FkIGZpcm13YXJlLCBvciBhdHRlbXB0IHRvIGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlIGluIGEgd2F5IHRoYXTigJlzIGdvaW5nIHRvIHRyaXAgaXQgdXAgaW4gYSBmdXp6ZWQgZW52aXJvbm1lbnQuIFdlIGFsbCBrbm93IGhvdyBxdWlja2x5IHRoYXQgY2FuIGRlcmFpbCBhIGZ1enppbmcgc2Vzc2lvbiEgTGV0JiMzOTtzIGdldCByZWFkaW5nIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIHRoaW5ncyB0aGF0JiMzOTtsbCBjYXVzZSBhbiBpc3N1ZS4gR290dGEgZW5zdXJlIHRoZSBmdXp6aW5nIHNlc3Npb24gd2lsbCBiZSBzdGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA5OTpcdHN0YXRpYyBpbnQgbXQ3OTk2X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiAxMDA6XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuIDEwMTpcdHtcbiAxMDI6XHRcdHN0cnVjdCBwY2lfZGV2ICpoaWYyX2RldjtcbiAxMDM6XHRcdHN0cnVjdCBtdDc5OTZfaGlmICpoaWYyO1xuIDEwNDpcdFx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldjtcbiAxMDU6XHRcdGludCBpcnEsIGhpZjJfaXJxLCByZXQ7XG4gMTA2Olx0XHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXY7XG4gMTA3Olx0XG4gMTA4Olx0XHRyZXQgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGRldik7XG4gMTA5Olx0XHRpZiAocmV0KVxuIDExMDpcdFx0XHRyZXR1cm4gcmV0O1xuIDExMTpcdFxuIDExMjpcdFx0cmV0ID0gcGNpbV9pb21hcF9yZWdpb25zKHBkZXYsIEJJVCgwKSwgcGNpX25hbWUocGRldikpO1xuIDExMzpcdFx0aWYgKHJldClcbiAxMTQ6XHRcdFx0cmV0dXJuIHJldDtcbiAxMTU6XHRcbiAxMTY6XHRcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xuIDExNzpcdFxuIDExODpcdFx0cmV0ID0gZG1hX3NldF9tYXNrKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBETUFfQklUX01BU0soMzYpKTtcbiAxMTk6XHRcdGlmIChyZXQpXG4gMTIwOlx0XHRcdHJldHVybiByZXQ7XG4gMTIxOlx0XG4gMTIyOlx0XHRyZXQgPSBkbWFfc2V0X2NvaGVyZW50X21hc2soXHUwMDI2cGRldi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpO1xuIDEyMzpcdFx0aWYgKHJldClcbiAxMjQ6XHRcdFx0cmV0dXJuIHJldDtcbiAxMjU6XHRcbiAxMjY6XHRcdG10NzZfcGNpX2Rpc2FibGVfYXNwbShwZGV2KTtcbiAxMjc6XHRcbiAxMjg6XHRcdGlmIChpZC1cdTAwM2VkZXZpY2UgPT0gTVQ3OTk2X0RFVklDRV9JRF8yIHx8XG4gMTI5Olx0XHQgICAgaWQtXHUwMDNlZGV2aWNlID09IE1UNzk5Ml9ERVZJQ0VfSURfMiB8fFxuIDEzMDpcdFx0ICAgIGlkLVx1MDAzZWRldmljZSA9PSBNVDc5OTBfREVWSUNFX0lEXzIpXG4gMTMxOlx0XHRcdHJldHVybiBtdDc5OTZfcGNpX2hpZjJfcHJvYmUocGRldik7XG4gMTMyOlx0XG4gMTMzOlx0XHRkZXYgPSBtdDc5OTZfbW1pb19wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGNpbV9pb21hcF90YWJsZShwZGV2KVswXSxcbiAxMzQ6XHRcdFx0XHRcdGlkLVx1MDAzZWRldmljZSk7XG4gMTM1Olx0XHRpZiAoSVNfRVJSKGRldikpXG4gMTM2Olx0XHRcdHJldHVybiBQVFJfRVJSKGRldik7XG4gMTM3Olx0XG4gMTM4Olx0XHRtZGV2ID0gXHUwMDI2ZGV2LVx1MDAzZW10NzY7XG4gMTM5Olx0XHRtdDc5OTZfd2ZzeXNfcmVzZXQoZGV2KTtcbiAxNDA6XHRcdGhpZjIgPSBtdDc5OTZfcGNpX2luaXRfaGlmMihwZGV2KTtcbiAxNDE6XHRcdGRldi1cdTAwM2VoaWYyID0gaGlmMjtcbiAxNDI6XHRcbiAxNDM6XHRcdG10NzZfbnB1X2luaXQobWRldiwgcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIDApLFxuIDE0NDpcdFx0XHQgICAgICBwY2lfZG9tYWluX25yKHBkZXYtXHUwMDNlYnVzKSA/IDMgOiAyKTtcbiAxNDU6XHRcbiAxNDY6XHRcdHJldCA9IG10Nzk5Nl9tbWlvX3dlZF9pbml0KGRldiwgcGRldiwgZmFsc2UsIFx1MDAyNmlycSk7XG4gMTQ3Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDE0ODpcdFx0XHRnb3RvIGZyZWVfd2VkX29yX2lycV92ZWN0b3I7XG4gMTQ5Olx0XG4gMTUwOlx0XHRpZiAoIXJldCkge1xuIDE1MTpcdFx0XHRyZXQgPSBwY2lfYWxsb2NfaXJxX3ZlY3RvcnMocGRldiwgMSwgMSwgUENJX0lSUV9BTExfVFlQRVMpO1xuIDE1MjpcdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDE1MzpcdFx0XHRcdGdvdG8gZnJlZV9kZXZpY2U7XG4gMTU0Olx0XG4gMTU1Olx0XHRcdGlycSA9IHBkZXYtXHUwMDNlaXJxO1xuIDE1NjpcdFx0fVxuIDE1NzpcdFxuIDE1ODpcdFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVx1MDAzZWRldiwgaXJxLCBtdDc5OTZfaXJxX2hhbmRsZXIsXG4gMTU5Olx0XHRcdFx0ICAgICAgIElSUUZfU0hBUkVELCBLQlVJTERfTU9ETkFNRSwgZGV2KTtcbiAxNjA6XHRcdGlmIChyZXQpXG4gMTYxOlx0XHRcdGdvdG8gZnJlZV93ZWRfb3JfaXJxX3ZlY3RvcjtcbiAxNjI6XHRcbiAxNjM6XHRcdG10NzZfd3IoZGV2LCBNVF9JTlRfTUFTS19DU1IsIDApO1xuIDE2NDpcdFx0LyogbWFzdGVyIHN3aXRjaCBvZiBQQ0llIGludGVycnVwdCBlbmFibGUgKi9cbiAxNjU6XHRcdG10NzZfd3IoZGV2LCBNVF9QQ0lFX01BQ19JTlRfRU5BQkxFLCAweGZmKTtcbiAxNjY6XHRcbiAxNjc6XHRcdGlmIChoaWYyKSB7XG4gMTY4Olx0XHRcdGhpZjJfZGV2ID0gY29udGFpbmVyX29mKGhpZjItXHUwMDNlZGV2LCBzdHJ1Y3QgcGNpX2RldiwgZGV2KTtcbiAxNjk6XHRcbiAxNzA6XHRcdFx0cmV0ID0gbXQ3OTk2X21taW9fd2VkX2luaXQoZGV2LCBoaWYyX2RldiwgdHJ1ZSwgXHUwMDI2aGlmMl9pcnEpO1xuIDE3MTpcdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDE3MjpcdFx0XHRcdGdvdG8gZnJlZV9oaWYyX3dlZF9pcnFfdmVjdG9yO1xuIDE3MzpcdFxuIDE3NDpcdFx0XHRpZiAoIXJldCkge1xuIDE3NTpcdFx0XHRcdHJldCA9IHBjaV9hbGxvY19pcnFfdmVjdG9ycyhoaWYyX2RldiwgMSwgMSxcbiAxNzY6XHRcdFx0XHRcdFx0XHQgICAgUENJX0lSUV9BTExfVFlQRVMpO1xuIDE3NzpcdFx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gMTc4Olx0XHRcdFx0XHRnb3RvIGZyZWVfaGlmMjtcbiAxNzk6XHRcbiAxODA6XHRcdFx0XHRkZXYtXHUwMDNlaGlmMi1cdTAwM2VpcnEgPSBoaWYyX2Rldi1cdTAwM2VpcnE7XG4gMTgxOlx0XHRcdFx0aGlmMl9pcnEgPSBkZXYtXHUwMDNlaGlmMi1cdTAwM2VpcnE7XG4gMTgyOlx0XHRcdH1cbiAxODM6XHRcbiAxODQ6XHRcdFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVx1MDAzZWRldiwgaGlmMl9pcnEsIG10Nzk5Nl9pcnFfaGFuZGxlcixcbiAxODU6XHRcdFx0XHRcdCAgICAgICBJUlFGX1NIQVJFRCwgS0JVSUxEX01PRE5BTUUgXCYjMzQ7LWhpZlwmIzM0OyxcbiAxODY6XHRcdFx0XHRcdCAgICAgICBkZXYpO1xuIDE4NzpcdFx0XHRpZiAocmV0KVxuIDE4ODpcdFx0XHRcdGdvdG8gZnJlZV9oaWYyX3dlZF9pcnFfdmVjdG9yO1xuIDE4OTpcdFxuIDE5MDpcdFx0XHRtdDc2X3dyKGRldiwgTVRfSU5UMV9NQVNLX0NTUiwgMCk7XG4gMTkxOlx0XHRcdC8qIG1hc3RlciBzd2l0Y2ggb2YgUENJZSB0bnRlcnJ1cHQgZW5hYmxlICovXG4gMTkyOlx0XHRcdG10NzZfd3IoZGV2LCBNVF9QQ0lFMV9NQUNfSU5UX0VOQUJMRSwgMHhmZik7XG4gMTkzOlx0XHR9XG4gMTk0Olx0XG4gMTk1Olx0XHRyZXQgPSBtdDc5OTZfcmVnaXN0ZXJfZGV2aWNlKGRldik7XG4gMTk2Olx0XHRpZiAocmV0KVxuIDE5NzpcdFx0XHRnb3RvIGZyZWVfaGlmMl9pcnE7XG4gMTk4Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MTAwCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIERldmljZSBSZWdpc3RyYXRpb24qKgoKT2theSwgc28gYG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2VgIGhhcyBiZWVuIGludm9rZWQuIE15IGZpcnN0IHRob3VnaHQgaXMsICYjMzQ7QWxyaWdodCwgbGV0JiMzOTtzIGRpc3NlY3QgdGhpcyBmdW5jdGlvbiBhbmQgdW5kZXJzdGFuZCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGJyb2FkZXIgZHJpdmVyIGNvbnRleHQuJiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzdGVwcyBpdCB0YWtlcyB0byBpbnRlZ3JhdGUgdGhpcyBzcGVjaWZpYyBwaWVjZSBvZiBoYXJkd2FyZSwgbGlrZWx5IGEgV2lGaSBkZXZpY2UgYmFzZWQgb24gdGhlIG5hbWluZywgaW50byB0aGUgc3lzdGVtJiMzOTtzIGRldmljZSB0cmVlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBtZW1vcnkgbWFwcGluZywgaW50ZXJydXB0IHJlZ2lzdHJhdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kLCBvZiBjb3Vyc2UsIHRoZSBnZW5lcmFsIGRldmljZSBpbml0aWFsaXphdGlvbiBmbG93LiBBcmUgdGhlcmUgYW55IGhhcmR3YXJlLXNwZWNpZmljIGluaXRpYWxpemF0aW9ucyBoYXBwZW5pbmc/IEFyZSBhbnkgY3JpdGljYWwgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIHBvcHVsYXRlZCBvciBjb25maWd1cmVkIGF0IHRoaXMgc3RhZ2U/IEkgbmVlZCB0byBnZXQgYSBoaWdoLWxldmVsIHZpZXcgYW5kIHRoZW4gem9vbSBpbiBvbiB0aGUgY3JpdGljYWwgcGFydHMgdG8gYW5hbHl6ZSBpdHMgaW50ZXJhY3Rpb25zIHdpdGggdGhlIHJlbGV2YW50IGZyYW1ld29ya3MsIGxpa2VseSB0aGUgbWFjODAyMTEgd2lyZWxlc3Mgc3RhY2suIEkmIzM5O2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGVycm9yIGNoZWNraW5nIGFuZCBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHBvdGVudGlhbCBmYWlsdXJlIHNjZW5hcmlvcyBkdXJpbmcgZGV2aWNlIHJlZ2lzdHJhdGlvbjsgdGhhdCB3aWxsIGJlIGNyaXRpY2FsIGZvciBkZWJ1Z2dpbmcgbGF0ZXIgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcyOSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTcyOTpcdGludCBtdDc5OTZfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4xNzMwOlx0e1xuMTczMTpcdFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBtdDc2X2h3KGRldik7XG4xNzMyOlx0XHRzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5O1xuMTczMzpcdFx0aW50IHJldDtcbjE3MzQ6XHRcbjE3MzU6XHRcdGRldi1cdTAwM2VwaHkuZGV2ID0gZGV2O1xuMTczNjpcdFx0ZGV2LVx1MDAzZXBoeS5tdDc2ID0gXHUwMDI2ZGV2LVx1MDAzZW10NzYucGh5O1xuMTczNzpcdFx0ZGV2LVx1MDAzZW10NzYucGh5LnByaXYgPSBcdTAwMjZkZXYtXHUwMDNlcGh5O1xuMTczODpcdFx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2VyY193b3JrLCBtdDc5OTZfbWFjX3N0YV9yY193b3JrKTtcbjE3Mzk6XHRcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VtcGh5Lm1hY193b3JrLCBtdDc5OTZfbWFjX3dvcmspO1xuMTc0MDpcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2ZGV2LVx1MDAzZXN0YV9yY19saXN0KTtcbjE3NDE6XHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNmRldi1cdTAwM2V0d3RfbGlzdCk7XG4xNzQyOlx0XG4xNzQzOlx0XHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNmRldi1cdTAwM2VyZXNldF93YWl0KTtcbjE3NDQ6XHRcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlcmVzZXRfd29yaywgbXQ3OTk2X21hY19yZXNldF93b3JrKTtcbjE3NDU6XHRcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlZHVtcF93b3JrLCBtdDc5OTZfbWFjX2R1bXBfd29yayk7XG4xNzQ2Olx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2VkdW1wX211dGV4KTtcbjE3NDc6XHRcbjE3NDg6XHRcdHJldCA9IG10Nzk5Nl9pbml0X2hhcmR3YXJlKGRldik7XG4xNzQ5Olx0XHRpZiAocmV0KVxuMTc1MDpcdFx0XHRyZXR1cm4gcmV0O1xuMTc1MTpcdFxuMTc1MjpcdFx0bXQ3OTk2X2luaXRfd2lwaHkoaHcsIFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKTtcbjE3NTM6XHRcbjE3NTQ6XHRcdHJldCA9IG10Nzk5Nl9yZWdpc3Rlcl9waHkoZGV2LCBNVF9CQU5EMSk7XG4xNzU1Olx0XHRpZiAocmV0KVxuMTc1NjpcdFx0XHRyZXR1cm4gcmV0O1xuMTc1NzpcdFxuMTc1ODpcdFx0cmV0ID0gbXQ3OTk2X3JlZ2lzdGVyX3BoeShkZXYsIE1UX0JBTkQyKTtcbjE3NTk6XHRcdGlmIChyZXQpXG4xNzYwOlx0XHRcdHJldHVybiByZXQ7XG4xNzYxOlx0XG4xNzYyOlx0XHRyZXQgPSBtdDc5OTZfbnB1X2h3X2luaXQoZGV2KTtcbjE3NjM6XHRcdGlmIChyZXQpXG4xNzY0Olx0XHRcdHJldHVybiByZXQ7XG4xNzY1Olx0XG4xNzY2Olx0XHRtdDc5OTZfZG1hX3Jyb19zdGFydChkZXYpO1xuMTc2NzpcdFxuMTc2ODpcdFx0cmV0ID0gbXQ3Nl9yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHRydWUsIG10NzZfcmF0ZXMsXG4xNzY5Olx0XHRcdFx0XHQgICBBUlJBWV9TSVpFKG10NzZfcmF0ZXMpKTtcbjE3NzA6XHRcdGlmIChyZXQpXG4xNzcxOlx0XHRcdHJldHVybiByZXQ7XG4xNzcyOlx0XG4xNzczOlx0XHRtdDc5OTZfZm9yX2VhY2hfcGh5KGRldiwgcGh5KVxuMTc3NDpcdFx0XHRtdDc5OTZfdGhlcm1hbF9pbml0KHBoeSk7XG4xNzc1Olx0XG4xNzc2Olx0XHRpZWVlODAyMTFfcXVldWVfd29yayhtdDc2X2h3KGRldiksIFx1MDAyNmRldi1cdTAwM2Vpbml0X3dvcmspO1xuMTc3NzpcdFxuMTc3ODpcdFx0ZGV2LVx1MDAzZXJlY292ZXJ5Lmh3X2luaXRfZG9uZSA9IHRydWU7XG4xNzc5Olx0XG4xNzgwOlx0XHRyZXQgPSBtdDc5OTZfaW5pdF9kZWJ1Z2ZzKGRldik7XG4xNzgxOlx0XHRpZiAocmV0KVxuMTc4MjpcdFx0XHRnb3RvIGVycm9yO1xuMTc4MzpcdFxuMTc4NDpcdFx0cmV0ID0gbXQ3OTk2X2NvcmVkdW1wX3JlZ2lzdGVyKGRldik7XG4xNzg1Olx0XHRpZiAocmV0KVxuMTc4NjpcdFx0XHRnb3RvIGVycm9yO1xuMTc4NzpcdFxuMTc4ODpcdFx0cmV0dXJuIDA7XG4xNzg5Olx0XG4xNzkwOlx0ZXJyb3I6XG4xNzkxOlx0XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2Vpbml0X3dvcmspO1xuMTc5MjpcdFxuMTc5MzpcdFx0cmV0dXJuIHJldDtcbjE3OTQ6XHR9XG4xNzk1Olx0XG4xNzk2Olx0dm9pZCBtdDc5OTZfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbjE3OTc6XHR7XG4xNzk4Olx0XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VkdW1wX3dvcmspO1xuMTc5OTpcdFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNld2VkX3Jyby53b3JrKTtcbjE4MDA6XHRcdG10Nzk5Nl91bnJlZ2lzdGVyX3BoeShtdDc5OTZfcGh5MyhkZXYpKTtcbjE4MDE6XHRcdG10Nzk5Nl91bnJlZ2lzdGVyX3BoeShtdDc5OTZfcGh5MihkZXYpKTtcbjE4MDI6XHRcdG10Nzk5Nl91bnJlZ2lzdGVyX3RoZXJtYWwoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG4xODAzOlx0XHRtdDc5OTZfY29yZWR1bXBfdW5yZWdpc3RlcihkZXYpO1xuMTgwNDpcdFx0bXQ3Nl91bnJlZ2lzdGVyX2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4xODA1Olx0XHRtdDc5OTZfd2VkX3Jyb19mcmVlKGRldik7XG4xODA2Olx0XHRtdDc5OTZfbWN1X2V4aXQoZGV2KTtcbjE4MDc6XHRcdG10Nzk5Nl90eF90b2tlbl9wdXQoZGV2KTtcbjE4MDg6XHRcdG10Nzk5Nl9kbWFfY2xlYW51cChkZXYpO1xuMTgwOTpcdFx0aWYgKG10Nzk5Nl9oYXNfaHdycm8oZGV2KSBcdTAwMjZcdTAwMjZcbjE4MTA6XHRcdCAgICAhbXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSlcbjE4MTE6XHRcdFx0bXQ3OTk2X3Jyb19tc2R1X3BhZ2VfbWFwX2ZyZWUoZGV2KTtcbjE4MTI6XHRcdHRhc2tsZXRfZGlzYWJsZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5pcnFfdGFza2xldCk7XG4xODEzOlx0XG4xODE0Olx0XHRtdDc2X2ZyZWVfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbjE4MTU6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODQ1CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBNVDc5OTYgSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UqKgoKT2theSwgc28gd2UmIzM5O3JlIHN0YXJ0aW5nIHdpdGggYG10Nzk5Nl9pbml0X2hhcmR3YXJlYC4gVGhhdCYjMzk7cyB0aGUgZmlyc3Qgc3RlcCBiZWZvcmUgd2UgZXZlbiBnZXQgdG8gdGhlIFdpLUZpIGludGVyZmFjZSBpbml0aWFsaXphdGlvbi4gTWFrZXMgc2Vuc2U7IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gaGFzIHRvIGNvbWUgYmVmb3JlIGFueXRoaW5nIGVsc2UuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IGBtdDc5OTZfaW5pdF9oYXJkd2FyZWAgZnVuY3Rpb24gYW5kIHNlZSB3aGF0IGl0JiMzOTtzIGRvaW5nIHVuZGVyIHRoZSBob29kLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgZnVuZGFtZW50YWwgaGFyZHdhcmUgYXNwZWN0cyBhcmUgYmVpbmcgYnJvdWdodCB1cCBmaXJzdC4gSXMgaXQgcG93ZXIgc2VxdWVuY2luZywgY2xvY2sgc2V0dXAsIHJlZ2lzdGVyIGluaXRpYWxpemF0aW9uLi4uIHdoYXQmIzM5O3MgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyBvZiB0aGUgc2lsaWNvbiBzdGFydHVwPyBJIG5lZWQgdG8gc2VlIGlmIGl0IG1ha2VzIHNlbnNlIHdpdGhpbiB0aGUgb3ZlcmFsbCBib290IHByb2Nlc3MgYW5kIHRoZSBkZXZpY2UmIzM5O3MgYXJjaGl0ZWN0dXJlLiBBbmQgaG93IGRvZXMgdGhpcyBjb25uZWN0IHdpdGggdGhlIHJlZ3VsYXRvcnkgcmVxdWlyZW1lbnRzPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5OTZfaW5pdF9oYXJkd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9MTIxMT1zdGF0aWMgaW50IG10Nzk5Nl92YXJpYW50X2ZlbV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEyNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6MTI1NDpzdGF0aWMgaW50IG10Nzk5Nl9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTI1NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTE3Mjk9aW50IG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTc0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxNzQ4Olx0cmV0ID0gbXQ3OTk2X2luaXRfaGFyZHdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xNzQ5LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0NTYKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBtdDc5OTZfaW5pdF9oYXJkd2FyZWAgZnVuY3Rpb24uIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgdGhlIGNvcmUgaW5pdGlhbGl6YXRpb24gcm91dGluZSBmb3IgdGhlIGhhcmR3YXJlLCBsaWtlbHkgc2V0dGluZyB1cCByZWdpc3RlcnMsIGNvbmZpZ3VyaW5nIGNsb2NrcywgYW5kIGVuYWJsaW5nIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXRpZXMgb2YgdGhlIE1UNzk5NiB3aXJlbGVzcyBjaGlwLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBzZXF1ZW5jZSBvZiBzdGVwcyDigJMgd2hhdCBjb21lcyBmaXJzdCwgd2hhdCBkZXBlbmRzIG9uIHdoYXQuIEkmIzM5O20gYWxzbyBnb2luZyB0byBiZSBtZW50YWxseSBwYXJzaW5nIGZvciBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHdoZXJlIGNhcmVmdWwgdHVuaW5nIG1pZ2h0IGJlIGNydWNpYWwsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgdGhlIGNvbnN0cmFpbnRzIG9mIGVtYmVkZGVkIHN5c3RlbXMuIEFyZSB0aGV5IGRvaW5nIGFueSBwb3dlciBtYW5hZ2VtZW50IHNldHVwIGVhcmx5IG9uPyBBcmUgdGhleSBjb25maWd1cmluZyBhbnkgY3JpdGljYWwgaW50ZXJydXB0cz8gVGhpcyBpcyB3aGVyZSBJIGNhbiBzdGFydCBidWlsZGluZyBhIG1lbnRhbCBtb2RlbCBvZiB0aGUgY2hpcCYjMzk7cyBzdGFydHVwIHByb2Nlc3MuIEkgYWxzbyB3YW50IHRvIGNoZWNrIGZvciBhbnkgdmVuZG9yLXNwZWNpZmljIG51YW5jZXMgb3Iga2x1ZGdlcy4gRmluYWxseSwgSSYjMzk7bGwgYmUgd2F0Y2hpbmcgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBvcHBvcnR1bml0aWVzIGZvciBvcHRpbWl6YXRpb24gb3IgcG90ZW50aWFsIGlzc3VlcyB0aGF0IGNvdWxkIGltcGFjdCBwZXJmb3JtYW5jZSBvciBzdGFiaWxpdHkgZG93biB0aGUgbGluZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjU0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMjU0Olx0c3RhdGljIGludCBtdDc5OTZfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuMTI1NTpcdHtcbjEyNTY6XHRcdGludCByZXQsIGlkeDtcbjEyNTc6XHRcbjEyNTg6XHRcdG10NzZfd3IoZGV2LCBNVF9JTlRfU09VUkNFX0NTUiwgfjApO1xuMTI1OTpcdFx0aWYgKGlzX210Nzk5MihcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbjEyNjA6XHRcdFx0bXQ3Nl9ybXcoZGV2LCBNVF9BRkVfQ1RMX0JBTkRfUExMXzAzKE1UX0JBTkQwKSwgTVRfQUZFX0NUTF9CQU5EX1BMTF8wM19NU0JfRU4sIDApO1xuMTI2MTpcdFx0XHRtdDc2X3JtdyhkZXYsIE1UX0FGRV9DVExfQkFORF9QTExfMDMoTVRfQkFORDEpLCBNVF9BRkVfQ1RMX0JBTkRfUExMXzAzX01TQl9FTiwgMCk7XG4xMjYyOlx0XHR9XG4xMjYzOlx0XG4xMjY0Olx0XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZWluaXRfd29yaywgbXQ3OTk2X2luaXRfd29yayk7XG4xMjY1Olx0XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXdlZF9ycm8ud29yaywgbXQ3OTk2X3dlZF9ycm9fd29yayk7XG4xMjY2Olx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZkZXYtXHUwMDNld2VkX3Jyby5wb2xsX2xpc3QpO1xuMTI2NzpcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZGV2LVx1MDAzZXdlZF9ycm8ubG9jayk7XG4xMjY4Olx0XG4xMjY5Olx0XHRyZXQgPSBtdDc5OTZfdmFyaWFudF90eXBlX2luaXQoZGV2KTtcbjEyNzA6XHRcdGlmIChyZXQpXG4xMjcxOlx0XHRcdHJldHVybiByZXQ7XG4xMjcyOlx0XG4xMjczOlx0XHRyZXQgPSBtdDc5OTZfZG1hX2luaXQoZGV2KTtcbjEyNzQ6XHRcdGlmIChyZXQpXG4xMjc1Olx0XHRcdHJldHVybiByZXQ7XG4xMjc2Olx0XG4xMjc3Olx0XHRzZXRfYml0KE1UNzZfU1RBVEVfSU5JVElBTElaRUQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbjEyNzg6XHRcbjEyNzk6XHRcdHJldCA9IG10Nzk5Nl9tY3VfaW5pdChkZXYpO1xuMTI4MDpcdFx0aWYgKHJldClcbjEyODE6XHRcdFx0cmV0dXJuIHJldDtcbjEyODI6XHRcbjEyODM6XHRcdHJldCA9IG10Nzk5Nl93ZWRfcnJvX2luaXQoZGV2KTtcbjEyODQ6XHRcdGlmIChyZXQpXG4xMjg1Olx0XHRcdHJldHVybiByZXQ7XG4xMjg2Olx0XG4xMjg3Olx0XHRyZXQgPSBtdDc5OTZfdmFyaWFudF9mZW1faW5pdChkZXYpO1xuMTI4ODpcdFx0aWYgKHJldClcbjEyODk6XHRcdFx0cmV0dXJuIHJldDtcbjEyOTA6XHRcbjEyOTE6XHRcdHJldCA9IG10Nzk5Nl9lZXByb21faW5pdChkZXYpO1xuMTI5MjpcdFx0aWYgKHJldCBcdTAwM2MgMClcbjEyOTM6XHRcdFx0cmV0dXJuIHJldDtcbjEyOTQ6XHRcbjEyOTU6XHRcdC8qIEJlYWNvbiBhbmQgbWdtdCBmcmFtZXMgc2hvdWxkIG9jY3VweSB3Y2lkIDAgKi9cbjEyOTY6XHRcdGlkeCA9IG10NzZfd2NpZF9hbGxvYyhkZXYtXHUwMDNlbXQ3Ni53Y2lkX21hc2ssIE1UNzk5Nl9XVEJMX1NUQSk7XG4xMjk3Olx0XHRpZiAoaWR4KVxuMTI5ODpcdFx0XHRyZXR1cm4gLUVOT1NQQztcbjEyOTk6XHRcbjEzMDA6XHRcdGRldi1cdTAwM2VtdDc2Lmdsb2JhbF93Y2lkLmlkeCA9IGlkeDtcbjEzMDE6XHRcdGRldi1cdTAwM2VtdDc2Lmdsb2JhbF93Y2lkLmh3X2tleV9pZHggPSAtMTtcbjEzMDI6XHRcdGRldi1cdTAwM2VtdDc2Lmdsb2JhbF93Y2lkLnR4X2luZm8gfD0gTVRfV0NJRF9UWF9JTkZPX1NFVDtcbjEzMDM6XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXHUwMDNlbXQ3Ni53Y2lkW2lkeF0sIFx1MDAyNmRldi1cdTAwM2VtdDc2Lmdsb2JhbF93Y2lkKTtcbjEzMDQ6XHRcbjEzMDU6XHRcdHJldHVybiAwO1xuMTMwNjpcdH1cbjEzMDc6XHRcbjEzMDg6XHR2b2lkIG10Nzk5Nl9zZXRfc3RyZWFtX3ZodF90eGJmX2NhcHMoc3RydWN0IG10Nzk5Nl9waHkgKnBoeSlcbjEzMDk6XHR7XG4xMzEwOlx0XHRpbnQgc3RzO1xuMTMxMTpcdFx0dTMyICpjYXA7XG4xMzEyOlx0XG4xMzEzOlx0XHRpZiAoIXBoeS1cdTAwM2VtdDc2LVx1MDAzZWNhcC5oYXNfNWdoeilcbjEzMTQ6XHRcdFx0cmV0dXJuO1xuMTMxNTpcdFxuMTMxNjpcdFx0c3RzID0gaHdlaWdodDE2KHBoeS1cdTAwM2VtdDc2LVx1MDAzZWNoYWlubWFzayk7XG4xMzE3Olx0XHRjYXAgPSBcdTAwMjZwaHktXHUwMDNlbXQ3Ni1cdTAwM2VzYmFuZF81Zy5zYmFuZC52aHRfY2FwLmNhcDtcbjEzMTg6XHRcbjEzMTk6XHRcdCpjYXAgfD0gSUVFRTgwMjExX1ZIVF9DQVBfU1VfQkVBTUZPUk1FRV9DQVBBQkxFIHxcbjEzMjA6XHRcdFx0SUVFRTgwMjExX1ZIVF9DQVBfTVVfQkVBTUZPUk1FRV9DQVBBQkxFO1xuMTMyMTpcdFxuMTMyMjpcdFx0aWYgKGlzX210Nzk5MihwaHktXHUwMDNlbXQ3Ni1cdTAwM2VkZXYpKVxuMTMyMzpcdFx0XHQqY2FwIHw9IEZJRUxEX1BSRVAoSUVFRTgwMjExX1ZIVF9DQVBfQkVBTUZPUk1FRV9TVFNfTUFTSywgNCk7XG4xMzI0Olx0XHRlbHNlXG4xMzI1Olx0XHRcdCpjYXAgfD0gRklFTERfUFJFUChJRUVFODAyMTFfVkhUX0NBUF9CRUFNRk9STUVFX1NUU19NQVNLLCAzKTtcbjEzMjY6XHRcbjEzMjc6XHRcdCpjYXAgXHUwMDI2PSB+KElFRUU4MDIxMV9WSFRfQ0FQX1NPVU5ESU5HX0RJTUVOU0lPTlNfTUFTSyB8XG4xMzI4Olx0XHRcdCAgSUVFRTgwMjExX1ZIVF9DQVBfU1VfQkVBTUZPUk1FUl9DQVBBQkxFIHxcbjEzMjk6XHRcdFx0ICBJRUVFODAyMTFfVkhUX0NBUF9NVV9CRUFNRk9STUVSX0NBUEFCTEUpO1xuMTMzMDpcdFxuMTMzMTpcdFx0aWYgKHN0cyBcdTAwM2MgMilcbjEzMzI6XHRcdFx0cmV0dXJuO1xuMTMzMzpcdFxuMTMzNDpcdFx0KmNhcCB8PSBJRUVFODAyMTFfVkhUX0NBUF9TVV9CRUFNRk9STUVSX0NBUEFCTEUgfFxuMTMzNTpcdFx0XHRJRUVFODAyMTFfVkhUX0NBUF9NVV9CRUFNRk9STUVSX0NBUEFCTEUgfFxuMTMzNjpcdFx0XHRGSUVMRF9QUkVQKElFRUU4MDIxMV9WSFRfQ0FQX1NPVU5ESU5HX0RJTUVOU0lPTlNfTUFTSywgc3RzIC0gMSk7XG4xMzM3Olx0fVxuMTMzODpcdFxuMTMzOTpcdHN0YXRpYyB2b2lkXG4xMzQwOlx0bXQ3OTk2X3NldF9zdHJlYW1faGVfdHhiZl9jYXBzKHN0cnVjdCBtdDc5OTZfcGh5ICpwaHksXG4xMzQxOlx0XHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhX2hlX2NhcCAqaGVfY2FwLCBpbnQgdmlmLFxuMTM0MjpcdFx0XHRcdCAgICAgICBlbnVtIG5sODAyMTFfYmFuZCBiYW5kKVxuMTM0MzpcdHtcbjEzNDQ6XHRcdHN0cnVjdCBpZWVlODAyMTFfaGVfY2FwX2VsZW0gKmVsZW0gPSBcdTAwMjZoZV9jYXAtXHUwMDNlaGVfY2FwX2VsZW07XG4xMzQ1Olx0XHRpbnQgc3RzID0gaHdlaWdodDE2KHBoeS1cdTAwM2VtdDc2LVx1MDAzZWNoYWlubWFzayk7XG4xMzQ2Olx0XHRib29sIG5vbl8yZyA9IGJhbmQgIT0gTkw4MDIxMV9CQU5EXzJHSFo7XG4xMzQ3Olx0XHR1OCBjO1xuMTM0ODpcdFxuMTM0OTpcdCNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxuMTM1MDpcdFx0aWYgKHZpZiA9PSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UKVxuMTM1MTpcdFx0XHRyZXR1cm47XG4xMzUyOlx0I2VuZGlmXG4xMzUzOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNTQyCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgTUNVIEluaXRpYWxpemF0aW9uIFNlcXVlbmNlKioKCk9rYXksIHNvIHRoZSBgbXQ3OTk2X21jdV9pbml0YCBmdW5jdGlvbiBpcyB0aGUgZmlyc3QgdGhpbmcgdGhhdCYjMzk7cyBjYWxsZWQgaGVyZS4gQ2xlYXJseSwgdGhpcyBpcyB3aGVyZSB0aGUgTUNVIGdldHMgaW5pdGlhbGl6ZWQsIGFuZCBtb3N0IGxpa2VseSwgdGhlIGZpcm13YXJlIGdldHMgbG9hZGVkLiBNYWtlcyBzZW5zZS4gSWYgdGhhdCBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZhaWxz4oCUbWF5YmUgdGhlIGZpcm13YXJlIGZhaWxzIHRvIGxvYWQgY29ycmVjdGx5LCBvciB0aGUgTUNVIGl0c2VsZiBpc24mIzM5O3QgcmVzcG9uZGluZ+KAlHRoZSB3aG9sZSB0aGluZyYjMzk7cyBnb2luZyB0byBmYWxsIGFwYXJ0LiBgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZWAgd2lsbCByZXR1cm4gYW4gZXJyb3IsIGFuZCB0aGF0JiMzOTtzIHRoZSBlbmQgb2YgdGhlIGxpbmUuIFdlIHdvbiYjMzk7dCBldmVuIGdldCB0byBgbXQ3OTk2X2luaXRfd2lwaHlgLCBhbmQgdGhlIGRldmljZSByZWdpc3RyYXRpb24gd2lsbCBiZSBhIG5vLWdvLiBIYW5nIG9uLCB0aGUgY2FsbCBvcmRlciBpcyBpbnRlcmVzdGluZy4uLiBgbXQ3OTk2X21jdV9pbml0YCBpcyBjYWxsZWQgKmJlZm9yZSogYG10Nzk5Nl9pbml0X3dpcGh5YC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQuIExldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgd2hhdCBgbXQ3OTk2X21jdV9pbml0YCBpcyBkb2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTk2X21jdV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz0xMjU0PXN0YXRpYyBpbnQgbXQ3OTk2X2luaXRfaGFyZHdhcmUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTI3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxMjc5Olx0cmV0ID0gbXQ3OTk2X21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTI4MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM9MjIyMD1tdDc5OTZfbWFjX3Jlc3RhcnQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yMjkxLVx0LyogbG9hZCBmaXJtd2FyZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjI5MjpcdHJldCA9IG10Nzk5Nl9tY3VfaW5pdF9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjI5My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9MzY0MD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzozNjQxOm10Nzk5Nl9tY3VfaW5pdF9yeF9haXJ0aW1lKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNjQyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNjY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MzY2NTppbnQgbXQ3OTk2X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNjY2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MzcwMzpcdHJldCA9IG10Nzk5Nl9tY3VfaW5pdF9yeF9haXJ0aW1lKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzA0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MzcxMTppbnQgbXQ3OTk2X21jdV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzEyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MzcyMTpcdHJldHVybiBtdDc5OTZfbWN1X2luaXRfZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM3MjItfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oPTcwMj1pbnQgbXQ3OTk2X3J1bihzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oOjcwMzppbnQgbXQ3OTk2X21jdV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg6NzA0OmludCBtdDc5OTZfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaC03MDUtaW50IG10Nzk5Nl9tY3VfdHd0X2FncnRfdXBkYXRlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMDg4CgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDQ1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9RmFsc2U6IE1UNzk5NiBTdGF0aWMgQ29uZmlndXJhdGlvbiBDaGFuZ2UqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYG10Nzk5Nl9tY3VfaW5pdGAgY2FsbHMgYG10Nzk5Nl9tY3VfaW5pdF9maXJtd2FyZWAsIHdoaWNoLCBhcyB3ZSBrbm93LCBpcyBhIHBvdGVudGlhbCBzdHVtYmxpbmcgYmxvY2sgaW4gZnV6emluZy4gVGhlIGZpcm13YXJlIGxvYWRpbmcgaXMgY3JpdGljYWwsIGFuZCBpbiBzeXprYWxsZXIsIHdlIG1pZ2h0IGdldCBsdWNreSB3aXRoIG1vY2tlZCBmaXJtd2FyZSBpZiB0aGUgZnV6emVyIHN1cHBvcnRzIGl0LCAqYW5kKiB0aGUgZHJpdmVyIHV0aWxpemVzIGByZXF1ZXN0X2Zpcm13YXJlYC4gSGVyZSwgdGhlIFBDSSBmdXp6aW5nIGlzIHdlYWsg4oCTIGl0JiMzOTtzIGp1c3QgcmFuZG9tIE1NSU8gcmVzcG9uc2VzLiBUaGF0IG1lYW5zIGBtdDc5OTZfbWN1X2luaXRfZmlybXdhcmVgIGNvdWxkIGZhaWwsIGhhbmcsIG9yIGV2ZW4gKmFjY2lkZW50YWxseSogc3VjY2VlZCBiYXNlZCBvbiB0aG9zZSByYW5kb20gYnl0ZXMuIEJ1dCwgdGhhdCYjMzk7cyBub3QgdGhlIHBvaW50LgoKVGhlICpyZWFsKiBpc3N1ZSBpcyB0aGUgcGF0Y2ggaXRzZWxmLiBJdCYjMzk7cyBzaW1wbHkgcmVtb3ZpbmcgYC5iZWFjb25faW50X21pbl9nY2QgPSAxMDBgLiBUaGlzIGlzIGEgKnN0YXRpYyBjb25maWd1cmF0aW9uIGNoYW5nZSouIEl0JiMzOTtzIGRhdGEsIG5vdCBhIGZ1bmN0aW9uYWwgY29kZSBwYXRoIG1vZGlmaWNhdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGUgZ3VpZGFuY2Ugc2F5cyAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMmIzM0OyBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCgpJbiB0aGlzIGNhc2UsIHRoZSBjaGFuZ2UgaW4gcXVlc3Rpb24gZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgZHJpdmVyLiBJdOKAmXMganVzdCBhbHRlcmluZyBkYXRhIHBhc3NlZCB0byBtYWM4MDIxMSwgYW5kIHRoYXQmIzM5O3Mgbm90IHRoZSBraW5kIG9mIHRoaW5nIHdlJiMzOTtyZSBsb29raW5nIHRvIGZ1enouCgpGdXJ0aGVyLCBhbmQgdGhpcyBpcyBhbm90aGVyIGNydWNpYWwgcG9pbnQ6IHRoZSBkcml2ZXIgaXMgZm9yIHRoZSBNVDc5OTYgUENJZSBXaS1GaSBjYXJkLiBXZSAqZG9uJiMzOTt0KiBoYXZlIGhhcmR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBpbiBRRU1VLiBUaGF0IG1lYW5zIHdlIGNhbm5vdCByZWFjaCB0aGUgZHJpdmVyLCByZWdhcmRsZXNzIG9mIHRoZSBmaXJtd2FyZSBzdGF0dXMuCgpUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZmFsbHMgaW50byAqYm90aCogY2F0ZWdvcmllcyB0aGF0IHdhcnJhbnQgYFdvcnRoRnV6emluZz1mYWxzZWA6IGl0JiMzOTtzIGEgY2hhbmdlIHRvIGEgbnVtZXJpYyBjb25zdGFudCwgYW5kIGl0JiMzOTtzIGluIGEgY29kZSBwYXRoIHRoYXQmIzM5O3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIE5vIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBuZWVkZWQuIFdlJiMzOTtyZSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhIG51bWVyaWMgY29uc3RhbnQgaW5pdGlhbGl6YXRpb24gKC5iZWFjb25faW50X21pbl9nY2QgPSAxMDApIGZyb20gYSBzdGF0aWMgY29uZmlndXJhdGlvbiBzdHJ1Y3QgaW4gdGhlIE1lZGlhdGVrIE1UNzk5NiBQQ0llIFdpLUZpIGRyaXZlci4gVGhpcyBpcyBhIHRyaXZpYWwgZGF0YSBzdHJ1Y3R1cmUgY2hhbmdlIHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBkcml2ZXImIzM5O3MgZXhlY3V0aW9uIGZsb3cuIEZ1cnRoZXJtb3JlLCB0aGUgTVQ3OTk2IGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBtYWtpbmcgaXQgdW5yZWFjaGFibGUgZm9yIG1lYW5pbmdmdWwgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgYSBudW1lcmljIGNvbnN0YW50IGluaXRpYWxpemF0aW9uICguYmVhY29uX2ludF9taW5fZ2NkID0gMTAwKSBmcm9tIGEgc3RhdGljIGNvbmZpZ3VyYXRpb24gc3RydWN0IGluIHRoZSBNZWRpYXRlayBNVDc5OTYgUENJZSBXaS1GaSBkcml2ZXIuIFRoaXMgaXMgYSB0cml2aWFsIGRhdGEgc3RydWN0dXJlIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZHJpdmVyJiMzOTtzIGV4ZWN1dGlvbiBmbG93LiBGdXJ0aGVybW9yZSwgdGhlIE1UNzk5NiBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBtZWFuaW5nZnVsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTY6MTguODM1NDAwOTYxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEyOTcxMDc3MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYSBudW1lcmljIGNvbnN0YW50IGluaXRpYWxpemF0aW9uICguYmVhY29uX2ludF9taW5fZ2NkID0gMTAwKSBmcm9tIGEgc3RhdGljIGNvbmZpZ3VyYXRpb24gc3RydWN0IGluIHRoZSBNZWRpYXRlayBNVDc5OTYgUENJZSBXaS1GaSBkcml2ZXIuIFRoaXMgaXMgYSB0cml2aWFsIGRhdGEgc3RydWN0dXJlIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZHJpdmVyJ3MgZXhlY3V0aW9uIGZsb3cuIEZ1cnRoZXJtb3JlLCB0aGUgTVQ3OTk2IGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBtYWtpbmcgaXQgdW5yZWFjaGFibGUgZm9yIG1lYW5pbmdmdWwgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE1OjE2OjE4LjgzNTQwODA2MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3NTg2MTY1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDdkOGFjZjM5N2NlYWQ4YTk3ZjRlZjAxMjE2OGIxZTg4OTVhNTI1M2JcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMiAxNToxNjoxNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmNcXG5pbmRleCBkNmY5YWExYWI1MmQxMi4uMDZmNzY0YTU0NDA1MjEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jXFxuQEAgLTM0LDcgKzM0LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gaWZfY29tYl9nbG9iYWwgPSB7XFxuIFxcdFxcdFxcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzQwKSB8XFxuIFxcdFxcdFxcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzgwKSB8XFxuIFxcdFxcdFxcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzE2MCksXFxuLVxcdC5iZWFjb25faW50X21pbl9nY2QgPSAxMDAsXFxuIH07XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbiBpZl9jb21iX2dsb2JhbF83OTkyID0ge1xcbkBAIC00Nyw3ICs0Niw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGlmX2NvbWJfZ2xvYmFsXzc5OTIgPSB7XFxuIFxcdFxcdFxcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzQwKSB8XFxuIFxcdFxcdFxcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzgwKSB8XFxuIFxcdFxcdFxcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzE2MCksXFxuLVxcdC5iZWFjb25faW50X21pbl9nY2QgPSAxMDAsXFxuIH07XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9saW1pdCBpZl9saW1pdHNbXSA9IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTY6MjAuMzEzMzQxODkxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTgxOTE1Nzc1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhIG51bWVyaWMgY29uc3RhbnQgaW5pdGlhbGl6YXRpb24gKC5iZWFjb25faW50X21pbl9nY2QgPSAxMDApIGZyb20gYSBzdGF0aWMgY29uZmlndXJhdGlvbiBzdHJ1Y3QgaW4gdGhlIE1lZGlhdGVrIE1UNzk5NiBQQ0llIFdpLUZpIGRyaXZlci4gVGhpcyBpcyBhIHRyaXZpYWwgZGF0YSBzdHJ1Y3R1cmUgY2hhbmdlIHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBkcml2ZXIncyBleGVjdXRpb24gZmxvdy4gRnVydGhlcm1vcmUsIHRoZSBNVDc5OTYgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIG1ha2luZyBpdCB1bnJlYWNoYWJsZSBmb3IgbWVhbmluZ2Z1bCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3ZDhhY2YzOTdjZWFkOGE5N2Y0ZWYwMTIxNjhiMWU4ODk1YTUyNTNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAxNToxNjoxNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuY1xuaW5kZXggZDZmOWFhMWFiNTJkMTIuLjA2Zjc2NGE1NDQwNTIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmNcbkBAIC0zNCw3ICszNCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGlmX2NvbWJfZ2xvYmFsID0ge1xuIFx0XHRcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzQwKSB8XG4gXHRcdFx0ICAgICAgIEJJVChOTDgwMjExX0NIQU5fV0lEVEhfODApIHxcbiBcdFx0XHQgICAgICAgQklUKE5MODAyMTFfQ0hBTl9XSURUSF8xNjApLFxuLVx0LmJlYWNvbl9pbnRfbWluX2djZCA9IDEwMCxcbiB9O1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGlmX2NvbWJfZ2xvYmFsXzc5OTIgPSB7XG5AQCAtNDcsNyArNDYsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbiBpZl9jb21iX2dsb2JhbF83OTkyID0ge1xuIFx0XHRcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzQwKSB8XG4gXHRcdFx0ICAgICAgIEJJVChOTDgwMjExX0NIQU5fV0lEVEhfODApIHxcbiBcdFx0XHQgICAgICAgQklUKE5MODAyMTFfQ0hBTl9XSURUSF8xNjApLFxuLVx0LmJlYWNvbl9pbnRfbWluX2djZCA9IDEwMCxcbiB9O1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2xpbWl0IGlmX2xpbWl0c1tdID0ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTY6MjAuMzEzMzUwODgyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMxMzAzMTE2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNaW5vciBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jYC4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBpdCByZW1vdmVzIGAuYmVhY29uX2ludF9taW5fZ2NkID0gMTAwLGAgZnJvbSB0d28gYHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb25gIHZhcmlhYmxlcywgYGlmX2NvbWJfZ2xvYmFsYCBhbmQgYGlmX2NvbWJfZ2xvYmFsXzc5OTJgLiBGdW5jdGlvbmFsbHksIHRoaXMgdHdlYWtzIGEgY29uc3RyYWludCByZWxhdGVkIHRvIHRoZSBncmVhdGVzdCBjb21tb24gZGl2aXNvciBmb3IgdGhlIGJlYWNvbiBpbnRlcnZhbC4gSXQncyBhIHNtYWxsIGNoYW5nZSwgbm90aGluZyBlYXJ0aC1zaGF0dGVyaW5nLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBUaGlzIGlzIGEgTWVkaWF0ZWsgTVQ3OTk2IHdpcmVsZXNzIGRyaXZlci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGlzIGV2ZW4gYmUgdHJpZ2dlcmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBUaGVzZSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIG9mdGVuIGFyZW4ndCBlYXNpbHkgcmVhY2hhYmxlIHVubGVzcyB0aGVyZSdzIGFuIGVtdWxhdG9yIG9yIGl0J3MgYSBVU0IgZGV2aWNlIHRoYXQgY2FuIGJlIGVtdWxhdGVkIHVzaW5nIGEgZHVtbXkgaG9zdCBjb250cm9sbGVyIG9yIGEgVVNCIGdhZGdldC4gSXQgcmVhbGx5IGRlcGVuZHMgb24gdGhlIGhhcmR3YXJlIGludGVyZmFjZS4gU28sIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGUgTVQ3OTk2IGlzIGEgUENJZSwgVVNCLCBvciBTRElPIGRldmljZS4gVGhhdCdzIHRoZSBjcml0aWNhbCBpbmZvcm1hdGlvbiBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDU1LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTY6MjUuNjI2Mzg0NDU1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjkzNzU3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5OTZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjUxOCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvTWFrZWZpbGUtMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9NYWtlZmlsZTozOm9iai0kKENPTkZJR19NVDc5OTZFKSArPSBtdDc5OTZlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9NYWtlZmlsZS00LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L01ha2VmaWxlOjU6bXQ3OTk2ZS15IDo9IHBjaS5vIGluaXQubyBkbWEubyBlZXByb20ubyBtYWluLm8gbWN1Lm8gbWFjLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L01ha2VmaWxlLTYtXFx0ICAgICBkZWJ1Z2ZzLm8gbW1pby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvTWFrZWZpbGUtNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9NYWtlZmlsZTo4Om10Nzk5NmUtJChDT05GSUdfTVQ3OTk2X05QVSkgKz0gbnB1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9NYWtlZmlsZTo5Om10Nzk5NmUtJChDT05GSUdfREVWX0NPUkVEVU1QKSArPSBjb3JlZHVtcC5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jPTEyPU1PRFVMRV9QQVJNX0RFU0MoY29yZWR1bXBfbWVtZHVtcCwgXFxcIk9wdGlvbmFsIGFiaWxpdHkgdG8gZHVtcCBmaXJtd2FyZSBtZW1vcnlcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5OTZfbWVtX3JlZ2lvbiBtdDc5OTZfbWVtX3JlZ2lvbnNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTE1LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo0Nzpjb25zdCBzdHJ1Y3QgbXQ3OTk2X21lbV9yZWdpb24qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo0ODptdDc5OTZfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgdTMyICpudW0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy00OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTUyLVxcdGNhc2UgTVQ3OTk2X0RFVklDRV9JRF8yOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6NTM6XFx0XFx0Km51bSA9IEFSUkFZX1NJWkUobXQ3OTk2X21lbV9yZWdpb25zKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjU0OlxcdFxcdHJldHVybiBcXHUwMDI2bXQ3OTk2X21lbV9yZWdpb25zWzBdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNTUtXFx0ZGVmYXVsdDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo2MDpzdGF0aWMgaW50IG10Nzk5Nl9jb3JlZHVtcF9nZXRfbWVtX3NpemUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTYxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjYyOlxcdGNvbnN0IHN0cnVjdCBtdDc5OTZfbWVtX3JlZ2lvbiAqbWVtX3JlZ2lvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTYzLVxcdHNpemVfdCBzaXplID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo2NzpcXHRtZW1fcmVnaW9uID0gbXQ3OTk2X2NvcmVkdW1wX2dldF9tZW1fbGF5b3V0KGRldiwgXFx1MDAyNm51bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy02OC1cXHRpZiAoIW1lbV9yZWdpb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTc2LVxcdC8qIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBoZWFkZXJzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo3NzpcXHRzaXplICs9IG51bSAqIHNpemVvZihzdHJ1Y3QgbXQ3OTk2X21lbV9oZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNzgtXFx0LyogbWFrZSBzdXJlIGl0IGlzIGFsaWduZWQgNCBieXRlcyBmb3IgZGVidWcgbWVzc2FnZSBwcmludCBvdXQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo4NDpzdHJ1Y3QgbXQ3OTk2X2NyYXNoX2RhdGEgKm10Nzk5Nl9jb3JlZHVtcF9uZXcoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTg1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjg2OlxcdHN0cnVjdCBtdDc5OTZfY3Jhc2hfZGF0YSAqY3Jhc2hfZGF0YSA9IGRldi1cXHUwMDNlY29yZWR1bXAuY3Jhc2hfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYz0xMDA9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjEwMTptdDc5OTZfY29yZWR1bXBfZndfc3RhdGUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IG10Nzk5Nl9jb3JlZHVtcCAqZHVtcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTEwMi1cXHRcXHRcXHQgYm9vbCAqZXhjZXB0aW9uKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYz0xMTc9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjExODptdDc5OTZfY29yZWR1bXBfZndfc3RhY2soc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IG10Nzk5Nl9jb3JlZHVtcCAqZHVtcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTExOS1cXHRcXHRcXHQgYm9vbCBleGNlcHRpb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTE2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjE2MjpzdGF0aWMgc3RydWN0IG10Nzk5Nl9jb3JlZHVtcCAqbXQ3OTk2X2NvcmVkdW1wX2J1aWxkKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0xNjMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MTY0OlxcdHN0cnVjdCBtdDc5OTZfY3Jhc2hfZGF0YSAqY3Jhc2hfZGF0YSA9IGRldi1cXHUwMDNlY29yZWR1bXAuY3Jhc2hfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjE2NTpcXHRzdHJ1Y3QgbXQ3OTk2X2NvcmVkdW1wICpkdW1wO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MTY2OlxcdHN0cnVjdCBtdDc5OTZfY29yZWR1bXBfbWVtICpkdW1wX21lbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTE2Ny1cXHRzaXplX3QgbGVuLCBzb2ZhciA9IDAsIGhkcl9sZW4gPSBzaXplb2YoKmR1bXApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoxODc6XFx0ZHVtcCA9IChzdHJ1Y3QgbXQ3OTk2X2NvcmVkdW1wICopKGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0xODgtXFx0ZHVtcC1cXHUwMDNlbGVuID0gbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoyMDE6XFx0bXQ3OTk2X2NvcmVkdW1wX2Z3X3N0YXRlKGRldiwgZHVtcCwgXFx1MDAyNmV4Y2VwdGlvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoyMDI6XFx0bXQ3OTk2X2NvcmVkdW1wX2Z3X3N0YWNrKGRldiwgZHVtcCwgZXhjZXB0aW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTIwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTIwNC1cXHQvKiBnYXRoZXIgbWVtb3J5IGNvbnRlbnQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjIwNTpcXHRkdW1wX21lbSA9IChzdHJ1Y3QgbXQ3OTk2X2NvcmVkdW1wX21lbSAqKShidWYgKyBzb2Zhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMDYtXFx0ZHVtcF9tZW0tXFx1MDAzZWxlbiA9IGNyYXNoX2RhdGEtXFx1MDAzZW1lbWR1bXBfYnVmX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMjE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MjE2OmludCBtdDc5OTZfY29yZWR1bXBfc3VibWl0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMTcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MjE4OlxcdHN0cnVjdCBtdDc5OTZfY29yZWR1bXAgKmR1bXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoyMjA6XFx0ZHVtcCA9IG10Nzk5Nl9jb3JlZHVtcF9idWlsZChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMjIxLVxcdGlmICghZHVtcCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoyMzE6aW50IG10Nzk5Nl9jb3JlZHVtcF9yZWdpc3RlcihzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMjMyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjIzMzpcXHRzdHJ1Y3QgbXQ3OTk2X2NyYXNoX2RhdGEgKmNyYXNoX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTI0MS1cXHRpZiAoY29yZWR1bXBfbWVtZHVtcCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MjQyOlxcdFxcdGNyYXNoX2RhdGEtXFx1MDAzZW1lbWR1bXBfYnVmX2xlbiA9IG10Nzk5Nl9jb3JlZHVtcF9nZXRfbWVtX3NpemUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTI0My1cXHRcXHRpZiAoIWNyYXNoX2RhdGEtXFx1MDAzZW1lbWR1bXBfYnVmX2xlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMjU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MjU3OnZvaWQgbXQ3OTk2X2NvcmVkdW1wX3VucmVnaXN0ZXIoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTI1OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo3OiNpbmNsdWRlIFxcXCJtdDc5OTYuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo5OnN0cnVjdCBtdDc5OTZfY29yZWR1bXAge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtMTAtXFx0Y2hhciBtYWdpY1sxNl07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NDA6c3RydWN0IG10Nzk5Nl9jb3JlZHVtcF9tZW0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtNDEtXFx0dTMyIGxlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo0NTpzdHJ1Y3QgbXQ3OTk2X21lbV9oZHIge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtNDYtXFx0dTMyIHN0YXJ0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC01MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oOjUxOnN0cnVjdCBtdDc5OTZfbWVtX3JlZ2lvbiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC01Mi1cXHR1MzIgc3RhcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NjA6Y29uc3Qgc3RydWN0IG10Nzk5Nl9tZW1fcmVnaW9uICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oOjYxOm10Nzk5Nl9jb3JlZHVtcF9nZXRfbWVtX2xheW91dChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCB1MzIgKm51bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo2MjpzdHJ1Y3QgbXQ3OTk2X2NyYXNoX2RhdGEgKm10Nzk5Nl9jb3JlZHVtcF9uZXcoc3RydWN0IG10Nzk5Nl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo2MzppbnQgbXQ3OTk2X2NvcmVkdW1wX3N1Ym1pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oOjY0OmludCBtdDc5OTZfY29yZWR1bXBfcmVnaXN0ZXIoc3RydWN0IG10Nzk5Nl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo2NTp2b2lkIG10Nzk5Nl9jb3JlZHVtcF91bnJlZ2lzdGVyKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtNjYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6Njk6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgbXQ3OTk2X21lbV9yZWdpb24gKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NzA6bXQ3OTk2X2NvcmVkdW1wX2dldF9tZW1fbGF5b3V0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHUzMiAqbnVtKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtNzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC03NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oOjc1OnN0YXRpYyBpbmxpbmUgaW50IG10Nzk5Nl9jb3JlZHVtcF9zdWJtaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg9ODA9c3RhdGljIGlubGluZSBzdHJ1Y3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oOjgxOm10Nzk5Nl9jcmFzaF9kYXRhICptdDc5OTZfY29yZWR1bXBfbmV3KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC04Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6ODY6c3RhdGljIGlubGluZSBpbnQgbXQ3OTk2X2NvcmVkdW1wX3JlZ2lzdGVyKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC04Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6OTE6c3RhdGljIGlubGluZSB2b2lkIG10Nzk5Nl9jb3JlZHVtcF91bnJlZ2lzdGVyKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC05Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNi0jaW5jbHVkZSBcXHUwMDNjbGludXgvcmVsYXkuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NzojaW5jbHVkZSBcXFwibXQ3OTk2LmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTgtI2luY2x1ZGUgXFxcImVlcHJvbS5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTIzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MjQ6bXQ3OTk2X2ltcGxpY2l0X3R4YmZfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTI1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MjY6XFx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTI3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozMzpcXHRyZXR1cm4gbXQ3OTk2X21jdV9zZXRfdHhiZihkZXYsIEJGX0hXX0VOX1VQREFURSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0zNj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM3Om10Nzk5Nl9pbXBsaWNpdF90eGJmX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozOTpcXHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjQ2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2ltcGxpY2l0X3R4YmYsIG10Nzk5Nl9pbXBsaWNpdF90eGJmX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDc6XFx0XFx0XFx0IG10Nzk5Nl9pbXBsaWNpdF90eGJmX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz01MD1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1MTptdDc5OTZfc3lzX3JlY292ZXJ5X3NldChzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy01Mi1cXHRcXHRcXHRzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1NDpcXHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy01NS1cXHRjaGFyIGJ1ZlsxNl0sICpzZXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtOTEtXFx0Y2FzZSBVTklfQ01EX1NFUl9RVUVSWTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6OTI6XFx0XFx0cmV0ID0gbXQ3OTk2X21jdV9zZXRfc2VyKGRldiwgVU5JX0NNRF9TRVJfUVVFUlksIDAsIGJhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05My1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0xMDAtXFx0Y2FzZSBVTklfQ01EX1NFUl9TRVRfUkVDT1ZFUl9MNF9NRFA6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjEwMTpcXHRcXHRyZXQgPSBtdDc5OTZfbWN1X3NldF9zZXIoZGV2LCBVTklfQ01EX1NFUl9TRVQsIEJJVCh2YWwpLCBiYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTAyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoxMDU6XFx0XFx0cmV0ID0gbXQ3OTk2X21jdV9zZXRfc2VyKGRldiwgVU5JX0NNRF9TRVJfVFJJR0dFUiwgdmFsLCBiYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTA2LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTExMS1cXHRcXHRkZXYtXFx1MDAzZXJlY292ZXJ5LnN0YXRlIHw9IE1UX01DVV9DTURfV0RUX01BU0s7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjExMjpcXHRcXHRtdDc5OTZfcmVzZXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTEzLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTExNi1cXHRjYXNlIFVOSV9DTURfU0VSX1NFVF9TWVNURU1fQVNTRVJUOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoxMTc6XFx0XFx0cmV0ID0gbXQ3OTk2X21jdV90cmlnZ2VyX2Fzc2VydChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0xMTgtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0xMjg9c3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MTI5Om10Nzk5Nl9zeXNfcmVjb3ZlcnlfZ2V0KHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTEzMC1cXHRcXHRcXHRzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTMxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MTMyOlxcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTEzMy1cXHRjaGFyICpidWZmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTIxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MjE1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG10Nzk5Nl9zeXNfcmVjb3Zlcnlfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyMTY6XFx0LndyaXRlID0gbXQ3OTk2X3N5c19yZWNvdmVyeV9zZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjIxNzpcXHQucmVhZCA9IG10Nzk5Nl9zeXNfcmVjb3ZlcnlfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yMTgtXFx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0yMjI9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyMjM6bXQ3OTk2X3JhZGFyX3RyaWdnZXIodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMjI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yMjYtI2RlZmluZSBSQURBUl9CQUNLR1JPVU5EXFx0MlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyMjc6XFx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjIyODpcXHRzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5ID0gbXQ3OTk2X2JhbmRfcGh5KGRldiwgTkw4MDIxMV9CQU5EXzVHSFopO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yMjktXFx0c3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTI0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MjQ4OlxcdHJkZF9pZHggPSBtdDc5OTZfZ2V0X3JkZF9pZHgocGh5LCB2YWwgPT0gUkFEQVJfQkFDS0dST1VORCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTI0OS1cXHRpZiAocmRkX2lkeCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjI1OTpcXHRyZXR1cm4gbXQ3OTk2X21jdV9yZGRfY21kKGRldiwgUkREX1JBREFSX0VNVUxBVEUsIHJkZF9pZHgsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNjAtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTI2Mj1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yYWRhcl90cmlnZ2VyLCBOVUxMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyNjM6XFx0XFx0XFx0IG10Nzk5Nl9yYWRhcl90cmlnZ2VyLCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTI2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9MjY1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MjY2Om10Nzk5Nl9yZGRfbW9uaXRvcihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTI2Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjI2ODpcXHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXFx1MDAzZXByaXZhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNjktXFx0c3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmID0gXFx1MDAyNmRldi1cXHUwMDNlcmRkMl9jaGFuZGVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTMxMj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjMxMzptdDc5OTZfZndfZGVidWdfd21fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTMxNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjMxNTpcXHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzE2LVxcdGVudW0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTMzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MzM4OlxcdHJldCA9IG10Nzk5Nl9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV00sIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTMzOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MzUxOlxcdFxcdHJldCA9IG10Nzk5Nl9tY3VfZndfZGJnX2N0cmwoZGV2LCBkZWJ1ZywgdmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzUyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9MzU5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MzYwOm10Nzk5Nl9md19kZWJ1Z193bV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM2MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM2MjpcXHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzYzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MzY5OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX3dtLCBtdDc5OTZfZndfZGVidWdfd21fZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozNzA6XFx0XFx0XFx0IG10Nzk5Nl9md19kZWJ1Z193bV9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0zNzI9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozNzM6bXQ3OTk2X2Z3X2RlYnVnX3dhX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zNzQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozNzU6XFx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM3Ni1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MzgwOlxcdHJldCA9IG10Nzk5Nl9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV0EsIGRldi1cXHUwMDNlZndfZGVidWdfd2EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zODEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM4NDpcXHRyZXR1cm4gbXQ3OTk2X21jdV93YV9jbWQoZGV2LCBNQ1VfV0FfUEFSQU1fQ01EKFNFVCksIE1DVV9XQV9QQVJBTV9QRE1BX1JYLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zODUtXFx0XFx0XFx0XFx0ICEhZGV2LVxcdTAwM2Vmd19kZWJ1Z193YSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9Mzg4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6Mzg5Om10Nzk5Nl9md19kZWJ1Z193YV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM5MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM5MTpcXHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzkyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6Mzk4OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX3dhLCBtdDc5OTZfZndfZGVidWdfd2FfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozOTk6XFx0XFx0XFx0IG10Nzk5Nl9md19kZWJ1Z193YV9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDAwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTQyNT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjQyNjptdDc5OTZfZndfZGVidWdfYmluX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00Mjcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQzMS1cXHR9O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo0MzI6XFx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQzMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjQ0NDpcXHRyZXR1cm4gbXQ3OTk2X2Z3X2RlYnVnX3dtX3NldChkZXYsIGRldi1cXHUwMDNlZndfZGVidWdfd20pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NDUtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTQ0Nz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjQ0ODptdDc5OTZfZndfZGVidWdfYmluX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDQ5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDUwOlxcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo0NTc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWdfYmluLCBtdDc5OTZfZndfZGVidWdfYmluX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDU4OlxcdFxcdFxcdCBtdDc5OTZfZndfZGVidWdfYmluX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTQ2MD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjQ2MTptdDc5OTZfZndfdXRpbF93YV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDYyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDYzOlxcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ2NS1cXHRpZiAoZGV2LVxcdTAwM2Vmd19kZWJ1Z193YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDY2OlxcdFxcdHJldHVybiBtdDc5OTZfbWN1X3dhX2NtZChkZXYsIE1DVV9XQV9QQVJBTV9DTUQoUVVFUlkpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NjctXFx0XFx0XFx0XFx0XFx0IE1DVV9XQV9QQVJBTV9DUFVfVVRJTCwgMCwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo0NzI6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10Nzk5Nl9md191dGlsX3dhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz00NzQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDc1Om10Nzk5Nl9hbXBkdV9zdGF0X3JlYWRfcGh5KHN0cnVjdCBtdDc5OTZfcGh5ICpwaHksIHN0cnVjdCBzZXFfZmlsZSAqZmlsZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDc2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDc3OlxcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDc4LVxcdGludCBib3VuZFsxNV0sIHJhbmdlWzhdLCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTUwND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1MDU6bXQ3OTk2X3R4YmZfc3RhdF9yZWFkX3BoeShzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5LCBzdHJ1Y3Qgc2VxX2ZpbGUgKnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTUwNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9NTUyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjU1MzptdDc5OTZfdHhfc3RhdHNfc2hvd19waHkoc3RydWN0IHNlcV9maWxlICpmaWxlLCBzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy01NTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTU1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NTU5OlxcdG10Nzk5Nl9tYWNfdXBkYXRlX3N0YXRzKHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjU2MDpcXHRtdDc5OTZfYW1wZHVfc3RhdF9yZWFkX3BoeShwaHksIGZpbGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy01NjEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1Njk6XFx0bXQ3OTk2X3R4YmZfc3RhdF9yZWFkX3BoeShwaHksIGZpbGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy01NzAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9NTg0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NTg1Om10Nzk5Nl90eF9zdGF0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTg2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NTg3OlxcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1ODg6XFx0c3RydWN0IG10Nzk5Nl9waHkgKnBoeSA9IFxcdTAwMjZkZXYtXFx1MDAzZXBoeTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTg5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTU5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NTkyOlxcdG10Nzk5Nl90eF9zdGF0c19zaG93X3BoeShmaWxlLCBwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1OTM6XFx0cGh5ID0gbXQ3OTk2X3BoeTIoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTk0LVxcdGlmIChwaHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjU5NTpcXHRcXHRtdDc5OTZfdHhfc3RhdHNfc2hvd19waHkoZmlsZSwgcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NTk2OlxcdHBoeSA9IG10Nzk5Nl9waHkzKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTU5Ny1cXHRpZiAocGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1OTg6XFx0XFx0bXQ3OTk2X3R4X3N0YXRzX3Nob3dfcGh5KGZpbGUsIHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTU5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjYwNTpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3OTk2X3R4X3N0YXRzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNjA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz02MDc9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjA4Om10Nzk5Nl9od19xdWV1ZV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdTMyIHNpemUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTYwOS1cXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBod19xdWV1ZV9tYXAgKm1hcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNjEwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjExOlxcdHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo2MTI6XFx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02MTMtXFx0dTMyIGksIHZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz02Mzg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjM5Om10Nzk5Nl9zdGFfaHdfcXVldWVfcmVhZCh2b2lkICpkYXRhLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02NDAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo2NDE6XFx0c3RydWN0IG10Nzk5Nl9zdGEgKm1zdGEgPSAoc3RydWN0IG10Nzk5Nl9zdGEgKilzdGEtXFx1MDAzZWRydl9wcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo2NDI6XFx0c3RydWN0IG10Nzk5Nl92aWYgKm12aWYgPSBtc3RhLVxcdTAwM2V2aWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjY0MzpcXHRzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5ID0gbXQ3OTk2X3ZpZl9saW5rX3BoeShcXHUwMDI2bXZpZi1cXHUwMDNlZGVmbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTY0NC1cXHRzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfc3RhICpsaW5rX3N0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02NDYtXFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjQ3OlxcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTY0OC1cXHR1bnNpZ25lZCBpbnQgbGlua19pZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02NTgtXFx0Zm9yX2VhY2hfc3RhX2FjdGl2ZV9saW5rKHZpZiwgc3RhLCBsaW5rX3N0YSwgbGlua19pZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo2NTk6XFx0XFx0c3RydWN0IG10Nzk5Nl9zdGFfbGluayAqbXN0YV9saW5rO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02NjAtXFx0XFx0c3RydWN0IG10NzZfdmlmX2xpbmsgKm1saW5rO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTY2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjY3OlxcdFxcdG1zdGFfbGluayA9IG10Nzk5Nl9zdGFfbGluayhtc3RhLCBsaW5rX2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNjY4LVxcdFxcdGlmICghbXN0YV9saW5rKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTY5ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjY5NTptdDc5OTZfaHdfcXVldWVzX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02OTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo2OTc6XFx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGZpbGUtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjY5ODpcXHRzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5ID0gXFx1MDAyNmRldi1cXHUwMDNlcGh5O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02OTktXFx0c3RhdGljIGNvbnN0IHN0cnVjdCBod19xdWV1ZV9tYXAgcGxlX3F1ZXVlX21hcFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTc0Ny1cXHRzZXFfcHV0cyhmaWxlLCBcXFwiUExFIG5vbi1lbXB0eSBxdWV1ZSBpbmZvOlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc0ODpcXHRtdDc5OTZfaHdfcXVldWVfcmVhZChmaWxlLCBBUlJBWV9TSVpFKHBsZV9xdWV1ZV9tYXApLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NDktXFx0XFx0XFx0ICAgICBcXHUwMDI2cGxlX3F1ZXVlX21hcFswXSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzUyLVxcdGllZWU4MDIxMV9pdGVyYXRlX3N0YXRpb25zX2F0b21pYyhwaHktXFx1MDAzZW10NzYtXFx1MDAzZWh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo3NTM6XFx0XFx0XFx0XFx0XFx0ICBtdDc5OTZfc3RhX2h3X3F1ZXVlX3JlYWQsIGZpbGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo3NTQ6XFx0cGh5ID0gbXQ3OTk2X3BoeTIoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzU1LVxcdGlmIChwaHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTc1Ni1cXHRcXHRpZWVlODAyMTFfaXRlcmF0ZV9zdGF0aW9uc19hdG9taWMocGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NzU3OlxcdFxcdFxcdFxcdFxcdFxcdCAgbXQ3OTk2X3N0YV9od19xdWV1ZV9yZWFkLCBmaWxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NzU4OlxcdHBoeSA9IG10Nzk5Nl9waHkzKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTc1OS1cXHRpZiAocGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NjAtXFx0XFx0aWVlZTgwMjExX2l0ZXJhdGVfc3RhdGlvbnNfYXRvbWljKHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc2MTpcXHRcXHRcXHRcXHRcXHRcXHQgIG10Nzk5Nl9zdGFfaHdfcXVldWVfcmVhZCwgZmlsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTc2Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NjQtXFx0c2VxX3B1dHMoZmlsZSwgXFxcIlBTRSBub24tZW1wdHkgcXVldWUgaW5mbzpcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo3NjU6XFx0bXQ3OTk2X2h3X3F1ZXVlX3JlYWQoZmlsZSwgQVJSQVlfU0laRShwc2VfcXVldWVfbWFwKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzY2LVxcdFxcdFxcdCAgICAgXFx1MDAyNnBzZV9xdWV1ZV9tYXBbMF0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTc3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NzcxOkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5OTZfaHdfcXVldWVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz03NzM9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo3NzQ6bXQ3OTk2X3htaXRfcXVldWVzX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NzUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo3NzY6XFx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGZpbGUtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc3NzpcXHRzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NzgtXFx0c3RydWN0IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03OTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc5MTpcXHRwaHkgPSBtdDc5OTZfcGh5MihkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03OTItXFx0aWYgKHBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03OTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc5NTpcXHRwaHkgPSBtdDc5OTZfcGh5MyhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03OTYtXFx0aWYgKHBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjgxNDpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3OTk2X3htaXRfcXVldWVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz04MTY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4MTc6bXQ3OTk2X3R3dF9zdGF0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTgxOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjgxOTpcXHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXFx1MDAzZXByaXZhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4MjA6XFx0c3RydWN0IG10Nzk5Nl90d3RfZmxvdyAqaXRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODIxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTg0NT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg0NjptdDc5OTZfcmZfcmVndmFsX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODQ3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODQ4OlxcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NDktXFx0dTMyIHJlZ3ZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg1MjpcXHRyZXQgPSBtdDc5OTZfbWN1X3JmX3JlZ3ZhbChkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXFx1MDAyNnJlZ3ZhbCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz04NjE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4NjI6bXQ3OTk2X3JmX3JlZ3ZhbF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODYzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODY0OlxcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NjUtXFx0dTMyIHZhbDMyID0gdmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg2NzpcXHRyZXR1cm4gbXQ3OTk2X21jdV9yZl9yZWd2YWwoZGV2LCBkZXYtXFx1MDAzZW10NzYuZGVidWdmc19yZWcsIFxcdTAwMjZ2YWwzMiwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg2OC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODcwOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JmX3JlZ3ZhbCwgbXQ3OTk2X3JmX3JlZ3ZhbF9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg3MTpcXHRcXHRcXHQgbXQ3OTk2X3JmX3JlZ3ZhbF9zZXQsIFxcXCIweCUwOGxseFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODczOmludCBtdDc5OTZfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg3NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODc5LVxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcImh3LXF1ZXVlc1xcXCIsIDA0MDAsIGRpciwgZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4ODA6XFx0XFx0XFx0ICAgIFxcdTAwMjZtdDc5OTZfaHdfcXVldWVzX2ZvcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04ODEtXFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwieG1pdC1xdWV1ZXNcXFwiLCAwNDAwLCBkaXIsIGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODgyOlxcdFxcdFxcdCAgICBcXHUwMDI2bXQ3OTk2X3htaXRfcXVldWVzX2ZvcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4ODM6XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwidHhfc3RhdHNcXFwiLCAwNDAwLCBkaXIsIGRldiwgXFx1MDAyNm10Nzk5Nl90eF9zdGF0c19mb3BzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODg0LVxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInN5c19yZWNvdmVyeVxcXCIsIDA2MDAsIGRpciwgZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4ODU6XFx0XFx0XFx0ICAgIFxcdTAwMjZtdDc5OTZfc3lzX3JlY292ZXJ5X29wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg4Ni1cXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJmd19kZWJ1Z193bVxcXCIsIDA2MDAsIGRpciwgZGV2LCBcXHUwMDI2Zm9wc19md19kZWJ1Z193bSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODkwLVxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcImZ3X3V0aWxfd2FcXFwiLCAwNDAwLCBkaXIsIGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODkxOlxcdFxcdFxcdCAgICBcXHUwMDI2bXQ3OTk2X2Z3X3V0aWxfd2FfZm9wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg5Mi1cXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJpbXBsaWNpdF90eGJmXFxcIiwgMDYwMCwgZGlyLCBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODk0LVxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwidHd0X3N0YXRzXFxcIiwgZGlyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4OTU6XFx0XFx0XFx0XFx0ICAgIG10Nzk5Nl90d3Rfc3RhdHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04OTYtXFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwicmZfcmVndmFsXFxcIiwgMDYwMCwgZGlyLCBkZXYsIFxcdTAwMjZmb3BzX3JmX3JlZ3ZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtOTAxLVxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwicmRkX21vbml0b3JcXFwiLCBkaXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjkwMjpcXHRcXHRcXHRcXHQgICAgbXQ3OTk2X3JkZF9tb25pdG9yKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtOTAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTkwOT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo5MTA6bXQ3OTk2X2RlYnVnZnNfd3JpdGVfZndsb2coc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgY29uc3Qgdm9pZCAqaGRyLCBpbnQgaGRybGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05MTEtXFx0XFx0XFx0ICAgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjkzNDp2b2lkIG10Nzk5Nl9kZWJ1Z2ZzX3J4X2Z3X21vbml0b3Ioc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtOTM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05NTUtXFx0aGRyLmxlbiA9ICooX19sZTE2ICopZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6OTU2OlxcdG10Nzk5Nl9kZWJ1Z2ZzX3dyaXRlX2Z3bG9nKGRldiwgXFx1MDAyNmhkciwgc2l6ZW9mKGhkciksIGRhdGEsIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTk1Ny19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTk1OC1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTY6MjUuNzYzMzI4Nzc4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI3MzAyNzg2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyB0aGUgTVQ3OTk2RSBEcml2ZXIgaW4gYSBGdXp6aW5nIEVudmlyb25tZW50KipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBhY3R1YWxseSBnZXQgYXQgdGhpcyBgbXQ3OTk2ZWAgKFBDSWUpIGFuZCBgbXQ3OTk2X25wdWAgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNvbnNpZGVyIHZpcnR1YWxpemF0aW9uIOKAkyBhcmUgd2UgYWJsZSB0byBnZXQgdG8gaXQgaW4gc29tZXRoaW5nIGxpa2UgUUVNVT8gQnV0IHRoZW4gSSByZW1lbWJlciBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCwgd2hpbGUgdXNlZnVsIGZvciBzaW11bGF0aW5nIG1hYzgwMjExIGRldmljZXMsIGlzbid0IGdvaW5nIHRvIGdldCBtZSBhICpzcGVjaWZpYyogTWVkaWF0ZWsgUENJZSBkZXZpY2UgbGlrZSB0aGlzLiBVbmxlc3MgdGhlcmUncyBhIHNwZWNpYWxpemVkIE1lZGlhdGVrIE1UNzk5NiBlbXVsYXRvciBvdXQgdGhlcmUsIGl0IGxvb2tzIGxpa2UgdGhhdCdzIGEgZGVhZCBlbmQgaW4gUUVNVS5cblxuTmV4dCwgSSBuZWVkIHRvIGludmVzdGlnYXRlIFBDSSBlbXVsYXRpb24uIENhbiB3ZSBsZXZlcmFnZSB0aGF0IGZvciB0aGlzIGRldmljZT8gVXN1YWxseSwgSSdkIGxlYW4gb24gc29tZXRoaW5nIGxpa2Ugc3l6a2FsbGVyJ3MgZ2VuZXJpYyBQQ0kgZnV6emVyLCBidXQgdGhhdCB1c3VhbGx5IG5lZWRzIHRoZSBkcml2ZXIgdG8gYmUgYWxyZWFkeSBsb2FkZWQgYW5kIHByb2JlZC4gVGhlbiBpdCBoaXRzIG1l4oCUc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgUENJIGZ1enplciEgSXQgY2FuIGVtdWxhdGUgUENJIGRldmljZXMgYW5kIHRyaWdnZXIgdGhlaXIgcHJvYmUgZnVuY3Rpb25zLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSBuZWVkLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gY2hlY2sgaWYgYENPTkZJR19NVDc5OTZFYCBpcyBlbmFibGVkIG9yIGF0IGxlYXN0IGNvbmZpZ3VyYWJsZS4gSWYgc3l6a2FsbGVyIGNhbiBpbmRlZWQgZnV6eiBQQ0kgZGV2aWNlcyBhbmQgdHJpZ2dlciBwcm9iaW5nLCB0aGlzIGRyaXZlciBtaWdodCBhY3R1YWxseSBiZSByZWFjaGFibGUuIEhvd2V2ZXIsIEkgaGF2ZSB0byBiZSByZWFsaXN0aWMgaGVyZS4gU3l6a2FsbGVyJ3MgUENJIGZ1enplciBpcyBrbm93biB0byBiZSByZWxhdGl2ZWx5IGJhc2ljLCBhbmQgbGlrZWx5IHRvIHByaW1hcmlseSBoaXQgdGhlIHByb2JlL2luaXQgcGF0aHMsIHdoaWNoIGFyZSBncmVhdCB0byBzdGFydCB3aXRoLCBidXQgbWF5IG5vdCBjb3ZlciBldmVyeXRoaW5nLiBTbyBub3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayB3aGVyZSB0aGlzIHBhdGNoIGluIHF1ZXN0aW9uIGlzLCBhbmQgbG9vayBhdCB0aGUgYGluaXQuY2AgZmlsZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MTkzOTEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTY6MzIuMDM2MzU5MDQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2NjQ5NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlmX2NvbWJfZ2xvYmFsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9MTc9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfbGltaXQgaWZfbGltaXRzX2dsb2JhbCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0yNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6Mjc6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gaWZfY29tYl9nbG9iYWwgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTI4LVxcdC5saW1pdHMgPSBcXHUwMDI2aWZfbGltaXRzX2dsb2JhbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6Mzk6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gaWZfY29tYl9nbG9iYWxfNzk5MiA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNDAtXFx0LmxpbWl0cyA9IFxcdTAwMjZpZl9saW1pdHNfZ2xvYmFsLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTQ3Nj1tdDc5OTZfaW5pdF93aXBoeShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNTAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo1MDE6XFx0d2lwaHktXFx1MDAzZWlmYWNlX2NvbWJpbmF0aW9ucyA9IGlzX210Nzk5NihcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA/IFxcdTAwMjZpZl9jb21iX2dsb2JhbCA6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjUwMjpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmlmX2NvbWJfZ2xvYmFsXzc5OTI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTUwMy1cXHR3aXBoeS1cXHUwMDNlbl9pZmFjZV9jb21iaW5hdGlvbnMgPSAxO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNToxNjozMi4xMzMwMTc5MTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5ODA5NTQzNTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBSZW1vdmluZyBhIENvbmZpZ3VyYXRpb24gQ29uc3RyYWludCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIHJlbW92aW5nIGAuYmVhY29uX2ludF9taW5fZ2NkID0gMTAwLGAgZnJvbSB0aGUgYGlmX2NvbWJfZ2xvYmFsYCBhbmQgYGlmX2NvbWJfZ2xvYmFsXzc5OTJgIHN0cnVjdHMgaW4gdGhlIGB3aXBoeWAgaW50ZXJmYWNlIGNvbWJpbmF0aW9ucy4gSXQncyBqdXN0IGEgc3RhdGljIGNvbmZpZ3VyYXRpb24gY2hhbmdlLCBlc3NlbnRpYWxseSByZW1vdmluZyBhIGNvbnN0cmFpbnQgb24gYmVhY29uIGludGVydmFscy4gTXkgZmlyc3QgdGhvdWdodCBpcywgXCJJcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz9cIlxuXG5JdCdzIGVzc2VudGlhbGx5IGEgZGF0YSBzdHJ1Y3R1cmUgbW9kaWZpY2F0aW9uLiBObyBuZXcgbG9naWMgaXMgYmVpbmcgaW50cm9kdWNlZDsgdGhlIHBhdGNoIGp1c3QgcmVsYXhlcyBhIGNvbnN0cmFpbnQgd2l0aGluIHRoZSBtYWM4MDIxMSBsYXllciB3aGVuIGl0IGNyZWF0ZXMgaW50ZXJmYWNlcy4gVGhhdCByZWxheGF0aW9uIG1lYW5zIHdlICptaWdodCogYmUgYWJsZSB0byBjcmVhdGUgaW50ZXJmYWNlcyB3aXRoIGJlYWNvbiBpbnRlcnZhbHMgdGhhdCB3ZXJlbid0IG11bHRpcGxlcyBvZiAxMDAgYmVmb3JlLCBidXQgaXQncyBzcGVjaWZpY2FsbHkgdGllZCB0byB0aGUgTVQ3OTk2IGRyaXZlci5cblxuVGhlIGJpZyBxdWVzdGlvbiBpcyB3aGV0aGVyIHdlIGNhbiBldmVuICpyZWFjaCogdGhpcyBpbiBhIHR5cGljYWwgUUVNVSBlbnZpcm9ubWVudC4gVW5sZXNzIHdlIGdldCBleHRyZW1lbHkgbHVja3ksIG9yIHVzZSBhIFBDSSBmdXp6ZXIsIEknbSB0aGlua2luZyB0aGUgZHJpdmVyIGlzbid0IGZ1bGx5IGFjY2Vzc2libGUuIFdlIGhhdmUgdG8gY29uc2lkZXIgd2hldGhlciB0aGUgY2hhbmdlIGlzIHNpZ25pZmljYW50IGVub3VnaCB0byB3YXJyYW50IGZ1enppbmcgaWYgdGhlIGRyaXZlciBpcyBub3QgZWFzaWx5IHJlYWNoZWQuIFdlIGNvdWxkIHJlYWNoIGBwcm9iZWAsIGJ1dCBpdCdzIGhpZ2hseSBsaWtlbHkgdGhhdCBmaXJtd2FyZSBsb2FkaW5nIG9yIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHdpbGwgZmFpbCBiZWZvcmUgd2UgY2FuIGdldCB0byB0aGUgY29yZSBsb2dpYy4gVGhlcmUncyBhbHNvIHRoZSBxdWVzdGlvbiBvZiB3aGV0aGVyIHRoaXMgbWlub3IgY29uZmlnIGNoYW5nZSBoYXMgKmFueSogaW1wYWN0IG9uIGV4aXN0aW5nIGNvZGUuXG5cbkkgbmVlZCB0byB0aGluayBhYm91dCB3aGVyZSBgYmVhY29uX2ludF9taW5fZ2NkYCBpcyB1c2VkLiBJIHJlbWVtYmVyIGl0J3MgcGFydCBvZiBtYWM4MDIxMSdzIGludGVyZmFjZSB2YWxpZGF0aW9uLiBTaW5jZSB0aGlzIGlzIGhhcmR3YXJlLXNwZWNpZmljLCBhbmQgdGhlIGNoYW5nZSBpcyB0cml2aWFsIChqdXN0IHJlbW92aW5nIGEgY29uc3RyYWludCksIGl0J3MgcHJvYmFibHkgKm5vdCogd29ydGggZnV6emluZywgb3IgaWYgaXQgaXMsIHRoZSBmdXp6aW5nIGlzIG1vcmUgZm9jdXNlZCBvbiBjb25maWcgY2hhbmdlcywgYW5kIG5vdCBvbiBjb3JlIGxvZ2ljLlxuXG5MZXQncyByZWZlciBiYWNrIHRvIHRob3NlIGd1aWRlbGluZXMuIEl0IHN1Z2dlc3RzIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24ndCBhbHRlciBleGVjdXRpb24gZmxvdywgb3IgaWYgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gQW5kIGl0IGxvb2tzIGxpa2UgTVQ3OTk2IHJlbGllcyBvbiBhIHBoeXNpY2FsIFBDSWUgY2FyZCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBjb2RlIHBhdGhzIGxpa2VseSB1bnJlYWNoYWJsZSBpbiBRRU1VLiBFdmVuIHdpdGggYSBQQ0kgZnV6emVyLCB3ZSBwcm9iYWJseSB3b24ndCBnZXQgcGFzdCB0aGUgcHJvYmUgc3RhZ2UgZHVlIHRvIHRoZSBmaXJtd2FyZSBvciBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBmYWlsaW5nIHdpdGhvdXQgdGhlIHJlYWwgaGFyZHdhcmUuIGBtdDc5OTZfaW5pdF93aXBoeWAgaXMgY2FsbGVkIGZyb20gYG10Nzk5Nl9yZWdpc3Rlcl9leHRfcGh5YCBvciBgbXQ3OTk2X3JlZ2lzdGVyX3BoeWAsIGJ1dCB0aGF0IHdvbid0IHJ1bi5cblxuVGhlcmVmb3JlLCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UgYW5kIHRoZSBsaW1pdGF0aW9ucyBvZiBRRU1VIGFjY2VzcyB0byB0aGlzIHNwZWNpZmljIGhhcmR3YXJlLCBteSBpbnN0aW5jdCBpcyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0J3MgYSBjb25maWcgY2hhbmdlLCBhbmQgbm90IGEgY3JpdGljYWwgb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDU4NSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNToxNjo0MS45NDI1NjM3M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU1MjY4NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTk2X2luaXRfd2lwaHlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz00MTU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6NDE2Om10Nzk5Nl9pbml0X3dpcGh5X2JhbmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTQxNy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9NDc1PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjQ3NjptdDc5OTZfaW5pdF93aXBoeShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTQ3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo1NTI6XFx0bXQ3OTk2X2luaXRfd2lwaHlfYmFuZChodywgXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNTUzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz02ODA9c3RhdGljIGludCBtdDc5OTZfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9iYW5kX2lkIGJhbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNzMxLVxcdC8qIGluaXQgd2lwaHkgYWNjb3JkaW5nIHRvIG1waHkgYW5kIHBoeSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo3MzI6XFx0bXQ3OTk2X2luaXRfd2lwaHlfYmFuZChtcGh5LVxcdTAwM2VodywgcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNzMzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTE3Mjk9aW50IG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xNzUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxNzUyOlxcdG10Nzk5Nl9pbml0X3dpcGh5KGh3LCBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTc1My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTY6NDIuMDc4MDk2NjczWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2NjM0MjkxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkludmVzdGlnYXRpbmcgYG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2VgIENhbGxlcnMqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyBhbmQgc3BlY2lmaWNhbGx5LCB0byBpZGVudGlmeSB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCBgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZWAuIFRoaXMgaXMgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCB3aGVuIHJldmVyc2UgZW5naW5lZXJpbmcgb3IgZGVidWdnaW5nIGRyaXZlciBjb2RlLCBiZWNhdXNlIHVuZGVyc3RhbmRpbmcgKmhvdyogdGhlIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQgaXMgY3J1Y2lhbC4gVGhpcyB3aWxsIGhlbHAgbWUgZ3Jhc3AgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBicm9hZGVyIGRyaXZlciBhcmNoaXRlY3R1cmUgYW5kIGlkZW50aWZ5IHBvdGVudGlhbCBpc3N1ZXMgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbi4gVGhpcyB3aWxsIGJlIHRoZSBmaXJzdCB0aGluZyBJIGRvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjUxMiwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE1OjE2OjQ1LjM0NDQ0MjgzMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwNDEwNTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz0xNzE0PXZvaWQgbXQ3OTk2X3NldF9zdHJlYW1faGVfZWh0X2NhcHMoc3RydWN0IG10Nzk5Nl9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xNzI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxNzI5OmludCBtdDc5OTZfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTE3MzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg9Njc3PXU2NCBfX210Nzk5Nl9nZXRfdHNmKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgbXQ3OTk2X3ZpZl9saW5rICpsaW5rKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaDo2Nzg6aW50IG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2LmgtNjc5LXZvaWQgbXQ3OTk2X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM9OTk9c3RhdGljIGludCBtdDc5OTZfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jOjE5NTpcXHRyZXQgPSBtdDc5OTZfcmVnaXN0ZXJfZGV2aWNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMTk2LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE1OjE2OjQ1LjQ3NDg1ODQzNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDcwNzUzNDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBzbmlwcGV0LCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgd2VsbC12ZXJzZWQgaW4gdGhpcyBraW5kIG9mIGRyaXZlciBhbmFseXNpczpcblxuKipEZWx2aW5nIGludG8gdGhlIGBtdDc5OTZfcGNpX3Byb2JlYCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBjYWxsc3RhY2sgcG9pbnRzIHRvIGBtdDc5OTZfcGNpX3Byb2JlYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgc3RhcnRzLCB0aGUgaW5pdGlhbCBzZXR1cCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGRldmljZSBvbiBhIFBDSSBidXMuIEkga25vdyB0aGUgZHJpbGwsIHR5cGljYWxseSwgdGhlcmUncyBhIHNlcXVlbmNlIG9mIGluaXRpYWxpemF0aW9uIHN0ZXBzIGJlZm9yZSB0aGUgY29yZSBkcml2ZXIgZnVuY3Rpb25hbGl0eSBraWNrcyBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGZsb3cgdG8gcHJvcGVybHkgZ2V0IHRoaXMgY2hpcCB0byB3b3JrLlxuXG5NeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgbGlrZWx5IHRoZSBmaXJtd2FyZSBsb2FkaW5nIHNlcXVlbmNlIHdpdGhpbiB0aGlzIGBtdDc5OTZfcGNpX3Byb2JlYCBmdW5jdGlvbi4gSSBoYXZlIGEgZmVlbGluZyB0aGUgZHJpdmVyIHdpbGwgbmVlZCBzb21lIGZpcm13YXJlIHRvIGxvYWQsIGl0IHdpbGwgYmUgdGhlIGhlYXJ0IG9mIGl0cyBvcGVyYXRpb24sIG9yIGF0IGxlYXN0IGEgbWFqb3IgcGFydC4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBwb2ludCB3aGVyZSBpdCBkZXRlcm1pbmVzIHdoZXRoZXIgZmlybXdhcmUgaXMgbmVlZGVkLCBhbmQgdGhlbiBob3cgaXQgbG9hZHMgaXQuIFRoYXQncyBhbHdheXMgYSBrZXkgYXJlYSB0byBzY3J1dGluaXplLiBLbm93aW5nIHRoaXMsIEkgY2FuIHN0YXJ0IHRvIG1hcCBvdXQgaG93IHRoZSB3aG9sZSB0aGluZyB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMyMjgsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNToxNjo0OS41NDU2MTQzMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI0MDA3NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTk2X3BjaV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM9Nzk9c3RhdGljIGludCBtdDc5OTZfcGNpX2hpZjJfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYy05OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYzo5OTpzdGF0aWMgaW50IG10Nzk5Nl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMTAwLVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYz0yNDQ9c3RydWN0IHBjaV9kcml2ZXIgbXQ3OTk2X2hpZl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYy0yNDYtXFx0LmlkX3RhYmxlXFx0PSBtdDc5OTZfaGlmX2RldmljZV90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYzoyNDc6XFx0LnByb2JlXFx0XFx0PSBtdDc5OTZfcGNpX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTI0OC1cXHQucmVtb3ZlXFx0XFx0PSBtdDc5OTZfaGlmX3JlbW92ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jPTI1MT1zdHJ1Y3QgcGNpX2RyaXZlciBtdDc5OTZfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTI1My1cXHQuaWRfdGFibGVcXHQ9IG10Nzk5Nl9wY2lfZGV2aWNlX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jOjI1NDpcXHQucHJvYmVcXHRcXHQ9IG10Nzk5Nl9wY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjU1LVxcdC5yZW1vdmVcXHRcXHQ9IG10Nzk5Nl9wY2lfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNToxNjo0OS42MTgwMjA4OTVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkwMjk4ODY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIGBtdDc5OTZfcGNpX3Byb2JlYCBmb3IgRnV6emluZyBSZXNpbGllbmNlKipcblxuQWxyaWdodCwgYmVmb3JlIEkgdW5sZWFzaCB0aGUgZnV6emVycyBvbiB0aGlzLCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0J3MgZ29pbmcgb24gaW5zaWRlIGBtdDc5OTZfcGNpX3Byb2JlYC4gTXkgcHJpbWFyeSBjb25jZXJuIGlzLCBvZiBjb3Vyc2UsIGlkZW50aWZ5aW5nIHBvdGVudGlhbCBwaXRmYWxscyBmb3IgYSBmdXp6aW5nIGNhbXBhaWduLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgcHJvYmUgZnVuY3Rpb24gaXMgZ29pbmcgdG8gdHJ5IHRvIGxvYWQgZmlybXdhcmUsIG9yIGF0dGVtcHQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgaGFyZHdhcmUgaW4gYSB3YXkgdGhhdOKAmXMgZ29pbmcgdG8gdHJpcCBpdCB1cCBpbiBhIGZ1enplZCBlbnZpcm9ubWVudC4gV2UgYWxsIGtub3cgaG93IHF1aWNrbHkgdGhhdCBjYW4gZGVyYWlsIGEgZnV6emluZyBzZXNzaW9uISBMZXQncyBnZXQgcmVhZGluZyBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyB0aGluZ3MgdGhhdCdsbCBjYXVzZSBhbiBpc3N1ZS4gR290dGEgZW5zdXJlIHRoZSBmdXp6aW5nIHNlc3Npb24gd2lsbCBiZSBzdGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MTMwLCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTY6NTMuNTIxMDEzMjE1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA5OSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTk6XFx0c3RhdGljIGludCBtdDc5OTZfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiAxMDA6XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4gMTAxOlxcdHtcXG4gMTAyOlxcdFxcdHN0cnVjdCBwY2lfZGV2ICpoaWYyX2RldjtcXG4gMTAzOlxcdFxcdHN0cnVjdCBtdDc5OTZfaGlmICpoaWYyO1xcbiAxMDQ6XFx0XFx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldjtcXG4gMTA1OlxcdFxcdGludCBpcnEsIGhpZjJfaXJxLCByZXQ7XFxuIDEwNjpcXHRcXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXY7XFxuIDEwNzpcXHRcXG4gMTA4OlxcdFxcdHJldCA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcXG4gMTA5OlxcdFxcdGlmIChyZXQpXFxuIDExMDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAxMTE6XFx0XFxuIDExMjpcXHRcXHRyZXQgPSBwY2ltX2lvbWFwX3JlZ2lvbnMocGRldiwgQklUKDApLCBwY2lfbmFtZShwZGV2KSk7XFxuIDExMzpcXHRcXHRpZiAocmV0KVxcbiAxMTQ6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMTE1OlxcdFxcbiAxMTY6XFx0XFx0cGNpX3NldF9tYXN0ZXIocGRldik7XFxuIDExNzpcXHRcXG4gMTE4OlxcdFxcdHJldCA9IGRtYV9zZXRfbWFzayhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBETUFfQklUX01BU0soMzYpKTtcXG4gMTE5OlxcdFxcdGlmIChyZXQpXFxuIDEyMDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAxMjE6XFx0XFxuIDEyMjpcXHRcXHRyZXQgPSBkbWFfc2V0X2NvaGVyZW50X21hc2soXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDMyKSk7XFxuIDEyMzpcXHRcXHRpZiAocmV0KVxcbiAxMjQ6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMTI1OlxcdFxcbiAxMjY6XFx0XFx0bXQ3Nl9wY2lfZGlzYWJsZV9hc3BtKHBkZXYpO1xcbiAxMjc6XFx0XFxuIDEyODpcXHRcXHRpZiAoaWQtXFx1MDAzZWRldmljZSA9PSBNVDc5OTZfREVWSUNFX0lEXzIgfHxcXG4gMTI5OlxcdFxcdCAgICBpZC1cXHUwMDNlZGV2aWNlID09IE1UNzk5Ml9ERVZJQ0VfSURfMiB8fFxcbiAxMzA6XFx0XFx0ICAgIGlkLVxcdTAwM2VkZXZpY2UgPT0gTVQ3OTkwX0RFVklDRV9JRF8yKVxcbiAxMzE6XFx0XFx0XFx0cmV0dXJuIG10Nzk5Nl9wY2lfaGlmMl9wcm9iZShwZGV2KTtcXG4gMTMyOlxcdFxcbiAxMzM6XFx0XFx0ZGV2ID0gbXQ3OTk2X21taW9fcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGNpbV9pb21hcF90YWJsZShwZGV2KVswXSxcXG4gMTM0OlxcdFxcdFxcdFxcdFxcdGlkLVxcdTAwM2VkZXZpY2UpO1xcbiAxMzU6XFx0XFx0aWYgKElTX0VSUihkZXYpKVxcbiAxMzY6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIoZGV2KTtcXG4gMTM3OlxcdFxcbiAxMzg6XFx0XFx0bWRldiA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzY7XFxuIDEzOTpcXHRcXHRtdDc5OTZfd2ZzeXNfcmVzZXQoZGV2KTtcXG4gMTQwOlxcdFxcdGhpZjIgPSBtdDc5OTZfcGNpX2luaXRfaGlmMihwZGV2KTtcXG4gMTQxOlxcdFxcdGRldi1cXHUwMDNlaGlmMiA9IGhpZjI7XFxuIDE0MjpcXHRcXG4gMTQzOlxcdFxcdG10NzZfbnB1X2luaXQobWRldiwgcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIDApLFxcbiAxNDQ6XFx0XFx0XFx0ICAgICAgcGNpX2RvbWFpbl9ucihwZGV2LVxcdTAwM2VidXMpID8gMyA6IDIpO1xcbiAxNDU6XFx0XFxuIDE0NjpcXHRcXHRyZXQgPSBtdDc5OTZfbW1pb193ZWRfaW5pdChkZXYsIHBkZXYsIGZhbHNlLCBcXHUwMDI2aXJxKTtcXG4gMTQ3OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiAxNDg6XFx0XFx0XFx0Z290byBmcmVlX3dlZF9vcl9pcnFfdmVjdG9yO1xcbiAxNDk6XFx0XFxuIDE1MDpcXHRcXHRpZiAoIXJldCkge1xcbiAxNTE6XFx0XFx0XFx0cmV0ID0gcGNpX2FsbG9jX2lycV92ZWN0b3JzKHBkZXYsIDEsIDEsIFBDSV9JUlFfQUxMX1RZUEVTKTtcXG4gMTUyOlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiAxNTM6XFx0XFx0XFx0XFx0Z290byBmcmVlX2RldmljZTtcXG4gMTU0OlxcdFxcbiAxNTU6XFx0XFx0XFx0aXJxID0gcGRldi1cXHUwMDNlaXJxO1xcbiAxNTY6XFx0XFx0fVxcbiAxNTc6XFx0XFxuIDE1ODpcXHRcXHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXFx1MDAzZWRldiwgaXJxLCBtdDc5OTZfaXJxX2hhbmRsZXIsXFxuIDE1OTpcXHRcXHRcXHRcXHQgICAgICAgSVJRRl9TSEFSRUQsIEtCVUlMRF9NT0ROQU1FLCBkZXYpO1xcbiAxNjA6XFx0XFx0aWYgKHJldClcXG4gMTYxOlxcdFxcdFxcdGdvdG8gZnJlZV93ZWRfb3JfaXJxX3ZlY3RvcjtcXG4gMTYyOlxcdFxcbiAxNjM6XFx0XFx0bXQ3Nl93cihkZXYsIE1UX0lOVF9NQVNLX0NTUiwgMCk7XFxuIDE2NDpcXHRcXHQvKiBtYXN0ZXIgc3dpdGNoIG9mIFBDSWUgaW50ZXJydXB0IGVuYWJsZSAqL1xcbiAxNjU6XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1BDSUVfTUFDX0lOVF9FTkFCTEUsIDB4ZmYpO1xcbiAxNjY6XFx0XFxuIDE2NzpcXHRcXHRpZiAoaGlmMikge1xcbiAxNjg6XFx0XFx0XFx0aGlmMl9kZXYgPSBjb250YWluZXJfb2YoaGlmMi1cXHUwMDNlZGV2LCBzdHJ1Y3QgcGNpX2RldiwgZGV2KTtcXG4gMTY5OlxcdFxcbiAxNzA6XFx0XFx0XFx0cmV0ID0gbXQ3OTk2X21taW9fd2VkX2luaXQoZGV2LCBoaWYyX2RldiwgdHJ1ZSwgXFx1MDAyNmhpZjJfaXJxKTtcXG4gMTcxOlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiAxNzI6XFx0XFx0XFx0XFx0Z290byBmcmVlX2hpZjJfd2VkX2lycV92ZWN0b3I7XFxuIDE3MzpcXHRcXG4gMTc0OlxcdFxcdFxcdGlmICghcmV0KSB7XFxuIDE3NTpcXHRcXHRcXHRcXHRyZXQgPSBwY2lfYWxsb2NfaXJxX3ZlY3RvcnMoaGlmMl9kZXYsIDEsIDEsXFxuIDE3NjpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgUENJX0lSUV9BTExfVFlQRVMpO1xcbiAxNzc6XFx0XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDE3ODpcXHRcXHRcXHRcXHRcXHRnb3RvIGZyZWVfaGlmMjtcXG4gMTc5OlxcdFxcbiAxODA6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VoaWYyLVxcdTAwM2VpcnEgPSBoaWYyX2Rldi1cXHUwMDNlaXJxO1xcbiAxODE6XFx0XFx0XFx0XFx0aGlmMl9pcnEgPSBkZXYtXFx1MDAzZWhpZjItXFx1MDAzZWlycTtcXG4gMTgyOlxcdFxcdFxcdH1cXG4gMTgzOlxcdFxcbiAxODQ6XFx0XFx0XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVxcdTAwM2VkZXYsIGhpZjJfaXJxLCBtdDc5OTZfaXJxX2hhbmRsZXIsXFxuIDE4NTpcXHRcXHRcXHRcXHRcXHQgICAgICAgSVJRRl9TSEFSRUQsIEtCVUlMRF9NT0ROQU1FIFxcXCItaGlmXFxcIixcXG4gMTg2OlxcdFxcdFxcdFxcdFxcdCAgICAgICBkZXYpO1xcbiAxODc6XFx0XFx0XFx0aWYgKHJldClcXG4gMTg4OlxcdFxcdFxcdFxcdGdvdG8gZnJlZV9oaWYyX3dlZF9pcnFfdmVjdG9yO1xcbiAxODk6XFx0XFxuIDE5MDpcXHRcXHRcXHRtdDc2X3dyKGRldiwgTVRfSU5UMV9NQVNLX0NTUiwgMCk7XFxuIDE5MTpcXHRcXHRcXHQvKiBtYXN0ZXIgc3dpdGNoIG9mIFBDSWUgdG50ZXJydXB0IGVuYWJsZSAqL1xcbiAxOTI6XFx0XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1BDSUUxX01BQ19JTlRfRU5BQkxFLCAweGZmKTtcXG4gMTkzOlxcdFxcdH1cXG4gMTk0OlxcdFxcbiAxOTU6XFx0XFx0cmV0ID0gbXQ3OTk2X3JlZ2lzdGVyX2RldmljZShkZXYpO1xcbiAxOTY6XFx0XFx0aWYgKHJldClcXG4gMTk3OlxcdFxcdFxcdGdvdG8gZnJlZV9oaWYyX2lycTtcXG4gMTk4OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNToxNjo1My41MjExNTc2MjVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgwNDMyMzYxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIERldmljZSBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyBgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZWAgaGFzIGJlZW4gaW52b2tlZC4gTXkgZmlyc3QgdGhvdWdodCBpcywgXCJBbHJpZ2h0LCBsZXQncyBkaXNzZWN0IHRoaXMgZnVuY3Rpb24gYW5kIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBicm9hZGVyIGRyaXZlciBjb250ZXh0LlwiIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc3RlcHMgaXQgdGFrZXMgdG8gaW50ZWdyYXRlIHRoaXMgc3BlY2lmaWMgcGllY2Ugb2YgaGFyZHdhcmUsIGxpa2VseSBhIFdpRmkgZGV2aWNlIGJhc2VkIG9uIHRoZSBuYW1pbmcsIGludG8gdGhlIHN5c3RlbSdzIGRldmljZSB0cmVlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIG1lbW9yeSBtYXBwaW5nLCBpbnRlcnJ1cHQgcmVnaXN0cmF0aW9uLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQsIG9mIGNvdXJzZSwgdGhlIGdlbmVyYWwgZGV2aWNlIGluaXRpYWxpemF0aW9uIGZsb3cuIEFyZSB0aGVyZSBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb25zIGhhcHBlbmluZz8gQXJlIGFueSBjcml0aWNhbCBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgcG9wdWxhdGVkIG9yIGNvbmZpZ3VyZWQgYXQgdGhpcyBzdGFnZT8gSSBuZWVkIHRvIGdldCBhIGhpZ2gtbGV2ZWwgdmlldyBhbmQgdGhlbiB6b29tIGluIG9uIHRoZSBjcml0aWNhbCBwYXJ0cyB0byBhbmFseXplIGl0cyBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgcmVsZXZhbnQgZnJhbWV3b3JrcywgbGlrZWx5IHRoZSBtYWM4MDIxMSB3aXJlbGVzcyBzdGFjay4gSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBlcnJvciBjaGVja2luZyBhbmQgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBwb3RlbnRpYWwgZmFpbHVyZSBzY2VuYXJpb3MgZHVyaW5nIGRldmljZSByZWdpc3RyYXRpb247IHRoYXQgd2lsbCBiZSBjcml0aWNhbCBmb3IgZGVidWdnaW5nIGxhdGVyIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjEwMCwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTY6NTguMzI1NDgzNDkyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NDY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTcyOSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE3Mjk6XFx0aW50IG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4xNzMwOlxcdHtcXG4xNzMxOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gbXQ3Nl9odyhkZXYpO1xcbjE3MzI6XFx0XFx0c3RydWN0IG10Nzk5Nl9waHkgKnBoeTtcXG4xNzMzOlxcdFxcdGludCByZXQ7XFxuMTczNDpcXHRcXG4xNzM1OlxcdFxcdGRldi1cXHUwMDNlcGh5LmRldiA9IGRldjtcXG4xNzM2OlxcdFxcdGRldi1cXHUwMDNlcGh5Lm10NzYgPSBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnBoeTtcXG4xNzM3OlxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5waHkucHJpdiA9IFxcdTAwMjZkZXYtXFx1MDAzZXBoeTtcXG4xNzM4OlxcdFxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VyY193b3JrLCBtdDc5OTZfbWFjX3N0YV9yY193b3JrKTtcXG4xNzM5OlxcdFxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZW1waHkubWFjX3dvcmssIG10Nzk5Nl9tYWNfd29yayk7XFxuMTc0MDpcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2ZGV2LVxcdTAwM2VzdGFfcmNfbGlzdCk7XFxuMTc0MTpcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2ZGV2LVxcdTAwM2V0d3RfbGlzdCk7XFxuMTc0MjpcXHRcXG4xNzQzOlxcdFxcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXFx1MDAyNmRldi1cXHUwMDNlcmVzZXRfd2FpdCk7XFxuMTc0NDpcXHRcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlcmVzZXRfd29yaywgbXQ3OTk2X21hY19yZXNldF93b3JrKTtcXG4xNzQ1OlxcdFxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VkdW1wX3dvcmssIG10Nzk5Nl9tYWNfZHVtcF93b3JrKTtcXG4xNzQ2OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNmRldi1cXHUwMDNlZHVtcF9tdXRleCk7XFxuMTc0NzpcXHRcXG4xNzQ4OlxcdFxcdHJldCA9IG10Nzk5Nl9pbml0X2hhcmR3YXJlKGRldik7XFxuMTc0OTpcXHRcXHRpZiAocmV0KVxcbjE3NTA6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xNzUxOlxcdFxcbjE3NTI6XFx0XFx0bXQ3OTk2X2luaXRfd2lwaHkoaHcsIFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpO1xcbjE3NTM6XFx0XFxuMTc1NDpcXHRcXHRyZXQgPSBtdDc5OTZfcmVnaXN0ZXJfcGh5KGRldiwgTVRfQkFORDEpO1xcbjE3NTU6XFx0XFx0aWYgKHJldClcXG4xNzU2OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTc1NzpcXHRcXG4xNzU4OlxcdFxcdHJldCA9IG10Nzk5Nl9yZWdpc3Rlcl9waHkoZGV2LCBNVF9CQU5EMik7XFxuMTc1OTpcXHRcXHRpZiAocmV0KVxcbjE3NjA6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xNzYxOlxcdFxcbjE3NjI6XFx0XFx0cmV0ID0gbXQ3OTk2X25wdV9od19pbml0KGRldik7XFxuMTc2MzpcXHRcXHRpZiAocmV0KVxcbjE3NjQ6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xNzY1OlxcdFxcbjE3NjY6XFx0XFx0bXQ3OTk2X2RtYV9ycm9fc3RhcnQoZGV2KTtcXG4xNzY3OlxcdFxcbjE3Njg6XFx0XFx0cmV0ID0gbXQ3Nl9yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgdHJ1ZSwgbXQ3Nl9yYXRlcyxcXG4xNzY5OlxcdFxcdFxcdFxcdFxcdCAgIEFSUkFZX1NJWkUobXQ3Nl9yYXRlcykpO1xcbjE3NzA6XFx0XFx0aWYgKHJldClcXG4xNzcxOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTc3MjpcXHRcXG4xNzczOlxcdFxcdG10Nzk5Nl9mb3JfZWFjaF9waHkoZGV2LCBwaHkpXFxuMTc3NDpcXHRcXHRcXHRtdDc5OTZfdGhlcm1hbF9pbml0KHBoeSk7XFxuMTc3NTpcXHRcXG4xNzc2OlxcdFxcdGllZWU4MDIxMV9xdWV1ZV93b3JrKG10NzZfaHcoZGV2KSwgXFx1MDAyNmRldi1cXHUwMDNlaW5pdF93b3JrKTtcXG4xNzc3OlxcdFxcbjE3Nzg6XFx0XFx0ZGV2LVxcdTAwM2VyZWNvdmVyeS5od19pbml0X2RvbmUgPSB0cnVlO1xcbjE3Nzk6XFx0XFxuMTc4MDpcXHRcXHRyZXQgPSBtdDc5OTZfaW5pdF9kZWJ1Z2ZzKGRldik7XFxuMTc4MTpcXHRcXHRpZiAocmV0KVxcbjE3ODI6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4xNzgzOlxcdFxcbjE3ODQ6XFx0XFx0cmV0ID0gbXQ3OTk2X2NvcmVkdW1wX3JlZ2lzdGVyKGRldik7XFxuMTc4NTpcXHRcXHRpZiAocmV0KVxcbjE3ODY6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4xNzg3OlxcdFxcbjE3ODg6XFx0XFx0cmV0dXJuIDA7XFxuMTc4OTpcXHRcXG4xNzkwOlxcdGVycm9yOlxcbjE3OTE6XFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2Vpbml0X3dvcmspO1xcbjE3OTI6XFx0XFxuMTc5MzpcXHRcXHRyZXR1cm4gcmV0O1xcbjE3OTQ6XFx0fVxcbjE3OTU6XFx0XFxuMTc5NjpcXHR2b2lkIG10Nzk5Nl91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbjE3OTc6XFx0e1xcbjE3OTg6XFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2VkdW1wX3dvcmspO1xcbjE3OTk6XFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2V3ZWRfcnJvLndvcmspO1xcbjE4MDA6XFx0XFx0bXQ3OTk2X3VucmVnaXN0ZXJfcGh5KG10Nzk5Nl9waHkzKGRldikpO1xcbjE4MDE6XFx0XFx0bXQ3OTk2X3VucmVnaXN0ZXJfcGh5KG10Nzk5Nl9waHkyKGRldikpO1xcbjE4MDI6XFx0XFx0bXQ3OTk2X3VucmVnaXN0ZXJfdGhlcm1hbChcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbjE4MDM6XFx0XFx0bXQ3OTk2X2NvcmVkdW1wX3VucmVnaXN0ZXIoZGV2KTtcXG4xODA0OlxcdFxcdG10NzZfdW5yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuMTgwNTpcXHRcXHRtdDc5OTZfd2VkX3Jyb19mcmVlKGRldik7XFxuMTgwNjpcXHRcXHRtdDc5OTZfbWN1X2V4aXQoZGV2KTtcXG4xODA3OlxcdFxcdG10Nzk5Nl90eF90b2tlbl9wdXQoZGV2KTtcXG4xODA4OlxcdFxcdG10Nzk5Nl9kbWFfY2xlYW51cChkZXYpO1xcbjE4MDk6XFx0XFx0aWYgKG10Nzk5Nl9oYXNfaHdycm8oZGV2KSBcXHUwMDI2XFx1MDAyNlxcbjE4MTA6XFx0XFx0ICAgICFtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXFxuMTgxMTpcXHRcXHRcXHRtdDc5OTZfcnJvX21zZHVfcGFnZV9tYXBfZnJlZShkZXYpO1xcbjE4MTI6XFx0XFx0dGFza2xldF9kaXNhYmxlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYuaXJxX3Rhc2tsZXQpO1xcbjE4MTM6XFx0XFxuMTgxNDpcXHRcXHRtdDc2X2ZyZWVfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbjE4MTU6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNToxNjo1OC4zMjU3NDAxNjJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAzMjg4NjY5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzk5NiBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqXG5cbk9rYXksIHNvIHdlJ3JlIHN0YXJ0aW5nIHdpdGggYG10Nzk5Nl9pbml0X2hhcmR3YXJlYC4gVGhhdCdzIHRoZSBmaXJzdCBzdGVwIGJlZm9yZSB3ZSBldmVuIGdldCB0byB0aGUgV2ktRmkgaW50ZXJmYWNlIGluaXRpYWxpemF0aW9uLiBNYWtlcyBzZW5zZTsgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBoYXMgdG8gY29tZSBiZWZvcmUgYW55dGhpbmcgZWxzZS4gTGV0J3MgZGlnIGludG8gdGhhdCBgbXQ3OTk2X2luaXRfaGFyZHdhcmVgIGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCdzIGRvaW5nIHVuZGVyIHRoZSBob29kLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgZnVuZGFtZW50YWwgaGFyZHdhcmUgYXNwZWN0cyBhcmUgYmVpbmcgYnJvdWdodCB1cCBmaXJzdC4gSXMgaXQgcG93ZXIgc2VxdWVuY2luZywgY2xvY2sgc2V0dXAsIHJlZ2lzdGVyIGluaXRpYWxpemF0aW9uLi4uIHdoYXQncyB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIG9mIHRoZSBzaWxpY29uIHN0YXJ0dXA/IEkgbmVlZCB0byBzZWUgaWYgaXQgbWFrZXMgc2Vuc2Ugd2l0aGluIHRoZSBvdmVyYWxsIGJvb3QgcHJvY2VzcyBhbmQgdGhlIGRldmljZSdzIGFyY2hpdGVjdHVyZS4gQW5kIGhvdyBkb2VzIHRoaXMgY29ubmVjdCB3aXRoIHRoZSByZWd1bGF0b3J5IHJlcXVpcmVtZW50cz9cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4NDUsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE1OjE3OjAzLjM1ODYzMDA4MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI4NDA4ODYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10Nzk5Nl9pbml0X2hhcmR3YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9MTIxMT1zdGF0aWMgaW50IG10Nzk5Nl92YXJpYW50X2ZlbV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTI1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6MTI1NDpzdGF0aWMgaW50IG10Nzk5Nl9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEyNTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTE3Mjk9aW50IG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xNzQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxNzQ4OlxcdHJldCA9IG10Nzk5Nl9pbml0X2hhcmR3YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTE3NDktXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTc6MDMuNDg3MDQ2ODA1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMDY0MjMzNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBtdDc5OTZfaW5pdF9oYXJkd2FyZWAgZnVuY3Rpb24uIEknbSBleHBlY3RpbmcgdGhpcyB0byBiZSB0aGUgY29yZSBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciB0aGUgaGFyZHdhcmUsIGxpa2VseSBzZXR0aW5nIHVwIHJlZ2lzdGVycywgY29uZmlndXJpbmcgY2xvY2tzLCBhbmQgZW5hYmxpbmcgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdGllcyBvZiB0aGUgTVQ3OTk2IHdpcmVsZXNzIGNoaXAuIEknbSBsb29raW5nIGZvciB0aGUgc2VxdWVuY2Ugb2Ygc3RlcHMg4oCTIHdoYXQgY29tZXMgZmlyc3QsIHdoYXQgZGVwZW5kcyBvbiB3aGF0LiBJJ20gYWxzbyBnb2luZyB0byBiZSBtZW50YWxseSBwYXJzaW5nIGZvciBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHdoZXJlIGNhcmVmdWwgdHVuaW5nIG1pZ2h0IGJlIGNydWNpYWwsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgdGhlIGNvbnN0cmFpbnRzIG9mIGVtYmVkZGVkIHN5c3RlbXMuIEFyZSB0aGV5IGRvaW5nIGFueSBwb3dlciBtYW5hZ2VtZW50IHNldHVwIGVhcmx5IG9uPyBBcmUgdGhleSBjb25maWd1cmluZyBhbnkgY3JpdGljYWwgaW50ZXJydXB0cz8gVGhpcyBpcyB3aGVyZSBJIGNhbiBzdGFydCBidWlsZGluZyBhIG1lbnRhbCBtb2RlbCBvZiB0aGUgY2hpcCdzIHN0YXJ0dXAgcHJvY2Vzcy4gSSBhbHNvIHdhbnQgdG8gY2hlY2sgZm9yIGFueSB2ZW5kb3Itc3BlY2lmaWMgbnVhbmNlcyBvciBrbHVkZ2VzLiBGaW5hbGx5LCBJJ2xsIGJlIHdhdGNoaW5nIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgb3Bwb3J0dW5pdGllcyBmb3Igb3B0aW1pemF0aW9uIG9yIHBvdGVudGlhbCBpc3N1ZXMgdGhhdCBjb3VsZCBpbXBhY3QgcGVyZm9ybWFuY2Ugb3Igc3RhYmlsaXR5IGRvd24gdGhlIGxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NDU2LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTc6MDYuNzkzNDcyNjA3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDI0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTI1NCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyNTQ6XFx0c3RhdGljIGludCBtdDc5OTZfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbjEyNTU6XFx0e1xcbjEyNTY6XFx0XFx0aW50IHJldCwgaWR4O1xcbjEyNTc6XFx0XFxuMTI1ODpcXHRcXHRtdDc2X3dyKGRldiwgTVRfSU5UX1NPVVJDRV9DU1IsIH4wKTtcXG4xMjU5OlxcdFxcdGlmIChpc19tdDc5OTIoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG4xMjYwOlxcdFxcdFxcdG10NzZfcm13KGRldiwgTVRfQUZFX0NUTF9CQU5EX1BMTF8wMyhNVF9CQU5EMCksIE1UX0FGRV9DVExfQkFORF9QTExfMDNfTVNCX0VOLCAwKTtcXG4xMjYxOlxcdFxcdFxcdG10NzZfcm13KGRldiwgTVRfQUZFX0NUTF9CQU5EX1BMTF8wMyhNVF9CQU5EMSksIE1UX0FGRV9DVExfQkFORF9QTExfMDNfTVNCX0VOLCAwKTtcXG4xMjYyOlxcdFxcdH1cXG4xMjYzOlxcdFxcbjEyNjQ6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZWluaXRfd29yaywgbXQ3OTk2X2luaXRfd29yayk7XFxuMTI2NTpcXHRcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNld2VkX3Jyby53b3JrLCBtdDc5OTZfd2VkX3Jyb193b3JrKTtcXG4xMjY2OlxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZkZXYtXFx1MDAzZXdlZF9ycm8ucG9sbF9saXN0KTtcXG4xMjY3OlxcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXdlZF9ycm8ubG9jayk7XFxuMTI2ODpcXHRcXG4xMjY5OlxcdFxcdHJldCA9IG10Nzk5Nl92YXJpYW50X3R5cGVfaW5pdChkZXYpO1xcbjEyNzA6XFx0XFx0aWYgKHJldClcXG4xMjcxOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTI3MjpcXHRcXG4xMjczOlxcdFxcdHJldCA9IG10Nzk5Nl9kbWFfaW5pdChkZXYpO1xcbjEyNzQ6XFx0XFx0aWYgKHJldClcXG4xMjc1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTI3NjpcXHRcXG4xMjc3OlxcdFxcdHNldF9iaXQoTVQ3Nl9TVEFURV9JTklUSUFMSVpFRCwgXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5zdGF0ZSk7XFxuMTI3ODpcXHRcXG4xMjc5OlxcdFxcdHJldCA9IG10Nzk5Nl9tY3VfaW5pdChkZXYpO1xcbjEyODA6XFx0XFx0aWYgKHJldClcXG4xMjgxOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTI4MjpcXHRcXG4xMjgzOlxcdFxcdHJldCA9IG10Nzk5Nl93ZWRfcnJvX2luaXQoZGV2KTtcXG4xMjg0OlxcdFxcdGlmIChyZXQpXFxuMTI4NTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjEyODY6XFx0XFxuMTI4NzpcXHRcXHRyZXQgPSBtdDc5OTZfdmFyaWFudF9mZW1faW5pdChkZXYpO1xcbjEyODg6XFx0XFx0aWYgKHJldClcXG4xMjg5OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTI5MDpcXHRcXG4xMjkxOlxcdFxcdHJldCA9IG10Nzk5Nl9lZXByb21faW5pdChkZXYpO1xcbjEyOTI6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTI5MzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjEyOTQ6XFx0XFxuMTI5NTpcXHRcXHQvKiBCZWFjb24gYW5kIG1nbXQgZnJhbWVzIHNob3VsZCBvY2N1cHkgd2NpZCAwICovXFxuMTI5NjpcXHRcXHRpZHggPSBtdDc2X3djaWRfYWxsb2MoZGV2LVxcdTAwM2VtdDc2LndjaWRfbWFzaywgTVQ3OTk2X1dUQkxfU1RBKTtcXG4xMjk3OlxcdFxcdGlmIChpZHgpXFxuMTI5ODpcXHRcXHRcXHRyZXR1cm4gLUVOT1NQQztcXG4xMjk5OlxcdFxcbjEzMDA6XFx0XFx0ZGV2LVxcdTAwM2VtdDc2Lmdsb2JhbF93Y2lkLmlkeCA9IGlkeDtcXG4xMzAxOlxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5nbG9iYWxfd2NpZC5od19rZXlfaWR4ID0gLTE7XFxuMTMwMjpcXHRcXHRkZXYtXFx1MDAzZW10NzYuZ2xvYmFsX3djaWQudHhfaW5mbyB8PSBNVF9XQ0lEX1RYX0lORk9fU0VUO1xcbjEzMDM6XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cXHUwMDNlbXQ3Ni53Y2lkW2lkeF0sIFxcdTAwMjZkZXYtXFx1MDAzZW10NzYuZ2xvYmFsX3djaWQpO1xcbjEzMDQ6XFx0XFxuMTMwNTpcXHRcXHRyZXR1cm4gMDtcXG4xMzA2OlxcdH1cXG4xMzA3OlxcdFxcbjEzMDg6XFx0dm9pZCBtdDc5OTZfc2V0X3N0cmVhbV92aHRfdHhiZl9jYXBzKHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkpXFxuMTMwOTpcXHR7XFxuMTMxMDpcXHRcXHRpbnQgc3RzO1xcbjEzMTE6XFx0XFx0dTMyICpjYXA7XFxuMTMxMjpcXHRcXG4xMzEzOlxcdFxcdGlmICghcGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VjYXAuaGFzXzVnaHopXFxuMTMxNDpcXHRcXHRcXHRyZXR1cm47XFxuMTMxNTpcXHRcXG4xMzE2OlxcdFxcdHN0cyA9IGh3ZWlnaHQxNihwaHktXFx1MDAzZW10NzYtXFx1MDAzZWNoYWlubWFzayk7XFxuMTMxNzpcXHRcXHRjYXAgPSBcXHUwMDI2cGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VzYmFuZF81Zy5zYmFuZC52aHRfY2FwLmNhcDtcXG4xMzE4OlxcdFxcbjEzMTk6XFx0XFx0KmNhcCB8PSBJRUVFODAyMTFfVkhUX0NBUF9TVV9CRUFNRk9STUVFX0NBUEFCTEUgfFxcbjEzMjA6XFx0XFx0XFx0SUVFRTgwMjExX1ZIVF9DQVBfTVVfQkVBTUZPUk1FRV9DQVBBQkxFO1xcbjEzMjE6XFx0XFxuMTMyMjpcXHRcXHRpZiAoaXNfbXQ3OTkyKHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlZGV2KSlcXG4xMzIzOlxcdFxcdFxcdCpjYXAgfD0gRklFTERfUFJFUChJRUVFODAyMTFfVkhUX0NBUF9CRUFNRk9STUVFX1NUU19NQVNLLCA0KTtcXG4xMzI0OlxcdFxcdGVsc2VcXG4xMzI1OlxcdFxcdFxcdCpjYXAgfD0gRklFTERfUFJFUChJRUVFODAyMTFfVkhUX0NBUF9CRUFNRk9STUVFX1NUU19NQVNLLCAzKTtcXG4xMzI2OlxcdFxcbjEzMjc6XFx0XFx0KmNhcCBcXHUwMDI2PSB+KElFRUU4MDIxMV9WSFRfQ0FQX1NPVU5ESU5HX0RJTUVOU0lPTlNfTUFTSyB8XFxuMTMyODpcXHRcXHRcXHQgIElFRUU4MDIxMV9WSFRfQ0FQX1NVX0JFQU1GT1JNRVJfQ0FQQUJMRSB8XFxuMTMyOTpcXHRcXHRcXHQgIElFRUU4MDIxMV9WSFRfQ0FQX01VX0JFQU1GT1JNRVJfQ0FQQUJMRSk7XFxuMTMzMDpcXHRcXG4xMzMxOlxcdFxcdGlmIChzdHMgXFx1MDAzYyAyKVxcbjEzMzI6XFx0XFx0XFx0cmV0dXJuO1xcbjEzMzM6XFx0XFxuMTMzNDpcXHRcXHQqY2FwIHw9IElFRUU4MDIxMV9WSFRfQ0FQX1NVX0JFQU1GT1JNRVJfQ0FQQUJMRSB8XFxuMTMzNTpcXHRcXHRcXHRJRUVFODAyMTFfVkhUX0NBUF9NVV9CRUFNRk9STUVSX0NBUEFCTEUgfFxcbjEzMzY6XFx0XFx0XFx0RklFTERfUFJFUChJRUVFODAyMTFfVkhUX0NBUF9TT1VORElOR19ESU1FTlNJT05TX01BU0ssIHN0cyAtIDEpO1xcbjEzMzc6XFx0fVxcbjEzMzg6XFx0XFxuMTMzOTpcXHRzdGF0aWMgdm9pZFxcbjEzNDA6XFx0bXQ3OTk2X3NldF9zdHJlYW1faGVfdHhiZl9jYXBzKHN0cnVjdCBtdDc5OTZfcGh5ICpwaHksXFxuMTM0MTpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9zdGFfaGVfY2FwICpoZV9jYXAsIGludCB2aWYsXFxuMTM0MjpcXHRcXHRcXHRcXHQgICAgICAgZW51bSBubDgwMjExX2JhbmQgYmFuZClcXG4xMzQzOlxcdHtcXG4xMzQ0OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfaGVfY2FwX2VsZW0gKmVsZW0gPSBcXHUwMDI2aGVfY2FwLVxcdTAwM2VoZV9jYXBfZWxlbTtcXG4xMzQ1OlxcdFxcdGludCBzdHMgPSBod2VpZ2h0MTYocGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VjaGFpbm1hc2spO1xcbjEzNDY6XFx0XFx0Ym9vbCBub25fMmcgPSBiYW5kICE9IE5MODAyMTFfQkFORF8yR0haO1xcbjEzNDc6XFx0XFx0dTggYztcXG4xMzQ4OlxcdFxcbjEzNDk6XFx0I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxuMTM1MDpcXHRcXHRpZiAodmlmID09IE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQpXFxuMTM1MTpcXHRcXHRcXHRyZXR1cm47XFxuMTM1MjpcXHQjZW5kaWZcXG4xMzUzOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNToxNzowNi43OTM2MDgxMjdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg5Mzc4NjY1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIE1DVSBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqXG5cbk9rYXksIHNvIHRoZSBgbXQ3OTk2X21jdV9pbml0YCBmdW5jdGlvbiBpcyB0aGUgZmlyc3QgdGhpbmcgdGhhdCdzIGNhbGxlZCBoZXJlLiBDbGVhcmx5LCB0aGlzIGlzIHdoZXJlIHRoZSBNQ1UgZ2V0cyBpbml0aWFsaXplZCwgYW5kIG1vc3QgbGlrZWx5LCB0aGUgZmlybXdhcmUgZ2V0cyBsb2FkZWQuIE1ha2VzIHNlbnNlLiBJZiB0aGF0IGluaXRpYWxpemF0aW9uIHByb2Nlc3MgZmFpbHPigJRtYXliZSB0aGUgZmlybXdhcmUgZmFpbHMgdG8gbG9hZCBjb3JyZWN0bHksIG9yIHRoZSBNQ1UgaXRzZWxmIGlzbid0IHJlc3BvbmRpbmfigJR0aGUgd2hvbGUgdGhpbmcncyBnb2luZyB0byBmYWxsIGFwYXJ0LiBgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZWAgd2lsbCByZXR1cm4gYW4gZXJyb3IsIGFuZCB0aGF0J3MgdGhlIGVuZCBvZiB0aGUgbGluZS4gV2Ugd29uJ3QgZXZlbiBnZXQgdG8gYG10Nzk5Nl9pbml0X3dpcGh5YCwgYW5kIHRoZSBkZXZpY2UgcmVnaXN0cmF0aW9uIHdpbGwgYmUgYSBuby1nby4gSGFuZyBvbiwgdGhlIGNhbGwgb3JkZXIgaXMgaW50ZXJlc3RpbmcuLi4gYG10Nzk5Nl9tY3VfaW5pdGAgaXMgY2FsbGVkICpiZWZvcmUqIGBtdDc5OTZfaW5pdF93aXBoeWAuIFRoYXQncyBpbXBvcnRhbnQuIExldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgd2hhdCBgbXQ3OTk2X21jdV9pbml0YCBpcyBkb2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA1NDIsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNToxNzoxMS42ODczOTYyNjZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0NTMwNjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10Nzk5Nl9tY3VfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTEyNTQ9c3RhdGljIGludCBtdDc5OTZfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEyNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjEyNzk6XFx0cmV0ID0gbXQ3OTk2X21jdV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEyODAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTIyMjA9bXQ3OTk2X21hY19yZXN0YXJ0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yMjkxLVxcdC8qIGxvYWQgZmlybXdhcmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyMjkyOlxcdHJldCA9IG10Nzk5Nl9tY3VfaW5pdF9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTIyOTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jPTM2NDA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjM2NDE6bXQ3OTk2X21jdV9pbml0X3J4X2FpcnRpbWUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNjQyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM2NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MzY2NTppbnQgbXQ3OTk2X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzY2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjM3MDM6XFx0cmV0ID0gbXQ3OTk2X21jdV9pbml0X3J4X2FpcnRpbWUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzA0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjM3MTE6aW50IG10Nzk5Nl9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM3MTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzcyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzozNzIxOlxcdHJldHVybiBtdDc5OTZfbWN1X2luaXRfZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzIyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oPTcwMj1pbnQgbXQ3OTk2X3J1bihzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaDo3MDM6aW50IG10Nzk5Nl9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaDo3MDQ6aW50IG10Nzk5Nl9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaC03MDUtaW50IG10Nzk5Nl9tY3VfdHd0X2FncnRfdXBkYXRlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE1OjE3OjExLjc4MTkzMjI4N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzUwNTMwMTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZz1GYWxzZTogTVQ3OTk2IFN0YXRpYyBDb25maWd1cmF0aW9uIENoYW5nZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gYG10Nzk5Nl9tY3VfaW5pdGAgY2FsbHMgYG10Nzk5Nl9tY3VfaW5pdF9maXJtd2FyZWAsIHdoaWNoLCBhcyB3ZSBrbm93LCBpcyBhIHBvdGVudGlhbCBzdHVtYmxpbmcgYmxvY2sgaW4gZnV6emluZy4gVGhlIGZpcm13YXJlIGxvYWRpbmcgaXMgY3JpdGljYWwsIGFuZCBpbiBzeXprYWxsZXIsIHdlIG1pZ2h0IGdldCBsdWNreSB3aXRoIG1vY2tlZCBmaXJtd2FyZSBpZiB0aGUgZnV6emVyIHN1cHBvcnRzIGl0LCAqYW5kKiB0aGUgZHJpdmVyIHV0aWxpemVzIGByZXF1ZXN0X2Zpcm13YXJlYC4gSGVyZSwgdGhlIFBDSSBmdXp6aW5nIGlzIHdlYWsg4oCTIGl0J3MganVzdCByYW5kb20gTU1JTyByZXNwb25zZXMuIFRoYXQgbWVhbnMgYG10Nzk5Nl9tY3VfaW5pdF9maXJtd2FyZWAgY291bGQgZmFpbCwgaGFuZywgb3IgZXZlbiAqYWNjaWRlbnRhbGx5KiBzdWNjZWVkIGJhc2VkIG9uIHRob3NlIHJhbmRvbSBieXRlcy4gQnV0LCB0aGF0J3Mgbm90IHRoZSBwb2ludC5cblxuVGhlICpyZWFsKiBpc3N1ZSBpcyB0aGUgcGF0Y2ggaXRzZWxmLiBJdCdzIHNpbXBseSByZW1vdmluZyBgLmJlYWNvbl9pbnRfbWluX2djZCA9IDEwMGAuIFRoaXMgaXMgYSAqc3RhdGljIGNvbmZpZ3VyYXRpb24gY2hhbmdlKi4gSXQncyBkYXRhLCBub3QgYSBmdW5jdGlvbmFsIGNvZGUgcGF0aCBtb2RpZmljYXRpb24uIFNwZWNpZmljYWxseSwgdGhlIGd1aWRhbmNlIHNheXMgXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zXCIgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuXG5JbiB0aGlzIGNhc2UsIHRoZSBjaGFuZ2UgaW4gcXVlc3Rpb24gZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgZHJpdmVyLiBJdOKAmXMganVzdCBhbHRlcmluZyBkYXRhIHBhc3NlZCB0byBtYWM4MDIxMSwgYW5kIHRoYXQncyBub3QgdGhlIGtpbmQgb2YgdGhpbmcgd2UncmUgbG9va2luZyB0byBmdXp6LlxuXG5GdXJ0aGVyLCBhbmQgdGhpcyBpcyBhbm90aGVyIGNydWNpYWwgcG9pbnQ6IHRoZSBkcml2ZXIgaXMgZm9yIHRoZSBNVDc5OTYgUENJZSBXaS1GaSBjYXJkLiBXZSAqZG9uJ3QqIGhhdmUgaGFyZHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGluIFFFTVUuIFRoYXQgbWVhbnMgd2UgY2Fubm90IHJlYWNoIHRoZSBkcml2ZXIsIHJlZ2FyZGxlc3Mgb2YgdGhlIGZpcm13YXJlIHN0YXR1cy5cblxuVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGZhbGxzIGludG8gKmJvdGgqIGNhdGVnb3JpZXMgdGhhdCB3YXJyYW50IGBXb3J0aEZ1enppbmc9ZmFsc2VgOiBpdCdzIGEgY2hhbmdlIHRvIGEgbnVtZXJpYyBjb25zdGFudCwgYW5kIGl0J3MgaW4gYSBjb2RlIHBhdGggdGhhdCdzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBObyBmdXJ0aGVyIGludmVzdGlnYXRpb24gbmVlZGVkLiBXZSdyZSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMDg4LCJPdXRwdXRUb2tlbnMiOjEyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNToxNzoyMC4xMzI0NjQ4MTVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZW1vdmVzIGEgbnVtZXJpYyBjb25zdGFudCBpbml0aWFsaXphdGlvbiAoLmJlYWNvbl9pbnRfbWluX2djZCA9IDEwMCkgZnJvbSBhIHN0YXRpYyBjb25maWd1cmF0aW9uIHN0cnVjdCBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTk2IFBDSWUgV2ktRmkgZHJpdmVyLiBUaGlzIGlzIGEgdHJpdmlhbCBkYXRhIHN0cnVjdHVyZSBjaGFuZ2UgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGRyaXZlcidzIGV4ZWN1dGlvbiBmbG93LiBGdXJ0aGVybW9yZSwgdGhlIE1UNzk5NiBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBtZWFuaW5nZnVsIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZW1vdmVzIGEgbnVtZXJpYyBjb25zdGFudCBpbml0aWFsaXphdGlvbiAoLmJlYWNvbl9pbnRfbWluX2djZCA9IDEwMCkgZnJvbSBhIHN0YXRpYyBjb25maWd1cmF0aW9uIHN0cnVjdCBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTk2IFBDSWUgV2ktRmkgZHJpdmVyLiBUaGlzIGlzIGEgdHJpdmlhbCBkYXRhIHN0cnVjdHVyZSBjaGFuZ2UgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGRyaXZlcidzIGV4ZWN1dGlvbiBmbG93LiBGdXJ0aGVybW9yZSwgdGhlIE1UNzk5NiBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBtZWFuaW5nZnVsIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflownvvbm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 14:58:05 +0000 UTC FinishedAt: 2026-07-02 15:17:21 +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+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgYSBudW1lcmljIGNvbnN0YW50IGluaXRpYWxpemF0aW9uICguYmVhY29uX2ludF9taW5fZ2NkID0gMTAwKSBmcm9tIGEgc3RhdGljIGNvbmZpZ3VyYXRpb24gc3RydWN0IGluIHRoZSBNZWRpYXRlayBNVDc5OTYgUENJZSBXaS1GaSBkcml2ZXIuIFRoaXMgaXMgYSB0cml2aWFsIGRhdGEgc3RydWN0dXJlIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZHJpdmVyJiMzOTtzIGV4ZWN1dGlvbiBmbG93LiBGdXJ0aGVybW9yZSwgdGhlIE1UNzk5NiBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBtZWFuaW5nZnVsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2Q4YWNmMzk3Y2VhZDhhOTdmNGVmMDEyMTY4YjFlODg5NWE1MjUzYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMTU6MTY6MTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jXG5pbmRleCBkNmY5YWExYWI1MmQxMi4uMDZmNzY0YTU0NDA1MjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuY1xuQEAgLTM0LDcgJiM0MzszNCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGlmX2NvbWJfZ2xvYmFsID0ge1xuIFx0XHRcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzQwKSB8XG4gXHRcdFx0ICAgICAgIEJJVChOTDgwMjExX0NIQU5fV0lEVEhfODApIHxcbiBcdFx0XHQgICAgICAgQklUKE5MODAyMTFfQ0hBTl9XSURUSF8xNjApLFxuLVx0LmJlYWNvbl9pbnRfbWluX2djZCA9IDEwMCxcbiB9O1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGlmX2NvbWJfZ2xvYmFsXzc5OTIgPSB7XG5AQCAtNDcsNyAmIzQzOzQ2LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gaWZfY29tYl9nbG9iYWxfNzk5MiA9IHtcbiBcdFx0XHQgICAgICAgQklUKE5MODAyMTFfQ0hBTl9XSURUSF80MCkgfFxuIFx0XHRcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzgwKSB8XG4gXHRcdFx0ICAgICAgIEJJVChOTDgwMjExX0NIQU5fV0lEVEhfMTYwKSxcbi1cdC5iZWFjb25faW50X21pbl9nY2QgPSAxMDAsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9saW1pdCBpZl9saW1pdHNbXSA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNToxNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGEgbnVtZXJpYyBjb25zdGFudCBpbml0aWFsaXphdGlvbiAoLmJlYWNvbl9pbnRfbWluX2djZCA9IDEwMCkgZnJvbSBhIHN0YXRpYyBjb25maWd1cmF0aW9uIHN0cnVjdCBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTk2IFBDSWUgV2ktRmkgZHJpdmVyLiBUaGlzIGlzIGEgdHJpdmlhbCBkYXRhIHN0cnVjdHVyZSBjaGFuZ2UgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGRyaXZlciYjMzk7cyBleGVjdXRpb24gZmxvdy4gRnVydGhlcm1vcmUsIHRoZSBNVDc5OTYgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIG1ha2luZyBpdCB1bnJlYWNoYWJsZSBmb3IgbWVhbmluZ2Z1bCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgN2Q4YWNmMzk3Y2VhZDhhOTdmNGVmMDEyMTY4YjFlODg5NWE1MjUzYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIgMTU6MTY6MTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMKaW5kZXggZDZmOWFhMWFiNTJkMTIuLjA2Zjc2NGE1NDQwNTIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jCkBAIC0zNCw3ICYjNDM7MzQsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbiBpZl9jb21iX2dsb2JhbCA9IHsKIAkJCSAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzQwKSB8CiAJCQkgICAgICAgQklUKE5MODAyMTFfQ0hBTl9XSURUSF84MCkgfAogCQkJICAgICAgIEJJVChOTDgwMjExX0NIQU5fV0lEVEhfMTYwKSwKLQkuYmVhY29uX2ludF9taW5fZ2NkID0gMTAwLAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gaWZfY29tYl9nbG9iYWxfNzk5MiA9IHsKQEAgLTQ3LDcgJiM0Mzs0Niw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGlmX2NvbWJfZ2xvYmFsXzc5OTIgPSB7CiAJCQkgICAgICAgQklUKE5MODAyMTFfQ0hBTl9XSURUSF80MCkgfAogCQkJICAgICAgIEJJVChOTDgwMjExX0NIQU5fV0lEVEhfODApIHwKIAkJCSAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzE2MCksCi0JLmJlYWNvbl9pbnRfbWluX2djZCA9IDEwMCwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2xpbWl0IGlmX2xpbWl0c1tdID0gewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDU1CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1pbm9yIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuY2AuIEl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGl0IHJlbW92ZXMgYC5iZWFjb25faW50X21pbl9nY2QgPSAxMDAsYCBmcm9tIHR3byBgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbmAgdmFyaWFibGVzLCBgaWZfY29tYl9nbG9iYWxgIGFuZCBgaWZfY29tYl9nbG9iYWxfNzk5MmAuIEZ1bmN0aW9uYWxseSwgdGhpcyB0d2Vha3MgYSBjb25zdHJhaW50IHJlbGF0ZWQgdG8gdGhlIGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yIGZvciB0aGUgYmVhY29uIGludGVydmFsLiBJdCYjMzk7cyBhIHNtYWxsIGNoYW5nZSwgbm90aGluZyBlYXJ0aC1zaGF0dGVyaW5nLgoKQnV0IHdhaXQgYSBtaW51dGUsIEkgbmVlZCB0byBjb25zaWRlciB0aGUgY29udGV4dC4gVGhpcyBpcyBhIE1lZGlhdGVrIE1UNzk5NiB3aXJlbGVzcyBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gdGhpcyBldmVuIGJlIHRyaWdnZXJlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVT8gVGhlc2UgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBvZnRlbiBhcmVuJiMzOTt0IGVhc2lseSByZWFjaGFibGUgdW5sZXNzIHRoZXJlJiMzOTtzIGFuIGVtdWxhdG9yIG9yIGl0JiMzOTtzIGEgVVNCIGRldmljZSB0aGF0IGNhbiBiZSBlbXVsYXRlZCB1c2luZyBhIGR1bW15IGhvc3QgY29udHJvbGxlciBvciBhIFVTQiBnYWRnZXQuIEl0IHJlYWxseSBkZXBlbmRzIG9uIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2UuIFNvLCBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlIE1UNzk5NiBpcyBhIFBDSWUsIFVTQiwgb3IgU0RJTyBkZXZpY2UuIFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIGluZm9ybWF0aW9uIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTk2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2NTE4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9NYWtlZmlsZS0yLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTVQ3OTk2RSkgJiM0Mzs9IG10Nzk5NmUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvTWFrZWZpbGUtNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L01ha2VmaWxlOjU6bXQ3OTk2ZS15IDo9IHBjaS5vIGluaXQubyBkbWEubyBlZXByb20ubyBtYWluLm8gbWN1Lm8gbWFjLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L01ha2VmaWxlLTYtXHQgICAgIGRlYnVnZnMubyBtbWlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L01ha2VmaWxlLTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9NYWtlZmlsZTo4Om10Nzk5NmUtJChDT05GSUdfTVQ3OTk2X05QVSkgJiM0Mzs9IG5wdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9NYWtlZmlsZTo5Om10Nzk5NmUtJChDT05GSUdfREVWX0NPUkVEVU1QKSAmIzQzOz0gY29yZWR1bXAub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM9MTI9TU9EVUxFX1BBUk1fREVTQyhjb3JlZHVtcF9tZW1kdW1wLCBcJiMzNDtPcHRpb25hbCBhYmlsaXR5IHRvIGR1bXAgZmlybXdhcmUgbWVtb3J5XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjE0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTk2X21lbV9yZWdpb24gbXQ3OTk2X21lbV9yZWdpb25zW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTE1LVx0e1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjQ3OmNvbnN0IHN0cnVjdCBtdDc5OTZfbWVtX3JlZ2lvbipcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6NDg6bXQ3OTk2X2NvcmVkdW1wX2dldF9tZW1fbGF5b3V0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHUzMiAqbnVtKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy00OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy01Mi1cdGNhc2UgTVQ3OTk2X0RFVklDRV9JRF8yOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo1MzpcdFx0Km51bSA9IEFSUkFZX1NJWkUobXQ3OTk2X21lbV9yZWdpb25zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6NTQ6XHRcdHJldHVybiBcdTAwMjZtdDc5OTZfbWVtX3JlZ2lvbnNbMF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTU1LVx0ZGVmYXVsdDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo2MDpzdGF0aWMgaW50IG10Nzk5Nl9jb3JlZHVtcF9nZXRfbWVtX3NpemUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNjEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo2MjpcdGNvbnN0IHN0cnVjdCBtdDc5OTZfbWVtX3JlZ2lvbiAqbWVtX3JlZ2lvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNjMtXHRzaXplX3Qgc2l6ZSA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy02Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6Njc6XHRtZW1fcmVnaW9uID0gbXQ3OTk2X2NvcmVkdW1wX2dldF9tZW1fbGF5b3V0KGRldiwgXHUwMDI2bnVtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNjgtXHRpZiAoIW1lbV9yZWdpb24pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy03Ni1cdC8qIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBoZWFkZXJzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjc3Olx0c2l6ZSAmIzQzOz0gbnVtICogc2l6ZW9mKHN0cnVjdCBtdDc5OTZfbWVtX2hkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTc4LVx0LyogbWFrZSBzdXJlIGl0IGlzIGFsaWduZWQgNCBieXRlcyBmb3IgZGVidWcgbWVzc2FnZSBwcmludCBvdXQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo4NDpzdHJ1Y3QgbXQ3OTk2X2NyYXNoX2RhdGEgKm10Nzk5Nl9jb3JlZHVtcF9uZXcoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtODUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo4NjpcdHN0cnVjdCBtdDc5OTZfY3Jhc2hfZGF0YSAqY3Jhc2hfZGF0YSA9IGRldi1cdTAwM2Vjb3JlZHVtcC5jcmFzaF9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy04Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jPTEwMD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoxMDE6bXQ3OTk2X2NvcmVkdW1wX2Z3X3N0YXRlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBtdDc5OTZfY29yZWR1bXAgKmR1bXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTEwMi1cdFx0XHQgYm9vbCAqZXhjZXB0aW9uKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM9MTE3PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjExODptdDc5OTZfY29yZWR1bXBfZndfc3RhY2soc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IG10Nzk5Nl9jb3JlZHVtcCAqZHVtcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMTE5LVx0XHRcdCBib29sIGV4Y2VwdGlvbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTE2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MTYyOnN0YXRpYyBzdHJ1Y3QgbXQ3OTk2X2NvcmVkdW1wICptdDc5OTZfY29yZWR1bXBfYnVpbGQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMTYzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MTY0Olx0c3RydWN0IG10Nzk5Nl9jcmFzaF9kYXRhICpjcmFzaF9kYXRhID0gZGV2LVx1MDAzZWNvcmVkdW1wLmNyYXNoX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjE2NTpcdHN0cnVjdCBtdDc5OTZfY29yZWR1bXAgKmR1bXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjE2NjpcdHN0cnVjdCBtdDc5OTZfY29yZWR1bXBfbWVtICpkdW1wX21lbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMTY3LVx0c2l6ZV90IGxlbiwgc29mYXIgPSAwLCBoZHJfbGVuID0gc2l6ZW9mKCpkdW1wKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTE4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MTg3Olx0ZHVtcCA9IChzdHJ1Y3QgbXQ3OTk2X2NvcmVkdW1wICopKGJ1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTE4OC1cdGR1bXAtXHUwMDNlbGVuID0gbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMjAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoyMDE6XHRtdDc5OTZfY29yZWR1bXBfZndfc3RhdGUoZGV2LCBkdW1wLCBcdTAwMjZleGNlcHRpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoyMDI6XHRtdDc5OTZfY29yZWR1bXBfZndfc3RhY2soZGV2LCBkdW1wLCBleGNlcHRpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTIwNC1cdC8qIGdhdGhlciBtZW1vcnkgY29udGVudCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoyMDU6XHRkdW1wX21lbSA9IChzdHJ1Y3QgbXQ3OTk2X2NvcmVkdW1wX21lbSAqKShidWYgJiM0Mzsgc29mYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMDYtXHRkdW1wX21lbS1cdTAwM2VsZW4gPSBjcmFzaF9kYXRhLVx1MDAzZW1lbWR1bXBfYnVmX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTIxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MjE2OmludCBtdDc5OTZfY29yZWR1bXBfc3VibWl0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTIxNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjIxODpcdHN0cnVjdCBtdDc5OTZfY29yZWR1bXAgKmR1bXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTIxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MjIwOlx0ZHVtcCA9IG10Nzk5Nl9jb3JlZHVtcF9idWlsZChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMjEtXHRpZiAoIWR1bXApIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTIzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MjMxOmludCBtdDc5OTZfY29yZWR1bXBfcmVnaXN0ZXIoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMjMyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MjMzOlx0c3RydWN0IG10Nzk5Nl9jcmFzaF9kYXRhICpjcmFzaF9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yNDEtXHRpZiAoY29yZWR1bXBfbWVtZHVtcCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoyNDI6XHRcdGNyYXNoX2RhdGEtXHUwMDNlbWVtZHVtcF9idWZfbGVuID0gbXQ3OTk2X2NvcmVkdW1wX2dldF9tZW1fc2l6ZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yNDMtXHRcdGlmICghY3Jhc2hfZGF0YS1cdTAwM2VtZW1kdW1wX2J1Zl9sZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjI1Nzp2b2lkIG10Nzk5Nl9jb3JlZHVtcF91bnJlZ2lzdGVyKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTI1OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo3OiNpbmNsdWRlIFwmIzM0O210Nzk5Ni5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oOjk6c3RydWN0IG10Nzk5Nl9jb3JlZHVtcCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTEwLVx0Y2hhciBtYWdpY1sxNl07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NDA6c3RydWN0IG10Nzk5Nl9jb3JlZHVtcF9tZW0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC00MS1cdHUzMiBsZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC00NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NDU6c3RydWN0IG10Nzk5Nl9tZW1faGRyIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtNDYtXHR1MzIgc3RhcnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC01MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NTE6c3RydWN0IG10Nzk5Nl9tZW1fcmVnaW9uIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtNTItXHR1MzIgc3RhcnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC01OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NjA6Y29uc3Qgc3RydWN0IG10Nzk5Nl9tZW1fcmVnaW9uICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NjE6bXQ3OTk2X2NvcmVkdW1wX2dldF9tZW1fbGF5b3V0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHUzMiAqbnVtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NjI6c3RydWN0IG10Nzk5Nl9jcmFzaF9kYXRhICptdDc5OTZfY29yZWR1bXBfbmV3KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo2MzppbnQgbXQ3OTk2X2NvcmVkdW1wX3N1Ym1pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NjQ6aW50IG10Nzk5Nl9jb3JlZHVtcF9yZWdpc3RlcihzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NjU6dm9pZCBtdDc5OTZfY29yZWR1bXBfdW5yZWdpc3RlcihzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtNjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC02OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6Njk6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgbXQ3OTk2X21lbV9yZWdpb24gKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo3MDptdDc5OTZfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgdTMyICpudW0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTcxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo3NTpzdGF0aWMgaW5saW5lIGludCBtdDc5OTZfY29yZWR1bXBfc3VibWl0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTc2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oPTgwPXN0YXRpYyBpbmxpbmUgc3RydWN0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oOjgxOm10Nzk5Nl9jcmFzaF9kYXRhICptdDc5OTZfY29yZWR1bXBfbmV3KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTgyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTg1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo4NjpzdGF0aWMgaW5saW5lIGludCBtdDc5OTZfY29yZWR1bXBfcmVnaXN0ZXIoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtODcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oOjkxOnN0YXRpYyBpbmxpbmUgdm9pZCBtdDc5OTZfY29yZWR1bXBfdW5yZWdpc3RlcihzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC05Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTYtI2luY2x1ZGUgXHUwMDNjbGludXgvcmVsYXkuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc6I2luY2x1ZGUgXCYjMzQ7bXQ3OTk2LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04LSNpbmNsdWRlIFwmIzM0O2VlcHJvbS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTIzPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyNDptdDc5OTZfaW1wbGljaXRfdHhiZl9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MjY6XHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MzM6XHRyZXR1cm4gbXQ3OTk2X21jdV9zZXRfdHhiZihkZXYsIEJGX0hXX0VOX1VQREFURSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzQtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0zNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6Mzc6bXQ3OTk2X2ltcGxpY2l0X3R4YmZfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozOTpcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo0NjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19pbXBsaWNpdF90eGJmLCBtdDc5OTZfaW1wbGljaXRfdHhiZl9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDc6XHRcdFx0IG10Nzk5Nl9pbXBsaWNpdF90eGJmX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTUwPXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NTE6bXQ3OTk2X3N5c19yZWNvdmVyeV9zZXQoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy01Mi1cdFx0XHRzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy01My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NTQ6XHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTUtXHRjaGFyIGJ1ZlsxNl0sICpzZXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTkxLVx0Y2FzZSBVTklfQ01EX1NFUl9RVUVSWTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo5MjpcdFx0cmV0ID0gbXQ3OTk2X21jdV9zZXRfc2VyKGRldiwgVU5JX0NNRF9TRVJfUVVFUlksIDAsIGJhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTkzLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTAwLVx0Y2FzZSBVTklfQ01EX1NFUl9TRVRfUkVDT1ZFUl9MNF9NRFA6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MTAxOlx0XHRyZXQgPSBtdDc5OTZfbWN1X3NldF9zZXIoZGV2LCBVTklfQ01EX1NFUl9TRVQsIEJJVCh2YWwpLCBiYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0xMDItXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTEwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoxMDU6XHRcdHJldCA9IG10Nzk5Nl9tY3Vfc2V0X3NlcihkZXYsIFVOSV9DTURfU0VSX1RSSUdHRVIsIHZhbCwgYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTA2LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTExLVx0XHRkZXYtXHUwMDNlcmVjb3Zlcnkuc3RhdGUgfD0gTVRfTUNVX0NNRF9XRFRfTUFTSztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoxMTI6XHRcdG10Nzk5Nl9yZXNldChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTExMy1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTExNi1cdGNhc2UgVU5JX0NNRF9TRVJfU0VUX1NZU1RFTV9BU1NFUlQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MTE3Olx0XHRyZXQgPSBtdDc5OTZfbWN1X3RyaWdnZXJfYXNzZXJ0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTE4LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0xMjg9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoxMjk6bXQ3OTk2X3N5c19yZWNvdmVyeV9nZXQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0xMzAtXHRcdFx0c2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTMxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoxMzI6XHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTMzLVx0Y2hhciAqYnVmZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMjE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjIxNTpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBtdDc5OTZfc3lzX3JlY292ZXJ5X29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyMTY6XHQud3JpdGUgPSBtdDc5OTZfc3lzX3JlY292ZXJ5X3NldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyMTc6XHQucmVhZCA9IG10Nzk5Nl9zeXNfcmVjb3ZlcnlfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTIxOC1cdC5vcGVuID0gc2ltcGxlX29wZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTIyMj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MjIzOm10Nzk5Nl9yYWRhcl90cmlnZ2VyKHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMjI0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMjI2LSNkZWZpbmUgUkFEQVJfQkFDS0dST1VORFx0MlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjIyNzpcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjIyODpcdHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkgPSBtdDc5OTZfYmFuZF9waHkoZGV2LCBOTDgwMjExX0JBTkRfNUdIWik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMjI5LVx0c3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MjQ4Olx0cmRkX2lkeCA9IG10Nzk5Nl9nZXRfcmRkX2lkeChwaHksIHZhbCA9PSBSQURBUl9CQUNLR1JPVU5EKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNDktXHRpZiAocmRkX2lkeCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MjU5Olx0cmV0dXJuIG10Nzk5Nl9tY3VfcmRkX2NtZChkZXYsIFJERF9SQURBUl9FTVVMQVRFLCByZGRfaWR4LCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNjAtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0yNjI9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmFkYXJfdHJpZ2dlciwgTlVMTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyNjM6XHRcdFx0IG10Nzk5Nl9yYWRhcl90cmlnZ2VyLCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9MjY1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyNjY6bXQ3OTk2X3JkZF9tb25pdG9yKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNjcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjI2ODpcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cdTAwM2Vwcml2YXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNjktXHRzdHJ1Y3QgY2ZnODAyMTFfY2hhbl9kZWYgKmNoYW5kZWYgPSBcdTAwMjZkZXYtXHUwMDNlcmRkMl9jaGFuZGVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0zMTI9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjMxMzptdDc5OTZfZndfZGVidWdfd21fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzE0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozMTU6XHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zMTYtXHRlbnVtIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjMzODpcdHJldCA9IG10Nzk5Nl9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV00sIHZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzM5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM1MTpcdFx0cmV0ID0gbXQ3OTk2X21jdV9md19kYmdfY3RybChkZXYsIGRlYnVnLCB2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM1Mi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9MzU5PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozNjA6bXQ3OTk2X2Z3X2RlYnVnX3dtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zNjEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM2MjpcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM2My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM2OTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193bSwgbXQ3OTk2X2Z3X2RlYnVnX3dtX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozNzA6XHRcdFx0IG10Nzk5Nl9md19kZWJ1Z193bV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0zNzI9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM3MzptdDc5OTZfZndfZGVidWdfd2Ffc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzc0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozNzU6XHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zNzYtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zNzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MzgwOlx0cmV0ID0gbXQ3OTk2X21jdV9md19sb2dfMl9ob3N0KGRldiwgTUNVX0ZXX0xPR19XQSwgZGV2LVx1MDAzZWZ3X2RlYnVnX3dhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zODEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6Mzg0Olx0cmV0dXJuIG10Nzk5Nl9tY3Vfd2FfY21kKGRldiwgTUNVX1dBX1BBUkFNX0NNRChTRVQpLCBNQ1VfV0FfUEFSQU1fUERNQV9SWCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zODUtXHRcdFx0XHQgISFkZXYtXHUwMDNlZndfZGVidWdfd2EsIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0zODg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM4OTptdDc5OTZfZndfZGVidWdfd2FfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM5MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MzkxOlx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzkyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zOTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6Mzk4OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX3dhLCBtdDc5OTZfZndfZGVidWdfd2FfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM5OTpcdFx0XHQgbXQ3OTk2X2Z3X2RlYnVnX3dhX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDAwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz00MjU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjQyNjptdDc5OTZfZndfZGVidWdfYmluX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQyNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQzMS1cdH07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDMyOlx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDMzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDQ0Olx0cmV0dXJuIG10Nzk5Nl9md19kZWJ1Z193bV9zZXQoZGV2LCBkZXYtXHUwMDNlZndfZGVidWdfd20pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ0NS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTQ0Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDQ4Om10Nzk5Nl9md19kZWJ1Z19iaW5fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ0OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDUwOlx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDUxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDU3OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX2JpbiwgbXQ3OTk2X2Z3X2RlYnVnX2Jpbl9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDU4Olx0XHRcdCBtdDc5OTZfZndfZGVidWdfYmluX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTQ2MD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDYxOm10Nzk5Nl9md191dGlsX3dhX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ2Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDYzOlx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGZpbGUtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDY1LVx0aWYgKGRldi1cdTAwM2Vmd19kZWJ1Z193YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo0NjY6XHRcdHJldHVybiBtdDc5OTZfbWN1X3dhX2NtZChkZXYsIE1DVV9XQV9QQVJBTV9DTUQoUVVFUlkpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ2Ny1cdFx0XHRcdFx0IE1DVV9XQV9QQVJBTV9DUFVfVVRJTCwgMCwgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo0NzI6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10Nzk5Nl9md191dGlsX3dhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9NDc0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDc1Om10Nzk5Nl9hbXBkdV9zdGF0X3JlYWRfcGh5KHN0cnVjdCBtdDc5OTZfcGh5ICpwaHksIHN0cnVjdCBzZXFfZmlsZSAqZmlsZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NzYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjQ3NzpcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ3OC1cdGludCBib3VuZFsxNV0sIHJhbmdlWzhdLCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz01MDQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1MDU6bXQ3OTk2X3R4YmZfc3RhdF9yZWFkX3BoeShzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5LCBzdHJ1Y3Qgc2VxX2ZpbGUgKnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTA2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9NTUyPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NTUzOm10Nzk5Nl90eF9zdGF0c19zaG93X3BoeShzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTU0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjU1OTpcdG10Nzk5Nl9tYWNfdXBkYXRlX3N0YXRzKHBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NTYwOlx0bXQ3OTk2X2FtcGR1X3N0YXRfcmVhZF9waHkocGh5LCBmaWxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy01NjEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTU2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1Njk6XHRtdDc5OTZfdHhiZl9zdGF0X3JlYWRfcGh5KHBoeSwgZmlsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTcwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz01ODQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjU4NTptdDc5OTZfdHhfc3RhdHNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTg2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1ODc6XHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZmlsZS1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjU4ODpcdHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkgPSBcdTAwMjZkZXYtXHUwMDNlcGh5O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTU4OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjU5MjpcdG10Nzk5Nl90eF9zdGF0c19zaG93X3BoeShmaWxlLCBwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjU5MzpcdHBoeSA9IG10Nzk5Nl9waHkyKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTk0LVx0aWYgKHBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1OTU6XHRcdG10Nzk5Nl90eF9zdGF0c19zaG93X3BoeShmaWxlLCBwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjU5NjpcdHBoeSA9IG10Nzk5Nl9waHkzKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTk3LVx0aWYgKHBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1OTg6XHRcdG10Nzk5Nl90eF9zdGF0c19zaG93X3BoeShmaWxlLCBwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTU5OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNjA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjYwNTpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3OTk2X3R4X3N0YXRzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9NjA3PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjA4Om10Nzk5Nl9od19xdWV1ZV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdTMyIHNpemUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNjA5LVx0XHQgICAgIGNvbnN0IHN0cnVjdCBod19xdWV1ZV9tYXAgKm1hcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02MTAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjYxMTpcdHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkgPSBzLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjEyOlx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IHBoeS1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNjEzLVx0dTMyIGksIHZhbDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9NjM4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjM5Om10Nzk5Nl9zdGFfaHdfcXVldWVfcmVhZCh2b2lkICpkYXRhLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTY0MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjQxOlx0c3RydWN0IG10Nzk5Nl9zdGEgKm1zdGEgPSAoc3RydWN0IG10Nzk5Nl9zdGEgKilzdGEtXHUwMDNlZHJ2X3ByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjQyOlx0c3RydWN0IG10Nzk5Nl92aWYgKm12aWYgPSBtc3RhLVx1MDAzZXZpZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo2NDM6XHRzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5ID0gbXQ3OTk2X3ZpZl9saW5rX3BoeShcdTAwMjZtdmlmLVx1MDAzZWRlZmxpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTY0NC1cdHN0cnVjdCBpZWVlODAyMTFfbGlua19zdGEgKmxpbmtfc3RhO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02NDYtXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjY0NzpcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNjQ4LVx0dW5zaWduZWQgaW50IGxpbmtfaWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTY1OC1cdGZvcl9lYWNoX3N0YV9hY3RpdmVfbGluayh2aWYsIHN0YSwgbGlua19zdGEsIGxpbmtfaWQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo2NTk6XHRcdHN0cnVjdCBtdDc5OTZfc3RhX2xpbmsgKm1zdGFfbGluaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02NjAtXHRcdHN0cnVjdCBtdDc2X3ZpZl9saW5rICptbGluaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNjY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjY2NzpcdFx0bXN0YV9saW5rID0gbXQ3OTk2X3N0YV9saW5rKG1zdGEsIGxpbmtfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTY2OC1cdFx0aWYgKCFtc3RhX2xpbmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTY5ND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6Njk1Om10Nzk5Nl9od19xdWV1ZXNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNjk2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo2OTc6XHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZmlsZS1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjY5ODpcdHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkgPSBcdTAwMjZkZXYtXHUwMDNlcGh5O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTY5OS1cdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaHdfcXVldWVfbWFwIHBsZV9xdWV1ZV9tYXBbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzQ3LVx0c2VxX3B1dHMoZmlsZSwgXCYjMzQ7UExFIG5vbi1lbXB0eSBxdWV1ZSBpbmZvOlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NzQ4Olx0bXQ3OTk2X2h3X3F1ZXVlX3JlYWQoZmlsZSwgQVJSQVlfU0laRShwbGVfcXVldWVfbWFwKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NDktXHRcdFx0ICAgICBcdTAwMjZwbGVfcXVldWVfbWFwWzBdKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzUyLVx0aWVlZTgwMjExX2l0ZXJhdGVfc3RhdGlvbnNfYXRvbWljKHBoeS1cdTAwM2VtdDc2LVx1MDAzZWh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc1MzpcdFx0XHRcdFx0ICBtdDc5OTZfc3RhX2h3X3F1ZXVlX3JlYWQsIGZpbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc1NDpcdHBoeSA9IG10Nzk5Nl9waHkyKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzU1LVx0aWYgKHBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NTYtXHRcdGllZWU4MDIxMV9pdGVyYXRlX3N0YXRpb25zX2F0b21pYyhwaHktXHUwMDNlbXQ3Ni1cdTAwM2VodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo3NTc6XHRcdFx0XHRcdFx0ICBtdDc5OTZfc3RhX2h3X3F1ZXVlX3JlYWQsIGZpbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc1ODpcdHBoeSA9IG10Nzk5Nl9waHkzKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzU5LVx0aWYgKHBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NjAtXHRcdGllZWU4MDIxMV9pdGVyYXRlX3N0YXRpb25zX2F0b21pYyhwaHktXHUwMDNlbXQ3Ni1cdTAwM2VodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo3NjE6XHRcdFx0XHRcdFx0ICBtdDc5OTZfc3RhX2h3X3F1ZXVlX3JlYWQsIGZpbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTc2Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzY0LVx0c2VxX3B1dHMoZmlsZSwgXCYjMzQ7UFNFIG5vbi1lbXB0eSBxdWV1ZSBpbmZvOlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NzY1Olx0bXQ3OTk2X2h3X3F1ZXVlX3JlYWQoZmlsZSwgQVJSQVlfU0laRShwc2VfcXVldWVfbWFwKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NjYtXHRcdFx0ICAgICBcdTAwMjZwc2VfcXVldWVfbWFwWzBdKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc3MTpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3OTk2X2h3X3F1ZXVlcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTc3Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6Nzc0Om10Nzk5Nl94bWl0X3F1ZXVlc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NzUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc3NjpcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBmaWxlLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6Nzc3Olx0c3RydWN0IG10Nzk5Nl9waHkgKnBoeTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NzgtXHRzdHJ1Y3Qge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NzkxOlx0cGh5ID0gbXQ3OTk2X3BoeTIoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03OTItXHRpZiAocGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03OTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6Nzk1Olx0cGh5ID0gbXQ3OTk2X3BoeTMoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03OTYtXHRpZiAocGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODE0OkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5OTZfeG1pdF9xdWV1ZXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTgxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz04MTY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjgxNzptdDc5OTZfdHd0X3N0YXRzKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04MTgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjgxOTpcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cdTAwM2Vwcml2YXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4MjA6XHRzdHJ1Y3QgbXQ3OTk2X3R3dF9mbG93ICppdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTgyMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9ODQ1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4NDY6bXQ3OTk2X3JmX3JlZ3ZhbF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODQ3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4NDg6XHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NDktXHR1MzIgcmVndmFsO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODUyOlx0cmV0ID0gbXQ3OTk2X21jdV9yZl9yZWd2YWwoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXHUwMDI2cmVndmFsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODUzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9ODYxPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4NjI6bXQ3OTk2X3JmX3JlZ3ZhbF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NjMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg2NDpcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg2NS1cdHUzMiB2YWwzMiA9IHZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODY3Olx0cmV0dXJuIG10Nzk5Nl9tY3VfcmZfcmVndmFsKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIFx1MDAyNnZhbDMyLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NjgtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4NzA6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmZfcmVndmFsLCBtdDc5OTZfcmZfcmVndmFsX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4NzE6XHRcdFx0IG10Nzk5Nl9yZl9yZWd2YWxfc2V0LCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg3MzppbnQgbXQ3OTk2X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg3NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg3OS1cdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7aHctcXVldWVzXCYjMzQ7LCAwNDAwLCBkaXIsIGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4ODA6XHRcdFx0ICAgIFx1MDAyNm10Nzk5Nl9od19xdWV1ZXNfZm9wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODgxLVx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDt4bWl0LXF1ZXVlc1wmIzM0OywgMDQwMCwgZGlyLCBkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODgyOlx0XHRcdCAgICBcdTAwMjZtdDc5OTZfeG1pdF9xdWV1ZXNfZm9wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODgzOlx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDt0eF9zdGF0c1wmIzM0OywgMDQwMCwgZGlyLCBkZXYsIFx1MDAyNm10Nzk5Nl90eF9zdGF0c19mb3BzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04ODQtXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3N5c19yZWNvdmVyeVwmIzM0OywgMDYwMCwgZGlyLCBkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODg1Olx0XHRcdCAgICBcdTAwMjZtdDc5OTZfc3lzX3JlY292ZXJ5X29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODg2LVx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtmd19kZWJ1Z193bVwmIzM0OywgMDYwMCwgZGlyLCBkZXYsIFx1MDAyNmZvcHNfZndfZGVidWdfd20pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04OTAtXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O2Z3X3V0aWxfd2FcJiMzNDssIDA0MDAsIGRpciwgZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg5MTpcdFx0XHQgICAgXHUwMDI2bXQ3OTk2X2Z3X3V0aWxfd2FfZm9wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODkyLVx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtpbXBsaWNpdF90eGJmXCYjMzQ7LCAwNjAwLCBkaXIsIGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODk0LVx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7dHd0X3N0YXRzXCYjMzQ7LCBkaXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODk1Olx0XHRcdFx0ICAgIG10Nzk5Nl90d3Rfc3RhdHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg5Ni1cdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7cmZfcmVndmFsXCYjMzQ7LCAwNjAwLCBkaXIsIGRldiwgXHUwMDI2Zm9wc19yZl9yZWd2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05MDEtXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtyZGRfbW9uaXRvclwmIzM0OywgZGlyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjkwMjpcdFx0XHRcdCAgICBtdDc5OTZfcmRkX21vbml0b3IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTkwMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9OTA5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6OTEwOm10Nzk5Nl9kZWJ1Z2ZzX3dyaXRlX2Z3bG9nKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGNvbnN0IHZvaWQgKmhkciwgaW50IGhkcmxlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05MTEtXHRcdFx0ICAgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtOTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjkzNDp2b2lkIG10Nzk5Nl9kZWJ1Z2ZzX3J4X2Z3X21vbml0b3Ioc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05MzUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05NTUtXHRoZHIubGVuID0gKihfX2xlMTYgKilkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjk1NjpcdG10Nzk5Nl9kZWJ1Z2ZzX3dyaXRlX2Z3bG9nKGRldiwgXHUwMDI2aGRyLCBzaXplb2YoaGRyKSwgZGF0YSwgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05NTctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTk1OC1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MzkxCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIHRoZSBNVDc5OTZFIERyaXZlciBpbiBhIEZ1enppbmcgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdG8gYWN0dWFsbHkgZ2V0IGF0IHRoaXMgYG10Nzk5NmVgIChQQ0llKSBhbmQgYG10Nzk5Nl9ucHVgIGRyaXZlci4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjb25zaWRlciB2aXJ0dWFsaXphdGlvbiDigJMgYXJlIHdlIGFibGUgdG8gZ2V0IHRvIGl0IGluIHNvbWV0aGluZyBsaWtlIFFFTVU/IEJ1dCB0aGVuIEkgcmVtZW1iZXIgYG1hYzgwMjExX2h3c2ltYCwgd2hpY2gsIHdoaWxlIHVzZWZ1bCBmb3Igc2ltdWxhdGluZyBtYWM4MDIxMSBkZXZpY2VzLCBpc24mIzM5O3QgZ29pbmcgdG8gZ2V0IG1lIGEgKnNwZWNpZmljKiBNZWRpYXRlayBQQ0llIGRldmljZSBsaWtlIHRoaXMuIFVubGVzcyB0aGVyZSYjMzk7cyBhIHNwZWNpYWxpemVkIE1lZGlhdGVrIE1UNzk5NiBlbXVsYXRvciBvdXQgdGhlcmUsIGl0IGxvb2tzIGxpa2UgdGhhdCYjMzk7cyBhIGRlYWQgZW5kIGluIFFFTVUuCgpOZXh0LCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgUENJIGVtdWxhdGlvbi4gQ2FuIHdlIGxldmVyYWdlIHRoYXQgZm9yIHRoaXMgZGV2aWNlPyBVc3VhbGx5LCBJJiMzOTtkIGxlYW4gb24gc29tZXRoaW5nIGxpa2Ugc3l6a2FsbGVyJiMzOTtzIGdlbmVyaWMgUENJIGZ1enplciwgYnV0IHRoYXQgdXN1YWxseSBuZWVkcyB0aGUgZHJpdmVyIHRvIGJlIGFscmVhZHkgbG9hZGVkIGFuZCBwcm9iZWQuIFRoZW4gaXQgaGl0cyBtZeKAlHN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIhIEl0IGNhbiBlbXVsYXRlIFBDSSBkZXZpY2VzIGFuZCB0cmlnZ2VyIHRoZWlyIHByb2JlIGZ1bmN0aW9ucywgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEkgbmVlZC4KCk15IG5leHQgc3RlcCBpcyB0byBjaGVjayBpZiBgQ09ORklHX01UNzk5NkVgIGlzIGVuYWJsZWQgb3IgYXQgbGVhc3QgY29uZmlndXJhYmxlLiBJZiBzeXprYWxsZXIgY2FuIGluZGVlZCBmdXp6IFBDSSBkZXZpY2VzIGFuZCB0cmlnZ2VyIHByb2JpbmcsIHRoaXMgZHJpdmVyIG1pZ2h0IGFjdHVhbGx5IGJlIHJlYWNoYWJsZS4gSG93ZXZlciwgSSBoYXZlIHRvIGJlIHJlYWxpc3RpYyBoZXJlLiBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBpcyBrbm93biB0byBiZSByZWxhdGl2ZWx5IGJhc2ljLCBhbmQgbGlrZWx5IHRvIHByaW1hcmlseSBoaXQgdGhlIHByb2JlL2luaXQgcGF0aHMsIHdoaWNoIGFyZSBncmVhdCB0byBzdGFydCB3aXRoLCBidXQgbWF5IG5vdCBjb3ZlciBldmVyeXRoaW5nLiBTbyBub3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayB3aGVyZSB0aGlzIHBhdGNoIGluIHF1ZXN0aW9uIGlzLCBhbmQgbG9vayBhdCB0aGUgYGluaXQuY2AgZmlsZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZl9jb21iX2dsb2JhbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9MTc9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfbGltaXQgaWZfbGltaXRzX2dsb2JhbCA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6Mjc6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gaWZfY29tYl9nbG9iYWwgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMjgtXHQubGltaXRzID0gXHUwMDI2aWZfbGltaXRzX2dsb2JhbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6Mzk6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gaWZfY29tYl9nbG9iYWxfNzk5MiA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy00MC1cdC5saW1pdHMgPSBcdTAwMjZpZl9saW1pdHNfZ2xvYmFsLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz00NzY9bXQ3OTk2X2luaXRfd2lwaHkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy01MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6NTAxOlx0d2lwaHktXHUwMDNlaWZhY2VfY29tYmluYXRpb25zID0gaXNfbXQ3OTk2KFx1MDAyNmRldi1cdTAwM2VtdDc2KSA/IFx1MDAyNmlmX2NvbWJfZ2xvYmFsIDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo1MDI6XHRcdFx0XHRcdFx0XHQgICAgXHUwMDI2aWZfY29tYl9nbG9iYWxfNzk5MjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy01MDMtXHR3aXBoeS1cdTAwM2VuX2lmYWNlX2NvbWJpbmF0aW9ucyA9IDE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1ODUKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA1NjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQ6IFJlbW92aW5nIGEgQ29uZmlndXJhdGlvbiBDb25zdHJhaW50KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSByZW1vdmluZyBgLmJlYWNvbl9pbnRfbWluX2djZCA9IDEwMCxgIGZyb20gdGhlIGBpZl9jb21iX2dsb2JhbGAgYW5kIGBpZl9jb21iX2dsb2JhbF83OTkyYCBzdHJ1Y3RzIGluIHRoZSBgd2lwaHlgIGludGVyZmFjZSBjb21iaW5hdGlvbnMuIEl0JiMzOTtzIGp1c3QgYSBzdGF0aWMgY29uZmlndXJhdGlvbiBjaGFuZ2UsIGVzc2VudGlhbGx5IHJlbW92aW5nIGEgY29uc3RyYWludCBvbiBiZWFjb24gaW50ZXJ2YWxzLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCAmIzM0O0lzIHRoaXMgZXZlbiB3b3J0aCBmdXp6aW5nPyYjMzQ7CgpJdCYjMzk7cyBlc3NlbnRpYWxseSBhIGRhdGEgc3RydWN0dXJlIG1vZGlmaWNhdGlvbi4gTm8gbmV3IGxvZ2ljIGlzIGJlaW5nIGludHJvZHVjZWQ7IHRoZSBwYXRjaCBqdXN0IHJlbGF4ZXMgYSBjb25zdHJhaW50IHdpdGhpbiB0aGUgbWFjODAyMTEgbGF5ZXIgd2hlbiBpdCBjcmVhdGVzIGludGVyZmFjZXMuIFRoYXQgcmVsYXhhdGlvbiBtZWFucyB3ZSAqbWlnaHQqIGJlIGFibGUgdG8gY3JlYXRlIGludGVyZmFjZXMgd2l0aCBiZWFjb24gaW50ZXJ2YWxzIHRoYXQgd2VyZW4mIzM5O3QgbXVsdGlwbGVzIG9mIDEwMCBiZWZvcmUsIGJ1dCBpdCYjMzk7cyBzcGVjaWZpY2FsbHkgdGllZCB0byB0aGUgTVQ3OTk2IGRyaXZlci4KClRoZSBiaWcgcXVlc3Rpb24gaXMgd2hldGhlciB3ZSBjYW4gZXZlbiAqcmVhY2gqIHRoaXMgaW4gYSB0eXBpY2FsIFFFTVUgZW52aXJvbm1lbnQuIFVubGVzcyB3ZSBnZXQgZXh0cmVtZWx5IGx1Y2t5LCBvciB1c2UgYSBQQ0kgZnV6emVyLCBJJiMzOTttIHRoaW5raW5nIHRoZSBkcml2ZXIgaXNuJiMzOTt0IGZ1bGx5IGFjY2Vzc2libGUuIFdlIGhhdmUgdG8gY29uc2lkZXIgd2hldGhlciB0aGUgY2hhbmdlIGlzIHNpZ25pZmljYW50IGVub3VnaCB0byB3YXJyYW50IGZ1enppbmcgaWYgdGhlIGRyaXZlciBpcyBub3QgZWFzaWx5IHJlYWNoZWQuIFdlIGNvdWxkIHJlYWNoIGBwcm9iZWAsIGJ1dCBpdCYjMzk7cyBoaWdobHkgbGlrZWx5IHRoYXQgZmlybXdhcmUgbG9hZGluZyBvciBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiB3aWxsIGZhaWwgYmVmb3JlIHdlIGNhbiBnZXQgdG8gdGhlIGNvcmUgbG9naWMuIFRoZXJlJiMzOTtzIGFsc28gdGhlIHF1ZXN0aW9uIG9mIHdoZXRoZXIgdGhpcyBtaW5vciBjb25maWcgY2hhbmdlIGhhcyAqYW55KiBpbXBhY3Qgb24gZXhpc3RpbmcgY29kZS4KCkkgbmVlZCB0byB0aGluayBhYm91dCB3aGVyZSBgYmVhY29uX2ludF9taW5fZ2NkYCBpcyB1c2VkLiBJIHJlbWVtYmVyIGl0JiMzOTtzIHBhcnQgb2YgbWFjODAyMTEmIzM5O3MgaW50ZXJmYWNlIHZhbGlkYXRpb24uIFNpbmNlIHRoaXMgaXMgaGFyZHdhcmUtc3BlY2lmaWMsIGFuZCB0aGUgY2hhbmdlIGlzIHRyaXZpYWwgKGp1c3QgcmVtb3ZpbmcgYSBjb25zdHJhaW50KSwgaXQmIzM5O3MgcHJvYmFibHkgKm5vdCogd29ydGggZnV6emluZywgb3IgaWYgaXQgaXMsIHRoZSBmdXp6aW5nIGlzIG1vcmUgZm9jdXNlZCBvbiBjb25maWcgY2hhbmdlcywgYW5kIG5vdCBvbiBjb3JlIGxvZ2ljLgoKTGV0JiMzOTtzIHJlZmVyIGJhY2sgdG8gdGhvc2UgZ3VpZGVsaW5lcy4gSXQgc3VnZ2VzdHMgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvbiYjMzk7dCBhbHRlciBleGVjdXRpb24gZmxvdywgb3IgaWYgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gQW5kIGl0IGxvb2tzIGxpa2UgTVQ3OTk2IHJlbGllcyBvbiBhIHBoeXNpY2FsIFBDSWUgY2FyZCwgc28gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgY29kZSBwYXRocyBsaWtlbHkgdW5yZWFjaGFibGUgaW4gUUVNVS4gRXZlbiB3aXRoIGEgUENJIGZ1enplciwgd2UgcHJvYmFibHkgd29uJiMzOTt0IGdldCBwYXN0IHRoZSBwcm9iZSBzdGFnZSBkdWUgdG8gdGhlIGZpcm13YXJlIG9yIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIGZhaWxpbmcgd2l0aG91dCB0aGUgcmVhbCBoYXJkd2FyZS4gYG10Nzk5Nl9pbml0X3dpcGh5YCBpcyBjYWxsZWQgZnJvbSBgbXQ3OTk2X3JlZ2lzdGVyX2V4dF9waHlgIG9yIGBtdDc5OTZfcmVnaXN0ZXJfcGh5YCwgYnV0IHRoYXQgd29uJiMzOTt0IHJ1bi4KClRoZXJlZm9yZSwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlIGFuZCB0aGUgbGltaXRhdGlvbnMgb2YgUUVNVSBhY2Nlc3MgdG8gdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSwgbXkgaW5zdGluY3QgaXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCYjMzk7cyBhIGNvbmZpZyBjaGFuZ2UsIGFuZCBub3QgYSBjcml0aWNhbCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTk2X2luaXRfd2lwaHkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTQxNT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjQxNjptdDc5OTZfaW5pdF93aXBoeV9iYW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTQxNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTQ3NT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjQ3NjptdDc5OTZfaW5pdF93aXBoeShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNDc3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjU1MjpcdG10Nzk5Nl9pbml0X3dpcGh5X2JhbmQoaHcsIFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTU1My19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTY4MD1zdGF0aWMgaW50IG10Nzk5Nl9yZWdpc3Rlcl9waHkoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgZW51bSBtdDc2X2JhbmRfaWQgYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNzMxLVx0LyogaW5pdCB3aXBoeSBhY2NvcmRpbmcgdG8gbXBoeSBhbmQgcGh5ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6NzMyOlx0bXQ3OTk2X2luaXRfd2lwaHlfYmFuZChtcGh5LVx1MDAzZWh3LCBwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTczMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9MTcyOT1pbnQgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xNzUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjE3NTI6XHRtdDc5OTZfaW5pdF93aXBoeShodywgXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTE3NTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI1MTIKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyBgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZWAgQ2FsbGVycyoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyBhbmQgc3BlY2lmaWNhbGx5LCB0byBpZGVudGlmeSB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCBgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZWAuIFRoaXMgaXMgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCB3aGVuIHJldmVyc2UgZW5naW5lZXJpbmcgb3IgZGVidWdnaW5nIGRyaXZlciBjb2RlLCBiZWNhdXNlIHVuZGVyc3RhbmRpbmcgKmhvdyogdGhlIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQgaXMgY3J1Y2lhbC4gVGhpcyB3aWxsIGhlbHAgbWUgZ3Jhc3AgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBicm9hZGVyIGRyaXZlciBhcmNoaXRlY3R1cmUgYW5kIGlkZW50aWZ5IHBvdGVudGlhbCBpc3N1ZXMgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbi4gVGhpcyB3aWxsIGJlIHRoZSBmaXJzdCB0aGluZyBJIGRvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5OTZfcmVnaXN0ZXJfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz0xNzE0PXZvaWQgbXQ3OTk2X3NldF9zdHJlYW1faGVfZWh0X2NhcHMoc3RydWN0IG10Nzk5Nl9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTcyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxNzI5OmludCBtdDc5OTZfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTczMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg9Njc3PXU2NCBfX210Nzk5Nl9nZXRfdHNmKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgbXQ3OTk2X3ZpZl9saW5rICpsaW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oOjY3ODppbnQgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oLTY3OS12b2lkIG10Nzk5Nl91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYz05OT1zdGF0aWMgaW50IG10Nzk5Nl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM6MTk1Olx0cmV0ID0gbXQ3OTk2X3JlZ2lzdGVyX2RldmljZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMTk2LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMyMjgKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIHNuaXBwZXQsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3ZWxsLXZlcnNlZCBpbiB0aGlzIGtpbmQgb2YgZHJpdmVyIGFuYWx5c2lzOgoKKipEZWx2aW5nIGludG8gdGhlIGBtdDc5OTZfcGNpX3Byb2JlYCBGdW5jdGlvbioqCgpBbHJpZ2h0LCBzbyB0aGUgY2FsbHN0YWNrIHBvaW50cyB0byBgbXQ3OTk2X3BjaV9wcm9iZWAuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIHN0YXJ0cywgdGhlIGluaXRpYWwgc2V0dXAgZm9yIHRoaXMgcGFydGljdWxhciBkZXZpY2Ugb24gYSBQQ0kgYnVzLiBJIGtub3cgdGhlIGRyaWxsLCB0eXBpY2FsbHksIHRoZXJlJiMzOTtzIGEgc2VxdWVuY2Ugb2YgaW5pdGlhbGl6YXRpb24gc3RlcHMgYmVmb3JlIHRoZSBjb3JlIGRyaXZlciBmdW5jdGlvbmFsaXR5IGtpY2tzIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3QgZmxvdyB0byBwcm9wZXJseSBnZXQgdGhpcyBjaGlwIHRvIHdvcmsuCgpNeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgbGlrZWx5IHRoZSBmaXJtd2FyZSBsb2FkaW5nIHNlcXVlbmNlIHdpdGhpbiB0aGlzIGBtdDc5OTZfcGNpX3Byb2JlYCBmdW5jdGlvbi4gSSBoYXZlIGEgZmVlbGluZyB0aGUgZHJpdmVyIHdpbGwgbmVlZCBzb21lIGZpcm13YXJlIHRvIGxvYWQsIGl0IHdpbGwgYmUgdGhlIGhlYXJ0IG9mIGl0cyBvcGVyYXRpb24sIG9yIGF0IGxlYXN0IGEgbWFqb3IgcGFydC4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBwb2ludCB3aGVyZSBpdCBkZXRlcm1pbmVzIHdoZXRoZXIgZmlybXdhcmUgaXMgbmVlZGVkLCBhbmQgdGhlbiBob3cgaXQgbG9hZHMgaXQuIFRoYXQmIzM5O3MgYWx3YXlzIGEga2V5IGFyZWEgdG8gc2NydXRpbml6ZS4gS25vd2luZyB0aGlzLCBJIGNhbiBzdGFydCB0byBtYXAgb3V0IGhvdyB0aGUgd2hvbGUgdGhpbmcgd29ya3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210Nzk5Nl9wY2lfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM9Nzk9c3RhdGljIGludCBtdDc5OTZfcGNpX2hpZjJfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYzo5OTpzdGF0aWMgaW50IG10Nzk5Nl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYy0xMDAtXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYz0yNDQ9c3RydWN0IHBjaV9kcml2ZXIgbXQ3OTk2X2hpZl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjQ2LVx0LmlkX3RhYmxlXHQ9IG10Nzk5Nl9oaWZfZGV2aWNlX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM6MjQ3Olx0LnByb2JlXHRcdD0gbXQ3OTk2X3BjaV9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTI0OC1cdC5yZW1vdmVcdFx0PSBtdDc5OTZfaGlmX3JlbW92ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYz0yNTE9c3RydWN0IHBjaV9kcml2ZXIgbXQ3OTk2X3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjUzLVx0LmlkX3RhYmxlXHQ9IG10Nzk5Nl9wY2lfZGV2aWNlX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM6MjU0Olx0LnByb2JlXHRcdD0gbXQ3OTk2X3BjaV9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTI1NS1cdC5yZW1vdmVcdFx0PSBtdDc5OTZfcGNpX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQxMzAKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gYG10Nzk5Nl9wY2lfcHJvYmVgIGZvciBGdXp6aW5nIFJlc2lsaWVuY2UqKgoKQWxyaWdodCwgYmVmb3JlIEkgdW5sZWFzaCB0aGUgZnV6emVycyBvbiB0aGlzLCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIGdvaW5nIG9uIGluc2lkZSBgbXQ3OTk2X3BjaV9wcm9iZWAuIE15IHByaW1hcnkgY29uY2VybiBpcywgb2YgY291cnNlLCBpZGVudGlmeWluZyBwb3RlbnRpYWwgcGl0ZmFsbHMgZm9yIGEgZnV6emluZyBjYW1wYWlnbi4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8ga25vdyBpZiB0aGlzIHByb2JlIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIHRyeSB0byBsb2FkIGZpcm13YXJlLCBvciBhdHRlbXB0IHRvIGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlIGluIGEgd2F5IHRoYXTigJlzIGdvaW5nIHRvIHRyaXAgaXQgdXAgaW4gYSBmdXp6ZWQgZW52aXJvbm1lbnQuIFdlIGFsbCBrbm93IGhvdyBxdWlja2x5IHRoYXQgY2FuIGRlcmFpbCBhIGZ1enppbmcgc2Vzc2lvbiEgTGV0JiMzOTtzIGdldCByZWFkaW5nIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIHRoaW5ncyB0aGF0JiMzOTtsbCBjYXVzZSBhbiBpc3N1ZS4gR290dGEgZW5zdXJlIHRoZSBmdXp6aW5nIHNlc3Npb24gd2lsbCBiZSBzdGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA5OTpcdHN0YXRpYyBpbnQgbXQ3OTk2X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiAxMDA6XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuIDEwMTpcdHtcbiAxMDI6XHRcdHN0cnVjdCBwY2lfZGV2ICpoaWYyX2RldjtcbiAxMDM6XHRcdHN0cnVjdCBtdDc5OTZfaGlmICpoaWYyO1xuIDEwNDpcdFx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldjtcbiAxMDU6XHRcdGludCBpcnEsIGhpZjJfaXJxLCByZXQ7XG4gMTA2Olx0XHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXY7XG4gMTA3Olx0XG4gMTA4Olx0XHRyZXQgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGRldik7XG4gMTA5Olx0XHRpZiAocmV0KVxuIDExMDpcdFx0XHRyZXR1cm4gcmV0O1xuIDExMTpcdFxuIDExMjpcdFx0cmV0ID0gcGNpbV9pb21hcF9yZWdpb25zKHBkZXYsIEJJVCgwKSwgcGNpX25hbWUocGRldikpO1xuIDExMzpcdFx0aWYgKHJldClcbiAxMTQ6XHRcdFx0cmV0dXJuIHJldDtcbiAxMTU6XHRcbiAxMTY6XHRcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xuIDExNzpcdFxuIDExODpcdFx0cmV0ID0gZG1hX3NldF9tYXNrKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBETUFfQklUX01BU0soMzYpKTtcbiAxMTk6XHRcdGlmIChyZXQpXG4gMTIwOlx0XHRcdHJldHVybiByZXQ7XG4gMTIxOlx0XG4gMTIyOlx0XHRyZXQgPSBkbWFfc2V0X2NvaGVyZW50X21hc2soXHUwMDI2cGRldi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpO1xuIDEyMzpcdFx0aWYgKHJldClcbiAxMjQ6XHRcdFx0cmV0dXJuIHJldDtcbiAxMjU6XHRcbiAxMjY6XHRcdG10NzZfcGNpX2Rpc2FibGVfYXNwbShwZGV2KTtcbiAxMjc6XHRcbiAxMjg6XHRcdGlmIChpZC1cdTAwM2VkZXZpY2UgPT0gTVQ3OTk2X0RFVklDRV9JRF8yIHx8XG4gMTI5Olx0XHQgICAgaWQtXHUwMDNlZGV2aWNlID09IE1UNzk5Ml9ERVZJQ0VfSURfMiB8fFxuIDEzMDpcdFx0ICAgIGlkLVx1MDAzZWRldmljZSA9PSBNVDc5OTBfREVWSUNFX0lEXzIpXG4gMTMxOlx0XHRcdHJldHVybiBtdDc5OTZfcGNpX2hpZjJfcHJvYmUocGRldik7XG4gMTMyOlx0XG4gMTMzOlx0XHRkZXYgPSBtdDc5OTZfbW1pb19wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGNpbV9pb21hcF90YWJsZShwZGV2KVswXSxcbiAxMzQ6XHRcdFx0XHRcdGlkLVx1MDAzZWRldmljZSk7XG4gMTM1Olx0XHRpZiAoSVNfRVJSKGRldikpXG4gMTM2Olx0XHRcdHJldHVybiBQVFJfRVJSKGRldik7XG4gMTM3Olx0XG4gMTM4Olx0XHRtZGV2ID0gXHUwMDI2ZGV2LVx1MDAzZW10NzY7XG4gMTM5Olx0XHRtdDc5OTZfd2ZzeXNfcmVzZXQoZGV2KTtcbiAxNDA6XHRcdGhpZjIgPSBtdDc5OTZfcGNpX2luaXRfaGlmMihwZGV2KTtcbiAxNDE6XHRcdGRldi1cdTAwM2VoaWYyID0gaGlmMjtcbiAxNDI6XHRcbiAxNDM6XHRcdG10NzZfbnB1X2luaXQobWRldiwgcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIDApLFxuIDE0NDpcdFx0XHQgICAgICBwY2lfZG9tYWluX25yKHBkZXYtXHUwMDNlYnVzKSA/IDMgOiAyKTtcbiAxNDU6XHRcbiAxNDY6XHRcdHJldCA9IG10Nzk5Nl9tbWlvX3dlZF9pbml0KGRldiwgcGRldiwgZmFsc2UsIFx1MDAyNmlycSk7XG4gMTQ3Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDE0ODpcdFx0XHRnb3RvIGZyZWVfd2VkX29yX2lycV92ZWN0b3I7XG4gMTQ5Olx0XG4gMTUwOlx0XHRpZiAoIXJldCkge1xuIDE1MTpcdFx0XHRyZXQgPSBwY2lfYWxsb2NfaXJxX3ZlY3RvcnMocGRldiwgMSwgMSwgUENJX0lSUV9BTExfVFlQRVMpO1xuIDE1MjpcdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDE1MzpcdFx0XHRcdGdvdG8gZnJlZV9kZXZpY2U7XG4gMTU0Olx0XG4gMTU1Olx0XHRcdGlycSA9IHBkZXYtXHUwMDNlaXJxO1xuIDE1NjpcdFx0fVxuIDE1NzpcdFxuIDE1ODpcdFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVx1MDAzZWRldiwgaXJxLCBtdDc5OTZfaXJxX2hhbmRsZXIsXG4gMTU5Olx0XHRcdFx0ICAgICAgIElSUUZfU0hBUkVELCBLQlVJTERfTU9ETkFNRSwgZGV2KTtcbiAxNjA6XHRcdGlmIChyZXQpXG4gMTYxOlx0XHRcdGdvdG8gZnJlZV93ZWRfb3JfaXJxX3ZlY3RvcjtcbiAxNjI6XHRcbiAxNjM6XHRcdG10NzZfd3IoZGV2LCBNVF9JTlRfTUFTS19DU1IsIDApO1xuIDE2NDpcdFx0LyogbWFzdGVyIHN3aXRjaCBvZiBQQ0llIGludGVycnVwdCBlbmFibGUgKi9cbiAxNjU6XHRcdG10NzZfd3IoZGV2LCBNVF9QQ0lFX01BQ19JTlRfRU5BQkxFLCAweGZmKTtcbiAxNjY6XHRcbiAxNjc6XHRcdGlmIChoaWYyKSB7XG4gMTY4Olx0XHRcdGhpZjJfZGV2ID0gY29udGFpbmVyX29mKGhpZjItXHUwMDNlZGV2LCBzdHJ1Y3QgcGNpX2RldiwgZGV2KTtcbiAxNjk6XHRcbiAxNzA6XHRcdFx0cmV0ID0gbXQ3OTk2X21taW9fd2VkX2luaXQoZGV2LCBoaWYyX2RldiwgdHJ1ZSwgXHUwMDI2aGlmMl9pcnEpO1xuIDE3MTpcdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDE3MjpcdFx0XHRcdGdvdG8gZnJlZV9oaWYyX3dlZF9pcnFfdmVjdG9yO1xuIDE3MzpcdFxuIDE3NDpcdFx0XHRpZiAoIXJldCkge1xuIDE3NTpcdFx0XHRcdHJldCA9IHBjaV9hbGxvY19pcnFfdmVjdG9ycyhoaWYyX2RldiwgMSwgMSxcbiAxNzY6XHRcdFx0XHRcdFx0XHQgICAgUENJX0lSUV9BTExfVFlQRVMpO1xuIDE3NzpcdFx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gMTc4Olx0XHRcdFx0XHRnb3RvIGZyZWVfaGlmMjtcbiAxNzk6XHRcbiAxODA6XHRcdFx0XHRkZXYtXHUwMDNlaGlmMi1cdTAwM2VpcnEgPSBoaWYyX2Rldi1cdTAwM2VpcnE7XG4gMTgxOlx0XHRcdFx0aGlmMl9pcnEgPSBkZXYtXHUwMDNlaGlmMi1cdTAwM2VpcnE7XG4gMTgyOlx0XHRcdH1cbiAxODM6XHRcbiAxODQ6XHRcdFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVx1MDAzZWRldiwgaGlmMl9pcnEsIG10Nzk5Nl9pcnFfaGFuZGxlcixcbiAxODU6XHRcdFx0XHRcdCAgICAgICBJUlFGX1NIQVJFRCwgS0JVSUxEX01PRE5BTUUgXCYjMzQ7LWhpZlwmIzM0OyxcbiAxODY6XHRcdFx0XHRcdCAgICAgICBkZXYpO1xuIDE4NzpcdFx0XHRpZiAocmV0KVxuIDE4ODpcdFx0XHRcdGdvdG8gZnJlZV9oaWYyX3dlZF9pcnFfdmVjdG9yO1xuIDE4OTpcdFxuIDE5MDpcdFx0XHRtdDc2X3dyKGRldiwgTVRfSU5UMV9NQVNLX0NTUiwgMCk7XG4gMTkxOlx0XHRcdC8qIG1hc3RlciBzd2l0Y2ggb2YgUENJZSB0bnRlcnJ1cHQgZW5hYmxlICovXG4gMTkyOlx0XHRcdG10NzZfd3IoZGV2LCBNVF9QQ0lFMV9NQUNfSU5UX0VOQUJMRSwgMHhmZik7XG4gMTkzOlx0XHR9XG4gMTk0Olx0XG4gMTk1Olx0XHRyZXQgPSBtdDc5OTZfcmVnaXN0ZXJfZGV2aWNlKGRldik7XG4gMTk2Olx0XHRpZiAocmV0KVxuIDE5NzpcdFx0XHRnb3RvIGZyZWVfaGlmMl9pcnE7XG4gMTk4Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MTAwCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIERldmljZSBSZWdpc3RyYXRpb24qKgoKT2theSwgc28gYG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2VgIGhhcyBiZWVuIGludm9rZWQuIE15IGZpcnN0IHRob3VnaHQgaXMsICYjMzQ7QWxyaWdodCwgbGV0JiMzOTtzIGRpc3NlY3QgdGhpcyBmdW5jdGlvbiBhbmQgdW5kZXJzdGFuZCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGJyb2FkZXIgZHJpdmVyIGNvbnRleHQuJiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzdGVwcyBpdCB0YWtlcyB0byBpbnRlZ3JhdGUgdGhpcyBzcGVjaWZpYyBwaWVjZSBvZiBoYXJkd2FyZSwgbGlrZWx5IGEgV2lGaSBkZXZpY2UgYmFzZWQgb24gdGhlIG5hbWluZywgaW50byB0aGUgc3lzdGVtJiMzOTtzIGRldmljZSB0cmVlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBtZW1vcnkgbWFwcGluZywgaW50ZXJydXB0IHJlZ2lzdHJhdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kLCBvZiBjb3Vyc2UsIHRoZSBnZW5lcmFsIGRldmljZSBpbml0aWFsaXphdGlvbiBmbG93LiBBcmUgdGhlcmUgYW55IGhhcmR3YXJlLXNwZWNpZmljIGluaXRpYWxpemF0aW9ucyBoYXBwZW5pbmc/IEFyZSBhbnkgY3JpdGljYWwgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIHBvcHVsYXRlZCBvciBjb25maWd1cmVkIGF0IHRoaXMgc3RhZ2U/IEkgbmVlZCB0byBnZXQgYSBoaWdoLWxldmVsIHZpZXcgYW5kIHRoZW4gem9vbSBpbiBvbiB0aGUgY3JpdGljYWwgcGFydHMgdG8gYW5hbHl6ZSBpdHMgaW50ZXJhY3Rpb25zIHdpdGggdGhlIHJlbGV2YW50IGZyYW1ld29ya3MsIGxpa2VseSB0aGUgbWFjODAyMTEgd2lyZWxlc3Mgc3RhY2suIEkmIzM5O2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGVycm9yIGNoZWNraW5nIGFuZCBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHBvdGVudGlhbCBmYWlsdXJlIHNjZW5hcmlvcyBkdXJpbmcgZGV2aWNlIHJlZ2lzdHJhdGlvbjsgdGhhdCB3aWxsIGJlIGNyaXRpY2FsIGZvciBkZWJ1Z2dpbmcgbGF0ZXIgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcyOSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTcyOTpcdGludCBtdDc5OTZfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4xNzMwOlx0e1xuMTczMTpcdFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBtdDc2X2h3KGRldik7XG4xNzMyOlx0XHRzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5O1xuMTczMzpcdFx0aW50IHJldDtcbjE3MzQ6XHRcbjE3MzU6XHRcdGRldi1cdTAwM2VwaHkuZGV2ID0gZGV2O1xuMTczNjpcdFx0ZGV2LVx1MDAzZXBoeS5tdDc2ID0gXHUwMDI2ZGV2LVx1MDAzZW10NzYucGh5O1xuMTczNzpcdFx0ZGV2LVx1MDAzZW10NzYucGh5LnByaXYgPSBcdTAwMjZkZXYtXHUwMDNlcGh5O1xuMTczODpcdFx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2VyY193b3JrLCBtdDc5OTZfbWFjX3N0YV9yY193b3JrKTtcbjE3Mzk6XHRcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VtcGh5Lm1hY193b3JrLCBtdDc5OTZfbWFjX3dvcmspO1xuMTc0MDpcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2ZGV2LVx1MDAzZXN0YV9yY19saXN0KTtcbjE3NDE6XHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNmRldi1cdTAwM2V0d3RfbGlzdCk7XG4xNzQyOlx0XG4xNzQzOlx0XHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNmRldi1cdTAwM2VyZXNldF93YWl0KTtcbjE3NDQ6XHRcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlcmVzZXRfd29yaywgbXQ3OTk2X21hY19yZXNldF93b3JrKTtcbjE3NDU6XHRcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlZHVtcF93b3JrLCBtdDc5OTZfbWFjX2R1bXBfd29yayk7XG4xNzQ2Olx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2VkdW1wX211dGV4KTtcbjE3NDc6XHRcbjE3NDg6XHRcdHJldCA9IG10Nzk5Nl9pbml0X2hhcmR3YXJlKGRldik7XG4xNzQ5Olx0XHRpZiAocmV0KVxuMTc1MDpcdFx0XHRyZXR1cm4gcmV0O1xuMTc1MTpcdFxuMTc1MjpcdFx0bXQ3OTk2X2luaXRfd2lwaHkoaHcsIFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKTtcbjE3NTM6XHRcbjE3NTQ6XHRcdHJldCA9IG10Nzk5Nl9yZWdpc3Rlcl9waHkoZGV2LCBNVF9CQU5EMSk7XG4xNzU1Olx0XHRpZiAocmV0KVxuMTc1NjpcdFx0XHRyZXR1cm4gcmV0O1xuMTc1NzpcdFxuMTc1ODpcdFx0cmV0ID0gbXQ3OTk2X3JlZ2lzdGVyX3BoeShkZXYsIE1UX0JBTkQyKTtcbjE3NTk6XHRcdGlmIChyZXQpXG4xNzYwOlx0XHRcdHJldHVybiByZXQ7XG4xNzYxOlx0XG4xNzYyOlx0XHRyZXQgPSBtdDc5OTZfbnB1X2h3X2luaXQoZGV2KTtcbjE3NjM6XHRcdGlmIChyZXQpXG4xNzY0Olx0XHRcdHJldHVybiByZXQ7XG4xNzY1Olx0XG4xNzY2Olx0XHRtdDc5OTZfZG1hX3Jyb19zdGFydChkZXYpO1xuMTc2NzpcdFxuMTc2ODpcdFx0cmV0ID0gbXQ3Nl9yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHRydWUsIG10NzZfcmF0ZXMsXG4xNzY5Olx0XHRcdFx0XHQgICBBUlJBWV9TSVpFKG10NzZfcmF0ZXMpKTtcbjE3NzA6XHRcdGlmIChyZXQpXG4xNzcxOlx0XHRcdHJldHVybiByZXQ7XG4xNzcyOlx0XG4xNzczOlx0XHRtdDc5OTZfZm9yX2VhY2hfcGh5KGRldiwgcGh5KVxuMTc3NDpcdFx0XHRtdDc5OTZfdGhlcm1hbF9pbml0KHBoeSk7XG4xNzc1Olx0XG4xNzc2Olx0XHRpZWVlODAyMTFfcXVldWVfd29yayhtdDc2X2h3KGRldiksIFx1MDAyNmRldi1cdTAwM2Vpbml0X3dvcmspO1xuMTc3NzpcdFxuMTc3ODpcdFx0ZGV2LVx1MDAzZXJlY292ZXJ5Lmh3X2luaXRfZG9uZSA9IHRydWU7XG4xNzc5Olx0XG4xNzgwOlx0XHRyZXQgPSBtdDc5OTZfaW5pdF9kZWJ1Z2ZzKGRldik7XG4xNzgxOlx0XHRpZiAocmV0KVxuMTc4MjpcdFx0XHRnb3RvIGVycm9yO1xuMTc4MzpcdFxuMTc4NDpcdFx0cmV0ID0gbXQ3OTk2X2NvcmVkdW1wX3JlZ2lzdGVyKGRldik7XG4xNzg1Olx0XHRpZiAocmV0KVxuMTc4NjpcdFx0XHRnb3RvIGVycm9yO1xuMTc4NzpcdFxuMTc4ODpcdFx0cmV0dXJuIDA7XG4xNzg5Olx0XG4xNzkwOlx0ZXJyb3I6XG4xNzkxOlx0XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2Vpbml0X3dvcmspO1xuMTc5MjpcdFxuMTc5MzpcdFx0cmV0dXJuIHJldDtcbjE3OTQ6XHR9XG4xNzk1Olx0XG4xNzk2Olx0dm9pZCBtdDc5OTZfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbjE3OTc6XHR7XG4xNzk4Olx0XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VkdW1wX3dvcmspO1xuMTc5OTpcdFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNld2VkX3Jyby53b3JrKTtcbjE4MDA6XHRcdG10Nzk5Nl91bnJlZ2lzdGVyX3BoeShtdDc5OTZfcGh5MyhkZXYpKTtcbjE4MDE6XHRcdG10Nzk5Nl91bnJlZ2lzdGVyX3BoeShtdDc5OTZfcGh5MihkZXYpKTtcbjE4MDI6XHRcdG10Nzk5Nl91bnJlZ2lzdGVyX3RoZXJtYWwoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG4xODAzOlx0XHRtdDc5OTZfY29yZWR1bXBfdW5yZWdpc3RlcihkZXYpO1xuMTgwNDpcdFx0bXQ3Nl91bnJlZ2lzdGVyX2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4xODA1Olx0XHRtdDc5OTZfd2VkX3Jyb19mcmVlKGRldik7XG4xODA2Olx0XHRtdDc5OTZfbWN1X2V4aXQoZGV2KTtcbjE4MDc6XHRcdG10Nzk5Nl90eF90b2tlbl9wdXQoZGV2KTtcbjE4MDg6XHRcdG10Nzk5Nl9kbWFfY2xlYW51cChkZXYpO1xuMTgwOTpcdFx0aWYgKG10Nzk5Nl9oYXNfaHdycm8oZGV2KSBcdTAwMjZcdTAwMjZcbjE4MTA6XHRcdCAgICAhbXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSlcbjE4MTE6XHRcdFx0bXQ3OTk2X3Jyb19tc2R1X3BhZ2VfbWFwX2ZyZWUoZGV2KTtcbjE4MTI6XHRcdHRhc2tsZXRfZGlzYWJsZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5pcnFfdGFza2xldCk7XG4xODEzOlx0XG4xODE0Olx0XHRtdDc2X2ZyZWVfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbjE4MTU6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODQ1CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBNVDc5OTYgSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UqKgoKT2theSwgc28gd2UmIzM5O3JlIHN0YXJ0aW5nIHdpdGggYG10Nzk5Nl9pbml0X2hhcmR3YXJlYC4gVGhhdCYjMzk7cyB0aGUgZmlyc3Qgc3RlcCBiZWZvcmUgd2UgZXZlbiBnZXQgdG8gdGhlIFdpLUZpIGludGVyZmFjZSBpbml0aWFsaXphdGlvbi4gTWFrZXMgc2Vuc2U7IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gaGFzIHRvIGNvbWUgYmVmb3JlIGFueXRoaW5nIGVsc2UuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IGBtdDc5OTZfaW5pdF9oYXJkd2FyZWAgZnVuY3Rpb24gYW5kIHNlZSB3aGF0IGl0JiMzOTtzIGRvaW5nIHVuZGVyIHRoZSBob29kLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgZnVuZGFtZW50YWwgaGFyZHdhcmUgYXNwZWN0cyBhcmUgYmVpbmcgYnJvdWdodCB1cCBmaXJzdC4gSXMgaXQgcG93ZXIgc2VxdWVuY2luZywgY2xvY2sgc2V0dXAsIHJlZ2lzdGVyIGluaXRpYWxpemF0aW9uLi4uIHdoYXQmIzM5O3MgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyBvZiB0aGUgc2lsaWNvbiBzdGFydHVwPyBJIG5lZWQgdG8gc2VlIGlmIGl0IG1ha2VzIHNlbnNlIHdpdGhpbiB0aGUgb3ZlcmFsbCBib290IHByb2Nlc3MgYW5kIHRoZSBkZXZpY2UmIzM5O3MgYXJjaGl0ZWN0dXJlLiBBbmQgaG93IGRvZXMgdGhpcyBjb25uZWN0IHdpdGggdGhlIHJlZ3VsYXRvcnkgcmVxdWlyZW1lbnRzPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5OTZfaW5pdF9oYXJkd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9MTIxMT1zdGF0aWMgaW50IG10Nzk5Nl92YXJpYW50X2ZlbV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEyNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6MTI1NDpzdGF0aWMgaW50IG10Nzk5Nl9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTI1NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTE3Mjk9aW50IG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTc0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxNzQ4Olx0cmV0ID0gbXQ3OTk2X2luaXRfaGFyZHdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xNzQ5LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0NTYKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBtdDc5OTZfaW5pdF9oYXJkd2FyZWAgZnVuY3Rpb24uIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgdGhlIGNvcmUgaW5pdGlhbGl6YXRpb24gcm91dGluZSBmb3IgdGhlIGhhcmR3YXJlLCBsaWtlbHkgc2V0dGluZyB1cCByZWdpc3RlcnMsIGNvbmZpZ3VyaW5nIGNsb2NrcywgYW5kIGVuYWJsaW5nIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXRpZXMgb2YgdGhlIE1UNzk5NiB3aXJlbGVzcyBjaGlwLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBzZXF1ZW5jZSBvZiBzdGVwcyDigJMgd2hhdCBjb21lcyBmaXJzdCwgd2hhdCBkZXBlbmRzIG9uIHdoYXQuIEkmIzM5O20gYWxzbyBnb2luZyB0byBiZSBtZW50YWxseSBwYXJzaW5nIGZvciBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHdoZXJlIGNhcmVmdWwgdHVuaW5nIG1pZ2h0IGJlIGNydWNpYWwsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgdGhlIGNvbnN0cmFpbnRzIG9mIGVtYmVkZGVkIHN5c3RlbXMuIEFyZSB0aGV5IGRvaW5nIGFueSBwb3dlciBtYW5hZ2VtZW50IHNldHVwIGVhcmx5IG9uPyBBcmUgdGhleSBjb25maWd1cmluZyBhbnkgY3JpdGljYWwgaW50ZXJydXB0cz8gVGhpcyBpcyB3aGVyZSBJIGNhbiBzdGFydCBidWlsZGluZyBhIG1lbnRhbCBtb2RlbCBvZiB0aGUgY2hpcCYjMzk7cyBzdGFydHVwIHByb2Nlc3MuIEkgYWxzbyB3YW50IHRvIGNoZWNrIGZvciBhbnkgdmVuZG9yLXNwZWNpZmljIG51YW5jZXMgb3Iga2x1ZGdlcy4gRmluYWxseSwgSSYjMzk7bGwgYmUgd2F0Y2hpbmcgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBvcHBvcnR1bml0aWVzIGZvciBvcHRpbWl6YXRpb24gb3IgcG90ZW50aWFsIGlzc3VlcyB0aGF0IGNvdWxkIGltcGFjdCBwZXJmb3JtYW5jZSBvciBzdGFiaWxpdHkgZG93biB0aGUgbGluZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjU0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMjU0Olx0c3RhdGljIGludCBtdDc5OTZfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuMTI1NTpcdHtcbjEyNTY6XHRcdGludCByZXQsIGlkeDtcbjEyNTc6XHRcbjEyNTg6XHRcdG10NzZfd3IoZGV2LCBNVF9JTlRfU09VUkNFX0NTUiwgfjApO1xuMTI1OTpcdFx0aWYgKGlzX210Nzk5MihcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbjEyNjA6XHRcdFx0bXQ3Nl9ybXcoZGV2LCBNVF9BRkVfQ1RMX0JBTkRfUExMXzAzKE1UX0JBTkQwKSwgTVRfQUZFX0NUTF9CQU5EX1BMTF8wM19NU0JfRU4sIDApO1xuMTI2MTpcdFx0XHRtdDc2X3JtdyhkZXYsIE1UX0FGRV9DVExfQkFORF9QTExfMDMoTVRfQkFORDEpLCBNVF9BRkVfQ1RMX0JBTkRfUExMXzAzX01TQl9FTiwgMCk7XG4xMjYyOlx0XHR9XG4xMjYzOlx0XG4xMjY0Olx0XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZWluaXRfd29yaywgbXQ3OTk2X2luaXRfd29yayk7XG4xMjY1Olx0XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXdlZF9ycm8ud29yaywgbXQ3OTk2X3dlZF9ycm9fd29yayk7XG4xMjY2Olx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZkZXYtXHUwMDNld2VkX3Jyby5wb2xsX2xpc3QpO1xuMTI2NzpcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZGV2LVx1MDAzZXdlZF9ycm8ubG9jayk7XG4xMjY4Olx0XG4xMjY5Olx0XHRyZXQgPSBtdDc5OTZfdmFyaWFudF90eXBlX2luaXQoZGV2KTtcbjEyNzA6XHRcdGlmIChyZXQpXG4xMjcxOlx0XHRcdHJldHVybiByZXQ7XG4xMjcyOlx0XG4xMjczOlx0XHRyZXQgPSBtdDc5OTZfZG1hX2luaXQoZGV2KTtcbjEyNzQ6XHRcdGlmIChyZXQpXG4xMjc1Olx0XHRcdHJldHVybiByZXQ7XG4xMjc2Olx0XG4xMjc3Olx0XHRzZXRfYml0KE1UNzZfU1RBVEVfSU5JVElBTElaRUQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbjEyNzg6XHRcbjEyNzk6XHRcdHJldCA9IG10Nzk5Nl9tY3VfaW5pdChkZXYpO1xuMTI4MDpcdFx0aWYgKHJldClcbjEyODE6XHRcdFx0cmV0dXJuIHJldDtcbjEyODI6XHRcbjEyODM6XHRcdHJldCA9IG10Nzk5Nl93ZWRfcnJvX2luaXQoZGV2KTtcbjEyODQ6XHRcdGlmIChyZXQpXG4xMjg1Olx0XHRcdHJldHVybiByZXQ7XG4xMjg2Olx0XG4xMjg3Olx0XHRyZXQgPSBtdDc5OTZfdmFyaWFudF9mZW1faW5pdChkZXYpO1xuMTI4ODpcdFx0aWYgKHJldClcbjEyODk6XHRcdFx0cmV0dXJuIHJldDtcbjEyOTA6XHRcbjEyOTE6XHRcdHJldCA9IG10Nzk5Nl9lZXByb21faW5pdChkZXYpO1xuMTI5MjpcdFx0aWYgKHJldCBcdTAwM2MgMClcbjEyOTM6XHRcdFx0cmV0dXJuIHJldDtcbjEyOTQ6XHRcbjEyOTU6XHRcdC8qIEJlYWNvbiBhbmQgbWdtdCBmcmFtZXMgc2hvdWxkIG9jY3VweSB3Y2lkIDAgKi9cbjEyOTY6XHRcdGlkeCA9IG10NzZfd2NpZF9hbGxvYyhkZXYtXHUwMDNlbXQ3Ni53Y2lkX21hc2ssIE1UNzk5Nl9XVEJMX1NUQSk7XG4xMjk3Olx0XHRpZiAoaWR4KVxuMTI5ODpcdFx0XHRyZXR1cm4gLUVOT1NQQztcbjEyOTk6XHRcbjEzMDA6XHRcdGRldi1cdTAwM2VtdDc2Lmdsb2JhbF93Y2lkLmlkeCA9IGlkeDtcbjEzMDE6XHRcdGRldi1cdTAwM2VtdDc2Lmdsb2JhbF93Y2lkLmh3X2tleV9pZHggPSAtMTtcbjEzMDI6XHRcdGRldi1cdTAwM2VtdDc2Lmdsb2JhbF93Y2lkLnR4X2luZm8gfD0gTVRfV0NJRF9UWF9JTkZPX1NFVDtcbjEzMDM6XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXHUwMDNlbXQ3Ni53Y2lkW2lkeF0sIFx1MDAyNmRldi1cdTAwM2VtdDc2Lmdsb2JhbF93Y2lkKTtcbjEzMDQ6XHRcbjEzMDU6XHRcdHJldHVybiAwO1xuMTMwNjpcdH1cbjEzMDc6XHRcbjEzMDg6XHR2b2lkIG10Nzk5Nl9zZXRfc3RyZWFtX3ZodF90eGJmX2NhcHMoc3RydWN0IG10Nzk5Nl9waHkgKnBoeSlcbjEzMDk6XHR7XG4xMzEwOlx0XHRpbnQgc3RzO1xuMTMxMTpcdFx0dTMyICpjYXA7XG4xMzEyOlx0XG4xMzEzOlx0XHRpZiAoIXBoeS1cdTAwM2VtdDc2LVx1MDAzZWNhcC5oYXNfNWdoeilcbjEzMTQ6XHRcdFx0cmV0dXJuO1xuMTMxNTpcdFxuMTMxNjpcdFx0c3RzID0gaHdlaWdodDE2KHBoeS1cdTAwM2VtdDc2LVx1MDAzZWNoYWlubWFzayk7XG4xMzE3Olx0XHRjYXAgPSBcdTAwMjZwaHktXHUwMDNlbXQ3Ni1cdTAwM2VzYmFuZF81Zy5zYmFuZC52aHRfY2FwLmNhcDtcbjEzMTg6XHRcbjEzMTk6XHRcdCpjYXAgfD0gSUVFRTgwMjExX1ZIVF9DQVBfU1VfQkVBTUZPUk1FRV9DQVBBQkxFIHxcbjEzMjA6XHRcdFx0SUVFRTgwMjExX1ZIVF9DQVBfTVVfQkVBTUZPUk1FRV9DQVBBQkxFO1xuMTMyMTpcdFxuMTMyMjpcdFx0aWYgKGlzX210Nzk5MihwaHktXHUwMDNlbXQ3Ni1cdTAwM2VkZXYpKVxuMTMyMzpcdFx0XHQqY2FwIHw9IEZJRUxEX1BSRVAoSUVFRTgwMjExX1ZIVF9DQVBfQkVBTUZPUk1FRV9TVFNfTUFTSywgNCk7XG4xMzI0Olx0XHRlbHNlXG4xMzI1Olx0XHRcdCpjYXAgfD0gRklFTERfUFJFUChJRUVFODAyMTFfVkhUX0NBUF9CRUFNRk9STUVFX1NUU19NQVNLLCAzKTtcbjEzMjY6XHRcbjEzMjc6XHRcdCpjYXAgXHUwMDI2PSB+KElFRUU4MDIxMV9WSFRfQ0FQX1NPVU5ESU5HX0RJTUVOU0lPTlNfTUFTSyB8XG4xMzI4Olx0XHRcdCAgSUVFRTgwMjExX1ZIVF9DQVBfU1VfQkVBTUZPUk1FUl9DQVBBQkxFIHxcbjEzMjk6XHRcdFx0ICBJRUVFODAyMTFfVkhUX0NBUF9NVV9CRUFNRk9STUVSX0NBUEFCTEUpO1xuMTMzMDpcdFxuMTMzMTpcdFx0aWYgKHN0cyBcdTAwM2MgMilcbjEzMzI6XHRcdFx0cmV0dXJuO1xuMTMzMzpcdFxuMTMzNDpcdFx0KmNhcCB8PSBJRUVFODAyMTFfVkhUX0NBUF9TVV9CRUFNRk9STUVSX0NBUEFCTEUgfFxuMTMzNTpcdFx0XHRJRUVFODAyMTFfVkhUX0NBUF9NVV9CRUFNRk9STUVSX0NBUEFCTEUgfFxuMTMzNjpcdFx0XHRGSUVMRF9QUkVQKElFRUU4MDIxMV9WSFRfQ0FQX1NPVU5ESU5HX0RJTUVOU0lPTlNfTUFTSywgc3RzIC0gMSk7XG4xMzM3Olx0fVxuMTMzODpcdFxuMTMzOTpcdHN0YXRpYyB2b2lkXG4xMzQwOlx0bXQ3OTk2X3NldF9zdHJlYW1faGVfdHhiZl9jYXBzKHN0cnVjdCBtdDc5OTZfcGh5ICpwaHksXG4xMzQxOlx0XHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhX2hlX2NhcCAqaGVfY2FwLCBpbnQgdmlmLFxuMTM0MjpcdFx0XHRcdCAgICAgICBlbnVtIG5sODAyMTFfYmFuZCBiYW5kKVxuMTM0MzpcdHtcbjEzNDQ6XHRcdHN0cnVjdCBpZWVlODAyMTFfaGVfY2FwX2VsZW0gKmVsZW0gPSBcdTAwMjZoZV9jYXAtXHUwMDNlaGVfY2FwX2VsZW07XG4xMzQ1Olx0XHRpbnQgc3RzID0gaHdlaWdodDE2KHBoeS1cdTAwM2VtdDc2LVx1MDAzZWNoYWlubWFzayk7XG4xMzQ2Olx0XHRib29sIG5vbl8yZyA9IGJhbmQgIT0gTkw4MDIxMV9CQU5EXzJHSFo7XG4xMzQ3Olx0XHR1OCBjO1xuMTM0ODpcdFxuMTM0OTpcdCNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxuMTM1MDpcdFx0aWYgKHZpZiA9PSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UKVxuMTM1MTpcdFx0XHRyZXR1cm47XG4xMzUyOlx0I2VuZGlmXG4xMzUzOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNTQyCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgTUNVIEluaXRpYWxpemF0aW9uIFNlcXVlbmNlKioKCk9rYXksIHNvIHRoZSBgbXQ3OTk2X21jdV9pbml0YCBmdW5jdGlvbiBpcyB0aGUgZmlyc3QgdGhpbmcgdGhhdCYjMzk7cyBjYWxsZWQgaGVyZS4gQ2xlYXJseSwgdGhpcyBpcyB3aGVyZSB0aGUgTUNVIGdldHMgaW5pdGlhbGl6ZWQsIGFuZCBtb3N0IGxpa2VseSwgdGhlIGZpcm13YXJlIGdldHMgbG9hZGVkLiBNYWtlcyBzZW5zZS4gSWYgdGhhdCBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZhaWxz4oCUbWF5YmUgdGhlIGZpcm13YXJlIGZhaWxzIHRvIGxvYWQgY29ycmVjdGx5LCBvciB0aGUgTUNVIGl0c2VsZiBpc24mIzM5O3QgcmVzcG9uZGluZ+KAlHRoZSB3aG9sZSB0aGluZyYjMzk7cyBnb2luZyB0byBmYWxsIGFwYXJ0LiBgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZWAgd2lsbCByZXR1cm4gYW4gZXJyb3IsIGFuZCB0aGF0JiMzOTtzIHRoZSBlbmQgb2YgdGhlIGxpbmUuIFdlIHdvbiYjMzk7dCBldmVuIGdldCB0byBgbXQ3OTk2X2luaXRfd2lwaHlgLCBhbmQgdGhlIGRldmljZSByZWdpc3RyYXRpb24gd2lsbCBiZSBhIG5vLWdvLiBIYW5nIG9uLCB0aGUgY2FsbCBvcmRlciBpcyBpbnRlcmVzdGluZy4uLiBgbXQ3OTk2X21jdV9pbml0YCBpcyBjYWxsZWQgKmJlZm9yZSogYG10Nzk5Nl9pbml0X3dpcGh5YC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQuIExldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgd2hhdCBgbXQ3OTk2X21jdV9pbml0YCBpcyBkb2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTk2X21jdV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz0xMjU0PXN0YXRpYyBpbnQgbXQ3OTk2X2luaXRfaGFyZHdhcmUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTI3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxMjc5Olx0cmV0ID0gbXQ3OTk2X21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTI4MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM9MjIyMD1tdDc5OTZfbWFjX3Jlc3RhcnQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yMjkxLVx0LyogbG9hZCBmaXJtd2FyZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjI5MjpcdHJldCA9IG10Nzk5Nl9tY3VfaW5pdF9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjI5My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9MzY0MD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzozNjQxOm10Nzk5Nl9tY3VfaW5pdF9yeF9haXJ0aW1lKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNjQyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNjY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MzY2NTppbnQgbXQ3OTk2X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNjY2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MzcwMzpcdHJldCA9IG10Nzk5Nl9tY3VfaW5pdF9yeF9haXJ0aW1lKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzA0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MzcxMTppbnQgbXQ3OTk2X21jdV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzEyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MzcyMTpcdHJldHVybiBtdDc5OTZfbWN1X2luaXRfZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM3MjItfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oPTcwMj1pbnQgbXQ3OTk2X3J1bihzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oOjcwMzppbnQgbXQ3OTk2X21jdV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg6NzA0OmludCBtdDc5OTZfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaC03MDUtaW50IG10Nzk5Nl9tY3VfdHd0X2FncnRfdXBkYXRlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMDg4CgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDQ1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9RmFsc2U6IE1UNzk5NiBTdGF0aWMgQ29uZmlndXJhdGlvbiBDaGFuZ2UqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYG10Nzk5Nl9tY3VfaW5pdGAgY2FsbHMgYG10Nzk5Nl9tY3VfaW5pdF9maXJtd2FyZWAsIHdoaWNoLCBhcyB3ZSBrbm93LCBpcyBhIHBvdGVudGlhbCBzdHVtYmxpbmcgYmxvY2sgaW4gZnV6emluZy4gVGhlIGZpcm13YXJlIGxvYWRpbmcgaXMgY3JpdGljYWwsIGFuZCBpbiBzeXprYWxsZXIsIHdlIG1pZ2h0IGdldCBsdWNreSB3aXRoIG1vY2tlZCBmaXJtd2FyZSBpZiB0aGUgZnV6emVyIHN1cHBvcnRzIGl0LCAqYW5kKiB0aGUgZHJpdmVyIHV0aWxpemVzIGByZXF1ZXN0X2Zpcm13YXJlYC4gSGVyZSwgdGhlIFBDSSBmdXp6aW5nIGlzIHdlYWsg4oCTIGl0JiMzOTtzIGp1c3QgcmFuZG9tIE1NSU8gcmVzcG9uc2VzLiBUaGF0IG1lYW5zIGBtdDc5OTZfbWN1X2luaXRfZmlybXdhcmVgIGNvdWxkIGZhaWwsIGhhbmcsIG9yIGV2ZW4gKmFjY2lkZW50YWxseSogc3VjY2VlZCBiYXNlZCBvbiB0aG9zZSByYW5kb20gYnl0ZXMuIEJ1dCwgdGhhdCYjMzk7cyBub3QgdGhlIHBvaW50LgoKVGhlICpyZWFsKiBpc3N1ZSBpcyB0aGUgcGF0Y2ggaXRzZWxmLiBJdCYjMzk7cyBzaW1wbHkgcmVtb3ZpbmcgYC5iZWFjb25faW50X21pbl9nY2QgPSAxMDBgLiBUaGlzIGlzIGEgKnN0YXRpYyBjb25maWd1cmF0aW9uIGNoYW5nZSouIEl0JiMzOTtzIGRhdGEsIG5vdCBhIGZ1bmN0aW9uYWwgY29kZSBwYXRoIG1vZGlmaWNhdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGUgZ3VpZGFuY2Ugc2F5cyAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMmIzM0OyBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCgpJbiB0aGlzIGNhc2UsIHRoZSBjaGFuZ2UgaW4gcXVlc3Rpb24gZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgZHJpdmVyLiBJdOKAmXMganVzdCBhbHRlcmluZyBkYXRhIHBhc3NlZCB0byBtYWM4MDIxMSwgYW5kIHRoYXQmIzM5O3Mgbm90IHRoZSBraW5kIG9mIHRoaW5nIHdlJiMzOTtyZSBsb29raW5nIHRvIGZ1enouCgpGdXJ0aGVyLCBhbmQgdGhpcyBpcyBhbm90aGVyIGNydWNpYWwgcG9pbnQ6IHRoZSBkcml2ZXIgaXMgZm9yIHRoZSBNVDc5OTYgUENJZSBXaS1GaSBjYXJkLiBXZSAqZG9uJiMzOTt0KiBoYXZlIGhhcmR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBpbiBRRU1VLiBUaGF0IG1lYW5zIHdlIGNhbm5vdCByZWFjaCB0aGUgZHJpdmVyLCByZWdhcmRsZXNzIG9mIHRoZSBmaXJtd2FyZSBzdGF0dXMuCgpUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZmFsbHMgaW50byAqYm90aCogY2F0ZWdvcmllcyB0aGF0IHdhcnJhbnQgYFdvcnRoRnV6emluZz1mYWxzZWA6IGl0JiMzOTtzIGEgY2hhbmdlIHRvIGEgbnVtZXJpYyBjb25zdGFudCwgYW5kIGl0JiMzOTtzIGluIGEgY29kZSBwYXRoIHRoYXQmIzM5O3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIE5vIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBuZWVkZWQuIFdlJiMzOTtyZSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhIG51bWVyaWMgY29uc3RhbnQgaW5pdGlhbGl6YXRpb24gKC5iZWFjb25faW50X21pbl9nY2QgPSAxMDApIGZyb20gYSBzdGF0aWMgY29uZmlndXJhdGlvbiBzdHJ1Y3QgaW4gdGhlIE1lZGlhdGVrIE1UNzk5NiBQQ0llIFdpLUZpIGRyaXZlci4gVGhpcyBpcyBhIHRyaXZpYWwgZGF0YSBzdHJ1Y3R1cmUgY2hhbmdlIHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBkcml2ZXImIzM5O3MgZXhlY3V0aW9uIGZsb3cuIEZ1cnRoZXJtb3JlLCB0aGUgTVQ3OTk2IGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBtYWtpbmcgaXQgdW5yZWFjaGFibGUgZm9yIG1lYW5pbmdmdWwgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgYSBudW1lcmljIGNvbnN0YW50IGluaXRpYWxpemF0aW9uICguYmVhY29uX2ludF9taW5fZ2NkID0gMTAwKSBmcm9tIGEgc3RhdGljIGNvbmZpZ3VyYXRpb24gc3RydWN0IGluIHRoZSBNZWRpYXRlayBNVDc5OTYgUENJZSBXaS1GaSBkcml2ZXIuIFRoaXMgaXMgYSB0cml2aWFsIGRhdGEgc3RydWN0dXJlIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZHJpdmVyJiMzOTtzIGV4ZWN1dGlvbiBmbG93LiBGdXJ0aGVybW9yZSwgdGhlIE1UNzk5NiBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBtZWFuaW5nZnVsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTY6MTguODM1NDAwOTYxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEyOTcxMDc3MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYSBudW1lcmljIGNvbnN0YW50IGluaXRpYWxpemF0aW9uICguYmVhY29uX2ludF9taW5fZ2NkID0gMTAwKSBmcm9tIGEgc3RhdGljIGNvbmZpZ3VyYXRpb24gc3RydWN0IGluIHRoZSBNZWRpYXRlayBNVDc5OTYgUENJZSBXaS1GaSBkcml2ZXIuIFRoaXMgaXMgYSB0cml2aWFsIGRhdGEgc3RydWN0dXJlIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZHJpdmVyJ3MgZXhlY3V0aW9uIGZsb3cuIEZ1cnRoZXJtb3JlLCB0aGUgTVQ3OTk2IGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBtYWtpbmcgaXQgdW5yZWFjaGFibGUgZm9yIG1lYW5pbmdmdWwgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE1OjE2OjE4LjgzNTQwODA2MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3NTg2MTY1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDdkOGFjZjM5N2NlYWQ4YTk3ZjRlZjAxMjE2OGIxZTg4OTVhNTI1M2JcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMiAxNToxNjoxNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmNcXG5pbmRleCBkNmY5YWExYWI1MmQxMi4uMDZmNzY0YTU0NDA1MjEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jXFxuQEAgLTM0LDcgKzM0LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gaWZfY29tYl9nbG9iYWwgPSB7XFxuIFxcdFxcdFxcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzQwKSB8XFxuIFxcdFxcdFxcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzgwKSB8XFxuIFxcdFxcdFxcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzE2MCksXFxuLVxcdC5iZWFjb25faW50X21pbl9nY2QgPSAxMDAsXFxuIH07XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbiBpZl9jb21iX2dsb2JhbF83OTkyID0ge1xcbkBAIC00Nyw3ICs0Niw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGlmX2NvbWJfZ2xvYmFsXzc5OTIgPSB7XFxuIFxcdFxcdFxcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzQwKSB8XFxuIFxcdFxcdFxcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzgwKSB8XFxuIFxcdFxcdFxcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzE2MCksXFxuLVxcdC5iZWFjb25faW50X21pbl9nY2QgPSAxMDAsXFxuIH07XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9saW1pdCBpZl9saW1pdHNbXSA9IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTY6MjAuMzEzMzQxODkxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTgxOTE1Nzc1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhIG51bWVyaWMgY29uc3RhbnQgaW5pdGlhbGl6YXRpb24gKC5iZWFjb25faW50X21pbl9nY2QgPSAxMDApIGZyb20gYSBzdGF0aWMgY29uZmlndXJhdGlvbiBzdHJ1Y3QgaW4gdGhlIE1lZGlhdGVrIE1UNzk5NiBQQ0llIFdpLUZpIGRyaXZlci4gVGhpcyBpcyBhIHRyaXZpYWwgZGF0YSBzdHJ1Y3R1cmUgY2hhbmdlIHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBkcml2ZXIncyBleGVjdXRpb24gZmxvdy4gRnVydGhlcm1vcmUsIHRoZSBNVDc5OTYgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIG1ha2luZyBpdCB1bnJlYWNoYWJsZSBmb3IgbWVhbmluZ2Z1bCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3ZDhhY2YzOTdjZWFkOGE5N2Y0ZWYwMTIxNjhiMWU4ODk1YTUyNTNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAxNToxNjoxNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuY1xuaW5kZXggZDZmOWFhMWFiNTJkMTIuLjA2Zjc2NGE1NDQwNTIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmNcbkBAIC0zNCw3ICszNCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGlmX2NvbWJfZ2xvYmFsID0ge1xuIFx0XHRcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzQwKSB8XG4gXHRcdFx0ICAgICAgIEJJVChOTDgwMjExX0NIQU5fV0lEVEhfODApIHxcbiBcdFx0XHQgICAgICAgQklUKE5MODAyMTFfQ0hBTl9XSURUSF8xNjApLFxuLVx0LmJlYWNvbl9pbnRfbWluX2djZCA9IDEwMCxcbiB9O1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uIGlmX2NvbWJfZ2xvYmFsXzc5OTIgPSB7XG5AQCAtNDcsNyArNDYsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbiBpZl9jb21iX2dsb2JhbF83OTkyID0ge1xuIFx0XHRcdCAgICAgICBCSVQoTkw4MDIxMV9DSEFOX1dJRFRIXzQwKSB8XG4gXHRcdFx0ICAgICAgIEJJVChOTDgwMjExX0NIQU5fV0lEVEhfODApIHxcbiBcdFx0XHQgICAgICAgQklUKE5MODAyMTFfQ0hBTl9XSURUSF8xNjApLFxuLVx0LmJlYWNvbl9pbnRfbWluX2djZCA9IDEwMCxcbiB9O1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2xpbWl0IGlmX2xpbWl0c1tdID0ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTY6MjAuMzEzMzUwODgyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMxMzAzMTE2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNaW5vciBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jYC4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBpdCByZW1vdmVzIGAuYmVhY29uX2ludF9taW5fZ2NkID0gMTAwLGAgZnJvbSB0d28gYHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb25gIHZhcmlhYmxlcywgYGlmX2NvbWJfZ2xvYmFsYCBhbmQgYGlmX2NvbWJfZ2xvYmFsXzc5OTJgLiBGdW5jdGlvbmFsbHksIHRoaXMgdHdlYWtzIGEgY29uc3RyYWludCByZWxhdGVkIHRvIHRoZSBncmVhdGVzdCBjb21tb24gZGl2aXNvciBmb3IgdGhlIGJlYWNvbiBpbnRlcnZhbC4gSXQncyBhIHNtYWxsIGNoYW5nZSwgbm90aGluZyBlYXJ0aC1zaGF0dGVyaW5nLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBUaGlzIGlzIGEgTWVkaWF0ZWsgTVQ3OTk2IHdpcmVsZXNzIGRyaXZlci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGlzIGV2ZW4gYmUgdHJpZ2dlcmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBUaGVzZSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIG9mdGVuIGFyZW4ndCBlYXNpbHkgcmVhY2hhYmxlIHVubGVzcyB0aGVyZSdzIGFuIGVtdWxhdG9yIG9yIGl0J3MgYSBVU0IgZGV2aWNlIHRoYXQgY2FuIGJlIGVtdWxhdGVkIHVzaW5nIGEgZHVtbXkgaG9zdCBjb250cm9sbGVyIG9yIGEgVVNCIGdhZGdldC4gSXQgcmVhbGx5IGRlcGVuZHMgb24gdGhlIGhhcmR3YXJlIGludGVyZmFjZS4gU28sIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGUgTVQ3OTk2IGlzIGEgUENJZSwgVVNCLCBvciBTRElPIGRldmljZS4gVGhhdCdzIHRoZSBjcml0aWNhbCBpbmZvcm1hdGlvbiBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDU1LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTY6MjUuNjI2Mzg0NDU1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjkzNzU3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5OTZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjUxOCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvTWFrZWZpbGUtMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9NYWtlZmlsZTozOm9iai0kKENPTkZJR19NVDc5OTZFKSArPSBtdDc5OTZlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9NYWtlZmlsZS00LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L01ha2VmaWxlOjU6bXQ3OTk2ZS15IDo9IHBjaS5vIGluaXQubyBkbWEubyBlZXByb20ubyBtYWluLm8gbWN1Lm8gbWFjLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L01ha2VmaWxlLTYtXFx0ICAgICBkZWJ1Z2ZzLm8gbW1pby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvTWFrZWZpbGUtNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9NYWtlZmlsZTo4Om10Nzk5NmUtJChDT05GSUdfTVQ3OTk2X05QVSkgKz0gbnB1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9NYWtlZmlsZTo5Om10Nzk5NmUtJChDT05GSUdfREVWX0NPUkVEVU1QKSArPSBjb3JlZHVtcC5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jPTEyPU1PRFVMRV9QQVJNX0RFU0MoY29yZWR1bXBfbWVtZHVtcCwgXFxcIk9wdGlvbmFsIGFiaWxpdHkgdG8gZHVtcCBmaXJtd2FyZSBtZW1vcnlcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5OTZfbWVtX3JlZ2lvbiBtdDc5OTZfbWVtX3JlZ2lvbnNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTE1LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo0Nzpjb25zdCBzdHJ1Y3QgbXQ3OTk2X21lbV9yZWdpb24qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo0ODptdDc5OTZfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgdTMyICpudW0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy00OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTUyLVxcdGNhc2UgTVQ3OTk2X0RFVklDRV9JRF8yOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6NTM6XFx0XFx0Km51bSA9IEFSUkFZX1NJWkUobXQ3OTk2X21lbV9yZWdpb25zKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjU0OlxcdFxcdHJldHVybiBcXHUwMDI2bXQ3OTk2X21lbV9yZWdpb25zWzBdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNTUtXFx0ZGVmYXVsdDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo2MDpzdGF0aWMgaW50IG10Nzk5Nl9jb3JlZHVtcF9nZXRfbWVtX3NpemUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTYxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjYyOlxcdGNvbnN0IHN0cnVjdCBtdDc5OTZfbWVtX3JlZ2lvbiAqbWVtX3JlZ2lvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTYzLVxcdHNpemVfdCBzaXplID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo2NzpcXHRtZW1fcmVnaW9uID0gbXQ3OTk2X2NvcmVkdW1wX2dldF9tZW1fbGF5b3V0KGRldiwgXFx1MDAyNm51bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy02OC1cXHRpZiAoIW1lbV9yZWdpb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTc2LVxcdC8qIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBoZWFkZXJzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo3NzpcXHRzaXplICs9IG51bSAqIHNpemVvZihzdHJ1Y3QgbXQ3OTk2X21lbV9oZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtNzgtXFx0LyogbWFrZSBzdXJlIGl0IGlzIGFsaWduZWQgNCBieXRlcyBmb3IgZGVidWcgbWVzc2FnZSBwcmludCBvdXQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzo4NDpzdHJ1Y3QgbXQ3OTk2X2NyYXNoX2RhdGEgKm10Nzk5Nl9jb3JlZHVtcF9uZXcoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTg1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjg2OlxcdHN0cnVjdCBtdDc5OTZfY3Jhc2hfZGF0YSAqY3Jhc2hfZGF0YSA9IGRldi1cXHUwMDNlY29yZWR1bXAuY3Jhc2hfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYz0xMDA9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjEwMTptdDc5OTZfY29yZWR1bXBfZndfc3RhdGUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IG10Nzk5Nl9jb3JlZHVtcCAqZHVtcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTEwMi1cXHRcXHRcXHQgYm9vbCAqZXhjZXB0aW9uKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYz0xMTc9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjExODptdDc5OTZfY29yZWR1bXBfZndfc3RhY2soc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IG10Nzk5Nl9jb3JlZHVtcCAqZHVtcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTExOS1cXHRcXHRcXHQgYm9vbCBleGNlcHRpb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTE2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjE2MjpzdGF0aWMgc3RydWN0IG10Nzk5Nl9jb3JlZHVtcCAqbXQ3OTk2X2NvcmVkdW1wX2J1aWxkKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0xNjMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MTY0OlxcdHN0cnVjdCBtdDc5OTZfY3Jhc2hfZGF0YSAqY3Jhc2hfZGF0YSA9IGRldi1cXHUwMDNlY29yZWR1bXAuY3Jhc2hfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjE2NTpcXHRzdHJ1Y3QgbXQ3OTk2X2NvcmVkdW1wICpkdW1wO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MTY2OlxcdHN0cnVjdCBtdDc5OTZfY29yZWR1bXBfbWVtICpkdW1wX21lbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTE2Ny1cXHRzaXplX3QgbGVuLCBzb2ZhciA9IDAsIGhkcl9sZW4gPSBzaXplb2YoKmR1bXApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoxODc6XFx0ZHVtcCA9IChzdHJ1Y3QgbXQ3OTk2X2NvcmVkdW1wICopKGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0xODgtXFx0ZHVtcC1cXHUwMDNlbGVuID0gbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoyMDE6XFx0bXQ3OTk2X2NvcmVkdW1wX2Z3X3N0YXRlKGRldiwgZHVtcCwgXFx1MDAyNmV4Y2VwdGlvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoyMDI6XFx0bXQ3OTk2X2NvcmVkdW1wX2Z3X3N0YWNrKGRldiwgZHVtcCwgZXhjZXB0aW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTIwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTIwNC1cXHQvKiBnYXRoZXIgbWVtb3J5IGNvbnRlbnQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjIwNTpcXHRkdW1wX21lbSA9IChzdHJ1Y3QgbXQ3OTk2X2NvcmVkdW1wX21lbSAqKShidWYgKyBzb2Zhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMDYtXFx0ZHVtcF9tZW0tXFx1MDAzZWxlbiA9IGNyYXNoX2RhdGEtXFx1MDAzZW1lbWR1bXBfYnVmX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMjE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MjE2OmludCBtdDc5OTZfY29yZWR1bXBfc3VibWl0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMTcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MjE4OlxcdHN0cnVjdCBtdDc5OTZfY29yZWR1bXAgKmR1bXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoyMjA6XFx0ZHVtcCA9IG10Nzk5Nl9jb3JlZHVtcF9idWlsZChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMjIxLVxcdGlmICghZHVtcCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYzoyMzE6aW50IG10Nzk5Nl9jb3JlZHVtcF9yZWdpc3RlcihzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMjMyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jOjIzMzpcXHRzdHJ1Y3QgbXQ3OTk2X2NyYXNoX2RhdGEgKmNyYXNoX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuYy0yMzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTI0MS1cXHRpZiAoY29yZWR1bXBfbWVtZHVtcCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MjQyOlxcdFxcdGNyYXNoX2RhdGEtXFx1MDAzZW1lbWR1bXBfYnVmX2xlbiA9IG10Nzk5Nl9jb3JlZHVtcF9nZXRfbWVtX3NpemUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTI0My1cXHRcXHRpZiAoIWNyYXNoX2RhdGEtXFx1MDAzZW1lbWR1bXBfYnVmX2xlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmMtMjU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmM6MjU3OnZvaWQgbXQ3OTk2X2NvcmVkdW1wX3VucmVnaXN0ZXIoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5jLTI1OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo3OiNpbmNsdWRlIFxcXCJtdDc5OTYuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo5OnN0cnVjdCBtdDc5OTZfY29yZWR1bXAge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtMTAtXFx0Y2hhciBtYWdpY1sxNl07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NDA6c3RydWN0IG10Nzk5Nl9jb3JlZHVtcF9tZW0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtNDEtXFx0dTMyIGxlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo0NTpzdHJ1Y3QgbXQ3OTk2X21lbV9oZHIge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtNDYtXFx0dTMyIHN0YXJ0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC01MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oOjUxOnN0cnVjdCBtdDc5OTZfbWVtX3JlZ2lvbiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC01Mi1cXHR1MzIgc3RhcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NjA6Y29uc3Qgc3RydWN0IG10Nzk5Nl9tZW1fcmVnaW9uICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oOjYxOm10Nzk5Nl9jb3JlZHVtcF9nZXRfbWVtX2xheW91dChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCB1MzIgKm51bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo2MjpzdHJ1Y3QgbXQ3OTk2X2NyYXNoX2RhdGEgKm10Nzk5Nl9jb3JlZHVtcF9uZXcoc3RydWN0IG10Nzk5Nl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo2MzppbnQgbXQ3OTk2X2NvcmVkdW1wX3N1Ym1pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oOjY0OmludCBtdDc5OTZfY29yZWR1bXBfcmVnaXN0ZXIoc3RydWN0IG10Nzk5Nl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaDo2NTp2b2lkIG10Nzk5Nl9jb3JlZHVtcF91bnJlZ2lzdGVyKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtNjYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6Njk6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgbXQ3OTk2X21lbV9yZWdpb24gKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6NzA6bXQ3OTk2X2NvcmVkdW1wX2dldF9tZW1fbGF5b3V0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHUzMiAqbnVtKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmgtNzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC03NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oOjc1OnN0YXRpYyBpbmxpbmUgaW50IG10Nzk5Nl9jb3JlZHVtcF9zdWJtaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg9ODA9c3RhdGljIGlubGluZSBzdHJ1Y3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oOjgxOm10Nzk5Nl9jcmFzaF9kYXRhICptdDc5OTZfY29yZWR1bXBfbmV3KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC04Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6ODY6c3RhdGljIGlubGluZSBpbnQgbXQ3OTk2X2NvcmVkdW1wX3JlZ2lzdGVyKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC04Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9jb3JlZHVtcC5oLTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2NvcmVkdW1wLmg6OTE6c3RhdGljIGlubGluZSB2b2lkIG10Nzk5Nl9jb3JlZHVtcF91bnJlZ2lzdGVyKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvY29yZWR1bXAuaC05Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNi0jaW5jbHVkZSBcXHUwMDNjbGludXgvcmVsYXkuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NzojaW5jbHVkZSBcXFwibXQ3OTk2LmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTgtI2luY2x1ZGUgXFxcImVlcHJvbS5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTIzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MjQ6bXQ3OTk2X2ltcGxpY2l0X3R4YmZfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTI1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MjY6XFx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTI3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozMzpcXHRyZXR1cm4gbXQ3OTk2X21jdV9zZXRfdHhiZihkZXYsIEJGX0hXX0VOX1VQREFURSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0zNj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM3Om10Nzk5Nl9pbXBsaWNpdF90eGJmX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozOTpcXHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjQ2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2ltcGxpY2l0X3R4YmYsIG10Nzk5Nl9pbXBsaWNpdF90eGJmX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDc6XFx0XFx0XFx0IG10Nzk5Nl9pbXBsaWNpdF90eGJmX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz01MD1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1MTptdDc5OTZfc3lzX3JlY292ZXJ5X3NldChzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy01Mi1cXHRcXHRcXHRzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1NDpcXHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy01NS1cXHRjaGFyIGJ1ZlsxNl0sICpzZXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtOTEtXFx0Y2FzZSBVTklfQ01EX1NFUl9RVUVSWTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6OTI6XFx0XFx0cmV0ID0gbXQ3OTk2X21jdV9zZXRfc2VyKGRldiwgVU5JX0NNRF9TRVJfUVVFUlksIDAsIGJhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05My1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0xMDAtXFx0Y2FzZSBVTklfQ01EX1NFUl9TRVRfUkVDT1ZFUl9MNF9NRFA6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjEwMTpcXHRcXHRyZXQgPSBtdDc5OTZfbWN1X3NldF9zZXIoZGV2LCBVTklfQ01EX1NFUl9TRVQsIEJJVCh2YWwpLCBiYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTAyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoxMDU6XFx0XFx0cmV0ID0gbXQ3OTk2X21jdV9zZXRfc2VyKGRldiwgVU5JX0NNRF9TRVJfVFJJR0dFUiwgdmFsLCBiYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTA2LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTExMS1cXHRcXHRkZXYtXFx1MDAzZXJlY292ZXJ5LnN0YXRlIHw9IE1UX01DVV9DTURfV0RUX01BU0s7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjExMjpcXHRcXHRtdDc5OTZfcmVzZXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTEzLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTExNi1cXHRjYXNlIFVOSV9DTURfU0VSX1NFVF9TWVNURU1fQVNTRVJUOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoxMTc6XFx0XFx0cmV0ID0gbXQ3OTk2X21jdV90cmlnZ2VyX2Fzc2VydChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0xMTgtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0xMjg9c3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MTI5Om10Nzk5Nl9zeXNfcmVjb3ZlcnlfZ2V0KHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTEzMC1cXHRcXHRcXHRzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMTMxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MTMyOlxcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTEzMy1cXHRjaGFyICpidWZmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTIxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MjE1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG10Nzk5Nl9zeXNfcmVjb3Zlcnlfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyMTY6XFx0LndyaXRlID0gbXQ3OTk2X3N5c19yZWNvdmVyeV9zZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjIxNzpcXHQucmVhZCA9IG10Nzk5Nl9zeXNfcmVjb3ZlcnlfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yMTgtXFx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0yMjI9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyMjM6bXQ3OTk2X3JhZGFyX3RyaWdnZXIodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMjI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yMjYtI2RlZmluZSBSQURBUl9CQUNLR1JPVU5EXFx0MlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyMjc6XFx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjIyODpcXHRzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5ID0gbXQ3OTk2X2JhbmRfcGh5KGRldiwgTkw4MDIxMV9CQU5EXzVHSFopO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yMjktXFx0c3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTI0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MjQ4OlxcdHJkZF9pZHggPSBtdDc5OTZfZ2V0X3JkZF9pZHgocGh5LCB2YWwgPT0gUkFEQVJfQkFDS0dST1VORCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTI0OS1cXHRpZiAocmRkX2lkeCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjI1OTpcXHRyZXR1cm4gbXQ3OTk2X21jdV9yZGRfY21kKGRldiwgUkREX1JBREFSX0VNVUxBVEUsIHJkZF9pZHgsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNjAtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTI2Mj1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yYWRhcl90cmlnZ2VyLCBOVUxMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyNjM6XFx0XFx0XFx0IG10Nzk5Nl9yYWRhcl90cmlnZ2VyLCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTI2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9MjY1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MjY2Om10Nzk5Nl9yZGRfbW9uaXRvcihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTI2Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjI2ODpcXHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXFx1MDAzZXByaXZhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0yNjktXFx0c3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmID0gXFx1MDAyNmRldi1cXHUwMDNlcmRkMl9jaGFuZGVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTMxMj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjMxMzptdDc5OTZfZndfZGVidWdfd21fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTMxNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjMxNTpcXHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzE2LVxcdGVudW0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTMzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MzM4OlxcdHJldCA9IG10Nzk5Nl9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV00sIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTMzOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MzUxOlxcdFxcdHJldCA9IG10Nzk5Nl9tY3VfZndfZGJnX2N0cmwoZGV2LCBkZWJ1ZywgdmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzUyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9MzU5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MzYwOm10Nzk5Nl9md19kZWJ1Z193bV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM2MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM2MjpcXHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzYzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MzY5OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX3dtLCBtdDc5OTZfZndfZGVidWdfd21fZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozNzA6XFx0XFx0XFx0IG10Nzk5Nl9md19kZWJ1Z193bV9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0zNzI9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozNzM6bXQ3OTk2X2Z3X2RlYnVnX3dhX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zNzQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozNzU6XFx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM3Ni1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MzgwOlxcdHJldCA9IG10Nzk5Nl9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV0EsIGRldi1cXHUwMDNlZndfZGVidWdfd2EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zODEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM4NDpcXHRyZXR1cm4gbXQ3OTk2X21jdV93YV9jbWQoZGV2LCBNQ1VfV0FfUEFSQU1fQ01EKFNFVCksIE1DVV9XQV9QQVJBTV9QRE1BX1JYLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zODUtXFx0XFx0XFx0XFx0ICEhZGV2LVxcdTAwM2Vmd19kZWJ1Z193YSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9Mzg4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6Mzg5Om10Nzk5Nl9md19kZWJ1Z193YV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM5MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM5MTpcXHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzkyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6Mzk4OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX3dhLCBtdDc5OTZfZndfZGVidWdfd2FfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzozOTk6XFx0XFx0XFx0IG10Nzk5Nl9md19kZWJ1Z193YV9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDAwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTQyNT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjQyNjptdDc5OTZfZndfZGVidWdfYmluX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00Mjcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQzMS1cXHR9O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo0MzI6XFx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQzMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjQ0NDpcXHRyZXR1cm4gbXQ3OTk2X2Z3X2RlYnVnX3dtX3NldChkZXYsIGRldi1cXHUwMDNlZndfZGVidWdfd20pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NDUtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTQ0Nz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjQ0ODptdDc5OTZfZndfZGVidWdfYmluX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDQ5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDUwOlxcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo0NTc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWdfYmluLCBtdDc5OTZfZndfZGVidWdfYmluX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDU4OlxcdFxcdFxcdCBtdDc5OTZfZndfZGVidWdfYmluX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTQ2MD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjQ2MTptdDc5OTZfZndfdXRpbF93YV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDYyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDYzOlxcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ2NS1cXHRpZiAoZGV2LVxcdTAwM2Vmd19kZWJ1Z193YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDY2OlxcdFxcdHJldHVybiBtdDc5OTZfbWN1X3dhX2NtZChkZXYsIE1DVV9XQV9QQVJBTV9DTUQoUVVFUlkpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NjctXFx0XFx0XFx0XFx0XFx0IE1DVV9XQV9QQVJBTV9DUFVfVVRJTCwgMCwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo0NzI6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10Nzk5Nl9md191dGlsX3dhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz00NzQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDc1Om10Nzk5Nl9hbXBkdV9zdGF0X3JlYWRfcGh5KHN0cnVjdCBtdDc5OTZfcGh5ICpwaHksIHN0cnVjdCBzZXFfZmlsZSAqZmlsZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDc2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDc3OlxcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDc4LVxcdGludCBib3VuZFsxNV0sIHJhbmdlWzhdLCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTUwND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1MDU6bXQ3OTk2X3R4YmZfc3RhdF9yZWFkX3BoeShzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5LCBzdHJ1Y3Qgc2VxX2ZpbGUgKnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTUwNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9NTUyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjU1MzptdDc5OTZfdHhfc3RhdHNfc2hvd19waHkoc3RydWN0IHNlcV9maWxlICpmaWxlLCBzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy01NTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTU1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NTU5OlxcdG10Nzk5Nl9tYWNfdXBkYXRlX3N0YXRzKHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjU2MDpcXHRtdDc5OTZfYW1wZHVfc3RhdF9yZWFkX3BoeShwaHksIGZpbGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy01NjEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1Njk6XFx0bXQ3OTk2X3R4YmZfc3RhdF9yZWFkX3BoeShwaHksIGZpbGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy01NzAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9NTg0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NTg1Om10Nzk5Nl90eF9zdGF0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTg2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NTg3OlxcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1ODg6XFx0c3RydWN0IG10Nzk5Nl9waHkgKnBoeSA9IFxcdTAwMjZkZXYtXFx1MDAzZXBoeTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTg5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTU5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NTkyOlxcdG10Nzk5Nl90eF9zdGF0c19zaG93X3BoeShmaWxlLCBwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1OTM6XFx0cGh5ID0gbXQ3OTk2X3BoeTIoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNTk0LVxcdGlmIChwaHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjU5NTpcXHRcXHRtdDc5OTZfdHhfc3RhdHNfc2hvd19waHkoZmlsZSwgcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NTk2OlxcdHBoeSA9IG10Nzk5Nl9waHkzKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTU5Ny1cXHRpZiAocGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo1OTg6XFx0XFx0bXQ3OTk2X3R4X3N0YXRzX3Nob3dfcGh5KGZpbGUsIHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTU5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjYwNTpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3OTk2X3R4X3N0YXRzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNjA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz02MDc9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjA4Om10Nzk5Nl9od19xdWV1ZV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdTMyIHNpemUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTYwOS1cXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBod19xdWV1ZV9tYXAgKm1hcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNjEwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjExOlxcdHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo2MTI6XFx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02MTMtXFx0dTMyIGksIHZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz02Mzg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjM5Om10Nzk5Nl9zdGFfaHdfcXVldWVfcmVhZCh2b2lkICpkYXRhLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02NDAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo2NDE6XFx0c3RydWN0IG10Nzk5Nl9zdGEgKm1zdGEgPSAoc3RydWN0IG10Nzk5Nl9zdGEgKilzdGEtXFx1MDAzZWRydl9wcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo2NDI6XFx0c3RydWN0IG10Nzk5Nl92aWYgKm12aWYgPSBtc3RhLVxcdTAwM2V2aWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjY0MzpcXHRzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5ID0gbXQ3OTk2X3ZpZl9saW5rX3BoeShcXHUwMDI2bXZpZi1cXHUwMDNlZGVmbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTY0NC1cXHRzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfc3RhICpsaW5rX3N0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02NDYtXFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjQ3OlxcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTY0OC1cXHR1bnNpZ25lZCBpbnQgbGlua19pZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02NTgtXFx0Zm9yX2VhY2hfc3RhX2FjdGl2ZV9saW5rKHZpZiwgc3RhLCBsaW5rX3N0YSwgbGlua19pZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo2NTk6XFx0XFx0c3RydWN0IG10Nzk5Nl9zdGFfbGluayAqbXN0YV9saW5rO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02NjAtXFx0XFx0c3RydWN0IG10NzZfdmlmX2xpbmsgKm1saW5rO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTY2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NjY3OlxcdFxcdG1zdGFfbGluayA9IG10Nzk5Nl9zdGFfbGluayhtc3RhLCBsaW5rX2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNjY4LVxcdFxcdGlmICghbXN0YV9saW5rKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTY5ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjY5NTptdDc5OTZfaHdfcXVldWVzX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02OTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo2OTc6XFx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGZpbGUtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjY5ODpcXHRzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5ID0gXFx1MDAyNmRldi1cXHUwMDNlcGh5O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy02OTktXFx0c3RhdGljIGNvbnN0IHN0cnVjdCBod19xdWV1ZV9tYXAgcGxlX3F1ZXVlX21hcFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTc0Ny1cXHRzZXFfcHV0cyhmaWxlLCBcXFwiUExFIG5vbi1lbXB0eSBxdWV1ZSBpbmZvOlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc0ODpcXHRtdDc5OTZfaHdfcXVldWVfcmVhZChmaWxlLCBBUlJBWV9TSVpFKHBsZV9xdWV1ZV9tYXApLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NDktXFx0XFx0XFx0ICAgICBcXHUwMDI2cGxlX3F1ZXVlX21hcFswXSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzUyLVxcdGllZWU4MDIxMV9pdGVyYXRlX3N0YXRpb25zX2F0b21pYyhwaHktXFx1MDAzZW10NzYtXFx1MDAzZWh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo3NTM6XFx0XFx0XFx0XFx0XFx0ICBtdDc5OTZfc3RhX2h3X3F1ZXVlX3JlYWQsIGZpbGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo3NTQ6XFx0cGh5ID0gbXQ3OTk2X3BoeTIoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzU1LVxcdGlmIChwaHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTc1Ni1cXHRcXHRpZWVlODAyMTFfaXRlcmF0ZV9zdGF0aW9uc19hdG9taWMocGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NzU3OlxcdFxcdFxcdFxcdFxcdFxcdCAgbXQ3OTk2X3N0YV9od19xdWV1ZV9yZWFkLCBmaWxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NzU4OlxcdHBoeSA9IG10Nzk5Nl9waHkzKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTc1OS1cXHRpZiAocGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NjAtXFx0XFx0aWVlZTgwMjExX2l0ZXJhdGVfc3RhdGlvbnNfYXRvbWljKHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc2MTpcXHRcXHRcXHRcXHRcXHRcXHQgIG10Nzk5Nl9zdGFfaHdfcXVldWVfcmVhZCwgZmlsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTc2Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NjQtXFx0c2VxX3B1dHMoZmlsZSwgXFxcIlBTRSBub24tZW1wdHkgcXVldWUgaW5mbzpcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo3NjU6XFx0bXQ3OTk2X2h3X3F1ZXVlX3JlYWQoZmlsZSwgQVJSQVlfU0laRShwc2VfcXVldWVfbWFwKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzY2LVxcdFxcdFxcdCAgICAgXFx1MDAyNnBzZV9xdWV1ZV9tYXBbMF0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTc3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NzcxOkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5OTZfaHdfcXVldWVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNzcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz03NzM9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo3NzQ6bXQ3OTk2X3htaXRfcXVldWVzX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NzUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo3NzY6XFx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldiA9IGZpbGUtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc3NzpcXHRzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03NzgtXFx0c3RydWN0IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03OTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc5MTpcXHRwaHkgPSBtdDc5OTZfcGh5MihkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03OTItXFx0aWYgKHBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03OTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjc5NTpcXHRwaHkgPSBtdDc5OTZfcGh5MyhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy03OTYtXFx0aWYgKHBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjgxNDpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3OTk2X3htaXRfcXVldWVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz04MTY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4MTc6bXQ3OTk2X3R3dF9zdGF0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTgxOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjgxOTpcXHRzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXFx1MDAzZXByaXZhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4MjA6XFx0c3RydWN0IG10Nzk5Nl90d3RfZmxvdyAqaXRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODIxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTg0NT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg0NjptdDc5OTZfcmZfcmVndmFsX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODQ3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODQ4OlxcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NDktXFx0dTMyIHJlZ3ZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg1MjpcXHRyZXQgPSBtdDc5OTZfbWN1X3JmX3JlZ3ZhbChkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXFx1MDAyNnJlZ3ZhbCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz04NjE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4NjI6bXQ3OTk2X3JmX3JlZ3ZhbF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODYzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODY0OlxcdHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NjUtXFx0dTMyIHZhbDMyID0gdmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg2NzpcXHRyZXR1cm4gbXQ3OTk2X21jdV9yZl9yZWd2YWwoZGV2LCBkZXYtXFx1MDAzZW10NzYuZGVidWdmc19yZWcsIFxcdTAwMjZ2YWwzMiwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg2OC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODcwOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JmX3JlZ3ZhbCwgbXQ3OTk2X3JmX3JlZ3ZhbF9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg3MTpcXHRcXHRcXHQgbXQ3OTk2X3JmX3JlZ3ZhbF9zZXQsIFxcXCIweCUwOGxseFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODczOmludCBtdDc5OTZfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg3NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODc5LVxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcImh3LXF1ZXVlc1xcXCIsIDA0MDAsIGRpciwgZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4ODA6XFx0XFx0XFx0ICAgIFxcdTAwMjZtdDc5OTZfaHdfcXVldWVzX2ZvcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04ODEtXFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwieG1pdC1xdWV1ZXNcXFwiLCAwNDAwLCBkaXIsIGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODgyOlxcdFxcdFxcdCAgICBcXHUwMDI2bXQ3OTk2X3htaXRfcXVldWVzX2ZvcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4ODM6XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwidHhfc3RhdHNcXFwiLCAwNDAwLCBkaXIsIGRldiwgXFx1MDAyNm10Nzk5Nl90eF9zdGF0c19mb3BzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODg0LVxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInN5c19yZWNvdmVyeVxcXCIsIDA2MDAsIGRpciwgZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4ODU6XFx0XFx0XFx0ICAgIFxcdTAwMjZtdDc5OTZfc3lzX3JlY292ZXJ5X29wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg4Ni1cXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJmd19kZWJ1Z193bVxcXCIsIDA2MDAsIGRpciwgZGV2LCBcXHUwMDI2Zm9wc19md19kZWJ1Z193bSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODkwLVxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcImZ3X3V0aWxfd2FcXFwiLCAwNDAwLCBkaXIsIGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6ODkxOlxcdFxcdFxcdCAgICBcXHUwMDI2bXQ3OTk2X2Z3X3V0aWxfd2FfZm9wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg5Mi1cXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJpbXBsaWNpdF90eGJmXFxcIiwgMDYwMCwgZGlyLCBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODk0LVxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwidHd0X3N0YXRzXFxcIiwgZGlyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4OTU6XFx0XFx0XFx0XFx0ICAgIG10Nzk5Nl90d3Rfc3RhdHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04OTYtXFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwicmZfcmVndmFsXFxcIiwgMDYwMCwgZGlyLCBkZXYsIFxcdTAwMjZmb3BzX3JmX3JlZ3ZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtOTAxLVxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwicmRkX21vbml0b3JcXFwiLCBkaXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjkwMjpcXHRcXHRcXHRcXHQgICAgbXQ3OTk2X3JkZF9tb25pdG9yKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtOTAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTkwOT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo5MTA6bXQ3OTk2X2RlYnVnZnNfd3JpdGVfZndsb2coc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgY29uc3Qgdm9pZCAqaGRyLCBpbnQgaGRybGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05MTEtXFx0XFx0XFx0ICAgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjkzNDp2b2lkIG10Nzk5Nl9kZWJ1Z2ZzX3J4X2Z3X21vbml0b3Ioc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtOTM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05NTUtXFx0aGRyLmxlbiA9ICooX19sZTE2ICopZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6OTU2OlxcdG10Nzk5Nl9kZWJ1Z2ZzX3dyaXRlX2Z3bG9nKGRldiwgXFx1MDAyNmhkciwgc2l6ZW9mKGhkciksIGRhdGEsIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTk1Ny19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTk1OC1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTY6MjUuNzYzMzI4Nzc4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI3MzAyNzg2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyB0aGUgTVQ3OTk2RSBEcml2ZXIgaW4gYSBGdXp6aW5nIEVudmlyb25tZW50KipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBhY3R1YWxseSBnZXQgYXQgdGhpcyBgbXQ3OTk2ZWAgKFBDSWUpIGFuZCBgbXQ3OTk2X25wdWAgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNvbnNpZGVyIHZpcnR1YWxpemF0aW9uIOKAkyBhcmUgd2UgYWJsZSB0byBnZXQgdG8gaXQgaW4gc29tZXRoaW5nIGxpa2UgUUVNVT8gQnV0IHRoZW4gSSByZW1lbWJlciBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCwgd2hpbGUgdXNlZnVsIGZvciBzaW11bGF0aW5nIG1hYzgwMjExIGRldmljZXMsIGlzbid0IGdvaW5nIHRvIGdldCBtZSBhICpzcGVjaWZpYyogTWVkaWF0ZWsgUENJZSBkZXZpY2UgbGlrZSB0aGlzLiBVbmxlc3MgdGhlcmUncyBhIHNwZWNpYWxpemVkIE1lZGlhdGVrIE1UNzk5NiBlbXVsYXRvciBvdXQgdGhlcmUsIGl0IGxvb2tzIGxpa2UgdGhhdCdzIGEgZGVhZCBlbmQgaW4gUUVNVS5cblxuTmV4dCwgSSBuZWVkIHRvIGludmVzdGlnYXRlIFBDSSBlbXVsYXRpb24uIENhbiB3ZSBsZXZlcmFnZSB0aGF0IGZvciB0aGlzIGRldmljZT8gVXN1YWxseSwgSSdkIGxlYW4gb24gc29tZXRoaW5nIGxpa2Ugc3l6a2FsbGVyJ3MgZ2VuZXJpYyBQQ0kgZnV6emVyLCBidXQgdGhhdCB1c3VhbGx5IG5lZWRzIHRoZSBkcml2ZXIgdG8gYmUgYWxyZWFkeSBsb2FkZWQgYW5kIHByb2JlZC4gVGhlbiBpdCBoaXRzIG1l4oCUc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgUENJIGZ1enplciEgSXQgY2FuIGVtdWxhdGUgUENJIGRldmljZXMgYW5kIHRyaWdnZXIgdGhlaXIgcHJvYmUgZnVuY3Rpb25zLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSBuZWVkLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gY2hlY2sgaWYgYENPTkZJR19NVDc5OTZFYCBpcyBlbmFibGVkIG9yIGF0IGxlYXN0IGNvbmZpZ3VyYWJsZS4gSWYgc3l6a2FsbGVyIGNhbiBpbmRlZWQgZnV6eiBQQ0kgZGV2aWNlcyBhbmQgdHJpZ2dlciBwcm9iaW5nLCB0aGlzIGRyaXZlciBtaWdodCBhY3R1YWxseSBiZSByZWFjaGFibGUuIEhvd2V2ZXIsIEkgaGF2ZSB0byBiZSByZWFsaXN0aWMgaGVyZS4gU3l6a2FsbGVyJ3MgUENJIGZ1enplciBpcyBrbm93biB0byBiZSByZWxhdGl2ZWx5IGJhc2ljLCBhbmQgbGlrZWx5IHRvIHByaW1hcmlseSBoaXQgdGhlIHByb2JlL2luaXQgcGF0aHMsIHdoaWNoIGFyZSBncmVhdCB0byBzdGFydCB3aXRoLCBidXQgbWF5IG5vdCBjb3ZlciBldmVyeXRoaW5nLiBTbyBub3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayB3aGVyZSB0aGlzIHBhdGNoIGluIHF1ZXN0aW9uIGlzLCBhbmQgbG9vayBhdCB0aGUgYGluaXQuY2AgZmlsZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MTkzOTEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTY6MzIuMDM2MzU5MDQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2NjQ5NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlmX2NvbWJfZ2xvYmFsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9MTc9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfbGltaXQgaWZfbGltaXRzX2dsb2JhbCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0yNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6Mjc6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gaWZfY29tYl9nbG9iYWwgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTI4LVxcdC5saW1pdHMgPSBcXHUwMDI2aWZfbGltaXRzX2dsb2JhbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6Mzk6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gaWZfY29tYl9nbG9iYWxfNzk5MiA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNDAtXFx0LmxpbWl0cyA9IFxcdTAwMjZpZl9saW1pdHNfZ2xvYmFsLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTQ3Nj1tdDc5OTZfaW5pdF93aXBoeShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNTAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo1MDE6XFx0d2lwaHktXFx1MDAzZWlmYWNlX2NvbWJpbmF0aW9ucyA9IGlzX210Nzk5NihcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA/IFxcdTAwMjZpZl9jb21iX2dsb2JhbCA6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjUwMjpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmlmX2NvbWJfZ2xvYmFsXzc5OTI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTUwMy1cXHR3aXBoeS1cXHUwMDNlbl9pZmFjZV9jb21iaW5hdGlvbnMgPSAxO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNToxNjozMi4xMzMwMTc5MTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5ODA5NTQzNTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBSZW1vdmluZyBhIENvbmZpZ3VyYXRpb24gQ29uc3RyYWludCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIHJlbW92aW5nIGAuYmVhY29uX2ludF9taW5fZ2NkID0gMTAwLGAgZnJvbSB0aGUgYGlmX2NvbWJfZ2xvYmFsYCBhbmQgYGlmX2NvbWJfZ2xvYmFsXzc5OTJgIHN0cnVjdHMgaW4gdGhlIGB3aXBoeWAgaW50ZXJmYWNlIGNvbWJpbmF0aW9ucy4gSXQncyBqdXN0IGEgc3RhdGljIGNvbmZpZ3VyYXRpb24gY2hhbmdlLCBlc3NlbnRpYWxseSByZW1vdmluZyBhIGNvbnN0cmFpbnQgb24gYmVhY29uIGludGVydmFscy4gTXkgZmlyc3QgdGhvdWdodCBpcywgXCJJcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz9cIlxuXG5JdCdzIGVzc2VudGlhbGx5IGEgZGF0YSBzdHJ1Y3R1cmUgbW9kaWZpY2F0aW9uLiBObyBuZXcgbG9naWMgaXMgYmVpbmcgaW50cm9kdWNlZDsgdGhlIHBhdGNoIGp1c3QgcmVsYXhlcyBhIGNvbnN0cmFpbnQgd2l0aGluIHRoZSBtYWM4MDIxMSBsYXllciB3aGVuIGl0IGNyZWF0ZXMgaW50ZXJmYWNlcy4gVGhhdCByZWxheGF0aW9uIG1lYW5zIHdlICptaWdodCogYmUgYWJsZSB0byBjcmVhdGUgaW50ZXJmYWNlcyB3aXRoIGJlYWNvbiBpbnRlcnZhbHMgdGhhdCB3ZXJlbid0IG11bHRpcGxlcyBvZiAxMDAgYmVmb3JlLCBidXQgaXQncyBzcGVjaWZpY2FsbHkgdGllZCB0byB0aGUgTVQ3OTk2IGRyaXZlci5cblxuVGhlIGJpZyBxdWVzdGlvbiBpcyB3aGV0aGVyIHdlIGNhbiBldmVuICpyZWFjaCogdGhpcyBpbiBhIHR5cGljYWwgUUVNVSBlbnZpcm9ubWVudC4gVW5sZXNzIHdlIGdldCBleHRyZW1lbHkgbHVja3ksIG9yIHVzZSBhIFBDSSBmdXp6ZXIsIEknbSB0aGlua2luZyB0aGUgZHJpdmVyIGlzbid0IGZ1bGx5IGFjY2Vzc2libGUuIFdlIGhhdmUgdG8gY29uc2lkZXIgd2hldGhlciB0aGUgY2hhbmdlIGlzIHNpZ25pZmljYW50IGVub3VnaCB0byB3YXJyYW50IGZ1enppbmcgaWYgdGhlIGRyaXZlciBpcyBub3QgZWFzaWx5IHJlYWNoZWQuIFdlIGNvdWxkIHJlYWNoIGBwcm9iZWAsIGJ1dCBpdCdzIGhpZ2hseSBsaWtlbHkgdGhhdCBmaXJtd2FyZSBsb2FkaW5nIG9yIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHdpbGwgZmFpbCBiZWZvcmUgd2UgY2FuIGdldCB0byB0aGUgY29yZSBsb2dpYy4gVGhlcmUncyBhbHNvIHRoZSBxdWVzdGlvbiBvZiB3aGV0aGVyIHRoaXMgbWlub3IgY29uZmlnIGNoYW5nZSBoYXMgKmFueSogaW1wYWN0IG9uIGV4aXN0aW5nIGNvZGUuXG5cbkkgbmVlZCB0byB0aGluayBhYm91dCB3aGVyZSBgYmVhY29uX2ludF9taW5fZ2NkYCBpcyB1c2VkLiBJIHJlbWVtYmVyIGl0J3MgcGFydCBvZiBtYWM4MDIxMSdzIGludGVyZmFjZSB2YWxpZGF0aW9uLiBTaW5jZSB0aGlzIGlzIGhhcmR3YXJlLXNwZWNpZmljLCBhbmQgdGhlIGNoYW5nZSBpcyB0cml2aWFsIChqdXN0IHJlbW92aW5nIGEgY29uc3RyYWludCksIGl0J3MgcHJvYmFibHkgKm5vdCogd29ydGggZnV6emluZywgb3IgaWYgaXQgaXMsIHRoZSBmdXp6aW5nIGlzIG1vcmUgZm9jdXNlZCBvbiBjb25maWcgY2hhbmdlcywgYW5kIG5vdCBvbiBjb3JlIGxvZ2ljLlxuXG5MZXQncyByZWZlciBiYWNrIHRvIHRob3NlIGd1aWRlbGluZXMuIEl0IHN1Z2dlc3RzIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24ndCBhbHRlciBleGVjdXRpb24gZmxvdywgb3IgaWYgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gQW5kIGl0IGxvb2tzIGxpa2UgTVQ3OTk2IHJlbGllcyBvbiBhIHBoeXNpY2FsIFBDSWUgY2FyZCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBjb2RlIHBhdGhzIGxpa2VseSB1bnJlYWNoYWJsZSBpbiBRRU1VLiBFdmVuIHdpdGggYSBQQ0kgZnV6emVyLCB3ZSBwcm9iYWJseSB3b24ndCBnZXQgcGFzdCB0aGUgcHJvYmUgc3RhZ2UgZHVlIHRvIHRoZSBmaXJtd2FyZSBvciBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBmYWlsaW5nIHdpdGhvdXQgdGhlIHJlYWwgaGFyZHdhcmUuIGBtdDc5OTZfaW5pdF93aXBoeWAgaXMgY2FsbGVkIGZyb20gYG10Nzk5Nl9yZWdpc3Rlcl9leHRfcGh5YCBvciBgbXQ3OTk2X3JlZ2lzdGVyX3BoeWAsIGJ1dCB0aGF0IHdvbid0IHJ1bi5cblxuVGhlcmVmb3JlLCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UgYW5kIHRoZSBsaW1pdGF0aW9ucyBvZiBRRU1VIGFjY2VzcyB0byB0aGlzIHNwZWNpZmljIGhhcmR3YXJlLCBteSBpbnN0aW5jdCBpcyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0J3MgYSBjb25maWcgY2hhbmdlLCBhbmQgbm90IGEgY3JpdGljYWwgb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDU4NSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNToxNjo0MS45NDI1NjM3M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU1MjY4NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTk2X2luaXRfd2lwaHlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz00MTU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6NDE2Om10Nzk5Nl9pbml0X3dpcGh5X2JhbmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTQxNy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9NDc1PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjQ3NjptdDc5OTZfaW5pdF93aXBoeShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTQ3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo1NTI6XFx0bXQ3OTk2X2luaXRfd2lwaHlfYmFuZChodywgXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNTUzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz02ODA9c3RhdGljIGludCBtdDc5OTZfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9iYW5kX2lkIGJhbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNzMxLVxcdC8qIGluaXQgd2lwaHkgYWNjb3JkaW5nIHRvIG1waHkgYW5kIHBoeSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo3MzI6XFx0bXQ3OTk2X2luaXRfd2lwaHlfYmFuZChtcGh5LVxcdTAwM2VodywgcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNzMzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTE3Mjk9aW50IG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xNzUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxNzUyOlxcdG10Nzk5Nl9pbml0X3dpcGh5KGh3LCBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTc1My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTY6NDIuMDc4MDk2NjczWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2NjM0MjkxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkludmVzdGlnYXRpbmcgYG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2VgIENhbGxlcnMqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyBhbmQgc3BlY2lmaWNhbGx5LCB0byBpZGVudGlmeSB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCBgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZWAuIFRoaXMgaXMgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCB3aGVuIHJldmVyc2UgZW5naW5lZXJpbmcgb3IgZGVidWdnaW5nIGRyaXZlciBjb2RlLCBiZWNhdXNlIHVuZGVyc3RhbmRpbmcgKmhvdyogdGhlIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQgaXMgY3J1Y2lhbC4gVGhpcyB3aWxsIGhlbHAgbWUgZ3Jhc3AgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBicm9hZGVyIGRyaXZlciBhcmNoaXRlY3R1cmUgYW5kIGlkZW50aWZ5IHBvdGVudGlhbCBpc3N1ZXMgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbi4gVGhpcyB3aWxsIGJlIHRoZSBmaXJzdCB0aGluZyBJIGRvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjUxMiwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE1OjE2OjQ1LjM0NDQ0MjgzMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwNDEwNTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz0xNzE0PXZvaWQgbXQ3OTk2X3NldF9zdHJlYW1faGVfZWh0X2NhcHMoc3RydWN0IG10Nzk5Nl9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xNzI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxNzI5OmludCBtdDc5OTZfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTE3MzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg9Njc3PXU2NCBfX210Nzk5Nl9nZXRfdHNmKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgbXQ3OTk2X3ZpZl9saW5rICpsaW5rKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaDo2Nzg6aW50IG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2LmgtNjc5LXZvaWQgbXQ3OTk2X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM9OTk9c3RhdGljIGludCBtdDc5OTZfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jOjE5NTpcXHRyZXQgPSBtdDc5OTZfcmVnaXN0ZXJfZGV2aWNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMTk2LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE1OjE2OjQ1LjQ3NDg1ODQzNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDcwNzUzNDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBzbmlwcGV0LCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgd2VsbC12ZXJzZWQgaW4gdGhpcyBraW5kIG9mIGRyaXZlciBhbmFseXNpczpcblxuKipEZWx2aW5nIGludG8gdGhlIGBtdDc5OTZfcGNpX3Byb2JlYCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBjYWxsc3RhY2sgcG9pbnRzIHRvIGBtdDc5OTZfcGNpX3Byb2JlYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgc3RhcnRzLCB0aGUgaW5pdGlhbCBzZXR1cCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGRldmljZSBvbiBhIFBDSSBidXMuIEkga25vdyB0aGUgZHJpbGwsIHR5cGljYWxseSwgdGhlcmUncyBhIHNlcXVlbmNlIG9mIGluaXRpYWxpemF0aW9uIHN0ZXBzIGJlZm9yZSB0aGUgY29yZSBkcml2ZXIgZnVuY3Rpb25hbGl0eSBraWNrcyBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGZsb3cgdG8gcHJvcGVybHkgZ2V0IHRoaXMgY2hpcCB0byB3b3JrLlxuXG5NeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgbGlrZWx5IHRoZSBmaXJtd2FyZSBsb2FkaW5nIHNlcXVlbmNlIHdpdGhpbiB0aGlzIGBtdDc5OTZfcGNpX3Byb2JlYCBmdW5jdGlvbi4gSSBoYXZlIGEgZmVlbGluZyB0aGUgZHJpdmVyIHdpbGwgbmVlZCBzb21lIGZpcm13YXJlIHRvIGxvYWQsIGl0IHdpbGwgYmUgdGhlIGhlYXJ0IG9mIGl0cyBvcGVyYXRpb24sIG9yIGF0IGxlYXN0IGEgbWFqb3IgcGFydC4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBwb2ludCB3aGVyZSBpdCBkZXRlcm1pbmVzIHdoZXRoZXIgZmlybXdhcmUgaXMgbmVlZGVkLCBhbmQgdGhlbiBob3cgaXQgbG9hZHMgaXQuIFRoYXQncyBhbHdheXMgYSBrZXkgYXJlYSB0byBzY3J1dGluaXplLiBLbm93aW5nIHRoaXMsIEkgY2FuIHN0YXJ0IHRvIG1hcCBvdXQgaG93IHRoZSB3aG9sZSB0aGluZyB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMyMjgsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNToxNjo0OS41NDU2MTQzMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI0MDA3NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTk2X3BjaV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM9Nzk9c3RhdGljIGludCBtdDc5OTZfcGNpX2hpZjJfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYy05OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYzo5OTpzdGF0aWMgaW50IG10Nzk5Nl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMTAwLVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYz0yNDQ9c3RydWN0IHBjaV9kcml2ZXIgbXQ3OTk2X2hpZl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYy0yNDYtXFx0LmlkX3RhYmxlXFx0PSBtdDc5OTZfaGlmX2RldmljZV90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYzoyNDc6XFx0LnByb2JlXFx0XFx0PSBtdDc5OTZfcGNpX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTI0OC1cXHQucmVtb3ZlXFx0XFx0PSBtdDc5OTZfaGlmX3JlbW92ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jPTI1MT1zdHJ1Y3QgcGNpX2RyaXZlciBtdDc5OTZfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTI1My1cXHQuaWRfdGFibGVcXHQ9IG10Nzk5Nl9wY2lfZGV2aWNlX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jOjI1NDpcXHQucHJvYmVcXHRcXHQ9IG10Nzk5Nl9wY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjU1LVxcdC5yZW1vdmVcXHRcXHQ9IG10Nzk5Nl9wY2lfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNToxNjo0OS42MTgwMjA4OTVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkwMjk4ODY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIGBtdDc5OTZfcGNpX3Byb2JlYCBmb3IgRnV6emluZyBSZXNpbGllbmNlKipcblxuQWxyaWdodCwgYmVmb3JlIEkgdW5sZWFzaCB0aGUgZnV6emVycyBvbiB0aGlzLCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0J3MgZ29pbmcgb24gaW5zaWRlIGBtdDc5OTZfcGNpX3Byb2JlYC4gTXkgcHJpbWFyeSBjb25jZXJuIGlzLCBvZiBjb3Vyc2UsIGlkZW50aWZ5aW5nIHBvdGVudGlhbCBwaXRmYWxscyBmb3IgYSBmdXp6aW5nIGNhbXBhaWduLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgcHJvYmUgZnVuY3Rpb24gaXMgZ29pbmcgdG8gdHJ5IHRvIGxvYWQgZmlybXdhcmUsIG9yIGF0dGVtcHQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgaGFyZHdhcmUgaW4gYSB3YXkgdGhhdOKAmXMgZ29pbmcgdG8gdHJpcCBpdCB1cCBpbiBhIGZ1enplZCBlbnZpcm9ubWVudC4gV2UgYWxsIGtub3cgaG93IHF1aWNrbHkgdGhhdCBjYW4gZGVyYWlsIGEgZnV6emluZyBzZXNzaW9uISBMZXQncyBnZXQgcmVhZGluZyBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyB0aGluZ3MgdGhhdCdsbCBjYXVzZSBhbiBpc3N1ZS4gR290dGEgZW5zdXJlIHRoZSBmdXp6aW5nIHNlc3Npb24gd2lsbCBiZSBzdGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MTMwLCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTY6NTMuNTIxMDEzMjE1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA5OSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTk6XFx0c3RhdGljIGludCBtdDc5OTZfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiAxMDA6XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4gMTAxOlxcdHtcXG4gMTAyOlxcdFxcdHN0cnVjdCBwY2lfZGV2ICpoaWYyX2RldjtcXG4gMTAzOlxcdFxcdHN0cnVjdCBtdDc5OTZfaGlmICpoaWYyO1xcbiAxMDQ6XFx0XFx0c3RydWN0IG10Nzk5Nl9kZXYgKmRldjtcXG4gMTA1OlxcdFxcdGludCBpcnEsIGhpZjJfaXJxLCByZXQ7XFxuIDEwNjpcXHRcXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXY7XFxuIDEwNzpcXHRcXG4gMTA4OlxcdFxcdHJldCA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcXG4gMTA5OlxcdFxcdGlmIChyZXQpXFxuIDExMDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAxMTE6XFx0XFxuIDExMjpcXHRcXHRyZXQgPSBwY2ltX2lvbWFwX3JlZ2lvbnMocGRldiwgQklUKDApLCBwY2lfbmFtZShwZGV2KSk7XFxuIDExMzpcXHRcXHRpZiAocmV0KVxcbiAxMTQ6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMTE1OlxcdFxcbiAxMTY6XFx0XFx0cGNpX3NldF9tYXN0ZXIocGRldik7XFxuIDExNzpcXHRcXG4gMTE4OlxcdFxcdHJldCA9IGRtYV9zZXRfbWFzayhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBETUFfQklUX01BU0soMzYpKTtcXG4gMTE5OlxcdFxcdGlmIChyZXQpXFxuIDEyMDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAxMjE6XFx0XFxuIDEyMjpcXHRcXHRyZXQgPSBkbWFfc2V0X2NvaGVyZW50X21hc2soXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDMyKSk7XFxuIDEyMzpcXHRcXHRpZiAocmV0KVxcbiAxMjQ6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMTI1OlxcdFxcbiAxMjY6XFx0XFx0bXQ3Nl9wY2lfZGlzYWJsZV9hc3BtKHBkZXYpO1xcbiAxMjc6XFx0XFxuIDEyODpcXHRcXHRpZiAoaWQtXFx1MDAzZWRldmljZSA9PSBNVDc5OTZfREVWSUNFX0lEXzIgfHxcXG4gMTI5OlxcdFxcdCAgICBpZC1cXHUwMDNlZGV2aWNlID09IE1UNzk5Ml9ERVZJQ0VfSURfMiB8fFxcbiAxMzA6XFx0XFx0ICAgIGlkLVxcdTAwM2VkZXZpY2UgPT0gTVQ3OTkwX0RFVklDRV9JRF8yKVxcbiAxMzE6XFx0XFx0XFx0cmV0dXJuIG10Nzk5Nl9wY2lfaGlmMl9wcm9iZShwZGV2KTtcXG4gMTMyOlxcdFxcbiAxMzM6XFx0XFx0ZGV2ID0gbXQ3OTk2X21taW9fcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGNpbV9pb21hcF90YWJsZShwZGV2KVswXSxcXG4gMTM0OlxcdFxcdFxcdFxcdFxcdGlkLVxcdTAwM2VkZXZpY2UpO1xcbiAxMzU6XFx0XFx0aWYgKElTX0VSUihkZXYpKVxcbiAxMzY6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIoZGV2KTtcXG4gMTM3OlxcdFxcbiAxMzg6XFx0XFx0bWRldiA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzY7XFxuIDEzOTpcXHRcXHRtdDc5OTZfd2ZzeXNfcmVzZXQoZGV2KTtcXG4gMTQwOlxcdFxcdGhpZjIgPSBtdDc5OTZfcGNpX2luaXRfaGlmMihwZGV2KTtcXG4gMTQxOlxcdFxcdGRldi1cXHUwMDNlaGlmMiA9IGhpZjI7XFxuIDE0MjpcXHRcXG4gMTQzOlxcdFxcdG10NzZfbnB1X2luaXQobWRldiwgcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIDApLFxcbiAxNDQ6XFx0XFx0XFx0ICAgICAgcGNpX2RvbWFpbl9ucihwZGV2LVxcdTAwM2VidXMpID8gMyA6IDIpO1xcbiAxNDU6XFx0XFxuIDE0NjpcXHRcXHRyZXQgPSBtdDc5OTZfbW1pb193ZWRfaW5pdChkZXYsIHBkZXYsIGZhbHNlLCBcXHUwMDI2aXJxKTtcXG4gMTQ3OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiAxNDg6XFx0XFx0XFx0Z290byBmcmVlX3dlZF9vcl9pcnFfdmVjdG9yO1xcbiAxNDk6XFx0XFxuIDE1MDpcXHRcXHRpZiAoIXJldCkge1xcbiAxNTE6XFx0XFx0XFx0cmV0ID0gcGNpX2FsbG9jX2lycV92ZWN0b3JzKHBkZXYsIDEsIDEsIFBDSV9JUlFfQUxMX1RZUEVTKTtcXG4gMTUyOlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiAxNTM6XFx0XFx0XFx0XFx0Z290byBmcmVlX2RldmljZTtcXG4gMTU0OlxcdFxcbiAxNTU6XFx0XFx0XFx0aXJxID0gcGRldi1cXHUwMDNlaXJxO1xcbiAxNTY6XFx0XFx0fVxcbiAxNTc6XFx0XFxuIDE1ODpcXHRcXHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXFx1MDAzZWRldiwgaXJxLCBtdDc5OTZfaXJxX2hhbmRsZXIsXFxuIDE1OTpcXHRcXHRcXHRcXHQgICAgICAgSVJRRl9TSEFSRUQsIEtCVUlMRF9NT0ROQU1FLCBkZXYpO1xcbiAxNjA6XFx0XFx0aWYgKHJldClcXG4gMTYxOlxcdFxcdFxcdGdvdG8gZnJlZV93ZWRfb3JfaXJxX3ZlY3RvcjtcXG4gMTYyOlxcdFxcbiAxNjM6XFx0XFx0bXQ3Nl93cihkZXYsIE1UX0lOVF9NQVNLX0NTUiwgMCk7XFxuIDE2NDpcXHRcXHQvKiBtYXN0ZXIgc3dpdGNoIG9mIFBDSWUgaW50ZXJydXB0IGVuYWJsZSAqL1xcbiAxNjU6XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1BDSUVfTUFDX0lOVF9FTkFCTEUsIDB4ZmYpO1xcbiAxNjY6XFx0XFxuIDE2NzpcXHRcXHRpZiAoaGlmMikge1xcbiAxNjg6XFx0XFx0XFx0aGlmMl9kZXYgPSBjb250YWluZXJfb2YoaGlmMi1cXHUwMDNlZGV2LCBzdHJ1Y3QgcGNpX2RldiwgZGV2KTtcXG4gMTY5OlxcdFxcbiAxNzA6XFx0XFx0XFx0cmV0ID0gbXQ3OTk2X21taW9fd2VkX2luaXQoZGV2LCBoaWYyX2RldiwgdHJ1ZSwgXFx1MDAyNmhpZjJfaXJxKTtcXG4gMTcxOlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiAxNzI6XFx0XFx0XFx0XFx0Z290byBmcmVlX2hpZjJfd2VkX2lycV92ZWN0b3I7XFxuIDE3MzpcXHRcXG4gMTc0OlxcdFxcdFxcdGlmICghcmV0KSB7XFxuIDE3NTpcXHRcXHRcXHRcXHRyZXQgPSBwY2lfYWxsb2NfaXJxX3ZlY3RvcnMoaGlmMl9kZXYsIDEsIDEsXFxuIDE3NjpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgUENJX0lSUV9BTExfVFlQRVMpO1xcbiAxNzc6XFx0XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDE3ODpcXHRcXHRcXHRcXHRcXHRnb3RvIGZyZWVfaGlmMjtcXG4gMTc5OlxcdFxcbiAxODA6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VoaWYyLVxcdTAwM2VpcnEgPSBoaWYyX2Rldi1cXHUwMDNlaXJxO1xcbiAxODE6XFx0XFx0XFx0XFx0aGlmMl9pcnEgPSBkZXYtXFx1MDAzZWhpZjItXFx1MDAzZWlycTtcXG4gMTgyOlxcdFxcdFxcdH1cXG4gMTgzOlxcdFxcbiAxODQ6XFx0XFx0XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVxcdTAwM2VkZXYsIGhpZjJfaXJxLCBtdDc5OTZfaXJxX2hhbmRsZXIsXFxuIDE4NTpcXHRcXHRcXHRcXHRcXHQgICAgICAgSVJRRl9TSEFSRUQsIEtCVUlMRF9NT0ROQU1FIFxcXCItaGlmXFxcIixcXG4gMTg2OlxcdFxcdFxcdFxcdFxcdCAgICAgICBkZXYpO1xcbiAxODc6XFx0XFx0XFx0aWYgKHJldClcXG4gMTg4OlxcdFxcdFxcdFxcdGdvdG8gZnJlZV9oaWYyX3dlZF9pcnFfdmVjdG9yO1xcbiAxODk6XFx0XFxuIDE5MDpcXHRcXHRcXHRtdDc2X3dyKGRldiwgTVRfSU5UMV9NQVNLX0NTUiwgMCk7XFxuIDE5MTpcXHRcXHRcXHQvKiBtYXN0ZXIgc3dpdGNoIG9mIFBDSWUgdG50ZXJydXB0IGVuYWJsZSAqL1xcbiAxOTI6XFx0XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1BDSUUxX01BQ19JTlRfRU5BQkxFLCAweGZmKTtcXG4gMTkzOlxcdFxcdH1cXG4gMTk0OlxcdFxcbiAxOTU6XFx0XFx0cmV0ID0gbXQ3OTk2X3JlZ2lzdGVyX2RldmljZShkZXYpO1xcbiAxOTY6XFx0XFx0aWYgKHJldClcXG4gMTk3OlxcdFxcdFxcdGdvdG8gZnJlZV9oaWYyX2lycTtcXG4gMTk4OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNToxNjo1My41MjExNTc2MjVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgwNDMyMzYxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIERldmljZSBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyBgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZWAgaGFzIGJlZW4gaW52b2tlZC4gTXkgZmlyc3QgdGhvdWdodCBpcywgXCJBbHJpZ2h0LCBsZXQncyBkaXNzZWN0IHRoaXMgZnVuY3Rpb24gYW5kIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBicm9hZGVyIGRyaXZlciBjb250ZXh0LlwiIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc3RlcHMgaXQgdGFrZXMgdG8gaW50ZWdyYXRlIHRoaXMgc3BlY2lmaWMgcGllY2Ugb2YgaGFyZHdhcmUsIGxpa2VseSBhIFdpRmkgZGV2aWNlIGJhc2VkIG9uIHRoZSBuYW1pbmcsIGludG8gdGhlIHN5c3RlbSdzIGRldmljZSB0cmVlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIG1lbW9yeSBtYXBwaW5nLCBpbnRlcnJ1cHQgcmVnaXN0cmF0aW9uLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQsIG9mIGNvdXJzZSwgdGhlIGdlbmVyYWwgZGV2aWNlIGluaXRpYWxpemF0aW9uIGZsb3cuIEFyZSB0aGVyZSBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb25zIGhhcHBlbmluZz8gQXJlIGFueSBjcml0aWNhbCBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgcG9wdWxhdGVkIG9yIGNvbmZpZ3VyZWQgYXQgdGhpcyBzdGFnZT8gSSBuZWVkIHRvIGdldCBhIGhpZ2gtbGV2ZWwgdmlldyBhbmQgdGhlbiB6b29tIGluIG9uIHRoZSBjcml0aWNhbCBwYXJ0cyB0byBhbmFseXplIGl0cyBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgcmVsZXZhbnQgZnJhbWV3b3JrcywgbGlrZWx5IHRoZSBtYWM4MDIxMSB3aXJlbGVzcyBzdGFjay4gSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBlcnJvciBjaGVja2luZyBhbmQgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBwb3RlbnRpYWwgZmFpbHVyZSBzY2VuYXJpb3MgZHVyaW5nIGRldmljZSByZWdpc3RyYXRpb247IHRoYXQgd2lsbCBiZSBjcml0aWNhbCBmb3IgZGVidWdnaW5nIGxhdGVyIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjEwMCwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTY6NTguMzI1NDgzNDkyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NDY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTcyOSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE3Mjk6XFx0aW50IG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4xNzMwOlxcdHtcXG4xNzMxOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gbXQ3Nl9odyhkZXYpO1xcbjE3MzI6XFx0XFx0c3RydWN0IG10Nzk5Nl9waHkgKnBoeTtcXG4xNzMzOlxcdFxcdGludCByZXQ7XFxuMTczNDpcXHRcXG4xNzM1OlxcdFxcdGRldi1cXHUwMDNlcGh5LmRldiA9IGRldjtcXG4xNzM2OlxcdFxcdGRldi1cXHUwMDNlcGh5Lm10NzYgPSBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnBoeTtcXG4xNzM3OlxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5waHkucHJpdiA9IFxcdTAwMjZkZXYtXFx1MDAzZXBoeTtcXG4xNzM4OlxcdFxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VyY193b3JrLCBtdDc5OTZfbWFjX3N0YV9yY193b3JrKTtcXG4xNzM5OlxcdFxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZW1waHkubWFjX3dvcmssIG10Nzk5Nl9tYWNfd29yayk7XFxuMTc0MDpcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2ZGV2LVxcdTAwM2VzdGFfcmNfbGlzdCk7XFxuMTc0MTpcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2ZGV2LVxcdTAwM2V0d3RfbGlzdCk7XFxuMTc0MjpcXHRcXG4xNzQzOlxcdFxcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXFx1MDAyNmRldi1cXHUwMDNlcmVzZXRfd2FpdCk7XFxuMTc0NDpcXHRcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlcmVzZXRfd29yaywgbXQ3OTk2X21hY19yZXNldF93b3JrKTtcXG4xNzQ1OlxcdFxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VkdW1wX3dvcmssIG10Nzk5Nl9tYWNfZHVtcF93b3JrKTtcXG4xNzQ2OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNmRldi1cXHUwMDNlZHVtcF9tdXRleCk7XFxuMTc0NzpcXHRcXG4xNzQ4OlxcdFxcdHJldCA9IG10Nzk5Nl9pbml0X2hhcmR3YXJlKGRldik7XFxuMTc0OTpcXHRcXHRpZiAocmV0KVxcbjE3NTA6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xNzUxOlxcdFxcbjE3NTI6XFx0XFx0bXQ3OTk2X2luaXRfd2lwaHkoaHcsIFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpO1xcbjE3NTM6XFx0XFxuMTc1NDpcXHRcXHRyZXQgPSBtdDc5OTZfcmVnaXN0ZXJfcGh5KGRldiwgTVRfQkFORDEpO1xcbjE3NTU6XFx0XFx0aWYgKHJldClcXG4xNzU2OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTc1NzpcXHRcXG4xNzU4OlxcdFxcdHJldCA9IG10Nzk5Nl9yZWdpc3Rlcl9waHkoZGV2LCBNVF9CQU5EMik7XFxuMTc1OTpcXHRcXHRpZiAocmV0KVxcbjE3NjA6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xNzYxOlxcdFxcbjE3NjI6XFx0XFx0cmV0ID0gbXQ3OTk2X25wdV9od19pbml0KGRldik7XFxuMTc2MzpcXHRcXHRpZiAocmV0KVxcbjE3NjQ6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xNzY1OlxcdFxcbjE3NjY6XFx0XFx0bXQ3OTk2X2RtYV9ycm9fc3RhcnQoZGV2KTtcXG4xNzY3OlxcdFxcbjE3Njg6XFx0XFx0cmV0ID0gbXQ3Nl9yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgdHJ1ZSwgbXQ3Nl9yYXRlcyxcXG4xNzY5OlxcdFxcdFxcdFxcdFxcdCAgIEFSUkFZX1NJWkUobXQ3Nl9yYXRlcykpO1xcbjE3NzA6XFx0XFx0aWYgKHJldClcXG4xNzcxOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTc3MjpcXHRcXG4xNzczOlxcdFxcdG10Nzk5Nl9mb3JfZWFjaF9waHkoZGV2LCBwaHkpXFxuMTc3NDpcXHRcXHRcXHRtdDc5OTZfdGhlcm1hbF9pbml0KHBoeSk7XFxuMTc3NTpcXHRcXG4xNzc2OlxcdFxcdGllZWU4MDIxMV9xdWV1ZV93b3JrKG10NzZfaHcoZGV2KSwgXFx1MDAyNmRldi1cXHUwMDNlaW5pdF93b3JrKTtcXG4xNzc3OlxcdFxcbjE3Nzg6XFx0XFx0ZGV2LVxcdTAwM2VyZWNvdmVyeS5od19pbml0X2RvbmUgPSB0cnVlO1xcbjE3Nzk6XFx0XFxuMTc4MDpcXHRcXHRyZXQgPSBtdDc5OTZfaW5pdF9kZWJ1Z2ZzKGRldik7XFxuMTc4MTpcXHRcXHRpZiAocmV0KVxcbjE3ODI6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4xNzgzOlxcdFxcbjE3ODQ6XFx0XFx0cmV0ID0gbXQ3OTk2X2NvcmVkdW1wX3JlZ2lzdGVyKGRldik7XFxuMTc4NTpcXHRcXHRpZiAocmV0KVxcbjE3ODY6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4xNzg3OlxcdFxcbjE3ODg6XFx0XFx0cmV0dXJuIDA7XFxuMTc4OTpcXHRcXG4xNzkwOlxcdGVycm9yOlxcbjE3OTE6XFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2Vpbml0X3dvcmspO1xcbjE3OTI6XFx0XFxuMTc5MzpcXHRcXHRyZXR1cm4gcmV0O1xcbjE3OTQ6XFx0fVxcbjE3OTU6XFx0XFxuMTc5NjpcXHR2b2lkIG10Nzk5Nl91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbjE3OTc6XFx0e1xcbjE3OTg6XFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2VkdW1wX3dvcmspO1xcbjE3OTk6XFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2V3ZWRfcnJvLndvcmspO1xcbjE4MDA6XFx0XFx0bXQ3OTk2X3VucmVnaXN0ZXJfcGh5KG10Nzk5Nl9waHkzKGRldikpO1xcbjE4MDE6XFx0XFx0bXQ3OTk2X3VucmVnaXN0ZXJfcGh5KG10Nzk5Nl9waHkyKGRldikpO1xcbjE4MDI6XFx0XFx0bXQ3OTk2X3VucmVnaXN0ZXJfdGhlcm1hbChcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbjE4MDM6XFx0XFx0bXQ3OTk2X2NvcmVkdW1wX3VucmVnaXN0ZXIoZGV2KTtcXG4xODA0OlxcdFxcdG10NzZfdW5yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuMTgwNTpcXHRcXHRtdDc5OTZfd2VkX3Jyb19mcmVlKGRldik7XFxuMTgwNjpcXHRcXHRtdDc5OTZfbWN1X2V4aXQoZGV2KTtcXG4xODA3OlxcdFxcdG10Nzk5Nl90eF90b2tlbl9wdXQoZGV2KTtcXG4xODA4OlxcdFxcdG10Nzk5Nl9kbWFfY2xlYW51cChkZXYpO1xcbjE4MDk6XFx0XFx0aWYgKG10Nzk5Nl9oYXNfaHdycm8oZGV2KSBcXHUwMDI2XFx1MDAyNlxcbjE4MTA6XFx0XFx0ICAgICFtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXFxuMTgxMTpcXHRcXHRcXHRtdDc5OTZfcnJvX21zZHVfcGFnZV9tYXBfZnJlZShkZXYpO1xcbjE4MTI6XFx0XFx0dGFza2xldF9kaXNhYmxlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYuaXJxX3Rhc2tsZXQpO1xcbjE4MTM6XFx0XFxuMTgxNDpcXHRcXHRtdDc2X2ZyZWVfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbjE4MTU6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNToxNjo1OC4zMjU3NDAxNjJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAzMjg4NjY5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzk5NiBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqXG5cbk9rYXksIHNvIHdlJ3JlIHN0YXJ0aW5nIHdpdGggYG10Nzk5Nl9pbml0X2hhcmR3YXJlYC4gVGhhdCdzIHRoZSBmaXJzdCBzdGVwIGJlZm9yZSB3ZSBldmVuIGdldCB0byB0aGUgV2ktRmkgaW50ZXJmYWNlIGluaXRpYWxpemF0aW9uLiBNYWtlcyBzZW5zZTsgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBoYXMgdG8gY29tZSBiZWZvcmUgYW55dGhpbmcgZWxzZS4gTGV0J3MgZGlnIGludG8gdGhhdCBgbXQ3OTk2X2luaXRfaGFyZHdhcmVgIGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCdzIGRvaW5nIHVuZGVyIHRoZSBob29kLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgZnVuZGFtZW50YWwgaGFyZHdhcmUgYXNwZWN0cyBhcmUgYmVpbmcgYnJvdWdodCB1cCBmaXJzdC4gSXMgaXQgcG93ZXIgc2VxdWVuY2luZywgY2xvY2sgc2V0dXAsIHJlZ2lzdGVyIGluaXRpYWxpemF0aW9uLi4uIHdoYXQncyB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIG9mIHRoZSBzaWxpY29uIHN0YXJ0dXA/IEkgbmVlZCB0byBzZWUgaWYgaXQgbWFrZXMgc2Vuc2Ugd2l0aGluIHRoZSBvdmVyYWxsIGJvb3QgcHJvY2VzcyBhbmQgdGhlIGRldmljZSdzIGFyY2hpdGVjdHVyZS4gQW5kIGhvdyBkb2VzIHRoaXMgY29ubmVjdCB3aXRoIHRoZSByZWd1bGF0b3J5IHJlcXVpcmVtZW50cz9cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4NDUsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE1OjE3OjAzLjM1ODYzMDA4MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI4NDA4ODYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10Nzk5Nl9pbml0X2hhcmR3YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9MTIxMT1zdGF0aWMgaW50IG10Nzk5Nl92YXJpYW50X2ZlbV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTI1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6MTI1NDpzdGF0aWMgaW50IG10Nzk5Nl9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEyNTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTE3Mjk9aW50IG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xNzQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxNzQ4OlxcdHJldCA9IG10Nzk5Nl9pbml0X2hhcmR3YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTE3NDktXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTc6MDMuNDg3MDQ2ODA1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMDY0MjMzNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBtdDc5OTZfaW5pdF9oYXJkd2FyZWAgZnVuY3Rpb24uIEknbSBleHBlY3RpbmcgdGhpcyB0byBiZSB0aGUgY29yZSBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciB0aGUgaGFyZHdhcmUsIGxpa2VseSBzZXR0aW5nIHVwIHJlZ2lzdGVycywgY29uZmlndXJpbmcgY2xvY2tzLCBhbmQgZW5hYmxpbmcgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdGllcyBvZiB0aGUgTVQ3OTk2IHdpcmVsZXNzIGNoaXAuIEknbSBsb29raW5nIGZvciB0aGUgc2VxdWVuY2Ugb2Ygc3RlcHMg4oCTIHdoYXQgY29tZXMgZmlyc3QsIHdoYXQgZGVwZW5kcyBvbiB3aGF0LiBJJ20gYWxzbyBnb2luZyB0byBiZSBtZW50YWxseSBwYXJzaW5nIGZvciBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHdoZXJlIGNhcmVmdWwgdHVuaW5nIG1pZ2h0IGJlIGNydWNpYWwsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgdGhlIGNvbnN0cmFpbnRzIG9mIGVtYmVkZGVkIHN5c3RlbXMuIEFyZSB0aGV5IGRvaW5nIGFueSBwb3dlciBtYW5hZ2VtZW50IHNldHVwIGVhcmx5IG9uPyBBcmUgdGhleSBjb25maWd1cmluZyBhbnkgY3JpdGljYWwgaW50ZXJydXB0cz8gVGhpcyBpcyB3aGVyZSBJIGNhbiBzdGFydCBidWlsZGluZyBhIG1lbnRhbCBtb2RlbCBvZiB0aGUgY2hpcCdzIHN0YXJ0dXAgcHJvY2Vzcy4gSSBhbHNvIHdhbnQgdG8gY2hlY2sgZm9yIGFueSB2ZW5kb3Itc3BlY2lmaWMgbnVhbmNlcyBvciBrbHVkZ2VzLiBGaW5hbGx5LCBJJ2xsIGJlIHdhdGNoaW5nIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgb3Bwb3J0dW5pdGllcyBmb3Igb3B0aW1pemF0aW9uIG9yIHBvdGVudGlhbCBpc3N1ZXMgdGhhdCBjb3VsZCBpbXBhY3QgcGVyZm9ybWFuY2Ugb3Igc3RhYmlsaXR5IGRvd24gdGhlIGxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NDU2LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MTc6MDYuNzkzNDcyNjA3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDI0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTI1NCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyNTQ6XFx0c3RhdGljIGludCBtdDc5OTZfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbjEyNTU6XFx0e1xcbjEyNTY6XFx0XFx0aW50IHJldCwgaWR4O1xcbjEyNTc6XFx0XFxuMTI1ODpcXHRcXHRtdDc2X3dyKGRldiwgTVRfSU5UX1NPVVJDRV9DU1IsIH4wKTtcXG4xMjU5OlxcdFxcdGlmIChpc19tdDc5OTIoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG4xMjYwOlxcdFxcdFxcdG10NzZfcm13KGRldiwgTVRfQUZFX0NUTF9CQU5EX1BMTF8wMyhNVF9CQU5EMCksIE1UX0FGRV9DVExfQkFORF9QTExfMDNfTVNCX0VOLCAwKTtcXG4xMjYxOlxcdFxcdFxcdG10NzZfcm13KGRldiwgTVRfQUZFX0NUTF9CQU5EX1BMTF8wMyhNVF9CQU5EMSksIE1UX0FGRV9DVExfQkFORF9QTExfMDNfTVNCX0VOLCAwKTtcXG4xMjYyOlxcdFxcdH1cXG4xMjYzOlxcdFxcbjEyNjQ6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZWluaXRfd29yaywgbXQ3OTk2X2luaXRfd29yayk7XFxuMTI2NTpcXHRcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNld2VkX3Jyby53b3JrLCBtdDc5OTZfd2VkX3Jyb193b3JrKTtcXG4xMjY2OlxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZkZXYtXFx1MDAzZXdlZF9ycm8ucG9sbF9saXN0KTtcXG4xMjY3OlxcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXdlZF9ycm8ubG9jayk7XFxuMTI2ODpcXHRcXG4xMjY5OlxcdFxcdHJldCA9IG10Nzk5Nl92YXJpYW50X3R5cGVfaW5pdChkZXYpO1xcbjEyNzA6XFx0XFx0aWYgKHJldClcXG4xMjcxOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTI3MjpcXHRcXG4xMjczOlxcdFxcdHJldCA9IG10Nzk5Nl9kbWFfaW5pdChkZXYpO1xcbjEyNzQ6XFx0XFx0aWYgKHJldClcXG4xMjc1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTI3NjpcXHRcXG4xMjc3OlxcdFxcdHNldF9iaXQoTVQ3Nl9TVEFURV9JTklUSUFMSVpFRCwgXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5zdGF0ZSk7XFxuMTI3ODpcXHRcXG4xMjc5OlxcdFxcdHJldCA9IG10Nzk5Nl9tY3VfaW5pdChkZXYpO1xcbjEyODA6XFx0XFx0aWYgKHJldClcXG4xMjgxOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTI4MjpcXHRcXG4xMjgzOlxcdFxcdHJldCA9IG10Nzk5Nl93ZWRfcnJvX2luaXQoZGV2KTtcXG4xMjg0OlxcdFxcdGlmIChyZXQpXFxuMTI4NTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjEyODY6XFx0XFxuMTI4NzpcXHRcXHRyZXQgPSBtdDc5OTZfdmFyaWFudF9mZW1faW5pdChkZXYpO1xcbjEyODg6XFx0XFx0aWYgKHJldClcXG4xMjg5OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTI5MDpcXHRcXG4xMjkxOlxcdFxcdHJldCA9IG10Nzk5Nl9lZXByb21faW5pdChkZXYpO1xcbjEyOTI6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTI5MzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjEyOTQ6XFx0XFxuMTI5NTpcXHRcXHQvKiBCZWFjb24gYW5kIG1nbXQgZnJhbWVzIHNob3VsZCBvY2N1cHkgd2NpZCAwICovXFxuMTI5NjpcXHRcXHRpZHggPSBtdDc2X3djaWRfYWxsb2MoZGV2LVxcdTAwM2VtdDc2LndjaWRfbWFzaywgTVQ3OTk2X1dUQkxfU1RBKTtcXG4xMjk3OlxcdFxcdGlmIChpZHgpXFxuMTI5ODpcXHRcXHRcXHRyZXR1cm4gLUVOT1NQQztcXG4xMjk5OlxcdFxcbjEzMDA6XFx0XFx0ZGV2LVxcdTAwM2VtdDc2Lmdsb2JhbF93Y2lkLmlkeCA9IGlkeDtcXG4xMzAxOlxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5nbG9iYWxfd2NpZC5od19rZXlfaWR4ID0gLTE7XFxuMTMwMjpcXHRcXHRkZXYtXFx1MDAzZW10NzYuZ2xvYmFsX3djaWQudHhfaW5mbyB8PSBNVF9XQ0lEX1RYX0lORk9fU0VUO1xcbjEzMDM6XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cXHUwMDNlbXQ3Ni53Y2lkW2lkeF0sIFxcdTAwMjZkZXYtXFx1MDAzZW10NzYuZ2xvYmFsX3djaWQpO1xcbjEzMDQ6XFx0XFxuMTMwNTpcXHRcXHRyZXR1cm4gMDtcXG4xMzA2OlxcdH1cXG4xMzA3OlxcdFxcbjEzMDg6XFx0dm9pZCBtdDc5OTZfc2V0X3N0cmVhbV92aHRfdHhiZl9jYXBzKHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkpXFxuMTMwOTpcXHR7XFxuMTMxMDpcXHRcXHRpbnQgc3RzO1xcbjEzMTE6XFx0XFx0dTMyICpjYXA7XFxuMTMxMjpcXHRcXG4xMzEzOlxcdFxcdGlmICghcGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VjYXAuaGFzXzVnaHopXFxuMTMxNDpcXHRcXHRcXHRyZXR1cm47XFxuMTMxNTpcXHRcXG4xMzE2OlxcdFxcdHN0cyA9IGh3ZWlnaHQxNihwaHktXFx1MDAzZW10NzYtXFx1MDAzZWNoYWlubWFzayk7XFxuMTMxNzpcXHRcXHRjYXAgPSBcXHUwMDI2cGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VzYmFuZF81Zy5zYmFuZC52aHRfY2FwLmNhcDtcXG4xMzE4OlxcdFxcbjEzMTk6XFx0XFx0KmNhcCB8PSBJRUVFODAyMTFfVkhUX0NBUF9TVV9CRUFNRk9STUVFX0NBUEFCTEUgfFxcbjEzMjA6XFx0XFx0XFx0SUVFRTgwMjExX1ZIVF9DQVBfTVVfQkVBTUZPUk1FRV9DQVBBQkxFO1xcbjEzMjE6XFx0XFxuMTMyMjpcXHRcXHRpZiAoaXNfbXQ3OTkyKHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlZGV2KSlcXG4xMzIzOlxcdFxcdFxcdCpjYXAgfD0gRklFTERfUFJFUChJRUVFODAyMTFfVkhUX0NBUF9CRUFNRk9STUVFX1NUU19NQVNLLCA0KTtcXG4xMzI0OlxcdFxcdGVsc2VcXG4xMzI1OlxcdFxcdFxcdCpjYXAgfD0gRklFTERfUFJFUChJRUVFODAyMTFfVkhUX0NBUF9CRUFNRk9STUVFX1NUU19NQVNLLCAzKTtcXG4xMzI2OlxcdFxcbjEzMjc6XFx0XFx0KmNhcCBcXHUwMDI2PSB+KElFRUU4MDIxMV9WSFRfQ0FQX1NPVU5ESU5HX0RJTUVOU0lPTlNfTUFTSyB8XFxuMTMyODpcXHRcXHRcXHQgIElFRUU4MDIxMV9WSFRfQ0FQX1NVX0JFQU1GT1JNRVJfQ0FQQUJMRSB8XFxuMTMyOTpcXHRcXHRcXHQgIElFRUU4MDIxMV9WSFRfQ0FQX01VX0JFQU1GT1JNRVJfQ0FQQUJMRSk7XFxuMTMzMDpcXHRcXG4xMzMxOlxcdFxcdGlmIChzdHMgXFx1MDAzYyAyKVxcbjEzMzI6XFx0XFx0XFx0cmV0dXJuO1xcbjEzMzM6XFx0XFxuMTMzNDpcXHRcXHQqY2FwIHw9IElFRUU4MDIxMV9WSFRfQ0FQX1NVX0JFQU1GT1JNRVJfQ0FQQUJMRSB8XFxuMTMzNTpcXHRcXHRcXHRJRUVFODAyMTFfVkhUX0NBUF9NVV9CRUFNRk9STUVSX0NBUEFCTEUgfFxcbjEzMzY6XFx0XFx0XFx0RklFTERfUFJFUChJRUVFODAyMTFfVkhUX0NBUF9TT1VORElOR19ESU1FTlNJT05TX01BU0ssIHN0cyAtIDEpO1xcbjEzMzc6XFx0fVxcbjEzMzg6XFx0XFxuMTMzOTpcXHRzdGF0aWMgdm9pZFxcbjEzNDA6XFx0bXQ3OTk2X3NldF9zdHJlYW1faGVfdHhiZl9jYXBzKHN0cnVjdCBtdDc5OTZfcGh5ICpwaHksXFxuMTM0MTpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9zdGFfaGVfY2FwICpoZV9jYXAsIGludCB2aWYsXFxuMTM0MjpcXHRcXHRcXHRcXHQgICAgICAgZW51bSBubDgwMjExX2JhbmQgYmFuZClcXG4xMzQzOlxcdHtcXG4xMzQ0OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfaGVfY2FwX2VsZW0gKmVsZW0gPSBcXHUwMDI2aGVfY2FwLVxcdTAwM2VoZV9jYXBfZWxlbTtcXG4xMzQ1OlxcdFxcdGludCBzdHMgPSBod2VpZ2h0MTYocGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VjaGFpbm1hc2spO1xcbjEzNDY6XFx0XFx0Ym9vbCBub25fMmcgPSBiYW5kICE9IE5MODAyMTFfQkFORF8yR0haO1xcbjEzNDc6XFx0XFx0dTggYztcXG4xMzQ4OlxcdFxcbjEzNDk6XFx0I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxuMTM1MDpcXHRcXHRpZiAodmlmID09IE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQpXFxuMTM1MTpcXHRcXHRcXHRyZXR1cm47XFxuMTM1MjpcXHQjZW5kaWZcXG4xMzUzOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNToxNzowNi43OTM2MDgxMjdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg5Mzc4NjY1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIE1DVSBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqXG5cbk9rYXksIHNvIHRoZSBgbXQ3OTk2X21jdV9pbml0YCBmdW5jdGlvbiBpcyB0aGUgZmlyc3QgdGhpbmcgdGhhdCdzIGNhbGxlZCBoZXJlLiBDbGVhcmx5LCB0aGlzIGlzIHdoZXJlIHRoZSBNQ1UgZ2V0cyBpbml0aWFsaXplZCwgYW5kIG1vc3QgbGlrZWx5LCB0aGUgZmlybXdhcmUgZ2V0cyBsb2FkZWQuIE1ha2VzIHNlbnNlLiBJZiB0aGF0IGluaXRpYWxpemF0aW9uIHByb2Nlc3MgZmFpbHPigJRtYXliZSB0aGUgZmlybXdhcmUgZmFpbHMgdG8gbG9hZCBjb3JyZWN0bHksIG9yIHRoZSBNQ1UgaXRzZWxmIGlzbid0IHJlc3BvbmRpbmfigJR0aGUgd2hvbGUgdGhpbmcncyBnb2luZyB0byBmYWxsIGFwYXJ0LiBgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZWAgd2lsbCByZXR1cm4gYW4gZXJyb3IsIGFuZCB0aGF0J3MgdGhlIGVuZCBvZiB0aGUgbGluZS4gV2Ugd29uJ3QgZXZlbiBnZXQgdG8gYG10Nzk5Nl9pbml0X3dpcGh5YCwgYW5kIHRoZSBkZXZpY2UgcmVnaXN0cmF0aW9uIHdpbGwgYmUgYSBuby1nby4gSGFuZyBvbiwgdGhlIGNhbGwgb3JkZXIgaXMgaW50ZXJlc3RpbmcuLi4gYG10Nzk5Nl9tY3VfaW5pdGAgaXMgY2FsbGVkICpiZWZvcmUqIGBtdDc5OTZfaW5pdF93aXBoeWAuIFRoYXQncyBpbXBvcnRhbnQuIExldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgd2hhdCBgbXQ3OTk2X21jdV9pbml0YCBpcyBkb2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA1NDIsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNToxNzoxMS42ODczOTYyNjZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0NTMwNjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10Nzk5Nl9tY3VfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTEyNTQ9c3RhdGljIGludCBtdDc5OTZfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEyNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjEyNzk6XFx0cmV0ID0gbXQ3OTk2X21jdV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEyODAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTIyMjA9bXQ3OTk2X21hY19yZXN0YXJ0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yMjkxLVxcdC8qIGxvYWQgZmlybXdhcmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyMjkyOlxcdHJldCA9IG10Nzk5Nl9tY3VfaW5pdF9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTIyOTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jPTM2NDA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjM2NDE6bXQ3OTk2X21jdV9pbml0X3J4X2FpcnRpbWUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNjQyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM2NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6MzY2NTppbnQgbXQ3OTk2X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzY2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjM3MDM6XFx0cmV0ID0gbXQ3OTk2X21jdV9pbml0X3J4X2FpcnRpbWUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzA0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjM3MTE6aW50IG10Nzk5Nl9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM3MTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzcyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzozNzIxOlxcdHJldHVybiBtdDc5OTZfbWN1X2luaXRfZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzIyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oPTcwMj1pbnQgbXQ3OTk2X3J1bihzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaDo3MDM6aW50IG10Nzk5Nl9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaDo3MDQ6aW50IG10Nzk5Nl9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaC03MDUtaW50IG10Nzk5Nl9tY3VfdHd0X2FncnRfdXBkYXRlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE1OjE3OjExLjc4MTkzMjI4N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzUwNTMwMTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZz1GYWxzZTogTVQ3OTk2IFN0YXRpYyBDb25maWd1cmF0aW9uIENoYW5nZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gYG10Nzk5Nl9tY3VfaW5pdGAgY2FsbHMgYG10Nzk5Nl9tY3VfaW5pdF9maXJtd2FyZWAsIHdoaWNoLCBhcyB3ZSBrbm93LCBpcyBhIHBvdGVudGlhbCBzdHVtYmxpbmcgYmxvY2sgaW4gZnV6emluZy4gVGhlIGZpcm13YXJlIGxvYWRpbmcgaXMgY3JpdGljYWwsIGFuZCBpbiBzeXprYWxsZXIsIHdlIG1pZ2h0IGdldCBsdWNreSB3aXRoIG1vY2tlZCBmaXJtd2FyZSBpZiB0aGUgZnV6emVyIHN1cHBvcnRzIGl0LCAqYW5kKiB0aGUgZHJpdmVyIHV0aWxpemVzIGByZXF1ZXN0X2Zpcm13YXJlYC4gSGVyZSwgdGhlIFBDSSBmdXp6aW5nIGlzIHdlYWsg4oCTIGl0J3MganVzdCByYW5kb20gTU1JTyByZXNwb25zZXMuIFRoYXQgbWVhbnMgYG10Nzk5Nl9tY3VfaW5pdF9maXJtd2FyZWAgY291bGQgZmFpbCwgaGFuZywgb3IgZXZlbiAqYWNjaWRlbnRhbGx5KiBzdWNjZWVkIGJhc2VkIG9uIHRob3NlIHJhbmRvbSBieXRlcy4gQnV0LCB0aGF0J3Mgbm90IHRoZSBwb2ludC5cblxuVGhlICpyZWFsKiBpc3N1ZSBpcyB0aGUgcGF0Y2ggaXRzZWxmLiBJdCdzIHNpbXBseSByZW1vdmluZyBgLmJlYWNvbl9pbnRfbWluX2djZCA9IDEwMGAuIFRoaXMgaXMgYSAqc3RhdGljIGNvbmZpZ3VyYXRpb24gY2hhbmdlKi4gSXQncyBkYXRhLCBub3QgYSBmdW5jdGlvbmFsIGNvZGUgcGF0aCBtb2RpZmljYXRpb24uIFNwZWNpZmljYWxseSwgdGhlIGd1aWRhbmNlIHNheXMgXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zXCIgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuXG5JbiB0aGlzIGNhc2UsIHRoZSBjaGFuZ2UgaW4gcXVlc3Rpb24gZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgZHJpdmVyLiBJdOKAmXMganVzdCBhbHRlcmluZyBkYXRhIHBhc3NlZCB0byBtYWM4MDIxMSwgYW5kIHRoYXQncyBub3QgdGhlIGtpbmQgb2YgdGhpbmcgd2UncmUgbG9va2luZyB0byBmdXp6LlxuXG5GdXJ0aGVyLCBhbmQgdGhpcyBpcyBhbm90aGVyIGNydWNpYWwgcG9pbnQ6IHRoZSBkcml2ZXIgaXMgZm9yIHRoZSBNVDc5OTYgUENJZSBXaS1GaSBjYXJkLiBXZSAqZG9uJ3QqIGhhdmUgaGFyZHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGluIFFFTVUuIFRoYXQgbWVhbnMgd2UgY2Fubm90IHJlYWNoIHRoZSBkcml2ZXIsIHJlZ2FyZGxlc3Mgb2YgdGhlIGZpcm13YXJlIHN0YXR1cy5cblxuVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGZhbGxzIGludG8gKmJvdGgqIGNhdGVnb3JpZXMgdGhhdCB3YXJyYW50IGBXb3J0aEZ1enppbmc9ZmFsc2VgOiBpdCdzIGEgY2hhbmdlIHRvIGEgbnVtZXJpYyBjb25zdGFudCwgYW5kIGl0J3MgaW4gYSBjb2RlIHBhdGggdGhhdCdzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBObyBmdXJ0aGVyIGludmVzdGlnYXRpb24gbmVlZGVkLiBXZSdyZSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMDg4LCJPdXRwdXRUb2tlbnMiOjEyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNToxNzoyMC4xMzI0NjQ4MTVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZW1vdmVzIGEgbnVtZXJpYyBjb25zdGFudCBpbml0aWFsaXphdGlvbiAoLmJlYWNvbl9pbnRfbWluX2djZCA9IDEwMCkgZnJvbSBhIHN0YXRpYyBjb25maWd1cmF0aW9uIHN0cnVjdCBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTk2IFBDSWUgV2ktRmkgZHJpdmVyLiBUaGlzIGlzIGEgdHJpdmlhbCBkYXRhIHN0cnVjdHVyZSBjaGFuZ2UgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGRyaXZlcidzIGV4ZWN1dGlvbiBmbG93LiBGdXJ0aGVybW9yZSwgdGhlIE1UNzk5NiBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBtZWFuaW5nZnVsIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZW1vdmVzIGEgbnVtZXJpYyBjb25zdGFudCBpbml0aWFsaXphdGlvbiAoLmJlYWNvbl9pbnRfbWluX2djZCA9IDEwMCkgZnJvbSBhIHN0YXRpYyBjb25maWd1cmF0aW9uIHN0cnVjdCBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTk2IFBDSWUgV2ktRmkgZHJpdmVyLiBUaGlzIGlzIGEgdHJpdmlhbCBkYXRhIHN0cnVjdHVyZSBjaGFuZ2UgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGRyaXZlcidzIGV4ZWN1dGlvbiBmbG93LiBGdXJ0aGVybW9yZSwgdGhlIE1UNzk5NiBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBtZWFuaW5nZnVsIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflownvvbm[1] Phase: Running StartedAt: 2026-07-02 15:17:31 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvvbm[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-02 15:17:31 +0000 UTC FinishedAt: 2026-07-02 15:17:38 +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,}