Name: series-workflownj6pn Phase: Failed StartedAt: 2026-09-11 20:30:32 +0000 UTC FinishedAt: 2026-09-11 21:45:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflownj6pn[0] Phase: Succeeded StartedAt: 2026-09-11 20:30:32 +0000 UTC FinishedAt: 2026-09-11 21:45:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflownj6pn[0].run-triage Phase: Succeeded StartedAt: 2026-09-11 20:30:32 +0000 UTC FinishedAt: 2026-09-11 21:45:24 +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+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUTDFDJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBhdGwxY19jbGVhbl90eGAgaW4gdGhlIEF0aGVyb3MgTDFDIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNgKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUXVhbGNvbW0gQXRoZXJvcy9BdHRhbnNpYyBQQ0kgaGFyZHdhcmUgKEwxQywgTDJDLCBMMUQpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0ZjFmMzljYzUyMGY4ZTVjNDA1MTFmN2QxMWQ5YTA4ZGY5YTU1Y2U1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMjE6NDQ6MjMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uY1xuaW5kZXggN2VmYTNmYzI1N2IzOS4uZTU4ZjFkMmMyNmJkZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uY1xuQEAgLTE2MDIsNiAmIzQzOzE2MDIsOSBAQCBzdGF0aWMgaW50IGF0bDFjX2NsZWFuX3R4KHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcbiBcdEFUX1JFQURfUkVHVyhcdTAwMjZhZGFwdGVyLVx1MDAzZWh3LCBhdGwxY19xcmVnc1t0cGRfcmluZy1cdTAwM2VudW1dLnRwZF9jb25zLFxuIFx0XHQgICAgIFx1MDAyNmh3X25leHRfdG9fY2xlYW4pO1xuIFxuJiM0MztcdGlmICh1bmxpa2VseShod19uZXh0X3RvX2NsZWFuIFx1MDAzZT0gdHBkX3JpbmctXHUwMDNlY291bnQpKVxuJiM0MztcdFx0aHdfbmV4dF90b19jbGVhbiA9IG5leHRfdG9fY2xlYW47XG4mIzQzO1xuIFx0d2hpbGUgKG5leHRfdG9fY2xlYW4gIT0gaHdfbmV4dF90b19jbGVhbikge1xuIFx0XHRidWZmZXJfaW5mbyA9IFx1MDAyNnRwZF9yaW5nLVx1MDAzZWJ1ZmZlcl9pbmZvW25leHRfdG9fY2xlYW5dO1xuIFx0XHRpZiAoYnVmZmVyX2luZm8tXHUwMDNlc2tiKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRMMUMmIzM0OywKICAgICYjMzQ7UENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBhdGwxY19jbGVhbl90eGAgaW4gdGhlIEF0aGVyb3MgTDFDIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNgKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUXVhbGNvbW0gQXRoZXJvcy9BdHRhbnNpYyBQQ0kgaGFyZHdhcmUgKEwxQywgTDJDLCBMMUQpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0ZjFmMzljYzUyMGY4ZTVjNDA1MTFmN2QxMWQ5YTA4ZGY5YTU1Y2U1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgMTEgMjE6NDQ6MjMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jCmluZGV4IDdlZmEzZmMyNTdiMzkuLmU1OGYxZDJjMjZiZGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jCkBAIC0xNjAyLDYgJiM0MzsxNjAyLDkgQEAgc3RhdGljIGludCBhdGwxY19jbGVhbl90eChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpCiAJQVRfUkVBRF9SRUdXKCZhbXA7YWRhcHRlci0mZ3Q7aHcsIGF0bDFjX3FyZWdzW3RwZF9yaW5nLSZndDtudW1dLnRwZF9jb25zLAogCQkgICAgICZhbXA7aHdfbmV4dF90b19jbGVhbik7CiAKJiM0MzsJaWYgKHVubGlrZWx5KGh3X25leHRfdG9fY2xlYW4gJmd0Oz0gdHBkX3JpbmctJmd0O2NvdW50KSkKJiM0MzsJCWh3X25leHRfdG9fY2xlYW4gPSBuZXh0X3RvX2NsZWFuOwomIzQzOwogCXdoaWxlIChuZXh0X3RvX2NsZWFuICE9IGh3X25leHRfdG9fY2xlYW4pIHsKIAkJYnVmZmVyX2luZm8gPSAmYW1wO3RwZF9yaW5nLSZndDtidWZmZXJfaW5mb1tuZXh0X3RvX2NsZWFuXTsKIAkJaWYgKGJ1ZmZlcl9pbmZvLSZndDtza2IpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBhdGwxY19tYWluLmNgIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHJlYWxseSB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVpbmcgY2hhbmdlZCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHdpdGhpbiB0aGUgYGF0bDFjX2NsZWFuX3R4YCBmdW5jdGlvbiwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEkgc2VlIGEgbmV3IGNvbmRpdGlvbmFsIGNoZWNrIGluIHRoZXJlOgoKYGBgYwoJaWYgKHVubGlrZWx5KGh3X25leHRfdG9fY2xlYW4gJmd0Oz0gdHBkX3JpbmctJmd0O2NvdW50KSkKCQlod19uZXh0X3RvX2NsZWFuID0gbmV4dF90b19jbGVhbjsKYGBgCgpJdCBzZWVtcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBwb3RlbnRpYWwgd3JhcC1hcm91bmQgaXNzdWUgaW4gdGhlIHRyYW5zbWl0IGRlc2NyaXB0b3IgcmluZy4gSWYgYGh3X25leHRfdG9fY2xlYW5gIHNvbWVob3cgZ2V0cyBhaGVhZCBvZiB0aGUgcmluZyYjMzk7cyBjYXBhY2l0eSwgd2UmIzM5O3JlIG5vdyBjb3JyZWN0aW5nIGl0IHRvIGBuZXh0X3RvX2NsZWFuYC4gVGhhdCYjMzk7cyBzbWFydDsgd2UmIzM5O3JlIGVzc2VudGlhbGx5IHNhbml0aXppbmcgdGhlIGhhcmR3YXJlLXJlcG9ydGVkIHBvaW50ZXIuIE5vdyBJIG5lZWQgdG8gc2VlICp3aHkqIHRoaXMgaXMgbmVjZXNzYXJ5LiBJcyB0aGlzIGEga25vd24gaGFyZHdhcmUgYnVnPyBBIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbj8gT3IgaXMgaXQgcmVsYXRlZCB0byBhIHJlY2VudCBjaGFuZ2UgaW4gaG93IHRoZSBkZXNjcmlwdG9ycyBhcmUgbWFuYWdlZD8KCk15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgYGF0bDFjYCBhY3R1YWxseSAqaXMqLiBJcyBpdCBhbiBBdGhlcm9zIEV0aGVybmV0IG5ldHdvcmsgaW50ZXJmYWNlIGNvbnRyb2xsZXIgKE5JQyk/IEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHNvIEkgY2FuIHB1dCB0aGlzIGludG8gdGhlIHByb3BlciBjb250ZXh0LiBUaGVuIEkmIzM5O2xsIGNoZWNrIHRoZSBhc3NvY2lhdGVkIGBLY29uZmlnYCBhbmQgYE1ha2VmaWxlYCBlbnRyaWVzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG1vZHVsZSYjMzk7cyBkZXBlbmRlbmNpZXMsIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIGFuZCBnZW5lcmFsIHB1cnBvc2UsIHdoaWNoIHdpbGwgaGVscCBkZXRlcm1pbmUgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgY29tbWl0IG1lc3NhZ2UgdGhhdCBnb2VzIHdpdGggdGhpcyBwYXRjaCB0byBzZWUgd2hhdCBtb3RpdmF0ZWQgdGhlIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGwxYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxOTY0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWc9NjM9Y29uZmlnIEFUTDFDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnLTcxLVx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgVGhlIG1vZHVsZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnOjcyOlx0ICB3aWxsIGJlIGNhbGxlZCBhdGwxYy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZy03My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX0FUTDFFKSAmIzQzOz0gYXRsMWUvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19BVEwxQykgJiM0Mzs9IGF0bDFjL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9NYWtlZmlsZS0xMS1vYmotJChDT05GSUdfQUxYKSAmIzQzOz0gYWx4L1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfQVRMMUMpICYjNDM7PSBhdGwxYy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL01ha2VmaWxlOjM6YXRsMWMtb2JqcyA6PSBhdGwxY19tYWluLm8gYXRsMWNfaHcubyBhdGwxY19ldGh0b29sLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NDA6I2luY2x1ZGUgXCYjMzQ7YXRsMWNfaHcuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC05MC0jZGVmaW5lIEFUTDFDX0dFVF9ERVNDKFIsIGksIHR5cGUpXHQoXHUwMDI2KCgodHlwZSAqKSgoUiktXHUwMDNlZGVzYykpW2ldKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo5MTojZGVmaW5lIEFUTDFDX1JGRF9ERVNDKFIsIGkpXHRBVEwxQ19HRVRfREVTQyhSLCBpLCBzdHJ1Y3QgYXRsMWNfcnhfZnJlZV9kZXNjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjkyOiNkZWZpbmUgQVRMMUNfVFBEX0RFU0MoUiwgaSlcdEFUTDFDX0dFVF9ERVNDKFIsIGksIHN0cnVjdCBhdGwxY190cGRfZGVzYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo5MzojZGVmaW5lIEFUTDFDX1JSRF9ERVNDKFIsIGkpXHRBVEwxQ19HRVRfREVTQyhSLCBpLCBzdHJ1Y3QgYXRsMWNfcmVjdl9yZXRfc3RhdHVzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTk0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0xNDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MTQyOnN0cnVjdCBhdGwxY190cGRfZGVzYyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMTQzLVx0X19sZTE2XHRidWZmZXJfbGVuOyAvKiBpbmNsdWRlIDQtYnl0ZSBDUkMgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMTQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjE0OTpzdHJ1Y3QgYXRsMWNfdHBkX2V4dF9kZXNjIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0xNTAtXHR1MzIgcmVzZXJ2ZF8wO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjQ2OnN0cnVjdCBhdGwxY19yZWN2X3JldF9zdGF0dXMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI0Ny1cdF9fbGUzMiAgd29yZDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI1NC0vKiBSRkQgZGVzY3JpcHRvciAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI1NTpzdHJ1Y3QgYXRsMWNfcnhfZnJlZV9kZXNjIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yNTYtXHRfX2xlNjRcdGJ1ZmZlcl9hZGRyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yNTktLyogRE1BIE9yZGVyIFNldHRpbmdzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjYwOmVudW0gYXRsMWNfZG1hX29yZGVyIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNjE6XHRhdGwxY19kbWFfb3JkX2luID0gMSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNjI6XHRhdGwxY19kbWFfb3JkX2VuaCA9IDIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjYzOlx0YXRsMWNfZG1hX29yZF9vdXQgPSA0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjY0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI2NjplbnVtIGF0bDFjX2RtYV9yY2Ige1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI2NzpcdGF0bDFjX3JjYl82NCA9IDAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjY4Olx0YXRsMWNfcmNiXzEyOCA9IDFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yNjktfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjcxOmVudW0gYXRsMWNfbWFjX3NwZWVkIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNzI6XHRhdGwxY19tYWNfc3BlZWRfMCA9IDAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjczOlx0YXRsMWNfbWFjX3NwZWVkXzEwXzEwMCA9IDEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6Mjc0Olx0YXRsMWNfbWFjX3NwZWVkXzEwMDAgPSAyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjc1LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI3NzplbnVtIGF0bDFjX2RtYV9yZXFfYmxvY2sge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI3ODpcdGF0bDFjX2RtYV9yZXFfMTI4ID0gMCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNzk6XHRhdGwxY19kbWFfcmVxXzI1NiA9IDEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjgwOlx0YXRsMWNfZG1hX3JlcV81MTIgPSAyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI4MTpcdGF0bDFjX2RtYV9yZXFfMTAyNCA9IDMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjgyOlx0YXRsMWNfZG1hX3JlcV8yMDQ4ID0gNCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyODM6XHRhdGwxY19kbWFfcmVxXzQwOTYgPSA1XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjg0LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyODc6ZW51bSBhdGwxY19uaWNfdHlwZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjg4LVx0YXRocl9sMWMgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6Mjk3OnN0cnVjdCBhdGwxY19od19zdGF0cyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjk4LVx0LyogcnggKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMzUxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjM1MjpzdHJ1Y3QgYXRsMWNfaHcge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTM1My1cdHU4IF9faW9tZW0gICAgICAqaHdfYWRkcjsgICAgICAgICAgICAvKiBpbm5lciByZWdpc3RlciBhZGRyZXNzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MzU0Olx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MzU1Olx0ZW51bSBhdGwxY19uaWNfdHlwZSAgbmljX3R5cGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MzU2Olx0ZW51bSBhdGwxY19kbWFfb3JkZXIgZG1hX29yZGVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjM1NzpcdGVudW0gYXRsMWNfZG1hX3JjYiAgIHJjYl92YWx1ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDozNTg6XHRlbnVtIGF0bDFjX2RtYV9yZXFfYmxvY2sgZG1hcl9ibG9jaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0zNTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTM3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDozNzU6XHRlbnVtIGF0bDFjX21hY19zcGVlZCBtYWNfc3BlZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMzc2LVx0Ym9vbCBtYWNfZHVwbGV4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00MjctLypcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0Mjg6ICogYXRsMWNfcmluZ19oZWFkZXIgcmVwcmVzZW50cyBhIHNpbmdsZSwgY29udGlndW91cyBibG9jayBvZiBETUEgc3BhY2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00MjktICogbWFwcGVkIGZvciB0aGUgdGhyZWUgZGVzY3JpcHRvciByaW5ncyAodHBkLCByZmQsIHJyZCkgZGVzY3JpYmVkIGJlbG93XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNDMwLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjQzMTpzdHJ1Y3QgYXRsMWNfcmluZ19oZWFkZXIge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQzMi1cdHZvaWQgKmRlc2M7XHRcdC8qIHZpcnR1YWwgYWRkcmVzcyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00MzctLypcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0Mzg6ICogYXRsMWNfYnVmZmVyIGlzIHdyYXBwZXIgYXJvdW5kIGEgcG9pbnRlciB0byBhIHNvY2tldCBidWZmZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00MzktICogc28gYSBETUEgaGFuZGxlIGNhbiBiZSBzdG9yZWQgYWxvbmcgd2l0aCB0aGUgc2tiXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNDQwLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjQ0MTpzdHJ1Y3QgYXRsMWNfYnVmZmVyIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00NDItXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1x0Lyogc29ja2V0IGJ1ZmZlciAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00NzEtLyogdHJhbnNpbWl0IHBhY2tldCBkZXNjcmlwdG9yICh0cGQpIHJpbmcgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0NzI6c3RydWN0IGF0bDFjX3RwZF9yaW5nIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0NzM6XHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00NzQtXHR2b2lkICpkZXNjO1x0XHQvKiBkZXNjcmlwdG9yIHJpbmcgdmlydHVhbCBhZGRyZXNzICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQ4MC1cdGF0b21pY190IG5leHRfdG9fY2xlYW47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NDgxOlx0c3RydWN0IGF0bDFjX2J1ZmZlciAqYnVmZmVyX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNDgyLVx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQ4NS0vKiByZWNlaXZlIGZyZWUgZGVzY3JpcHRvciAocmZkKSByaW5nICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NDg2OnN0cnVjdCBhdGwxY19yZmRfcmluZyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNDg3LVx0dm9pZCAqZGVzYztcdFx0LyogZGVzY3JpcHRvciByaW5nIHZpcnR1YWwgYWRkcmVzcyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00OTItXHR1MTYgbmV4dF90b19jbGVhbjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0OTM6XHRzdHJ1Y3QgYXRsMWNfYnVmZmVyICpidWZmZXJfaW5mbztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00OTQtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNDk2LS8qIHJlY2VpdmUgcmV0dXJuIGRlc2NyaXB0b3IgKHJyZCkgcmluZyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjQ5NzpzdHJ1Y3QgYXRsMWNfcnJkX3Jpbmcge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjQ5ODpcdHN0cnVjdCBhdGwxY19hZGFwdGVyICphZGFwdGVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQ5OS1cdHZvaWQgKmRlc2M7XHRcdC8qIGRlc2NyaXB0b3IgcmluZyB2aXJ0dWFsIGFkZHJlc3MgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNTA5LS8qIGJvYXJkIHNwZWNpZmljIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo1MTA6c3RydWN0IGF0bDFjX2FkYXB0ZXIge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTUxMS1cdHN0cnVjdCBuZXRfZGV2aWNlICAgKm5ldGRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC01MTItXHRzdHJ1Y3QgcGNpX2RldiAgICAgICpwZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjUxMzpcdHN0cnVjdCBhdGwxY19odyAgICAgICAgaHc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NTE0Olx0c3RydWN0IGF0bDFjX2h3X3N0YXRzICBod19zdGF0cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC01MTUtXHRzdHJ1Y3QgbWlpX2lmX2luZm8gIG1paTsgICAgLyogTUlJIGludGVyZmFjZSBpbmZvICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTU0MS1cdC8qIEFsbCBEZXNjcmlwdG9yIG1lbW9yeSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjU0MjpcdHN0cnVjdCBhdGwxY19yaW5nX2hlYWRlciByaW5nX2hlYWRlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo1NDM6XHRzdHJ1Y3QgYXRsMWNfdHBkX3JpbmcgdHBkX3JpbmdbQVRfTUFYX1RSQU5TTUlUX1FVRVVFXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo1NDQ6XHRzdHJ1Y3QgYXRsMWNfcmZkX3JpbmcgcmZkX3JpbmdbQVRfTUFYX1JFQ0VJVkVfUVVFVUVdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjU0NTpcdHN0cnVjdCBhdGwxY19ycmRfcmluZyBycmRfcmluZ1tBVF9NQVhfUkVDRUlWRV9RVUVVRV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNTQ2LVx0dTMyIGJkX251bWJlcjsgICAgIC8qIGJvYXJkIG51bWJlcjsqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC01ODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NTg4OmV4dGVybiBjaGFyIGF0bDFjX2RyaXZlcl9uYW1lW107XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNTg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjU5MDp2b2lkIGF0bDFjX3JlaW5pdF9sb2NrZWQoc3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjU5MTpzMzIgYXRsMWNfcmVzZXRfaHcoc3RydWN0IGF0bDFjX2h3ICpodyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NTkyOnZvaWQgYXRsMWNfc2V0X2V0aHRvb2xfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTU5My0jZW5kaWYgLyogX0FUTDFDX0hfICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMzojaW5jbHVkZSBcJiMzNDthdGwxYy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE1OnN0YXRpYyBpbnQgYXRsMWNfZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xNi1cdFx0XHRcdCAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MTg6XHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxOTpcdHN0cnVjdCBhdGwxY19odyAqaHcgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZWh3O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjAtXHR1MzIgc3VwcG9ydGVkLCBhZHZlcnRpc2luZztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy01OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjU5OnN0YXRpYyBpbnQgYXRsMWNfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy02MC1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtNjEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6NjI6XHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzo2MzpcdHN0cnVjdCBhdGwxY19odyAqaHcgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZWh3O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtNjQtXHR1MTYgIGF1dG9uZWdfYWR2ZXJ0aXNlZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy05Ni1cdFx0aHctXHUwMDNlYXV0b25lZ19hZHZlcnRpc2VkID0gYXV0b25lZ19hZHZlcnRpc2VkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6OTc6XHRcdGlmIChhdGwxY19yZXN0YXJ0X2F1dG9uZWcoaHcpICE9IDApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTk4LVx0XHRcdGlmIChuZXRpZl9tc2dfbGluayhhZGFwdGVyKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xMDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMDk6c3RhdGljIHUzMiBhdGwxY19nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTExMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMTE6XHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xMTItXHRyZXR1cm4gYWRhcHRlci1cdTAwM2Vtc2dfZW5hYmxlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTExNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjExNTpzdGF0aWMgdm9pZCBhdGwxY19zZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTMyIGRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xMTYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MTE3Olx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTE4LVx0YWRhcHRlci1cdTAwM2Vtc2dfZW5hYmxlID0gZGF0YTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xMjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMjE6c3RhdGljIGludCBhdGwxY19nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTEyMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MTI2OnN0YXRpYyB2b2lkIGF0bDFjX2dldF9yZWdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xMjctXHRcdFx0ICAgc3RydWN0IGV0aHRvb2xfcmVncyAqcmVncywgdm9pZCAqcClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTEyOC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMjk6XHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMzA6XHRzdHJ1Y3QgYXRsMWNfaHcgKmh3ID0gXHUwMDI2YWRhcHRlci1cdTAwM2VodztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTEzMS1cdHUzMiAqcmVnc19idWZmID0gcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxNjA6XHRhdGwxY19yZWFkX3BoeV9yZWcoaHcsIE1JSV9CTUNSLCBcdTAwMjZwaHlfZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xNjEtXHRyZWdzX2J1ZmZbQVRfUkVHU19MRU4vc2l6ZW9mKHUzMikgLSAyXSA9ICh1MzIpIHBoeV9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MTYyOlx0YXRsMWNfcmVhZF9waHlfcmVnKGh3LCBNSUlfQk1TUiwgXHUwMDI2cGh5X2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTYzLVx0cmVnc19idWZmW0FUX1JFR1NfTEVOL3NpemVvZih1MzIpIC0gMV0gPSAodTMyKSBwaHlfZGF0YTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxNjY6c3RhdGljIGludCBhdGwxY19nZXRfZWVwcm9tX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTY3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE2ODpcdHN0cnVjdCBhdGwxY19hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE3MDpcdGlmIChhdGwxY19jaGVja19lZXByb21fZXhpc3QoXHUwMDI2YWRhcHRlci1cdTAwM2VodykpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xNzEtXHRcdHJldHVybiBBVF9FRVBST01fTEVOO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE3NjpzdGF0aWMgaW50IGF0bDFjX2dldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE3Ny1cdFx0c3RydWN0IGV0aHRvb2xfZWVwcm9tICplZXByb20sIHU4ICpieXRlcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE3OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxNzk6XHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxODA6XHRzdHJ1Y3QgYXRsMWNfaHcgKmh3ID0gXHUwMDI2YWRhcHRlci1cdTAwM2VodztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE4MS1cdHUzMiAqZWVwcm9tX2J1ZmY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MTg5Olx0aWYgKCFhdGwxY19jaGVja19lZXByb21fZXhpc3QoaHcpKSAvKiBub3QgZXhpc3QgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE5MC1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjAzLVx0Zm9yIChpID0gZmlyc3RfZHdvcmQ7IGkgXHUwMDNjIGxhc3RfZHdvcmQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyMDQ6XHRcdGlmICghYXRsMWNfcmVhZF9lZXByb20oaHcsIGkgKiA0LCBcdTAwMjYoZWVwcm9tX2J1ZmZbaS1maXJzdF9kd29yZF0pKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjA1LVx0XHRcdGtmcmVlKGVlcHJvbV9idWZmKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yMTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyMTg6c3RhdGljIHZvaWQgYXRsMWNfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTIxOS1cdFx0c3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqZHJ2aW5mbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTIyMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyMjE6XHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyMjM6XHRzdHJzY3B5KGRydmluZm8tXHUwMDNlZHJpdmVyLCAgYXRsMWNfZHJpdmVyX25hbWUsIHNpemVvZihkcnZpbmZvLVx1MDAzZWRyaXZlcikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjI0LVx0c3Ryc2NweShkcnZpbmZvLVx1MDAzZWJ1c19pbmZvLCBwY2lfbmFtZShhZGFwdGVyLVx1MDAzZXBkZXYpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTIyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjIyODpzdGF0aWMgdm9pZCBhdGwxY19nZXRfd29sKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yMjktXHRcdFx0ICBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yMzAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MjMxOlx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjMyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI0ODpzdGF0aWMgaW50IGF0bDFjX3NldF93b2woc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfd29saW5mbyAqd29sKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjQ5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI1MDpcdHN0cnVjdCBhdGwxY19hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI1MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyNjg6c3RhdGljIGludCBhdGwxY19ud2F5X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yNjkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MjcwOlx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjcxLVx0aWYgKG5ldGlmX3J1bm5pbmcobmV0ZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI3MjpcdFx0YXRsMWNfcmVpbml0X2xvY2tlZChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI3My1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI3NjpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGF0bDFjX2V0aHRvb2xfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6Mjc3Olx0LmdldF9kcnZpbmZvICAgICAgICAgICAgPSBhdGwxY19nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI3ODpcdC5nZXRfcmVnc19sZW4gICAgICAgICAgID0gYXRsMWNfZ2V0X3JlZ3NfbGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6Mjc5Olx0LmdldF9yZWdzICAgICAgICAgICAgICAgPSBhdGwxY19nZXRfcmVncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI4MDpcdC5nZXRfd29sICAgICAgICAgICAgICAgID0gYXRsMWNfZ2V0X3dvbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI4MTpcdC5zZXRfd29sICAgICAgICAgICAgICAgID0gYXRsMWNfc2V0X3dvbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI4MjpcdC5nZXRfbXNnbGV2ZWwgICAgICAgICAgID0gYXRsMWNfZ2V0X21zZ2xldmVsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MjgzOlx0LnNldF9tc2dsZXZlbCAgICAgICAgICAgPSBhdGwxY19zZXRfbXNnbGV2ZWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyODQ6XHQubndheV9yZXNldCAgICAgICAgICAgICA9IGF0bDFjX253YXlfcmVzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yODUtXHQuZ2V0X2xpbmsgICAgICAgICAgICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyODY6XHQuZ2V0X2VlcHJvbV9sZW4gICAgICAgICA9IGF0bDFjX2dldF9lZXByb21fbGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6Mjg3Olx0LmdldF9lZXByb20gICAgICAgICAgICAgPSBhdGwxY19nZXRfZWVwcm9tLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6Mjg4Olx0LmdldF9saW5rX2tzZXR0aW5ncyAgICAgPSBhdGwxY19nZXRfbGlua19rc2V0dGluZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyODk6XHQuc2V0X2xpbmtfa3NldHRpbmdzICAgICA9IGF0bDFjX3NldF9saW5rX2tzZXR0aW5ncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI5MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MjkyOnZvaWQgYXRsMWNfc2V0X2V0aHRvb2xfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yOTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6Mjk0Olx0bmV0ZGV2LVx1MDAzZWV0aHRvb2xfb3BzID0gXHUwMDI2YXRsMWNfZXRodG9vbF9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yOTUtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxMzojaW5jbHVkZSBcJiMzNDthdGwxYy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTE4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjE5OmludCBhdGwxY19jaGVja19lZXByb21fZXhpc3Qoc3RydWN0IGF0bDFjX2h3ICpodylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjMzOnZvaWQgYXRsMWNfaHdfc2V0X21hY19hZGRyKHN0cnVjdCBhdGwxY19odyAqaHcsIHU4ICptYWNfYWRkcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTUyLS8qIHJlYWQgbWFjIGFkZHJlc3MgZnJvbSBoYXJkd2FyZSByZWdpc3RlciAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjUzOnN0YXRpYyBib29sIGF0bDFjX3JlYWRfY3VycmVudF9hZGRyKHN0cnVjdCBhdGwxY19odyAqaHcsIHU4ICpldGhfYWRkcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy01NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTY2LS8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6Njc6ICogYXRsMWNfZ2V0X3Blcm1hbmVudF9hZGRyZXNzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNjgtICogcmV0dXJuIDAgaWYgZ2V0IHZhbGlkIG1hYyBhZGRyZXNzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTY5LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjcwOnN0YXRpYyBpbnQgYXRsMWNfZ2V0X3Blcm1hbmVudF9hZGRyZXNzKHN0cnVjdCBhdGwxY19odyAqaHcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNzEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy03OC1cdC8qIE1BQy1hZGRyZXNzIGZyb20gQklPUyBpcyB0aGUgMXN0IHByaW9yaXR5ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6Nzk6XHRpZiAoYXRsMWNfcmVhZF9jdXJyZW50X2FkZHIoaHcsIGh3LVx1MDAzZXBlcm1fbWFjX2FkZHIpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTgwLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtODMtXHRBVF9SRUFEX1JFRyhodywgUkVHX09UUF9DVFJMLCBcdTAwMjZvdHBfY3RybF9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo4NDpcdGlmIChhdGwxY19jaGVja19lZXByb21fZXhpc3QoaHcpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtODUtXHRcdGlmIChody1cdTAwM2VuaWNfdHlwZSA9PSBhdGhyX2wxYyB8fCBody1cdTAwM2VuaWNfdHlwZSA9PSBhdGhyX2wyYykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy05NS1cdFx0aWYgKGh3LVx1MDAzZW5pY190eXBlID09IGF0aHJfbDJjX2IgfHwgaHctXHUwMDNlbmljX3R5cGUgPT0gYXRocl9sMmNfYjIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo5NjpcdFx0XHRhdGwxY19yZWFkX3BoeV9kYmcoaHcsIE1JSURCR19BTkFDVFJMLCBcdTAwMjZwaHlfZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtOTctXHRcdFx0cGh5X2RhdGEgXHUwMDI2PSB+QU5BQ1RSTF9IQl9FTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo5ODpcdFx0XHRhdGwxY193cml0ZV9waHlfZGJnKGh3LCBNSUlEQkdfQU5BQ1RSTCwgcGh5X2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjk5Olx0XHRcdGF0bDFjX3JlYWRfcGh5X2RiZyhodywgTUlJREJHX1ZPTFRfQ1RSTCwgXHUwMDI2cGh5X2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTEwMC1cdFx0XHRwaHlfZGF0YSB8PSBWT0xUX0NUUkxfU1dMT1dFU1Q7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MTAxOlx0XHRcdGF0bDFjX3dyaXRlX3BoeV9kYmcoaHcsIE1JSURCR19WT0xUX0NUUkwsIHBoeV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xMDItXHRcdFx0dWRlbGF5KDIwKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTI0LVx0aWYgKHJhaXNlX3ZvbCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjEyNTpcdFx0YXRsMWNfcmVhZF9waHlfZGJnKGh3LCBNSUlEQkdfQU5BQ1RSTCwgXHUwMDI2cGh5X2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTEyNi1cdFx0cGh5X2RhdGEgfD0gQU5BQ1RSTF9IQl9FTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxMjc6XHRcdGF0bDFjX3dyaXRlX3BoeV9kYmcoaHcsIE1JSURCR19BTkFDVFJMLCBwaHlfZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MTI4Olx0XHRhdGwxY19yZWFkX3BoeV9kYmcoaHcsIE1JSURCR19WT0xUX0NUUkwsIFx1MDAyNnBoeV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xMjktXHRcdHBoeV9kYXRhIFx1MDAyNj0gflZPTFRfQ1RSTF9TV0xPV0VTVDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxMzA6XHRcdGF0bDFjX3dyaXRlX3BoeV9kYmcoaHcsIE1JSURCR19WT0xUX0NUUkwsIHBoeV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xMzEtXHRcdHVkZWxheSgyMCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTEzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxMzQ6XHRpZiAoYXRsMWNfcmVhZF9jdXJyZW50X2FkZHIoaHcsIGh3LVx1MDAzZXBlcm1fbWFjX2FkZHIpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTEzNS1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTEzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxNDA6Ym9vbCBhdGwxY19yZWFkX2VlcHJvbShzdHJ1Y3QgYXRsMWNfaHcgKmh3LCB1MzIgb2Zmc2V0LCB1MzIgKnBfdmFsdWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTQxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTgyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjE4MzppbnQgYXRsMWNfcmVhZF9tYWNfYWRkcihzdHJ1Y3QgYXRsMWNfaHcgKmh3KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTE4NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTE4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxODc6XHRlcnIgPSBhdGwxY19nZXRfcGVybWFuZW50X2FkZHJlc3MoaHcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTE4OC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTE5NS0vKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjE5NjogKiBhdGwxY19oYXNoX21jX2FkZHJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xOTctICogIHB1cnBvc2Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMjAyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjIwMzp1MzIgYXRsMWNfaGFzaF9tY19hZGRyKHN0cnVjdCBhdGwxY19odyAqaHcsIHU4ICptY19hZGRyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTIwNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTIyMC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoyMjE6dm9pZCBhdGwxY19oYXNoX3NldChzdHJ1Y3QgYXRsMWNfaHcgKmh3LCB1MzIgaGFzaF92YWx1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yMjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yNDktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MjUwOmJvb2wgYXRsMWNfd2FpdF9tZGlvX2lkbGUoc3RydWN0IGF0bDFjX2h3ICpodylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yNTEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yNjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MjY1OnZvaWQgYXRsMWNfc3RvcF9waHlfcG9sbGluZyhzdHJ1Y3QgYXRsMWNfaHcgKmh3KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI2Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI3MC1cdEFUX1dSSVRFX1JFRyhodywgUkVHX01ESU9fQ1RSTCwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MjcxOlx0YXRsMWNfd2FpdF9tZGlvX2lkbGUoaHcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI3Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMjczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjI3NDp2b2lkIGF0bDFjX3N0YXJ0X3BoeV9wb2xsaW5nKHN0cnVjdCBhdGwxY19odyAqaHcsIHUxNiBjbGtfc2VsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI3NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI4Ni1cdEFUX1dSSVRFX1JFRyhodywgUkVHX01ESU9fQ1RSTCwgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoyODc6XHRhdGwxY193YWl0X21kaW9faWRsZShodyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMjg4LVx0dmFsIHw9IE1ESU9fQ1RSTF9BUF9FTjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMjk1LS8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6Mjk2OiAqIGF0bDFjX3JlYWRfcGh5X2NvcmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yOTctICogY29yZSBmdW5jdGlvbiB0byByZWFkIHJlZ2lzdGVyIGluIFBIWSB2aWEgTURJTyBjb250cm9sIHJlZ2lzdGVyLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zMDEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MzAyOmludCBhdGwxY19yZWFkX3BoeV9jb3JlKHN0cnVjdCBhdGwxY19odyAqaHcsIGJvb2wgZXh0LCB1OCBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzAzLVx0XHRcdHUxNiByZWcsIHUxNiAqcGh5X2RhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTMwNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzozMDg6XHRhdGwxY19zdG9wX3BoeV9wb2xsaW5nKGh3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zMDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTMzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzozMzM6XHRpZiAoIWF0bDFjX3dhaXRfbWRpb19pZGxlKGh3KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zMzQtXHRcdHJldHVybiAtMTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjMzOTpcdGF0bDFjX3N0YXJ0X3BoeV9wb2xsaW5nKGh3LCBjbGtfc2VsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zNDAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTM0NC0vKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjM0NTogKiBhdGwxY193cml0ZV9waHlfY29yZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTM0Ni0gKiBjb3JlIGZ1bmN0aW9uIHRvIHdyaXRlIHRvIHJlZ2lzdGVyIGluIFBIWSB2aWEgTURJTyBjb250cm9sIHJlZ2lzdGVyLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zNTAtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MzUxOmludCBhdGwxY193cml0ZV9waHlfY29yZShzdHJ1Y3QgYXRsMWNfaHcgKmh3LCBib29sIGV4dCwgdTggZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTM1Mi1cdFx0XHR1MTYgcmVnLCB1MTYgcGh5X2RhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTM1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzozNTc6XHRhdGwxY19zdG9wX3BoeV9wb2xsaW5nKGh3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zNTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTM4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzozODI6XHRpZiAoIWF0bDFjX3dhaXRfbWRpb19pZGxlKGh3KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zODMtXHRcdHJldHVybiAtMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6Mzg1Olx0YXRsMWNfc3RhcnRfcGh5X3BvbGxpbmcoaHcsIGNsa19zZWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTM4Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzk0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjM5NTppbnQgYXRsMWNfcmVhZF9waHlfcmVnKHN0cnVjdCBhdGwxY19odyAqaHcsIHUxNiByZWdfYWRkciwgdTE2ICpwaHlfZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zOTYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjM5NzpcdHJldHVybiBhdGwxY19yZWFkX3BoeV9jb3JlKGh3LCBmYWxzZSwgMCwgcmVnX2FkZHIsIHBoeV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zOTgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MDUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDA2OmludCBhdGwxY193cml0ZV9waHlfcmVnKHN0cnVjdCBhdGwxY19odyAqaHcsIHUzMiByZWdfYWRkciwgdTE2IHBoeV9kYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQwNy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDA4Olx0cmV0dXJuIGF0bDFjX3dyaXRlX3BoeV9jb3JlKGh3LCBmYWxzZSwgMCwgcmVnX2FkZHIsIHBoeV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MDktfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MTEtLyogcmVhZCBmcm9tIFBIWSBleHRlbnNpb24gcmVnaXN0ZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0MTI6aW50IGF0bDFjX3JlYWRfcGh5X2V4dChzdHJ1Y3QgYXRsMWNfaHcgKmh3LCB1OCBkZXZfYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MTMtXHRcdFx0dTE2IHJlZ19hZGRyLCB1MTYgKnBoeV9kYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQxNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDE1Olx0cmV0dXJuIGF0bDFjX3JlYWRfcGh5X2NvcmUoaHcsIHRydWUsIGRldl9hZGRyLCByZWdfYWRkciwgcGh5X2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQxNi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQxOC0vKiB3cml0ZSB0byBQSFkgZXh0ZW5zaW9uIHJlZ2lzdGVyICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDE5OmludCBhdGwxY193cml0ZV9waHlfZXh0KHN0cnVjdCBhdGwxY19odyAqaHcsIHU4IGRldl9hZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQyMC1cdFx0XHR1MTYgcmVnX2FkZHIsIHUxNiBwaHlfZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MjEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjQyMjpcdHJldHVybiBhdGwxY193cml0ZV9waHlfY29yZShodywgdHJ1ZSwgZGV2X2FkZHIsIHJlZ19hZGRyLCBwaHlfZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDIzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDI1OmludCBhdGwxY19yZWFkX3BoeV9kYmcoc3RydWN0IGF0bDFjX2h3ICpodywgdTE2IHJlZ19hZGRyLCB1MTYgKnBoeV9kYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQyNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0Mjk6XHRlcnIgPSBhdGwxY193cml0ZV9waHlfcmVnKGh3LCBNSUlfREJHX0FERFIsIHJlZ19hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MzAtXHRpZiAodW5saWtlbHkoZXJyKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDMyLVx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjQzMzpcdFx0ZXJyID0gYXRsMWNfcmVhZF9waHlfcmVnKGh3LCBNSUlfREJHX0RBVEEsIHBoeV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0Mzg6aW50IGF0bDFjX3dyaXRlX3BoeV9kYmcoc3RydWN0IGF0bDFjX2h3ICpodywgdTE2IHJlZ19hZGRyLCB1MTYgcGh5X2RhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjQ0MjpcdGVyciA9IGF0bDFjX3dyaXRlX3BoeV9yZWcoaHcsIE1JSV9EQkdfQUREUiwgcmVnX2FkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQ0My1cdGlmICh1bmxpa2VseShlcnIpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00NDUtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDQ2Olx0XHRlcnIgPSBhdGwxY193cml0ZV9waHlfcmVnKGh3LCBNSUlfREJHX0RBVEEsIHBoeV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00NDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQ1NS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0NTY6c3RhdGljIGludCBhdGwxY19waHlfc2V0dXBfYWR2KHN0cnVjdCBhdGwxY19odyAqaHcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDU3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDg0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjQ4NTpcdGlmIChhdGwxY193cml0ZV9waHlfcmVnKGh3LCBNSUlfQURWRVJUSVNFLCBtaWlfYWR2X2RhdGEpICE9IDAgfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0ODY6XHQgICAgYXRsMWNfd3JpdGVfcGh5X3JlZyhodywgTUlJX0NUUkwxMDAwLCBtaWlfZ2lnYV9jdHJsX2RhdGEpICE9IDApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDg3LVx0XHRyZXR1cm4gLTE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQ5MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0OTE6dm9pZCBhdGwxY19waHlfZGlzYWJsZShzdHJ1Y3QgYXRsMWNfaHcgKmh3KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQ5Mi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDkzOlx0YXRsMWNfcG93ZXJfc2F2aW5nKGh3LCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00OTQtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00OTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDk3OmludCBhdGwxY19waHlfcmVzZXQoc3RydWN0IGF0bDFjX2h3ICpodylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00OTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjQ5OTpcdHN0cnVjdCBhdGwxY19hZGFwdGVyICphZGFwdGVyID0gaHctXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy01MDAtXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGFkYXB0ZXItXHUwMDNlcGRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTIyLVx0aWYgKGh3LVx1MDAzZW5pY190eXBlID09IGF0aHJfbDJjX2IpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo1MjM6XHRcdGF0bDFjX3JlYWRfcGh5X2RiZyhodywgTUlJREJHX0NGR0xQU1BELCBcdTAwMjZwaHlfZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NTI0Olx0XHRhdGwxY193cml0ZV9waHlfZGJnKGh3LCBNSUlEQkdfQ0ZHTFBTUEQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTI1LVx0XHRcdHBoeV9kYXRhIFx1MDAyNiB+Q0ZHTFBTUERfUlNUQ05UX0NMSzEyNVNXKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTI5LVx0aWYgKGh3LVx1MDAzZW5pY190eXBlID09IGF0aHJfbDJjX2IgfHwgaHctXHUwMDNlbmljX3R5cGUgPT0gYXRocl9sMmNfYjIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo1MzA6XHRcdGF0bDFjX3JlYWRfcGh5X2RiZyhodywgTUlJREJHX0NBQkxFMVRIX0RFVCwgXHUwMDI2cGh5X2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTUzMS1cdFx0cGh5X2RhdGEgfD0gQ0FCTEUxVEhfREVUX0VOO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjUzMjpcdFx0YXRsMWNfd3JpdGVfcGh5X2RiZyhodywgTUlJREJHX0NBQkxFMVRIX0RFVCwgcGh5X2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTUzMy1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTM3LVx0XHRpZiAoaHctXHUwMDNlbmljX3R5cGUgPT0gYXRocl9sMmNfYiB8fCBody1cdTAwM2VuaWNfdHlwZSA9PSBhdGhyX2wyY19iMikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjUzODpcdFx0XHRhdGwxY19yZWFkX3BoeV9kYmcoaHcsIE1JSURCR19WT0xUX0NUUkwsIFx1MDAyNnBoeV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy01MzktXHRcdFx0cGh5X2RhdGEgXHUwMDI2PSB+Vk9MVF9DVFJMX1NXTE9XRVNUO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjU0MDpcdFx0XHRhdGwxY193cml0ZV9waHlfZGJnKGh3LCBNSUlEQkdfVk9MVF9DVFJMLCBwaHlfZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTQxLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTU0NS1cdFx0XHRMMURfTEVHQ1lQU19ERUYgOiBMMUNfTEVHQ1lQU19ERUY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NTQ2Olx0XHRhdGwxY193cml0ZV9waHlfZGJnKGh3LCBNSUlEQkdfTEVHQ1lQUywgcGh5X2RhdGEpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk1NzkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBBdGhlcm9zIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBBdGhlcm9zIEV0aGVybmV0IGRyaXZlcnMuIFRoZSBtb3N0IGxpa2VseSBwbGFjZSB0byBmaW5kIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvciB3b3VsZCBiZSBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHRvIGFyb3VuZCBsaW5lIDYzLCBiZWNhdXNlIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgeW91JiMzOTtsbCBmaW5kIGNvcmUgc2V0dGluZ3Mgb3IgbWF5YmUgdGhlIG1vZHVsZSBvcHRpb25zIGFyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGtpbmQgb2YgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1NTpcdFx0c2VsZWN0IENSQzMyXG4gIDU2Olx0XHRzZWxlY3QgTUlJXG4gIDU3Olx0XHRoZWxwXG4gIDU4Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBBdGhlcm9zIEwxRSBnaWdhYml0IGV0aGVybmV0IGFkYXB0ZXIuXG4gIDU5Olx0XG4gIDYwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBUaGUgbW9kdWxlXG4gIDYxOlx0XHQgIHdpbGwgYmUgY2FsbGVkIGF0bDFlLlxuICA2MjpcdFxuICA2MzpcdGNvbmZpZyBBVEwxQ1xuICA2NDpcdFx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBMMUMgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDY1Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA2NjpcdFx0c2VsZWN0IENSQzMyXG4gIDY3Olx0XHRzZWxlY3QgTUlJXG4gIDY4Olx0XHRoZWxwXG4gIDY5Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBBdGhlcm9zIEwxQyBnaWdhYml0IGV0aGVybmV0IGFkYXB0ZXIuXG4gIDcwOlx0XG4gIDcxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBUaGUgbW9kdWxlXG4gIDcyOlx0XHQgIHdpbGwgYmUgY2FsbGVkIGF0bDFjLlxuICA3MzpcdFxuICA3NDpcdGNvbmZpZyBBTFhcbiAgNzU6XHRcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgQVI4MTZ4L0FSODE3eCBzdXBwb3J0XCYjMzQ7XG4gIDc2Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA3NzpcdFx0c2VsZWN0IENSQzMyXG4gIDc4Olx0XHRzZWxlY3QgTURJT1xuICA3OTpcdFx0aGVscFxuICA4MDpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgUXVhbGNvbW0gQXRoZXJvcyBMMUYgZXRoZXJuZXQgYWRhcHRlcixcbiAgODE6XHRcdCAgaS5lLiB0aGUgZm9sbG93aW5nIGNoaXBzZXRzOlxuICA4MjpcdFxuICA4MzpcdFx0ICAxOTY5OjEwOTEgLSBBUjgxNjEgR2lnYWJpdCBFdGhlcm5ldFxuICA4NDpcdFx0ICAxOTY5OjEwOTAgLSBBUjgxNjIgRmFzdCBFdGhlcm5ldFxuICA4NTpcdFx0ICAxOTY5OjEwQTEgLSBBUjgxNzEgR2lnYWJpdCBFdGhlcm5ldFxuICA4NjpcdFx0ICAxOTY5OjEwQTAgLSBBUjgxNzIgRmFzdCBFdGhlcm5ldFxuICA4NzpcdFxuICA4ODpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgVGhlIG1vZHVsZVxuICA4OTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBhbHguXG4gIDkwOlx0XG4gIDkxOlx0ZW5kaWYgIyBORVRfVkVORE9SX0FUSEVST1NcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDI4MAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuIGV4cGVydDoKCioqRGl2aW5nIGludG8gdGhlIEFUTDFDIERyaXZlcioqCgpPa2F5LCB0aW1lIHRvIGdldCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgYXRsMWNfbWFpbi5jYCBmaWxlIHdpdGhpbiB0aGUgQXRoZXJvcyBFdGhlcm5ldCBkcml2ZXIgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIEkmIzM5O20gemVyb2luZyBpbiBvbiB0aGUgY29kZSBhcm91bmQgbGluZSAxNjAyLiBUaGF0JiMzOTtzIHRoZSBsaWtlbHkgbG9jYXRpb24gd2hlcmUgdGhlIGlzc3VlIEkmIzM5O20gZGVidWdnaW5nIG1pZ2h0IGJlIG1hbmlmZXN0aW5nLiBJJiMzOTt2ZSBnb3QgYSBodW5jaCBiYXNlZCBvbiByZWNlbnQgb2JzZXJ2YXRpb25zLCBhbmQgcGlucG9pbnRpbmcgdGhhdCBsaW5lIHdpbGwgbGV0IG1lIGNvbmZpcm0gbXkgdGhlb3J5LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHRoZXJlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1OTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTU5MDpcdFx0c3RydWN0IGF0bDFjX3RwZF9yaW5nICp0cGRfcmluZyA9XG4xNTkxOlx0XHRcdGNvbnRhaW5lcl9vZihuYXBpLCBzdHJ1Y3QgYXRsMWNfdHBkX3JpbmcsIG5hcGkpO1xuMTU5MjpcdFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSB0cGRfcmluZy1cdTAwM2VhZGFwdGVyO1xuMTU5MzpcdFx0c3RydWN0IG5ldGRldl9xdWV1ZSAqdHhxID1cbjE1OTQ6XHRcdFx0bmV0ZGV2X2dldF90eF9xdWV1ZShuYXBpLVx1MDAzZWRldiwgdHBkX3JpbmctXHUwMDNlbnVtKTtcbjE1OTU6XHRcdHN0cnVjdCBhdGwxY19idWZmZXIgKmJ1ZmZlcl9pbmZvO1xuMTU5NjpcdFx0c3RydWN0IHBjaV9kZXYgKnBkZXYgPSBhZGFwdGVyLVx1MDAzZXBkZXY7XG4xNTk3Olx0XHR1MTYgbmV4dF90b19jbGVhbiA9IGF0b21pY19yZWFkKFx1MDAyNnRwZF9yaW5nLVx1MDAzZW5leHRfdG9fY2xlYW4pO1xuMTU5ODpcdFx0dTE2IGh3X25leHRfdG9fY2xlYW47XG4xNTk5Olx0XHR1bnNpZ25lZCBpbnQgdG90YWxfYnl0ZXMgPSAwLCB0b3RhbF9wYWNrZXRzID0gMDtcbjE2MDA6XHRcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4xNjAxOlx0XG4xNjAyOlx0XHRBVF9SRUFEX1JFR1coXHUwMDI2YWRhcHRlci1cdTAwM2VodywgYXRsMWNfcXJlZ3NbdHBkX3JpbmctXHUwMDNlbnVtXS50cGRfY29ucyxcbjE2MDM6XHRcdFx0ICAgICBcdTAwMjZod19uZXh0X3RvX2NsZWFuKTtcbjE2MDQ6XHRcbjE2MDU6XHRcdGlmICh1bmxpa2VseShod19uZXh0X3RvX2NsZWFuIFx1MDAzZT0gdHBkX3JpbmctXHUwMDNlY291bnQpKVxuMTYwNjpcdFx0XHRod19uZXh0X3RvX2NsZWFuID0gbmV4dF90b19jbGVhbjtcbjE2MDc6XHRcbjE2MDg6XHRcdHdoaWxlIChuZXh0X3RvX2NsZWFuICE9IGh3X25leHRfdG9fY2xlYW4pIHtcbjE2MDk6XHRcdFx0YnVmZmVyX2luZm8gPSBcdTAwMjZ0cGRfcmluZy1cdTAwM2VidWZmZXJfaW5mb1tuZXh0X3RvX2NsZWFuXTtcbjE2MTA6XHRcdFx0aWYgKGJ1ZmZlcl9pbmZvLVx1MDAzZXNrYikge1xuMTYxMTpcdFx0XHRcdHRvdGFsX2J5dGVzICYjNDM7PSBidWZmZXJfaW5mby1cdTAwM2Vza2ItXHUwMDNlbGVuO1xuMTYxMjpcdFx0XHRcdHRvdGFsX3BhY2tldHMmIzQzOyYjNDM7O1xuMTYxMzpcdFx0XHR9XG4xNjE0Olx0XHRcdGF0bDFjX2NsZWFuX2J1ZmZlcihwZGV2LCBidWZmZXJfaW5mbywgYnVkZ2V0KTtcbjE2MTU6XHRcdFx0aWYgKCYjNDM7JiM0MztuZXh0X3RvX2NsZWFuID09IHRwZF9yaW5nLVx1MDAzZWNvdW50KVxuMTYxNjpcdFx0XHRcdG5leHRfdG9fY2xlYW4gPSAwO1xuMTYxNzpcdFx0XHRhdG9taWNfc2V0KFx1MDAyNnRwZF9yaW5nLVx1MDAzZW5leHRfdG9fY2xlYW4sIG5leHRfdG9fY2xlYW4pO1xuMTYxODpcdFx0fVxuMTYxOTpcdFxuMTYyMDpcdFx0bmV0ZGV2X3R4X2NvbXBsZXRlZF9xdWV1ZSh0eHEsIHRvdGFsX3BhY2tldHMsIHRvdGFsX2J5dGVzKTtcbjE2MjE6XHRcbjE2MjI6XHRcdGlmIChuZXRpZl90eF9xdWV1ZV9zdG9wcGVkKHR4cSkgXHUwMDI2XHUwMDI2IG5ldGlmX2NhcnJpZXJfb2soYWRhcHRlci1cdTAwM2VuZXRkZXYpKVxuMTYyMzpcdFx0XHRuZXRpZl90eF93YWtlX3F1ZXVlKHR4cSk7XG4xNjI0Olx0XG4xNjI1Olx0XHRpZiAodG90YWxfcGFja2V0cyBcdTAwM2MgYnVkZ2V0KSB7XG4xNjI2Olx0XHRcdG5hcGlfY29tcGxldGVfZG9uZShuYXBpLCB0b3RhbF9wYWNrZXRzKTtcbjE2Mjc6XHRcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2YWRhcHRlci1cdTAwM2Vody5pbnRyX21hc2tfbG9jaywgZmxhZ3MpO1xuMTYyODpcdFx0XHRhZGFwdGVyLVx1MDAzZWh3LmludHJfbWFzayB8PSBhdGwxY19xcmVnc1t0cGRfcmluZy1cdTAwM2VudW1dLnR4X2lzcjtcbjE2Mjk6XHRcdFx0QVRfV1JJVEVfUkVHKFx1MDAyNmFkYXB0ZXItXHUwMDNlaHcsIFJFR19JTVIsIGFkYXB0ZXItXHUwMDNlaHcuaW50cl9tYXNrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTMxMAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDI2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgYXRsMWNgIERyaXZlciBhbmQgUUVNVSBFbXVsYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBhdGwxY2AgaXMgYSBQQ0kgZGV2aWNlIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aG9zZSBBdGhlcm9zIEwxQyBHaWdhYml0IEV0aGVybmV0IGFkYXB0ZXJzLiBUaGUgcXVlc3Rpb24gSSBuZWVkIHRvIGFuc3dlciBpcyB3aGV0aGVyIFFFTVUgcHJvcGVybHkgZW11bGF0ZXMgdGhlc2UgZGV2aWNlcy4gQmFzZWQgb24gdGhlIHByb21wdCBwcm92aWRlZCwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBkb2VzIFFFTVUgZXZlbiAqdHJ5KiB0byBlbXVsYXRlIHRoZSBBdGhlcm9zIEwxQz8KCkxldCYjMzk7cyByZWZlciBiYWNrIHRvIFNlY3Rpb24gMiBvZiB0aGUgcHJvbXB0LiBJdCBsaXN0cyAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IOKAkyB0aGluZ3MgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIGJlY2F1c2UgdGhleSByZXF1aXJlIGEgcmVhbCBBU0lDIG9yIFBDSWUgY2FyZC4gVGhlIGxpc3QgaW5jbHVkZXMgdGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgZXRjLiBXaGlsZSBgYXRsMWNgIGlzbiYjMzk7dCBleHBsaWNpdGx5IGxpc3RlZCwgaXQgcmFpc2VzIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb246IGlzIHRoZSBBdGhlcm9zIEwxQyBpbiB0aGF0IHNhbWUgY2F0ZWdvcnk/CgpNeSBuZXh0IHRob3VnaHQgcHJvY2VzcyBpcyBmb2N1c2VkIG9uIHdoYXQgUUVNVSAqZG9lcyogZW11bGF0ZSBpbiB0ZXJtcyBvZiBuZXR3b3JrIGNhcmRzLiBJIHJlY2FsbCB0aGUgdXN1YWwgc3VzcGVjdHM6IGUxMDAwLCBlMTAwMGUsIGlnYiwgcnRsODEzOSwgYG5lMmtfcGNpYCwgYHBjbmV0YCwgYHZpcnRpby1uZXQtcGNpYCwgYHZteG5ldDNgLCBgcm9ja2VyYCwgYHN1bmdlbWAsIGBzdW5nZW0tcGNpYCwgZXRjLiBJJiMzOTttIG5vdCBzZWVpbmcgQVI4MXh4IG9yIEwxQyB0aGVyZS4gVGhpcyBzdWdnZXN0cyBJIG5lZWQgdG8gZGlnIGRlZXBlci4KClNvLCB0aGUga2V5IHF1ZXN0aW9ucyBhcmU6IERvZXMgUUVNVSBoYXZlIGFueSB2aXJ0dWFsIGJ1cyBpbXBsZW1lbnRhdGlvbnMgb3Igb3RoZXIgZm9ybXMgb2YgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGNhcmQgZmFtaWx5PyBJcyB0aGUgYGF0bDFjYCBkcml2ZXIgc3RyaWN0bHkgYSBQQ0kgZHJpdmVyPyBJIG5lZWQgdG8gbG9vayBpbnRvIHdoZXRoZXIgaXQmIzM5O3MgdGllZCBzb2xlbHkgdG8gYSBwaHlzaWNhbCBQQ0kgaW1wbGVtZW50YXRpb24sIG9yIGlmIHRoZXJlJiMzOTtzIGFueSBhYnN0cmFjdGlvbiBsYXllciB0aGF0IG1pZ2h0IGZhY2lsaXRhdGUgc29tZSBmb3JtIG9mIHZpcnR1YWwgZGV2aWNlIGluIFFFTVUuIFNwZWNpZmljYWxseSwgbGV0IG1lIGNoZWNrIHRoZSBgcGNpX2RyaXZlcmAgdXNhZ2Ugd2l0aGluIHRoZSBgYXRsMWNgIHNvdXJjZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGNpX2RyaXZlcnxwY2lfcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYz0yODgwPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBhdGwxY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmMtMjg4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jOjI4OTA6bW9kdWxlX3BjaV9kcml2ZXIoYXRsMWNfZHJpdmVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIxNjgKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqUENJIFRhYmxlIEluc3BlY3Rpb246IGF0bDFjKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIEZpcnN0IHRoaW5ncyBmaXJzdDogSSBuZWVkIHRvIHZlcmlmeSB0aGUgUENJIHRhYmxlIGZvciB0aGUgYGF0bDFjYCBkcml2ZXIuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSB3aGVuIEkmIzM5O20gZGVidWdnaW5nIG9yIGFuYWx5emluZyBhbnl0aGluZyByZWxhdGVkIHRvIG5ldHdvcmsgaGFyZHdhcmUsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gaXNzdWVzIG9yIGRyaXZlci1yZWxhdGVkIHByb2JsZW1zLiBUaGUgUENJIHRhYmxlIGhvbGRzIGNydWNpYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGhhcmR3YXJlJiMzOTtzIGNvbmZpZ3VyYXRpb24sIGluY2x1ZGluZyBpdHMgdmVuZG9yIGFuZCBkZXZpY2UgSURzLCBpbnRlcnJ1cHQgYXNzaWdubWVudHMsIGFuZCBvdGhlciBjcml0aWNhbCBkZXRhaWxzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaW5kaWNhdGlvbnMgb2YgY29uZmxpY3RzLCBtaXNjb25maWd1cmF0aW9ucywgb3IgYW55dGhpbmcgb3V0IG9mIHRoZSBvcmRpbmFyeSB0aGF0IG1pZ2h0IHNoZWQgbGlnaHQgb24gdGhlIGN1cnJlbnQgc2l0dWF0aW9uLiBJJiMzOTtsbCBiZSBleHBlY3Rpbmcgc3BlY2lmaWMgdmVuZG9yIGFuZCBkZXZpY2UgSURzIHRvIHZlcmlmeSBpdOKAmXMgdGhlIGNvcnJlY3QgaGFyZHdhcmUuIEZ1cnRoZXJtb3JlLCBJ4oCZbGwgYmUgY2hlY2tpbmcgZm9yIHRoZSBidXMgYW5kIGRldmljZSBudW1iZXJzLCBtZW1vcnkgYW5kIGludGVycnVwdCBhc3NpZ25tZW50cywgYW5kIGFueSByZXNvdXJjZSBjb25mbGljdHMgdGhhdCBtaWdodCBleHBsYWluIHN1Ym9wdGltYWwgcGVyZm9ybWFuY2Ugb3IgY29ubmVjdGl2aXR5IGlzc3Vlcy4gRXNzZW50aWFsbHksIHRoaXMgUENJIHRhYmxlIGNoZWNrIGlzIHRoZSBpbml0aWFsLCBmb3VuZGF0aW9uYWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGBhdGwxY2AgTklDIGlzIGJlaW5nIHJlY29nbml6ZWQgYW5kIG1hbmFnZWQgYnkgdGhlIHN5c3RlbS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGl04oCZcyBvZnRlbiBhIGZydWl0ZnVsIHBsYWNlIHRvIHN0YXJ0LCBlc3BlY2lhbGx5IHdoZW4gZmFjaW5nIHNlZW1pbmdseSBvYnNjdXJlIHByb2JsZW1zLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGNoZWNrcG9pbnQgdGhhdCB3aWxsIHByb3ZpZGUgY3JpdGljYWwgaW5mb3JtYXRpb24gdG8gZ3VpZGUgbXkgbmV4dCBzdGVwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI4NTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7Mjg1MDpcdCAqXG4yODUxOlx0ICogVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiB0aGUgZXJyb3IgcmVjb3ZlcnkgZHJpdmVyIHRlbGxzIHVzIHRoYXRcbjI4NTI6XHQgKiBpdHMgT0sgdG8gcmVzdW1lIG5vcm1hbCBvcGVyYXRpb24uIEltcGxlbWVudGF0aW9uIHJlc2VtYmxlcyB0aGVcbjI4NTM6XHQgKiBzZWNvbmQtaGFsZiBvZiB0aGUgYXRsMWNfcmVzdW1lIHJvdXRpbmUuXG4yODU0Olx0ICovXG4yODU1Olx0c3RhdGljIHZvaWQgYXRsMWNfaW9fcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuMjg1NjpcdHtcbjI4NTc6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XG4yODU4Olx0XHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG4yODU5Olx0XG4yODYwOlx0XHRpZiAobmV0aWZfcnVubmluZyhuZXRkZXYpKSB7XG4yODYxOlx0XHRcdGlmIChhdGwxY191cChhZGFwdGVyKSkge1xuMjg2MjpcdFx0XHRcdGlmIChuZXRpZl9tc2dfaHcoYWRhcHRlcikpXG4yODYzOlx0XHRcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuMjg2NDpcdFx0XHRcdFx0XHRcJiMzNDtDYW5ub3QgYnJpbmcgZGV2aWNlIGJhY2sgdXAgYWZ0ZXIgcmVzZXRcXG5cJiMzNDspO1xuMjg2NTpcdFx0XHRcdHJldHVybjtcbjI4NjY6XHRcdFx0fVxuMjg2NzpcdFx0fVxuMjg2ODpcdFxuMjg2OTpcdFx0bmV0aWZfZGV2aWNlX2F0dGFjaChuZXRkZXYpO1xuMjg3MDpcdH1cbjI4NzE6XHRcbjI4NzI6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBhdGwxY19lcnJfaGFuZGxlciA9IHtcbjI4NzM6XHRcdC5lcnJvcl9kZXRlY3RlZCA9IGF0bDFjX2lvX2Vycm9yX2RldGVjdGVkLFxuMjg3NDpcdFx0LnNsb3RfcmVzZXQgPSBhdGwxY19pb19zbG90X3Jlc2V0LFxuMjg3NTpcdFx0LnJlc3VtZSA9IGF0bDFjX2lvX3Jlc3VtZSxcbjI4NzY6XHR9O1xuMjg3NzpcdFxuMjg3ODpcdHN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhhdGwxY19wbV9vcHMsIGF0bDFjX3N1c3BlbmQsIGF0bDFjX3Jlc3VtZSk7XG4yODc5Olx0XG4yODgwOlx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGF0bDFjX2RyaXZlciA9IHtcbjI4ODE6XHRcdC5uYW1lICAgICA9IGF0bDFjX2RyaXZlcl9uYW1lLFxuMjg4MjpcdFx0LmlkX3RhYmxlID0gYXRsMWNfcGNpX3RibCxcbjI4ODM6XHRcdC5wcm9iZSAgICA9IGF0bDFjX3Byb2JlLFxuMjg4NDpcdFx0LnJlbW92ZSAgID0gYXRsMWNfcmVtb3ZlLFxuMjg4NTpcdFx0LnNodXRkb3duID0gYXRsMWNfc2h1dGRvd24sXG4yODg2Olx0XHQuZXJyX2hhbmRsZXIgPSBcdTAwMjZhdGwxY19lcnJfaGFuZGxlcixcbjI4ODc6XHRcdC5kcml2ZXIucG0gPSBcdTAwMjZhdGwxY19wbV9vcHMsXG4yODg4Olx0fTtcbjI4ODk6XHRcbjI4OTA6XHRtb2R1bGVfcGNpX2RyaXZlcihhdGwxY19kcml2ZXIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzE1NQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqQ2hlY2tpbmcgYGF0bDFjX3BjaV90YmxgKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBGaXJzdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIHRoaW5raW5nIGNsZWFybHkuIEkgbmVlZCB0byBjaGVjayBgYXRsMWNfcGNpX3RibGAuIEl0JiMzOTtzIGxpa2VseSB0aGF0IEkmIzM5O20gbG9va2luZyBmb3IgYSBzcGVjaWZpYyBQQ0kgZGV2aWNlIElEIG9yIHBlcmhhcHMgc29tZSB2ZW5kb3Itc3BlY2lmaWMgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIEF0aGVyb3MgQVI4MXh4IEV0aGVybmV0IGNvbnRyb2xsZXIsIHNwZWNpZmljYWxseSB0aGUgYGF0bDFjYCBkcml2ZXIuIEkmIzM5O20gcHJvYmFibHkgZGlnZ2luZyBpbnRvIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gb3IgZGV2aWNlIHByb2JlIGxvZ2ljLiBLbm93aW5nIGBhdGwxY19wY2lfdGJsYCBpcyBsaWtlbHkgYSBQQ0kgSUQgdGFibGUgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIGNvdWxkIGJlIGRlYnVnZ2luZyBhIGRldmljZSBpbml0aWFsaXphdGlvbiBpc3N1ZSwgdHJvdWJsZXNob290aW5nIGEgZHJpdmVyIGNvbXBhdGliaWxpdHkgcHJvYmxlbSwgb3IgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgc3BlY2lmaWMgZGV2aWNlIGlzIGhhbmRsZWQgYXQgdGhlIGhhcmR3YXJlIGxldmVsLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hpY2gga2VybmVsIHZlcnNpb24gSSYjMzk7bSB3b3JraW5nIHdpdGgsIGFzIHRoaXMgZGF0YSBjYW4gY2hhbmdlIGFjcm9zcyBkaWZmZXJlbnQgcmVsZWFzZXMuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBsb2NhdGUgdGhlIHJlbGV2YW50IHNlY3Rpb24gb2YgY29kZSwgdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb24sIGFuZCBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgYmVoYXZpbmcgYXMgZXhwZWN0ZWQgaW4gdGhlIGNvbnRleHQgb2YgbXkgY3VycmVudCB0YXNrLiBJIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhlIHRhYmxlIGlzIHN0cnVjdHVyZWQgdGhlIHdheSBJIGV4cGVjdCBpdCB0byBiZS4gVGhpcyBpcyBhIGNvbW1vbiBzdGFydGluZyBwb2ludCBmb3IgUENJIGRldmljZSBkcml2ZXIgZGVidWdnaW5nLCBhbmQgSSBuZWVkIHRvIGtlZXAgbXkgZm9jdXMuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYW55IHVudXN1YWwgY29uZmlndXJhdGlvbnMsIG9yIHVuZXhwZWN0ZWQgZW50cmllcy4gVGhpcyB0YWJsZSBpcyB3aGVyZSB0aGUgZHJpdmVyIGxpbmtzIHNwZWNpZmljIGhhcmR3YXJlIHdpdGggdGhlIGNvcnJlY3QgZHJpdmVyIGZvciBpbml0aWFsaXphdGlvbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRsMWNfcGNpX3RibCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmM9MTE9Y2hhciBhdGwxY19kcml2ZXJfbmFtZVtdID0gXCYjMzQ7YXRsMWNcJiMzNDs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmMtMTMtLypcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jOjE0OiAqIGF0bDFjX3BjaV90YmwgLSBQQ0kgRGV2aWNlIElEIFRhYmxlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYy0xNS0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jLTIxLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmM6MjI6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGF0bDFjX3BjaV90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jLTIzLVx0e1BDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9BVFRBTlNJQywgUENJX0RFVklDRV9JRF9BVFRBTlNJQ19MMUMpfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYy0zMS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmM6MzI6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGF0bDFjX3BjaV90YmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmMtMzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmM9MjU4Mz1zdGF0aWMgaW50IGF0bDFjX2luaXRfbmV0ZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jLTI2MDYtICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYzoyNjA3OiAqIEBlbnQ6IGVudHJ5IGluIGF0bDFjX3BjaV90YmxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jLTI2MDgtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYz0yODgwPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBhdGwxY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYy0yODgxLVx0Lm5hbWUgICAgID0gYXRsMWNfZHJpdmVyX25hbWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYzoyODgyOlx0LmlkX3RhYmxlID0gYXRsMWNfcGNpX3RibCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jLTI4ODMtXHQucHJvYmUgICAgPSBhdGwxY19wcm9iZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyMjUKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEZXZpY2UgSUQgSW5zcGVjdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBzdGFydGVkLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgYmFzaWNzLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB0YWtlIGEgbG9vayBhdCB0aGUgZGV2aWNlIElEcy4gVGhpcyBpcyBhbHdheXMgdGhlIHBsYWNlIHRvIHN0YXJ0IHdoZW4gSSBhbSBpbnZlc3RpZ2F0aW5nIGFuIGlzc3VlLCBzZXR0aW5nIHVwIGFuIGluZnJhc3RydWN0dXJlLCBvciB0cm91Ymxlc2hvb3RpbmcgYSBuZXR3b3JrIGNvbm5lY3Rpb24uCgpLbm93aW5nIHRoZSB1bmlxdWUgSURzIGlzIHRoZSBjb3JuZXJzdG9uZSBvZiBhbnkgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTtyZSB3b3JraW5nIHdpdGggaGVyZS4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoZSBtb2RlbHMgYW5kIGNvbm5lY3Rpb25zIGJlZm9yZSBwcm9jZWVkaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyMDpcdCAqICAgQ2xhc3MsIENsYXNzIE1hc2ssIHByaXZhdGUgZGF0YSAobm90IHVzZWQpIH1cbiAgMjE6XHQgKi9cbiAgMjI6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgYXRsMWNfcGNpX3RibFtdID0ge1xuICAyMzpcdFx0e1BDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9BVFRBTlNJQywgUENJX0RFVklDRV9JRF9BVFRBTlNJQ19MMUMpfSxcbiAgMjQ6XHRcdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVRUQU5TSUMsIFBDSV9ERVZJQ0VfSURfQVRUQU5TSUNfTDJDKX0sXG4gIDI1Olx0XHR7UENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0FUVEFOU0lDLCBQQ0lfREVWSUNFX0lEX0FUSEVST1NfTDJDX0IpfSxcbiAgMjY6XHRcdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVRUQU5TSUMsIFBDSV9ERVZJQ0VfSURfQVRIRVJPU19MMkNfQjIpfSxcbiAgMjc6XHRcdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVRUQU5TSUMsIFBDSV9ERVZJQ0VfSURfQVRIRVJPU19MMUQpfSxcbiAgMjg6XHRcdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVRUQU5TSUMsIFBDSV9ERVZJQ0VfSURfQVRIRVJPU19MMURfMl8wKX0sXG4gIDI5Olx0XHQvKiByZXF1aXJlZCBsYXN0IGVudHJ5ICovXG4gIDMwOlx0XHR7IDAgfVxuICAzMTpcdH07XG4gIDMyOlx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGF0bDFjX3BjaV90YmwpO1xuICAzMzpcdFxuICAzNDpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7SmllIFlhbmdcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDc1OAoJCQkJCQkJb3V0cHV0OiAxNDkKCQkJCQkJCXRob3VnaHRzOiAxMDg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBhdGwxYyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIGlzIGV2ZW4gKmZ1enphYmxlKiB3aXRoaW4gdGhlIGNvbnRleHQgb2Ygc3RhbmRhcmQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEkga25vdyB3ZSYjMzk7cmUgbG9va2luZyBhdCBQQ0kgZGV2aWNlcywgc3BlY2lmaWNhbGx5IEF0dGFuc2ljIC8gUXVhbGNvbW0gQXRoZXJvcyBMMUMgYW5kIHJlbGF0ZWQgdmFyaWF0aW9ucy4gVmVuZG9yIElEIDB4MTk2OSBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIHBvdGVudGlhbGx5IHByb2JsZW1hdGljLiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgc3RhbmRhcmQgUUVNVSBvciBHQ0Ugb2ZmZXIgYWRlcXVhdGUgZW11bGF0aW9uIG9mIHRoZXNlIEF0aGVyb3MgTDFDIG5ldHdvcmsgY2FyZHM/CgpJIGtub3cgUUVNVSBkb2VzbiYjMzk7dCBkaXJlY3RseSBtb2RlbCB0aGVzZSBBdHRhbnNpYy9BdGhlcm9zIE5JQ3MuIFRoYXQmIzM5O3MgdGhlIGtleS4gTm93LCBsZXQmIzM5O3MgY29uc3VsdCB0aGUgZ3VpZGVsaW5lcy4gU3BlY2lmaWNhbGx5LCBzZWN0aW9uIDIsIHRoZSAmIzM0O05FR0FUSVZFIENSSVRFUklBLCYjMzQ7IHRoZSBrZXkgcG9pbnQgaGVyZSBpcyB0aGF0IHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byBjZXJ0YWluIGNhdGVnb3JpZXMuIFRoZSByZWxldmFudCBvbmUgaGVyZSBpcyAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSwmIzM0OyB3aGljaCBleHBsaWNpdGx5IG1lbnRpb25zIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRldmljZXMgdGhhdCBhcmVuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoaW5ncyBsaWtlIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMsIGFuZCB0aGUgbGlrZS4KClNvLCB0aGUgbmV4dCB0aG91Z2h0IGlzIHdoZXRoZXIgdGhpcyBgYXRsMWNgIGRyaXZlciBjYW4gYmUgcmVhY2hlZCB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHBhdGNoIGFuZCB0aGUgYGF0bDFjYCBkcml2ZXImIzM5O3MgZXhlY3V0aW9uIHBhdGguIFRoZSBwYXRjaCBtb2RpZmllcyBgYXRsMWNfY2xlYW5fdHhgLCB0aGUgTkFQSSBwb2xsaW5nIGNhbGxiYWNrIGZvciBUWCBjbGVhbnVwIHdpdGhpbiB0aGUgYGF0bDFjYCBldGhlcm5ldCBkcml2ZXIuIEkgcmVjYWxsIHRoZSBjb2RlOgpgYGBjCglBVF9SRUFEX1JFR1coJmFtcDthZGFwdGVyLSZndDtodywgYXRsMWNfcXJlZ3NbdHBkX3JpbmctJmd0O251bV0udHBkX2NvbnMsCgkJICAgICAmYW1wO2h3X25leHRfdG9fY2xlYW4pOwoKCWlmICh1bmxpa2VseShod19uZXh0X3RvX2NsZWFuICZndDs9IHRwZF9yaW5nLSZndDtjb3VudCkpCgkJaHdfbmV4dF90b19jbGVhbiA9IG5leHRfdG9fY2xlYW47CmBgYAoKVGhpcyBpcyAqaW5zaWRlKiBgYXRsMWNfY2xlYW5fdHhgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBOQVBJIHBvbGwgaGFuZGxlciAoYGF0bDFjX2NsZWFuX3J4YCAvIGBhdGwxY19jbGVhbl90eGAgc2NoZWR1bGVkIGJ5IGludGVycnVwdCBoYW5kbGVyIGBhdGwxY19pbnRyYCkuIFRoaXMsIGNydWNpYWxseSwgcmVxdWlyZXMgdGhlIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSBkZXZpY2UgdG8gYmUgcHJvYmVkIGFuZCBib3VuZCB0aHJvdWdoIGBhdGwxY19wcm9iZWAuIEFuZCBgYXRsMWNfcHJvYmVgIGlzIHZlcnkgc3BlY2lmaWM6IGl0IG9ubHkgYmluZHMgdG8gdGhvc2UgQXRoZXJvcy9BdHRhbnNpYyBQQ0kgZGV2aWNlcyAoMHgxOTY5OiAweDEwNjMsIDB4MTA2MiwgMHgyMDYwLCAweDIwNjIsIDB4MTA3MywgMHgxMDgzKS4KClRoZXJlZm9yZSwgYmVjYXVzZSBzdGFuZGFyZCBRRU1VIChhbmQgR0NFIFZNcykgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGVzZSBOSUNzLCB0aGUgZnVuY3Rpb24gYGF0bDFjX2NsZWFuX3R4YCBpcyAqc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlKiBpbiB0aGVzZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEl0IGlzIGJsb2NrZWQgb24gdGhlIGhhcmR3YXJlIQoKVG8gYmUgc3VyZSwgSSYjMzk7bGwgcmV2aXNpdCBTZWN0aW9uIDEsICYjMzQ7UkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEUuJiMzNDsgVGhlIGd1aWRlbGluZSBjbGVhcmx5IHN0YXRlcyB0aGF0IGZ1enppbmcgY2FuIG9ubHkgZmluZCBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIElmIHRoZSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLCBldmVuIGlmIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLiBTZWN0aW9uIDIgY29uZmlybXMgdGhpcyBhZ2FpbiwgZXhwbGljaXRseSBzdGF0aW5nIGl0IGFib3V0IHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlLgoKVGhlIGF0bDFjIGRyaXZlciBpcyAqZXhhY3RseSogdGhpczogYSB2ZW5kb3Itc3BlY2lmaWMgUENJIGV0aGVybmV0IGRyaXZlciBmb3IgQXRoZXJvcyBMMUMvTDJDL0wxRCBjaGlwc2V0cyB0aGF0IGRlbWFuZHMgcGh5c2ljYWwgaGFyZHdhcmUuCgpUaHVzLCBiYXNlZCBvbiB0aGlzIHRob3JvdWdoIGFuYWx5c2lzLCBgV29ydGhGdXp6aW5nYCBtdXN0IGJlIGZhbHNlLgoKTGV0JiMzOTtzIGFsc28gbm90ZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM6IGBBVEwxQ2AsIGBQQ0lgLCBhbmQgYE5FVF9WRU5ET1JfQVRIRVJPU2AsIGFuZCB0aGUgc3ltYm9sIG9mIGZvY3VzIHdoaWNoIGlzIGBhdGwxY19jbGVhbl90eGAuCgpUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiB0aGUgcGF0Y2ggdG91Y2hlcyBgYXRsMWNfY2xlYW5fdHgoKWAsIHdoaWNoIGxpdmVzIGluIHRoZSBBdGhlcm9zIEwxQyBQQ0kgZXRoZXJuZXQgZHJpdmVyIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNgKS4gVGhpcyBkcml2ZXIgaXMgdGllZCB0byBwaHlzaWNhbCBQQ0kgZGV2aWNlcyB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UuIFRoaXMgbWFrZXMgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9jdXNTeW1ib2xzIG11c3QgYmUgZW1wdHkgaWYgV29ydGhGdXp6aW5nIGlzIGZhbHNlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUTDFDJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0bDFjX2NsZWFuX3R4JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBhdGwxY19jbGVhbl90eGAgaW4gdGhlIEF0aGVyb3MgTDFDIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNgKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUXVhbGNvbW0gQXRoZXJvcy9BdHRhbnNpYyBQQ0kgaGFyZHdhcmUgKEwxQywgTDJDLCBMMUQpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtGb2N1c1N5bWJvbHMgbXVzdCBiZSBlbXB0eSBpZiBXb3J0aEZ1enppbmcgaXMgZmFsc2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTAyCgkJCQkJCQlvdXRwdXQ6IDE0MAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvYmxlbToKCioqQ2xlYW5pbmcgVXAgYSBQb3RlbnRpYWwgRGF0YSBJbmNvbnNpc3RlbmN5KioKCkFscmlnaHQsIHNvIEkmIzM5O3ZlIHNwb3R0ZWQgc29tZXRoaW5nIGluIHRoZSBjb2RlIHRoYXQmIzM5O3MgZ290IGEgcG90ZW50aWFsIGluY29uc2lzdGVuY3ksIGEgYml0IG9mIGEgbG9naWNhbCBmbGF3LiBJJiMzOTttIHNlZWluZyB0aGF0IHRoZSBgRm9jdXNTeW1ib2xzYCBjb2xsZWN0aW9uICpzaG91bGQqIGJlIGVtcHR5IGlmIHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIGlzIGZhbHNlLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIElmIHdlIGFyZW4mIzM5O3QgZnV6emluZywgd2UgZG9uJiMzOTt0IG5lZWQgYW55IGZvY3VzIHN5bWJvbHMsIHJpZ2h0PyBJdCYjMzk7cyBhIHdhc3RlIG9mIHJlc291cmNlcyBhbmQgcG90ZW50aWFsbHkgbGVhZHMgdG8gY29uZnVzaW9uIGlmIHRoZXkmIzM5O3JlIHBvcHVsYXRlZCB3aGVuIHRoZXkgc2hvdWxkbiYjMzk7dCBiZS4KClRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgZml4LCBidXQgYW4gaW1wb3J0YW50IG9uZS4gSXQmIzM5O3MgYWJvdXQgbWFpbnRhaW5pbmcgZGF0YSBpbnRlZ3JpdHkgYW5kIGtlZXBpbmcgdGhlIGNvZGUgY2xlYW4uIExldCYjMzk7cyBnZXQgdGhpcyBjbGVhbmVkIHVwIHRvIHByZXZlbnQgZnV0dXJlIGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUTDFDJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgYXRsMWNfY2xlYW5fdHhgIGluIHRoZSBBdGhlcm9zIEwxQyBHaWdhYml0IEV0aGVybmV0IGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jYCkuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFF1YWxjb21tIEF0aGVyb3MvQXR0YW5zaWMgUENJIGhhcmR3YXJlIChMMUMsIEwyQywgTDFEKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEwxQyYjMzQ7LAogICAgJiMzNDtQQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGF0bDFjX2NsZWFuX3R4YCBpbiB0aGUgQXRoZXJvcyBMMUMgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uY2ApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBRdWFsY29tbSBBdGhlcm9zL0F0dGFuc2ljIFBDSSBoYXJkd2FyZSAoTDFDLCBMMkMsIEwxRCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjQ0OjI0LjUxODU2MDEwMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MzM2MDUyOTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUTDFDXCIsXG4gICAgXCJQQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBhdGwxY19jbGVhbl90eGAgaW4gdGhlIEF0aGVyb3MgTDFDIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNgKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUXVhbGNvbW0gQXRoZXJvcy9BdHRhbnNpYyBQQ0kgaGFyZHdhcmUgKEwxQywgTDJDLCBMMUQpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjQ0OjI0LjUxODU2ODg2MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcxMzk4NTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNGYxZjM5Y2M1MjBmOGU1YzQwNTExZjdkMTFkOWEwOGRmOWE1NWNlNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCAxMSAyMTo0NDoyMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jXFxuaW5kZXggN2VmYTNmYzI1N2IzOS4uZTU4ZjFkMmMyNmJkZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jXFxuQEAgLTE2MDIsNiArMTYwMiw5IEBAIHN0YXRpYyBpbnQgYXRsMWNfY2xlYW5fdHgoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbiBcXHRBVF9SRUFEX1JFR1coXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWh3LCBhdGwxY19xcmVnc1t0cGRfcmluZy1cXHUwMDNlbnVtXS50cGRfY29ucyxcXG4gXFx0XFx0ICAgICBcXHUwMDI2aHdfbmV4dF90b19jbGVhbik7XFxuIFxcbitcXHRpZiAodW5saWtlbHkoaHdfbmV4dF90b19jbGVhbiBcXHUwMDNlPSB0cGRfcmluZy1cXHUwMDNlY291bnQpKVxcbitcXHRcXHRod19uZXh0X3RvX2NsZWFuID0gbmV4dF90b19jbGVhbjtcXG4rXFxuIFxcdHdoaWxlIChuZXh0X3RvX2NsZWFuICE9IGh3X25leHRfdG9fY2xlYW4pIHtcXG4gXFx0XFx0YnVmZmVyX2luZm8gPSBcXHUwMDI2dHBkX3JpbmctXFx1MDAzZWJ1ZmZlcl9pbmZvW25leHRfdG9fY2xlYW5dO1xcbiBcXHRcXHRpZiAoYnVmZmVyX2luZm8tXFx1MDAzZXNrYikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo0NDoyNC45OTA4MTM3MTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ4ODYzNzc5MTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUTDFDXCIsXG4gICAgXCJQQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGF0bDFjX2NsZWFuX3R4YCBpbiB0aGUgQXRoZXJvcyBMMUMgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uY2ApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBRdWFsY29tbSBBdGhlcm9zL0F0dGFuc2ljIFBDSSBoYXJkd2FyZSAoTDFDLCBMMkMsIEwxRCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0ZjFmMzljYzUyMGY4ZTVjNDA1MTFmN2QxMWQ5YTA4ZGY5YTU1Y2U1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMjE6NDQ6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jXG5pbmRleCA3ZWZhM2ZjMjU3YjM5Li5lNThmMWQyYzI2YmRmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jXG5AQCAtMTYwMiw2ICsxNjAyLDkgQEAgc3RhdGljIGludCBhdGwxY19jbGVhbl90eChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXG4gXHRBVF9SRUFEX1JFR1coXHUwMDI2YWRhcHRlci1cdTAwM2VodywgYXRsMWNfcXJlZ3NbdHBkX3JpbmctXHUwMDNlbnVtXS50cGRfY29ucyxcbiBcdFx0ICAgICBcdTAwMjZod19uZXh0X3RvX2NsZWFuKTtcbiBcbitcdGlmICh1bmxpa2VseShod19uZXh0X3RvX2NsZWFuIFx1MDAzZT0gdHBkX3JpbmctXHUwMDNlY291bnQpKVxuK1x0XHRod19uZXh0X3RvX2NsZWFuID0gbmV4dF90b19jbGVhbjtcbitcbiBcdHdoaWxlIChuZXh0X3RvX2NsZWFuICE9IGh3X25leHRfdG9fY2xlYW4pIHtcbiBcdFx0YnVmZmVyX2luZm8gPSBcdTAwMjZ0cGRfcmluZy1cdTAwM2VidWZmZXJfaW5mb1tuZXh0X3RvX2NsZWFuXTtcbiBcdFx0aWYgKGJ1ZmZlcl9pbmZvLVx1MDAzZXNrYikge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDQ6MjQuOTkwODE1NTgxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDM2MzE5NTQyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBhdGwxY19tYWluLmNgIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byByZWFsbHkgdW5kZXJzdGFuZCB3aGF0J3MgYmVpbmcgY2hhbmdlZCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNgLiBJdCBsb29rcyBsaWtlIGl0J3Mgd2l0aGluIHRoZSBgYXRsMWNfY2xlYW5fdHhgIGZ1bmN0aW9uLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSSBzZWUgYSBuZXcgY29uZGl0aW9uYWwgY2hlY2sgaW4gdGhlcmU6XG5cbmBgYGNcblx0aWYgKHVubGlrZWx5KGh3X25leHRfdG9fY2xlYW4gXHUwMDNlPSB0cGRfcmluZy1cdTAwM2Vjb3VudCkpXG5cdFx0aHdfbmV4dF90b19jbGVhbiA9IG5leHRfdG9fY2xlYW47XG5gYGBcblxuSXQgc2VlbXMgbGlrZSB3ZSdyZSBkZWFsaW5nIHdpdGggYSBwb3RlbnRpYWwgd3JhcC1hcm91bmQgaXNzdWUgaW4gdGhlIHRyYW5zbWl0IGRlc2NyaXB0b3IgcmluZy4gSWYgYGh3X25leHRfdG9fY2xlYW5gIHNvbWVob3cgZ2V0cyBhaGVhZCBvZiB0aGUgcmluZydzIGNhcGFjaXR5LCB3ZSdyZSBub3cgY29ycmVjdGluZyBpdCB0byBgbmV4dF90b19jbGVhbmAuIFRoYXQncyBzbWFydDsgd2UncmUgZXNzZW50aWFsbHkgc2FuaXRpemluZyB0aGUgaGFyZHdhcmUtcmVwb3J0ZWQgcG9pbnRlci4gTm93IEkgbmVlZCB0byBzZWUgKndoeSogdGhpcyBpcyBuZWNlc3NhcnkuIElzIHRoaXMgYSBrbm93biBoYXJkd2FyZSBidWc/IEEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uPyBPciBpcyBpdCByZWxhdGVkIHRvIGEgcmVjZW50IGNoYW5nZSBpbiBob3cgdGhlIGRlc2NyaXB0b3JzIGFyZSBtYW5hZ2VkP1xuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGF0IGBhdGwxY2AgYWN0dWFsbHkgKmlzKi4gSXMgaXQgYW4gQXRoZXJvcyBFdGhlcm5ldCBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVyIChOSUMpPyBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHNvIEkgY2FuIHB1dCB0aGlzIGludG8gdGhlIHByb3BlciBjb250ZXh0LiBUaGVuIEknbGwgY2hlY2sgdGhlIGFzc29jaWF0ZWQgYEtjb25maWdgIGFuZCBgTWFrZWZpbGVgIGVudHJpZXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgbW9kdWxlJ3MgZGVwZW5kZW5jaWVzLCBidWlsZCBjb25maWd1cmF0aW9uLCBhbmQgZ2VuZXJhbCBwdXJwb3NlLCB3aGljaCB3aWxsIGhlbHAgZGV0ZXJtaW5lIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIEZyb20gdGhlcmUsIEknbGwgbmVlZCB0byBjaGVjayB0aGUgY29tbWl0IG1lc3NhZ2UgdGhhdCBnb2VzIHdpdGggdGhpcyBwYXRjaCB0byBzZWUgd2hhdCBtb3RpdmF0ZWQgdGhlIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk4MCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjQ0OjI5LjM1NDAxNDUzMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjg3NjI3NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRsMWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxOTY0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWc9NjM9Y29uZmlnIEFUTDFDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWctNzEtXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgVGhlIG1vZHVsZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZzo3MjpcXHQgIHdpbGwgYmUgY2FsbGVkIGF0bDFjLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZy03My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfQVRMMUUpICs9IGF0bDFlL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0FUTDFDKSArPSBhdGwxYy9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19BTFgpICs9IGFseC9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0FUTDFDKSArPSBhdGwxYy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9NYWtlZmlsZTozOmF0bDFjLW9ianMgOj0gYXRsMWNfbWFpbi5vIGF0bDFjX2h3Lm8gYXRsMWNfZXRodG9vbC5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjQwOiNpbmNsdWRlIFxcXCJhdGwxY19ody5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC05MC0jZGVmaW5lIEFUTDFDX0dFVF9ERVNDKFIsIGksIHR5cGUpXFx0KFxcdTAwMjYoKCh0eXBlICopKChSKS1cXHUwMDNlZGVzYykpW2ldKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6OTE6I2RlZmluZSBBVEwxQ19SRkRfREVTQyhSLCBpKVxcdEFUTDFDX0dFVF9ERVNDKFIsIGksIHN0cnVjdCBhdGwxY19yeF9mcmVlX2Rlc2MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjkyOiNkZWZpbmUgQVRMMUNfVFBEX0RFU0MoUiwgaSlcXHRBVEwxQ19HRVRfREVTQyhSLCBpLCBzdHJ1Y3QgYXRsMWNfdHBkX2Rlc2MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjkzOiNkZWZpbmUgQVRMMUNfUlJEX0RFU0MoUiwgaSlcXHRBVEwxQ19HRVRfREVTQyhSLCBpLCBzdHJ1Y3QgYXRsMWNfcmVjdl9yZXRfc3RhdHVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC05NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0xNDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjE0MjpzdHJ1Y3QgYXRsMWNfdHBkX2Rlc2Mge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0xNDMtXFx0X19sZTE2XFx0YnVmZmVyX2xlbjsgLyogaW5jbHVkZSA0LWJ5dGUgQ1JDICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoxNDk6c3RydWN0IGF0bDFjX3RwZF9leHRfZGVzYyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTE1MC1cXHR1MzIgcmVzZXJ2ZF8wO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjQ2OnN0cnVjdCBhdGwxY19yZWN2X3JldF9zdGF0dXMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yNDctXFx0X19sZTMyICB3b3JkMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yNTQtLyogUkZEIGRlc2NyaXB0b3IgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjU1OnN0cnVjdCBhdGwxY19yeF9mcmVlX2Rlc2Mge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yNTYtXFx0X19sZTY0XFx0YnVmZmVyX2FkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjU5LS8qIERNQSBPcmRlciBTZXR0aW5ncyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNjA6ZW51bSBhdGwxY19kbWFfb3JkZXIge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNjE6XFx0YXRsMWNfZG1hX29yZF9pbiA9IDEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI2MjpcXHRhdGwxY19kbWFfb3JkX2VuaCA9IDIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI2MzpcXHRhdGwxY19kbWFfb3JkX291dCA9IDRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjY0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjY2OmVudW0gYXRsMWNfZG1hX3JjYiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI2NzpcXHRhdGwxY19yY2JfNjQgPSAwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNjg6XFx0YXRsMWNfcmNiXzEyOCA9IDFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjY5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjcxOmVudW0gYXRsMWNfbWFjX3NwZWVkIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjcyOlxcdGF0bDFjX21hY19zcGVlZF8wID0gMCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjczOlxcdGF0bDFjX21hY19zcGVlZF8xMF8xMDAgPSAxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNzQ6XFx0YXRsMWNfbWFjX3NwZWVkXzEwMDAgPSAyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI3NS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI3NzplbnVtIGF0bDFjX2RtYV9yZXFfYmxvY2sge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNzg6XFx0YXRsMWNfZG1hX3JlcV8xMjggPSAwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNzk6XFx0YXRsMWNfZG1hX3JlcV8yNTYgPSAxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyODA6XFx0YXRsMWNfZG1hX3JlcV81MTIgPSAyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyODE6XFx0YXRsMWNfZG1hX3JlcV8xMDI0ID0gMyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjgyOlxcdGF0bDFjX2RtYV9yZXFfMjA0OCA9IDQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI4MzpcXHRhdGwxY19kbWFfcmVxXzQwOTYgPSA1XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI4NC19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6Mjg3OmVudW0gYXRsMWNfbmljX3R5cGUge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yODgtXFx0YXRocl9sMWMgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6Mjk3OnN0cnVjdCBhdGwxY19od19zdGF0cyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI5OC1cXHQvKiByeCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTM1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MzUyOnN0cnVjdCBhdGwxY19odyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTM1My1cXHR1OCBfX2lvbWVtICAgICAgKmh3X2FkZHI7ICAgICAgICAgICAgLyogaW5uZXIgcmVnaXN0ZXIgYWRkcmVzcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDozNTQ6XFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjM1NTpcXHRlbnVtIGF0bDFjX25pY190eXBlICBuaWNfdHlwZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MzU2OlxcdGVudW0gYXRsMWNfZG1hX29yZGVyIGRtYV9vcmRlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MzU3OlxcdGVudW0gYXRsMWNfZG1hX3JjYiAgIHJjYl92YWx1ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MzU4OlxcdGVudW0gYXRsMWNfZG1hX3JlcV9ibG9jayBkbWFyX2Jsb2NrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0zNTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMzc0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDozNzU6XFx0ZW51bSBhdGwxY19tYWNfc3BlZWQgbWFjX3NwZWVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0zNzYtXFx0Ym9vbCBtYWNfZHVwbGV4O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQyNy0vKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0Mjg6ICogYXRsMWNfcmluZ19oZWFkZXIgcmVwcmVzZW50cyBhIHNpbmdsZSwgY29udGlndW91cyBibG9jayBvZiBETUEgc3BhY2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNDI5LSAqIG1hcHBlZCBmb3IgdGhlIHRocmVlIGRlc2NyaXB0b3IgcmluZ3MgKHRwZCwgcmZkLCBycmQpIGRlc2NyaWJlZCBiZWxvd1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00MzAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjQzMTpzdHJ1Y3QgYXRsMWNfcmluZ19oZWFkZXIge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00MzItXFx0dm9pZCAqZGVzYztcXHRcXHQvKiB2aXJ0dWFsIGFkZHJlc3MgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00MzctLypcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NDM4OiAqIGF0bDFjX2J1ZmZlciBpcyB3cmFwcGVyIGFyb3VuZCBhIHBvaW50ZXIgdG8gYSBzb2NrZXQgYnVmZmVyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQzOS0gKiBzbyBhIERNQSBoYW5kbGUgY2FuIGJlIHN0b3JlZCBhbG9uZyB3aXRoIHRoZSBza2JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNDQwLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0NDE6c3RydWN0IGF0bDFjX2J1ZmZlciB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQ0Mi1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcdC8qIHNvY2tldCBidWZmZXIgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00NzEtLyogdHJhbnNpbWl0IHBhY2tldCBkZXNjcmlwdG9yICh0cGQpIHJpbmcgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NDcyOnN0cnVjdCBhdGwxY190cGRfcmluZyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjQ3MzpcXHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNDc0LVxcdHZvaWQgKmRlc2M7XFx0XFx0LyogZGVzY3JpcHRvciByaW5nIHZpcnR1YWwgYWRkcmVzcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQ4MC1cXHRhdG9taWNfdCBuZXh0X3RvX2NsZWFuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0ODE6XFx0c3RydWN0IGF0bDFjX2J1ZmZlciAqYnVmZmVyX2luZm87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQ4Mi1cXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00ODUtLyogcmVjZWl2ZSBmcmVlIGRlc2NyaXB0b3IgKHJmZCkgcmluZyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0ODY6c3RydWN0IGF0bDFjX3JmZF9yaW5nIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNDg3LVxcdHZvaWQgKmRlc2M7XFx0XFx0LyogZGVzY3JpcHRvciByaW5nIHZpcnR1YWwgYWRkcmVzcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQ5Mi1cXHR1MTYgbmV4dF90b19jbGVhbjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NDkzOlxcdHN0cnVjdCBhdGwxY19idWZmZXIgKmJ1ZmZlcl9pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00OTQtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00OTYtLyogcmVjZWl2ZSByZXR1cm4gZGVzY3JpcHRvciAocnJkKSByaW5nICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjQ5NzpzdHJ1Y3QgYXRsMWNfcnJkX3Jpbmcge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0OTg6XFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQ5OS1cXHR2b2lkICpkZXNjO1xcdFxcdC8qIGRlc2NyaXB0b3IgcmluZyB2aXJ0dWFsIGFkZHJlc3MgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC01MDktLyogYm9hcmQgc3BlY2lmaWMgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo1MTA6c3RydWN0IGF0bDFjX2FkYXB0ZXIge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC01MTEtXFx0c3RydWN0IG5ldF9kZXZpY2UgICAqbmV0ZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC01MTItXFx0c3RydWN0IHBjaV9kZXYgICAgICAqcGRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NTEzOlxcdHN0cnVjdCBhdGwxY19odyAgICAgICAgaHc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjUxNDpcXHRzdHJ1Y3QgYXRsMWNfaHdfc3RhdHMgIGh3X3N0YXRzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC01MTUtXFx0c3RydWN0IG1paV9pZl9pbmZvICBtaWk7ICAgIC8qIE1JSSBpbnRlcmZhY2UgaW5mbyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTU0MS1cXHQvKiBBbGwgRGVzY3JpcHRvciBtZW1vcnkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NTQyOlxcdHN0cnVjdCBhdGwxY19yaW5nX2hlYWRlciByaW5nX2hlYWRlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NTQzOlxcdHN0cnVjdCBhdGwxY190cGRfcmluZyB0cGRfcmluZ1tBVF9NQVhfVFJBTlNNSVRfUVVFVUVdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo1NDQ6XFx0c3RydWN0IGF0bDFjX3JmZF9yaW5nIHJmZF9yaW5nW0FUX01BWF9SRUNFSVZFX1FVRVVFXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NTQ1OlxcdHN0cnVjdCBhdGwxY19ycmRfcmluZyBycmRfcmluZ1tBVF9NQVhfUkVDRUlWRV9RVUVVRV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTU0Ni1cXHR1MzIgYmRfbnVtYmVyOyAgICAgLyogYm9hcmQgbnVtYmVyOyovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNTg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo1ODg6ZXh0ZXJuIGNoYXIgYXRsMWNfZHJpdmVyX25hbWVbXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNTg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo1OTA6dm9pZCBhdGwxY19yZWluaXRfbG9ja2VkKHN0cnVjdCBhdGwxY19hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NTkxOnMzMiBhdGwxY19yZXNldF9odyhzdHJ1Y3QgYXRsMWNfaHcgKmh3KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NTkyOnZvaWQgYXRsMWNfc2V0X2V0aHRvb2xfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC01OTMtI2VuZGlmIC8qIF9BVEwxQ19IXyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MTM6I2luY2x1ZGUgXFxcImF0bDFjLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MTU6c3RhdGljIGludCBhdGwxY19nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xNi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xNy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MTg6XFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE5OlxcdHN0cnVjdCBhdGwxY19odyAqaHcgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjAtXFx0dTMyIHN1cHBvcnRlZCwgYWR2ZXJ0aXNpbmc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy01OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzo1OTpzdGF0aWMgaW50IGF0bDFjX3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTYwLVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTYxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzo2MjpcXHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6NjM6XFx0c3RydWN0IGF0bDFjX2h3ICpodyA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy02NC1cXHR1MTYgIGF1dG9uZWdfYWR2ZXJ0aXNlZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTk2LVxcdFxcdGh3LVxcdTAwM2VhdXRvbmVnX2FkdmVydGlzZWQgPSBhdXRvbmVnX2FkdmVydGlzZWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6OTc6XFx0XFx0aWYgKGF0bDFjX3Jlc3RhcnRfYXV0b25lZyhodykgIT0gMCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTk4LVxcdFxcdFxcdGlmIChuZXRpZl9tc2dfbGluayhhZGFwdGVyKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTEwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMDk6c3RhdGljIHUzMiBhdGwxY19nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xMTAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjExMTpcXHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTEyLVxcdHJldHVybiBhZGFwdGVyLVxcdTAwM2Vtc2dfZW5hYmxlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjExNTpzdGF0aWMgdm9pZCBhdGwxY19zZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTMyIGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTE2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMTc6XFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTExOC1cXHRhZGFwdGVyLVxcdTAwM2Vtc2dfZW5hYmxlID0gZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTEyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMjE6c3RhdGljIGludCBhdGwxY19nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjEyNjpzdGF0aWMgdm9pZCBhdGwxY19nZXRfcmVncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTEyNy1cXHRcXHRcXHQgICBzdHJ1Y3QgZXRodG9vbF9yZWdzICpyZWdzLCB2b2lkICpwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTEyOC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MTI5OlxcdHN0cnVjdCBhdGwxY19hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMzA6XFx0c3RydWN0IGF0bDFjX2h3ICpodyA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xMzEtXFx0dTMyICpyZWdzX2J1ZmYgPSBwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE2MDpcXHRhdGwxY19yZWFkX3BoeV9yZWcoaHcsIE1JSV9CTUNSLCBcXHUwMDI2cGh5X2RhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE2MS1cXHRyZWdzX2J1ZmZbQVRfUkVHU19MRU4vc2l6ZW9mKHUzMikgLSAyXSA9ICh1MzIpIHBoeV9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE2MjpcXHRhdGwxY19yZWFkX3BoeV9yZWcoaHcsIE1JSV9CTVNSLCBcXHUwMDI2cGh5X2RhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE2My1cXHRyZWdzX2J1ZmZbQVRfUkVHU19MRU4vc2l6ZW9mKHUzMikgLSAxXSA9ICh1MzIpIHBoeV9kYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE2NjpzdGF0aWMgaW50IGF0bDFjX2dldF9lZXByb21fbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTY3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxNjg6XFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxNzA6XFx0aWYgKGF0bDFjX2NoZWNrX2VlcHJvbV9leGlzdChcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHcpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE3MS1cXHRcXHRyZXR1cm4gQVRfRUVQUk9NX0xFTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxNzY6c3RhdGljIGludCBhdGwxY19nZXRfZWVwcm9tKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTc3LVxcdFxcdHN0cnVjdCBldGh0b29sX2VlcHJvbSAqZWVwcm9tLCB1OCAqYnl0ZXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTc4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxNzk6XFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE4MDpcXHRzdHJ1Y3QgYXRsMWNfaHcgKmh3ID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWh3O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE4MS1cXHR1MzIgKmVlcHJvbV9idWZmO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE4OTpcXHRpZiAoIWF0bDFjX2NoZWNrX2VlcHJvbV9leGlzdChodykpIC8qIG5vdCBleGlzdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE5MC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTIwMy1cXHRmb3IgKGkgPSBmaXJzdF9kd29yZDsgaSBcXHUwMDNjIGxhc3RfZHdvcmQ7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjIwNDpcXHRcXHRpZiAoIWF0bDFjX3JlYWRfZWVwcm9tKGh3LCBpICogNCwgXFx1MDAyNihlZXByb21fYnVmZltpLWZpcnN0X2R3b3JkXSkpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjA1LVxcdFxcdFxcdGtmcmVlKGVlcHJvbV9idWZmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTIxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyMTg6c3RhdGljIHZvaWQgYXRsMWNfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yMTktXFx0XFx0c3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqZHJ2aW5mbylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yMjAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjIyMTpcXHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjIyMzpcXHRzdHJzY3B5KGRydmluZm8tXFx1MDAzZWRyaXZlciwgIGF0bDFjX2RyaXZlcl9uYW1lLCBzaXplb2YoZHJ2aW5mby1cXHUwMDNlZHJpdmVyKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjI0LVxcdHN0cnNjcHkoZHJ2aW5mby1cXHUwMDNlYnVzX2luZm8sIHBjaV9uYW1lKGFkYXB0ZXItXFx1MDAzZXBkZXYpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjIyODpzdGF0aWMgdm9pZCBhdGwxY19nZXRfd29sKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjI5LVxcdFxcdFxcdCAgc3RydWN0IGV0aHRvb2xfd29saW5mbyAqd29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTIzMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MjMxOlxcdHN0cnVjdCBhdGwxY19hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yMzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MjQ4OnN0YXRpYyBpbnQgYXRsMWNfc2V0X3dvbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjQ5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyNTA6XFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI1MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyNjg6c3RhdGljIGludCBhdGwxY19ud2F5X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjY5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyNzA6XFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI3MS1cXHRpZiAobmV0aWZfcnVubmluZyhuZXRkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI3MjpcXHRcXHRhdGwxY19yZWluaXRfbG9ja2VkKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI3My1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyNzY6c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhdGwxY19ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyNzc6XFx0LmdldF9kcnZpbmZvICAgICAgICAgICAgPSBhdGwxY19nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyNzg6XFx0LmdldF9yZWdzX2xlbiAgICAgICAgICAgPSBhdGwxY19nZXRfcmVnc19sZW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6Mjc5OlxcdC5nZXRfcmVncyAgICAgICAgICAgICAgID0gYXRsMWNfZ2V0X3JlZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MjgwOlxcdC5nZXRfd29sICAgICAgICAgICAgICAgID0gYXRsMWNfZ2V0X3dvbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyODE6XFx0LnNldF93b2wgICAgICAgICAgICAgICAgPSBhdGwxY19zZXRfd29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI4MjpcXHQuZ2V0X21zZ2xldmVsICAgICAgICAgICA9IGF0bDFjX2dldF9tc2dsZXZlbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyODM6XFx0LnNldF9tc2dsZXZlbCAgICAgICAgICAgPSBhdGwxY19zZXRfbXNnbGV2ZWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6Mjg0OlxcdC5ud2F5X3Jlc2V0ICAgICAgICAgICAgID0gYXRsMWNfbndheV9yZXNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yODUtXFx0LmdldF9saW5rICAgICAgICAgICAgICAgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI4NjpcXHQuZ2V0X2VlcHJvbV9sZW4gICAgICAgICA9IGF0bDFjX2dldF9lZXByb21fbGVuLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI4NzpcXHQuZ2V0X2VlcHJvbSAgICAgICAgICAgICA9IGF0bDFjX2dldF9lZXByb20sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6Mjg4OlxcdC5nZXRfbGlua19rc2V0dGluZ3MgICAgID0gYXRsMWNfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI4OTpcXHQuc2V0X2xpbmtfa3NldHRpbmdzICAgICA9IGF0bDFjX3NldF9saW5rX2tzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yOTAtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MjkyOnZvaWQgYXRsMWNfc2V0X2V0aHRvb2xfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjkzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyOTQ6XFx0bmV0ZGV2LVxcdTAwM2VldGh0b29sX29wcyA9IFxcdTAwMjZhdGwxY19ldGh0b29sX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yOTUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxMzojaW5jbHVkZSBcXFwiYXRsMWMuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTgtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjE5OmludCBhdGwxY19jaGVja19lZXByb21fZXhpc3Qoc3RydWN0IGF0bDFjX2h3ICpodylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzozMzp2b2lkIGF0bDFjX2h3X3NldF9tYWNfYWRkcihzdHJ1Y3QgYXRsMWNfaHcgKmh3LCB1OCAqbWFjX2FkZHIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTM0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy01Mi0vKiByZWFkIG1hYyBhZGRyZXNzIGZyb20gaGFyZHdhcmUgcmVnaXN0ZXIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NTM6c3RhdGljIGJvb2wgYXRsMWNfcmVhZF9jdXJyZW50X2FkZHIoc3RydWN0IGF0bDFjX2h3ICpodywgdTggKmV0aF9hZGRyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy01NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNjYtLypcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6Njc6ICogYXRsMWNfZ2V0X3Blcm1hbmVudF9hZGRyZXNzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTY4LSAqIHJldHVybiAwIGlmIGdldCB2YWxpZCBtYWMgYWRkcmVzcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNjktICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjcwOnN0YXRpYyBpbnQgYXRsMWNfZ2V0X3Blcm1hbmVudF9hZGRyZXNzKHN0cnVjdCBhdGwxY19odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTcxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy03OC1cXHQvKiBNQUMtYWRkcmVzcyBmcm9tIEJJT1MgaXMgdGhlIDFzdCBwcmlvcml0eSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo3OTpcXHRpZiAoYXRsMWNfcmVhZF9jdXJyZW50X2FkZHIoaHcsIGh3LVxcdTAwM2VwZXJtX21hY19hZGRyKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtODAtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtODMtXFx0QVRfUkVBRF9SRUcoaHcsIFJFR19PVFBfQ1RSTCwgXFx1MDAyNm90cF9jdHJsX2RhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo4NDpcXHRpZiAoYXRsMWNfY2hlY2tfZWVwcm9tX2V4aXN0KGh3KSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy04NS1cXHRcXHRpZiAoaHctXFx1MDAzZW5pY190eXBlID09IGF0aHJfbDFjIHx8IGh3LVxcdTAwM2VuaWNfdHlwZSA9PSBhdGhyX2wyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTk1LVxcdFxcdGlmIChody1cXHUwMDNlbmljX3R5cGUgPT0gYXRocl9sMmNfYiB8fCBody1cXHUwMDNlbmljX3R5cGUgPT0gYXRocl9sMmNfYjIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6OTY6XFx0XFx0XFx0YXRsMWNfcmVhZF9waHlfZGJnKGh3LCBNSUlEQkdfQU5BQ1RSTCwgXFx1MDAyNnBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtOTctXFx0XFx0XFx0cGh5X2RhdGEgXFx1MDAyNj0gfkFOQUNUUkxfSEJfRU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjk4OlxcdFxcdFxcdGF0bDFjX3dyaXRlX3BoeV9kYmcoaHcsIE1JSURCR19BTkFDVFJMLCBwaHlfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjk5OlxcdFxcdFxcdGF0bDFjX3JlYWRfcGh5X2RiZyhodywgTUlJREJHX1ZPTFRfQ1RSTCwgXFx1MDAyNnBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTAwLVxcdFxcdFxcdHBoeV9kYXRhIHw9IFZPTFRfQ1RSTF9TV0xPV0VTVDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MTAxOlxcdFxcdFxcdGF0bDFjX3dyaXRlX3BoeV9kYmcoaHcsIE1JSURCR19WT0xUX0NUUkwsIHBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTAyLVxcdFxcdFxcdHVkZWxheSgyMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTI0LVxcdGlmIChyYWlzZV92b2wpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MTI1OlxcdFxcdGF0bDFjX3JlYWRfcGh5X2RiZyhodywgTUlJREJHX0FOQUNUUkwsIFxcdTAwMjZwaHlfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTEyNi1cXHRcXHRwaHlfZGF0YSB8PSBBTkFDVFJMX0hCX0VOO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxMjc6XFx0XFx0YXRsMWNfd3JpdGVfcGh5X2RiZyhodywgTUlJREJHX0FOQUNUUkwsIHBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MTI4OlxcdFxcdGF0bDFjX3JlYWRfcGh5X2RiZyhodywgTUlJREJHX1ZPTFRfQ1RSTCwgXFx1MDAyNnBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTI5LVxcdFxcdHBoeV9kYXRhIFxcdTAwMjY9IH5WT0xUX0NUUkxfU1dMT1dFU1Q7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjEzMDpcXHRcXHRhdGwxY193cml0ZV9waHlfZGJnKGh3LCBNSUlEQkdfVk9MVF9DVFJMLCBwaHlfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTEzMS1cXHRcXHR1ZGVsYXkoMjApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTEzMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MTM0OlxcdGlmIChhdGwxY19yZWFkX2N1cnJlbnRfYWRkcihodywgaHctXFx1MDAzZXBlcm1fbWFjX2FkZHIpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xMzUtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxNDA6Ym9vbCBhdGwxY19yZWFkX2VlcHJvbShzdHJ1Y3QgYXRsMWNfaHcgKmh3LCB1MzIgb2Zmc2V0LCB1MzIgKnBfdmFsdWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTE0MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTgyLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxODM6aW50IGF0bDFjX3JlYWRfbWFjX2FkZHIoc3RydWN0IGF0bDFjX2h3ICpodylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xODYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjE4NzpcXHRlcnIgPSBhdGwxY19nZXRfcGVybWFuZW50X2FkZHJlc3MoaHcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xODgtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xOTUtLypcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MTk2OiAqIGF0bDFjX2hhc2hfbWNfYWRkclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xOTctICogIHB1cnBvc2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yMDItICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjIwMzp1MzIgYXRsMWNfaGFzaF9tY19hZGRyKHN0cnVjdCBhdGwxY19odyAqaHcsIHU4ICptY19hZGRyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yMDQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTIyMC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MjIxOnZvaWQgYXRsMWNfaGFzaF9zZXQoc3RydWN0IGF0bDFjX2h3ICpodywgdTMyIGhhc2hfdmFsdWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTIyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMjQ5LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoyNTA6Ym9vbCBhdGwxY193YWl0X21kaW9faWRsZShzdHJ1Y3QgYXRsMWNfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yNTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MjY1OnZvaWQgYXRsMWNfc3RvcF9waHlfcG9sbGluZyhzdHJ1Y3QgYXRsMWNfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yNjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI3MC1cXHRBVF9XUklURV9SRUcoaHcsIFJFR19NRElPX0NUUkwsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoyNzE6XFx0YXRsMWNfd2FpdF9tZGlvX2lkbGUoaHcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yNzItfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yNzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjI3NDp2b2lkIGF0bDFjX3N0YXJ0X3BoeV9wb2xsaW5nKHN0cnVjdCBhdGwxY19odyAqaHcsIHUxNiBjbGtfc2VsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI4Ni1cXHRBVF9XUklURV9SRUcoaHcsIFJFR19NRElPX0NUUkwsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjI4NzpcXHRhdGwxY193YWl0X21kaW9faWRsZShodyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI4OC1cXHR2YWwgfD0gTURJT19DVFJMX0FQX0VOO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI5NS0vKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoyOTY6ICogYXRsMWNfcmVhZF9waHlfY29yZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yOTctICogY29yZSBmdW5jdGlvbiB0byByZWFkIHJlZ2lzdGVyIGluIFBIWSB2aWEgTURJTyBjb250cm9sIHJlZ2lzdGVyLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTMwMS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MzAyOmludCBhdGwxY19yZWFkX3BoeV9jb3JlKHN0cnVjdCBhdGwxY19odyAqaHcsIGJvb2wgZXh0LCB1OCBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTMwMy1cXHRcXHRcXHR1MTYgcmVnLCB1MTYgKnBoeV9kYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTMwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MzA4OlxcdGF0bDFjX3N0b3BfcGh5X3BvbGxpbmcoaHcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zMDktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzozMzM6XFx0aWYgKCFhdGwxY193YWl0X21kaW9faWRsZShodykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTMzNC1cXHRcXHRyZXR1cm4gLTE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzozMzk6XFx0YXRsMWNfc3RhcnRfcGh5X3BvbGxpbmcoaHcsIGNsa19zZWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zNDAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzQ0LS8qXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjM0NTogKiBhdGwxY193cml0ZV9waHlfY29yZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zNDYtICogY29yZSBmdW5jdGlvbiB0byB3cml0ZSB0byByZWdpc3RlciBpbiBQSFkgdmlhIE1ESU8gY29udHJvbCByZWdpc3Rlci5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zNTAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjM1MTppbnQgYXRsMWNfd3JpdGVfcGh5X2NvcmUoc3RydWN0IGF0bDFjX2h3ICpodywgYm9vbCBleHQsIHU4IGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzUyLVxcdFxcdFxcdHUxNiByZWcsIHUxNiBwaHlfZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjM1NzpcXHRhdGwxY19zdG9wX3BoeV9wb2xsaW5nKGh3KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzU4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTM4MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MzgyOlxcdGlmICghYXRsMWNfd2FpdF9tZGlvX2lkbGUoaHcpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zODMtXFx0XFx0cmV0dXJuIC0xO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjM4NTpcXHRhdGwxY19zdGFydF9waHlfcG9sbGluZyhodywgY2xrX3NlbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTM4Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zOTQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjM5NTppbnQgYXRsMWNfcmVhZF9waHlfcmVnKHN0cnVjdCBhdGwxY19odyAqaHcsIHUxNiByZWdfYWRkciwgdTE2ICpwaHlfZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzk2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6Mzk3OlxcdHJldHVybiBhdGwxY19yZWFkX3BoeV9jb3JlKGh3LCBmYWxzZSwgMCwgcmVnX2FkZHIsIHBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzk4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MDUtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjQwNjppbnQgYXRsMWNfd3JpdGVfcGh5X3JlZyhzdHJ1Y3QgYXRsMWNfaHcgKmh3LCB1MzIgcmVnX2FkZHIsIHUxNiBwaHlfZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDA3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDA4OlxcdHJldHVybiBhdGwxY193cml0ZV9waHlfY29yZShodywgZmFsc2UsIDAsIHJlZ19hZGRyLCBwaHlfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQwOS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDExLS8qIHJlYWQgZnJvbSBQSFkgZXh0ZW5zaW9uIHJlZ2lzdGVyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjQxMjppbnQgYXRsMWNfcmVhZF9waHlfZXh0KHN0cnVjdCBhdGwxY19odyAqaHcsIHU4IGRldl9hZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MTMtXFx0XFx0XFx0dTE2IHJlZ19hZGRyLCB1MTYgKnBoeV9kYXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MTQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0MTU6XFx0cmV0dXJuIGF0bDFjX3JlYWRfcGh5X2NvcmUoaHcsIHRydWUsIGRldl9hZGRyLCByZWdfYWRkciwgcGh5X2RhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MTYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQxOC0vKiB3cml0ZSB0byBQSFkgZXh0ZW5zaW9uIHJlZ2lzdGVyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjQxOTppbnQgYXRsMWNfd3JpdGVfcGh5X2V4dChzdHJ1Y3QgYXRsMWNfaHcgKmh3LCB1OCBkZXZfYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDIwLVxcdFxcdFxcdHUxNiByZWdfYWRkciwgdTE2IHBoeV9kYXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MjEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0MjI6XFx0cmV0dXJuIGF0bDFjX3dyaXRlX3BoeV9jb3JlKGh3LCB0cnVlLCBkZXZfYWRkciwgcmVnX2FkZHIsIHBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDIzLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0MjU6aW50IGF0bDFjX3JlYWRfcGh5X2RiZyhzdHJ1Y3QgYXRsMWNfaHcgKmh3LCB1MTYgcmVnX2FkZHIsIHUxNiAqcGh5X2RhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQyNi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0Mjk6XFx0ZXJyID0gYXRsMWNfd3JpdGVfcGh5X3JlZyhodywgTUlJX0RCR19BRERSLCByZWdfYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQzMC1cXHRpZiAodW5saWtlbHkoZXJyKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MzItXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0MzM6XFx0XFx0ZXJyID0gYXRsMWNfcmVhZF9waHlfcmVnKGh3LCBNSUlfREJHX0RBVEEsIHBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDM0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDM4OmludCBhdGwxY193cml0ZV9waHlfZGJnKHN0cnVjdCBhdGwxY19odyAqaHcsIHUxNiByZWdfYWRkciwgdTE2IHBoeV9kYXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00Mzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQ0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDQyOlxcdGVyciA9IGF0bDFjX3dyaXRlX3BoeV9yZWcoaHcsIE1JSV9EQkdfQUREUiwgcmVnX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00NDMtXFx0aWYgKHVubGlrZWx5KGVycikpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDQ1LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDQ2OlxcdFxcdGVyciA9IGF0bDFjX3dyaXRlX3BoeV9yZWcoaHcsIE1JSV9EQkdfREFUQSwgcGh5X2RhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00NDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDU1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0NTY6c3RhdGljIGludCBhdGwxY19waHlfc2V0dXBfYWR2KHN0cnVjdCBhdGwxY19odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQ1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0ODU6XFx0aWYgKGF0bDFjX3dyaXRlX3BoeV9yZWcoaHcsIE1JSV9BRFZFUlRJU0UsIG1paV9hZHZfZGF0YSkgIT0gMCB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0ODY6XFx0ICAgIGF0bDFjX3dyaXRlX3BoeV9yZWcoaHcsIE1JSV9DVFJMMTAwMCwgbWlpX2dpZ2FfY3RybF9kYXRhKSAhPSAwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00ODctXFx0XFx0cmV0dXJuIC0xO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQ5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDkxOnZvaWQgYXRsMWNfcGh5X2Rpc2FibGUoc3RydWN0IGF0bDFjX2h3ICpodylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDkyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDkzOlxcdGF0bDFjX3Bvd2VyX3NhdmluZyhodywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQ5NC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0OTc6aW50IGF0bDFjX3BoeV9yZXNldChzdHJ1Y3QgYXRsMWNfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00OTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0OTk6XFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBody1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTAwLVxcdHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gYWRhcHRlci1cXHUwMDNlcGRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy01MjItXFx0aWYgKGh3LVxcdTAwM2VuaWNfdHlwZSA9PSBhdGhyX2wyY19iKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjUyMzpcXHRcXHRhdGwxY19yZWFkX3BoeV9kYmcoaHcsIE1JSURCR19DRkdMUFNQRCwgXFx1MDAyNnBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NTI0OlxcdFxcdGF0bDFjX3dyaXRlX3BoeV9kYmcoaHcsIE1JSURCR19DRkdMUFNQRCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTI1LVxcdFxcdFxcdHBoeV9kYXRhIFxcdTAwMjYgfkNGR0xQU1BEX1JTVENOVF9DTEsxMjVTVyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTI5LVxcdGlmIChody1cXHUwMDNlbmljX3R5cGUgPT0gYXRocl9sMmNfYiB8fCBody1cXHUwMDNlbmljX3R5cGUgPT0gYXRocl9sMmNfYjIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NTMwOlxcdFxcdGF0bDFjX3JlYWRfcGh5X2RiZyhodywgTUlJREJHX0NBQkxFMVRIX0RFVCwgXFx1MDAyNnBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTMxLVxcdFxcdHBoeV9kYXRhIHw9IENBQkxFMVRIX0RFVF9FTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NTMyOlxcdFxcdGF0bDFjX3dyaXRlX3BoeV9kYmcoaHcsIE1JSURCR19DQUJMRTFUSF9ERVQsIHBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTMzLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy01MzctXFx0XFx0aWYgKGh3LVxcdTAwM2VuaWNfdHlwZSA9PSBhdGhyX2wyY19iIHx8IGh3LVxcdTAwM2VuaWNfdHlwZSA9PSBhdGhyX2wyY19iMikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo1Mzg6XFx0XFx0XFx0YXRsMWNfcmVhZF9waHlfZGJnKGh3LCBNSUlEQkdfVk9MVF9DVFJMLCBcXHUwMDI2cGh5X2RhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy01MzktXFx0XFx0XFx0cGh5X2RhdGEgXFx1MDAyNj0gflZPTFRfQ1RSTF9TV0xPV0VTVDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NTQwOlxcdFxcdFxcdGF0bDFjX3dyaXRlX3BoeV9kYmcoaHcsIE1JSURCR19WT0xUX0NUUkwsIHBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTQxLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy01NDUtXFx0XFx0XFx0TDFEX0xFR0NZUFNfREVGIDogTDFDX0xFR0NZUFNfREVGO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo1NDY6XFx0XFx0YXRsMWNfd3JpdGVfcGh5X2RiZyhodywgTUlJREJHX0xFR0NZUFMsIHBoeV9kYXRhKTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDQ6MjkuNjgyNzgzMjM0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTY4MzY5NTgzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgQXRoZXJvcyBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBBdGhlcm9zIEV0aGVybmV0IGRyaXZlcnMuIFRoZSBtb3N0IGxpa2VseSBwbGFjZSB0byBmaW5kIHdoYXQgSSdtIGxvb2tpbmcgZm9yIHdvdWxkIGJlIGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnYCBmaWxlLiBJJ20gZ29pbmcgdG8ganVtcCB0byBhcm91bmQgbGluZSA2MywgYmVjYXVzZSB0aGF0J3Mgb2Z0ZW4gd2hlcmUgeW91J2xsIGZpbmQgY29yZSBzZXR0aW5ncyBvciBtYXliZSB0aGUgbW9kdWxlIG9wdGlvbnMgYXJlLiBMZXQncyBzZWUgd2hhdCBraW5kIG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZGVmaW5lZCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk1NzksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo0NDozMS4zNjY0ODE4MDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTU6XFx0XFx0c2VsZWN0IENSQzMyXFxuICA1NjpcXHRcXHRzZWxlY3QgTUlJXFxuICA1NzpcXHRcXHRoZWxwXFxuICA1ODpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBBdGhlcm9zIEwxRSBnaWdhYml0IGV0aGVybmV0IGFkYXB0ZXIuXFxuICA1OTpcXHRcXG4gIDYwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIFRoZSBtb2R1bGVcXG4gIDYxOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgYXRsMWUuXFxuICA2MjpcXHRcXG4gIDYzOlxcdGNvbmZpZyBBVEwxQ1xcbiAgNjQ6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgTDFDIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDY1OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA2NjpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDY3OlxcdFxcdHNlbGVjdCBNSUlcXG4gIDY4OlxcdFxcdGhlbHBcXG4gIDY5OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEF0aGVyb3MgTDFDIGdpZ2FiaXQgZXRoZXJuZXQgYWRhcHRlci5cXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgVGhlIG1vZHVsZVxcbiAgNzI6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBhdGwxYy5cXG4gIDczOlxcdFxcbiAgNzQ6XFx0Y29uZmlnIEFMWFxcbiAgNzU6XFx0XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEF0aGVyb3MgQVI4MTZ4L0FSODE3eCBzdXBwb3J0XFxcIlxcbiAgNzY6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDc3OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgNzg6XFx0XFx0c2VsZWN0IE1ESU9cXG4gIDc5OlxcdFxcdGhlbHBcXG4gIDgwOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIFF1YWxjb21tIEF0aGVyb3MgTDFGIGV0aGVybmV0IGFkYXB0ZXIsXFxuICA4MTpcXHRcXHQgIGkuZS4gdGhlIGZvbGxvd2luZyBjaGlwc2V0czpcXG4gIDgyOlxcdFxcbiAgODM6XFx0XFx0ICAxOTY5OjEwOTEgLSBBUjgxNjEgR2lnYWJpdCBFdGhlcm5ldFxcbiAgODQ6XFx0XFx0ICAxOTY5OjEwOTAgLSBBUjgxNjIgRmFzdCBFdGhlcm5ldFxcbiAgODU6XFx0XFx0ICAxOTY5OjEwQTEgLSBBUjgxNzEgR2lnYWJpdCBFdGhlcm5ldFxcbiAgODY6XFx0XFx0ICAxOTY5OjEwQTAgLSBBUjgxNzIgRmFzdCBFdGhlcm5ldFxcbiAgODc6XFx0XFxuICA4ODpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBUaGUgbW9kdWxlXFxuICA4OTpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGFseC5cXG4gIDkwOlxcdFxcbiAgOTE6XFx0ZW5kaWYgIyBORVRfVkVORE9SX0FUSEVST1NcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDQ6MzEuMzY2NTU3MjI2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6Mzk1NzI1MTg3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuIGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgQVRMMUMgRHJpdmVyKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGF0bDFjX21haW4uY2AgZmlsZSB3aXRoaW4gdGhlIEF0aGVyb3MgRXRoZXJuZXQgZHJpdmVyIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJJ20gemVyb2luZyBpbiBvbiB0aGUgY29kZSBhcm91bmQgbGluZSAxNjAyLiBUaGF0J3MgdGhlIGxpa2VseSBsb2NhdGlvbiB3aGVyZSB0aGUgaXNzdWUgSSdtIGRlYnVnZ2luZyBtaWdodCBiZSBtYW5pZmVzdGluZy4gSSd2ZSBnb3QgYSBodW5jaCBiYXNlZCBvbiByZWNlbnQgb2JzZXJ2YXRpb25zLCBhbmQgcGlucG9pbnRpbmcgdGhhdCBsaW5lIHdpbGwgbGV0IG1lIGNvbmZpcm0gbXkgdGhlb3J5LiBMZXQncyBzZWUgd2hhdCdzIGhhcHBlbmluZyB0aGVyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDI4MCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDQ6MzUuMzIzODEyNjM4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5NTExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1OTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE1OTA6XFx0XFx0c3RydWN0IGF0bDFjX3RwZF9yaW5nICp0cGRfcmluZyA9XFxuMTU5MTpcXHRcXHRcXHRjb250YWluZXJfb2YobmFwaSwgc3RydWN0IGF0bDFjX3RwZF9yaW5nLCBuYXBpKTtcXG4xNTkyOlxcdFxcdHN0cnVjdCBhdGwxY19hZGFwdGVyICphZGFwdGVyID0gdHBkX3JpbmctXFx1MDAzZWFkYXB0ZXI7XFxuMTU5MzpcXHRcXHRzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICp0eHEgPVxcbjE1OTQ6XFx0XFx0XFx0bmV0ZGV2X2dldF90eF9xdWV1ZShuYXBpLVxcdTAwM2VkZXYsIHRwZF9yaW5nLVxcdTAwM2VudW0pO1xcbjE1OTU6XFx0XFx0c3RydWN0IGF0bDFjX2J1ZmZlciAqYnVmZmVyX2luZm87XFxuMTU5NjpcXHRcXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGFkYXB0ZXItXFx1MDAzZXBkZXY7XFxuMTU5NzpcXHRcXHR1MTYgbmV4dF90b19jbGVhbiA9IGF0b21pY19yZWFkKFxcdTAwMjZ0cGRfcmluZy1cXHUwMDNlbmV4dF90b19jbGVhbik7XFxuMTU5ODpcXHRcXHR1MTYgaHdfbmV4dF90b19jbGVhbjtcXG4xNTk5OlxcdFxcdHVuc2lnbmVkIGludCB0b3RhbF9ieXRlcyA9IDAsIHRvdGFsX3BhY2tldHMgPSAwO1xcbjE2MDA6XFx0XFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4xNjAxOlxcdFxcbjE2MDI6XFx0XFx0QVRfUkVBRF9SRUdXKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodywgYXRsMWNfcXJlZ3NbdHBkX3JpbmctXFx1MDAzZW51bV0udHBkX2NvbnMsXFxuMTYwMzpcXHRcXHRcXHQgICAgIFxcdTAwMjZod19uZXh0X3RvX2NsZWFuKTtcXG4xNjA0OlxcdFxcbjE2MDU6XFx0XFx0aWYgKHVubGlrZWx5KGh3X25leHRfdG9fY2xlYW4gXFx1MDAzZT0gdHBkX3JpbmctXFx1MDAzZWNvdW50KSlcXG4xNjA2OlxcdFxcdFxcdGh3X25leHRfdG9fY2xlYW4gPSBuZXh0X3RvX2NsZWFuO1xcbjE2MDc6XFx0XFxuMTYwODpcXHRcXHR3aGlsZSAobmV4dF90b19jbGVhbiAhPSBod19uZXh0X3RvX2NsZWFuKSB7XFxuMTYwOTpcXHRcXHRcXHRidWZmZXJfaW5mbyA9IFxcdTAwMjZ0cGRfcmluZy1cXHUwMDNlYnVmZmVyX2luZm9bbmV4dF90b19jbGVhbl07XFxuMTYxMDpcXHRcXHRcXHRpZiAoYnVmZmVyX2luZm8tXFx1MDAzZXNrYikge1xcbjE2MTE6XFx0XFx0XFx0XFx0dG90YWxfYnl0ZXMgKz0gYnVmZmVyX2luZm8tXFx1MDAzZXNrYi1cXHUwMDNlbGVuO1xcbjE2MTI6XFx0XFx0XFx0XFx0dG90YWxfcGFja2V0cysrO1xcbjE2MTM6XFx0XFx0XFx0fVxcbjE2MTQ6XFx0XFx0XFx0YXRsMWNfY2xlYW5fYnVmZmVyKHBkZXYsIGJ1ZmZlcl9pbmZvLCBidWRnZXQpO1xcbjE2MTU6XFx0XFx0XFx0aWYgKCsrbmV4dF90b19jbGVhbiA9PSB0cGRfcmluZy1cXHUwMDNlY291bnQpXFxuMTYxNjpcXHRcXHRcXHRcXHRuZXh0X3RvX2NsZWFuID0gMDtcXG4xNjE3OlxcdFxcdFxcdGF0b21pY19zZXQoXFx1MDAyNnRwZF9yaW5nLVxcdTAwM2VuZXh0X3RvX2NsZWFuLCBuZXh0X3RvX2NsZWFuKTtcXG4xNjE4OlxcdFxcdH1cXG4xNjE5OlxcdFxcbjE2MjA6XFx0XFx0bmV0ZGV2X3R4X2NvbXBsZXRlZF9xdWV1ZSh0eHEsIHRvdGFsX3BhY2tldHMsIHRvdGFsX2J5dGVzKTtcXG4xNjIxOlxcdFxcbjE2MjI6XFx0XFx0aWYgKG5ldGlmX3R4X3F1ZXVlX3N0b3BwZWQodHhxKSBcXHUwMDI2XFx1MDAyNiBuZXRpZl9jYXJyaWVyX29rKGFkYXB0ZXItXFx1MDAzZW5ldGRldikpXFxuMTYyMzpcXHRcXHRcXHRuZXRpZl90eF93YWtlX3F1ZXVlKHR4cSk7XFxuMTYyNDpcXHRcXG4xNjI1OlxcdFxcdGlmICh0b3RhbF9wYWNrZXRzIFxcdTAwM2MgYnVkZ2V0KSB7XFxuMTYyNjpcXHRcXHRcXHRuYXBpX2NvbXBsZXRlX2RvbmUobmFwaSwgdG90YWxfcGFja2V0cyk7XFxuMTYyNzpcXHRcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHcuaW50cl9tYXNrX2xvY2ssIGZsYWdzKTtcXG4xNjI4OlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWh3LmludHJfbWFzayB8PSBhdGwxY19xcmVnc1t0cGRfcmluZy1cXHUwMDNlbnVtXS50eF9pc3I7XFxuMTYyOTpcXHRcXHRcXHRBVF9XUklURV9SRUcoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWh3LCBSRUdfSU1SLCBhZGFwdGVyLVxcdTAwM2Vody5pbnRyX21hc2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo0NDozNS4zMjQwNDM5NTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxMDg4ODYzNTYzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgYXRsMWNgIERyaXZlciBhbmQgUUVNVSBFbXVsYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBgYXRsMWNgIGlzIGEgUENJIGRldmljZSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhvc2UgQXRoZXJvcyBMMUMgR2lnYWJpdCBFdGhlcm5ldCBhZGFwdGVycy4gVGhlIHF1ZXN0aW9uIEkgbmVlZCB0byBhbnN3ZXIgaXMgd2hldGhlciBRRU1VIHByb3Blcmx5IGVtdWxhdGVzIHRoZXNlIGRldmljZXMuIEJhc2VkIG9uIHRoZSBwcm9tcHQgcHJvdmlkZWQsIG15IGluaXRpYWwgdGhvdWdodCBpczogZG9lcyBRRU1VIGV2ZW4gKnRyeSogdG8gZW11bGF0ZSB0aGUgQXRoZXJvcyBMMUM/XG5cbkxldCdzIHJlZmVyIGJhY2sgdG8gU2VjdGlvbiAyIG9mIHRoZSBwcm9tcHQuIEl0IGxpc3RzIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIg4oCTIHRoaW5ncyBRRU1VIGRvZXNuJ3QgZW11bGF0ZSBiZWNhdXNlIHRoZXkgcmVxdWlyZSBhIHJlYWwgQVNJQyBvciBQQ0llIGNhcmQuIFRoZSBsaXN0IGluY2x1ZGVzIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGV0Yy4gV2hpbGUgYGF0bDFjYCBpc24ndCBleHBsaWNpdGx5IGxpc3RlZCwgaXQgcmFpc2VzIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb246IGlzIHRoZSBBdGhlcm9zIEwxQyBpbiB0aGF0IHNhbWUgY2F0ZWdvcnk/XG5cbk15IG5leHQgdGhvdWdodCBwcm9jZXNzIGlzIGZvY3VzZWQgb24gd2hhdCBRRU1VICpkb2VzKiBlbXVsYXRlIGluIHRlcm1zIG9mIG5ldHdvcmsgY2FyZHMuIEkgcmVjYWxsIHRoZSB1c3VhbCBzdXNwZWN0czogZTEwMDAsIGUxMDAwZSwgaWdiLCBydGw4MTM5LCBgbmUya19wY2lgLCBgcGNuZXRgLCBgdmlydGlvLW5ldC1wY2lgLCBgdm14bmV0M2AsIGByb2NrZXJgLCBgc3VuZ2VtYCwgYHN1bmdlbS1wY2lgLCBldGMuIEknbSBub3Qgc2VlaW5nIEFSODF4eCBvciBMMUMgdGhlcmUuIFRoaXMgc3VnZ2VzdHMgSSBuZWVkIHRvIGRpZyBkZWVwZXIuXG5cblNvLCB0aGUga2V5IHF1ZXN0aW9ucyBhcmU6IERvZXMgUUVNVSBoYXZlIGFueSB2aXJ0dWFsIGJ1cyBpbXBsZW1lbnRhdGlvbnMgb3Igb3RoZXIgZm9ybXMgb2YgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGNhcmQgZmFtaWx5PyBJcyB0aGUgYGF0bDFjYCBkcml2ZXIgc3RyaWN0bHkgYSBQQ0kgZHJpdmVyPyBJIG5lZWQgdG8gbG9vayBpbnRvIHdoZXRoZXIgaXQncyB0aWVkIHNvbGVseSB0byBhIHBoeXNpY2FsIFBDSSBpbXBsZW1lbnRhdGlvbiwgb3IgaWYgdGhlcmUncyBhbnkgYWJzdHJhY3Rpb24gbGF5ZXIgdGhhdCBtaWdodCBmYWNpbGl0YXRlIHNvbWUgZm9ybSBvZiB2aXJ0dWFsIGRldmljZSBpbiBRRU1VLiBTcGVjaWZpY2FsbHksIGxldCBtZSBjaGVjayB0aGUgYHBjaV9kcml2ZXJgIHVzYWdlIHdpdGhpbiB0aGUgYGF0bDFjYCBzb3VyY2UgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzMTAsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo0NDo0Ni4yMTI2ODMzODJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMzE3NDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wY2lfZHJpdmVyfHBjaV9yZWdpc3Rlcl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYz0yODgwPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBhdGwxY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYy0yODg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jOjI4OTA6bW9kdWxlX3BjaV9kcml2ZXIoYXRsMWNfZHJpdmVyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDQ6NDYuMjczMDA4MDVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzAzNjE4OTI0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKlBDSSBUYWJsZSBJbnNwZWN0aW9uOiBhdGwxYyoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIEZpcnN0IHRoaW5ncyBmaXJzdDogSSBuZWVkIHRvIHZlcmlmeSB0aGUgUENJIHRhYmxlIGZvciB0aGUgYGF0bDFjYCBkcml2ZXIuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSB3aGVuIEknbSBkZWJ1Z2dpbmcgb3IgYW5hbHl6aW5nIGFueXRoaW5nIHJlbGF0ZWQgdG8gbmV0d29yayBoYXJkd2FyZSwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBpc3N1ZXMgb3IgZHJpdmVyLXJlbGF0ZWQgcHJvYmxlbXMuIFRoZSBQQ0kgdGFibGUgaG9sZHMgY3J1Y2lhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaGFyZHdhcmUncyBjb25maWd1cmF0aW9uLCBpbmNsdWRpbmcgaXRzIHZlbmRvciBhbmQgZGV2aWNlIElEcywgaW50ZXJydXB0IGFzc2lnbm1lbnRzLCBhbmQgb3RoZXIgY3JpdGljYWwgZGV0YWlscy4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgaW5kaWNhdGlvbnMgb2YgY29uZmxpY3RzLCBtaXNjb25maWd1cmF0aW9ucywgb3IgYW55dGhpbmcgb3V0IG9mIHRoZSBvcmRpbmFyeSB0aGF0IG1pZ2h0IHNoZWQgbGlnaHQgb24gdGhlIGN1cnJlbnQgc2l0dWF0aW9uLiBJJ2xsIGJlIGV4cGVjdGluZyBzcGVjaWZpYyB2ZW5kb3IgYW5kIGRldmljZSBJRHMgdG8gdmVyaWZ5IGl04oCZcyB0aGUgY29ycmVjdCBoYXJkd2FyZS4gRnVydGhlcm1vcmUsIEnigJlsbCBiZSBjaGVja2luZyBmb3IgdGhlIGJ1cyBhbmQgZGV2aWNlIG51bWJlcnMsIG1lbW9yeSBhbmQgaW50ZXJydXB0IGFzc2lnbm1lbnRzLCBhbmQgYW55IHJlc291cmNlIGNvbmZsaWN0cyB0aGF0IG1pZ2h0IGV4cGxhaW4gc3Vib3B0aW1hbCBwZXJmb3JtYW5jZSBvciBjb25uZWN0aXZpdHkgaXNzdWVzLiBFc3NlbnRpYWxseSwgdGhpcyBQQ0kgdGFibGUgY2hlY2sgaXMgdGhlIGluaXRpYWwsIGZvdW5kYXRpb25hbCBzdGVwIGluIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgYGF0bDFjYCBOSUMgaXMgYmVpbmcgcmVjb2duaXplZCBhbmQgbWFuYWdlZCBieSB0aGUgc3lzdGVtLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgaXTigJlzIG9mdGVuIGEgZnJ1aXRmdWwgcGxhY2UgdG8gc3RhcnQsIGVzcGVjaWFsbHkgd2hlbiBmYWNpbmcgc2VlbWluZ2x5IG9ic2N1cmUgcHJvYmxlbXMuIEl0J3MgYSBmdW5kYW1lbnRhbCBjaGVja3BvaW50IHRoYXQgd2lsbCBwcm92aWRlIGNyaXRpY2FsIGluZm9ybWF0aW9uIHRvIGd1aWRlIG15IG5leHQgc3RlcHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMTY4LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDQ6NDkuMzA5MTk5NzQ2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyODUwLFxuICBcIkxpbmVDb3VudFwiOiA0NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyODUwOlxcdCAqXFxuMjg1MTpcXHQgKiBUaGlzIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIHRoZSBlcnJvciByZWNvdmVyeSBkcml2ZXIgdGVsbHMgdXMgdGhhdFxcbjI4NTI6XFx0ICogaXRzIE9LIHRvIHJlc3VtZSBub3JtYWwgb3BlcmF0aW9uLiBJbXBsZW1lbnRhdGlvbiByZXNlbWJsZXMgdGhlXFxuMjg1MzpcXHQgKiBzZWNvbmQtaGFsZiBvZiB0aGUgYXRsMWNfcmVzdW1lIHJvdXRpbmUuXFxuMjg1NDpcXHQgKi9cXG4yODU1OlxcdHN0YXRpYyB2b2lkIGF0bDFjX2lvX3Jlc3VtZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4yODU2OlxcdHtcXG4yODU3OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XFxuMjg1ODpcXHRcXHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuMjg1OTpcXHRcXG4yODYwOlxcdFxcdGlmIChuZXRpZl9ydW5uaW5nKG5ldGRldikpIHtcXG4yODYxOlxcdFxcdFxcdGlmIChhdGwxY191cChhZGFwdGVyKSkge1xcbjI4NjI6XFx0XFx0XFx0XFx0aWYgKG5ldGlmX21zZ19odyhhZGFwdGVyKSlcXG4yODYzOlxcdFxcdFxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG4yODY0OlxcdFxcdFxcdFxcdFxcdFxcdFxcXCJDYW5ub3QgYnJpbmcgZGV2aWNlIGJhY2sgdXAgYWZ0ZXIgcmVzZXRcXFxcblxcXCIpO1xcbjI4NjU6XFx0XFx0XFx0XFx0cmV0dXJuO1xcbjI4NjY6XFx0XFx0XFx0fVxcbjI4Njc6XFx0XFx0fVxcbjI4Njg6XFx0XFxuMjg2OTpcXHRcXHRuZXRpZl9kZXZpY2VfYXR0YWNoKG5ldGRldik7XFxuMjg3MDpcXHR9XFxuMjg3MTpcXHRcXG4yODcyOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIGF0bDFjX2Vycl9oYW5kbGVyID0ge1xcbjI4NzM6XFx0XFx0LmVycm9yX2RldGVjdGVkID0gYXRsMWNfaW9fZXJyb3JfZGV0ZWN0ZWQsXFxuMjg3NDpcXHRcXHQuc2xvdF9yZXNldCA9IGF0bDFjX2lvX3Nsb3RfcmVzZXQsXFxuMjg3NTpcXHRcXHQucmVzdW1lID0gYXRsMWNfaW9fcmVzdW1lLFxcbjI4NzY6XFx0fTtcXG4yODc3OlxcdFxcbjI4Nzg6XFx0c3RhdGljIFNJTVBMRV9ERVZfUE1fT1BTKGF0bDFjX3BtX29wcywgYXRsMWNfc3VzcGVuZCwgYXRsMWNfcmVzdW1lKTtcXG4yODc5OlxcdFxcbjI4ODA6XFx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGF0bDFjX2RyaXZlciA9IHtcXG4yODgxOlxcdFxcdC5uYW1lICAgICA9IGF0bDFjX2RyaXZlcl9uYW1lLFxcbjI4ODI6XFx0XFx0LmlkX3RhYmxlID0gYXRsMWNfcGNpX3RibCxcXG4yODgzOlxcdFxcdC5wcm9iZSAgICA9IGF0bDFjX3Byb2JlLFxcbjI4ODQ6XFx0XFx0LnJlbW92ZSAgID0gYXRsMWNfcmVtb3ZlLFxcbjI4ODU6XFx0XFx0LnNodXRkb3duID0gYXRsMWNfc2h1dGRvd24sXFxuMjg4NjpcXHRcXHQuZXJyX2hhbmRsZXIgPSBcXHUwMDI2YXRsMWNfZXJyX2hhbmRsZXIsXFxuMjg4NzpcXHRcXHQuZHJpdmVyLnBtID0gXFx1MDAyNmF0bDFjX3BtX29wcyxcXG4yODg4OlxcdH07XFxuMjg4OTpcXHRcXG4yODkwOlxcdG1vZHVsZV9wY2lfZHJpdmVyKGF0bDFjX2RyaXZlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjQ0OjQ5LjMwOTM1MTI3NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyNjYwNDY1NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkNoZWNraW5nIGBhdGwxY19wY2lfdGJsYCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSB0aGlua2luZyBjbGVhcmx5LiBJIG5lZWQgdG8gY2hlY2sgYGF0bDFjX3BjaV90YmxgLiBJdCdzIGxpa2VseSB0aGF0IEknbSBsb29raW5nIGZvciBhIHNwZWNpZmljIFBDSSBkZXZpY2UgSUQgb3IgcGVyaGFwcyBzb21lIHZlbmRvci1zcGVjaWZpYyBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgQXRoZXJvcyBBUjgxeHggRXRoZXJuZXQgY29udHJvbGxlciwgc3BlY2lmaWNhbGx5IHRoZSBgYXRsMWNgIGRyaXZlci4gSSdtIHByb2JhYmx5IGRpZ2dpbmcgaW50byB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gb3IgZGV2aWNlIHByb2JlIGxvZ2ljLiBLbm93aW5nIGBhdGwxY19wY2lfdGJsYCBpcyBsaWtlbHkgYSBQQ0kgSUQgdGFibGUgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIGNvdWxkIGJlIGRlYnVnZ2luZyBhIGRldmljZSBpbml0aWFsaXphdGlvbiBpc3N1ZSwgdHJvdWJsZXNob290aW5nIGEgZHJpdmVyIGNvbXBhdGliaWxpdHkgcHJvYmxlbSwgb3IgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgc3BlY2lmaWMgZGV2aWNlIGlzIGhhbmRsZWQgYXQgdGhlIGhhcmR3YXJlIGxldmVsLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBrZXJuZWwgdmVyc2lvbiBJJ20gd29ya2luZyB3aXRoLCBhcyB0aGlzIGRhdGEgY2FuIGNoYW5nZSBhY3Jvc3MgZGlmZmVyZW50IHJlbGVhc2VzLiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgbG9jYXRlIHRoZSByZWxldmFudCBzZWN0aW9uIG9mIGNvZGUsIHVuZGVyc3RhbmQgaXRzIGZ1bmN0aW9uLCBhbmQgZGV0ZXJtaW5lIGlmIGl0J3MgYmVoYXZpbmcgYXMgZXhwZWN0ZWQgaW4gdGhlIGNvbnRleHQgb2YgbXkgY3VycmVudCB0YXNrLiBJIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhlIHRhYmxlIGlzIHN0cnVjdHVyZWQgdGhlIHdheSBJIGV4cGVjdCBpdCB0byBiZS4gVGhpcyBpcyBhIGNvbW1vbiBzdGFydGluZyBwb2ludCBmb3IgUENJIGRldmljZSBkcml2ZXIgZGVidWdnaW5nLCBhbmQgSSBuZWVkIHRvIGtlZXAgbXkgZm9jdXMuIEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgdW51c3VhbCBjb25maWd1cmF0aW9ucywgb3IgdW5leHBlY3RlZCBlbnRyaWVzLiBUaGlzIHRhYmxlIGlzIHdoZXJlIHRoZSBkcml2ZXIgbGlua3Mgc3BlY2lmaWMgaGFyZHdhcmUgd2l0aCB0aGUgY29ycmVjdCBkcml2ZXIgZm9yIGluaXRpYWxpemF0aW9uIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzE1NSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDQ6NTEuOTY5ODE5MjA2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjExMDMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGwxY19wY2lfdGJsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmM9MTE9Y2hhciBhdGwxY19kcml2ZXJfbmFtZVtdID0gXFxcImF0bDFjXFxcIjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jLTEzLS8qXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmM6MTQ6ICogYXRsMWNfcGNpX3RibCAtIFBDSSBEZXZpY2UgSUQgVGFibGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYy0xNS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmMtMjEtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmM6MjI6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGF0bDFjX3BjaV90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYy0yMy1cXHR7UENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0FUVEFOU0lDLCBQQ0lfREVWSUNFX0lEX0FUVEFOU0lDX0wxQyl9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmMtMzEtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYzozMjpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgYXRsMWNfcGNpX3RibCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmMtMzMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYz0yNTgzPXN0YXRpYyBpbnQgYXRsMWNfaW5pdF9uZXRkZXYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYy0yNjA2LSAqIEBwZGV2OiBQQ0kgZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jOjI2MDc6ICogQGVudDogZW50cnkgaW4gYXRsMWNfcGNpX3RibFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jLTI2MDgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jPTI4ODA9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGF0bDFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYy0yODgxLVxcdC5uYW1lICAgICA9IGF0bDFjX2RyaXZlcl9uYW1lLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jOjI4ODI6XFx0LmlkX3RhYmxlID0gYXRsMWNfcGNpX3RibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYy0yODgzLVxcdC5wcm9iZSAgICA9IGF0bDFjX3Byb2JlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo0NDo1Mi4wMjE5NDY3NDVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NjExMzUzMjU5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRldmljZSBJRCBJbnNwZWN0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgc3RhcnRlZC4gTGV0J3Mgc3RhcnQgd2l0aCB0aGUgYmFzaWNzLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB0YWtlIGEgbG9vayBhdCB0aGUgZGV2aWNlIElEcy4gVGhpcyBpcyBhbHdheXMgdGhlIHBsYWNlIHRvIHN0YXJ0IHdoZW4gSSBhbSBpbnZlc3RpZ2F0aW5nIGFuIGlzc3VlLCBzZXR0aW5nIHVwIGFuIGluZnJhc3RydWN0dXJlLCBvciB0cm91Ymxlc2hvb3RpbmcgYSBuZXR3b3JrIGNvbm5lY3Rpb24uXG5cbktub3dpbmcgdGhlIHVuaXF1ZSBJRHMgaXMgdGhlIGNvcm5lcnN0b25lIG9mIGFueSBjb25maWd1cmF0aW9uLiBMZXQncyBzZWUgd2hhdCB3ZSdyZSB3b3JraW5nIHdpdGggaGVyZS4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIG1vZGVscyBhbmQgY29ubmVjdGlvbnMgYmVmb3JlIHByb2NlZWRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MjI1LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo0NDo1OC4xMzU0ODI0NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjY5OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjAsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjA6XFx0ICogICBDbGFzcywgQ2xhc3MgTWFzaywgcHJpdmF0ZSBkYXRhIChub3QgdXNlZCkgfVxcbiAgMjE6XFx0ICovXFxuICAyMjpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgYXRsMWNfcGNpX3RibFtdID0ge1xcbiAgMjM6XFx0XFx0e1BDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9BVFRBTlNJQywgUENJX0RFVklDRV9JRF9BVFRBTlNJQ19MMUMpfSxcXG4gIDI0OlxcdFxcdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVRUQU5TSUMsIFBDSV9ERVZJQ0VfSURfQVRUQU5TSUNfTDJDKX0sXFxuICAyNTpcXHRcXHR7UENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0FUVEFOU0lDLCBQQ0lfREVWSUNFX0lEX0FUSEVST1NfTDJDX0IpfSxcXG4gIDI2OlxcdFxcdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVRUQU5TSUMsIFBDSV9ERVZJQ0VfSURfQVRIRVJPU19MMkNfQjIpfSxcXG4gIDI3OlxcdFxcdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVRUQU5TSUMsIFBDSV9ERVZJQ0VfSURfQVRIRVJPU19MMUQpfSxcXG4gIDI4OlxcdFxcdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVRUQU5TSUMsIFBDSV9ERVZJQ0VfSURfQVRIRVJPU19MMURfMl8wKX0sXFxuICAyOTpcXHRcXHQvKiByZXF1aXJlZCBsYXN0IGVudHJ5ICovXFxuICAzMDpcXHRcXHR7IDAgfVxcbiAgMzE6XFx0fTtcXG4gIDMyOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBhdGwxY19wY2lfdGJsKTtcXG4gIDMzOlxcdFxcbiAgMzQ6XFx0TU9EVUxFX0FVVEhPUihcXFwiSmllIFlhbmdcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDQ6NTguMTM1NjUxODhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6ODcxODc3ODc0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgQXNzZXNzbWVudDogYXRsMWMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggaXMgZXZlbiAqZnV6emFibGUqIHdpdGhpbiB0aGUgY29udGV4dCBvZiBzdGFuZGFyZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSSBrbm93IHdlJ3JlIGxvb2tpbmcgYXQgUENJIGRldmljZXMsIHNwZWNpZmljYWxseSBBdHRhbnNpYyAvIFF1YWxjb21tIEF0aGVyb3MgTDFDIGFuZCByZWxhdGVkIHZhcmlhdGlvbnMuIFZlbmRvciBJRCAweDE5NjkgaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcyBhcyBwb3RlbnRpYWxseSBwcm9ibGVtYXRpYy4gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHN0YW5kYXJkIFFFTVUgb3IgR0NFIG9mZmVyIGFkZXF1YXRlIGVtdWxhdGlvbiBvZiB0aGVzZSBBdGhlcm9zIEwxQyBuZXR3b3JrIGNhcmRzP1xuXG5JIGtub3cgUUVNVSBkb2Vzbid0IGRpcmVjdGx5IG1vZGVsIHRoZXNlIEF0dGFuc2ljL0F0aGVyb3MgTklDcy4gVGhhdCdzIHRoZSBrZXkuIE5vdywgbGV0J3MgY29uc3VsdCB0aGUgZ3VpZGVsaW5lcy4gU3BlY2lmaWNhbGx5LCBzZWN0aW9uIDIsIHRoZSBcIk5FR0FUSVZFIENSSVRFUklBLFwiIHRoZSBrZXkgcG9pbnQgaGVyZSBpcyB0aGF0IHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byBjZXJ0YWluIGNhdGVnb3JpZXMuIFRoZSByZWxldmFudCBvbmUgaGVyZSBpcyBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSxcIiB3aGljaCBleHBsaWNpdGx5IG1lbnRpb25zIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRldmljZXMgdGhhdCBhcmVuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpbmdzIGxpa2UgU21hcnROSUNzLCBHUFUgZHJpdmVycywgYW5kIHRoZSBsaWtlLlxuXG5TbywgdGhlIG5leHQgdGhvdWdodCBpcyB3aGV0aGVyIHRoaXMgYGF0bDFjYCBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwYXRjaCBhbmQgdGhlIGBhdGwxY2AgZHJpdmVyJ3MgZXhlY3V0aW9uIHBhdGguIFRoZSBwYXRjaCBtb2RpZmllcyBgYXRsMWNfY2xlYW5fdHhgLCB0aGUgTkFQSSBwb2xsaW5nIGNhbGxiYWNrIGZvciBUWCBjbGVhbnVwIHdpdGhpbiB0aGUgYGF0bDFjYCBldGhlcm5ldCBkcml2ZXIuIEkgcmVjYWxsIHRoZSBjb2RlOlxuYGBgY1xuXHRBVF9SRUFEX1JFR1coXHUwMDI2YWRhcHRlci1cdTAwM2VodywgYXRsMWNfcXJlZ3NbdHBkX3JpbmctXHUwMDNlbnVtXS50cGRfY29ucyxcblx0XHQgICAgIFx1MDAyNmh3X25leHRfdG9fY2xlYW4pO1xuXG5cdGlmICh1bmxpa2VseShod19uZXh0X3RvX2NsZWFuIFx1MDAzZT0gdHBkX3JpbmctXHUwMDNlY291bnQpKVxuXHRcdGh3X25leHRfdG9fY2xlYW4gPSBuZXh0X3RvX2NsZWFuO1xuYGBgXG5cblRoaXMgaXMgKmluc2lkZSogYGF0bDFjX2NsZWFuX3R4YCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgTkFQSSBwb2xsIGhhbmRsZXIgKGBhdGwxY19jbGVhbl9yeGAgLyBgYXRsMWNfY2xlYW5fdHhgIHNjaGVkdWxlZCBieSBpbnRlcnJ1cHQgaGFuZGxlciBgYXRsMWNfaW50cmApLiBUaGlzLCBjcnVjaWFsbHksIHJlcXVpcmVzIHRoZSBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgZGV2aWNlIHRvIGJlIHByb2JlZCBhbmQgYm91bmQgdGhyb3VnaCBgYXRsMWNfcHJvYmVgLiBBbmQgYGF0bDFjX3Byb2JlYCBpcyB2ZXJ5IHNwZWNpZmljOiBpdCBvbmx5IGJpbmRzIHRvIHRob3NlIEF0aGVyb3MvQXR0YW5zaWMgUENJIGRldmljZXMgKDB4MTk2OTogMHgxMDYzLCAweDEwNjIsIDB4MjA2MCwgMHgyMDYyLCAweDEwNzMsIDB4MTA4MykuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSBzdGFuZGFyZCBRRU1VIChhbmQgR0NFIFZNcykgZG9lc24ndCBlbXVsYXRlIHRoZXNlIE5JQ3MsIHRoZSBmdW5jdGlvbiBgYXRsMWNfY2xlYW5fdHhgIGlzICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUqIGluIHRoZXNlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXQgaXMgYmxvY2tlZCBvbiB0aGUgaGFyZHdhcmUhXG5cblRvIGJlIHN1cmUsIEknbGwgcmV2aXNpdCBTZWN0aW9uIDEsIFwiUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEUuXCIgVGhlIGd1aWRlbGluZSBjbGVhcmx5IHN0YXRlcyB0aGF0IGZ1enppbmcgY2FuIG9ubHkgZmluZCBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIElmIHRoZSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLCBldmVuIGlmIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLiBTZWN0aW9uIDIgY29uZmlybXMgdGhpcyBhZ2FpbiwgZXhwbGljaXRseSBzdGF0aW5nIGl0IGFib3V0IHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlLlxuXG5UaGUgYXRsMWMgZHJpdmVyIGlzICpleGFjdGx5KiB0aGlzOiBhIHZlbmRvci1zcGVjaWZpYyBQQ0kgZXRoZXJuZXQgZHJpdmVyIGZvciBBdGhlcm9zIEwxQy9MMkMvTDFEIGNoaXBzZXRzIHRoYXQgZGVtYW5kcyBwaHlzaWNhbCBoYXJkd2FyZS5cblxuVGh1cywgYmFzZWQgb24gdGhpcyB0aG9yb3VnaCBhbmFseXNpcywgYFdvcnRoRnV6emluZ2AgbXVzdCBiZSBmYWxzZS5cblxuTGV0J3MgYWxzbyBub3RlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uczogYEFUTDFDYCwgYFBDSWAsIGFuZCBgTkVUX1ZFTkRPUl9BVEhFUk9TYCwgYW5kIHRoZSBzeW1ib2wgb2YgZm9jdXMgd2hpY2ggaXMgYGF0bDFjX2NsZWFuX3R4YC5cblxuVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIHBhdGNoIHRvdWNoZXMgYGF0bDFjX2NsZWFuX3R4KClgLCB3aGljaCBsaXZlcyBpbiB0aGUgQXRoZXJvcyBMMUMgUENJIGV0aGVybmV0IGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jYCkuIFRoaXMgZHJpdmVyIGlzIHRpZWQgdG8gcGh5c2ljYWwgUENJIGRldmljZXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFLiBUaGlzIG1ha2VzIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ3NTgsIk91dHB1dFRva2VucyI6MTQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjQ1OjA2Ljg1NDQzNDEzMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMDgwLCJFcnJvciI6IkZvY3VzU3ltYm9scyBtdXN0IGJlIGVtcHR5IGlmIFdvcnRoRnV6emluZyBpcyBmYWxzZSIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEwxQ1wiLFxuICAgIFwiUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRsMWNfY2xlYW5fdHhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgYXRsMWNfY2xlYW5fdHhgIGluIHRoZSBBdGhlcm9zIEwxQyBHaWdhYml0IEV0aGVybmV0IGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jYCkuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFF1YWxjb21tIEF0aGVyb3MvQXR0YW5zaWMgUENJIGhhcmR3YXJlIChMMUMsIEwyQywgTDFEKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIkZvY3VzU3ltYm9scyBtdXN0IGJlIGVtcHR5IGlmIFdvcnRoRnV6emluZyBpcyBmYWxzZVwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo0NTowNi44NTQ0NzUzOTFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NjkxNTQ3NDUzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvYmxlbTpcblxuKipDbGVhbmluZyBVcCBhIFBvdGVudGlhbCBEYXRhIEluY29uc2lzdGVuY3kqKlxuXG5BbHJpZ2h0LCBzbyBJJ3ZlIHNwb3R0ZWQgc29tZXRoaW5nIGluIHRoZSBjb2RlIHRoYXQncyBnb3QgYSBwb3RlbnRpYWwgaW5jb25zaXN0ZW5jeSwgYSBiaXQgb2YgYSBsb2dpY2FsIGZsYXcuIEknbSBzZWVpbmcgdGhhdCB0aGUgYEZvY3VzU3ltYm9sc2AgY29sbGVjdGlvbiAqc2hvdWxkKiBiZSBlbXB0eSBpZiB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyBpcyBmYWxzZS4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBJZiB3ZSBhcmVuJ3QgZnV6emluZywgd2UgZG9uJ3QgbmVlZCBhbnkgZm9jdXMgc3ltYm9scywgcmlnaHQ/IEl0J3MgYSB3YXN0ZSBvZiByZXNvdXJjZXMgYW5kIHBvdGVudGlhbGx5IGxlYWRzIHRvIGNvbmZ1c2lvbiBpZiB0aGV5J3JlIHBvcHVsYXRlZCB3aGVuIHRoZXkgc2hvdWxkbid0IGJlLlxuXG5UaGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGZpeCwgYnV0IGFuIGltcG9ydGFudCBvbmUuIEl0J3MgYWJvdXQgbWFpbnRhaW5pbmcgZGF0YSBpbnRlZ3JpdHkgYW5kIGtlZXBpbmcgdGhlIGNvZGUgY2xlYW4uIExldCdzIGdldCB0aGlzIGNsZWFuZWQgdXAgdG8gcHJldmVudCBmdXR1cmUgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjkwMiwiT3V0cHV0VG9rZW5zIjoxNDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbInNldC1yZXN1bHRzIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDU6MTMuNzY5OTUzNjE2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ2MzQ5MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUTDFDXCIsXG4gICAgXCJQQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGF0bDFjX2NsZWFuX3R4YCBpbiB0aGUgQXRoZXJvcyBMMUMgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uY2ApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBRdWFsY29tbSBBdGhlcm9zL0F0dGFuc2ljIFBDSSBoYXJkd2FyZSAoTDFDLCBMMkMsIEwxRCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEwxQ1wiLFxuICAgIFwiUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBhdGwxY19jbGVhbl90eGAgaW4gdGhlIEF0aGVyb3MgTDFDIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNgKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUXVhbGNvbW0gQXRoZXJvcy9BdHRhbnNpYyBQQ0kgaGFyZHdhcmUgKEwxQywgTDJDLCBMMUQpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjQ1OjEzLjg1NDU5ODA0N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflownj6pn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-11 20:30:32 +0000 UTC FinishedAt: 2026-09-11 21:45:15 +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+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUTDFDJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBhdGwxY19jbGVhbl90eGAgaW4gdGhlIEF0aGVyb3MgTDFDIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNgKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUXVhbGNvbW0gQXRoZXJvcy9BdHRhbnNpYyBQQ0kgaGFyZHdhcmUgKEwxQywgTDJDLCBMMUQpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0ZjFmMzljYzUyMGY4ZTVjNDA1MTFmN2QxMWQ5YTA4ZGY5YTU1Y2U1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMjE6NDQ6MjMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uY1xuaW5kZXggN2VmYTNmYzI1N2IzOS4uZTU4ZjFkMmMyNmJkZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uY1xuQEAgLTE2MDIsNiAmIzQzOzE2MDIsOSBAQCBzdGF0aWMgaW50IGF0bDFjX2NsZWFuX3R4KHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcbiBcdEFUX1JFQURfUkVHVyhcdTAwMjZhZGFwdGVyLVx1MDAzZWh3LCBhdGwxY19xcmVnc1t0cGRfcmluZy1cdTAwM2VudW1dLnRwZF9jb25zLFxuIFx0XHQgICAgIFx1MDAyNmh3X25leHRfdG9fY2xlYW4pO1xuIFxuJiM0MztcdGlmICh1bmxpa2VseShod19uZXh0X3RvX2NsZWFuIFx1MDAzZT0gdHBkX3JpbmctXHUwMDNlY291bnQpKVxuJiM0MztcdFx0aHdfbmV4dF90b19jbGVhbiA9IG5leHRfdG9fY2xlYW47XG4mIzQzO1xuIFx0d2hpbGUgKG5leHRfdG9fY2xlYW4gIT0gaHdfbmV4dF90b19jbGVhbikge1xuIFx0XHRidWZmZXJfaW5mbyA9IFx1MDAyNnRwZF9yaW5nLVx1MDAzZWJ1ZmZlcl9pbmZvW25leHRfdG9fY2xlYW5dO1xuIFx0XHRpZiAoYnVmZmVyX2luZm8tXHUwMDNlc2tiKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRMMUMmIzM0OywKICAgICYjMzQ7UENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBhdGwxY19jbGVhbl90eGAgaW4gdGhlIEF0aGVyb3MgTDFDIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNgKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUXVhbGNvbW0gQXRoZXJvcy9BdHRhbnNpYyBQQ0kgaGFyZHdhcmUgKEwxQywgTDJDLCBMMUQpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0ZjFmMzljYzUyMGY4ZTVjNDA1MTFmN2QxMWQ5YTA4ZGY5YTU1Y2U1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgMTEgMjE6NDQ6MjMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jCmluZGV4IDdlZmEzZmMyNTdiMzkuLmU1OGYxZDJjMjZiZGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jCkBAIC0xNjAyLDYgJiM0MzsxNjAyLDkgQEAgc3RhdGljIGludCBhdGwxY19jbGVhbl90eChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpCiAJQVRfUkVBRF9SRUdXKCZhbXA7YWRhcHRlci0mZ3Q7aHcsIGF0bDFjX3FyZWdzW3RwZF9yaW5nLSZndDtudW1dLnRwZF9jb25zLAogCQkgICAgICZhbXA7aHdfbmV4dF90b19jbGVhbik7CiAKJiM0MzsJaWYgKHVubGlrZWx5KGh3X25leHRfdG9fY2xlYW4gJmd0Oz0gdHBkX3JpbmctJmd0O2NvdW50KSkKJiM0MzsJCWh3X25leHRfdG9fY2xlYW4gPSBuZXh0X3RvX2NsZWFuOwomIzQzOwogCXdoaWxlIChuZXh0X3RvX2NsZWFuICE9IGh3X25leHRfdG9fY2xlYW4pIHsKIAkJYnVmZmVyX2luZm8gPSAmYW1wO3RwZF9yaW5nLSZndDtidWZmZXJfaW5mb1tuZXh0X3RvX2NsZWFuXTsKIAkJaWYgKGJ1ZmZlcl9pbmZvLSZndDtza2IpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBhdGwxY19tYWluLmNgIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHJlYWxseSB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVpbmcgY2hhbmdlZCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHdpdGhpbiB0aGUgYGF0bDFjX2NsZWFuX3R4YCBmdW5jdGlvbiwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEkgc2VlIGEgbmV3IGNvbmRpdGlvbmFsIGNoZWNrIGluIHRoZXJlOgoKYGBgYwoJaWYgKHVubGlrZWx5KGh3X25leHRfdG9fY2xlYW4gJmd0Oz0gdHBkX3JpbmctJmd0O2NvdW50KSkKCQlod19uZXh0X3RvX2NsZWFuID0gbmV4dF90b19jbGVhbjsKYGBgCgpJdCBzZWVtcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBwb3RlbnRpYWwgd3JhcC1hcm91bmQgaXNzdWUgaW4gdGhlIHRyYW5zbWl0IGRlc2NyaXB0b3IgcmluZy4gSWYgYGh3X25leHRfdG9fY2xlYW5gIHNvbWVob3cgZ2V0cyBhaGVhZCBvZiB0aGUgcmluZyYjMzk7cyBjYXBhY2l0eSwgd2UmIzM5O3JlIG5vdyBjb3JyZWN0aW5nIGl0IHRvIGBuZXh0X3RvX2NsZWFuYC4gVGhhdCYjMzk7cyBzbWFydDsgd2UmIzM5O3JlIGVzc2VudGlhbGx5IHNhbml0aXppbmcgdGhlIGhhcmR3YXJlLXJlcG9ydGVkIHBvaW50ZXIuIE5vdyBJIG5lZWQgdG8gc2VlICp3aHkqIHRoaXMgaXMgbmVjZXNzYXJ5LiBJcyB0aGlzIGEga25vd24gaGFyZHdhcmUgYnVnPyBBIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbj8gT3IgaXMgaXQgcmVsYXRlZCB0byBhIHJlY2VudCBjaGFuZ2UgaW4gaG93IHRoZSBkZXNjcmlwdG9ycyBhcmUgbWFuYWdlZD8KCk15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgYGF0bDFjYCBhY3R1YWxseSAqaXMqLiBJcyBpdCBhbiBBdGhlcm9zIEV0aGVybmV0IG5ldHdvcmsgaW50ZXJmYWNlIGNvbnRyb2xsZXIgKE5JQyk/IEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHNvIEkgY2FuIHB1dCB0aGlzIGludG8gdGhlIHByb3BlciBjb250ZXh0LiBUaGVuIEkmIzM5O2xsIGNoZWNrIHRoZSBhc3NvY2lhdGVkIGBLY29uZmlnYCBhbmQgYE1ha2VmaWxlYCBlbnRyaWVzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG1vZHVsZSYjMzk7cyBkZXBlbmRlbmNpZXMsIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIGFuZCBnZW5lcmFsIHB1cnBvc2UsIHdoaWNoIHdpbGwgaGVscCBkZXRlcm1pbmUgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgY29tbWl0IG1lc3NhZ2UgdGhhdCBnb2VzIHdpdGggdGhpcyBwYXRjaCB0byBzZWUgd2hhdCBtb3RpdmF0ZWQgdGhlIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGwxYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxOTY0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWc9NjM9Y29uZmlnIEFUTDFDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnLTcxLVx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgVGhlIG1vZHVsZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnOjcyOlx0ICB3aWxsIGJlIGNhbGxlZCBhdGwxYy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZy03My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX0FUTDFFKSAmIzQzOz0gYXRsMWUvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19BVEwxQykgJiM0Mzs9IGF0bDFjL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9NYWtlZmlsZS0xMS1vYmotJChDT05GSUdfQUxYKSAmIzQzOz0gYWx4L1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfQVRMMUMpICYjNDM7PSBhdGwxYy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL01ha2VmaWxlOjM6YXRsMWMtb2JqcyA6PSBhdGwxY19tYWluLm8gYXRsMWNfaHcubyBhdGwxY19ldGh0b29sLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NDA6I2luY2x1ZGUgXCYjMzQ7YXRsMWNfaHcuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC05MC0jZGVmaW5lIEFUTDFDX0dFVF9ERVNDKFIsIGksIHR5cGUpXHQoXHUwMDI2KCgodHlwZSAqKSgoUiktXHUwMDNlZGVzYykpW2ldKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo5MTojZGVmaW5lIEFUTDFDX1JGRF9ERVNDKFIsIGkpXHRBVEwxQ19HRVRfREVTQyhSLCBpLCBzdHJ1Y3QgYXRsMWNfcnhfZnJlZV9kZXNjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjkyOiNkZWZpbmUgQVRMMUNfVFBEX0RFU0MoUiwgaSlcdEFUTDFDX0dFVF9ERVNDKFIsIGksIHN0cnVjdCBhdGwxY190cGRfZGVzYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo5MzojZGVmaW5lIEFUTDFDX1JSRF9ERVNDKFIsIGkpXHRBVEwxQ19HRVRfREVTQyhSLCBpLCBzdHJ1Y3QgYXRsMWNfcmVjdl9yZXRfc3RhdHVzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTk0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0xNDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MTQyOnN0cnVjdCBhdGwxY190cGRfZGVzYyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMTQzLVx0X19sZTE2XHRidWZmZXJfbGVuOyAvKiBpbmNsdWRlIDQtYnl0ZSBDUkMgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMTQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjE0OTpzdHJ1Y3QgYXRsMWNfdHBkX2V4dF9kZXNjIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0xNTAtXHR1MzIgcmVzZXJ2ZF8wO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjQ2OnN0cnVjdCBhdGwxY19yZWN2X3JldF9zdGF0dXMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI0Ny1cdF9fbGUzMiAgd29yZDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI1NC0vKiBSRkQgZGVzY3JpcHRvciAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI1NTpzdHJ1Y3QgYXRsMWNfcnhfZnJlZV9kZXNjIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yNTYtXHRfX2xlNjRcdGJ1ZmZlcl9hZGRyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yNTktLyogRE1BIE9yZGVyIFNldHRpbmdzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjYwOmVudW0gYXRsMWNfZG1hX29yZGVyIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNjE6XHRhdGwxY19kbWFfb3JkX2luID0gMSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNjI6XHRhdGwxY19kbWFfb3JkX2VuaCA9IDIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjYzOlx0YXRsMWNfZG1hX29yZF9vdXQgPSA0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjY0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI2NjplbnVtIGF0bDFjX2RtYV9yY2Ige1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI2NzpcdGF0bDFjX3JjYl82NCA9IDAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjY4Olx0YXRsMWNfcmNiXzEyOCA9IDFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yNjktfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjcxOmVudW0gYXRsMWNfbWFjX3NwZWVkIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNzI6XHRhdGwxY19tYWNfc3BlZWRfMCA9IDAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjczOlx0YXRsMWNfbWFjX3NwZWVkXzEwXzEwMCA9IDEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6Mjc0Olx0YXRsMWNfbWFjX3NwZWVkXzEwMDAgPSAyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjc1LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI3NzplbnVtIGF0bDFjX2RtYV9yZXFfYmxvY2sge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI3ODpcdGF0bDFjX2RtYV9yZXFfMTI4ID0gMCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNzk6XHRhdGwxY19kbWFfcmVxXzI1NiA9IDEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjgwOlx0YXRsMWNfZG1hX3JlcV81MTIgPSAyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI4MTpcdGF0bDFjX2RtYV9yZXFfMTAyNCA9IDMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjgyOlx0YXRsMWNfZG1hX3JlcV8yMDQ4ID0gNCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyODM6XHRhdGwxY19kbWFfcmVxXzQwOTYgPSA1XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjg0LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyODc6ZW51bSBhdGwxY19uaWNfdHlwZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjg4LVx0YXRocl9sMWMgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6Mjk3OnN0cnVjdCBhdGwxY19od19zdGF0cyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjk4LVx0LyogcnggKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMzUxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjM1MjpzdHJ1Y3QgYXRsMWNfaHcge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTM1My1cdHU4IF9faW9tZW0gICAgICAqaHdfYWRkcjsgICAgICAgICAgICAvKiBpbm5lciByZWdpc3RlciBhZGRyZXNzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MzU0Olx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MzU1Olx0ZW51bSBhdGwxY19uaWNfdHlwZSAgbmljX3R5cGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MzU2Olx0ZW51bSBhdGwxY19kbWFfb3JkZXIgZG1hX29yZGVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjM1NzpcdGVudW0gYXRsMWNfZG1hX3JjYiAgIHJjYl92YWx1ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDozNTg6XHRlbnVtIGF0bDFjX2RtYV9yZXFfYmxvY2sgZG1hcl9ibG9jaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0zNTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTM3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDozNzU6XHRlbnVtIGF0bDFjX21hY19zcGVlZCBtYWNfc3BlZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMzc2LVx0Ym9vbCBtYWNfZHVwbGV4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00MjctLypcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0Mjg6ICogYXRsMWNfcmluZ19oZWFkZXIgcmVwcmVzZW50cyBhIHNpbmdsZSwgY29udGlndW91cyBibG9jayBvZiBETUEgc3BhY2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00MjktICogbWFwcGVkIGZvciB0aGUgdGhyZWUgZGVzY3JpcHRvciByaW5ncyAodHBkLCByZmQsIHJyZCkgZGVzY3JpYmVkIGJlbG93XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNDMwLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjQzMTpzdHJ1Y3QgYXRsMWNfcmluZ19oZWFkZXIge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQzMi1cdHZvaWQgKmRlc2M7XHRcdC8qIHZpcnR1YWwgYWRkcmVzcyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00MzctLypcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0Mzg6ICogYXRsMWNfYnVmZmVyIGlzIHdyYXBwZXIgYXJvdW5kIGEgcG9pbnRlciB0byBhIHNvY2tldCBidWZmZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00MzktICogc28gYSBETUEgaGFuZGxlIGNhbiBiZSBzdG9yZWQgYWxvbmcgd2l0aCB0aGUgc2tiXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNDQwLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjQ0MTpzdHJ1Y3QgYXRsMWNfYnVmZmVyIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00NDItXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1x0Lyogc29ja2V0IGJ1ZmZlciAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00NzEtLyogdHJhbnNpbWl0IHBhY2tldCBkZXNjcmlwdG9yICh0cGQpIHJpbmcgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0NzI6c3RydWN0IGF0bDFjX3RwZF9yaW5nIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0NzM6XHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00NzQtXHR2b2lkICpkZXNjO1x0XHQvKiBkZXNjcmlwdG9yIHJpbmcgdmlydHVhbCBhZGRyZXNzICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQ4MC1cdGF0b21pY190IG5leHRfdG9fY2xlYW47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NDgxOlx0c3RydWN0IGF0bDFjX2J1ZmZlciAqYnVmZmVyX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNDgyLVx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQ4NS0vKiByZWNlaXZlIGZyZWUgZGVzY3JpcHRvciAocmZkKSByaW5nICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NDg2OnN0cnVjdCBhdGwxY19yZmRfcmluZyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNDg3LVx0dm9pZCAqZGVzYztcdFx0LyogZGVzY3JpcHRvciByaW5nIHZpcnR1YWwgYWRkcmVzcyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00OTItXHR1MTYgbmV4dF90b19jbGVhbjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0OTM6XHRzdHJ1Y3QgYXRsMWNfYnVmZmVyICpidWZmZXJfaW5mbztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00OTQtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNDk2LS8qIHJlY2VpdmUgcmV0dXJuIGRlc2NyaXB0b3IgKHJyZCkgcmluZyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjQ5NzpzdHJ1Y3QgYXRsMWNfcnJkX3Jpbmcge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjQ5ODpcdHN0cnVjdCBhdGwxY19hZGFwdGVyICphZGFwdGVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQ5OS1cdHZvaWQgKmRlc2M7XHRcdC8qIGRlc2NyaXB0b3IgcmluZyB2aXJ0dWFsIGFkZHJlc3MgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNTA5LS8qIGJvYXJkIHNwZWNpZmljIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo1MTA6c3RydWN0IGF0bDFjX2FkYXB0ZXIge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTUxMS1cdHN0cnVjdCBuZXRfZGV2aWNlICAgKm5ldGRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC01MTItXHRzdHJ1Y3QgcGNpX2RldiAgICAgICpwZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjUxMzpcdHN0cnVjdCBhdGwxY19odyAgICAgICAgaHc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NTE0Olx0c3RydWN0IGF0bDFjX2h3X3N0YXRzICBod19zdGF0cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC01MTUtXHRzdHJ1Y3QgbWlpX2lmX2luZm8gIG1paTsgICAgLyogTUlJIGludGVyZmFjZSBpbmZvICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTU0MS1cdC8qIEFsbCBEZXNjcmlwdG9yIG1lbW9yeSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjU0MjpcdHN0cnVjdCBhdGwxY19yaW5nX2hlYWRlciByaW5nX2hlYWRlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo1NDM6XHRzdHJ1Y3QgYXRsMWNfdHBkX3JpbmcgdHBkX3JpbmdbQVRfTUFYX1RSQU5TTUlUX1FVRVVFXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo1NDQ6XHRzdHJ1Y3QgYXRsMWNfcmZkX3JpbmcgcmZkX3JpbmdbQVRfTUFYX1JFQ0VJVkVfUVVFVUVdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjU0NTpcdHN0cnVjdCBhdGwxY19ycmRfcmluZyBycmRfcmluZ1tBVF9NQVhfUkVDRUlWRV9RVUVVRV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNTQ2LVx0dTMyIGJkX251bWJlcjsgICAgIC8qIGJvYXJkIG51bWJlcjsqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC01ODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NTg4OmV4dGVybiBjaGFyIGF0bDFjX2RyaXZlcl9uYW1lW107XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNTg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjU5MDp2b2lkIGF0bDFjX3JlaW5pdF9sb2NrZWQoc3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjU5MTpzMzIgYXRsMWNfcmVzZXRfaHcoc3RydWN0IGF0bDFjX2h3ICpodyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NTkyOnZvaWQgYXRsMWNfc2V0X2V0aHRvb2xfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTU5My0jZW5kaWYgLyogX0FUTDFDX0hfICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMzojaW5jbHVkZSBcJiMzNDthdGwxYy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE1OnN0YXRpYyBpbnQgYXRsMWNfZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xNi1cdFx0XHRcdCAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MTg6XHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxOTpcdHN0cnVjdCBhdGwxY19odyAqaHcgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZWh3O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjAtXHR1MzIgc3VwcG9ydGVkLCBhZHZlcnRpc2luZztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy01OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjU5OnN0YXRpYyBpbnQgYXRsMWNfc2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy02MC1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtNjEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6NjI6XHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzo2MzpcdHN0cnVjdCBhdGwxY19odyAqaHcgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZWh3O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtNjQtXHR1MTYgIGF1dG9uZWdfYWR2ZXJ0aXNlZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy05Ni1cdFx0aHctXHUwMDNlYXV0b25lZ19hZHZlcnRpc2VkID0gYXV0b25lZ19hZHZlcnRpc2VkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6OTc6XHRcdGlmIChhdGwxY19yZXN0YXJ0X2F1dG9uZWcoaHcpICE9IDApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTk4LVx0XHRcdGlmIChuZXRpZl9tc2dfbGluayhhZGFwdGVyKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xMDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMDk6c3RhdGljIHUzMiBhdGwxY19nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTExMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMTE6XHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xMTItXHRyZXR1cm4gYWRhcHRlci1cdTAwM2Vtc2dfZW5hYmxlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTExNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjExNTpzdGF0aWMgdm9pZCBhdGwxY19zZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTMyIGRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xMTYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MTE3Olx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTE4LVx0YWRhcHRlci1cdTAwM2Vtc2dfZW5hYmxlID0gZGF0YTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xMjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMjE6c3RhdGljIGludCBhdGwxY19nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTEyMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MTI2OnN0YXRpYyB2b2lkIGF0bDFjX2dldF9yZWdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xMjctXHRcdFx0ICAgc3RydWN0IGV0aHRvb2xfcmVncyAqcmVncywgdm9pZCAqcClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTEyOC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMjk6XHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMzA6XHRzdHJ1Y3QgYXRsMWNfaHcgKmh3ID0gXHUwMDI2YWRhcHRlci1cdTAwM2VodztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTEzMS1cdHUzMiAqcmVnc19idWZmID0gcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxNjA6XHRhdGwxY19yZWFkX3BoeV9yZWcoaHcsIE1JSV9CTUNSLCBcdTAwMjZwaHlfZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xNjEtXHRyZWdzX2J1ZmZbQVRfUkVHU19MRU4vc2l6ZW9mKHUzMikgLSAyXSA9ICh1MzIpIHBoeV9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MTYyOlx0YXRsMWNfcmVhZF9waHlfcmVnKGh3LCBNSUlfQk1TUiwgXHUwMDI2cGh5X2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTYzLVx0cmVnc19idWZmW0FUX1JFR1NfTEVOL3NpemVvZih1MzIpIC0gMV0gPSAodTMyKSBwaHlfZGF0YTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxNjY6c3RhdGljIGludCBhdGwxY19nZXRfZWVwcm9tX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTY3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE2ODpcdHN0cnVjdCBhdGwxY19hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE3MDpcdGlmIChhdGwxY19jaGVja19lZXByb21fZXhpc3QoXHUwMDI2YWRhcHRlci1cdTAwM2VodykpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xNzEtXHRcdHJldHVybiBBVF9FRVBST01fTEVOO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE3NjpzdGF0aWMgaW50IGF0bDFjX2dldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE3Ny1cdFx0c3RydWN0IGV0aHRvb2xfZWVwcm9tICplZXByb20sIHU4ICpieXRlcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE3OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxNzk6XHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxODA6XHRzdHJ1Y3QgYXRsMWNfaHcgKmh3ID0gXHUwMDI2YWRhcHRlci1cdTAwM2VodztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE4MS1cdHUzMiAqZWVwcm9tX2J1ZmY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MTg5Olx0aWYgKCFhdGwxY19jaGVja19lZXByb21fZXhpc3QoaHcpKSAvKiBub3QgZXhpc3QgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE5MC1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjAzLVx0Zm9yIChpID0gZmlyc3RfZHdvcmQ7IGkgXHUwMDNjIGxhc3RfZHdvcmQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyMDQ6XHRcdGlmICghYXRsMWNfcmVhZF9lZXByb20oaHcsIGkgKiA0LCBcdTAwMjYoZWVwcm9tX2J1ZmZbaS1maXJzdF9kd29yZF0pKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjA1LVx0XHRcdGtmcmVlKGVlcHJvbV9idWZmKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yMTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyMTg6c3RhdGljIHZvaWQgYXRsMWNfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTIxOS1cdFx0c3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqZHJ2aW5mbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTIyMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyMjE6XHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyMjM6XHRzdHJzY3B5KGRydmluZm8tXHUwMDNlZHJpdmVyLCAgYXRsMWNfZHJpdmVyX25hbWUsIHNpemVvZihkcnZpbmZvLVx1MDAzZWRyaXZlcikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjI0LVx0c3Ryc2NweShkcnZpbmZvLVx1MDAzZWJ1c19pbmZvLCBwY2lfbmFtZShhZGFwdGVyLVx1MDAzZXBkZXYpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTIyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjIyODpzdGF0aWMgdm9pZCBhdGwxY19nZXRfd29sKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yMjktXHRcdFx0ICBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yMzAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MjMxOlx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjMyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI0ODpzdGF0aWMgaW50IGF0bDFjX3NldF93b2woc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfd29saW5mbyAqd29sKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjQ5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI1MDpcdHN0cnVjdCBhdGwxY19hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI1MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyNjg6c3RhdGljIGludCBhdGwxY19ud2F5X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yNjkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MjcwOlx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjcxLVx0aWYgKG5ldGlmX3J1bm5pbmcobmV0ZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI3MjpcdFx0YXRsMWNfcmVpbml0X2xvY2tlZChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI3My1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI3NjpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGF0bDFjX2V0aHRvb2xfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6Mjc3Olx0LmdldF9kcnZpbmZvICAgICAgICAgICAgPSBhdGwxY19nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI3ODpcdC5nZXRfcmVnc19sZW4gICAgICAgICAgID0gYXRsMWNfZ2V0X3JlZ3NfbGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6Mjc5Olx0LmdldF9yZWdzICAgICAgICAgICAgICAgPSBhdGwxY19nZXRfcmVncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI4MDpcdC5nZXRfd29sICAgICAgICAgICAgICAgID0gYXRsMWNfZ2V0X3dvbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI4MTpcdC5zZXRfd29sICAgICAgICAgICAgICAgID0gYXRsMWNfc2V0X3dvbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI4MjpcdC5nZXRfbXNnbGV2ZWwgICAgICAgICAgID0gYXRsMWNfZ2V0X21zZ2xldmVsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MjgzOlx0LnNldF9tc2dsZXZlbCAgICAgICAgICAgPSBhdGwxY19zZXRfbXNnbGV2ZWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyODQ6XHQubndheV9yZXNldCAgICAgICAgICAgICA9IGF0bDFjX253YXlfcmVzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yODUtXHQuZ2V0X2xpbmsgICAgICAgICAgICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyODY6XHQuZ2V0X2VlcHJvbV9sZW4gICAgICAgICA9IGF0bDFjX2dldF9lZXByb21fbGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6Mjg3Olx0LmdldF9lZXByb20gICAgICAgICAgICAgPSBhdGwxY19nZXRfZWVwcm9tLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6Mjg4Olx0LmdldF9saW5rX2tzZXR0aW5ncyAgICAgPSBhdGwxY19nZXRfbGlua19rc2V0dGluZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyODk6XHQuc2V0X2xpbmtfa3NldHRpbmdzICAgICA9IGF0bDFjX3NldF9saW5rX2tzZXR0aW5ncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI5MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MjkyOnZvaWQgYXRsMWNfc2V0X2V0aHRvb2xfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yOTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6Mjk0Olx0bmV0ZGV2LVx1MDAzZWV0aHRvb2xfb3BzID0gXHUwMDI2YXRsMWNfZXRodG9vbF9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yOTUtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxMzojaW5jbHVkZSBcJiMzNDthdGwxYy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTE4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjE5OmludCBhdGwxY19jaGVja19lZXByb21fZXhpc3Qoc3RydWN0IGF0bDFjX2h3ICpodylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjMzOnZvaWQgYXRsMWNfaHdfc2V0X21hY19hZGRyKHN0cnVjdCBhdGwxY19odyAqaHcsIHU4ICptYWNfYWRkcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTUyLS8qIHJlYWQgbWFjIGFkZHJlc3MgZnJvbSBoYXJkd2FyZSByZWdpc3RlciAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjUzOnN0YXRpYyBib29sIGF0bDFjX3JlYWRfY3VycmVudF9hZGRyKHN0cnVjdCBhdGwxY19odyAqaHcsIHU4ICpldGhfYWRkcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy01NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTY2LS8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6Njc6ICogYXRsMWNfZ2V0X3Blcm1hbmVudF9hZGRyZXNzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNjgtICogcmV0dXJuIDAgaWYgZ2V0IHZhbGlkIG1hYyBhZGRyZXNzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTY5LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjcwOnN0YXRpYyBpbnQgYXRsMWNfZ2V0X3Blcm1hbmVudF9hZGRyZXNzKHN0cnVjdCBhdGwxY19odyAqaHcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNzEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy03OC1cdC8qIE1BQy1hZGRyZXNzIGZyb20gQklPUyBpcyB0aGUgMXN0IHByaW9yaXR5ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6Nzk6XHRpZiAoYXRsMWNfcmVhZF9jdXJyZW50X2FkZHIoaHcsIGh3LVx1MDAzZXBlcm1fbWFjX2FkZHIpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTgwLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtODMtXHRBVF9SRUFEX1JFRyhodywgUkVHX09UUF9DVFJMLCBcdTAwMjZvdHBfY3RybF9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo4NDpcdGlmIChhdGwxY19jaGVja19lZXByb21fZXhpc3QoaHcpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtODUtXHRcdGlmIChody1cdTAwM2VuaWNfdHlwZSA9PSBhdGhyX2wxYyB8fCBody1cdTAwM2VuaWNfdHlwZSA9PSBhdGhyX2wyYykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy05NS1cdFx0aWYgKGh3LVx1MDAzZW5pY190eXBlID09IGF0aHJfbDJjX2IgfHwgaHctXHUwMDNlbmljX3R5cGUgPT0gYXRocl9sMmNfYjIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo5NjpcdFx0XHRhdGwxY19yZWFkX3BoeV9kYmcoaHcsIE1JSURCR19BTkFDVFJMLCBcdTAwMjZwaHlfZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtOTctXHRcdFx0cGh5X2RhdGEgXHUwMDI2PSB+QU5BQ1RSTF9IQl9FTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo5ODpcdFx0XHRhdGwxY193cml0ZV9waHlfZGJnKGh3LCBNSUlEQkdfQU5BQ1RSTCwgcGh5X2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjk5Olx0XHRcdGF0bDFjX3JlYWRfcGh5X2RiZyhodywgTUlJREJHX1ZPTFRfQ1RSTCwgXHUwMDI2cGh5X2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTEwMC1cdFx0XHRwaHlfZGF0YSB8PSBWT0xUX0NUUkxfU1dMT1dFU1Q7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MTAxOlx0XHRcdGF0bDFjX3dyaXRlX3BoeV9kYmcoaHcsIE1JSURCR19WT0xUX0NUUkwsIHBoeV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xMDItXHRcdFx0dWRlbGF5KDIwKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTI0LVx0aWYgKHJhaXNlX3ZvbCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjEyNTpcdFx0YXRsMWNfcmVhZF9waHlfZGJnKGh3LCBNSUlEQkdfQU5BQ1RSTCwgXHUwMDI2cGh5X2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTEyNi1cdFx0cGh5X2RhdGEgfD0gQU5BQ1RSTF9IQl9FTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxMjc6XHRcdGF0bDFjX3dyaXRlX3BoeV9kYmcoaHcsIE1JSURCR19BTkFDVFJMLCBwaHlfZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MTI4Olx0XHRhdGwxY19yZWFkX3BoeV9kYmcoaHcsIE1JSURCR19WT0xUX0NUUkwsIFx1MDAyNnBoeV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xMjktXHRcdHBoeV9kYXRhIFx1MDAyNj0gflZPTFRfQ1RSTF9TV0xPV0VTVDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxMzA6XHRcdGF0bDFjX3dyaXRlX3BoeV9kYmcoaHcsIE1JSURCR19WT0xUX0NUUkwsIHBoeV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xMzEtXHRcdHVkZWxheSgyMCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTEzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxMzQ6XHRpZiAoYXRsMWNfcmVhZF9jdXJyZW50X2FkZHIoaHcsIGh3LVx1MDAzZXBlcm1fbWFjX2FkZHIpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTEzNS1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTEzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxNDA6Ym9vbCBhdGwxY19yZWFkX2VlcHJvbShzdHJ1Y3QgYXRsMWNfaHcgKmh3LCB1MzIgb2Zmc2V0LCB1MzIgKnBfdmFsdWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTQxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTgyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjE4MzppbnQgYXRsMWNfcmVhZF9tYWNfYWRkcihzdHJ1Y3QgYXRsMWNfaHcgKmh3KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTE4NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTE4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxODc6XHRlcnIgPSBhdGwxY19nZXRfcGVybWFuZW50X2FkZHJlc3MoaHcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTE4OC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTE5NS0vKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjE5NjogKiBhdGwxY19oYXNoX21jX2FkZHJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xOTctICogIHB1cnBvc2Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMjAyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjIwMzp1MzIgYXRsMWNfaGFzaF9tY19hZGRyKHN0cnVjdCBhdGwxY19odyAqaHcsIHU4ICptY19hZGRyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTIwNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTIyMC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoyMjE6dm9pZCBhdGwxY19oYXNoX3NldChzdHJ1Y3QgYXRsMWNfaHcgKmh3LCB1MzIgaGFzaF92YWx1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yMjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yNDktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MjUwOmJvb2wgYXRsMWNfd2FpdF9tZGlvX2lkbGUoc3RydWN0IGF0bDFjX2h3ICpodylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yNTEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yNjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MjY1OnZvaWQgYXRsMWNfc3RvcF9waHlfcG9sbGluZyhzdHJ1Y3QgYXRsMWNfaHcgKmh3KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI2Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI3MC1cdEFUX1dSSVRFX1JFRyhodywgUkVHX01ESU9fQ1RSTCwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MjcxOlx0YXRsMWNfd2FpdF9tZGlvX2lkbGUoaHcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI3Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMjczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjI3NDp2b2lkIGF0bDFjX3N0YXJ0X3BoeV9wb2xsaW5nKHN0cnVjdCBhdGwxY19odyAqaHcsIHUxNiBjbGtfc2VsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI3NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI4Ni1cdEFUX1dSSVRFX1JFRyhodywgUkVHX01ESU9fQ1RSTCwgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoyODc6XHRhdGwxY193YWl0X21kaW9faWRsZShodyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMjg4LVx0dmFsIHw9IE1ESU9fQ1RSTF9BUF9FTjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMjk1LS8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6Mjk2OiAqIGF0bDFjX3JlYWRfcGh5X2NvcmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yOTctICogY29yZSBmdW5jdGlvbiB0byByZWFkIHJlZ2lzdGVyIGluIFBIWSB2aWEgTURJTyBjb250cm9sIHJlZ2lzdGVyLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zMDEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MzAyOmludCBhdGwxY19yZWFkX3BoeV9jb3JlKHN0cnVjdCBhdGwxY19odyAqaHcsIGJvb2wgZXh0LCB1OCBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzAzLVx0XHRcdHUxNiByZWcsIHUxNiAqcGh5X2RhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTMwNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzozMDg6XHRhdGwxY19zdG9wX3BoeV9wb2xsaW5nKGh3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zMDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTMzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzozMzM6XHRpZiAoIWF0bDFjX3dhaXRfbWRpb19pZGxlKGh3KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zMzQtXHRcdHJldHVybiAtMTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjMzOTpcdGF0bDFjX3N0YXJ0X3BoeV9wb2xsaW5nKGh3LCBjbGtfc2VsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zNDAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTM0NC0vKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjM0NTogKiBhdGwxY193cml0ZV9waHlfY29yZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTM0Ni0gKiBjb3JlIGZ1bmN0aW9uIHRvIHdyaXRlIHRvIHJlZ2lzdGVyIGluIFBIWSB2aWEgTURJTyBjb250cm9sIHJlZ2lzdGVyLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zNTAtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MzUxOmludCBhdGwxY193cml0ZV9waHlfY29yZShzdHJ1Y3QgYXRsMWNfaHcgKmh3LCBib29sIGV4dCwgdTggZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTM1Mi1cdFx0XHR1MTYgcmVnLCB1MTYgcGh5X2RhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTM1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzozNTc6XHRhdGwxY19zdG9wX3BoeV9wb2xsaW5nKGh3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zNTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTM4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzozODI6XHRpZiAoIWF0bDFjX3dhaXRfbWRpb19pZGxlKGh3KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zODMtXHRcdHJldHVybiAtMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6Mzg1Olx0YXRsMWNfc3RhcnRfcGh5X3BvbGxpbmcoaHcsIGNsa19zZWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTM4Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzk0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjM5NTppbnQgYXRsMWNfcmVhZF9waHlfcmVnKHN0cnVjdCBhdGwxY19odyAqaHcsIHUxNiByZWdfYWRkciwgdTE2ICpwaHlfZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zOTYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjM5NzpcdHJldHVybiBhdGwxY19yZWFkX3BoeV9jb3JlKGh3LCBmYWxzZSwgMCwgcmVnX2FkZHIsIHBoeV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zOTgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MDUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDA2OmludCBhdGwxY193cml0ZV9waHlfcmVnKHN0cnVjdCBhdGwxY19odyAqaHcsIHUzMiByZWdfYWRkciwgdTE2IHBoeV9kYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQwNy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDA4Olx0cmV0dXJuIGF0bDFjX3dyaXRlX3BoeV9jb3JlKGh3LCBmYWxzZSwgMCwgcmVnX2FkZHIsIHBoeV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MDktfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MTEtLyogcmVhZCBmcm9tIFBIWSBleHRlbnNpb24gcmVnaXN0ZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0MTI6aW50IGF0bDFjX3JlYWRfcGh5X2V4dChzdHJ1Y3QgYXRsMWNfaHcgKmh3LCB1OCBkZXZfYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MTMtXHRcdFx0dTE2IHJlZ19hZGRyLCB1MTYgKnBoeV9kYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQxNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDE1Olx0cmV0dXJuIGF0bDFjX3JlYWRfcGh5X2NvcmUoaHcsIHRydWUsIGRldl9hZGRyLCByZWdfYWRkciwgcGh5X2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQxNi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQxOC0vKiB3cml0ZSB0byBQSFkgZXh0ZW5zaW9uIHJlZ2lzdGVyICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDE5OmludCBhdGwxY193cml0ZV9waHlfZXh0KHN0cnVjdCBhdGwxY19odyAqaHcsIHU4IGRldl9hZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQyMC1cdFx0XHR1MTYgcmVnX2FkZHIsIHUxNiBwaHlfZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MjEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjQyMjpcdHJldHVybiBhdGwxY193cml0ZV9waHlfY29yZShodywgdHJ1ZSwgZGV2X2FkZHIsIHJlZ19hZGRyLCBwaHlfZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDIzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDI1OmludCBhdGwxY19yZWFkX3BoeV9kYmcoc3RydWN0IGF0bDFjX2h3ICpodywgdTE2IHJlZ19hZGRyLCB1MTYgKnBoeV9kYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQyNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0Mjk6XHRlcnIgPSBhdGwxY193cml0ZV9waHlfcmVnKGh3LCBNSUlfREJHX0FERFIsIHJlZ19hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MzAtXHRpZiAodW5saWtlbHkoZXJyKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDMyLVx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjQzMzpcdFx0ZXJyID0gYXRsMWNfcmVhZF9waHlfcmVnKGh3LCBNSUlfREJHX0RBVEEsIHBoeV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0Mzg6aW50IGF0bDFjX3dyaXRlX3BoeV9kYmcoc3RydWN0IGF0bDFjX2h3ICpodywgdTE2IHJlZ19hZGRyLCB1MTYgcGh5X2RhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjQ0MjpcdGVyciA9IGF0bDFjX3dyaXRlX3BoeV9yZWcoaHcsIE1JSV9EQkdfQUREUiwgcmVnX2FkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQ0My1cdGlmICh1bmxpa2VseShlcnIpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00NDUtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDQ2Olx0XHRlcnIgPSBhdGwxY193cml0ZV9waHlfcmVnKGh3LCBNSUlfREJHX0RBVEEsIHBoeV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00NDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQ1NS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0NTY6c3RhdGljIGludCBhdGwxY19waHlfc2V0dXBfYWR2KHN0cnVjdCBhdGwxY19odyAqaHcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDU3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDg0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjQ4NTpcdGlmIChhdGwxY193cml0ZV9waHlfcmVnKGh3LCBNSUlfQURWRVJUSVNFLCBtaWlfYWR2X2RhdGEpICE9IDAgfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0ODY6XHQgICAgYXRsMWNfd3JpdGVfcGh5X3JlZyhodywgTUlJX0NUUkwxMDAwLCBtaWlfZ2lnYV9jdHJsX2RhdGEpICE9IDApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDg3LVx0XHRyZXR1cm4gLTE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQ5MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0OTE6dm9pZCBhdGwxY19waHlfZGlzYWJsZShzdHJ1Y3QgYXRsMWNfaHcgKmh3KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQ5Mi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDkzOlx0YXRsMWNfcG93ZXJfc2F2aW5nKGh3LCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00OTQtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00OTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDk3OmludCBhdGwxY19waHlfcmVzZXQoc3RydWN0IGF0bDFjX2h3ICpodylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00OTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjQ5OTpcdHN0cnVjdCBhdGwxY19hZGFwdGVyICphZGFwdGVyID0gaHctXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy01MDAtXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGFkYXB0ZXItXHUwMDNlcGRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTIyLVx0aWYgKGh3LVx1MDAzZW5pY190eXBlID09IGF0aHJfbDJjX2IpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo1MjM6XHRcdGF0bDFjX3JlYWRfcGh5X2RiZyhodywgTUlJREJHX0NGR0xQU1BELCBcdTAwMjZwaHlfZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NTI0Olx0XHRhdGwxY193cml0ZV9waHlfZGJnKGh3LCBNSUlEQkdfQ0ZHTFBTUEQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTI1LVx0XHRcdHBoeV9kYXRhIFx1MDAyNiB+Q0ZHTFBTUERfUlNUQ05UX0NMSzEyNVNXKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTI5LVx0aWYgKGh3LVx1MDAzZW5pY190eXBlID09IGF0aHJfbDJjX2IgfHwgaHctXHUwMDNlbmljX3R5cGUgPT0gYXRocl9sMmNfYjIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo1MzA6XHRcdGF0bDFjX3JlYWRfcGh5X2RiZyhodywgTUlJREJHX0NBQkxFMVRIX0RFVCwgXHUwMDI2cGh5X2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTUzMS1cdFx0cGh5X2RhdGEgfD0gQ0FCTEUxVEhfREVUX0VOO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjUzMjpcdFx0YXRsMWNfd3JpdGVfcGh5X2RiZyhodywgTUlJREJHX0NBQkxFMVRIX0RFVCwgcGh5X2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTUzMy1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTM3LVx0XHRpZiAoaHctXHUwMDNlbmljX3R5cGUgPT0gYXRocl9sMmNfYiB8fCBody1cdTAwM2VuaWNfdHlwZSA9PSBhdGhyX2wyY19iMikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjUzODpcdFx0XHRhdGwxY19yZWFkX3BoeV9kYmcoaHcsIE1JSURCR19WT0xUX0NUUkwsIFx1MDAyNnBoeV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy01MzktXHRcdFx0cGh5X2RhdGEgXHUwMDI2PSB+Vk9MVF9DVFJMX1NXTE9XRVNUO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjU0MDpcdFx0XHRhdGwxY193cml0ZV9waHlfZGJnKGh3LCBNSUlEQkdfVk9MVF9DVFJMLCBwaHlfZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTQxLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTU0NS1cdFx0XHRMMURfTEVHQ1lQU19ERUYgOiBMMUNfTEVHQ1lQU19ERUY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NTQ2Olx0XHRhdGwxY193cml0ZV9waHlfZGJnKGh3LCBNSUlEQkdfTEVHQ1lQUywgcGh5X2RhdGEpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk1NzkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBBdGhlcm9zIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBBdGhlcm9zIEV0aGVybmV0IGRyaXZlcnMuIFRoZSBtb3N0IGxpa2VseSBwbGFjZSB0byBmaW5kIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvciB3b3VsZCBiZSBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHRvIGFyb3VuZCBsaW5lIDYzLCBiZWNhdXNlIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgeW91JiMzOTtsbCBmaW5kIGNvcmUgc2V0dGluZ3Mgb3IgbWF5YmUgdGhlIG1vZHVsZSBvcHRpb25zIGFyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGtpbmQgb2YgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1NTpcdFx0c2VsZWN0IENSQzMyXG4gIDU2Olx0XHRzZWxlY3QgTUlJXG4gIDU3Olx0XHRoZWxwXG4gIDU4Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBBdGhlcm9zIEwxRSBnaWdhYml0IGV0aGVybmV0IGFkYXB0ZXIuXG4gIDU5Olx0XG4gIDYwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBUaGUgbW9kdWxlXG4gIDYxOlx0XHQgIHdpbGwgYmUgY2FsbGVkIGF0bDFlLlxuICA2MjpcdFxuICA2MzpcdGNvbmZpZyBBVEwxQ1xuICA2NDpcdFx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBMMUMgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDY1Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA2NjpcdFx0c2VsZWN0IENSQzMyXG4gIDY3Olx0XHRzZWxlY3QgTUlJXG4gIDY4Olx0XHRoZWxwXG4gIDY5Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBBdGhlcm9zIEwxQyBnaWdhYml0IGV0aGVybmV0IGFkYXB0ZXIuXG4gIDcwOlx0XG4gIDcxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBUaGUgbW9kdWxlXG4gIDcyOlx0XHQgIHdpbGwgYmUgY2FsbGVkIGF0bDFjLlxuICA3MzpcdFxuICA3NDpcdGNvbmZpZyBBTFhcbiAgNzU6XHRcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgQVI4MTZ4L0FSODE3eCBzdXBwb3J0XCYjMzQ7XG4gIDc2Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA3NzpcdFx0c2VsZWN0IENSQzMyXG4gIDc4Olx0XHRzZWxlY3QgTURJT1xuICA3OTpcdFx0aGVscFxuICA4MDpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgUXVhbGNvbW0gQXRoZXJvcyBMMUYgZXRoZXJuZXQgYWRhcHRlcixcbiAgODE6XHRcdCAgaS5lLiB0aGUgZm9sbG93aW5nIGNoaXBzZXRzOlxuICA4MjpcdFxuICA4MzpcdFx0ICAxOTY5OjEwOTEgLSBBUjgxNjEgR2lnYWJpdCBFdGhlcm5ldFxuICA4NDpcdFx0ICAxOTY5OjEwOTAgLSBBUjgxNjIgRmFzdCBFdGhlcm5ldFxuICA4NTpcdFx0ICAxOTY5OjEwQTEgLSBBUjgxNzEgR2lnYWJpdCBFdGhlcm5ldFxuICA4NjpcdFx0ICAxOTY5OjEwQTAgLSBBUjgxNzIgRmFzdCBFdGhlcm5ldFxuICA4NzpcdFxuICA4ODpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgVGhlIG1vZHVsZVxuICA4OTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBhbHguXG4gIDkwOlx0XG4gIDkxOlx0ZW5kaWYgIyBORVRfVkVORE9SX0FUSEVST1NcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDI4MAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuIGV4cGVydDoKCioqRGl2aW5nIGludG8gdGhlIEFUTDFDIERyaXZlcioqCgpPa2F5LCB0aW1lIHRvIGdldCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgYXRsMWNfbWFpbi5jYCBmaWxlIHdpdGhpbiB0aGUgQXRoZXJvcyBFdGhlcm5ldCBkcml2ZXIgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIEkmIzM5O20gemVyb2luZyBpbiBvbiB0aGUgY29kZSBhcm91bmQgbGluZSAxNjAyLiBUaGF0JiMzOTtzIHRoZSBsaWtlbHkgbG9jYXRpb24gd2hlcmUgdGhlIGlzc3VlIEkmIzM5O20gZGVidWdnaW5nIG1pZ2h0IGJlIG1hbmlmZXN0aW5nLiBJJiMzOTt2ZSBnb3QgYSBodW5jaCBiYXNlZCBvbiByZWNlbnQgb2JzZXJ2YXRpb25zLCBhbmQgcGlucG9pbnRpbmcgdGhhdCBsaW5lIHdpbGwgbGV0IG1lIGNvbmZpcm0gbXkgdGhlb3J5LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHRoZXJlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1OTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTU5MDpcdFx0c3RydWN0IGF0bDFjX3RwZF9yaW5nICp0cGRfcmluZyA9XG4xNTkxOlx0XHRcdGNvbnRhaW5lcl9vZihuYXBpLCBzdHJ1Y3QgYXRsMWNfdHBkX3JpbmcsIG5hcGkpO1xuMTU5MjpcdFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSB0cGRfcmluZy1cdTAwM2VhZGFwdGVyO1xuMTU5MzpcdFx0c3RydWN0IG5ldGRldl9xdWV1ZSAqdHhxID1cbjE1OTQ6XHRcdFx0bmV0ZGV2X2dldF90eF9xdWV1ZShuYXBpLVx1MDAzZWRldiwgdHBkX3JpbmctXHUwMDNlbnVtKTtcbjE1OTU6XHRcdHN0cnVjdCBhdGwxY19idWZmZXIgKmJ1ZmZlcl9pbmZvO1xuMTU5NjpcdFx0c3RydWN0IHBjaV9kZXYgKnBkZXYgPSBhZGFwdGVyLVx1MDAzZXBkZXY7XG4xNTk3Olx0XHR1MTYgbmV4dF90b19jbGVhbiA9IGF0b21pY19yZWFkKFx1MDAyNnRwZF9yaW5nLVx1MDAzZW5leHRfdG9fY2xlYW4pO1xuMTU5ODpcdFx0dTE2IGh3X25leHRfdG9fY2xlYW47XG4xNTk5Olx0XHR1bnNpZ25lZCBpbnQgdG90YWxfYnl0ZXMgPSAwLCB0b3RhbF9wYWNrZXRzID0gMDtcbjE2MDA6XHRcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4xNjAxOlx0XG4xNjAyOlx0XHRBVF9SRUFEX1JFR1coXHUwMDI2YWRhcHRlci1cdTAwM2VodywgYXRsMWNfcXJlZ3NbdHBkX3JpbmctXHUwMDNlbnVtXS50cGRfY29ucyxcbjE2MDM6XHRcdFx0ICAgICBcdTAwMjZod19uZXh0X3RvX2NsZWFuKTtcbjE2MDQ6XHRcbjE2MDU6XHRcdGlmICh1bmxpa2VseShod19uZXh0X3RvX2NsZWFuIFx1MDAzZT0gdHBkX3JpbmctXHUwMDNlY291bnQpKVxuMTYwNjpcdFx0XHRod19uZXh0X3RvX2NsZWFuID0gbmV4dF90b19jbGVhbjtcbjE2MDc6XHRcbjE2MDg6XHRcdHdoaWxlIChuZXh0X3RvX2NsZWFuICE9IGh3X25leHRfdG9fY2xlYW4pIHtcbjE2MDk6XHRcdFx0YnVmZmVyX2luZm8gPSBcdTAwMjZ0cGRfcmluZy1cdTAwM2VidWZmZXJfaW5mb1tuZXh0X3RvX2NsZWFuXTtcbjE2MTA6XHRcdFx0aWYgKGJ1ZmZlcl9pbmZvLVx1MDAzZXNrYikge1xuMTYxMTpcdFx0XHRcdHRvdGFsX2J5dGVzICYjNDM7PSBidWZmZXJfaW5mby1cdTAwM2Vza2ItXHUwMDNlbGVuO1xuMTYxMjpcdFx0XHRcdHRvdGFsX3BhY2tldHMmIzQzOyYjNDM7O1xuMTYxMzpcdFx0XHR9XG4xNjE0Olx0XHRcdGF0bDFjX2NsZWFuX2J1ZmZlcihwZGV2LCBidWZmZXJfaW5mbywgYnVkZ2V0KTtcbjE2MTU6XHRcdFx0aWYgKCYjNDM7JiM0MztuZXh0X3RvX2NsZWFuID09IHRwZF9yaW5nLVx1MDAzZWNvdW50KVxuMTYxNjpcdFx0XHRcdG5leHRfdG9fY2xlYW4gPSAwO1xuMTYxNzpcdFx0XHRhdG9taWNfc2V0KFx1MDAyNnRwZF9yaW5nLVx1MDAzZW5leHRfdG9fY2xlYW4sIG5leHRfdG9fY2xlYW4pO1xuMTYxODpcdFx0fVxuMTYxOTpcdFxuMTYyMDpcdFx0bmV0ZGV2X3R4X2NvbXBsZXRlZF9xdWV1ZSh0eHEsIHRvdGFsX3BhY2tldHMsIHRvdGFsX2J5dGVzKTtcbjE2MjE6XHRcbjE2MjI6XHRcdGlmIChuZXRpZl90eF9xdWV1ZV9zdG9wcGVkKHR4cSkgXHUwMDI2XHUwMDI2IG5ldGlmX2NhcnJpZXJfb2soYWRhcHRlci1cdTAwM2VuZXRkZXYpKVxuMTYyMzpcdFx0XHRuZXRpZl90eF93YWtlX3F1ZXVlKHR4cSk7XG4xNjI0Olx0XG4xNjI1Olx0XHRpZiAodG90YWxfcGFja2V0cyBcdTAwM2MgYnVkZ2V0KSB7XG4xNjI2Olx0XHRcdG5hcGlfY29tcGxldGVfZG9uZShuYXBpLCB0b3RhbF9wYWNrZXRzKTtcbjE2Mjc6XHRcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2YWRhcHRlci1cdTAwM2Vody5pbnRyX21hc2tfbG9jaywgZmxhZ3MpO1xuMTYyODpcdFx0XHRhZGFwdGVyLVx1MDAzZWh3LmludHJfbWFzayB8PSBhdGwxY19xcmVnc1t0cGRfcmluZy1cdTAwM2VudW1dLnR4X2lzcjtcbjE2Mjk6XHRcdFx0QVRfV1JJVEVfUkVHKFx1MDAyNmFkYXB0ZXItXHUwMDNlaHcsIFJFR19JTVIsIGFkYXB0ZXItXHUwMDNlaHcuaW50cl9tYXNrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTMxMAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDI2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgYXRsMWNgIERyaXZlciBhbmQgUUVNVSBFbXVsYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBhdGwxY2AgaXMgYSBQQ0kgZGV2aWNlIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aG9zZSBBdGhlcm9zIEwxQyBHaWdhYml0IEV0aGVybmV0IGFkYXB0ZXJzLiBUaGUgcXVlc3Rpb24gSSBuZWVkIHRvIGFuc3dlciBpcyB3aGV0aGVyIFFFTVUgcHJvcGVybHkgZW11bGF0ZXMgdGhlc2UgZGV2aWNlcy4gQmFzZWQgb24gdGhlIHByb21wdCBwcm92aWRlZCwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBkb2VzIFFFTVUgZXZlbiAqdHJ5KiB0byBlbXVsYXRlIHRoZSBBdGhlcm9zIEwxQz8KCkxldCYjMzk7cyByZWZlciBiYWNrIHRvIFNlY3Rpb24gMiBvZiB0aGUgcHJvbXB0LiBJdCBsaXN0cyAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IOKAkyB0aGluZ3MgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIGJlY2F1c2UgdGhleSByZXF1aXJlIGEgcmVhbCBBU0lDIG9yIFBDSWUgY2FyZC4gVGhlIGxpc3QgaW5jbHVkZXMgdGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgZXRjLiBXaGlsZSBgYXRsMWNgIGlzbiYjMzk7dCBleHBsaWNpdGx5IGxpc3RlZCwgaXQgcmFpc2VzIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb246IGlzIHRoZSBBdGhlcm9zIEwxQyBpbiB0aGF0IHNhbWUgY2F0ZWdvcnk/CgpNeSBuZXh0IHRob3VnaHQgcHJvY2VzcyBpcyBmb2N1c2VkIG9uIHdoYXQgUUVNVSAqZG9lcyogZW11bGF0ZSBpbiB0ZXJtcyBvZiBuZXR3b3JrIGNhcmRzLiBJIHJlY2FsbCB0aGUgdXN1YWwgc3VzcGVjdHM6IGUxMDAwLCBlMTAwMGUsIGlnYiwgcnRsODEzOSwgYG5lMmtfcGNpYCwgYHBjbmV0YCwgYHZpcnRpby1uZXQtcGNpYCwgYHZteG5ldDNgLCBgcm9ja2VyYCwgYHN1bmdlbWAsIGBzdW5nZW0tcGNpYCwgZXRjLiBJJiMzOTttIG5vdCBzZWVpbmcgQVI4MXh4IG9yIEwxQyB0aGVyZS4gVGhpcyBzdWdnZXN0cyBJIG5lZWQgdG8gZGlnIGRlZXBlci4KClNvLCB0aGUga2V5IHF1ZXN0aW9ucyBhcmU6IERvZXMgUUVNVSBoYXZlIGFueSB2aXJ0dWFsIGJ1cyBpbXBsZW1lbnRhdGlvbnMgb3Igb3RoZXIgZm9ybXMgb2YgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGNhcmQgZmFtaWx5PyBJcyB0aGUgYGF0bDFjYCBkcml2ZXIgc3RyaWN0bHkgYSBQQ0kgZHJpdmVyPyBJIG5lZWQgdG8gbG9vayBpbnRvIHdoZXRoZXIgaXQmIzM5O3MgdGllZCBzb2xlbHkgdG8gYSBwaHlzaWNhbCBQQ0kgaW1wbGVtZW50YXRpb24sIG9yIGlmIHRoZXJlJiMzOTtzIGFueSBhYnN0cmFjdGlvbiBsYXllciB0aGF0IG1pZ2h0IGZhY2lsaXRhdGUgc29tZSBmb3JtIG9mIHZpcnR1YWwgZGV2aWNlIGluIFFFTVUuIFNwZWNpZmljYWxseSwgbGV0IG1lIGNoZWNrIHRoZSBgcGNpX2RyaXZlcmAgdXNhZ2Ugd2l0aGluIHRoZSBgYXRsMWNgIHNvdXJjZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGNpX2RyaXZlcnxwY2lfcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYz0yODgwPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBhdGwxY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmMtMjg4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jOjI4OTA6bW9kdWxlX3BjaV9kcml2ZXIoYXRsMWNfZHJpdmVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIxNjgKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqUENJIFRhYmxlIEluc3BlY3Rpb246IGF0bDFjKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIEZpcnN0IHRoaW5ncyBmaXJzdDogSSBuZWVkIHRvIHZlcmlmeSB0aGUgUENJIHRhYmxlIGZvciB0aGUgYGF0bDFjYCBkcml2ZXIuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSB3aGVuIEkmIzM5O20gZGVidWdnaW5nIG9yIGFuYWx5emluZyBhbnl0aGluZyByZWxhdGVkIHRvIG5ldHdvcmsgaGFyZHdhcmUsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gaXNzdWVzIG9yIGRyaXZlci1yZWxhdGVkIHByb2JsZW1zLiBUaGUgUENJIHRhYmxlIGhvbGRzIGNydWNpYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGhhcmR3YXJlJiMzOTtzIGNvbmZpZ3VyYXRpb24sIGluY2x1ZGluZyBpdHMgdmVuZG9yIGFuZCBkZXZpY2UgSURzLCBpbnRlcnJ1cHQgYXNzaWdubWVudHMsIGFuZCBvdGhlciBjcml0aWNhbCBkZXRhaWxzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaW5kaWNhdGlvbnMgb2YgY29uZmxpY3RzLCBtaXNjb25maWd1cmF0aW9ucywgb3IgYW55dGhpbmcgb3V0IG9mIHRoZSBvcmRpbmFyeSB0aGF0IG1pZ2h0IHNoZWQgbGlnaHQgb24gdGhlIGN1cnJlbnQgc2l0dWF0aW9uLiBJJiMzOTtsbCBiZSBleHBlY3Rpbmcgc3BlY2lmaWMgdmVuZG9yIGFuZCBkZXZpY2UgSURzIHRvIHZlcmlmeSBpdOKAmXMgdGhlIGNvcnJlY3QgaGFyZHdhcmUuIEZ1cnRoZXJtb3JlLCBJ4oCZbGwgYmUgY2hlY2tpbmcgZm9yIHRoZSBidXMgYW5kIGRldmljZSBudW1iZXJzLCBtZW1vcnkgYW5kIGludGVycnVwdCBhc3NpZ25tZW50cywgYW5kIGFueSByZXNvdXJjZSBjb25mbGljdHMgdGhhdCBtaWdodCBleHBsYWluIHN1Ym9wdGltYWwgcGVyZm9ybWFuY2Ugb3IgY29ubmVjdGl2aXR5IGlzc3Vlcy4gRXNzZW50aWFsbHksIHRoaXMgUENJIHRhYmxlIGNoZWNrIGlzIHRoZSBpbml0aWFsLCBmb3VuZGF0aW9uYWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGBhdGwxY2AgTklDIGlzIGJlaW5nIHJlY29nbml6ZWQgYW5kIG1hbmFnZWQgYnkgdGhlIHN5c3RlbS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGl04oCZcyBvZnRlbiBhIGZydWl0ZnVsIHBsYWNlIHRvIHN0YXJ0LCBlc3BlY2lhbGx5IHdoZW4gZmFjaW5nIHNlZW1pbmdseSBvYnNjdXJlIHByb2JsZW1zLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGNoZWNrcG9pbnQgdGhhdCB3aWxsIHByb3ZpZGUgY3JpdGljYWwgaW5mb3JtYXRpb24gdG8gZ3VpZGUgbXkgbmV4dCBzdGVwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI4NTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7Mjg1MDpcdCAqXG4yODUxOlx0ICogVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiB0aGUgZXJyb3IgcmVjb3ZlcnkgZHJpdmVyIHRlbGxzIHVzIHRoYXRcbjI4NTI6XHQgKiBpdHMgT0sgdG8gcmVzdW1lIG5vcm1hbCBvcGVyYXRpb24uIEltcGxlbWVudGF0aW9uIHJlc2VtYmxlcyB0aGVcbjI4NTM6XHQgKiBzZWNvbmQtaGFsZiBvZiB0aGUgYXRsMWNfcmVzdW1lIHJvdXRpbmUuXG4yODU0Olx0ICovXG4yODU1Olx0c3RhdGljIHZvaWQgYXRsMWNfaW9fcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuMjg1NjpcdHtcbjI4NTc6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XG4yODU4Olx0XHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG4yODU5Olx0XG4yODYwOlx0XHRpZiAobmV0aWZfcnVubmluZyhuZXRkZXYpKSB7XG4yODYxOlx0XHRcdGlmIChhdGwxY191cChhZGFwdGVyKSkge1xuMjg2MjpcdFx0XHRcdGlmIChuZXRpZl9tc2dfaHcoYWRhcHRlcikpXG4yODYzOlx0XHRcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuMjg2NDpcdFx0XHRcdFx0XHRcJiMzNDtDYW5ub3QgYnJpbmcgZGV2aWNlIGJhY2sgdXAgYWZ0ZXIgcmVzZXRcXG5cJiMzNDspO1xuMjg2NTpcdFx0XHRcdHJldHVybjtcbjI4NjY6XHRcdFx0fVxuMjg2NzpcdFx0fVxuMjg2ODpcdFxuMjg2OTpcdFx0bmV0aWZfZGV2aWNlX2F0dGFjaChuZXRkZXYpO1xuMjg3MDpcdH1cbjI4NzE6XHRcbjI4NzI6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBhdGwxY19lcnJfaGFuZGxlciA9IHtcbjI4NzM6XHRcdC5lcnJvcl9kZXRlY3RlZCA9IGF0bDFjX2lvX2Vycm9yX2RldGVjdGVkLFxuMjg3NDpcdFx0LnNsb3RfcmVzZXQgPSBhdGwxY19pb19zbG90X3Jlc2V0LFxuMjg3NTpcdFx0LnJlc3VtZSA9IGF0bDFjX2lvX3Jlc3VtZSxcbjI4NzY6XHR9O1xuMjg3NzpcdFxuMjg3ODpcdHN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhhdGwxY19wbV9vcHMsIGF0bDFjX3N1c3BlbmQsIGF0bDFjX3Jlc3VtZSk7XG4yODc5Olx0XG4yODgwOlx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGF0bDFjX2RyaXZlciA9IHtcbjI4ODE6XHRcdC5uYW1lICAgICA9IGF0bDFjX2RyaXZlcl9uYW1lLFxuMjg4MjpcdFx0LmlkX3RhYmxlID0gYXRsMWNfcGNpX3RibCxcbjI4ODM6XHRcdC5wcm9iZSAgICA9IGF0bDFjX3Byb2JlLFxuMjg4NDpcdFx0LnJlbW92ZSAgID0gYXRsMWNfcmVtb3ZlLFxuMjg4NTpcdFx0LnNodXRkb3duID0gYXRsMWNfc2h1dGRvd24sXG4yODg2Olx0XHQuZXJyX2hhbmRsZXIgPSBcdTAwMjZhdGwxY19lcnJfaGFuZGxlcixcbjI4ODc6XHRcdC5kcml2ZXIucG0gPSBcdTAwMjZhdGwxY19wbV9vcHMsXG4yODg4Olx0fTtcbjI4ODk6XHRcbjI4OTA6XHRtb2R1bGVfcGNpX2RyaXZlcihhdGwxY19kcml2ZXIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzE1NQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqQ2hlY2tpbmcgYGF0bDFjX3BjaV90YmxgKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBGaXJzdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIHRoaW5raW5nIGNsZWFybHkuIEkgbmVlZCB0byBjaGVjayBgYXRsMWNfcGNpX3RibGAuIEl0JiMzOTtzIGxpa2VseSB0aGF0IEkmIzM5O20gbG9va2luZyBmb3IgYSBzcGVjaWZpYyBQQ0kgZGV2aWNlIElEIG9yIHBlcmhhcHMgc29tZSB2ZW5kb3Itc3BlY2lmaWMgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIEF0aGVyb3MgQVI4MXh4IEV0aGVybmV0IGNvbnRyb2xsZXIsIHNwZWNpZmljYWxseSB0aGUgYGF0bDFjYCBkcml2ZXIuIEkmIzM5O20gcHJvYmFibHkgZGlnZ2luZyBpbnRvIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gb3IgZGV2aWNlIHByb2JlIGxvZ2ljLiBLbm93aW5nIGBhdGwxY19wY2lfdGJsYCBpcyBsaWtlbHkgYSBQQ0kgSUQgdGFibGUgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIGNvdWxkIGJlIGRlYnVnZ2luZyBhIGRldmljZSBpbml0aWFsaXphdGlvbiBpc3N1ZSwgdHJvdWJsZXNob290aW5nIGEgZHJpdmVyIGNvbXBhdGliaWxpdHkgcHJvYmxlbSwgb3IgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgc3BlY2lmaWMgZGV2aWNlIGlzIGhhbmRsZWQgYXQgdGhlIGhhcmR3YXJlIGxldmVsLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hpY2gga2VybmVsIHZlcnNpb24gSSYjMzk7bSB3b3JraW5nIHdpdGgsIGFzIHRoaXMgZGF0YSBjYW4gY2hhbmdlIGFjcm9zcyBkaWZmZXJlbnQgcmVsZWFzZXMuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBsb2NhdGUgdGhlIHJlbGV2YW50IHNlY3Rpb24gb2YgY29kZSwgdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb24sIGFuZCBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgYmVoYXZpbmcgYXMgZXhwZWN0ZWQgaW4gdGhlIGNvbnRleHQgb2YgbXkgY3VycmVudCB0YXNrLiBJIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhlIHRhYmxlIGlzIHN0cnVjdHVyZWQgdGhlIHdheSBJIGV4cGVjdCBpdCB0byBiZS4gVGhpcyBpcyBhIGNvbW1vbiBzdGFydGluZyBwb2ludCBmb3IgUENJIGRldmljZSBkcml2ZXIgZGVidWdnaW5nLCBhbmQgSSBuZWVkIHRvIGtlZXAgbXkgZm9jdXMuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYW55IHVudXN1YWwgY29uZmlndXJhdGlvbnMsIG9yIHVuZXhwZWN0ZWQgZW50cmllcy4gVGhpcyB0YWJsZSBpcyB3aGVyZSB0aGUgZHJpdmVyIGxpbmtzIHNwZWNpZmljIGhhcmR3YXJlIHdpdGggdGhlIGNvcnJlY3QgZHJpdmVyIGZvciBpbml0aWFsaXphdGlvbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRsMWNfcGNpX3RibCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmM9MTE9Y2hhciBhdGwxY19kcml2ZXJfbmFtZVtdID0gXCYjMzQ7YXRsMWNcJiMzNDs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmMtMTMtLypcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jOjE0OiAqIGF0bDFjX3BjaV90YmwgLSBQQ0kgRGV2aWNlIElEIFRhYmxlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYy0xNS0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jLTIxLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmM6MjI6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGF0bDFjX3BjaV90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jLTIzLVx0e1BDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9BVFRBTlNJQywgUENJX0RFVklDRV9JRF9BVFRBTlNJQ19MMUMpfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYy0zMS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmM6MzI6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGF0bDFjX3BjaV90YmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmMtMzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmM9MjU4Mz1zdGF0aWMgaW50IGF0bDFjX2luaXRfbmV0ZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jLTI2MDYtICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYzoyNjA3OiAqIEBlbnQ6IGVudHJ5IGluIGF0bDFjX3BjaV90YmxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jLTI2MDgtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYz0yODgwPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBhdGwxY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYy0yODgxLVx0Lm5hbWUgICAgID0gYXRsMWNfZHJpdmVyX25hbWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYzoyODgyOlx0LmlkX3RhYmxlID0gYXRsMWNfcGNpX3RibCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jLTI4ODMtXHQucHJvYmUgICAgPSBhdGwxY19wcm9iZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyMjUKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEZXZpY2UgSUQgSW5zcGVjdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBzdGFydGVkLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgYmFzaWNzLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB0YWtlIGEgbG9vayBhdCB0aGUgZGV2aWNlIElEcy4gVGhpcyBpcyBhbHdheXMgdGhlIHBsYWNlIHRvIHN0YXJ0IHdoZW4gSSBhbSBpbnZlc3RpZ2F0aW5nIGFuIGlzc3VlLCBzZXR0aW5nIHVwIGFuIGluZnJhc3RydWN0dXJlLCBvciB0cm91Ymxlc2hvb3RpbmcgYSBuZXR3b3JrIGNvbm5lY3Rpb24uCgpLbm93aW5nIHRoZSB1bmlxdWUgSURzIGlzIHRoZSBjb3JuZXJzdG9uZSBvZiBhbnkgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTtyZSB3b3JraW5nIHdpdGggaGVyZS4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoZSBtb2RlbHMgYW5kIGNvbm5lY3Rpb25zIGJlZm9yZSBwcm9jZWVkaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyMDpcdCAqICAgQ2xhc3MsIENsYXNzIE1hc2ssIHByaXZhdGUgZGF0YSAobm90IHVzZWQpIH1cbiAgMjE6XHQgKi9cbiAgMjI6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgYXRsMWNfcGNpX3RibFtdID0ge1xuICAyMzpcdFx0e1BDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9BVFRBTlNJQywgUENJX0RFVklDRV9JRF9BVFRBTlNJQ19MMUMpfSxcbiAgMjQ6XHRcdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVRUQU5TSUMsIFBDSV9ERVZJQ0VfSURfQVRUQU5TSUNfTDJDKX0sXG4gIDI1Olx0XHR7UENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0FUVEFOU0lDLCBQQ0lfREVWSUNFX0lEX0FUSEVST1NfTDJDX0IpfSxcbiAgMjY6XHRcdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVRUQU5TSUMsIFBDSV9ERVZJQ0VfSURfQVRIRVJPU19MMkNfQjIpfSxcbiAgMjc6XHRcdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVRUQU5TSUMsIFBDSV9ERVZJQ0VfSURfQVRIRVJPU19MMUQpfSxcbiAgMjg6XHRcdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVRUQU5TSUMsIFBDSV9ERVZJQ0VfSURfQVRIRVJPU19MMURfMl8wKX0sXG4gIDI5Olx0XHQvKiByZXF1aXJlZCBsYXN0IGVudHJ5ICovXG4gIDMwOlx0XHR7IDAgfVxuICAzMTpcdH07XG4gIDMyOlx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGF0bDFjX3BjaV90YmwpO1xuICAzMzpcdFxuICAzNDpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7SmllIFlhbmdcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDc1OAoJCQkJCQkJb3V0cHV0OiAxNDkKCQkJCQkJCXRob3VnaHRzOiAxMDg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBhdGwxYyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIGlzIGV2ZW4gKmZ1enphYmxlKiB3aXRoaW4gdGhlIGNvbnRleHQgb2Ygc3RhbmRhcmQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEkga25vdyB3ZSYjMzk7cmUgbG9va2luZyBhdCBQQ0kgZGV2aWNlcywgc3BlY2lmaWNhbGx5IEF0dGFuc2ljIC8gUXVhbGNvbW0gQXRoZXJvcyBMMUMgYW5kIHJlbGF0ZWQgdmFyaWF0aW9ucy4gVmVuZG9yIElEIDB4MTk2OSBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIHBvdGVudGlhbGx5IHByb2JsZW1hdGljLiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgc3RhbmRhcmQgUUVNVSBvciBHQ0Ugb2ZmZXIgYWRlcXVhdGUgZW11bGF0aW9uIG9mIHRoZXNlIEF0aGVyb3MgTDFDIG5ldHdvcmsgY2FyZHM/CgpJIGtub3cgUUVNVSBkb2VzbiYjMzk7dCBkaXJlY3RseSBtb2RlbCB0aGVzZSBBdHRhbnNpYy9BdGhlcm9zIE5JQ3MuIFRoYXQmIzM5O3MgdGhlIGtleS4gTm93LCBsZXQmIzM5O3MgY29uc3VsdCB0aGUgZ3VpZGVsaW5lcy4gU3BlY2lmaWNhbGx5LCBzZWN0aW9uIDIsIHRoZSAmIzM0O05FR0FUSVZFIENSSVRFUklBLCYjMzQ7IHRoZSBrZXkgcG9pbnQgaGVyZSBpcyB0aGF0IHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byBjZXJ0YWluIGNhdGVnb3JpZXMuIFRoZSByZWxldmFudCBvbmUgaGVyZSBpcyAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSwmIzM0OyB3aGljaCBleHBsaWNpdGx5IG1lbnRpb25zIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRldmljZXMgdGhhdCBhcmVuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoaW5ncyBsaWtlIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMsIGFuZCB0aGUgbGlrZS4KClNvLCB0aGUgbmV4dCB0aG91Z2h0IGlzIHdoZXRoZXIgdGhpcyBgYXRsMWNgIGRyaXZlciBjYW4gYmUgcmVhY2hlZCB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHBhdGNoIGFuZCB0aGUgYGF0bDFjYCBkcml2ZXImIzM5O3MgZXhlY3V0aW9uIHBhdGguIFRoZSBwYXRjaCBtb2RpZmllcyBgYXRsMWNfY2xlYW5fdHhgLCB0aGUgTkFQSSBwb2xsaW5nIGNhbGxiYWNrIGZvciBUWCBjbGVhbnVwIHdpdGhpbiB0aGUgYGF0bDFjYCBldGhlcm5ldCBkcml2ZXIuIEkgcmVjYWxsIHRoZSBjb2RlOgpgYGBjCglBVF9SRUFEX1JFR1coJmFtcDthZGFwdGVyLSZndDtodywgYXRsMWNfcXJlZ3NbdHBkX3JpbmctJmd0O251bV0udHBkX2NvbnMsCgkJICAgICAmYW1wO2h3X25leHRfdG9fY2xlYW4pOwoKCWlmICh1bmxpa2VseShod19uZXh0X3RvX2NsZWFuICZndDs9IHRwZF9yaW5nLSZndDtjb3VudCkpCgkJaHdfbmV4dF90b19jbGVhbiA9IG5leHRfdG9fY2xlYW47CmBgYAoKVGhpcyBpcyAqaW5zaWRlKiBgYXRsMWNfY2xlYW5fdHhgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBOQVBJIHBvbGwgaGFuZGxlciAoYGF0bDFjX2NsZWFuX3J4YCAvIGBhdGwxY19jbGVhbl90eGAgc2NoZWR1bGVkIGJ5IGludGVycnVwdCBoYW5kbGVyIGBhdGwxY19pbnRyYCkuIFRoaXMsIGNydWNpYWxseSwgcmVxdWlyZXMgdGhlIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSBkZXZpY2UgdG8gYmUgcHJvYmVkIGFuZCBib3VuZCB0aHJvdWdoIGBhdGwxY19wcm9iZWAuIEFuZCBgYXRsMWNfcHJvYmVgIGlzIHZlcnkgc3BlY2lmaWM6IGl0IG9ubHkgYmluZHMgdG8gdGhvc2UgQXRoZXJvcy9BdHRhbnNpYyBQQ0kgZGV2aWNlcyAoMHgxOTY5OiAweDEwNjMsIDB4MTA2MiwgMHgyMDYwLCAweDIwNjIsIDB4MTA3MywgMHgxMDgzKS4KClRoZXJlZm9yZSwgYmVjYXVzZSBzdGFuZGFyZCBRRU1VIChhbmQgR0NFIFZNcykgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGVzZSBOSUNzLCB0aGUgZnVuY3Rpb24gYGF0bDFjX2NsZWFuX3R4YCBpcyAqc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlKiBpbiB0aGVzZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEl0IGlzIGJsb2NrZWQgb24gdGhlIGhhcmR3YXJlIQoKVG8gYmUgc3VyZSwgSSYjMzk7bGwgcmV2aXNpdCBTZWN0aW9uIDEsICYjMzQ7UkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEUuJiMzNDsgVGhlIGd1aWRlbGluZSBjbGVhcmx5IHN0YXRlcyB0aGF0IGZ1enppbmcgY2FuIG9ubHkgZmluZCBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIElmIHRoZSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLCBldmVuIGlmIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLiBTZWN0aW9uIDIgY29uZmlybXMgdGhpcyBhZ2FpbiwgZXhwbGljaXRseSBzdGF0aW5nIGl0IGFib3V0IHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlLgoKVGhlIGF0bDFjIGRyaXZlciBpcyAqZXhhY3RseSogdGhpczogYSB2ZW5kb3Itc3BlY2lmaWMgUENJIGV0aGVybmV0IGRyaXZlciBmb3IgQXRoZXJvcyBMMUMvTDJDL0wxRCBjaGlwc2V0cyB0aGF0IGRlbWFuZHMgcGh5c2ljYWwgaGFyZHdhcmUuCgpUaHVzLCBiYXNlZCBvbiB0aGlzIHRob3JvdWdoIGFuYWx5c2lzLCBgV29ydGhGdXp6aW5nYCBtdXN0IGJlIGZhbHNlLgoKTGV0JiMzOTtzIGFsc28gbm90ZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM6IGBBVEwxQ2AsIGBQQ0lgLCBhbmQgYE5FVF9WRU5ET1JfQVRIRVJPU2AsIGFuZCB0aGUgc3ltYm9sIG9mIGZvY3VzIHdoaWNoIGlzIGBhdGwxY19jbGVhbl90eGAuCgpUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiB0aGUgcGF0Y2ggdG91Y2hlcyBgYXRsMWNfY2xlYW5fdHgoKWAsIHdoaWNoIGxpdmVzIGluIHRoZSBBdGhlcm9zIEwxQyBQQ0kgZXRoZXJuZXQgZHJpdmVyIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNgKS4gVGhpcyBkcml2ZXIgaXMgdGllZCB0byBwaHlzaWNhbCBQQ0kgZGV2aWNlcyB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UuIFRoaXMgbWFrZXMgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9jdXNTeW1ib2xzIG11c3QgYmUgZW1wdHkgaWYgV29ydGhGdXp6aW5nIGlzIGZhbHNlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUTDFDJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0bDFjX2NsZWFuX3R4JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBhdGwxY19jbGVhbl90eGAgaW4gdGhlIEF0aGVyb3MgTDFDIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNgKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUXVhbGNvbW0gQXRoZXJvcy9BdHRhbnNpYyBQQ0kgaGFyZHdhcmUgKEwxQywgTDJDLCBMMUQpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtGb2N1c1N5bWJvbHMgbXVzdCBiZSBlbXB0eSBpZiBXb3J0aEZ1enppbmcgaXMgZmFsc2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTAyCgkJCQkJCQlvdXRwdXQ6IDE0MAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvYmxlbToKCioqQ2xlYW5pbmcgVXAgYSBQb3RlbnRpYWwgRGF0YSBJbmNvbnNpc3RlbmN5KioKCkFscmlnaHQsIHNvIEkmIzM5O3ZlIHNwb3R0ZWQgc29tZXRoaW5nIGluIHRoZSBjb2RlIHRoYXQmIzM5O3MgZ290IGEgcG90ZW50aWFsIGluY29uc2lzdGVuY3ksIGEgYml0IG9mIGEgbG9naWNhbCBmbGF3LiBJJiMzOTttIHNlZWluZyB0aGF0IHRoZSBgRm9jdXNTeW1ib2xzYCBjb2xsZWN0aW9uICpzaG91bGQqIGJlIGVtcHR5IGlmIHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIGlzIGZhbHNlLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIElmIHdlIGFyZW4mIzM5O3QgZnV6emluZywgd2UgZG9uJiMzOTt0IG5lZWQgYW55IGZvY3VzIHN5bWJvbHMsIHJpZ2h0PyBJdCYjMzk7cyBhIHdhc3RlIG9mIHJlc291cmNlcyBhbmQgcG90ZW50aWFsbHkgbGVhZHMgdG8gY29uZnVzaW9uIGlmIHRoZXkmIzM5O3JlIHBvcHVsYXRlZCB3aGVuIHRoZXkgc2hvdWxkbiYjMzk7dCBiZS4KClRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgZml4LCBidXQgYW4gaW1wb3J0YW50IG9uZS4gSXQmIzM5O3MgYWJvdXQgbWFpbnRhaW5pbmcgZGF0YSBpbnRlZ3JpdHkgYW5kIGtlZXBpbmcgdGhlIGNvZGUgY2xlYW4uIExldCYjMzk7cyBnZXQgdGhpcyBjbGVhbmVkIHVwIHRvIHByZXZlbnQgZnV0dXJlIGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUTDFDJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgYXRsMWNfY2xlYW5fdHhgIGluIHRoZSBBdGhlcm9zIEwxQyBHaWdhYml0IEV0aGVybmV0IGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jYCkuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFF1YWxjb21tIEF0aGVyb3MvQXR0YW5zaWMgUENJIGhhcmR3YXJlIChMMUMsIEwyQywgTDFEKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEwxQyYjMzQ7LAogICAgJiMzNDtQQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGF0bDFjX2NsZWFuX3R4YCBpbiB0aGUgQXRoZXJvcyBMMUMgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uY2ApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBRdWFsY29tbSBBdGhlcm9zL0F0dGFuc2ljIFBDSSBoYXJkd2FyZSAoTDFDLCBMMkMsIEwxRCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjQ0OjI0LjUxODU2MDEwMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MzM2MDUyOTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUTDFDXCIsXG4gICAgXCJQQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBhdGwxY19jbGVhbl90eGAgaW4gdGhlIEF0aGVyb3MgTDFDIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNgKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUXVhbGNvbW0gQXRoZXJvcy9BdHRhbnNpYyBQQ0kgaGFyZHdhcmUgKEwxQywgTDJDLCBMMUQpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjQ0OjI0LjUxODU2ODg2MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcxMzk4NTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNGYxZjM5Y2M1MjBmOGU1YzQwNTExZjdkMTFkOWEwOGRmOWE1NWNlNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCAxMSAyMTo0NDoyMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jXFxuaW5kZXggN2VmYTNmYzI1N2IzOS4uZTU4ZjFkMmMyNmJkZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jXFxuQEAgLTE2MDIsNiArMTYwMiw5IEBAIHN0YXRpYyBpbnQgYXRsMWNfY2xlYW5fdHgoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbiBcXHRBVF9SRUFEX1JFR1coXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWh3LCBhdGwxY19xcmVnc1t0cGRfcmluZy1cXHUwMDNlbnVtXS50cGRfY29ucyxcXG4gXFx0XFx0ICAgICBcXHUwMDI2aHdfbmV4dF90b19jbGVhbik7XFxuIFxcbitcXHRpZiAodW5saWtlbHkoaHdfbmV4dF90b19jbGVhbiBcXHUwMDNlPSB0cGRfcmluZy1cXHUwMDNlY291bnQpKVxcbitcXHRcXHRod19uZXh0X3RvX2NsZWFuID0gbmV4dF90b19jbGVhbjtcXG4rXFxuIFxcdHdoaWxlIChuZXh0X3RvX2NsZWFuICE9IGh3X25leHRfdG9fY2xlYW4pIHtcXG4gXFx0XFx0YnVmZmVyX2luZm8gPSBcXHUwMDI2dHBkX3JpbmctXFx1MDAzZWJ1ZmZlcl9pbmZvW25leHRfdG9fY2xlYW5dO1xcbiBcXHRcXHRpZiAoYnVmZmVyX2luZm8tXFx1MDAzZXNrYikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo0NDoyNC45OTA4MTM3MTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ4ODYzNzc5MTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUTDFDXCIsXG4gICAgXCJQQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGF0bDFjX2NsZWFuX3R4YCBpbiB0aGUgQXRoZXJvcyBMMUMgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uY2ApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBRdWFsY29tbSBBdGhlcm9zL0F0dGFuc2ljIFBDSSBoYXJkd2FyZSAoTDFDLCBMMkMsIEwxRCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0ZjFmMzljYzUyMGY4ZTVjNDA1MTFmN2QxMWQ5YTA4ZGY5YTU1Y2U1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMjE6NDQ6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jXG5pbmRleCA3ZWZhM2ZjMjU3YjM5Li5lNThmMWQyYzI2YmRmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jXG5AQCAtMTYwMiw2ICsxNjAyLDkgQEAgc3RhdGljIGludCBhdGwxY19jbGVhbl90eChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXG4gXHRBVF9SRUFEX1JFR1coXHUwMDI2YWRhcHRlci1cdTAwM2VodywgYXRsMWNfcXJlZ3NbdHBkX3JpbmctXHUwMDNlbnVtXS50cGRfY29ucyxcbiBcdFx0ICAgICBcdTAwMjZod19uZXh0X3RvX2NsZWFuKTtcbiBcbitcdGlmICh1bmxpa2VseShod19uZXh0X3RvX2NsZWFuIFx1MDAzZT0gdHBkX3JpbmctXHUwMDNlY291bnQpKVxuK1x0XHRod19uZXh0X3RvX2NsZWFuID0gbmV4dF90b19jbGVhbjtcbitcbiBcdHdoaWxlIChuZXh0X3RvX2NsZWFuICE9IGh3X25leHRfdG9fY2xlYW4pIHtcbiBcdFx0YnVmZmVyX2luZm8gPSBcdTAwMjZ0cGRfcmluZy1cdTAwM2VidWZmZXJfaW5mb1tuZXh0X3RvX2NsZWFuXTtcbiBcdFx0aWYgKGJ1ZmZlcl9pbmZvLVx1MDAzZXNrYikge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDQ6MjQuOTkwODE1NTgxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDM2MzE5NTQyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBhdGwxY19tYWluLmNgIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byByZWFsbHkgdW5kZXJzdGFuZCB3aGF0J3MgYmVpbmcgY2hhbmdlZCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNgLiBJdCBsb29rcyBsaWtlIGl0J3Mgd2l0aGluIHRoZSBgYXRsMWNfY2xlYW5fdHhgIGZ1bmN0aW9uLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSSBzZWUgYSBuZXcgY29uZGl0aW9uYWwgY2hlY2sgaW4gdGhlcmU6XG5cbmBgYGNcblx0aWYgKHVubGlrZWx5KGh3X25leHRfdG9fY2xlYW4gXHUwMDNlPSB0cGRfcmluZy1cdTAwM2Vjb3VudCkpXG5cdFx0aHdfbmV4dF90b19jbGVhbiA9IG5leHRfdG9fY2xlYW47XG5gYGBcblxuSXQgc2VlbXMgbGlrZSB3ZSdyZSBkZWFsaW5nIHdpdGggYSBwb3RlbnRpYWwgd3JhcC1hcm91bmQgaXNzdWUgaW4gdGhlIHRyYW5zbWl0IGRlc2NyaXB0b3IgcmluZy4gSWYgYGh3X25leHRfdG9fY2xlYW5gIHNvbWVob3cgZ2V0cyBhaGVhZCBvZiB0aGUgcmluZydzIGNhcGFjaXR5LCB3ZSdyZSBub3cgY29ycmVjdGluZyBpdCB0byBgbmV4dF90b19jbGVhbmAuIFRoYXQncyBzbWFydDsgd2UncmUgZXNzZW50aWFsbHkgc2FuaXRpemluZyB0aGUgaGFyZHdhcmUtcmVwb3J0ZWQgcG9pbnRlci4gTm93IEkgbmVlZCB0byBzZWUgKndoeSogdGhpcyBpcyBuZWNlc3NhcnkuIElzIHRoaXMgYSBrbm93biBoYXJkd2FyZSBidWc/IEEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uPyBPciBpcyBpdCByZWxhdGVkIHRvIGEgcmVjZW50IGNoYW5nZSBpbiBob3cgdGhlIGRlc2NyaXB0b3JzIGFyZSBtYW5hZ2VkP1xuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGF0IGBhdGwxY2AgYWN0dWFsbHkgKmlzKi4gSXMgaXQgYW4gQXRoZXJvcyBFdGhlcm5ldCBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVyIChOSUMpPyBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHNvIEkgY2FuIHB1dCB0aGlzIGludG8gdGhlIHByb3BlciBjb250ZXh0LiBUaGVuIEknbGwgY2hlY2sgdGhlIGFzc29jaWF0ZWQgYEtjb25maWdgIGFuZCBgTWFrZWZpbGVgIGVudHJpZXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgbW9kdWxlJ3MgZGVwZW5kZW5jaWVzLCBidWlsZCBjb25maWd1cmF0aW9uLCBhbmQgZ2VuZXJhbCBwdXJwb3NlLCB3aGljaCB3aWxsIGhlbHAgZGV0ZXJtaW5lIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIEZyb20gdGhlcmUsIEknbGwgbmVlZCB0byBjaGVjayB0aGUgY29tbWl0IG1lc3NhZ2UgdGhhdCBnb2VzIHdpdGggdGhpcyBwYXRjaCB0byBzZWUgd2hhdCBtb3RpdmF0ZWQgdGhlIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk4MCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjQ0OjI5LjM1NDAxNDUzMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjg3NjI3NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRsMWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxOTY0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWc9NjM9Y29uZmlnIEFUTDFDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWctNzEtXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgVGhlIG1vZHVsZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZzo3MjpcXHQgIHdpbGwgYmUgY2FsbGVkIGF0bDFjLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZy03My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfQVRMMUUpICs9IGF0bDFlL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0FUTDFDKSArPSBhdGwxYy9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19BTFgpICs9IGFseC9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0FUTDFDKSArPSBhdGwxYy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9NYWtlZmlsZTozOmF0bDFjLW9ianMgOj0gYXRsMWNfbWFpbi5vIGF0bDFjX2h3Lm8gYXRsMWNfZXRodG9vbC5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjQwOiNpbmNsdWRlIFxcXCJhdGwxY19ody5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC05MC0jZGVmaW5lIEFUTDFDX0dFVF9ERVNDKFIsIGksIHR5cGUpXFx0KFxcdTAwMjYoKCh0eXBlICopKChSKS1cXHUwMDNlZGVzYykpW2ldKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6OTE6I2RlZmluZSBBVEwxQ19SRkRfREVTQyhSLCBpKVxcdEFUTDFDX0dFVF9ERVNDKFIsIGksIHN0cnVjdCBhdGwxY19yeF9mcmVlX2Rlc2MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjkyOiNkZWZpbmUgQVRMMUNfVFBEX0RFU0MoUiwgaSlcXHRBVEwxQ19HRVRfREVTQyhSLCBpLCBzdHJ1Y3QgYXRsMWNfdHBkX2Rlc2MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjkzOiNkZWZpbmUgQVRMMUNfUlJEX0RFU0MoUiwgaSlcXHRBVEwxQ19HRVRfREVTQyhSLCBpLCBzdHJ1Y3QgYXRsMWNfcmVjdl9yZXRfc3RhdHVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC05NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0xNDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjE0MjpzdHJ1Y3QgYXRsMWNfdHBkX2Rlc2Mge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0xNDMtXFx0X19sZTE2XFx0YnVmZmVyX2xlbjsgLyogaW5jbHVkZSA0LWJ5dGUgQ1JDICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoxNDk6c3RydWN0IGF0bDFjX3RwZF9leHRfZGVzYyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTE1MC1cXHR1MzIgcmVzZXJ2ZF8wO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjQ2OnN0cnVjdCBhdGwxY19yZWN2X3JldF9zdGF0dXMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yNDctXFx0X19sZTMyICB3b3JkMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yNTQtLyogUkZEIGRlc2NyaXB0b3IgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjU1OnN0cnVjdCBhdGwxY19yeF9mcmVlX2Rlc2Mge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yNTYtXFx0X19sZTY0XFx0YnVmZmVyX2FkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjU5LS8qIERNQSBPcmRlciBTZXR0aW5ncyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNjA6ZW51bSBhdGwxY19kbWFfb3JkZXIge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNjE6XFx0YXRsMWNfZG1hX29yZF9pbiA9IDEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI2MjpcXHRhdGwxY19kbWFfb3JkX2VuaCA9IDIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI2MzpcXHRhdGwxY19kbWFfb3JkX291dCA9IDRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjY0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjY2OmVudW0gYXRsMWNfZG1hX3JjYiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI2NzpcXHRhdGwxY19yY2JfNjQgPSAwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNjg6XFx0YXRsMWNfcmNiXzEyOCA9IDFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMjY5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjcxOmVudW0gYXRsMWNfbWFjX3NwZWVkIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjcyOlxcdGF0bDFjX21hY19zcGVlZF8wID0gMCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjczOlxcdGF0bDFjX21hY19zcGVlZF8xMF8xMDAgPSAxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNzQ6XFx0YXRsMWNfbWFjX3NwZWVkXzEwMDAgPSAyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI3NS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI3NzplbnVtIGF0bDFjX2RtYV9yZXFfYmxvY2sge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNzg6XFx0YXRsMWNfZG1hX3JlcV8xMjggPSAwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyNzk6XFx0YXRsMWNfZG1hX3JlcV8yNTYgPSAxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyODA6XFx0YXRsMWNfZG1hX3JlcV81MTIgPSAyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDoyODE6XFx0YXRsMWNfZG1hX3JlcV8xMDI0ID0gMyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MjgyOlxcdGF0bDFjX2RtYV9yZXFfMjA0OCA9IDQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjI4MzpcXHRhdGwxY19kbWFfcmVxXzQwOTYgPSA1XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI4NC19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6Mjg3OmVudW0gYXRsMWNfbmljX3R5cGUge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0yODgtXFx0YXRocl9sMWMgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6Mjk3OnN0cnVjdCBhdGwxY19od19zdGF0cyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTI5OC1cXHQvKiByeCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTM1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MzUyOnN0cnVjdCBhdGwxY19odyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTM1My1cXHR1OCBfX2lvbWVtICAgICAgKmh3X2FkZHI7ICAgICAgICAgICAgLyogaW5uZXIgcmVnaXN0ZXIgYWRkcmVzcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDozNTQ6XFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjM1NTpcXHRlbnVtIGF0bDFjX25pY190eXBlICBuaWNfdHlwZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MzU2OlxcdGVudW0gYXRsMWNfZG1hX29yZGVyIGRtYV9vcmRlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MzU3OlxcdGVudW0gYXRsMWNfZG1hX3JjYiAgIHJjYl92YWx1ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6MzU4OlxcdGVudW0gYXRsMWNfZG1hX3JlcV9ibG9jayBkbWFyX2Jsb2NrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0zNTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtMzc0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDozNzU6XFx0ZW51bSBhdGwxY19tYWNfc3BlZWQgbWFjX3NwZWVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC0zNzYtXFx0Ym9vbCBtYWNfZHVwbGV4O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQyNy0vKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0Mjg6ICogYXRsMWNfcmluZ19oZWFkZXIgcmVwcmVzZW50cyBhIHNpbmdsZSwgY29udGlndW91cyBibG9jayBvZiBETUEgc3BhY2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNDI5LSAqIG1hcHBlZCBmb3IgdGhlIHRocmVlIGRlc2NyaXB0b3IgcmluZ3MgKHRwZCwgcmZkLCBycmQpIGRlc2NyaWJlZCBiZWxvd1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00MzAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjQzMTpzdHJ1Y3QgYXRsMWNfcmluZ19oZWFkZXIge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00MzItXFx0dm9pZCAqZGVzYztcXHRcXHQvKiB2aXJ0dWFsIGFkZHJlc3MgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00MzctLypcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NDM4OiAqIGF0bDFjX2J1ZmZlciBpcyB3cmFwcGVyIGFyb3VuZCBhIHBvaW50ZXIgdG8gYSBzb2NrZXQgYnVmZmVyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQzOS0gKiBzbyBhIERNQSBoYW5kbGUgY2FuIGJlIHN0b3JlZCBhbG9uZyB3aXRoIHRoZSBza2JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNDQwLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0NDE6c3RydWN0IGF0bDFjX2J1ZmZlciB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQ0Mi1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcdC8qIHNvY2tldCBidWZmZXIgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00NzEtLyogdHJhbnNpbWl0IHBhY2tldCBkZXNjcmlwdG9yICh0cGQpIHJpbmcgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NDcyOnN0cnVjdCBhdGwxY190cGRfcmluZyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjQ3MzpcXHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNDc0LVxcdHZvaWQgKmRlc2M7XFx0XFx0LyogZGVzY3JpcHRvciByaW5nIHZpcnR1YWwgYWRkcmVzcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQ4MC1cXHRhdG9taWNfdCBuZXh0X3RvX2NsZWFuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0ODE6XFx0c3RydWN0IGF0bDFjX2J1ZmZlciAqYnVmZmVyX2luZm87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQ4Mi1cXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00ODUtLyogcmVjZWl2ZSBmcmVlIGRlc2NyaXB0b3IgKHJmZCkgcmluZyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0ODY6c3RydWN0IGF0bDFjX3JmZF9yaW5nIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNDg3LVxcdHZvaWQgKmRlc2M7XFx0XFx0LyogZGVzY3JpcHRvciByaW5nIHZpcnR1YWwgYWRkcmVzcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQ5Mi1cXHR1MTYgbmV4dF90b19jbGVhbjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NDkzOlxcdHN0cnVjdCBhdGwxY19idWZmZXIgKmJ1ZmZlcl9pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00OTQtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC00OTYtLyogcmVjZWl2ZSByZXR1cm4gZGVzY3JpcHRvciAocnJkKSByaW5nICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjQ5NzpzdHJ1Y3QgYXRsMWNfcnJkX3Jpbmcge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo0OTg6XFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTQ5OS1cXHR2b2lkICpkZXNjO1xcdFxcdC8qIGRlc2NyaXB0b3IgcmluZyB2aXJ0dWFsIGFkZHJlc3MgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC01MDktLyogYm9hcmQgc3BlY2lmaWMgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo1MTA6c3RydWN0IGF0bDFjX2FkYXB0ZXIge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC01MTEtXFx0c3RydWN0IG5ldF9kZXZpY2UgICAqbmV0ZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC01MTItXFx0c3RydWN0IHBjaV9kZXYgICAgICAqcGRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NTEzOlxcdHN0cnVjdCBhdGwxY19odyAgICAgICAgaHc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oOjUxNDpcXHRzdHJ1Y3QgYXRsMWNfaHdfc3RhdHMgIGh3X3N0YXRzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC01MTUtXFx0c3RydWN0IG1paV9pZl9pbmZvICBtaWk7ICAgIC8qIE1JSSBpbnRlcmZhY2UgaW5mbyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTU0MS1cXHQvKiBBbGwgRGVzY3JpcHRvciBtZW1vcnkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NTQyOlxcdHN0cnVjdCBhdGwxY19yaW5nX2hlYWRlciByaW5nX2hlYWRlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NTQzOlxcdHN0cnVjdCBhdGwxY190cGRfcmluZyB0cGRfcmluZ1tBVF9NQVhfVFJBTlNNSVRfUVVFVUVdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo1NDQ6XFx0c3RydWN0IGF0bDFjX3JmZF9yaW5nIHJmZF9yaW5nW0FUX01BWF9SRUNFSVZFX1FVRVVFXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NTQ1OlxcdHN0cnVjdCBhdGwxY19ycmRfcmluZyBycmRfcmluZ1tBVF9NQVhfUkVDRUlWRV9RVUVVRV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxYy5oLTU0Ni1cXHR1MzIgYmRfbnVtYmVyOyAgICAgLyogYm9hcmQgbnVtYmVyOyovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNTg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo1ODg6ZXh0ZXJuIGNoYXIgYXRsMWNfZHJpdmVyX25hbWVbXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmgtNTg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaDo1OTA6dm9pZCBhdGwxY19yZWluaXRfbG9ja2VkKHN0cnVjdCBhdGwxY19hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NTkxOnMzMiBhdGwxY19yZXNldF9odyhzdHJ1Y3QgYXRsMWNfaHcgKmh3KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjLmg6NTkyOnZvaWQgYXRsMWNfc2V0X2V0aHRvb2xfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWMuaC01OTMtI2VuZGlmIC8qIF9BVEwxQ19IXyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MTM6I2luY2x1ZGUgXFxcImF0bDFjLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MTU6c3RhdGljIGludCBhdGwxY19nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xNi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xNy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MTg6XFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE5OlxcdHN0cnVjdCBhdGwxY19odyAqaHcgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjAtXFx0dTMyIHN1cHBvcnRlZCwgYWR2ZXJ0aXNpbmc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy01OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzo1OTpzdGF0aWMgaW50IGF0bDFjX3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTYwLVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTYxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzo2MjpcXHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6NjM6XFx0c3RydWN0IGF0bDFjX2h3ICpodyA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy02NC1cXHR1MTYgIGF1dG9uZWdfYWR2ZXJ0aXNlZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTk2LVxcdFxcdGh3LVxcdTAwM2VhdXRvbmVnX2FkdmVydGlzZWQgPSBhdXRvbmVnX2FkdmVydGlzZWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6OTc6XFx0XFx0aWYgKGF0bDFjX3Jlc3RhcnRfYXV0b25lZyhodykgIT0gMCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTk4LVxcdFxcdFxcdGlmIChuZXRpZl9tc2dfbGluayhhZGFwdGVyKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTEwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMDk6c3RhdGljIHUzMiBhdGwxY19nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xMTAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjExMTpcXHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTEyLVxcdHJldHVybiBhZGFwdGVyLVxcdTAwM2Vtc2dfZW5hYmxlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjExNTpzdGF0aWMgdm9pZCBhdGwxY19zZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTMyIGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTE2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMTc6XFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTExOC1cXHRhZGFwdGVyLVxcdTAwM2Vtc2dfZW5hYmxlID0gZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTEyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMjE6c3RhdGljIGludCBhdGwxY19nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjEyNjpzdGF0aWMgdm9pZCBhdGwxY19nZXRfcmVncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTEyNy1cXHRcXHRcXHQgICBzdHJ1Y3QgZXRodG9vbF9yZWdzICpyZWdzLCB2b2lkICpwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTEyOC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MTI5OlxcdHN0cnVjdCBhdGwxY19hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxMzA6XFx0c3RydWN0IGF0bDFjX2h3ICpodyA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0xMzEtXFx0dTMyICpyZWdzX2J1ZmYgPSBwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE2MDpcXHRhdGwxY19yZWFkX3BoeV9yZWcoaHcsIE1JSV9CTUNSLCBcXHUwMDI2cGh5X2RhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE2MS1cXHRyZWdzX2J1ZmZbQVRfUkVHU19MRU4vc2l6ZW9mKHUzMikgLSAyXSA9ICh1MzIpIHBoeV9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE2MjpcXHRhdGwxY19yZWFkX3BoeV9yZWcoaHcsIE1JSV9CTVNSLCBcXHUwMDI2cGh5X2RhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE2My1cXHRyZWdzX2J1ZmZbQVRfUkVHU19MRU4vc2l6ZW9mKHUzMikgLSAxXSA9ICh1MzIpIHBoeV9kYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE2NjpzdGF0aWMgaW50IGF0bDFjX2dldF9lZXByb21fbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTY3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxNjg6XFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxNzA6XFx0aWYgKGF0bDFjX2NoZWNrX2VlcHJvbV9leGlzdChcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHcpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE3MS1cXHRcXHRyZXR1cm4gQVRfRUVQUk9NX0xFTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxNzY6c3RhdGljIGludCBhdGwxY19nZXRfZWVwcm9tKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTc3LVxcdFxcdHN0cnVjdCBldGh0b29sX2VlcHJvbSAqZWVwcm9tLCB1OCAqYnl0ZXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTc4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoxNzk6XFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE4MDpcXHRzdHJ1Y3QgYXRsMWNfaHcgKmh3ID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWh3O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE4MS1cXHR1MzIgKmVlcHJvbV9idWZmO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjE4OTpcXHRpZiAoIWF0bDFjX2NoZWNrX2VlcHJvbV9leGlzdChodykpIC8qIG5vdCBleGlzdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTE5MC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTIwMy1cXHRmb3IgKGkgPSBmaXJzdF9kd29yZDsgaSBcXHUwMDNjIGxhc3RfZHdvcmQ7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjIwNDpcXHRcXHRpZiAoIWF0bDFjX3JlYWRfZWVwcm9tKGh3LCBpICogNCwgXFx1MDAyNihlZXByb21fYnVmZltpLWZpcnN0X2R3b3JkXSkpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjA1LVxcdFxcdFxcdGtmcmVlKGVlcHJvbV9idWZmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTIxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyMTg6c3RhdGljIHZvaWQgYXRsMWNfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yMTktXFx0XFx0c3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqZHJ2aW5mbylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yMjAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjIyMTpcXHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjIyMzpcXHRzdHJzY3B5KGRydmluZm8tXFx1MDAzZWRyaXZlciwgIGF0bDFjX2RyaXZlcl9uYW1lLCBzaXplb2YoZHJ2aW5mby1cXHUwMDNlZHJpdmVyKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjI0LVxcdHN0cnNjcHkoZHJ2aW5mby1cXHUwMDNlYnVzX2luZm8sIHBjaV9uYW1lKGFkYXB0ZXItXFx1MDAzZXBkZXYpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjIyODpzdGF0aWMgdm9pZCBhdGwxY19nZXRfd29sKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjI5LVxcdFxcdFxcdCAgc3RydWN0IGV0aHRvb2xfd29saW5mbyAqd29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTIzMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MjMxOlxcdHN0cnVjdCBhdGwxY19hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yMzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MjQ4OnN0YXRpYyBpbnQgYXRsMWNfc2V0X3dvbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjQ5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyNTA6XFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI1MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyNjg6c3RhdGljIGludCBhdGwxY19ud2F5X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjY5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyNzA6XFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI3MS1cXHRpZiAobmV0aWZfcnVubmluZyhuZXRkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI3MjpcXHRcXHRhdGwxY19yZWluaXRfbG9ja2VkKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI3My1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyNzY6c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhdGwxY19ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyNzc6XFx0LmdldF9kcnZpbmZvICAgICAgICAgICAgPSBhdGwxY19nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyNzg6XFx0LmdldF9yZWdzX2xlbiAgICAgICAgICAgPSBhdGwxY19nZXRfcmVnc19sZW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6Mjc5OlxcdC5nZXRfcmVncyAgICAgICAgICAgICAgID0gYXRsMWNfZ2V0X3JlZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MjgwOlxcdC5nZXRfd29sICAgICAgICAgICAgICAgID0gYXRsMWNfZ2V0X3dvbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyODE6XFx0LnNldF93b2wgICAgICAgICAgICAgICAgPSBhdGwxY19zZXRfd29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI4MjpcXHQuZ2V0X21zZ2xldmVsICAgICAgICAgICA9IGF0bDFjX2dldF9tc2dsZXZlbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyODM6XFx0LnNldF9tc2dsZXZlbCAgICAgICAgICAgPSBhdGwxY19zZXRfbXNnbGV2ZWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6Mjg0OlxcdC5ud2F5X3Jlc2V0ICAgICAgICAgICAgID0gYXRsMWNfbndheV9yZXNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yODUtXFx0LmdldF9saW5rICAgICAgICAgICAgICAgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI4NjpcXHQuZ2V0X2VlcHJvbV9sZW4gICAgICAgICA9IGF0bDFjX2dldF9lZXByb21fbGVuLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI4NzpcXHQuZ2V0X2VlcHJvbSAgICAgICAgICAgICA9IGF0bDFjX2dldF9lZXByb20sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6Mjg4OlxcdC5nZXRfbGlua19rc2V0dGluZ3MgICAgID0gYXRsMWNfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI4OTpcXHQuc2V0X2xpbmtfa3NldHRpbmdzICAgICA9IGF0bDFjX3NldF9saW5rX2tzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yOTAtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmM6MjkyOnZvaWQgYXRsMWNfc2V0X2V0aHRvb2xfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjkzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyOTQ6XFx0bmV0ZGV2LVxcdTAwM2VldGh0b29sX29wcyA9IFxcdTAwMjZhdGwxY19ldGh0b29sX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYy0yOTUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxMzojaW5jbHVkZSBcXFwiYXRsMWMuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTgtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjE5OmludCBhdGwxY19jaGVja19lZXByb21fZXhpc3Qoc3RydWN0IGF0bDFjX2h3ICpodylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzozMzp2b2lkIGF0bDFjX2h3X3NldF9tYWNfYWRkcihzdHJ1Y3QgYXRsMWNfaHcgKmh3LCB1OCAqbWFjX2FkZHIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTM0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy01Mi0vKiByZWFkIG1hYyBhZGRyZXNzIGZyb20gaGFyZHdhcmUgcmVnaXN0ZXIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NTM6c3RhdGljIGJvb2wgYXRsMWNfcmVhZF9jdXJyZW50X2FkZHIoc3RydWN0IGF0bDFjX2h3ICpodywgdTggKmV0aF9hZGRyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy01NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNjYtLypcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6Njc6ICogYXRsMWNfZ2V0X3Blcm1hbmVudF9hZGRyZXNzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTY4LSAqIHJldHVybiAwIGlmIGdldCB2YWxpZCBtYWMgYWRkcmVzcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNjktICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjcwOnN0YXRpYyBpbnQgYXRsMWNfZ2V0X3Blcm1hbmVudF9hZGRyZXNzKHN0cnVjdCBhdGwxY19odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTcxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy03OC1cXHQvKiBNQUMtYWRkcmVzcyBmcm9tIEJJT1MgaXMgdGhlIDFzdCBwcmlvcml0eSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo3OTpcXHRpZiAoYXRsMWNfcmVhZF9jdXJyZW50X2FkZHIoaHcsIGh3LVxcdTAwM2VwZXJtX21hY19hZGRyKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtODAtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtODMtXFx0QVRfUkVBRF9SRUcoaHcsIFJFR19PVFBfQ1RSTCwgXFx1MDAyNm90cF9jdHJsX2RhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo4NDpcXHRpZiAoYXRsMWNfY2hlY2tfZWVwcm9tX2V4aXN0KGh3KSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy04NS1cXHRcXHRpZiAoaHctXFx1MDAzZW5pY190eXBlID09IGF0aHJfbDFjIHx8IGh3LVxcdTAwM2VuaWNfdHlwZSA9PSBhdGhyX2wyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTk1LVxcdFxcdGlmIChody1cXHUwMDNlbmljX3R5cGUgPT0gYXRocl9sMmNfYiB8fCBody1cXHUwMDNlbmljX3R5cGUgPT0gYXRocl9sMmNfYjIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6OTY6XFx0XFx0XFx0YXRsMWNfcmVhZF9waHlfZGJnKGh3LCBNSUlEQkdfQU5BQ1RSTCwgXFx1MDAyNnBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtOTctXFx0XFx0XFx0cGh5X2RhdGEgXFx1MDAyNj0gfkFOQUNUUkxfSEJfRU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjk4OlxcdFxcdFxcdGF0bDFjX3dyaXRlX3BoeV9kYmcoaHcsIE1JSURCR19BTkFDVFJMLCBwaHlfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjk5OlxcdFxcdFxcdGF0bDFjX3JlYWRfcGh5X2RiZyhodywgTUlJREJHX1ZPTFRfQ1RSTCwgXFx1MDAyNnBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTAwLVxcdFxcdFxcdHBoeV9kYXRhIHw9IFZPTFRfQ1RSTF9TV0xPV0VTVDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MTAxOlxcdFxcdFxcdGF0bDFjX3dyaXRlX3BoeV9kYmcoaHcsIE1JSURCR19WT0xUX0NUUkwsIHBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTAyLVxcdFxcdFxcdHVkZWxheSgyMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTI0LVxcdGlmIChyYWlzZV92b2wpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MTI1OlxcdFxcdGF0bDFjX3JlYWRfcGh5X2RiZyhodywgTUlJREJHX0FOQUNUUkwsIFxcdTAwMjZwaHlfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTEyNi1cXHRcXHRwaHlfZGF0YSB8PSBBTkFDVFJMX0hCX0VOO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxMjc6XFx0XFx0YXRsMWNfd3JpdGVfcGh5X2RiZyhodywgTUlJREJHX0FOQUNUUkwsIHBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MTI4OlxcdFxcdGF0bDFjX3JlYWRfcGh5X2RiZyhodywgTUlJREJHX1ZPTFRfQ1RSTCwgXFx1MDAyNnBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTI5LVxcdFxcdHBoeV9kYXRhIFxcdTAwMjY9IH5WT0xUX0NUUkxfU1dMT1dFU1Q7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjEzMDpcXHRcXHRhdGwxY193cml0ZV9waHlfZGJnKGh3LCBNSUlEQkdfVk9MVF9DVFJMLCBwaHlfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTEzMS1cXHRcXHR1ZGVsYXkoMjApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTEzMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MTM0OlxcdGlmIChhdGwxY19yZWFkX2N1cnJlbnRfYWRkcihodywgaHctXFx1MDAzZXBlcm1fbWFjX2FkZHIpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xMzUtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxNDA6Ym9vbCBhdGwxY19yZWFkX2VlcHJvbShzdHJ1Y3QgYXRsMWNfaHcgKmh3LCB1MzIgb2Zmc2V0LCB1MzIgKnBfdmFsdWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTE0MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTgyLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoxODM6aW50IGF0bDFjX3JlYWRfbWFjX2FkZHIoc3RydWN0IGF0bDFjX2h3ICpodylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMTg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xODYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjE4NzpcXHRlcnIgPSBhdGwxY19nZXRfcGVybWFuZW50X2FkZHJlc3MoaHcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xODgtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xOTUtLypcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MTk2OiAqIGF0bDFjX2hhc2hfbWNfYWRkclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0xOTctICogIHB1cnBvc2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yMDItICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjIwMzp1MzIgYXRsMWNfaGFzaF9tY19hZGRyKHN0cnVjdCBhdGwxY19odyAqaHcsIHU4ICptY19hZGRyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yMDQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTIyMC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MjIxOnZvaWQgYXRsMWNfaGFzaF9zZXQoc3RydWN0IGF0bDFjX2h3ICpodywgdTMyIGhhc2hfdmFsdWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTIyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMjQ5LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoyNTA6Ym9vbCBhdGwxY193YWl0X21kaW9faWRsZShzdHJ1Y3QgYXRsMWNfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yNTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MjY1OnZvaWQgYXRsMWNfc3RvcF9waHlfcG9sbGluZyhzdHJ1Y3QgYXRsMWNfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yNjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI3MC1cXHRBVF9XUklURV9SRUcoaHcsIFJFR19NRElPX0NUUkwsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoyNzE6XFx0YXRsMWNfd2FpdF9tZGlvX2lkbGUoaHcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yNzItfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yNzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjI3NDp2b2lkIGF0bDFjX3N0YXJ0X3BoeV9wb2xsaW5nKHN0cnVjdCBhdGwxY19odyAqaHcsIHUxNiBjbGtfc2VsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI4Ni1cXHRBVF9XUklURV9SRUcoaHcsIFJFR19NRElPX0NUUkwsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjI4NzpcXHRhdGwxY193YWl0X21kaW9faWRsZShodyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI4OC1cXHR2YWwgfD0gTURJT19DVFJMX0FQX0VOO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTI5NS0vKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzoyOTY6ICogYXRsMWNfcmVhZF9waHlfY29yZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0yOTctICogY29yZSBmdW5jdGlvbiB0byByZWFkIHJlZ2lzdGVyIGluIFBIWSB2aWEgTURJTyBjb250cm9sIHJlZ2lzdGVyLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTMwMS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MzAyOmludCBhdGwxY19yZWFkX3BoeV9jb3JlKHN0cnVjdCBhdGwxY19odyAqaHcsIGJvb2wgZXh0LCB1OCBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTMwMy1cXHRcXHRcXHR1MTYgcmVnLCB1MTYgKnBoeV9kYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTMwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MzA4OlxcdGF0bDFjX3N0b3BfcGh5X3BvbGxpbmcoaHcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zMDktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzozMzM6XFx0aWYgKCFhdGwxY193YWl0X21kaW9faWRsZShodykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTMzNC1cXHRcXHRyZXR1cm4gLTE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzozMzk6XFx0YXRsMWNfc3RhcnRfcGh5X3BvbGxpbmcoaHcsIGNsa19zZWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zNDAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzQ0LS8qXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjM0NTogKiBhdGwxY193cml0ZV9waHlfY29yZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zNDYtICogY29yZSBmdW5jdGlvbiB0byB3cml0ZSB0byByZWdpc3RlciBpbiBQSFkgdmlhIE1ESU8gY29udHJvbCByZWdpc3Rlci5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zNTAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjM1MTppbnQgYXRsMWNfd3JpdGVfcGh5X2NvcmUoc3RydWN0IGF0bDFjX2h3ICpodywgYm9vbCBleHQsIHU4IGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzUyLVxcdFxcdFxcdHUxNiByZWcsIHUxNiBwaHlfZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjM1NzpcXHRhdGwxY19zdG9wX3BoeV9wb2xsaW5nKGh3KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzU4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTM4MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6MzgyOlxcdGlmICghYXRsMWNfd2FpdF9tZGlvX2lkbGUoaHcpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zODMtXFx0XFx0cmV0dXJuIC0xO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjM4NTpcXHRhdGwxY19zdGFydF9waHlfcG9sbGluZyhodywgY2xrX3NlbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTM4Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy0zOTQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjM5NTppbnQgYXRsMWNfcmVhZF9waHlfcmVnKHN0cnVjdCBhdGwxY19odyAqaHcsIHUxNiByZWdfYWRkciwgdTE2ICpwaHlfZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzk2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6Mzk3OlxcdHJldHVybiBhdGwxY19yZWFkX3BoeV9jb3JlKGh3LCBmYWxzZSwgMCwgcmVnX2FkZHIsIHBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtMzk4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MDUtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjQwNjppbnQgYXRsMWNfd3JpdGVfcGh5X3JlZyhzdHJ1Y3QgYXRsMWNfaHcgKmh3LCB1MzIgcmVnX2FkZHIsIHUxNiBwaHlfZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDA3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDA4OlxcdHJldHVybiBhdGwxY193cml0ZV9waHlfY29yZShodywgZmFsc2UsIDAsIHJlZ19hZGRyLCBwaHlfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQwOS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDExLS8qIHJlYWQgZnJvbSBQSFkgZXh0ZW5zaW9uIHJlZ2lzdGVyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjQxMjppbnQgYXRsMWNfcmVhZF9waHlfZXh0KHN0cnVjdCBhdGwxY19odyAqaHcsIHU4IGRldl9hZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MTMtXFx0XFx0XFx0dTE2IHJlZ19hZGRyLCB1MTYgKnBoeV9kYXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MTQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0MTU6XFx0cmV0dXJuIGF0bDFjX3JlYWRfcGh5X2NvcmUoaHcsIHRydWUsIGRldl9hZGRyLCByZWdfYWRkciwgcGh5X2RhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MTYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQxOC0vKiB3cml0ZSB0byBQSFkgZXh0ZW5zaW9uIHJlZ2lzdGVyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjQxOTppbnQgYXRsMWNfd3JpdGVfcGh5X2V4dChzdHJ1Y3QgYXRsMWNfaHcgKmh3LCB1OCBkZXZfYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDIwLVxcdFxcdFxcdHUxNiByZWdfYWRkciwgdTE2IHBoeV9kYXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MjEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0MjI6XFx0cmV0dXJuIGF0bDFjX3dyaXRlX3BoeV9jb3JlKGh3LCB0cnVlLCBkZXZfYWRkciwgcmVnX2FkZHIsIHBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDIzLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0MjU6aW50IGF0bDFjX3JlYWRfcGh5X2RiZyhzdHJ1Y3QgYXRsMWNfaHcgKmh3LCB1MTYgcmVnX2FkZHIsIHUxNiAqcGh5X2RhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQyNi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0Mjk6XFx0ZXJyID0gYXRsMWNfd3JpdGVfcGh5X3JlZyhodywgTUlJX0RCR19BRERSLCByZWdfYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQzMC1cXHRpZiAodW5saWtlbHkoZXJyKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00MzItXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0MzM6XFx0XFx0ZXJyID0gYXRsMWNfcmVhZF9waHlfcmVnKGh3LCBNSUlfREJHX0RBVEEsIHBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDM0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDM4OmludCBhdGwxY193cml0ZV9waHlfZGJnKHN0cnVjdCBhdGwxY19odyAqaHcsIHUxNiByZWdfYWRkciwgdTE2IHBoeV9kYXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00Mzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQ0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDQyOlxcdGVyciA9IGF0bDFjX3dyaXRlX3BoeV9yZWcoaHcsIE1JSV9EQkdfQUREUiwgcmVnX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00NDMtXFx0aWYgKHVubGlrZWx5KGVycikpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDQ1LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDQ2OlxcdFxcdGVyciA9IGF0bDFjX3dyaXRlX3BoeV9yZWcoaHcsIE1JSV9EQkdfREFUQSwgcGh5X2RhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00NDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDU1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0NTY6c3RhdGljIGludCBhdGwxY19waHlfc2V0dXBfYWR2KHN0cnVjdCBhdGwxY19odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQ1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0ODU6XFx0aWYgKGF0bDFjX3dyaXRlX3BoeV9yZWcoaHcsIE1JSV9BRFZFUlRJU0UsIG1paV9hZHZfZGF0YSkgIT0gMCB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0ODY6XFx0ICAgIGF0bDFjX3dyaXRlX3BoeV9yZWcoaHcsIE1JSV9DVFJMMTAwMCwgbWlpX2dpZ2FfY3RybF9kYXRhKSAhPSAwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00ODctXFx0XFx0cmV0dXJuIC0xO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQ5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDkxOnZvaWQgYXRsMWNfcGh5X2Rpc2FibGUoc3RydWN0IGF0bDFjX2h3ICpodylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDkyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NDkzOlxcdGF0bDFjX3Bvd2VyX3NhdmluZyhodywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jLTQ5NC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNDk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0OTc6aW50IGF0bDFjX3BoeV9yZXNldChzdHJ1Y3QgYXRsMWNfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy00OTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo0OTk6XFx0c3RydWN0IGF0bDFjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBody1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTAwLVxcdHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gYWRhcHRlci1cXHUwMDNlcGRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy01MjItXFx0aWYgKGh3LVxcdTAwM2VuaWNfdHlwZSA9PSBhdGhyX2wyY19iKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5jOjUyMzpcXHRcXHRhdGwxY19yZWFkX3BoeV9kYmcoaHcsIE1JSURCR19DRkdMUFNQRCwgXFx1MDAyNnBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NTI0OlxcdFxcdGF0bDFjX3dyaXRlX3BoeV9kYmcoaHcsIE1JSURCR19DRkdMUFNQRCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTI1LVxcdFxcdFxcdHBoeV9kYXRhIFxcdTAwMjYgfkNGR0xQU1BEX1JTVENOVF9DTEsxMjVTVyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTI5LVxcdGlmIChody1cXHUwMDNlbmljX3R5cGUgPT0gYXRocl9sMmNfYiB8fCBody1cXHUwMDNlbmljX3R5cGUgPT0gYXRocl9sMmNfYjIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NTMwOlxcdFxcdGF0bDFjX3JlYWRfcGh5X2RiZyhodywgTUlJREJHX0NBQkxFMVRIX0RFVCwgXFx1MDAyNnBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTMxLVxcdFxcdHBoeV9kYXRhIHw9IENBQkxFMVRIX0RFVF9FTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NTMyOlxcdFxcdGF0bDFjX3dyaXRlX3BoeV9kYmcoaHcsIE1JSURCR19DQUJMRTFUSF9ERVQsIHBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTMzLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy01MzctXFx0XFx0aWYgKGh3LVxcdTAwM2VuaWNfdHlwZSA9PSBhdGhyX2wyY19iIHx8IGh3LVxcdTAwM2VuaWNfdHlwZSA9PSBhdGhyX2wyY19iMikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo1Mzg6XFx0XFx0XFx0YXRsMWNfcmVhZF9waHlfZGJnKGh3LCBNSUlEQkdfVk9MVF9DVFJMLCBcXHUwMDI2cGh5X2RhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy01MzktXFx0XFx0XFx0cGh5X2RhdGEgXFx1MDAyNj0gflZPTFRfQ1RSTF9TV0xPV0VTVDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmM6NTQwOlxcdFxcdFxcdGF0bDFjX3dyaXRlX3BoeV9kYmcoaHcsIE1JSURCR19WT0xUX0NUUkwsIHBoeV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmMtNTQxLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYy01NDUtXFx0XFx0XFx0TDFEX0xFR0NZUFNfREVGIDogTDFDX0xFR0NZUFNfREVGO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuYzo1NDY6XFx0XFx0YXRsMWNfd3JpdGVfcGh5X2RiZyhodywgTUlJREJHX0xFR0NZUFMsIHBoeV9kYXRhKTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDQ6MjkuNjgyNzgzMjM0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTY4MzY5NTgzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgQXRoZXJvcyBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBBdGhlcm9zIEV0aGVybmV0IGRyaXZlcnMuIFRoZSBtb3N0IGxpa2VseSBwbGFjZSB0byBmaW5kIHdoYXQgSSdtIGxvb2tpbmcgZm9yIHdvdWxkIGJlIGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnYCBmaWxlLiBJJ20gZ29pbmcgdG8ganVtcCB0byBhcm91bmQgbGluZSA2MywgYmVjYXVzZSB0aGF0J3Mgb2Z0ZW4gd2hlcmUgeW91J2xsIGZpbmQgY29yZSBzZXR0aW5ncyBvciBtYXliZSB0aGUgbW9kdWxlIG9wdGlvbnMgYXJlLiBMZXQncyBzZWUgd2hhdCBraW5kIG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZGVmaW5lZCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk1NzksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo0NDozMS4zNjY0ODE4MDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTU6XFx0XFx0c2VsZWN0IENSQzMyXFxuICA1NjpcXHRcXHRzZWxlY3QgTUlJXFxuICA1NzpcXHRcXHRoZWxwXFxuICA1ODpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBBdGhlcm9zIEwxRSBnaWdhYml0IGV0aGVybmV0IGFkYXB0ZXIuXFxuICA1OTpcXHRcXG4gIDYwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIFRoZSBtb2R1bGVcXG4gIDYxOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgYXRsMWUuXFxuICA2MjpcXHRcXG4gIDYzOlxcdGNvbmZpZyBBVEwxQ1xcbiAgNjQ6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgTDFDIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDY1OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA2NjpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDY3OlxcdFxcdHNlbGVjdCBNSUlcXG4gIDY4OlxcdFxcdGhlbHBcXG4gIDY5OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEF0aGVyb3MgTDFDIGdpZ2FiaXQgZXRoZXJuZXQgYWRhcHRlci5cXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgVGhlIG1vZHVsZVxcbiAgNzI6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBhdGwxYy5cXG4gIDczOlxcdFxcbiAgNzQ6XFx0Y29uZmlnIEFMWFxcbiAgNzU6XFx0XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEF0aGVyb3MgQVI4MTZ4L0FSODE3eCBzdXBwb3J0XFxcIlxcbiAgNzY6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDc3OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgNzg6XFx0XFx0c2VsZWN0IE1ESU9cXG4gIDc5OlxcdFxcdGhlbHBcXG4gIDgwOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIFF1YWxjb21tIEF0aGVyb3MgTDFGIGV0aGVybmV0IGFkYXB0ZXIsXFxuICA4MTpcXHRcXHQgIGkuZS4gdGhlIGZvbGxvd2luZyBjaGlwc2V0czpcXG4gIDgyOlxcdFxcbiAgODM6XFx0XFx0ICAxOTY5OjEwOTEgLSBBUjgxNjEgR2lnYWJpdCBFdGhlcm5ldFxcbiAgODQ6XFx0XFx0ICAxOTY5OjEwOTAgLSBBUjgxNjIgRmFzdCBFdGhlcm5ldFxcbiAgODU6XFx0XFx0ICAxOTY5OjEwQTEgLSBBUjgxNzEgR2lnYWJpdCBFdGhlcm5ldFxcbiAgODY6XFx0XFx0ICAxOTY5OjEwQTAgLSBBUjgxNzIgRmFzdCBFdGhlcm5ldFxcbiAgODc6XFx0XFxuICA4ODpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBUaGUgbW9kdWxlXFxuICA4OTpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGFseC5cXG4gIDkwOlxcdFxcbiAgOTE6XFx0ZW5kaWYgIyBORVRfVkVORE9SX0FUSEVST1NcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDQ6MzEuMzY2NTU3MjI2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6Mzk1NzI1MTg3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuIGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgQVRMMUMgRHJpdmVyKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGF0bDFjX21haW4uY2AgZmlsZSB3aXRoaW4gdGhlIEF0aGVyb3MgRXRoZXJuZXQgZHJpdmVyIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJJ20gemVyb2luZyBpbiBvbiB0aGUgY29kZSBhcm91bmQgbGluZSAxNjAyLiBUaGF0J3MgdGhlIGxpa2VseSBsb2NhdGlvbiB3aGVyZSB0aGUgaXNzdWUgSSdtIGRlYnVnZ2luZyBtaWdodCBiZSBtYW5pZmVzdGluZy4gSSd2ZSBnb3QgYSBodW5jaCBiYXNlZCBvbiByZWNlbnQgb2JzZXJ2YXRpb25zLCBhbmQgcGlucG9pbnRpbmcgdGhhdCBsaW5lIHdpbGwgbGV0IG1lIGNvbmZpcm0gbXkgdGhlb3J5LiBMZXQncyBzZWUgd2hhdCdzIGhhcHBlbmluZyB0aGVyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDI4MCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDQ6MzUuMzIzODEyNjM4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5NTExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1OTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE1OTA6XFx0XFx0c3RydWN0IGF0bDFjX3RwZF9yaW5nICp0cGRfcmluZyA9XFxuMTU5MTpcXHRcXHRcXHRjb250YWluZXJfb2YobmFwaSwgc3RydWN0IGF0bDFjX3RwZF9yaW5nLCBuYXBpKTtcXG4xNTkyOlxcdFxcdHN0cnVjdCBhdGwxY19hZGFwdGVyICphZGFwdGVyID0gdHBkX3JpbmctXFx1MDAzZWFkYXB0ZXI7XFxuMTU5MzpcXHRcXHRzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICp0eHEgPVxcbjE1OTQ6XFx0XFx0XFx0bmV0ZGV2X2dldF90eF9xdWV1ZShuYXBpLVxcdTAwM2VkZXYsIHRwZF9yaW5nLVxcdTAwM2VudW0pO1xcbjE1OTU6XFx0XFx0c3RydWN0IGF0bDFjX2J1ZmZlciAqYnVmZmVyX2luZm87XFxuMTU5NjpcXHRcXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGFkYXB0ZXItXFx1MDAzZXBkZXY7XFxuMTU5NzpcXHRcXHR1MTYgbmV4dF90b19jbGVhbiA9IGF0b21pY19yZWFkKFxcdTAwMjZ0cGRfcmluZy1cXHUwMDNlbmV4dF90b19jbGVhbik7XFxuMTU5ODpcXHRcXHR1MTYgaHdfbmV4dF90b19jbGVhbjtcXG4xNTk5OlxcdFxcdHVuc2lnbmVkIGludCB0b3RhbF9ieXRlcyA9IDAsIHRvdGFsX3BhY2tldHMgPSAwO1xcbjE2MDA6XFx0XFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4xNjAxOlxcdFxcbjE2MDI6XFx0XFx0QVRfUkVBRF9SRUdXKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodywgYXRsMWNfcXJlZ3NbdHBkX3JpbmctXFx1MDAzZW51bV0udHBkX2NvbnMsXFxuMTYwMzpcXHRcXHRcXHQgICAgIFxcdTAwMjZod19uZXh0X3RvX2NsZWFuKTtcXG4xNjA0OlxcdFxcbjE2MDU6XFx0XFx0aWYgKHVubGlrZWx5KGh3X25leHRfdG9fY2xlYW4gXFx1MDAzZT0gdHBkX3JpbmctXFx1MDAzZWNvdW50KSlcXG4xNjA2OlxcdFxcdFxcdGh3X25leHRfdG9fY2xlYW4gPSBuZXh0X3RvX2NsZWFuO1xcbjE2MDc6XFx0XFxuMTYwODpcXHRcXHR3aGlsZSAobmV4dF90b19jbGVhbiAhPSBod19uZXh0X3RvX2NsZWFuKSB7XFxuMTYwOTpcXHRcXHRcXHRidWZmZXJfaW5mbyA9IFxcdTAwMjZ0cGRfcmluZy1cXHUwMDNlYnVmZmVyX2luZm9bbmV4dF90b19jbGVhbl07XFxuMTYxMDpcXHRcXHRcXHRpZiAoYnVmZmVyX2luZm8tXFx1MDAzZXNrYikge1xcbjE2MTE6XFx0XFx0XFx0XFx0dG90YWxfYnl0ZXMgKz0gYnVmZmVyX2luZm8tXFx1MDAzZXNrYi1cXHUwMDNlbGVuO1xcbjE2MTI6XFx0XFx0XFx0XFx0dG90YWxfcGFja2V0cysrO1xcbjE2MTM6XFx0XFx0XFx0fVxcbjE2MTQ6XFx0XFx0XFx0YXRsMWNfY2xlYW5fYnVmZmVyKHBkZXYsIGJ1ZmZlcl9pbmZvLCBidWRnZXQpO1xcbjE2MTU6XFx0XFx0XFx0aWYgKCsrbmV4dF90b19jbGVhbiA9PSB0cGRfcmluZy1cXHUwMDNlY291bnQpXFxuMTYxNjpcXHRcXHRcXHRcXHRuZXh0X3RvX2NsZWFuID0gMDtcXG4xNjE3OlxcdFxcdFxcdGF0b21pY19zZXQoXFx1MDAyNnRwZF9yaW5nLVxcdTAwM2VuZXh0X3RvX2NsZWFuLCBuZXh0X3RvX2NsZWFuKTtcXG4xNjE4OlxcdFxcdH1cXG4xNjE5OlxcdFxcbjE2MjA6XFx0XFx0bmV0ZGV2X3R4X2NvbXBsZXRlZF9xdWV1ZSh0eHEsIHRvdGFsX3BhY2tldHMsIHRvdGFsX2J5dGVzKTtcXG4xNjIxOlxcdFxcbjE2MjI6XFx0XFx0aWYgKG5ldGlmX3R4X3F1ZXVlX3N0b3BwZWQodHhxKSBcXHUwMDI2XFx1MDAyNiBuZXRpZl9jYXJyaWVyX29rKGFkYXB0ZXItXFx1MDAzZW5ldGRldikpXFxuMTYyMzpcXHRcXHRcXHRuZXRpZl90eF93YWtlX3F1ZXVlKHR4cSk7XFxuMTYyNDpcXHRcXG4xNjI1OlxcdFxcdGlmICh0b3RhbF9wYWNrZXRzIFxcdTAwM2MgYnVkZ2V0KSB7XFxuMTYyNjpcXHRcXHRcXHRuYXBpX2NvbXBsZXRlX2RvbmUobmFwaSwgdG90YWxfcGFja2V0cyk7XFxuMTYyNzpcXHRcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHcuaW50cl9tYXNrX2xvY2ssIGZsYWdzKTtcXG4xNjI4OlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWh3LmludHJfbWFzayB8PSBhdGwxY19xcmVnc1t0cGRfcmluZy1cXHUwMDNlbnVtXS50eF9pc3I7XFxuMTYyOTpcXHRcXHRcXHRBVF9XUklURV9SRUcoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWh3LCBSRUdfSU1SLCBhZGFwdGVyLVxcdTAwM2Vody5pbnRyX21hc2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo0NDozNS4zMjQwNDM5NTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxMDg4ODYzNTYzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgYXRsMWNgIERyaXZlciBhbmQgUUVNVSBFbXVsYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBgYXRsMWNgIGlzIGEgUENJIGRldmljZSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhvc2UgQXRoZXJvcyBMMUMgR2lnYWJpdCBFdGhlcm5ldCBhZGFwdGVycy4gVGhlIHF1ZXN0aW9uIEkgbmVlZCB0byBhbnN3ZXIgaXMgd2hldGhlciBRRU1VIHByb3Blcmx5IGVtdWxhdGVzIHRoZXNlIGRldmljZXMuIEJhc2VkIG9uIHRoZSBwcm9tcHQgcHJvdmlkZWQsIG15IGluaXRpYWwgdGhvdWdodCBpczogZG9lcyBRRU1VIGV2ZW4gKnRyeSogdG8gZW11bGF0ZSB0aGUgQXRoZXJvcyBMMUM/XG5cbkxldCdzIHJlZmVyIGJhY2sgdG8gU2VjdGlvbiAyIG9mIHRoZSBwcm9tcHQuIEl0IGxpc3RzIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIg4oCTIHRoaW5ncyBRRU1VIGRvZXNuJ3QgZW11bGF0ZSBiZWNhdXNlIHRoZXkgcmVxdWlyZSBhIHJlYWwgQVNJQyBvciBQQ0llIGNhcmQuIFRoZSBsaXN0IGluY2x1ZGVzIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGV0Yy4gV2hpbGUgYGF0bDFjYCBpc24ndCBleHBsaWNpdGx5IGxpc3RlZCwgaXQgcmFpc2VzIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb246IGlzIHRoZSBBdGhlcm9zIEwxQyBpbiB0aGF0IHNhbWUgY2F0ZWdvcnk/XG5cbk15IG5leHQgdGhvdWdodCBwcm9jZXNzIGlzIGZvY3VzZWQgb24gd2hhdCBRRU1VICpkb2VzKiBlbXVsYXRlIGluIHRlcm1zIG9mIG5ldHdvcmsgY2FyZHMuIEkgcmVjYWxsIHRoZSB1c3VhbCBzdXNwZWN0czogZTEwMDAsIGUxMDAwZSwgaWdiLCBydGw4MTM5LCBgbmUya19wY2lgLCBgcGNuZXRgLCBgdmlydGlvLW5ldC1wY2lgLCBgdm14bmV0M2AsIGByb2NrZXJgLCBgc3VuZ2VtYCwgYHN1bmdlbS1wY2lgLCBldGMuIEknbSBub3Qgc2VlaW5nIEFSODF4eCBvciBMMUMgdGhlcmUuIFRoaXMgc3VnZ2VzdHMgSSBuZWVkIHRvIGRpZyBkZWVwZXIuXG5cblNvLCB0aGUga2V5IHF1ZXN0aW9ucyBhcmU6IERvZXMgUUVNVSBoYXZlIGFueSB2aXJ0dWFsIGJ1cyBpbXBsZW1lbnRhdGlvbnMgb3Igb3RoZXIgZm9ybXMgb2YgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGNhcmQgZmFtaWx5PyBJcyB0aGUgYGF0bDFjYCBkcml2ZXIgc3RyaWN0bHkgYSBQQ0kgZHJpdmVyPyBJIG5lZWQgdG8gbG9vayBpbnRvIHdoZXRoZXIgaXQncyB0aWVkIHNvbGVseSB0byBhIHBoeXNpY2FsIFBDSSBpbXBsZW1lbnRhdGlvbiwgb3IgaWYgdGhlcmUncyBhbnkgYWJzdHJhY3Rpb24gbGF5ZXIgdGhhdCBtaWdodCBmYWNpbGl0YXRlIHNvbWUgZm9ybSBvZiB2aXJ0dWFsIGRldmljZSBpbiBRRU1VLiBTcGVjaWZpY2FsbHksIGxldCBtZSBjaGVjayB0aGUgYHBjaV9kcml2ZXJgIHVzYWdlIHdpdGhpbiB0aGUgYGF0bDFjYCBzb3VyY2UgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzMTAsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo0NDo0Ni4yMTI2ODMzODJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMzE3NDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wY2lfZHJpdmVyfHBjaV9yZWdpc3Rlcl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYz0yODgwPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBhdGwxY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYy0yODg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jOjI4OTA6bW9kdWxlX3BjaV9kcml2ZXIoYXRsMWNfZHJpdmVyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDQ6NDYuMjczMDA4MDVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzAzNjE4OTI0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKlBDSSBUYWJsZSBJbnNwZWN0aW9uOiBhdGwxYyoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIEZpcnN0IHRoaW5ncyBmaXJzdDogSSBuZWVkIHRvIHZlcmlmeSB0aGUgUENJIHRhYmxlIGZvciB0aGUgYGF0bDFjYCBkcml2ZXIuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSB3aGVuIEknbSBkZWJ1Z2dpbmcgb3IgYW5hbHl6aW5nIGFueXRoaW5nIHJlbGF0ZWQgdG8gbmV0d29yayBoYXJkd2FyZSwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBpc3N1ZXMgb3IgZHJpdmVyLXJlbGF0ZWQgcHJvYmxlbXMuIFRoZSBQQ0kgdGFibGUgaG9sZHMgY3J1Y2lhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaGFyZHdhcmUncyBjb25maWd1cmF0aW9uLCBpbmNsdWRpbmcgaXRzIHZlbmRvciBhbmQgZGV2aWNlIElEcywgaW50ZXJydXB0IGFzc2lnbm1lbnRzLCBhbmQgb3RoZXIgY3JpdGljYWwgZGV0YWlscy4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgaW5kaWNhdGlvbnMgb2YgY29uZmxpY3RzLCBtaXNjb25maWd1cmF0aW9ucywgb3IgYW55dGhpbmcgb3V0IG9mIHRoZSBvcmRpbmFyeSB0aGF0IG1pZ2h0IHNoZWQgbGlnaHQgb24gdGhlIGN1cnJlbnQgc2l0dWF0aW9uLiBJJ2xsIGJlIGV4cGVjdGluZyBzcGVjaWZpYyB2ZW5kb3IgYW5kIGRldmljZSBJRHMgdG8gdmVyaWZ5IGl04oCZcyB0aGUgY29ycmVjdCBoYXJkd2FyZS4gRnVydGhlcm1vcmUsIEnigJlsbCBiZSBjaGVja2luZyBmb3IgdGhlIGJ1cyBhbmQgZGV2aWNlIG51bWJlcnMsIG1lbW9yeSBhbmQgaW50ZXJydXB0IGFzc2lnbm1lbnRzLCBhbmQgYW55IHJlc291cmNlIGNvbmZsaWN0cyB0aGF0IG1pZ2h0IGV4cGxhaW4gc3Vib3B0aW1hbCBwZXJmb3JtYW5jZSBvciBjb25uZWN0aXZpdHkgaXNzdWVzLiBFc3NlbnRpYWxseSwgdGhpcyBQQ0kgdGFibGUgY2hlY2sgaXMgdGhlIGluaXRpYWwsIGZvdW5kYXRpb25hbCBzdGVwIGluIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgYGF0bDFjYCBOSUMgaXMgYmVpbmcgcmVjb2duaXplZCBhbmQgbWFuYWdlZCBieSB0aGUgc3lzdGVtLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgaXTigJlzIG9mdGVuIGEgZnJ1aXRmdWwgcGxhY2UgdG8gc3RhcnQsIGVzcGVjaWFsbHkgd2hlbiBmYWNpbmcgc2VlbWluZ2x5IG9ic2N1cmUgcHJvYmxlbXMuIEl0J3MgYSBmdW5kYW1lbnRhbCBjaGVja3BvaW50IHRoYXQgd2lsbCBwcm92aWRlIGNyaXRpY2FsIGluZm9ybWF0aW9uIHRvIGd1aWRlIG15IG5leHQgc3RlcHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMTY4LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDQ6NDkuMzA5MTk5NzQ2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyODUwLFxuICBcIkxpbmVDb3VudFwiOiA0NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyODUwOlxcdCAqXFxuMjg1MTpcXHQgKiBUaGlzIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIHRoZSBlcnJvciByZWNvdmVyeSBkcml2ZXIgdGVsbHMgdXMgdGhhdFxcbjI4NTI6XFx0ICogaXRzIE9LIHRvIHJlc3VtZSBub3JtYWwgb3BlcmF0aW9uLiBJbXBsZW1lbnRhdGlvbiByZXNlbWJsZXMgdGhlXFxuMjg1MzpcXHQgKiBzZWNvbmQtaGFsZiBvZiB0aGUgYXRsMWNfcmVzdW1lIHJvdXRpbmUuXFxuMjg1NDpcXHQgKi9cXG4yODU1OlxcdHN0YXRpYyB2b2lkIGF0bDFjX2lvX3Jlc3VtZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4yODU2OlxcdHtcXG4yODU3OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XFxuMjg1ODpcXHRcXHRzdHJ1Y3QgYXRsMWNfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuMjg1OTpcXHRcXG4yODYwOlxcdFxcdGlmIChuZXRpZl9ydW5uaW5nKG5ldGRldikpIHtcXG4yODYxOlxcdFxcdFxcdGlmIChhdGwxY191cChhZGFwdGVyKSkge1xcbjI4NjI6XFx0XFx0XFx0XFx0aWYgKG5ldGlmX21zZ19odyhhZGFwdGVyKSlcXG4yODYzOlxcdFxcdFxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG4yODY0OlxcdFxcdFxcdFxcdFxcdFxcdFxcXCJDYW5ub3QgYnJpbmcgZGV2aWNlIGJhY2sgdXAgYWZ0ZXIgcmVzZXRcXFxcblxcXCIpO1xcbjI4NjU6XFx0XFx0XFx0XFx0cmV0dXJuO1xcbjI4NjY6XFx0XFx0XFx0fVxcbjI4Njc6XFx0XFx0fVxcbjI4Njg6XFx0XFxuMjg2OTpcXHRcXHRuZXRpZl9kZXZpY2VfYXR0YWNoKG5ldGRldik7XFxuMjg3MDpcXHR9XFxuMjg3MTpcXHRcXG4yODcyOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIGF0bDFjX2Vycl9oYW5kbGVyID0ge1xcbjI4NzM6XFx0XFx0LmVycm9yX2RldGVjdGVkID0gYXRsMWNfaW9fZXJyb3JfZGV0ZWN0ZWQsXFxuMjg3NDpcXHRcXHQuc2xvdF9yZXNldCA9IGF0bDFjX2lvX3Nsb3RfcmVzZXQsXFxuMjg3NTpcXHRcXHQucmVzdW1lID0gYXRsMWNfaW9fcmVzdW1lLFxcbjI4NzY6XFx0fTtcXG4yODc3OlxcdFxcbjI4Nzg6XFx0c3RhdGljIFNJTVBMRV9ERVZfUE1fT1BTKGF0bDFjX3BtX29wcywgYXRsMWNfc3VzcGVuZCwgYXRsMWNfcmVzdW1lKTtcXG4yODc5OlxcdFxcbjI4ODA6XFx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGF0bDFjX2RyaXZlciA9IHtcXG4yODgxOlxcdFxcdC5uYW1lICAgICA9IGF0bDFjX2RyaXZlcl9uYW1lLFxcbjI4ODI6XFx0XFx0LmlkX3RhYmxlID0gYXRsMWNfcGNpX3RibCxcXG4yODgzOlxcdFxcdC5wcm9iZSAgICA9IGF0bDFjX3Byb2JlLFxcbjI4ODQ6XFx0XFx0LnJlbW92ZSAgID0gYXRsMWNfcmVtb3ZlLFxcbjI4ODU6XFx0XFx0LnNodXRkb3duID0gYXRsMWNfc2h1dGRvd24sXFxuMjg4NjpcXHRcXHQuZXJyX2hhbmRsZXIgPSBcXHUwMDI2YXRsMWNfZXJyX2hhbmRsZXIsXFxuMjg4NzpcXHRcXHQuZHJpdmVyLnBtID0gXFx1MDAyNmF0bDFjX3BtX29wcyxcXG4yODg4OlxcdH07XFxuMjg4OTpcXHRcXG4yODkwOlxcdG1vZHVsZV9wY2lfZHJpdmVyKGF0bDFjX2RyaXZlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjQ0OjQ5LjMwOTM1MTI3NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyNjYwNDY1NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkNoZWNraW5nIGBhdGwxY19wY2lfdGJsYCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSB0aGlua2luZyBjbGVhcmx5LiBJIG5lZWQgdG8gY2hlY2sgYGF0bDFjX3BjaV90YmxgLiBJdCdzIGxpa2VseSB0aGF0IEknbSBsb29raW5nIGZvciBhIHNwZWNpZmljIFBDSSBkZXZpY2UgSUQgb3IgcGVyaGFwcyBzb21lIHZlbmRvci1zcGVjaWZpYyBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgQXRoZXJvcyBBUjgxeHggRXRoZXJuZXQgY29udHJvbGxlciwgc3BlY2lmaWNhbGx5IHRoZSBgYXRsMWNgIGRyaXZlci4gSSdtIHByb2JhYmx5IGRpZ2dpbmcgaW50byB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gb3IgZGV2aWNlIHByb2JlIGxvZ2ljLiBLbm93aW5nIGBhdGwxY19wY2lfdGJsYCBpcyBsaWtlbHkgYSBQQ0kgSUQgdGFibGUgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIGNvdWxkIGJlIGRlYnVnZ2luZyBhIGRldmljZSBpbml0aWFsaXphdGlvbiBpc3N1ZSwgdHJvdWJsZXNob290aW5nIGEgZHJpdmVyIGNvbXBhdGliaWxpdHkgcHJvYmxlbSwgb3IgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgc3BlY2lmaWMgZGV2aWNlIGlzIGhhbmRsZWQgYXQgdGhlIGhhcmR3YXJlIGxldmVsLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBrZXJuZWwgdmVyc2lvbiBJJ20gd29ya2luZyB3aXRoLCBhcyB0aGlzIGRhdGEgY2FuIGNoYW5nZSBhY3Jvc3MgZGlmZmVyZW50IHJlbGVhc2VzLiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgbG9jYXRlIHRoZSByZWxldmFudCBzZWN0aW9uIG9mIGNvZGUsIHVuZGVyc3RhbmQgaXRzIGZ1bmN0aW9uLCBhbmQgZGV0ZXJtaW5lIGlmIGl0J3MgYmVoYXZpbmcgYXMgZXhwZWN0ZWQgaW4gdGhlIGNvbnRleHQgb2YgbXkgY3VycmVudCB0YXNrLiBJIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhlIHRhYmxlIGlzIHN0cnVjdHVyZWQgdGhlIHdheSBJIGV4cGVjdCBpdCB0byBiZS4gVGhpcyBpcyBhIGNvbW1vbiBzdGFydGluZyBwb2ludCBmb3IgUENJIGRldmljZSBkcml2ZXIgZGVidWdnaW5nLCBhbmQgSSBuZWVkIHRvIGtlZXAgbXkgZm9jdXMuIEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgdW51c3VhbCBjb25maWd1cmF0aW9ucywgb3IgdW5leHBlY3RlZCBlbnRyaWVzLiBUaGlzIHRhYmxlIGlzIHdoZXJlIHRoZSBkcml2ZXIgbGlua3Mgc3BlY2lmaWMgaGFyZHdhcmUgd2l0aCB0aGUgY29ycmVjdCBkcml2ZXIgZm9yIGluaXRpYWxpemF0aW9uIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzE1NSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDQ6NTEuOTY5ODE5MjA2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjExMDMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGwxY19wY2lfdGJsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmM9MTE9Y2hhciBhdGwxY19kcml2ZXJfbmFtZVtdID0gXFxcImF0bDFjXFxcIjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jLTEzLS8qXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmM6MTQ6ICogYXRsMWNfcGNpX3RibCAtIFBDSSBEZXZpY2UgSUQgVGFibGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYy0xNS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmMtMjEtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmM6MjI6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGF0bDFjX3BjaV90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYy0yMy1cXHR7UENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0FUVEFOU0lDLCBQQ0lfREVWSUNFX0lEX0FUVEFOU0lDX0wxQyl9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmMtMzEtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYzozMjpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgYXRsMWNfcGNpX3RibCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmMtMzMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYz0yNTgzPXN0YXRpYyBpbnQgYXRsMWNfaW5pdF9uZXRkZXYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYy0yNjA2LSAqIEBwZGV2OiBQQ0kgZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jOjI2MDc6ICogQGVudDogZW50cnkgaW4gYXRsMWNfcGNpX3RibFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jLTI2MDgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jPTI4ODA9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGF0bDFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYy0yODgxLVxcdC5uYW1lICAgICA9IGF0bDFjX2RyaXZlcl9uYW1lLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jOjI4ODI6XFx0LmlkX3RhYmxlID0gYXRsMWNfcGNpX3RibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uYy0yODgzLVxcdC5wcm9iZSAgICA9IGF0bDFjX3Byb2JlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo0NDo1Mi4wMjE5NDY3NDVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NjExMzUzMjU5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRldmljZSBJRCBJbnNwZWN0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgc3RhcnRlZC4gTGV0J3Mgc3RhcnQgd2l0aCB0aGUgYmFzaWNzLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB0YWtlIGEgbG9vayBhdCB0aGUgZGV2aWNlIElEcy4gVGhpcyBpcyBhbHdheXMgdGhlIHBsYWNlIHRvIHN0YXJ0IHdoZW4gSSBhbSBpbnZlc3RpZ2F0aW5nIGFuIGlzc3VlLCBzZXR0aW5nIHVwIGFuIGluZnJhc3RydWN0dXJlLCBvciB0cm91Ymxlc2hvb3RpbmcgYSBuZXR3b3JrIGNvbm5lY3Rpb24uXG5cbktub3dpbmcgdGhlIHVuaXF1ZSBJRHMgaXMgdGhlIGNvcm5lcnN0b25lIG9mIGFueSBjb25maWd1cmF0aW9uLiBMZXQncyBzZWUgd2hhdCB3ZSdyZSB3b3JraW5nIHdpdGggaGVyZS4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIG1vZGVscyBhbmQgY29ubmVjdGlvbnMgYmVmb3JlIHByb2NlZWRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MjI1LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo0NDo1OC4xMzU0ODI0NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjY5OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjAsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjA6XFx0ICogICBDbGFzcywgQ2xhc3MgTWFzaywgcHJpdmF0ZSBkYXRhIChub3QgdXNlZCkgfVxcbiAgMjE6XFx0ICovXFxuICAyMjpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgYXRsMWNfcGNpX3RibFtdID0ge1xcbiAgMjM6XFx0XFx0e1BDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9BVFRBTlNJQywgUENJX0RFVklDRV9JRF9BVFRBTlNJQ19MMUMpfSxcXG4gIDI0OlxcdFxcdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVRUQU5TSUMsIFBDSV9ERVZJQ0VfSURfQVRUQU5TSUNfTDJDKX0sXFxuICAyNTpcXHRcXHR7UENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0FUVEFOU0lDLCBQQ0lfREVWSUNFX0lEX0FUSEVST1NfTDJDX0IpfSxcXG4gIDI2OlxcdFxcdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVRUQU5TSUMsIFBDSV9ERVZJQ0VfSURfQVRIRVJPU19MMkNfQjIpfSxcXG4gIDI3OlxcdFxcdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVRUQU5TSUMsIFBDSV9ERVZJQ0VfSURfQVRIRVJPU19MMUQpfSxcXG4gIDI4OlxcdFxcdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVRUQU5TSUMsIFBDSV9ERVZJQ0VfSURfQVRIRVJPU19MMURfMl8wKX0sXFxuICAyOTpcXHRcXHQvKiByZXF1aXJlZCBsYXN0IGVudHJ5ICovXFxuICAzMDpcXHRcXHR7IDAgfVxcbiAgMzE6XFx0fTtcXG4gIDMyOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBhdGwxY19wY2lfdGJsKTtcXG4gIDMzOlxcdFxcbiAgMzQ6XFx0TU9EVUxFX0FVVEhPUihcXFwiSmllIFlhbmdcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDQ6NTguMTM1NjUxODhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6ODcxODc3ODc0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgQXNzZXNzbWVudDogYXRsMWMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggaXMgZXZlbiAqZnV6emFibGUqIHdpdGhpbiB0aGUgY29udGV4dCBvZiBzdGFuZGFyZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSSBrbm93IHdlJ3JlIGxvb2tpbmcgYXQgUENJIGRldmljZXMsIHNwZWNpZmljYWxseSBBdHRhbnNpYyAvIFF1YWxjb21tIEF0aGVyb3MgTDFDIGFuZCByZWxhdGVkIHZhcmlhdGlvbnMuIFZlbmRvciBJRCAweDE5NjkgaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcyBhcyBwb3RlbnRpYWxseSBwcm9ibGVtYXRpYy4gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHN0YW5kYXJkIFFFTVUgb3IgR0NFIG9mZmVyIGFkZXF1YXRlIGVtdWxhdGlvbiBvZiB0aGVzZSBBdGhlcm9zIEwxQyBuZXR3b3JrIGNhcmRzP1xuXG5JIGtub3cgUUVNVSBkb2Vzbid0IGRpcmVjdGx5IG1vZGVsIHRoZXNlIEF0dGFuc2ljL0F0aGVyb3MgTklDcy4gVGhhdCdzIHRoZSBrZXkuIE5vdywgbGV0J3MgY29uc3VsdCB0aGUgZ3VpZGVsaW5lcy4gU3BlY2lmaWNhbGx5LCBzZWN0aW9uIDIsIHRoZSBcIk5FR0FUSVZFIENSSVRFUklBLFwiIHRoZSBrZXkgcG9pbnQgaGVyZSBpcyB0aGF0IHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byBjZXJ0YWluIGNhdGVnb3JpZXMuIFRoZSByZWxldmFudCBvbmUgaGVyZSBpcyBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSxcIiB3aGljaCBleHBsaWNpdGx5IG1lbnRpb25zIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRldmljZXMgdGhhdCBhcmVuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpbmdzIGxpa2UgU21hcnROSUNzLCBHUFUgZHJpdmVycywgYW5kIHRoZSBsaWtlLlxuXG5TbywgdGhlIG5leHQgdGhvdWdodCBpcyB3aGV0aGVyIHRoaXMgYGF0bDFjYCBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwYXRjaCBhbmQgdGhlIGBhdGwxY2AgZHJpdmVyJ3MgZXhlY3V0aW9uIHBhdGguIFRoZSBwYXRjaCBtb2RpZmllcyBgYXRsMWNfY2xlYW5fdHhgLCB0aGUgTkFQSSBwb2xsaW5nIGNhbGxiYWNrIGZvciBUWCBjbGVhbnVwIHdpdGhpbiB0aGUgYGF0bDFjYCBldGhlcm5ldCBkcml2ZXIuIEkgcmVjYWxsIHRoZSBjb2RlOlxuYGBgY1xuXHRBVF9SRUFEX1JFR1coXHUwMDI2YWRhcHRlci1cdTAwM2VodywgYXRsMWNfcXJlZ3NbdHBkX3JpbmctXHUwMDNlbnVtXS50cGRfY29ucyxcblx0XHQgICAgIFx1MDAyNmh3X25leHRfdG9fY2xlYW4pO1xuXG5cdGlmICh1bmxpa2VseShod19uZXh0X3RvX2NsZWFuIFx1MDAzZT0gdHBkX3JpbmctXHUwMDNlY291bnQpKVxuXHRcdGh3X25leHRfdG9fY2xlYW4gPSBuZXh0X3RvX2NsZWFuO1xuYGBgXG5cblRoaXMgaXMgKmluc2lkZSogYGF0bDFjX2NsZWFuX3R4YCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgTkFQSSBwb2xsIGhhbmRsZXIgKGBhdGwxY19jbGVhbl9yeGAgLyBgYXRsMWNfY2xlYW5fdHhgIHNjaGVkdWxlZCBieSBpbnRlcnJ1cHQgaGFuZGxlciBgYXRsMWNfaW50cmApLiBUaGlzLCBjcnVjaWFsbHksIHJlcXVpcmVzIHRoZSBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgZGV2aWNlIHRvIGJlIHByb2JlZCBhbmQgYm91bmQgdGhyb3VnaCBgYXRsMWNfcHJvYmVgLiBBbmQgYGF0bDFjX3Byb2JlYCBpcyB2ZXJ5IHNwZWNpZmljOiBpdCBvbmx5IGJpbmRzIHRvIHRob3NlIEF0aGVyb3MvQXR0YW5zaWMgUENJIGRldmljZXMgKDB4MTk2OTogMHgxMDYzLCAweDEwNjIsIDB4MjA2MCwgMHgyMDYyLCAweDEwNzMsIDB4MTA4MykuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSBzdGFuZGFyZCBRRU1VIChhbmQgR0NFIFZNcykgZG9lc24ndCBlbXVsYXRlIHRoZXNlIE5JQ3MsIHRoZSBmdW5jdGlvbiBgYXRsMWNfY2xlYW5fdHhgIGlzICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUqIGluIHRoZXNlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXQgaXMgYmxvY2tlZCBvbiB0aGUgaGFyZHdhcmUhXG5cblRvIGJlIHN1cmUsIEknbGwgcmV2aXNpdCBTZWN0aW9uIDEsIFwiUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEUuXCIgVGhlIGd1aWRlbGluZSBjbGVhcmx5IHN0YXRlcyB0aGF0IGZ1enppbmcgY2FuIG9ubHkgZmluZCBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIElmIHRoZSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLCBldmVuIGlmIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLiBTZWN0aW9uIDIgY29uZmlybXMgdGhpcyBhZ2FpbiwgZXhwbGljaXRseSBzdGF0aW5nIGl0IGFib3V0IHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlLlxuXG5UaGUgYXRsMWMgZHJpdmVyIGlzICpleGFjdGx5KiB0aGlzOiBhIHZlbmRvci1zcGVjaWZpYyBQQ0kgZXRoZXJuZXQgZHJpdmVyIGZvciBBdGhlcm9zIEwxQy9MMkMvTDFEIGNoaXBzZXRzIHRoYXQgZGVtYW5kcyBwaHlzaWNhbCBoYXJkd2FyZS5cblxuVGh1cywgYmFzZWQgb24gdGhpcyB0aG9yb3VnaCBhbmFseXNpcywgYFdvcnRoRnV6emluZ2AgbXVzdCBiZSBmYWxzZS5cblxuTGV0J3MgYWxzbyBub3RlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uczogYEFUTDFDYCwgYFBDSWAsIGFuZCBgTkVUX1ZFTkRPUl9BVEhFUk9TYCwgYW5kIHRoZSBzeW1ib2wgb2YgZm9jdXMgd2hpY2ggaXMgYGF0bDFjX2NsZWFuX3R4YC5cblxuVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIHBhdGNoIHRvdWNoZXMgYGF0bDFjX2NsZWFuX3R4KClgLCB3aGljaCBsaXZlcyBpbiB0aGUgQXRoZXJvcyBMMUMgUENJIGV0aGVybmV0IGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jYCkuIFRoaXMgZHJpdmVyIGlzIHRpZWQgdG8gcGh5c2ljYWwgUENJIGRldmljZXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFLiBUaGlzIG1ha2VzIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ3NTgsIk91dHB1dFRva2VucyI6MTQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjQ1OjA2Ljg1NDQzNDEzMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMDgwLCJFcnJvciI6IkZvY3VzU3ltYm9scyBtdXN0IGJlIGVtcHR5IGlmIFdvcnRoRnV6emluZyBpcyBmYWxzZSIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEwxQ1wiLFxuICAgIFwiUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRsMWNfY2xlYW5fdHhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgYXRsMWNfY2xlYW5fdHhgIGluIHRoZSBBdGhlcm9zIEwxQyBHaWdhYml0IEV0aGVybmV0IGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfbWFpbi5jYCkuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFF1YWxjb21tIEF0aGVyb3MvQXR0YW5zaWMgUENJIGhhcmR3YXJlIChMMUMsIEwyQywgTDFEKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIkZvY3VzU3ltYm9scyBtdXN0IGJlIGVtcHR5IGlmIFdvcnRoRnV6emluZyBpcyBmYWxzZVwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo0NTowNi44NTQ0NzUzOTFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NjkxNTQ3NDUzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvYmxlbTpcblxuKipDbGVhbmluZyBVcCBhIFBvdGVudGlhbCBEYXRhIEluY29uc2lzdGVuY3kqKlxuXG5BbHJpZ2h0LCBzbyBJJ3ZlIHNwb3R0ZWQgc29tZXRoaW5nIGluIHRoZSBjb2RlIHRoYXQncyBnb3QgYSBwb3RlbnRpYWwgaW5jb25zaXN0ZW5jeSwgYSBiaXQgb2YgYSBsb2dpY2FsIGZsYXcuIEknbSBzZWVpbmcgdGhhdCB0aGUgYEZvY3VzU3ltYm9sc2AgY29sbGVjdGlvbiAqc2hvdWxkKiBiZSBlbXB0eSBpZiB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyBpcyBmYWxzZS4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBJZiB3ZSBhcmVuJ3QgZnV6emluZywgd2UgZG9uJ3QgbmVlZCBhbnkgZm9jdXMgc3ltYm9scywgcmlnaHQ/IEl0J3MgYSB3YXN0ZSBvZiByZXNvdXJjZXMgYW5kIHBvdGVudGlhbGx5IGxlYWRzIHRvIGNvbmZ1c2lvbiBpZiB0aGV5J3JlIHBvcHVsYXRlZCB3aGVuIHRoZXkgc2hvdWxkbid0IGJlLlxuXG5UaGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGZpeCwgYnV0IGFuIGltcG9ydGFudCBvbmUuIEl0J3MgYWJvdXQgbWFpbnRhaW5pbmcgZGF0YSBpbnRlZ3JpdHkgYW5kIGtlZXBpbmcgdGhlIGNvZGUgY2xlYW4uIExldCdzIGdldCB0aGlzIGNsZWFuZWQgdXAgdG8gcHJldmVudCBmdXR1cmUgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjkwMiwiT3V0cHV0VG9rZW5zIjoxNDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbInNldC1yZXN1bHRzIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDU6MTMuNzY5OTUzNjE2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ2MzQ5MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUTDFDXCIsXG4gICAgXCJQQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGF0bDFjX2NsZWFuX3R4YCBpbiB0aGUgQXRoZXJvcyBMMUMgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX21haW4uY2ApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBRdWFsY29tbSBBdGhlcm9zL0F0dGFuc2ljIFBDSSBoYXJkd2FyZSAoTDFDLCBMMkMsIEwxRCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEwxQ1wiLFxuICAgIFwiUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBhdGwxY19jbGVhbl90eGAgaW4gdGhlIEF0aGVyb3MgTDFDIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19tYWluLmNgKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUXVhbGNvbW0gQXRoZXJvcy9BdHRhbnNpYyBQQ0kgaGFyZHdhcmUgKEwxQywgTDJDLCBMMUQpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjQ1OjEzLjg1NDU5ODA0N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflownj6pn[1] Phase: Running StartedAt: 2026-09-11 21:45:24 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflownj6pn[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-11 21:45:24 +0000 UTC FinishedAt: 2026-09-11 21:45:29 +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,}