Name: series-workflowl8pxd Phase: Failed StartedAt: 2026-07-11 03:58:35 +0000 UTC FinishedAt: 2026-07-11 04:21:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8pxd[0] Phase: Succeeded StartedAt: 2026-07-11 03:58:35 +0000 UTC FinishedAt: 2026-07-11 04:21:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8pxd[0].run-triage Phase: Succeeded StartedAt: 2026-07-11 03:58:35 +0000 UTC FinishedAt: 2026-07-11 04:21:44 +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+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUEhZIGRyaXZlciAobW90b3Jjb21tKS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIFBIWSBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgYW5kIHN5emthbGxlciBjYW5ub3QgaW5zdGFudGlhdGUgYXJiaXRyYXJ5IFBIWSBkZXZpY2VzIHdpdGhvdXQgaGFyZHdhcmUsIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjJlYzQ5OTYzYzJjOTk4ZTA5MjhjNjU0M2ExZGVkM2U2YzkzZGRiZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDExIDA0OjE5OjA0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYyBiL2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uY1xuaW5kZXggNTA3MTYwNWExYTExN2EuLjgxODA5OGE3OGQyM2RlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmNcbkBAIC0yNDkwLDcgJiM0MzsyNDkwLDggQEAgc3RhdGljIGludCB5dDg1MjFfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdC8qIGFkZCBmaWJlciYjMzk7cyBmZWF0dXJlcyB0byBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkICovXG4gXHRcdHl0ODUyMV9wcmVwYXJlX2ZpYmVyX2ZlYXR1cmVzKHBoeWRldiwgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCk7XG4gXHR9XG4tXHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0ID8gcmV0IDogZ2VucGh5X2M0NV9yZWFkX2VlZV9hYmlsaXRpZXMocGh5ZGV2KTtcbiB9XG4gXG4gLyoqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgZHJpdmVyIChtb3RvcmNvbW0pLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgUEhZIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBhbmQgc3l6a2FsbGVyIGNhbm5vdCBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgUEhZIGRldmljZXMgd2l0aG91dCBoYXJkd2FyZSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDYyZWM0OTk2M2MyYzk5OGUwOTI4YzY1NDNhMWRlZDNlNmM5M2RkYmYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAxMSAwNDoxOTowNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYyBiL2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYwppbmRleCA1MDcxNjA1YTFhMTE3YS4uODE4MDk4YTc4ZDIzZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMKQEAgLTI0OTAsNyAmIzQzOzI0OTAsOCBAQCBzdGF0aWMgaW50IHl0ODUyMV9nZXRfZmVhdHVyZXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkJLyogYWRkIGZpYmVyJiMzOTtzIGZlYXR1cmVzIHRvIHBoeWRldi0mZ3Q7c3VwcG9ydGVkICovCiAJCXl0ODUyMV9wcmVwYXJlX2ZpYmVyX2ZlYXR1cmVzKHBoeWRldiwgcGh5ZGV2LSZndDtzdXBwb3J0ZWQpOwogCX0KLQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXR1cm4gcmV0ID8gcmV0IDogZ2VucGh5X2M0NV9yZWFkX2VlZV9hYmlsaXRpZXMocGh5ZGV2KTsKIH0KIAogLyoqCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MzQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWNlbnQgTmV0d29yayBQSFkgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBwb2tpbmcgYXJvdW5kIGluIHRoZSBgZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jYCBmaWxlLiBUaGUgc3BlY2lmaWMgYXJlYSBvZiBpbnRlcmVzdCBpcyB0aGUgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGUgY2hhbmdlIGlzIGEgc2ltcGxlIGNvbmRpdGlvbmFsOiB0aGUgb3JpZ2luYWwgY29kZSBqdXN0IHJldHVybmVkIHRoZSB2YWx1ZSBvZiBgcmV0YCwgYnV0IG5vdyBpdCYjMzk7cyByZXR1cm5pbmcgYHJldCA/IHJldCA6IGdlbnBoeV9jNDVfcmVhZF9lZWVfYWJpbGl0aWVzKHBoeWRldik7YC4gRXNzZW50aWFsbHksIGl0IGlzIGNoZWNraW5nIGlmIHJldCBpcyB0cnVlLCBpZiBzbywgcmV0dXJuaW5nIHJldCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzZWNvbmQgZXhwcmVzc2lvbi4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRlbHZlIGludG8gdGhlIGNvZGUgaXRzZWxmLiBJIHdhbnQgdG8gc2VlIHdoYXQgYHJldGAgcmVwcmVzZW50cyBpbiB0aGlzIGNvbnRleHQgYW5kIHVuZGVyc3RhbmQgdGhlIGxvZ2ljIHRoYXQmIzM5O3MgYmVpbmcgdXNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgY29uZGl0aW9uYWwgd2FzIGludHJvZHVjZWQgYW5kIHdoYXQgcG90ZW50aWFsIGVkZ2UgY2FzZXMgaXQmIzM5O3MgdHJ5aW5nIHRvIGFkZHJlc3MuIElzIHRoaXMgYWJvdXQgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCAoRUVFKSBjYXBhYmlsaXRpZXMsIG9yIHNvbWV0aGluZyBlbHNlPyBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBpbnRvIHdoYXQgYGdlbnBoeV9jNDVfcmVhZF9lZWVfYWJpbGl0aWVzKHBoeWRldilgIGlzIGFuZCBpdHMgaW1wbGljYXRpb25zLiBBbHNvLCB3aGF0IGRvZXMgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIGRvIGlmIHRoZXJlIGlzIGFuIGVycm9yPyBNeSBmYW1pbGlhcml0eSB3aXRoIHRoZSBNb3RvcmNvbW0gUEhZIGRyaXZlcnMgd2lsbCBjb21lIGluIGhhbmR5IGhlcmUuIFVsdGltYXRlbHksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgcGFydGljdWxhciBtb2RpZmljYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eXQ4NTIxX2dldF9mZWF0dXJlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MjQwMD1zdGF0aWMgaW50IHl0cGh5X3V0cF9yZWFkX2FiaWxpdGllcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0yNDQwLS8qKlxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjI0NDE6ICogeXQ4NTIxX2dldF9mZWF0dXJlc19wYWdlZCgpIC0gIHJlYWQgc3VwcG9ydGVkIGxpbmsgbW9kZXMgZm9yIG9uZSBwYWdlXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMjQ0Mi0gKiBAcGh5ZGV2OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0yNDQ3LSAqL1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjI0NDg6c3RhdGljIGludCB5dDg1MjFfZ2V0X2ZlYXR1cmVzX3BhZ2VkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBwYWdlKVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTI0NDkte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0yNDcxLS8qKlxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjI0NzI6ICogeXQ4NTIxX2dldF9mZWF0dXJlcyAtIHN3aXRjaCByZWcgc3BhY2UgdGhlbiBjYWxsIHl0ODUyMV9nZXRfZmVhdHVyZXNfcGFnZWRcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0yNDczLSAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0yNDc2LSAqL1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjI0Nzc6c3RhdGljIGludCB5dDg1MjFfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMjQ3OC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTI0ODItXHRpZiAocHJpdi1cdTAwM2VyZWdfcGFnZSAhPSBZVDg1MjFfUlNTUl9UT19CRV9BUkJJVFJBVEVEKSB7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MjQ4MzpcdFx0cmV0ID0geXQ4NTIxX2dldF9mZWF0dXJlc19wYWdlZChwaHlkZXYsIHByaXYtXHUwMDNlcmVnX3BhZ2UpO1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTI0ODQtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjI0ODU6XHRcdHJldCA9IHl0ODUyMV9nZXRfZmVhdHVyZXNfcGFnZWQocGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTI0ODYtXHRcdFx0XHRcdFx0WVQ4NTIxX1JTU1JfVVRQX1NQQUNFKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MzA2Mz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbW90b3Jjb21tX3BoeV9kcnZzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNzUtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7WVQ4NTIxIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzA3NjpcdFx0LmdldF9mZWF0dXJlc1x0PSB5dDg1MjFfZ2V0X2ZlYXR1cmVzLFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNzctXHRcdC5wcm9iZVx0XHQ9IHl0ODUyMV9wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzExNy1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtZVDg1MzFTIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzExODpcdFx0LmdldF9mZWF0dXJlc1x0PSB5dDg1MjFfZ2V0X2ZlYXR1cmVzLFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxMTktXHRcdC5wcm9iZVx0XHQ9IHl0ODUyMV9wcm9iZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDU4CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIHRoZSBgbW90b3Jjb21tLmNgIFBIWSBEcml2ZXIgd2l0aGluIFN5emthbGxlcioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGhpdHMgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uY2AgZmlsZS4gUmlnaHQsIHRoYXQmIzM5O3MgYSBQSFkgZHJpdmVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgaG93IGxpa2VseSBpcyB0aGlzIHRvIGJlIGV4cGxvaXRhYmxlIHdpdGhpbiB0aGUgc3l6a2FsbGVyIGVudmlyb25tZW50PyBHZW5lcmFsbHksIFBIWSBkcml2ZXJzIGFyZSB0aWVkIHRvIG5ldHdvcmsgaW50ZXJmYWNlcywgYXNzdW1pbmcgdGhlIGhhcmR3YXJlIGlzIHByZXNlbnQsIG9yIHBvc3NpYmx5IGVtdWxhdGVkLiBTeXprYWxsZXIgdXN1YWxseSBkb2VzbiYjMzk7dCBlbXVsYXRlIHNwZWNpZmljIFBIWXMgZGlyZWN0bHksIGF0IGxlYXN0IG5vdCBpbiBhIHRhcmdldGVkIHdheS4gSXQgbWlnaHQgaGF2ZSBzb21lIGdlbmVyaWMgTURJTy9QSFkgZnV6emluZyBpbnRlcmZhY2VzLCBwcm9iYWJseSB0aHJvdWdoIG5ldGxpbmsgb3IgaW9jdGxzLiBCdXQgdGhvc2UgYXJlIG9mdGVuIHF1aXRlIGxpbWl0ZWQgaW4gdGhlaXIgYWJpbGl0eSB0byByZWFjaCBzcGVjaWZpYyBkcml2ZXJzIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50LgoKV2FpdCwgdGhvdWdoLCBzeXprYWxsZXIgZG9lcyBoYXZlIHRob3NlIE1ESU8vUEhZIGZ1enppbmcgY2FwYWJpbGl0aWVzIHZpYSBuZXRsaW5rIG9yIGlvY3Rscy4uLiBidXQgc3RpbGwsIGl0JiMzOTtzIGdlbmVyYWxseSBhIGh1cmRsZSB0byBkaXJlY3RseSB0YXJnZXQgYSBzcGVjaWZpYyBkcml2ZXIgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuCgpIYW5nIG9uLi4uIGlzIHRoZXJlIGEgY2xldmVyIHdheSB0byB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlPyBDb3VsZCBJIHNvbWVob3cgdXNlIGBTSU9DU01JSVJFR2AgaW9jdGxzIG9yIGEgc2ltaWxhciBtZXRob2Q/IEJ1dCwgZXZlbiB3aXRoIHRob3NlLCB0aGUgUEhZIGRyaXZlciBzdGlsbCBuZWVkcyB0byBiZSBib3VuZCB0byAqc29tZSoga2luZCBvZiBkZXZpY2UsIHJpZ2h0PwoKV2FpdCwgc3l6a2FsbGVyICpjYW4qIGluc3RhbnRpYXRlIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzIGxpa2UgdmV0aCBvciB0dW4uIEhvd2V2ZXIsIHRob3NlIGR1bW15IGRldmljZXMgZG9uJiMzOTt0IHR5cGljYWxseSBsZXZlcmFnZSBhY3R1YWwgUEhZIGRyaXZlcnMuIFNvLCBjYW4gSSBzb21laG93IGJpbmQgYSBQSFkgZHJpdmVyIGxpa2UgYG1vdG9yY29tbS5jYCB0byBhIGR1bW15IGRldmljZSB0aGF0IHN5emthbGxlciBjcmVhdGVzPyBQcm9iYWJseSBub3QgZGlyZWN0bHkuCgpTaG9vdCwgaXQmIzM5O3Mgc3RhcnRpbmcgdG8gbG9vayBsaWtlIHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgYnVpbHQtaW4gd2F5IHRvIGVtdWxhdGUgc3BlY2lmaWMgUEhZIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgbGlrZSB0aGUgbW90b3Jjb21tIHN0dWZmLgoKV2FpdCBhIHNlYywgc3l6a2FsbGVyIGRvZXMgZW11bGF0ZSBVU0IgdmlhIGB2aGNpYCwgd2lmaSB2aWEgYG1hYzgwMjExX2h3c2ltYCwgRFJNIHRocm91Z2ggYHZrbXNgLCBldGMuIFNvLCB0aGVyZSBpcyBwcmVjZWRlbnQgZm9yIGRldmljZSBzcGVjaWZpYyBlbXVsYXRvcnMuLi4gYnV0IGZvciBQSFlzLCB0aGUgY2xvc2VzdCBzZWVtcyB0byBiZSBgZml4ZWQtcGh5YCwgYW5kIHRoYXQgZG9lc24mIzM5O3QgdXNlIHRoZSBgbW90b3Jjb21tLmNgIGNvZGUgYXQgYWxsLgoKU28sIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpczogSXMgYG1vdG9yY29tbS5jYCBhY3R1YWxseSByZWFjaGFibGUgaW4gc3l6a2FsbGVyPyBJdCYjMzk7cyB0aW1lIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIGFuZCBtYWtlIHN1cmUgdGhlcmUmIzM5O3Mgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpdGVtIGZvciB0aGUgYG1vdG9yY29tbWAgc3VwcG9ydCB0aGF0IEkmIzM5O20gbWlzc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNT1RPUkNPTU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTMzOD1jb25maWcgTUlDUk9TRU1JX1BIWVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTM0Ni1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjM0Nzpjb25maWcgTU9UT1JDT01NX1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMzQ4LVx0dHJpc3RhdGUgXCYjMzQ7TW90b3Jjb21tIFBIWXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9ODI9b2JqLSQoQ09ORklHX01JQ1JPU0VNSV9QSFkpXHQmIzQzOz0gbXNjYy9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4MzpvYmotJChDT05GSUdfTU9UT1JDT01NX1BIWSlcdCYjNDM7PSBtb3RvcmNvbW0ub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTg0LW9iai0kKENPTkZJR19OQVRJT05BTF9QSFkpXHQmIzQzOz0gbmF0aW9uYWwub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwOTUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNT1RPUkNPTU1fUEhZIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYE1PVE9SQ09NTV9QSFlgIGNvbmZpZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gd2UgYWN0dWFsbHkgaGl0IHRoaXMgY29kZSBwYXRoPyBJdCYjMzk7cyBhIFBIWSBkcml2ZXIsIHdoaWNoIG1lYW5zIHRoZSBgZ2V0X2ZlYXR1cmVzYCBjYWxsYmFjaywgdGhlIG9uZSBJJiMzOTttIGludGVyZXN0ZWQgaW4sIHNob3VsZCBiZSB0cmlnZ2VyZWQgZHVyaW5nIHRoZSBQSFkmIzM5O3MgaW5pdGlhbGl6YXRpb24sIGVpdGhlciB3aGVuIGl0JiMzOTtzIGJlaW5nIHByb2JlZCBvciB3aGVuIHNvbWVvbmUmIzM5O3MgYWN0aXZlbHkgYXNraW5nIGFib3V0IGl0cyBjYXBhYmlsaXRpZXMuIElmIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBpc24mIzM5O3QgcHJlc2VudCwgdGhlIGRyaXZlciB3b3VsZG4mIzM5O3QgZXZlbiBwcm9iZSBpbiB0aGUgZmlyc3QgcGxhY2UsIHJpZ2h0PwoKVGhlbiBJIHRob3VnaHQsIGlzIHRoZXJlIGEgd2F5IHRvIGJyaW5nIGEgUEhZIGRldmljZSBpbnRvIGV4aXN0ZW5jZSBpbiBzb2Z0d2FyZT8gSSB2YWd1ZWx5IHJlbWVtYmVyIHNvbWV0aGluZyBhYm91dCBNRElPIGJ1c2VzIGFuZCBpbmplY3RpbmcgZGV2aWNlcy4gQnV0LCBhbmQgdGhpcyBpcyBhIHN0aWNraW5nIHBvaW50LCBkb2VzIFN5emthbGxlciwgd2hpY2ggaXMgd2hhdCBJJiMzOTttIHVzaW5nLCBoYXZlIGEgZ2VuZXJpYyBNRElPIGZ1enplciB0aGF0IHdvdWxkIGxldCBtZSBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgUEhZcz8gSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBvbmUgb2ZmaGFuZC4KCldhaXQuLi4gaGFuZyBvbiBhIG1pbnV0ZS4gRGlkbiYjMzk7dCBJIHNlZSBzb21ldGhpbmcgYWJvdXQgTURJTyBmdXp6aW5nIHdpdGhpbiBTeXprYWxsZXI/IE1heWJlIEkgYW0gd3JvbmcsIGFuZCBpdCBpcyBjYXBhYmxlIG9mIHNvbWV0aGluZy4gSSBkb24mIzM5O3QgaGF2ZSBkaXJlY3QgYWNjZXNzIHRvIHRoZSBTeXprYWxsZXIgc291cmNlIGhlcmUsIGJ1dCBJIGNhbiBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSB2aXJ0dWFsIE1ESU8gZHJpdmVycyB3aXRoaW4gdGhlIGtlcm5lbC4gVGhhdCBjb3VsZCBiZSBhIGNydWNpYWwgaGludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8uKm1vY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTg4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqUHJvYmluZyBmb3IgUEhZIERyaXZlciBBY2Nlc3MqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgUEhZIGRyaXZlcnMuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjYXN1YWwgZXhwbG9yYXRpb247IEkmIzM5O20gYXNzdW1pbmcgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyByZWFzb24gSSBuZWVkIHRoaXMgbGV2ZWwgb2YgY29udHJvbC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGlkZW50aWZ5aW5nIGFueSBhdmFpbGFibGUgZW50cnkgcG9pbnRzIOKAkyBlc3NlbnRpYWxseSwgZXhwb3NlZCBpbnRlcmZhY2VzLCBBUElzLCBvciBkYXRhIHN0cnVjdHVyZXMg4oCTIHRoYXQgYWxsb3cgZm9yIGRpcmVjdCBtYW5pcHVsYXRpb24gb3IgaW50ZXJyb2dhdGlvbiBvZiB0aGUgUEhZIGxheWVyLiBUaGlzIGNvdWxkIGludm9sdmUgZXhhbWluaW5nIGV4aXN0aW5nIGtlcm5lbCBtb2R1bGVzLCBhbmFseXppbmcgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcywgb3IgZXZlbiBsb29raW5nIGludG8gc3RhbmRhcmQgcHJvdG9jb2xzIG9yIG1ldGhvZG9sb2dpZXMgZ2VuZXJhbGx5IHVzZWQgaW4gdGhpcyBjb250ZXh0LiBUaGUgZ29hbCBoZXJlIGlzIGVmZmljaWVudCBhY2Nlc3MgdG8gdGhlIFBIWSYjMzk7cyB1bmRlcmx5aW5nIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpby4qZnV6eiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODAzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgTW9ja2luZyBUZWNobmlxdWVzIGZvciBNRElPIEludGVyZmFjZSoqCgpSaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdG8gYXBwcm9hY2ggdGhlIE1ESU8gaW50ZXJmYWNlIHRlc3RpbmcsIGFuZCB0aGUgcXVlc3Rpb24gb2YgbW9ja2luZyBpcyBpbW1lZGlhdGVseSBmcm9udCBvZiBtaW5kLiBJJiMzOTt2ZSBiZWVuIHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgc3RyYXRlZ2llcywgYW5kIG9uZSBjb25jZXB0IGtlZXBzIHN1cmZhY2luZzogdXRpbGl6aW5nIGEgbW9ja2luZyBsaWJyYXJ5IHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBoYW5kbGUgdGhlIE1ESU8gcHJvdG9jb2wuIEkmIzM5O20gd29uZGVyaW5nIGlmIHRoZXJlIGFyZSBhbnkgd2VsbC1lc3RhYmxpc2hlZCBzb2x1dGlvbnMgb3V0IHRoZXJlIHRhaWxvcmVkIGZvciB0aGlzOyBzb21ldGhpbmcgYWxvbmcgdGhlIGxpbmVzIG9mIGFuIGBtZGlvLW1vY2tgIGxpYnJhcnksIG9yIG1heWJlIHNvbWV0aGluZyBzaW1pbGFyIHVuZGVyIGEgZGlmZmVyZW50IG5hbWUsIHRoYXQgd291bGQgc2F2ZSBhIHNpZ25pZmljYW50IGFtb3VudCBvZiBkZXZlbG9wbWVudCB0aW1lPyBJJiMzOTtkIGV4cGVjdCB0aGF0IHN1Y2ggYSBsaWJyYXJ5IHdvdWxkIHByb3ZpZGUgYSBzaW1wbGlmaWVkLCBwcm9ncmFtbWF0aWMgaW50ZXJmYWNlIGZvciBzaW11bGF0aW5nIE1ESU8gdHJhbnNhY3Rpb25zLCBhbGxvd2luZyBtZSB0byBkZWZpbmUgdGhlIGJlaGF2aW9yIG9mIHZhcmlvdXMgUEhZIHJlZ2lzdGVycy4gVGhlbiBJIGNhbiBqdXN0IGZvY3VzIG9uIHRoZSBjb3JlIGxvZ2ljIGFuZCBub3QgdGhlIGNvbXBsZXhpdHkgb2YgTURJTyBhY2Nlc3MuIFRoZSBpZGVhIGlzIHRvIGlzb2xhdGUgbXkgY29tcG9uZW50IGFuZCBlbnN1cmUgaXRzIGZ1bmN0aW9uYWxpdHkgaXMgY29ycmVjdCwgaXJyZXNwZWN0aXZlIG9mIGFueSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgdGhhdCBjYW4gY3JlYXRlIGNvbXBsaWNhdGlvbnMuIEl0JiMzOTtkIGJlIGZhciBtb3JlIGVmZmljaWVudCB0aGFuIGJ1aWxkaW5nIGV2ZXJ5dGhpbmcgZnJvbSBzY3JhdGNoISBJJiMzOTttIGxlYW5pbmcgdG93YXJkIGV4cGxvcmluZyB0aGlzIHBvc3NpYmlsaXR5IG1vcmUgZGVlcGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8uKmR1bW15JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwOTMKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBUcmlnZ2VyIGZvciBgeXQ4NTIxX2dldF9mZWF0dXJlc2AqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdGhlIGB5dDg1MjFfZ2V0X2ZlYXR1cmVzYCBmdW5jdGlvbiBhY3R1YWxseSBnZXRzIGNhbGxlZC4gTXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgUEhZIGRyaXZlcnMsIGxpa2UgdGhpcyBvbmUsIGFyZSB0eXBpY2FsbHkgYnJvdWdodCBpbnRvIGV4aXN0ZW5jZSB2aWEgdGhlIE1ESU8gYnVzIHNjYW5uaW5nIGFuZCBtYXRjaGluZyB0aGUgUEhZIElELCBvciB0aHJvdWdoIGEgZGV2aWNlIHRyZWUgaW5zdGFudGlhdGlvbi4gVGhlIHByb2JsZW0gSSYjMzk7bSBmYWNpbmcgaXMgdGhpczogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgc29tZXRoaW5nIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUsIHdoZXJlIHdlICpkb24mIzM5O3QqIGhhdmUgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uIGZvciBhIE1vdG9yY29tbSBQSFksIHRoZSB0eXBpY2FsIHByb2JpbmcgbWVjaGFuaXNtcyBwcm9iYWJseSB3b24mIzM5O3Qgd29yay4gSXQmIzM5O3MgZXNzZW50aWFsbHkgaW1wb3NzaWJsZSBmb3IgdGhlIGNvZGUgdG8gZ2V0IGhpdCB1bmRlciB0aGVzZSBjaXJjdW1zdGFuY2VzLiBTbywgbGV0IG1lIGRvdWJsZS1jaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGluIHBsYWNlIHRoYXQgKmNvdWxkKiBwb3RlbnRpYWxseSB0cmlnZ2VyIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb3RvcmNvbW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTQ5NjI9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgeXQ5MjF4X29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDk2MzpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDttb3RvcmNvbW0seXQ5MjE1XCYjMzQ7IH0sXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDk2NC1cdHt9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NTI9b2JqLSQoQ09ORklHX0RXTUFDX0xPT05HU09OKVx0JiM0Mzs9IGR3bWFjLWxvb25nc29uLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUzOm9iai0kKENPTkZJR19EV01BQ19NT1RPUkNPTU0pXHQmIzQzOz0gZHdtYWMtbW90b3Jjb21tLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTU0LXN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjI6I2RlZmluZSBEUklWRVJfTkFNRSBcJiMzNDtkd21hYy1tb3RvcmNvbW1cJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTIzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6NTU6c3RydWN0IG1vdG9yY29tbV9lZnVzZV9wYXRjaCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy01Ni1cdF9fbGUxNiBhZGRyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6NjA6c3RydWN0IGR3bWFjX21vdG9yY29tbV9wcml2IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTYxLVx0dm9pZCBfX2lvbWVtICpiYXNlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6NjQ6c3RhdGljIGludCBtb3RvcmNvbW1fZWZ1c2VfcmVhZF9ieXRlKHN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTY1LVx0XHRcdFx0ICAgICB1OCBvZmZzZXQsIHU4ICpieXRlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6ODM6c3RhdGljIGludCBtb3RvcmNvbW1fZWZ1c2VfcmVhZF9wYXRjaChzdHJ1Y3QgZHdtYWNfbW90b3Jjb21tX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy04NC1cdFx0XHRcdCAgICAgIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6ODU6XHRcdFx0XHQgICAgICBzdHJ1Y3QgbW90b3Jjb21tX2VmdXNlX3BhdGNoICpwYXRjaClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTg2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy05Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjkzOlx0XHRyZXQgPSBtb3RvcmNvbW1fZWZ1c2VfcmVhZF9ieXRlKHByaXYsIG9mZnNldCwgXHUwMDI2cFtpXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy05NC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xMDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxMDE6c3RhdGljIGludCBtb3RvcmNvbW1fZWZ1c2VfZ2V0X3BhdGNoX3ZhbHVlKHN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTEwMi1cdFx0XHRcdFx0ICAgdTE2IGFkZHIsIHUzMiAqdmFsdWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xMDMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTA0Olx0c3RydWN0IG1vdG9yY29tbV9lZnVzZV9wYXRjaCBwYXRjaDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTEwNS1cdGludCBpLCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTA3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRUZVU0VfUEFUQ0hfTUFYX05VTTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjEwODpcdFx0cmV0ID0gbW90b3Jjb21tX2VmdXNlX3JlYWRfcGF0Y2gocHJpdiwgaSwgXHUwMDI2cGF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTA5LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTEyMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjEyMzpzdGF0aWMgaW50IG1vdG9yY29tbV9lZnVzZV9yZWFkX21hYyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxMjQ6XHRcdFx0XHQgICAgc3RydWN0IGR3bWFjX21vdG9yY29tbV9wcml2ICpwcml2LCB1OCAqbWFjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTI1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxMjk6XHRyZXQgPSBtb3RvcmNvbW1fZWZ1c2VfZ2V0X3BhdGNoX3ZhbHVlKHByaXYsIEVGVVNFX0FERFJfTUFDQTBMUixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTEzMC1cdFx0XHRcdFx0ICAgICAgXHUwMDI2bWFjYTBscik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTM1Olx0cmV0ID0gbW90b3Jjb21tX2VmdXNlX2dldF9wYXRjaF92YWx1ZShwcml2LCBFRlVTRV9BRERSX01BQ0EwSFIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xMzYtXHRcdFx0XHRcdCAgICAgIFx1MDAyNm1hY2EwaHIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjE1MTpzdGF0aWMgdm9pZCBtb3RvcmNvbW1fZGVhc3NlcnRfbWRpb19waHlfcmVzZXQoc3RydWN0IGR3bWFjX21vdG9yY29tbV9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTUyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxNjA6c3RhdGljIHZvaWQgbW90b3Jjb21tX3Jlc2V0KHN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE2MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTY5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTcwOlx0bW90b3Jjb21tX2RlYXNzZXJ0X21kaW9fcGh5X3Jlc2V0KHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTcxLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjE3MzpzdGF0aWMgdm9pZCBtb3RvcmNvbW1faW5pdChzdHJ1Y3QgZHdtYWNfbW90b3Jjb21tX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xNzQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjE4ODpzdGF0aWMgaW50IG1vdG9yY29tbV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE4OS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxOTA6XHRzdHJ1Y3QgZHdtYWNfbW90b3Jjb21tX3ByaXYgKnByaXYgPSBic3BfcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE5MS1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjAwLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyMDE6XHRtb3RvcmNvbW1fZGVhc3NlcnRfbWRpb19waHlfcmVzZXQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyMDI6XHRtb3RvcmNvbW1faW5pdChwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTIwMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yMDc9c3RhdGljIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyMDg6bW90b3Jjb21tX2RlZmF1bHRfcGxhdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjA5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDktXHRwbGF0LVx1MDAzZXN1c3BlbmRcdFx0PSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI1MDpcdHBsYXQtXHUwMDNlcmVzdW1lXHRcdD0gbW90b3Jjb21tX3Jlc3VtZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI1MS1cdHBsYXQtXHUwMDNlZmxhZ3NcdFx0PSBTVE1NQUNfRkxBR19UU09fRU4gfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI1NzpzdGF0aWMgdm9pZCBtb3RvcmNvbW1fZnJlZV9pcnEodm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI1OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjY0OnN0YXRpYyBpbnQgbW90b3Jjb21tX3NldHVwX2lycShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI2NS1cdFx0XHQgICAgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyOTA6XHRyZXR1cm4gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBtb3RvcmNvbW1fZnJlZV9pcnEsIHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjkxLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI5MzpzdGF0aWMgaW50IG1vdG9yY29tbV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjk0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI5NS1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI5NjpcdHN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI5Ny1cdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHJlcyA9IHt9O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTMwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjMwNDpcdHBsYXQgPSBtb3RvcmNvbW1fZGVmYXVsdF9wbGF0X2RhdGEocGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zMDUtXHRpZiAoIXBsYXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzMxOlx0bW90b3Jjb21tX3Jlc2V0KHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzMyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTMzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM0MDpcdHJldCA9IG1vdG9yY29tbV9lZnVzZV9yZWFkX21hYyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgcHJpdiwgcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNDEtXHRpZiAocmV0ID09IC1FTk9FTlQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNTE6XHRyZXQgPSBtb3RvcmNvbW1fc2V0dXBfaXJxKHBkZXYsIFx1MDAyNnJlcywgcGxhdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNTItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM1NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM1NTpcdG1vdG9yY29tbV9pbml0KHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzU2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM2MjpzdGF0aWMgdm9pZCBtb3RvcmNvbW1fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzYzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNjc6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGR3bWFjX21vdG9yY29tbV9wY2lfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2OC1cdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01PVE9SQ09NTSwgMHg2ODAxKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM3MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzcxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkd21hY19tb3RvcmNvbW1fcGNpX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM3MzpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZHdtYWNfbW90b3Jjb21tX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzQtXHQubmFtZSA9IERSSVZFUl9OQU1FLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6Mzc1Olx0LmlkX3RhYmxlID0gZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM3NjpcdC5wcm9iZSA9IG1vdG9yY29tbV9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM3NzpcdC5yZW1vdmUgPSBtb3RvcmNvbW1fcmVtb3ZlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzc4LVx0LmRyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozODM6bW9kdWxlX3BjaV9kcml2ZXIoZHdtYWNfbW90b3Jjb21tX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzg0LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT04Mj1vYmotJChDT05GSUdfTUlDUk9TRU1JX1BIWSlcdCYjNDM7PSBtc2NjL1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19NT1RPUkNPTU1fUEhZKVx0JiM0Mzs9IG1vdG9yY29tbS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtODQtb2JqLSQoQ09ORklHX05BVElPTkFMX1BIWSlcdCYjNDM7PSBuYXRpb25hbC5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTEwMDY9c3RhdGljIGludCB5dDg1MzFfc2V0X2RzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTEwMTItXHQvKiBzZXQgcmdtaWkgcnggY2xrIGRyaXZlciBzdHJlbmd0aCAqL1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjEwMTM6XHRpZiAoIWRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsIFwmIzM0O21vdG9yY29tbSxyeC1jbGstZHJ2LW1pY3JvYW1wXCYjMzQ7LCBcdTAwMjZ2YWwpKSB7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTAxNC1cdFx0ZHMgPSB5dDg1MzFfZ2V0X2RzX21hcChwaHlkZXYsIHZhbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTEwMzAtXHQvKiBzZXQgcmdtaWkgcnggZGF0YSBkcml2ZXIgc3RyZW5ndGggKi9cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxMDMxOlx0aWYgKCFkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCBcJiMzNDttb3RvcmNvbW0scngtZGF0YS1kcnYtbWljcm9hbXBcJiMzNDssIFx1MDAyNnZhbCkpIHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xMDMyLVx0XHRkcyA9IHl0ODUzMV9nZXRfZHNfbWFwKHBoeWRldiwgdmFsKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MTA2Mz1zdGF0aWMgaW50IHl0ODUyMV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xMTEzLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjExMTQ6XHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTMyKGRldiwgXCYjMzQ7bW90b3Jjb21tLGNsay1vdXQtZnJlcXVlbmN5LWh6XCYjMzQ7LCBcdTAwMjZmcmVxKSlcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xMTE1LVx0XHRmcmVxID0gWVRQSFlfRFRTX09VVFBVVF9DTEtfRElTO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0xMTgwPXN0YXRpYyBpbnQgeXQ4NTMxX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTExODUtXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTE4NjpcdGlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCBcJiMzNDttb3RvcmNvbW0sY2xrLW91dC1mcmVxdWVuY3ktaHpcJiMzNDssIFx1MDAyNmZyZXEpKVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTExODctXHRcdGZyZXEgPSBZVFBIWV9EVFNfT1VUUFVUX0NMS19ESVM7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTE2NzY9c3RhdGljIGludCB5dDg1MjFfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTY5Mi1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxNjkzOlx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDttb3RvcmNvbW0sYXV0by1zbGVlcC1kaXNhYmxlZFwmIzM0OykpIHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xNjk0LVx0XHQvKiBkaXNhYmxlIGF1dG8gc2xlZXAgKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTcwMC1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxNzAxOlx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDttb3RvcmNvbW0sa2VlcC1wbGwtZW5hYmxlZFwmIzM0OykpIHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xNzAyLVx0XHQvKiBlbmFibGUgUlhDIGNsb2NrIHdoZW4gbm8gd2lyZSBwbHVnICovXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTE4MTc9c3RhdGljIGludCB5dDg1MzFfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTgyNS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxODI2Olx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDttb3RvcmNvbW0sYXV0by1zbGVlcC1kaXNhYmxlZFwmIzM0OykpIHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODI3LVx0XHQvKiBkaXNhYmxlIGF1dG8gc2xlZXAgKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTgzNC1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxODM1Olx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDttb3RvcmNvbW0sa2VlcC1wbGwtZW5hYmxlZFwmIzM0OykpIHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODM2LVx0XHQvKiBlbmFibGUgUlhDIGNsb2NrIHdoZW4gbm8gd2lyZSBwbHVnICovXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTE4NTM9c3RhdGljIGludCB5dDg1MjJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTg3MC1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxODcxOlx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDttb3RvcmNvbW0sYXV0by1zbGVlcC1kaXNhYmxlZFwmIzM0OykpIHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODcyLVx0XHQvKiBkaXNhYmxlIGF1dG8gc2xlZXAgKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTg4OC0gKiBOT1RFOiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCB0byBhZGFwdCB0byBWRjIgd2l0aCBKSDcxMTAgU29DLiBQbGVhc2VcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxODg5OiAqIGtlZXAgXCYjMzQ7bW90b3Jjb21tLHR4LWNsay1hZGotZW5hYmxlZFwmIzM0OyBub3QgZXhpc3QgaW4gZHRzIHdoZW4gdGhlIHNvYyBpcyBub3RcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODkwLSAqIEpINzExMC5cbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MTg5Mj1zdGF0aWMgdm9pZCB5dDg1MzFfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE5MDEtXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTkwMjpcdGlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXCYjMzQ7bW90b3Jjb21tLHR4LWNsay1hZGotZW5hYmxlZFwmIzM0OykpXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTkwMy1cdFx0dHhfY2xrX2Fkal9lbmFibGVkID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTkwNy1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxOTA4Olx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDttb3RvcmNvbW0sdHgtY2xrLTEwLWludmVydGVkXCYjMzQ7KSlcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xOTA5LVx0XHR0eF9jbGtfMTBfaW52ZXJ0ZWQgPSB0cnVlO1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE5MTA6XHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFwmIzM0O21vdG9yY29tbSx0eC1jbGstMTAwLWludmVydGVkXCYjMzQ7KSlcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xOTExLVx0XHR0eF9jbGtfMTAwX2ludmVydGVkID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxOTEyOlx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDttb3RvcmNvbW0sdHgtY2xrLTEwMDAtaW52ZXJ0ZWRcJiMzNDspKVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE5MTMtXHRcdHR4X2Nsa18xMDAwX2ludmVydGVkID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MzA0MT1zdGF0aWMgaW50IHl0ODgyMV9yZXN1bWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA2Mi1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMDYzOnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtb3RvcmNvbW1fcGh5X2RydnNbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMDY0LVx0e1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTUwLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxNTE6bW9kdWxlX3BoeV9kcml2ZXIobW90b3Jjb21tX3BoeV9kcnZzKTtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTUyLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0zMTU2PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzE1Ny1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTU4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbW90b3Jjb21tX3RibFtdID0ge1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxNTktXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4NTExKSB9LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTY3LVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxNjg6TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBtb3RvcmNvbW1fdGJsKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE3MTEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgdGhlIGBtb3RvcmNvbW1gIFBIWSBEcml2ZXIgaW4gU3l6a2FsbGVyKioKCk9rYXksIHNvIHRoZSBgbW90b3Jjb21tYCBQSFkgZHJpdmVyIGlzIHJlZ2lzdGVyZWQgd2l0aCBgbW9kdWxlX3BoeV9kcml2ZXJgLiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgaG93IGRvIEkgZ2V0IFN5emthbGxlciB0byBpbnRlcmFjdCB3aXRoIGl0PyBJZGVhbGx5LCB0aGVyZSB3b3VsZCBiZSBhIGdlbmVyaWMgTURJTyBkZXZpY2UgaW5zdGFudGlhdG9yLCBidXQgYXMgSSByZWNhbGwsIFN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIHRoYXQuIFdlIGFyZSwgYWZ0ZXIgYWxsLCB0YWxraW5nIGFib3V0IFBIWXMgd2hpY2ggYXJlIHVzdWFsbHkgY3JlYXRlZCB3aGVuIGEgTUFDIGRyaXZlciBwcm9iZXMgdGhlIE1ESU8gYnVzLgoKV2FpdCwgYXJlIHRoZXJlIGFueSBuZXRsaW5rIGhvb2tzIHRoYXQgY2FuIGhlbHAgaGVyZT8gQ291bGQgc29tZXRoaW5nIGxpa2UgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAgYmUgdXNlZnVsPyBObywgdGhhdCYjMzk7cyBub3QgdGhlIHJpZ2h0IHBhdGguIFdoYXQgYWJvdXQgYW55IG9mIHRoZSBvdGhlciBuZXQgZGV2aWNlcz8gYG1hY3NlY2AsIGBkdW1teWAsIGFuZCBgdmV0aGAgYXJlIG91dCDigJMgdGhleSBieXBhc3MgTURJTyBhbHRvZ2V0aGVyLiBXaGF0IGFib3V0IHNvbWV0aGluZyBsaWtlIGB0dW5gIG9yIGB0YXBgPyBOb3BlLCBub3QgbGlrZWx5LgoKSG1tLCB3aGF0IGFib3V0IERTQSwgRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZT8gU3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgRFNBIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBIb3dldmVyLCBEU0Egb2Z0ZW4gcmVsaWVzIG9uIGRldmljZSB0cmVlIG9yIHBsYXRmb3JtLXNwZWNpZmljIGRhdGEuIEl04oCZcyB1c3VhbGx5IHRpZWQgZGlyZWN0bHkgdG8gdGhlIGhhcmR3YXJlLgoKQnV0IHdhaXQsIHRoZXJlJiMzOTtzIGEgZ2xpbW1lciBvZiBob3BlISBUaGUgYGRzYV9sb29wYCBkcml2ZXIgaXMgYSBtb2NrIERTQSBkcml2ZXIsIGlzbiYjMzk7dCBpdD8gSWYgaXQmIzM5O3MgYSBtb2NrIGRyaXZlciwgaXQgbWF5IGhhdmUgYSBzaW1wbGlmaWVkIGluc3RhbnRpYXRpb24gcGF0aC4gRG9lcyAqdGhhdCogZHJpdmVyIGludGVyYWN0IHdpdGggTURJTz8gSWYgc28sIGNvdWxkIEkgcG90ZW50aWFsbHkgbGV2ZXJhZ2UgdGhlIGBkc2FfbG9vcGAgZHJpdmVyIHRvIGluc3RhbnRpYXRlIGFyYml0cmFyeSBQSFlzLCBpbmNsdWRpbmcgdGhlIGBtb3RvcmNvbW1gIGRyaXZlcj8gVGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IHByb21pc2luZyBhdmVudWUgdG8gZXhwbG9yZS4gVGltZSB0byBjaGVjayBpZiBgZHNhX2xvb3BgIGNhbiBiZSBsZXZlcmFnZWQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RzYV9sb29wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9Mz1iY20tc2YyLW9ianNcdFx0XHQ6PSBiY21fc2YyLm8gYmNtX3NmMl9jZnAub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX05FVF9EU0FfTE9PUClcdCYjNDM7PSBkc2FfbG9vcC5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtNS1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFx0JiM0Mzs9IGtzODk5NS5vXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTpzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNi1cdHUxNiBtZW1iZXJzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzA6c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMS1cdGNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU6ZW51bSBkc2FfbG9vcF9taWJfY291bnRlcnMge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzYtXHREU0FfTE9PUF9QSFlfUkVBRF9PSyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzOnN0cnVjdCBkc2FfbG9vcF9wb3J0IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0Olx0c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBtaWJbX19EU0FfTE9PUF9DTlRfTUFYXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ1LVx0dTE2IHB2aWQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTpzdHJ1Y3QgZHNhX2xvb3BfcHJpdiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MC1cdHN0cnVjdCBtaWlfYnVzXHQqYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEtXHR1bnNpZ25lZCBpbnRcdHBvcnRfYmFzZTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUyOlx0c3RydWN0IGRzYV9sb29wX3ZsYW4gdmxhbnNbVkxBTl9OX1ZJRF07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01My1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NDpcdHN0cnVjdCBkc2FfbG9vcF9wb3J0IHBvcnRzW0RTQV9NQVhfUE9SVFNdO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTUtfTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTc6c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU4LVx0LyogTXVzdCBiZSBmaXJzdCwgc3VjaCB0aGF0IGRzYV9yZWdpc3Rlcl9zd2l0Y2goKSBjYW4gYWNjZXNzIHRoaXNcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjY3OnN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IGRzYV9sb29wX21pYnNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY4LVx0W0RTQV9MT09QX1BIWV9SRUFEX09LXVx0PSB7IFwmIzM0O3BoeV9yZWFkX29rXCYjMzQ7LCB9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTc1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo3NzplbnVtIGRzYV9sb29wX2RldmxpbmtfcmVzb3VyY2VfaWQge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzgtXHREU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX05PTkUsICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjgyOnN0YXRpYyB1NjQgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0KHZvaWQgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04My17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IHByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04NS1cdHVuc2lnbmVkIGludCBpLCBjb3VudCA9IDA7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NjpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6OTc6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OS1cdHN0cnVjdCBkZXZsaW5rX3Jlc291cmNlX3NpemVfcGFyYW1zIHNpemVfcGFyYW1zO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTAwOlx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEwMS1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE1LVx0XHRcdFx0XHQgICAgICBEU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX1ZUVSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjExNjpcdFx0XHRcdFx0ICAgICAgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0LCBwcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTI1OnN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgZHNhX2xvb3BfZ2V0X3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNi1cdFx0XHRcdFx0XHQgICBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzQ6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzUte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNy1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzOS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRzLVx1MDAzZW51bV9wb3J0czsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDA6XHRcdG1lbWNweShwcy1cdTAwM2Vwb3J0c1tpXS5taWIsIGRzYV9sb29wX21pYnMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDE6XHRcdCAgICAgICBzaXplb2YoZHNhX2xvb3BfbWlicykpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0NC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0NTpcdHJldHVybiBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhkcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDYtfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ3LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTUyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTUzOnN0YXRpYyBpbnQgZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHNzZXQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2MC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2MTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYyLVx0XHRcdFx0IHUzMiBzdHJpbmdzZXQsIHVpbnQ4X3QgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjMte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTY0Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2NS1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NDpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc1LVx0XHRcdFx0ICAgICAgIHVpbnQ2NF90ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc2LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NzpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzgtXHR1bnNpZ25lZCBpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODQ6c3RhdGljIGludCBkc2FfbG9vcF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg1LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODctXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE5OC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5OTpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAwLVx0XHRcdCAgICAgIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMS17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDI6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAzLVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMTU6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTYtXHRcdFx0XHQgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjMyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjMzOnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM0LVx0XHRcdFx0XHR1OCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNDA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDEtXHRcdFx0XHRcdGJvb2wgdmxhbl9maWx0ZXJpbmcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQ5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjUwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjUxLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4sXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU1LVx0Ym9vbCBwdmlkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTg6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTktXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjgyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjgzOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg0LVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg2LVx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXHUwMDNlZmxhZ3MgXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fVU5UQUdHRUQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODc6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg4LVx0dTE2IHB2aWQgPSBwcy1cdTAwM2Vwb3J0c1twb3J0XS5wdmlkO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg5LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MDpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMi1cdFx0XHRcdCAgICBpbnQgbmV3X210dSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMy17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzIxOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI3LVx0XHRcdFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzMzLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM1Olx0LmdldF90YWdfcHJvdG9jb2xcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM2Olx0LnNldHVwXHRcdFx0PSBkc2FfbG9vcF9zZXR1cCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNzpcdC50ZWFyZG93blx0XHQ9IGRzYV9sb29wX3RlYXJkb3duLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM4Olx0LmdldF9zdHJpbmdzXHRcdD0gZHNhX2xvb3BfZ2V0X3N0cmluZ3MsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzk6XHQuZ2V0X2V0aHRvb2xfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDA6XHQuZ2V0X3NzZXRfY291bnRcdFx0PSBkc2FfbG9vcF9nZXRfc3NldF9jb3VudCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MTpcdC5nZXRfZXRodG9vbF9waHlfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDI6XHQucGh5X3JlYWRcdFx0PSBkc2FfbG9vcF9waHlfcmVhZCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MzpcdC5waHlfd3JpdGVcdFx0PSBkc2FfbG9vcF9waHlfd3JpdGUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDQ6XHQucG9ydF9icmlkZ2Vfam9pblx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ1Olx0LnBvcnRfYnJpZGdlX2xlYXZlXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ2Olx0LnBvcnRfc3RwX3N0YXRlX3NldFx0PSBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDc6XHQucG9ydF92bGFuX2ZpbHRlcmluZ1x0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ4Olx0LnBvcnRfdmxhbl9hZGRcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ5Olx0LnBvcnRfdmxhbl9kZWxcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUwOlx0LnBvcnRfY2hhbmdlX210dVx0PSBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTE6XHQucG9ydF9tYXhfbXR1XHRcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUyOlx0LnBoeWxpbmtfZ2V0X2NhcHNcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1My19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1Ni17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1ODpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1OS1cdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODItXHRkcy1cdTAwM2VkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MzpcdGRzLVx1MDAzZW9wcyA9IFx1MDAyNmRzYV9sb29wX2RyaXZlcjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cdGRzLVx1MDAzZXByaXYgPSBwcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTc6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTgte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk5LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQwMDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQwMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIzOnN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgZHNhX2xvb3BfZHJ2ID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI0LVx0Lm1kaW9kcnYuZHJpdmVyXHQ9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjYtXHR9LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI3Olx0LnByb2JlXHQ9IGRzYV9sb29wX2Rydl9wcm9iZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyODpcdC5yZW1vdmVcdD0gZHNhX2xvb3BfZHJ2X3JlbW92ZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyOTpcdC5zaHV0ZG93biA9IGRzYV9sb29wX2Rydl9zaHV0ZG93bixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMC19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDMyOnN0YXRpYyBpbnQgZHNhX2xvb3BfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMy1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM0LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcdHJldHVybiBkcnYgPT0gXHUwMDI2ZHNhX2xvb3BfZHJ2Lm1kaW9kcnYuZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNy1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzODpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0ODpcdHN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgZHNhX2xvb3BfcGRhdGEgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDktXHRcdC5jZCA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFx1MDAyNmRzYV9sb29wX3BkYXRhO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4MjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4NzpcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTQ6XHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk2Olx0XHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5Ny1cdFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDItfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTAzOm1vZHVsZV9pbml0KGRzYV9sb29wX2luaXQpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA1OnN0YXRpYyB2b2lkIF9fZXhpdCBkc2FfbG9vcF9leGl0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3Olx0bWRpb19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA4Olx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDktXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTI6bW9kdWxlX2V4aXQoZHNhX2xvb3BfZXhpdCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4ODU2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTGltaXRhdGlvbnMgYW5kIFBvc3NpYmlsaXRpZXMgZm9yIEZ1enppbmcgdGhlIHl0ODUyMSBQSFkgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBkc2FfbG9vcGAgZHJpdmVyLCBhbmQgaXQmIzM5O3MgZXNzZW50aWFsbHkgYSBwbGFjZWhvbGRlciwgYSBtb2NrIERTQSBzd2l0Y2guIEl0IGRvZXNuJiMzOTt0IGJvdGhlciB3aXRoIGFjdHVhbCBQSFkgaW5zdGFudGlhdGlvbiwganVzdCByZWdpc3RlcnMgdGhpcyBmYWtlIHN3aXRjaC4gTm93LCBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0byBhcHByb2FjaCBmdXp6aW5nIHRoZSBgeXQ4NTIxYCBQSFkgZHJpdmVyLCBhbmQgdGhlIGltbWVkaWF0ZSBpc3N1ZSBpcyB0aGUgbGFjayBvZiBzcGVjaWZpYyBoYXJkd2FyZSDigJMgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHNlZW0gdG8gaGF2ZSBhbnkgbW90b3Jjb21tIFBIWXMgYXZhaWxhYmxlLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IGh1cmRsZS4KClNvLCB0aGUgcXVlc3Rpb24gaXM6IGhvdyBjYW4gSSBldmVuICpyZWFjaCogc29tZXRoaW5nIGxpa2UgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlPyBUaGUgb25seSBwYXRod2F5IEkgc2VlIGlzIHRocm91Z2ggYSBzb2Z0d2FyZSBNRElPIGJ1cy4gSWYgSSBjb3VsZCBtYW5pcHVsYXRlIHRoYXQgc29mdHdhcmUgYnVzIHRvIHByZXNlbnQgZmFrZWQgUEhZIElEcywgdGhlbiB0aGUgYHl0ODUyMWAgZHJpdmVyICpjb3VsZCogcHJvYmUgYW5kIGJlY29tZSBhY3RpdmUuIFRoYXQgd291bGQgYmUgdGhlIGVudHJ5IHBvaW50IEkgbmVlZC4KCk5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSBpZiBzeXprYWxsZXIgaGFzIGFuIE1ESU8gZnV6emVyLiBEb2VzIGl0IG9mZmVyIHRoZSBtZWFucyB0byBmdXp6IHRoZSBNRElPIGludGVyZmFjZT8gSSBuZWVkIHRvIGNoZWNrIHRoZSBrZXJuZWwmIzM5O3Mgc3l6a2FsbGVyIGNvdmVyYWdlLCBhbmQgbG9vayBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byBgbWRpb2AuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGV4aXN0aW5nIHdvcmsgaW4gdGhpcyBhcmVhIHRvIGxldmVyYWdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzMTkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgc3VtbWFyaXplZCBmcm9tIHRoYXQgcHJvbXB0LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBNRElPIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgbGFuZHNjYXBlIGZvciBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29yayBQSFkgZHJpdmVycy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGFueXRoaW5nIHJlbGF0ZWQgdG8gYG1kaW9gLiBJJiMzOTttIGdvaW5nIHRvIHNjYW4gdGhlIGBkcml2ZXJzL25ldC9waHkvYCBkaXJlY3RvcnkuIFRoZSBnb2FsIGlzIHRvIHNlZSBpZiBhbnkgZXhpc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgb3IgY29tcG9uZW50cyBhcmUgYWxyZWFkeSBpbiBwbGFjZSB0aGF0IGNvdWxkIGJlIGxldmVyYWdlZCBmb3IgZnV6emluZyB0aGUgTURJTyBpbnRlcmZhY2UuIFRoaXMgY291bGQgaW52b2x2ZSBsb29raW5nIGZvciBleGlzdGluZyBkcml2ZXJzIHRoYXQgdXRpbGl6ZSB0aGUgTURJTyBpbnRlcmZhY2UsIGFueSBoZWxwZXIgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gTURJTyBjb21tdW5pY2F0aW9uIHRoYXQgbWlnaHQgYmUgc3VzY2VwdGlibGUgdG8gaW5wdXQgdnVsbmVyYWJpbGl0aWVzLCBvciBldmVuIHByZS1leGlzdGluZyBmdXp6ZXIgaGFybmVzc2VzIHRoYXQgaGF2ZSBiZWVuIHBhcnRpYWxseSBpbXBsZW1lbnRlZC4gVGhlIGlkZWEgaXMgdG8gZmluZCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZWZmaWNpZW50bHkgcHJpb3JpdGl6ZSB0aGUgaW52ZXN0aWdhdGlvbi4gSSBkb24mIzM5O3Qgd2FudCB0byByZWludmVudCB0aGUgd2hlZWwsIGlmIGF0IGFsbCBwb3NzaWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXp6JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTgyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEtlcm5lbCBUZXN0aW5nIFRvb2xib3gqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUga2VybmVsIGZ1enppbmcgaW5mcmFzdHJ1Y3R1cmUsIHBhcnRpY3VsYXJseSB3aGF0IHN5emthbGxlciBjYW4gbGV2ZXJhZ2UgZm9yIGVtdWxhdGluZyB2YXJpb3VzIGhhcmR3YXJlIGNvbXBvbmVudHMuIEl0JiMzOTtzIHJlYWxseSBxdWl0ZSBpbXByZXNzaXZlIGhvdyBpdCBjYW4gdXNlIGB2aGNpYCBmb3IgVVNCIOKAkyB0aGF0JiMzOTtzIGEgY2xldmVyIHNvbHV0aW9uLiBBbmQgYG1hYzgwMjExX2h3c2ltYCBmb3IgV2lGaSwgcGVyZmVjdC4gVGhlbiwgZm9yIGdyYXBoaWNzLCBgdmttc2Agd2l0aCBEUk0gaXMgYSBzb2xpZCBjaG9pY2UuIE9mIGNvdXJzZSwgYHVpbnB1dGAgaGFuZGxlcyBpbnB1dCByZWFsbHkgd2VsbCwgYW5kIHdlIGhhdmUgYHNuZC1kdW1teWAgZm9yIHNvdW5kLCB3aGljaCBrZWVwcyB0aGluZ3Mgc2ltcGxlLiBGb3IgbmV0d29ya2luZyBpbnRlcmZhY2VzLCB0aGUgZmxleGliaWxpdHkgaXMgdGhlIHJlYWwgc3RyZW5ndGgg4oCTIGB2Y2FuYCBoYW5kbGVzIENBTiwgdGhlbiB0aGVyZSYjMzk7cyBgZHVtbXlgLCBgdmV0aGAsIGB0dW5gLCBgdGFwYCwgYW5kIGBuZXRkZXZzaW1gLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gbWFrZSBhIG5vdGUgb2YgdGhpcy4gSSB3b25kZXIsIGRvZXMgYG5ldGRldnNpbWAgYWN0dWFsbHkgc2ltdWxhdGUgTURJTyBhbmQgUEhZcyB0byBnZXQgdXMgY2xvc2VyIHRvIHRlc3RpbmcgdGhvc2UgcGFydHMgb2YgdGhlIHN0YWNrPyBJIHNob3VsZCByZWFsbHkgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgdGhlcmUsIHNlZSBpZiB3ZSBnZXQgdGhlIGZ1bGwgcGljdHVyZSBvciBub3QuIEdvdHRhIGRpZyBpbnRvIHRoYXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE0NTU9c3RhdGljIGludCBfX25zaW1fZGV2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE0NzQtXHRcdGF0dHJzLmZsYXZvdXIgPSBERVZMSU5LX1BPUlRfRkxBVk9VUl9QSFlTSUNBTDtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNDc1Olx0XHRhdHRycy5waHlzLnBvcnRfbnVtYmVyID0gcG9ydF9pbmRleCAmIzQzOyAxO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE0NzYtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0zMjI9c3RydWN0IG5zaW1fZGV2IHtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzQxLVx0c3RydWN0IG11dGV4IHByb2dzX2xpc3RfbG9jaztcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozNDI6XHRzdHJ1Y3QgbmV0ZGV2X3BoeXNfaXRlbV9pZCBzd2l0Y2hfaWQ7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzQzLVx0c3RydWN0IGxpc3RfaGVhZCBwb3J0X2xpc3Q7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjIxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgUmVhY2hpbmcgdGhlIGB5dDg1MjFfZ2V0X2ZlYXR1cmVzYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0byB0cmlnZ2VyIHRoYXQgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYG1vdG9yY29tbS5jYCBQSFkgZHJpdmVyLiBJdCBzZWVtcyBwcmV0dHkgbG9ja2VkIGRvd24gaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYW5kIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHdoeS4KCkZpcnN0LCBJIHJ1bGVkIG91dCBgbmV0ZGV2c2ltYCDigJMgaXQmIzM5O3Mgbm90IGEgY29udGVuZGVyIGZvciB0aGlzLiBUaGVuIEkgY29uc2lkZXJlZCBgZml4ZWQtcGh5YCwgd2hpY2ggYWxsb3dzIGluc3RhbnRpYXRpbmcgUEhZcywgYnV0IHRoZXkgYXJlIGFsbCBmaXhlZCwgYW5kIGRvbiYjMzk7dCBtYXRjaCB0aGUgYG1vdG9yY29tbWAgdHlwZS4gSSBhbHNvIGNvbnRlbXBsYXRlZCBhIHVzZXIgc3BhY2UgcHJvZ3JhbSBjcmVhdGluZyBhIHZpcnR1YWwgTURJTyBidXMgYW5kIGluamVjdGluZyBkZXZpY2VzLiBUaGF04oCZcyBwcm9iYWJseSB0b28gY29udm9sdXRlZCwgZXZlbiBpZiBwb3NzaWJsZS4KCkkgbG9va2VkIGF0IGBtZGlvLWdwaW9gLCB0aGlua2luZyBtYXliZSBJIGNvdWxkIGRyaXZlIGl0IHdpdGggR1BJT3MsIGJ1dCBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBpbnRlcmFjdCB3aXRoIEdQSU9zIGluIHRoYXQgd2F5IHRvIGVtdWxhdGUgYW4gTURJTyBwcm90b2NvbC4gU28sIHNjcmFwIHRoYXQgaWRlYS4gVGhlbiwgSSBjb25zaWRlcmVkIHRoZSBgU0lPQ1NNSUlSRUdgIGlvY3RsLiBJdCYjMzk7cyBhIHBvc3NpYmlsaXR5LCByaWdodD8gSWYgYSBuZXR3b3JrIGRldmljZSBoYXMgYW4gTURJTyBidXMsIEkgY291bGQgdXNlIGl0IHRvIHdyaXRlIHRvIFBIWSByZWdpc3RlcnMuIEJ1dCwgdGhlIHJ1YiBpcyB0aGF0IHRoZSBQSFkgZHJpdmVyIGhhcyB0byBiZSBib3VuZCB0byB0aGUgUEhZIGRldmljZSAqZmlyc3QqLiBBbmQgd2l0aG91dCB0aGUgaGFyZHdhcmUgcHJlc2VudCwgdGhlIFBIWSBkZXZpY2UgaXNuJiMzOTt0IGNyZWF0ZWQsIGFuZCB0aHVzIHRoZSBkcml2ZXIgaXNuJiMzOTt0IGJvdW5kLgoKSSBicmllZmx5IGNvbnNpZGVyZWQgYEkyQ2Agb3IgYFNQSWAsIGJ1dCBxdWlja2x5IGRpc21pc3NlZCB0aGVtIOKAkyB0aGlzIGlzIGFuIE1ESU8gZGV2aWNlLiBXaGF0IGFib3V0IHRoZSBkZXZpY2UgdHJlZT8gQ2FuIEkgYmluZCB0aGUgZHJpdmVyIHRoZXJlPyBTYWRseSwgU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGFsbG93IGZvciBkeW5hbWljIG1vZGlmaWNhdGlvbiBvZiB0aGUgZGV2aWNlIHRyZWUuCgpTbywgaXQmIzM5O3Mgc3RhcnRpbmcgdG8gbG9vayBwcmV0dHkgYmxlYWsuIEl0IGFwcGVhcnMgdGhhdCByZWFjaGluZyBgeXQ4NTIxX2dldF9mZWF0dXJlc2AgaW4gZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24gaXMgcHJldHR5IG11Y2ggaW1wb3NzaWJsZS4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgYG1vdG9yY29tbWAgc3BlY2lmaWMgZW11bGF0aW9uIGluIFFFTVUuIEkgcXVpY2tseSBzY2FubmVkIHRoZSBjb21tb24gbmV0d29yayBkZXZpY2VzOiBgZTEwMDBgLCBgcnRsODEzOWAsIGB2aXJ0aW8tbmV0YCwgYHBjbmV0YCwgYG5lMmtgLCBgdHVsaXBgLCBgdm14bmV0M2AsIGBpZ2JgLCBldGMuIE5vbmUgb2YgdGhlc2UgdXNlIGBtb3RvcmNvbW1gIFBIWXMuIEkgdGhlbiBjb25zaWRlcmVkIG90aGVyIE1BQ3MgZW11bGF0ZWQgaW4gUUVNVSwgbGlrZSBgZHdtYWNgIChzdG1tYWMpIGluIGVpdGhlciBgaHcvbmV0L2FsbHdpbm5lci1zdW44aS1lbWFjLmNgIG9yIGBody9uZXQvaW14X2ZlYy5jYCwgYnV0IGV2ZW4gdGhleSBkb24mIzM5O3Qgc2VlbSB0byBlbXVsYXRlIGEgYG1vdG9yY29tbWAgUEhZLiBJdCYjMzk7cyBtb3JlIGxpa2VseSB0aGF0IFFFTVUgZW11bGF0ZXMgYSBnZW5lcmljIFBIWSwgbGlrZSBSZWFsdGVrIG9yIE5hdGlvbmFsIFNlbWljb25kdWN0b3IuIExldCBtZSBqdXN0IGRvIGEgcXVpY2sgc2VhcmNoIHRvIG1ha2Ugc3VyZSB0aGVyZSBpcyBubyBtZW50aW9uIG9mIGBtb3RvcmNvbW1gIGluIHRoZSBRRU1VIHNvdXJjZSwgZXZlbiB0aG91Z2ggdGhhdCBpcyB1bmxpa2VseS4KCkFscmlnaHQsIGlzIHRoZXJlIGFub3RoZXIgd2F5IHRvIHRyaWdnZXIgYHl0ODUyMV9nZXRfZmVhdHVyZXNgPyBJIG5lZWQgdG8gdGhpbmsgdGhpcyB0aHJvdWdoLiBJdCYjMzk7cyBhIGNhbGxiYWNrIGZvciBgZ2V0X2ZlYXR1cmVzYCB3aXRoaW4gdGhlIGBwaHlfZHJpdmVyYCBzdHJ1Y3R1cmUuIFNvLCBpdCYjMzk7cyBnb2luZyB0byBiZSBjYWxsZWQgZnJvbSBlaXRoZXIgYHBoeV9wcm9iZWAsIGBwaHlfYXR0YWNoX2RpcmVjdGAsIG9yIGBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3NgLiBCdXQsIGl0IGFsbCBjb21lcyBiYWNrIHRvIHRoZSBzYW1lIHByb2JsZW06IFRoZSBgbW90b3Jjb21tYCBQSFkgZHJpdmVyIG5lZWRzIHRvIGJlIGJvdW5kIHRvIGEgYHBoeV9kZXZpY2VgLiBBbmQgYSBgcGh5X2RldmljZWAgaXMgb25seSBjcmVhdGVkIHdoZW4gdGhlIE1ESU8gYnVzIGlzIHNjYW5uZWQsIGFuZCB0aGUgUEhZIElEIG1hdGNoZXMgYFBIWV9JRF9ZVDg1MTFgIChvciB3aGF0ZXZlciB0aGUgY29ycmVjdCBJRCBhY3R1YWxseSBpcy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgSUQgdG8gYmUgY2VydGFpbikuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BIWV9JRF9ZVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE0LVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE1OiNkZWZpbmUgUEhZX0lEX1lUODUxMVx0XHQweDAwMDAwMTBhXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTY6I2RlZmluZSBQSFlfSURfWVQ4NTIxXHRcdDB4MDAwMDAxMWFcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxNzojZGVmaW5lIFBIWV9JRF9ZVDg1MjJcdFx0MHg0ZjUxZTkyOFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE4OiNkZWZpbmUgUEhZX0lEX1lUODUzMVx0XHQweDRmNTFlOTFiXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTk6I2RlZmluZSBQSFlfSURfWVQ4NTMxU1x0XHQweDRmNTFlOTFhXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MjA6I2RlZmluZSBQSFlfSURfWVQ4ODIxXHRcdDB4NGY1MWVhMTlcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0yMS0vKiBZVDg1MjEvWVQ4NTMxUy9ZVDg4MjEgUmVnaXN0ZXIgT3ZlcnZpZXdcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9ODkwPXN0YXRpYyBpbnQgeXRwaHlfcmdtaWlfY2xrX2RlbGF5X2NvbmZpZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy05MjEtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJOlxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjkyMjpcdFx0aWYgKHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcGh5X2lkICE9IFBIWV9JRF9ZVDg1MzFTKVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTkyMy1cdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTEwNjM9c3RhdGljIGludCB5dDg1MjFfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTExNi1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxMTE3Olx0aWYgKHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcGh5X2lkID09IFBIWV9JRF9ZVDg1MjEpIHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xMTE4LVx0XHRzd2l0Y2ggKGZyZXEpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTE0My1cdFx0fVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjExNDQ6XHR9IGVsc2UgaWYgKHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcGh5X2lkID09IFBIWV9JRF9ZVDg1MzFTKSB7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTE0NS1cdFx0c3dpdGNoIChmcmVxKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTE2NzY9c3RhdGljIGludCB5dDg1MjFfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTcwOS1cdGlmIChwaHlfaW50ZXJmYWNlX2lzX3JnbWlpKHBoeWRldikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTcxMDpcdCAgICBwaHlkZXZfaWRfY29tcGFyZShwaHlkZXYsIFBIWV9JRF9ZVDg1MzFTKSlcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xNzExLVx0XHRyZXQgPSB5dDg1MzFfc2V0X2RzKHBoeWRldik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTMwNjM9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1vdG9yY29tbV9waHlfZHJ2c1tdID0ge1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNjQtXHR7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzA2NTpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MTEpLFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNjYtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7WVQ4NTExIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNzMtXHR7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzA3NDpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MjEpLFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNzUtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7WVQ4NTIxIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwOTMtXHR7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzA5NDpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MjIpLFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwOTUtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7WVQ4NTIyIDEwMCBNZWdhYml0IEV0aGVybmV0XCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTAxLVx0e1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxMDI6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4NTMxKSxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTAzLVx0XHQubmFtZVx0XHQ9IFwmIzM0O1lUODUzMSBHaWdhYml0IEV0aGVybmV0XCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTE1LVx0e1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxMTY6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4NTMxUyksXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzExNy1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtZVDg1MzFTIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxMzItXHR7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzEzMzpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg4MjEpLFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxMzQtXHRcdC5uYW1lXHRcdFx0PSBcJiMzNDtZVDg4MjEgMi41R2JwcyBQSFlcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTMxNTg9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBtb3RvcmNvbW1fdGJsW10gPSB7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE1OTpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MTEpIH0sXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE2MDpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MjEpIH0sXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE2MTpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MjIpIH0sXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE2MjpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MzEpIH0sXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE2MzpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MzFTKSB9LFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxNjQ6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4ODIxKSB9LFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxNjUtXHR7IC8qIHNlbnRpbmVsICovIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMzMTgKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgU3l6a2FsbGVyJiMzOTtzIE1ESU8gRGV2aWNlIENyZWF0aW9uIENhcGFiaWxpdGllcyoqCgpPa2F5LCBzbyB0aGVzZSBkZXZpY2UgSURzIGFyZSBjbGVhcmx5ICpzcGVjaWZpYyouIFRoZSBjaGFsbGVuZ2UsIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlLCBib2lscyBkb3duIHRvIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiBjb25qdXJlIHVwIGEgdmlydHVhbCBNRElPIGRldmljZSB3aXRoIHRoZSBleGFjdCBJRCBJIG5lZWQuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogZG9lcyBzeXprYWxsZXIgaGF2ZSBhbnkgbWVjaGFuaXNtIGZvciB2aXJ0dWFsIE1ESU8gZGV2aWNlIGNyZWF0aW9uICphdCBhbGwqPwoKTGV0JiMzOTtzIHNlZS4gSSByZW1lbWJlciBpdCBsZXZlcmFnZXMgYSB2YXJpZXR5IG9mIG5ldHdvcmsgZGV2aWNlcyBmb3IgZnV6emluZzogYHR1bmAsIGB0YXBgLCBgdmV0aGAsIGBtYWNzZWNgLCB0aGUgd2hvbGUgYWxwaGFiZXQgc291cCBvZiB2aXJ0dWFsIG5ldHdvcmtpbmcgc3R1ZmYuLi4gYHZjYW5gLCBgdnhjYW5gLCBgZHVtbXlgLCBgbmxtb25gLCBgZ2VuZXZlYCwgYG1hY3ZsYW5gLCBgaXB2bGFuYCwgYGJyaWRnZWAsIGBib25kYCwgYHRlYW1gLCBgdmxhbmAsIGB3aXJlZ3VhcmRgLCBgYmF0YWR2YCwgYGhzcmAsIGB4ZnJtYCwgYG5ldGRldnNpbWAsIGBiYXJldWRwYCwgYGFtdGAsIGB3d2FuYCwgYG1jdHBgLCBgcXJ0cmAsIGBjYW5gLCBgYmx1ZXRvb3RoYCwgYG5mY2AsIGBpZWVlODAyMTU0YCwgYG1hYzgwMjExX2h3c2ltYCwgYHZoY2lgLCBgdWlucHV0YCwgYHNuZC1kdW1teWAsIGB2a21zYCwgYGxvb3BiYWNrYC4gVGhhdCYjMzk7cyBhIGNvbXByZWhlbnNpdmUgbGlzdC4gQnV0LCByZXZpZXdpbmcgdGhlbSwgKm5vbmUqIG9mIHRob3NlIHNlZW0gZGVzaWduZWQgdG8gY3JlYXRlIE1ESU8gZGV2aWNlcyB3aXRoIGFyYml0cmFyeSBJRHMuIFRoZXkmIzM5O3JlIGZvY3VzZWQgb24gb3RoZXIgbmV0d29ya2luZyBsYXllcnMuCgpIb2xkIG9uLCB0aG91Z2guIFRoZSBgZHNhX2xvb3BgIGRyaXZlciBpcyByaW5naW5nIGEgYmVsbC4gSSBzZWVtIHRvIHJlY2FsbCBpdCBzaW11bGF0aW5nIGEgc3dpdGNoLiBDb3VsZCBpdCBiZSBjcmVhdGluZyBQSFlzIGFzIHBhcnQgb2YgdGhhdCBtb2NrLXVwPyBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhhdC4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgc3BlY2lmaWNhbGx5IGxvb2sgYXQgaG93IHRoZSBgZHNhX2xvb3BgIGRyaXZlciBjcmVhdGVzIGl0cyB2aXJ0dWFsIHN3aXRjaCBhbmQgYXNzb2NpYXRlZCBkZXZpY2VzLiBUaGUga2V5IGZ1bmN0aW9uIHRvIGV4YW1pbmUgd291bGQgYmUgYGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldmAgaW4gYGRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jYC4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIGlzIHRoZSBrZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQzOD1zdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDY6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQ4Mj1zdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3Olx0cmV0ID0gZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODgtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDI4OQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldmAgZnVuY3Rpb24uIEkmIzM5O20gZ29pbmcgdG8gYXBwcm9hY2ggdGhpcyB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQsIGxpa2UgbW9zdCBtb2Rlcm4gRFNBIGNvZGUsIGl0JiMzOTtzIGJ1aWxkaW5nIG9uIHRoZSBleGlzdGluZyBmb3VuZGF0aW9uYWwgc3RydWN0dXJlcyBhbmQgYWJzdHJhY3Rpb25zLiBNeSBpbml0aWFsIGV4cGVjdGF0aW9ucyBhcmUgdGhhdCBpdCB3aWxsIGJlIHNldHRpbmcgdXAgYSBuZXcgdmlydHVhbCBkZXZpY2UgcmVwcmVzZW50aW5nIGEgc3dpdGNoLCBsaWtlbHkgYW4gaW50ZXJuYWwgb25lLCBhbmQgcHJvYmFibHkgY29uZmlndXJpbmcgdGhlIE1ESU8gKE1hbmFnZW1lbnQgRGF0YSBJbnB1dC9PdXRwdXQpIGludGVyZmFjZSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgc3dpdGNoJiMzOTtzIFBIWXMgKFBoeXNpY2FsIExheWVyIFRyYW5zY2VpdmVycykuCgpJ4oCZbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6CgoqICAgKipEZXZpY2UgQWxsb2NhdGlvbjoqKiBIb3cgaXQgYWxsb2NhdGVzIHRoZSBuZXcgYHN0cnVjdCBkc2Ffc3dpdGNoYCAob3Igc2ltaWxhcikgc3RydWN0dXJlLiBJcyBpdCB1c2luZyB0aGUgc3RhbmRhcmQgYGt6YWxsb2NgIHBhdHRlcm4/IEFyZSB0aGVyZSBhbnkgY3VzdG9tIGFsbG9jYXRvcnM/CiogICAqKk1ESU8gU2V0dXA6KiogVGhlIG1lYXQgb2YgdGhlIG1hdHRlci4gSG93IGlzIHRoZSBNRElPIGJ1cyBiZWluZyBhc3NpZ25lZD8gSXMgaXQgY3JlYXRpbmcgYSBuZXcgTURJTyBidXMgaW5zdGFuY2Ugb3IgcGlnZ3liYWNraW5nIG9uIGFuIGV4aXN0aW5nIG9uZT8gV2hhdCBzcGVjaWZpYyBNRElPIGRyaXZlciBob29rcyAoZS5nLiwgYG1kaW9idXNfcmVnaXN0ZXJgIG9yIGVxdWl2YWxlbnQpIGFyZSB1c2VkPyBBcmUgdGhlcmUgYW55IHNwZWNpYWwgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB0aGUgTURJTyBpbnRlcmZhY2UuIEkgZXhwZWN0IHNvbWUgUEhZIGFkZHJlc3NpbmcgYW5kIHNldHVwIHRvIGhhcHBlbiBoZXJlLgoqICAgKipEU0EgRHJpdmVyIEludGVyYWN0aW9uOioqIEnigJlsbCBiZSBjaGVja2luZyBob3cgdGhlIG5ldyBzd2l0Y2ggZGV2aWNlIGludGVncmF0ZXMgaW50byB0aGUgbWFpbiBEU0EgZHJpdmVyIGZyYW1ld29yay4gSXMgaXQgcmVnaXN0ZXJpbmcgdGhlIHN3aXRjaCB3aXRoIGBkc2FfcmVnaXN0ZXJfc3dpdGNoYCBvciBhIHNpbWlsYXIgZnVuY3Rpb24/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgaG9va3MgYmVpbmcgc2V0IHVwIGZvciBEU0EtbGV2ZWwgb3BlcmF0aW9ucyAoZS5nLiwgVkxBTiBmaWx0ZXJpbmcsIHBvcnQgY29uZmlndXJhdGlvbik/CiogICAqKkVycm9yIEhhbmRsaW5nOioqIEl0JiMzOTtzICpjcml0aWNhbCogdG8gc2VlIGhvdyByb2J1c3QgdGhlIGVycm9yIGhhbmRsaW5nIGlzLiBMb29rIGZvciBjaGVja3MgYWZ0ZXIgZXZlcnkgYWxsb2NhdGlvbiBvciBzeXN0ZW0gY2FsbCwgYW5kIGhvdyBpdCBoYW5kbGVzIGNsZWFudXAgb2YgYWxsb2NhdGVkIHJlc291cmNlcyBpZiBzb21ldGhpbmcgZmFpbHMuIFByb3BlciByZXNvdXJjZSBjbGVhbnVwIGlzIGVzc2VudGlhbC4KKiAgICoqUmVzb3VyY2UgTWFuYWdlbWVudDoqKiBIb3cgaXMgdGhpcyBmdW5jdGlvbiBtYW5hZ2luZyBpdHMgcmVzb3VyY2VzLCBsaWtlIHRoZSBNRElPIGJ1cywgRFNBIHN3aXRjaCBzdHJ1Y3R1cmUsIGFuZCBtZW1vcnk/IEFyZSB0aGVzZSBjb3JyZWN0bHkgY2xlYW5lZCB1cCBvbiBkZXZpY2UgcmVtb3ZhbCBvciBkcml2ZXIgdW5sb2FkPwoKVWx0aW1hdGVseSwgSSBleHBlY3QgdG8gc2VlIGEgZnVuY3Rpb24gdGhhdCwgZ2l2ZW4gYXBwcm9wcmlhdGUgcGFyYW1ldGVycywgY3JlYXRlcyBhIG5ldyBpbnRlcm5hbCBEU0Egc3dpdGNoIGRldmljZSBjYXBhYmxlIG9mIGludGVyYWN0aW5nIHdpdGggaXRzIFBIWXMgdGhyb3VnaCBNRElPLiBUaGUgcXVhbGl0eSBvZiB0aGlzIHNldHVwIGRldGVybWluZXMgaG93IHdlbGwgdGhlIHN3aXRjaCBvcGVyYXRlcy4gVGltZSB0byByZWFkIHRoZSBjb2RlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDQ2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NDY6XHRzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYodm9pZClcbiA0NDc6XHR7XG4gNDQ4Olx0XHRzdGF0aWMgc3RydWN0IGRzYV9sb29wX3BkYXRhIGRzYV9sb29wX3BkYXRhID0ge1xuIDQ0OTpcdFx0XHQuY2QgPSB7XG4gNDUwOlx0XHRcdFx0LnBvcnRfbmFtZXNbMF0gPSBcJiMzNDtsYW4xXCYjMzQ7LFxuIDQ1MTpcdFx0XHRcdC5wb3J0X25hbWVzWzFdID0gXCYjMzQ7bGFuMlwmIzM0OyxcbiA0NTI6XHRcdFx0XHQucG9ydF9uYW1lc1syXSA9IFwmIzM0O2xhbjNcJiMzNDssXG4gNDUzOlx0XHRcdFx0LnBvcnRfbmFtZXNbM10gPSBcJiMzNDtsYW40XCYjMzQ7LFxuIDQ1NDpcdFx0XHRcdC5wb3J0X25hbWVzW0RTQV9MT09QX0NQVV9QT1JUXSA9IFwmIzM0O2NwdVwmIzM0OyxcbiA0NTU6XHRcdFx0fSxcbiA0NTY6XHRcdFx0Lm5hbWUgPSBcJiMzNDtEU0EgbW9ja3VwIGRyaXZlclwmIzM0OyxcbiA0NTc6XHRcdFx0LmVuYWJsZWRfcG9ydHMgPSAweDFmLFxuIDQ1ODpcdFx0XHQubmV0ZGV2ID0gXCYjMzQ7ZXRoMFwmIzM0OyxcbiA0NTk6XHRcdH07XG4gNDYwOlx0XHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuIDQ2MTpcdFx0aW50IHJldCA9IC1FTk9ERVY7XG4gNDYyOlx0XG4gNDYzOlx0XHRidXMgPSBtZGlvX2ZpbmRfYnVzKFwmIzM0O2ZpeGVkLTBcJiMzNDspO1xuIDQ2NDpcdFx0aWYgKFdBUk5fT04oIWJ1cykpXG4gNDY1Olx0XHRcdHJldHVybiByZXQ7XG4gNDY2Olx0XG4gNDY3Olx0XHRzd2l0Y2hfbWRpb2RldiA9IG1kaW9fZGV2aWNlX2NyZWF0ZShidXMsIDMxKTtcbiA0Njg6XHRcdGlmIChJU19FUlIoc3dpdGNoX21kaW9kZXYpKVxuIDQ2OTpcdFx0XHRnb3RvIG91dDtcbiA0NzA6XHRcbiA0NzE6XHRcdHN3aXRjaF9tZGlvZGV2LVx1MDAzZWJ1c19tYXRjaCA9IGRzYV9sb29wX2J1c19tYXRjaDtcbiA0NzI6XHRcdHN3aXRjaF9tZGlvZGV2LVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhID0gXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XG4gNDczOlx0XG4gNDc0Olx0XHRyZXQgPSBtZGlvX2RldmljZV9yZWdpc3Rlcihzd2l0Y2hfbWRpb2Rldik7XG4gNDc1Olx0XHRpZiAocmV0KVxuIDQ3NjpcdFx0XHRtZGlvX2RldmljZV9mcmVlKHN3aXRjaF9tZGlvZGV2KTtcbiA0Nzc6XHRvdXQ6XG4gNDc4Olx0XHRwdXRfZGV2aWNlKFx1MDAyNmJ1cy1cdTAwM2VkZXYpO1xuIDQ3OTpcdFx0cmV0dXJuIHJldDtcbiA0ODA6XHR9XG4gNDgxOlx0XG4gNDgyOlx0c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxuIDQ4MzpcdHtcbiA0ODQ6XHRcdHVuc2lnbmVkIGludCBpO1xuIDQ4NTpcdFx0aW50IHJldDtcbiA0ODY6XHRcbiA0ODc6XHRcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xuIDQ4ODpcdFx0aWYgKHJldClcbiA0ODk6XHRcdFx0cmV0dXJuIHJldDtcbiA0OTA6XHRcbiA0OTE6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE5VTV9GSVhFRF9QSFlTOyBpJiM0MzsmIzQzOylcbiA0OTI6XHRcdFx0cGh5ZGV2c1tpXSA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xuIDQ5MzpcdFxuIDQ5NDpcdFx0cmV0ID0gbWRpb19kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcbiA0OTU6XHRcdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU1NjUKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVU0IgYW5kIE1vdG9yY29tbSBQSFlzOiBBIFF1aWNrIEV4cGxvcmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0JiMzOTtzIHVzaW5nIGEgYGZpeGVkLXBoeWAsIGJ1dCBpdCYjMzk7cyAqbm90KiBjcmVhdGluZyBNb3RvcmNvbW0gUEhZcyBkaXJlY3RseS4gVGhhdCYjMzk7cyBhIGxpdHRsZSB1bnVzdWFsLCBhbmQgaXQmIzM5O3MgZ290IG1lIHRoaW5raW5nLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzLCBpcyB0aGVyZSBldmVuIGFub3RoZXIgd2F5IHRvIGdldCBNRElPIGRldmljZXMgaW50byB0aGUgc3lzdGVtPyBCZXlvbmQgdGhlIG9idmlvdXMuCgpXYWl0IGEgc2Vjb25kLi4uSSYjMzk7bSByZW1lbWJlcmluZyB0aGF0IHN5emthbGxlciBoYXMgc29tZSBgc3l6X3VzYl9jb25uZWN0YCBjYWxscywgbGlrZSBgc3l6X3VzYl9jb25uZWN0X2F0aDlrYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgbWF5YmUgdGhlcmUmIzM5O3MgYSBjb25uZWN0aW9uIHRoZXJlLiBUaGlzIG1ha2VzIG1lIGNvbnNpZGVyIGlmIHRoZXJlIGlzIGEgVVNCIGV0aGVybmV0IGFkYXB0ZXIgb3V0IHRoZXJlIHRoYXQgKmRvZXMqIHVzZSBNb3RvcmNvbW0gUEhZcywgaXQgbWlnaHQgYmUgYSB3YXkgdG8gaW5qZWN0IHRoZW0uCgpUaGUgYmVzdCB0aGluZyB0byBkbyBpcyB0byBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBVU0IgZHJpdmVycyB0aGF0IGFjdHVhbGx5IHVzZSBtb3RvcmNvbW0gUEhZcyBhdCBhbGwuIEEgcXVpY2sgaW52ZXN0aWdhdGlvbiBvZiBleGlzdGluZyBkcml2ZXJzIGFuZCB0aGVpciBoYXJkd2FyZSBzdXBwb3J0IGlzIHByb2JhYmx5IHRoZSBiZXN0IGZpcnN0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW90b3Jjb21tJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1OTEzCgkJCQkJCQlvdXRwdXQ6IDkwCgkJCQkJCQl0aG91Z2h0czogODUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQgdG91Y2hlcyB0aGUgYGR3bWFjLW1vdG9yY29tbS5jYCBkcml2ZXIuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgUENJLCBhbmQgc3BlY2lmaWNhbGx5IGEgUENJIGRldmljZSBmcm9tIE1vdG9yY29tbS4gSSBrbm93IHRoYXQgYGR3bWFjLW1vdG9yY29tbS5jYCByZWdpc3RlcnMgYSBkZXZpY2Ugd2l0aCBgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01PVE9SQ09NTSwgMHg2ODAxKWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIGNhbiBzeXprYWxsZXIgZXZlbiB0b3VjaCB0aGlzPyBJIGtub3cgc3l6a2FsbGVyIGhhcyBgdmhjaWAgZm9yIFVTQiwgd2hpY2ggaXMgbmVhdCwgYnV0IEkgY2FuJiMzOTt0IHJlY2FsbCBhbnkga2luZCBvZiBlcXVpdmFsZW50IGZvciBQQ0kuIAoKTGV0IG1lIHJlcGhyYXNlIHRoYXQuIEkga25vdyBzeXprYWxsZXIgZG9lc24mIzM5O3QgZ2VuZXJhbGx5IGVtdWxhdGUgKmFyYml0cmFyeSogUENJIGRldmljZXMuIEl0IHVzZXMgUUVNVSB0byBwcm92aWRlIHRoZSBQQ0kgZGV2aWNlcyBpZiB5b3UmIzM5O3JlIGZ1enppbmcgdGhhdCB3YXkuIEFuZCBJIHJlY2FsbCB0aGVyZSBhcmUgY3VzdG9tIFBDSSBmdXp6ZXJzIG91dCB0aGVyZSwgYnV0IHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgZ2VuZXJpYyBQQ0kgZGV2aWNlIGluamVjdG9yIGxpa2UgYHZoY2lgLgoKV2FpdCwgd2hhdCBhYm91dCBgc3l6X3BjaV9kZXZpY2VfYWRkYD8gTm9wZSwgdGhhdCBkb2VzbiYjMzk7dCBleGlzdC4gVGhlcmUmIzM5O3MgVkZJTyBmdXp6aW5nLCBidXQgdGhhdCYjMzk7cyBmb3IgdXNlcnNwYWNlIGRyaXZlcnMsIHJpZ2h0PyBTbywgdW5sZXNzIHRoZSBhY3R1YWwgaGFyZHdhcmUgaXMgcHJlc2VudCwgYGR3bWFjLW1vdG9yY29tbWAgaXMgZGVhZCBpbiB0aGUgd2F0ZXIuCgpPa2F5LCBtYXliZSB0aGVyZSYjMzk7cyBhIHdvcmthcm91bmQuIENvdWxkIHRoZSBQSFkgZHJpdmVyIGJlIHJlYWNoZWQgaW5kaXJlY3RseSB0aHJvdWdoIGFub3RoZXIgTUFDIGRyaXZlcj8gRXZlbiBpZiB0aGF0IHdlcmUgdGhlIGNhc2UsIHRoZSBQSFkgZGV2aWNlIGl0c2VsZiB3b3VsZCBzdGlsbCBuZWVkIHRvIGJlIGluc3RhbnRpYXRlZC4gVGhlIE1ESU8gYnVzIHdvdWxkIG5lZWQgdG8gZmluZCB0aGUgUEhZIElELCBhbmQgd2l0aG91dCB0aGUgaGFyZHdhcmUsIHRoYXQgd29uJiMzOTt0IGhhcHBlbi4gVGhlIGRyaXZlciB3b24mIzM5O3QgcHJvYmUuCgpJcyB0aGVyZSBhbnkgd2F5IHRvIGZha2UgYSBQSFkgSUQgb24gYW4gTURJTyBidXM/IE1heWJlIGlmIHRoZXJlJiMzOTtzIGEgdmlydHVhbCBNRElPIGJ1cy4gTGV0JiMzOTtzIHNlZS4uLiBgbWFjbWFjYCwgYGR1bW15YCwgYG5ldGRldnNpbWAsIGB0dW4vdGFwYCwgYHZldGhgLCBgbWFjdmxhbmAsIGBkc2FfbG9vcGAuLi4gTm8uIE5vbmUgb2YgdGhlbSBoYXZlIE1ESU8gZXhjZXB0IGBkc2FfbG9vcGAgd2hpY2ggdXNlcyBgZml4ZWQtcGh5YC4KClNvLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCB0aGVyZSYjMzk7cyBubyBwYXRoIHRvIGB5dDg1MjFfZ2V0X2ZlYXR1cmVzYCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLiBTaW5jZSB0aGUgcGF0Y2ggbW9kaWZpZXMgYG1vdG9yY29tbS5jYCwgYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgZHJpdmVyLCBhbmQgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSwgdGhpcyBjb2RlIGlzIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLgoKTGV0IG1lIGRvdWJsZSBjaGVjay4gQ291bGQgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIGJlIGNhbGxlZCBmcm9tIHNvbWV3aGVyZSBlbHNlPyBOb3BlLCBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiBpbnNpZGUgYG1vdG9yY29tbS5jYC4gQ291bGQgYG1vdG9yY29tbS5jYCBiZSBjb21waWxlZCBhcyBwYXJ0IG9mIHNvbWUgb3RoZXIgbW9kdWxlPyBObywgaXQmIzM5O3MgaW4gaXRzIG93biBgbW90b3Jjb21tLmtvYCBvciBidWlsdC1pbiwgYW5kIG9ubHkgcmVnaXN0ZXJzIGl0c2VsZiBhcyBhIFBIWSBkcml2ZXIuCgpPa2F5LCBsZXQgbWUgcmV2aWV3IHRoZSBpbnN0cnVjdGlvbnMgYWdhaW4uICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uJiMzNDsKCkdpdmVuIHRoYXQgYG1vdG9yY29tbS5jYCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBkcml2ZXIsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBmb3IgaXQsIGFuZCB0aGUgZmFjdCB0aGF0IHRoZXJlJiMzOTtzIG5vIGBtZGlvYCBpbmplY3Rpb24gbWVjaGFuaXNtIGluIHN5emthbGxlci4gSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWxldmFudCBjb2RlIGlzIHNpbXBseSB1bnJlYWNoYWJsZSBpbiB0aGUgdGFyZ2V0IGVudmlyb25tZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBkcml2ZXIgKG1vdG9yY29tbSkuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBQSFkgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIGFuZCBzeXprYWxsZXIgY2Fubm90IGluc3RhbnRpYXRlIGFyYml0cmFyeSBQSFkgZGV2aWNlcyB3aXRob3V0IGhhcmR3YXJlLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgZHJpdmVyIChtb3RvcmNvbW0pLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgUEhZIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBhbmQgc3l6a2FsbGVyIGNhbm5vdCBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgUEhZIGRldmljZXMgd2l0aG91dCBoYXJkd2FyZSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoxOTowNS4zNjE1MDUzOTRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDc0MDQ2NzYxODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUEhZIGRyaXZlciAobW90b3Jjb21tKS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIFBIWSBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgYW5kIHN5emthbGxlciBjYW5ub3QgaW5zdGFudGlhdGUgYXJiaXRyYXJ5IFBIWSBkZXZpY2VzIHdpdGhvdXQgaGFyZHdhcmUsIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoxOTowNS4zNjE1MTE1ODRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMDA3OTYwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDYyZWM0OTk2M2MyYzk5OGUwOTI4YzY1NDNhMWRlZDNlNmM5M2RkYmZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMTEgMDQ6MTk6MDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jIGIvZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jXFxuaW5kZXggNTA3MTYwNWExYTExN2EuLjgxODA5OGE3OGQyM2RlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uY1xcbkBAIC0yNDkwLDcgKzI0OTAsOCBAQCBzdGF0aWMgaW50IHl0ODUyMV9nZXRfZmVhdHVyZXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0XFx0LyogYWRkIGZpYmVyJ3MgZmVhdHVyZXMgdG8gcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQgKi9cXG4gXFx0XFx0eXQ4NTIxX3ByZXBhcmVfZmliZXJfZmVhdHVyZXMocGh5ZGV2LCBwaHlkZXYtXFx1MDAzZXN1cHBvcnRlZCk7XFxuIFxcdH1cXG4tXFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldHVybiByZXQgPyByZXQgOiBnZW5waHlfYzQ1X3JlYWRfZWVlX2FiaWxpdGllcyhwaHlkZXYpO1xcbiB9XFxuIFxcbiAvKipcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6MDUuNjkyNDE3MzQ3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDcwNzM3NTc2NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUEhZIGRyaXZlciAobW90b3Jjb21tKS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIFBIWSBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgYW5kIHN5emthbGxlciBjYW5ub3QgaW5zdGFudGlhdGUgYXJiaXRyYXJ5IFBIWSBkZXZpY2VzIHdpdGhvdXQgaGFyZHdhcmUsIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDYyZWM0OTk2M2MyYzk5OGUwOTI4YzY1NDNhMWRlZDNlNmM5M2RkYmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAwNDoxOTowNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYyBiL2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uY1xuaW5kZXggNTA3MTYwNWExYTExN2EuLjgxODA5OGE3OGQyM2RlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmNcbkBAIC0yNDkwLDcgKzI0OTAsOCBAQCBzdGF0aWMgaW50IHl0ODUyMV9nZXRfZmVhdHVyZXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdFx0LyogYWRkIGZpYmVyJ3MgZmVhdHVyZXMgdG8gcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCAqL1xuIFx0XHR5dDg1MjFfcHJlcGFyZV9maWJlcl9mZWF0dXJlcyhwaHlkZXYsIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpO1xuIFx0fVxuLVx0cmV0dXJuIHJldDtcbitcbitcdHJldHVybiByZXQgPyByZXQgOiBnZW5waHlfYzQ1X3JlYWRfZWVlX2FiaWxpdGllcyhwaHlkZXYpO1xuIH1cbiBcbiAvKipcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjE5OjA1LjY5MjQxODg1NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0ODQyOTY1NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IE5ldHdvcmsgUEhZIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGFyb3VuZCBpbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uY2AgZmlsZS4gVGhlIHNwZWNpZmljIGFyZWEgb2YgaW50ZXJlc3QgaXMgdGhlIGB5dDg1MjFfZ2V0X2ZlYXR1cmVzYCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhlIGNoYW5nZSBpcyBhIHNpbXBsZSBjb25kaXRpb25hbDogdGhlIG9yaWdpbmFsIGNvZGUganVzdCByZXR1cm5lZCB0aGUgdmFsdWUgb2YgYHJldGAsIGJ1dCBub3cgaXQncyByZXR1cm5pbmcgYHJldCA/IHJldCA6IGdlbnBoeV9jNDVfcmVhZF9lZWVfYWJpbGl0aWVzKHBoeWRldik7YC4gRXNzZW50aWFsbHksIGl0IGlzIGNoZWNraW5nIGlmIHJldCBpcyB0cnVlLCBpZiBzbywgcmV0dXJuaW5nIHJldCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzZWNvbmQgZXhwcmVzc2lvbi5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGVsdmUgaW50byB0aGUgY29kZSBpdHNlbGYuIEkgd2FudCB0byBzZWUgd2hhdCBgcmV0YCByZXByZXNlbnRzIGluIHRoaXMgY29udGV4dCBhbmQgdW5kZXJzdGFuZCB0aGUgbG9naWMgdGhhdCdzIGJlaW5nIHVzZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIGNvbmRpdGlvbmFsIHdhcyBpbnRyb2R1Y2VkIGFuZCB3aGF0IHBvdGVudGlhbCBlZGdlIGNhc2VzIGl0J3MgdHJ5aW5nIHRvIGFkZHJlc3MuIElzIHRoaXMgYWJvdXQgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCAoRUVFKSBjYXBhYmlsaXRpZXMsIG9yIHNvbWV0aGluZyBlbHNlPyBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEknbGwgbmVlZCB0byBsb29rIGludG8gd2hhdCBgZ2VucGh5X2M0NV9yZWFkX2VlZV9hYmlsaXRpZXMocGh5ZGV2KWAgaXMgYW5kIGl0cyBpbXBsaWNhdGlvbnMuIEFsc28sIHdoYXQgZG9lcyBgeXQ4NTIxX2dldF9mZWF0dXJlc2AgZG8gaWYgdGhlcmUgaXMgYW4gZXJyb3I/IE15IGZhbWlsaWFyaXR5IHdpdGggdGhlIE1vdG9yY29tbSBQSFkgZHJpdmVycyB3aWxsIGNvbWUgaW4gaGFuZHkgaGVyZS4gVWx0aW1hdGVseSwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBwYXJ0aWN1bGFyIG1vZGlmaWNhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzNCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6MTAuMTc2NzE3MTQ0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NDcxMzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInl0ODUyMV9nZXRfZmVhdHVyZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0yNDAwPXN0YXRpYyBpbnQgeXRwaHlfdXRwX3JlYWRfYWJpbGl0aWVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMjQ0MC0vKipcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MjQ0MTogKiB5dDg1MjFfZ2V0X2ZlYXR1cmVzX3BhZ2VkKCkgLSAgcmVhZCBzdXBwb3J0ZWQgbGluayBtb2RlcyBmb3Igb25lIHBhZ2VcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMjQ0Mi0gKiBAcGh5ZGV2OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeV9kZXZpY2VcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0yNDQ3LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoyNDQ4OnN0YXRpYyBpbnQgeXQ4NTIxX2dldF9mZWF0dXJlc19wYWdlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgcGFnZSlcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMjQ0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMjQ3MS0vKipcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MjQ3MjogKiB5dDg1MjFfZ2V0X2ZlYXR1cmVzIC0gc3dpdGNoIHJlZyBzcGFjZSB0aGVuIGNhbGwgeXQ4NTIxX2dldF9mZWF0dXJlc19wYWdlZFxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0yNDczLSAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTI0NzYtICovXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjI0Nzc6c3RhdGljIGludCB5dDg1MjFfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTI0Nzgte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTI0ODItXFx0aWYgKHByaXYtXFx1MDAzZXJlZ19wYWdlICE9IFlUODUyMV9SU1NSX1RPX0JFX0FSQklUUkFURUQpIHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MjQ4MzpcXHRcXHRyZXQgPSB5dDg1MjFfZ2V0X2ZlYXR1cmVzX3BhZ2VkKHBoeWRldiwgcHJpdi1cXHUwMDNlcmVnX3BhZ2UpO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0yNDg0LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjI0ODU6XFx0XFx0cmV0ID0geXQ4NTIxX2dldF9mZWF0dXJlc19wYWdlZChwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTI0ODYtXFx0XFx0XFx0XFx0XFx0XFx0WVQ4NTIxX1JTU1JfVVRQX1NQQUNFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0zMDYzPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtb3RvcmNvbW1fcGh5X2RydnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMDc1LVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiWVQ4NTIxIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMDc2OlxcdFxcdC5nZXRfZmVhdHVyZXNcXHQ9IHl0ODUyMV9nZXRfZmVhdHVyZXMsXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNzctXFx0XFx0LnByb2JlXFx0XFx0PSB5dDg1MjFfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzExNy1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIllUODUzMVMgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxMTg6XFx0XFx0LmdldF9mZWF0dXJlc1xcdD0geXQ4NTIxX2dldF9mZWF0dXJlcyxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzExOS1cXHRcXHQucHJvYmVcXHRcXHQ9IHl0ODUyMV9wcm9iZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6MTAuMjMxMTkyODQ0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzAzNzE5MTY5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiB0aGUgYG1vdG9yY29tbS5jYCBQSFkgRHJpdmVyIHdpdGhpbiBTeXprYWxsZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGhpdHMgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uY2AgZmlsZS4gUmlnaHQsIHRoYXQncyBhIFBIWSBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBob3cgbGlrZWx5IGlzIHRoaXMgdG8gYmUgZXhwbG9pdGFibGUgd2l0aGluIHRoZSBzeXprYWxsZXIgZW52aXJvbm1lbnQ/IEdlbmVyYWxseSwgUEhZIGRyaXZlcnMgYXJlIHRpZWQgdG8gbmV0d29yayBpbnRlcmZhY2VzLCBhc3N1bWluZyB0aGUgaGFyZHdhcmUgaXMgcHJlc2VudCwgb3IgcG9zc2libHkgZW11bGF0ZWQuIFN5emthbGxlciB1c3VhbGx5IGRvZXNuJ3QgZW11bGF0ZSBzcGVjaWZpYyBQSFlzIGRpcmVjdGx5LCBhdCBsZWFzdCBub3QgaW4gYSB0YXJnZXRlZCB3YXkuIEl0IG1pZ2h0IGhhdmUgc29tZSBnZW5lcmljIE1ESU8vUEhZIGZ1enppbmcgaW50ZXJmYWNlcywgcHJvYmFibHkgdGhyb3VnaCBuZXRsaW5rIG9yIGlvY3Rscy4gQnV0IHRob3NlIGFyZSBvZnRlbiBxdWl0ZSBsaW1pdGVkIGluIHRoZWlyIGFiaWxpdHkgdG8gcmVhY2ggc3BlY2lmaWMgZHJpdmVycyB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgcHJlc2VudC5cblxuV2FpdCwgdGhvdWdoLCBzeXprYWxsZXIgZG9lcyBoYXZlIHRob3NlIE1ESU8vUEhZIGZ1enppbmcgY2FwYWJpbGl0aWVzIHZpYSBuZXRsaW5rIG9yIGlvY3Rscy4uLiBidXQgc3RpbGwsIGl0J3MgZ2VuZXJhbGx5IGEgaHVyZGxlIHRvIGRpcmVjdGx5IHRhcmdldCBhIHNwZWNpZmljIGRyaXZlciB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZS5cblxuSGFuZyBvbi4uLiBpcyB0aGVyZSBhIGNsZXZlciB3YXkgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aCB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZT8gQ291bGQgSSBzb21laG93IHVzZSBgU0lPQ1NNSUlSRUdgIGlvY3RscyBvciBhIHNpbWlsYXIgbWV0aG9kPyBCdXQsIGV2ZW4gd2l0aCB0aG9zZSwgdGhlIFBIWSBkcml2ZXIgc3RpbGwgbmVlZHMgdG8gYmUgYm91bmQgdG8gKnNvbWUqIGtpbmQgb2YgZGV2aWNlLCByaWdodD9cblxuV2FpdCwgc3l6a2FsbGVyICpjYW4qIGluc3RhbnRpYXRlIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzIGxpa2UgdmV0aCBvciB0dW4uIEhvd2V2ZXIsIHRob3NlIGR1bW15IGRldmljZXMgZG9uJ3QgdHlwaWNhbGx5IGxldmVyYWdlIGFjdHVhbCBQSFkgZHJpdmVycy4gU28sIGNhbiBJIHNvbWVob3cgYmluZCBhIFBIWSBkcml2ZXIgbGlrZSBgbW90b3Jjb21tLmNgIHRvIGEgZHVtbXkgZGV2aWNlIHRoYXQgc3l6a2FsbGVyIGNyZWF0ZXM/IFByb2JhYmx5IG5vdCBkaXJlY3RseS5cblxuU2hvb3QsIGl0J3Mgc3RhcnRpbmcgdG8gbG9vayBsaWtlIHN5emthbGxlciBkb2Vzbid0IGhhdmUgYSBidWlsdC1pbiB3YXkgdG8gZW11bGF0ZSBzcGVjaWZpYyBQSFkgaGFyZHdhcmUsIHNwZWNpZmljYWxseSBsaWtlIHRoZSBtb3RvcmNvbW0gc3R1ZmYuXG5cbldhaXQgYSBzZWMsIHN5emthbGxlciBkb2VzIGVtdWxhdGUgVVNCIHZpYSBgdmhjaWAsIHdpZmkgdmlhIGBtYWM4MDIxMV9od3NpbWAsIERSTSB0aHJvdWdoIGB2a21zYCwgZXRjLiBTbywgdGhlcmUgaXMgcHJlY2VkZW50IGZvciBkZXZpY2Ugc3BlY2lmaWMgZW11bGF0b3JzLi4uIGJ1dCBmb3IgUEhZcywgdGhlIGNsb3Nlc3Qgc2VlbXMgdG8gYmUgYGZpeGVkLXBoeWAsIGFuZCB0aGF0IGRvZXNuJ3QgdXNlIHRoZSBgbW90b3Jjb21tLmNgIGNvZGUgYXQgYWxsLlxuXG5TbywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiBJcyBgbW90b3Jjb21tLmNgIGFjdHVhbGx5IHJlYWNoYWJsZSBpbiBzeXprYWxsZXI/IEl0J3MgdGltZSB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBhbmQgbWFrZSBzdXJlIHRoZXJlJ3Mgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpdGVtIGZvciB0aGUgYG1vdG9yY29tbWAgc3VwcG9ydCB0aGF0IEknbSBtaXNzaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDU4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjE5OjE3LjI2ODM5MTcyMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTI5OTk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNT1RPUkNPTU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZz0zMzg9Y29uZmlnIE1JQ1JPU0VNSV9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTM0Ni1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzozNDc6Y29uZmlnIE1PVE9SQ09NTV9QSFlcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zNDgtXFx0dHJpc3RhdGUgXFxcIk1vdG9yY29tbSBQSFlzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTgyPW9iai0kKENPTkZJR19NSUNST1NFTUlfUEhZKVxcdCs9IG1zY2MvXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19NT1RPUkNPTU1fUEhZKVxcdCs9IG1vdG9yY29tbS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTg0LW9iai0kKENPTkZJR19OQVRJT05BTF9QSFkpXFx0Kz0gbmF0aW9uYWwub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoxOToxNy4zMjk3MDIyOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyOTU0NDU1MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNT1RPUkNPTU1fUEhZIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBNT1RPUkNPTU1fUEhZYCBjb25maWcuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHdlIGFjdHVhbGx5IGhpdCB0aGlzIGNvZGUgcGF0aD8gSXQncyBhIFBIWSBkcml2ZXIsIHdoaWNoIG1lYW5zIHRoZSBgZ2V0X2ZlYXR1cmVzYCBjYWxsYmFjaywgdGhlIG9uZSBJJ20gaW50ZXJlc3RlZCBpbiwgc2hvdWxkIGJlIHRyaWdnZXJlZCBkdXJpbmcgdGhlIFBIWSdzIGluaXRpYWxpemF0aW9uLCBlaXRoZXIgd2hlbiBpdCdzIGJlaW5nIHByb2JlZCBvciB3aGVuIHNvbWVvbmUncyBhY3RpdmVseSBhc2tpbmcgYWJvdXQgaXRzIGNhcGFiaWxpdGllcy4gSWYgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIGlzbid0IHByZXNlbnQsIHRoZSBkcml2ZXIgd291bGRuJ3QgZXZlbiBwcm9iZSBpbiB0aGUgZmlyc3QgcGxhY2UsIHJpZ2h0P1xuXG5UaGVuIEkgdGhvdWdodCwgaXMgdGhlcmUgYSB3YXkgdG8gYnJpbmcgYSBQSFkgZGV2aWNlIGludG8gZXhpc3RlbmNlIGluIHNvZnR3YXJlPyBJIHZhZ3VlbHkgcmVtZW1iZXIgc29tZXRoaW5nIGFib3V0IE1ESU8gYnVzZXMgYW5kIGluamVjdGluZyBkZXZpY2VzLiBCdXQsIGFuZCB0aGlzIGlzIGEgc3RpY2tpbmcgcG9pbnQsIGRvZXMgU3l6a2FsbGVyLCB3aGljaCBpcyB3aGF0IEknbSB1c2luZywgaGF2ZSBhIGdlbmVyaWMgTURJTyBmdXp6ZXIgdGhhdCB3b3VsZCBsZXQgbWUgaW5zdGFudGlhdGUgYXJiaXRyYXJ5IFBIWXM/IEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBvbmUgb2ZmaGFuZC5cblxuV2FpdC4uLiBoYW5nIG9uIGEgbWludXRlLiBEaWRuJ3QgSSBzZWUgc29tZXRoaW5nIGFib3V0IE1ESU8gZnV6emluZyB3aXRoaW4gU3l6a2FsbGVyPyBNYXliZSBJIGFtIHdyb25nLCBhbmQgaXQgaXMgY2FwYWJsZSBvZiBzb21ldGhpbmcuIEkgZG9uJ3QgaGF2ZSBkaXJlY3QgYWNjZXNzIHRvIHRoZSBTeXprYWxsZXIgc291cmNlIGhlcmUsIGJ1dCBJIGNhbiBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSB2aXJ0dWFsIE1ESU8gZHJpdmVycyB3aXRoaW4gdGhlIGtlcm5lbC4gVGhhdCBjb3VsZCBiZSBhIGNydWNpYWwgaGludC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA5NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoxOToyMS42MjUxNTIxMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDg3Njc0OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby4qbW9ja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoxOToyMS42ODYwNTM4NjlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzQzNDM4NTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipQcm9iaW5nIGZvciBQSFkgRHJpdmVyIEFjY2VzcyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgUEhZIGRyaXZlcnMuIFRoaXMgaXNuJ3QganVzdCBhIGNhc3VhbCBleHBsb3JhdGlvbjsgSSdtIGFzc3VtaW5nIHRoZXJlJ3MgYSBzcGVjaWZpYyByZWFzb24gSSBuZWVkIHRoaXMgbGV2ZWwgb2YgY29udHJvbC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGlkZW50aWZ5aW5nIGFueSBhdmFpbGFibGUgZW50cnkgcG9pbnRzIOKAkyBlc3NlbnRpYWxseSwgZXhwb3NlZCBpbnRlcmZhY2VzLCBBUElzLCBvciBkYXRhIHN0cnVjdHVyZXMg4oCTIHRoYXQgYWxsb3cgZm9yIGRpcmVjdCBtYW5pcHVsYXRpb24gb3IgaW50ZXJyb2dhdGlvbiBvZiB0aGUgUEhZIGxheWVyLiBUaGlzIGNvdWxkIGludm9sdmUgZXhhbWluaW5nIGV4aXN0aW5nIGtlcm5lbCBtb2R1bGVzLCBhbmFseXppbmcgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcywgb3IgZXZlbiBsb29raW5nIGludG8gc3RhbmRhcmQgcHJvdG9jb2xzIG9yIG1ldGhvZG9sb2dpZXMgZ2VuZXJhbGx5IHVzZWQgaW4gdGhpcyBjb250ZXh0LiBUaGUgZ29hbCBoZXJlIGlzIGVmZmljaWVudCBhY2Nlc3MgdG8gdGhlIFBIWSdzIHVuZGVybHlpbmcgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU4OCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjE5OjI0LjQyOTQ5NDU5N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI0NjI1MzAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW8uKmZ1enpcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6MjQuNDkxOTY1OTQ2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNzI5OTQ2NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNvbnNpZGVyaW5nIE1vY2tpbmcgVGVjaG5pcXVlcyBmb3IgTURJTyBJbnRlcmZhY2UqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBhcHByb2FjaCB0aGUgTURJTyBpbnRlcmZhY2UgdGVzdGluZywgYW5kIHRoZSBxdWVzdGlvbiBvZiBtb2NraW5nIGlzIGltbWVkaWF0ZWx5IGZyb250IG9mIG1pbmQuIEkndmUgYmVlbiBydW5uaW5nIHRocm91Z2ggcG90ZW50aWFsIHN0cmF0ZWdpZXMsIGFuZCBvbmUgY29uY2VwdCBrZWVwcyBzdXJmYWNpbmc6IHV0aWxpemluZyBhIG1vY2tpbmcgbGlicmFyeSBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gaGFuZGxlIHRoZSBNRElPIHByb3RvY29sLiBJJ20gd29uZGVyaW5nIGlmIHRoZXJlIGFyZSBhbnkgd2VsbC1lc3RhYmxpc2hlZCBzb2x1dGlvbnMgb3V0IHRoZXJlIHRhaWxvcmVkIGZvciB0aGlzOyBzb21ldGhpbmcgYWxvbmcgdGhlIGxpbmVzIG9mIGFuIGBtZGlvLW1vY2tgIGxpYnJhcnksIG9yIG1heWJlIHNvbWV0aGluZyBzaW1pbGFyIHVuZGVyIGEgZGlmZmVyZW50IG5hbWUsIHRoYXQgd291bGQgc2F2ZSBhIHNpZ25pZmljYW50IGFtb3VudCBvZiBkZXZlbG9wbWVudCB0aW1lPyBJJ2QgZXhwZWN0IHRoYXQgc3VjaCBhIGxpYnJhcnkgd291bGQgcHJvdmlkZSBhIHNpbXBsaWZpZWQsIHByb2dyYW1tYXRpYyBpbnRlcmZhY2UgZm9yIHNpbXVsYXRpbmcgTURJTyB0cmFuc2FjdGlvbnMsIGFsbG93aW5nIG1lIHRvIGRlZmluZSB0aGUgYmVoYXZpb3Igb2YgdmFyaW91cyBQSFkgcmVnaXN0ZXJzLiBUaGVuIEkgY2FuIGp1c3QgZm9jdXMgb24gdGhlIGNvcmUgbG9naWMgYW5kIG5vdCB0aGUgY29tcGxleGl0eSBvZiBNRElPIGFjY2Vzcy4gVGhlIGlkZWEgaXMgdG8gaXNvbGF0ZSBteSBjb21wb25lbnQgYW5kIGVuc3VyZSBpdHMgZnVuY3Rpb25hbGl0eSBpcyBjb3JyZWN0LCBpcnJlc3BlY3RpdmUgb2YgYW55IGhhcmR3YXJlIGRlcGVuZGVuY2llcyB0aGF0IGNhbiBjcmVhdGUgY29tcGxpY2F0aW9ucy4gSXQnZCBiZSBmYXIgbW9yZSBlZmZpY2llbnQgdGhhbiBidWlsZGluZyBldmVyeXRoaW5nIGZyb20gc2NyYXRjaCEgSSdtIGxlYW5pbmcgdG93YXJkIGV4cGxvcmluZyB0aGlzIHBvc3NpYmlsaXR5IG1vcmUgZGVlcGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODAzLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6MjcuNTY0OTYyNjQ2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTU5NzAxMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby4qZHVtbXlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6MjcuNjI0NTczMzQ2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjIxNzE2NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgVHJpZ2dlciBmb3IgYHl0ODUyMV9nZXRfZmVhdHVyZXNgKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0aGUgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIGZ1bmN0aW9uIGFjdHVhbGx5IGdldHMgY2FsbGVkLiBNeSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBQSFkgZHJpdmVycywgbGlrZSB0aGlzIG9uZSwgYXJlIHR5cGljYWxseSBicm91Z2h0IGludG8gZXhpc3RlbmNlIHZpYSB0aGUgTURJTyBidXMgc2Nhbm5pbmcgYW5kIG1hdGNoaW5nIHRoZSBQSFkgSUQsIG9yIHRocm91Z2ggYSBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uLiBUaGUgcHJvYmxlbSBJJ20gZmFjaW5nIGlzIHRoaXM6IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIHNvbWV0aGluZyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvciBRRU1VLCB3aGVyZSB3ZSAqZG9uJ3QqIGhhdmUgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uIGZvciBhIE1vdG9yY29tbSBQSFksIHRoZSB0eXBpY2FsIHByb2JpbmcgbWVjaGFuaXNtcyBwcm9iYWJseSB3b24ndCB3b3JrLiBJdCdzIGVzc2VudGlhbGx5IGltcG9zc2libGUgZm9yIHRoZSBjb2RlIHRvIGdldCBoaXQgdW5kZXIgdGhlc2UgY2lyY3Vtc3RhbmNlcy4gU28sIGxldCBtZSBkb3VibGUtY2hlY2sgaWYgdGhlcmUncyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGluIHBsYWNlIHRoYXQgKmNvdWxkKiBwb3RlbnRpYWxseSB0cmlnZ2VyIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDkzLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6MzAuODQ2NzUwMDVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTc1MzI0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb3RvcmNvbW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz00OTYyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHl0OTIxeF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo0OTYzOlxcdHsgLmNvbXBhdGlibGUgPSBcXFwibW90b3Jjb21tLHl0OTIxNVxcXCIgfSxcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDk2NC1cXHR7fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NTI9b2JqLSQoQ09ORklHX0RXTUFDX0xPT05HU09OKVxcdCs9IGR3bWFjLWxvb25nc29uLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MzpvYmotJChDT05GSUdfRFdNQUNfTU9UT1JDT01NKVxcdCs9IGR3bWFjLW1vdG9yY29tbS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNTQtc3RtbWFjLXBjaS1vYmpzOj0gc3RtbWFjX3BjaS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyMjojZGVmaW5lIERSSVZFUl9OQU1FIFxcXCJkd21hYy1tb3RvcmNvbW1cXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy01NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzo1NTpzdHJ1Y3QgbW90b3Jjb21tX2VmdXNlX3BhdGNoIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy01Ni1cXHRfX2xlMTYgYWRkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjYwOnN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtNjEtXFx0dm9pZCBfX2lvbWVtICpiYXNlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtNjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6NjQ6c3RhdGljIGludCBtb3RvcmNvbW1fZWZ1c2VfcmVhZF9ieXRlKHN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy02NS1cXHRcXHRcXHRcXHQgICAgIHU4IG9mZnNldCwgdTggKmJ5dGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy04Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzo4MzpzdGF0aWMgaW50IG1vdG9yY29tbV9lZnVzZV9yZWFkX3BhdGNoKHN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy04NC1cXHRcXHRcXHRcXHQgICAgICB1OCBpbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzo4NTpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbW90b3Jjb21tX2VmdXNlX3BhdGNoICpwYXRjaClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy04Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy05Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzo5MzpcXHRcXHRyZXQgPSBtb3RvcmNvbW1fZWZ1c2VfcmVhZF9ieXRlKHByaXYsIG9mZnNldCwgXFx1MDAyNnBbaV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTk0LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xMDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTAxOnN0YXRpYyBpbnQgbW90b3Jjb21tX2VmdXNlX2dldF9wYXRjaF92YWx1ZShzdHJ1Y3QgZHdtYWNfbW90b3Jjb21tX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTAyLVxcdFxcdFxcdFxcdFxcdCAgIHUxNiBhZGRyLCB1MzIgKnZhbHVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTEwMy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTA0OlxcdHN0cnVjdCBtb3RvcmNvbW1fZWZ1c2VfcGF0Y2ggcGF0Y2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTA1LVxcdGludCBpLCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xMDctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEVGVVNFX1BBVENIX01BWF9OVU07IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjEwODpcXHRcXHRyZXQgPSBtb3RvcmNvbW1fZWZ1c2VfcmVhZF9wYXRjaChwcml2LCBpLCBcXHUwMDI2cGF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTEwOS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjEyMzpzdGF0aWMgaW50IG1vdG9yY29tbV9lZnVzZV9yZWFkX21hYyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTI0OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZHdtYWNfbW90b3Jjb21tX3ByaXYgKnByaXYsIHU4ICptYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTEyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxMjk6XFx0cmV0ID0gbW90b3Jjb21tX2VmdXNlX2dldF9wYXRjaF92YWx1ZShwcml2LCBFRlVTRV9BRERSX01BQ0EwTFIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTMwLVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZtYWNhMGxyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTEzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxMzU6XFx0cmV0ID0gbW90b3Jjb21tX2VmdXNlX2dldF9wYXRjaF92YWx1ZShwcml2LCBFRlVTRV9BRERSX01BQ0EwSFIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTM2LVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZtYWNhMGhyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxNTE6c3RhdGljIHZvaWQgbW90b3Jjb21tX2RlYXNzZXJ0X21kaW9fcGh5X3Jlc2V0KHN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjE2MDpzdGF0aWMgdm9pZCBtb3RvcmNvbW1fcmVzZXQoc3RydWN0IGR3bWFjX21vdG9yY29tbV9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE2MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xNjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTcwOlxcdG1vdG9yY29tbV9kZWFzc2VydF9tZGlvX3BoeV9yZXNldChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xNzEtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxNzM6c3RhdGljIHZvaWQgbW90b3Jjb21tX2luaXQoc3RydWN0IGR3bWFjX21vdG9yY29tbV9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE3NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTg4OnN0YXRpYyBpbnQgbW90b3Jjb21tX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE4OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTkwOlxcdHN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiAqcHJpdiA9IGJzcF9wcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE5MS1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjAwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjIwMTpcXHRtb3RvcmNvbW1fZGVhc3NlcnRfbWRpb19waHlfcmVzZXQocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjAyOlxcdG1vdG9yY29tbV9pbml0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTIwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTIwNz1zdGF0aWMgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyMDg6bW90b3Jjb21tX2RlZmF1bHRfcGxhdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTIwOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDktXFx0cGxhdC1cXHUwMDNlc3VzcGVuZFxcdFxcdD0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjUwOlxcdHBsYXQtXFx1MDAzZXJlc3VtZVxcdFxcdD0gbW90b3Jjb21tX3Jlc3VtZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNTEtXFx0cGxhdC1cXHUwMDNlZmxhZ3NcXHRcXHQ9IFNUTU1BQ19GTEFHX1RTT19FTiB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjU3OnN0YXRpYyB2b2lkIG1vdG9yY29tbV9mcmVlX2lycSh2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI1OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjY0OnN0YXRpYyBpbnQgbW90b3Jjb21tX3NldHVwX2lycShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNjUtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjkwOlxcdHJldHVybiBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgbW90b3Jjb21tX2ZyZWVfaXJxLCBwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yOTEtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyOTM6c3RhdGljIGludCBtb3RvcmNvbW1fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yOTQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI5NS1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6Mjk2OlxcdHN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yOTctXFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgcmVzID0ge307XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzA0OlxcdHBsYXQgPSBtb3RvcmNvbW1fZGVmYXVsdF9wbGF0X2RhdGEocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzA1LVxcdGlmICghcGxhdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTMzMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozMzE6XFx0bW90b3Jjb21tX3Jlc2V0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTMzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTMzOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNDA6XFx0cmV0ID0gbW90b3Jjb21tX2VmdXNlX3JlYWRfbWFjKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHByaXYsIHJlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM0MS1cXHRpZiAocmV0ID09IC1FTk9FTlQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNTE6XFx0cmV0ID0gbW90b3Jjb21tX3NldHVwX2lycShwZGV2LCBcXHUwMDI2cmVzLCBwbGF0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNTItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNTU6XFx0bW90b3Jjb21tX2luaXQocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM2MjpzdGF0aWMgdm9pZCBtb3RvcmNvbW1fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzY3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBkd21hY19tb3RvcmNvbW1fcGNpX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzY4LVxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01PVE9SQ09NTSwgMHg2ODAxKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzcwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzcxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkd21hY19tb3RvcmNvbW1fcGNpX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzczOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBkd21hY19tb3RvcmNvbW1fcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzQtXFx0Lm5hbWUgPSBEUklWRVJfTkFNRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNzU6XFx0LmlkX3RhYmxlID0gZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNzY6XFx0LnByb2JlID0gbW90b3Jjb21tX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM3NzpcXHQucmVtb3ZlID0gbW90b3Jjb21tX3JlbW92ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzgtXFx0LmRyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozODM6bW9kdWxlX3BjaV9kcml2ZXIoZHdtYWNfbW90b3Jjb21tX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT04Mj1vYmotJChDT05GSUdfTUlDUk9TRU1JX1BIWSlcXHQrPSBtc2NjL1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4MzpvYmotJChDT05GSUdfTU9UT1JDT01NX1BIWSlcXHQrPSBtb3RvcmNvbW0ub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS04NC1vYmotJChDT05GSUdfTkFUSU9OQUxfUEhZKVxcdCs9IG5hdGlvbmFsLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0xMDA2PXN0YXRpYyBpbnQgeXQ4NTMxX3NldF9kcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTEwMTItXFx0Lyogc2V0IHJnbWlpIHJ4IGNsayBkcml2ZXIgc3RyZW5ndGggKi9cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTAxMzpcXHRpZiAoIWRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsIFxcXCJtb3RvcmNvbW0scngtY2xrLWRydi1taWNyb2FtcFxcXCIsIFxcdTAwMjZ2YWwpKSB7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTEwMTQtXFx0XFx0ZHMgPSB5dDg1MzFfZ2V0X2RzX21hcChwaHlkZXYsIHZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTAzMC1cXHQvKiBzZXQgcmdtaWkgcnggZGF0YSBkcml2ZXIgc3RyZW5ndGggKi9cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTAzMTpcXHRpZiAoIWRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsIFxcXCJtb3RvcmNvbW0scngtZGF0YS1kcnYtbWljcm9hbXBcXFwiLCBcXHUwMDI2dmFsKSkge1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xMDMyLVxcdFxcdGRzID0geXQ4NTMxX2dldF9kc19tYXAocGh5ZGV2LCB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTEwNjM9c3RhdGljIGludCB5dDg1MjFfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xMTEzLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxMTE0OlxcdGlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCBcXFwibW90b3Jjb21tLGNsay1vdXQtZnJlcXVlbmN5LWh6XFxcIiwgXFx1MDAyNmZyZXEpKVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xMTE1LVxcdFxcdGZyZXEgPSBZVFBIWV9EVFNfT1VUUFVUX0NMS19ESVM7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MTE4MD1zdGF0aWMgaW50IHl0ODUzMV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTExODUtXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjExODY6XFx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsIFxcXCJtb3RvcmNvbW0sY2xrLW91dC1mcmVxdWVuY3ktaHpcXFwiLCBcXHUwMDI2ZnJlcSkpXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTExODctXFx0XFx0ZnJlcSA9IFlUUEhZX0RUU19PVVRQVVRfQ0xLX0RJUztcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0xNjc2PXN0YXRpYyBpbnQgeXQ4NTIxX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTY5Mi1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTY5MzpcXHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFxcXCJtb3RvcmNvbW0sYXV0by1zbGVlcC1kaXNhYmxlZFxcXCIpKSB7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE2OTQtXFx0XFx0LyogZGlzYWJsZSBhdXRvIHNsZWVwICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTcwMC1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTcwMTpcXHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFxcXCJtb3RvcmNvbW0sa2VlcC1wbGwtZW5hYmxlZFxcXCIpKSB7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE3MDItXFx0XFx0LyogZW5hYmxlIFJYQyBjbG9jayB3aGVuIG5vIHdpcmUgcGx1ZyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTE4MTc9c3RhdGljIGludCB5dDg1MzFfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODI1LVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxODI2OlxcdGlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXFxcIm1vdG9yY29tbSxhdXRvLXNsZWVwLWRpc2FibGVkXFxcIikpIHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTgyNy1cXHRcXHQvKiBkaXNhYmxlIGF1dG8gc2xlZXAgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODM0LVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxODM1OlxcdGlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXFxcIm1vdG9yY29tbSxrZWVwLXBsbC1lbmFibGVkXFxcIikpIHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTgzNi1cXHRcXHQvKiBlbmFibGUgUlhDIGNsb2NrIHdoZW4gbm8gd2lyZSBwbHVnICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MTg1Mz1zdGF0aWMgaW50IHl0ODUyMl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE4NzAtXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE4NzE6XFx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcXFwibW90b3Jjb21tLGF1dG8tc2xlZXAtZGlzYWJsZWRcXFwiKSkge1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODcyLVxcdFxcdC8qIGRpc2FibGUgYXV0byBzbGVlcCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE4ODgtICogTk9URTogVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgdG8gYWRhcHQgdG8gVkYyIHdpdGggSkg3MTEwIFNvQy4gUGxlYXNlXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE4ODk6ICoga2VlcCBcXFwibW90b3Jjb21tLHR4LWNsay1hZGotZW5hYmxlZFxcXCIgbm90IGV4aXN0IGluIGR0cyB3aGVuIHRoZSBzb2MgaXMgbm90XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE4OTAtICogSkg3MTEwLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTE4OTI9c3RhdGljIHZvaWQgeXQ4NTMxX2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE5MDEtXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE5MDI6XFx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcXFwibW90b3Jjb21tLHR4LWNsay1hZGotZW5hYmxlZFxcXCIpKVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xOTAzLVxcdFxcdHR4X2Nsa19hZGpfZW5hYmxlZCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTkwNy1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTkwODpcXHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFxcXCJtb3RvcmNvbW0sdHgtY2xrLTEwLWludmVydGVkXFxcIikpXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE5MDktXFx0XFx0dHhfY2xrXzEwX2ludmVydGVkID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTkxMDpcXHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFxcXCJtb3RvcmNvbW0sdHgtY2xrLTEwMC1pbnZlcnRlZFxcXCIpKVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xOTExLVxcdFxcdHR4X2Nsa18xMDBfaW52ZXJ0ZWQgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxOTEyOlxcdGlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXFxcIm1vdG9yY29tbSx0eC1jbGstMTAwMC1pbnZlcnRlZFxcXCIpKVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xOTEzLVxcdFxcdHR4X2Nsa18xMDAwX2ludmVydGVkID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0zMDQxPXN0YXRpYyBpbnQgeXQ4ODIxX3Jlc3VtZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNjItXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMwNjM6c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1vdG9yY29tbV9waHlfZHJ2c1tdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMDY0LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTUwLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTUxOm1vZHVsZV9waHlfZHJpdmVyKG1vdG9yY29tbV9waHlfZHJ2cyk7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxNTItXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MzE1Nj1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxNTctXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxNTg6c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBtb3RvcmNvbW1fdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxNTktXFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUxMSkgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTY3LVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTY4Ok1PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgbW90b3Jjb21tX3RibCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjE5OjMxLjAyODUxNzQ0OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzUwMjI4MzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIHRoZSBgbW90b3Jjb21tYCBQSFkgRHJpdmVyIGluIFN5emthbGxlcioqXG5cbk9rYXksIHNvIHRoZSBgbW90b3Jjb21tYCBQSFkgZHJpdmVyIGlzIHJlZ2lzdGVyZWQgd2l0aCBgbW9kdWxlX3BoeV9kcml2ZXJgLiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgaG93IGRvIEkgZ2V0IFN5emthbGxlciB0byBpbnRlcmFjdCB3aXRoIGl0PyBJZGVhbGx5LCB0aGVyZSB3b3VsZCBiZSBhIGdlbmVyaWMgTURJTyBkZXZpY2UgaW5zdGFudGlhdG9yLCBidXQgYXMgSSByZWNhbGwsIFN5emthbGxlciBkb2Vzbid0IGhhdmUgdGhhdC4gV2UgYXJlLCBhZnRlciBhbGwsIHRhbGtpbmcgYWJvdXQgUEhZcyB3aGljaCBhcmUgdXN1YWxseSBjcmVhdGVkIHdoZW4gYSBNQUMgZHJpdmVyIHByb2JlcyB0aGUgTURJTyBidXMuXG5cbldhaXQsIGFyZSB0aGVyZSBhbnkgbmV0bGluayBob29rcyB0aGF0IGNhbiBoZWxwIGhlcmU/IENvdWxkIHNvbWV0aGluZyBsaWtlIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgIGJlIHVzZWZ1bD8gTm8sIHRoYXQncyBub3QgdGhlIHJpZ2h0IHBhdGguIFdoYXQgYWJvdXQgYW55IG9mIHRoZSBvdGhlciBuZXQgZGV2aWNlcz8gYG1hY3NlY2AsIGBkdW1teWAsIGFuZCBgdmV0aGAgYXJlIG91dCDigJMgdGhleSBieXBhc3MgTURJTyBhbHRvZ2V0aGVyLiBXaGF0IGFib3V0IHNvbWV0aGluZyBsaWtlIGB0dW5gIG9yIGB0YXBgPyBOb3BlLCBub3QgbGlrZWx5LlxuXG5IbW0sIHdoYXQgYWJvdXQgRFNBLCBEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlPyBTeXprYWxsZXIgKmRvZXMqIGhhdmUgc29tZSBEU0EgZnV6emluZyBjYXBhYmlsaXRpZXMuIEhvd2V2ZXIsIERTQSBvZnRlbiByZWxpZXMgb24gZGV2aWNlIHRyZWUgb3IgcGxhdGZvcm0tc3BlY2lmaWMgZGF0YS4gSXTigJlzIHVzdWFsbHkgdGllZCBkaXJlY3RseSB0byB0aGUgaGFyZHdhcmUuXG5cbkJ1dCB3YWl0LCB0aGVyZSdzIGEgZ2xpbW1lciBvZiBob3BlISBUaGUgYGRzYV9sb29wYCBkcml2ZXIgaXMgYSBtb2NrIERTQSBkcml2ZXIsIGlzbid0IGl0PyBJZiBpdCdzIGEgbW9jayBkcml2ZXIsIGl0IG1heSBoYXZlIGEgc2ltcGxpZmllZCBpbnN0YW50aWF0aW9uIHBhdGguIERvZXMgKnRoYXQqIGRyaXZlciBpbnRlcmFjdCB3aXRoIE1ESU8/IElmIHNvLCBjb3VsZCBJIHBvdGVudGlhbGx5IGxldmVyYWdlIHRoZSBgZHNhX2xvb3BgIGRyaXZlciB0byBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgUEhZcywgaW5jbHVkaW5nIHRoZSBgbW90b3Jjb21tYCBkcml2ZXI/IFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBwcm9taXNpbmcgYXZlbnVlIHRvIGV4cGxvcmUuIFRpbWUgdG8gY2hlY2sgaWYgYGRzYV9sb29wYCBjYW4gYmUgbGV2ZXJhZ2VkIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTcxMSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoxOTozNi4zNzg3NDgwNzZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMjA4NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRzYV9sb29wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTM9YmNtLXNmMi1vYmpzXFx0XFx0XFx0Oj0gYmNtX3NmMi5vIGJjbV9zZjJfY2ZwLm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTkVUX0RTQV9MT09QKVxcdCs9IGRzYV9sb29wLm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtNS1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFxcdCs9IGtzODk5NS5vXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTpzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjYtXFx0dTE2IG1lbWJlcnM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMDpzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMS1cXHRjaGFyIG5hbWVbRVRIX0dTVFJJTkdfTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1OmVudW0gZHNhX2xvb3BfbWliX2NvdW50ZXJzIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNi1cXHREU0FfTE9PUF9QSFlfUkVBRF9PSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzOnN0cnVjdCBkc2FfbG9vcF9wb3J0IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IG1pYltfX0RTQV9MT09QX0NOVF9NQVhdO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ1LVxcdHUxNiBwdmlkO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk6c3RydWN0IGRzYV9sb29wX3ByaXYge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwLVxcdHN0cnVjdCBtaWlfYnVzXFx0KmJ1cztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MS1cXHR1bnNpZ25lZCBpbnRcXHRwb3J0X2Jhc2U7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTI6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gdmxhbnNbVkxBTl9OX1ZJRF07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTMtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcG9ydCBwb3J0c1tEU0FfTUFYX1BPUlRTXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01NS19O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU3OnN0cnVjdCBkc2FfbG9vcF9wZGF0YSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTgtXFx0LyogTXVzdCBiZSBmaXJzdCwgc3VjaCB0aGF0IGRzYV9yZWdpc3Rlcl9zd2l0Y2goKSBjYW4gYWNjZXNzIHRoaXNcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjY3OnN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IGRzYV9sb29wX21pYnNbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02OC1cXHRbRFNBX0xPT1BfUEhZX1JFQURfT0tdXFx0PSB7IFxcXCJwaHlfcmVhZF9va1xcXCIsIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz03NT1zdGF0aWMgc3RydWN0IG1kaW9fZGV2aWNlICpzd2l0Y2hfbWRpb2RldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo3NzplbnVtIGRzYV9sb29wX2RldmxpbmtfcmVzb3VyY2VfaWQge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTc4LVxcdERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfTk9ORSwgIC8qIERFVkxJTktfUkVTT1VSQ0VfSURfUEFSRU5UX1RPUCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODEtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODI6c3RhdGljIHU2NCBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQodm9pZCAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04My17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04NS1cXHR1bnNpZ25lZCBpbnQgaSwgY291bnQgPSAwO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg2OlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjk3OnN0YXRpYyBpbnQgZHNhX2xvb3Bfc2V0dXBfZGV2bGlua19yZXNvdXJjZXMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk4LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OS1cXHRzdHJ1Y3QgZGV2bGlua19yZXNvdXJjZV9zaXplX3BhcmFtcyBzaXplX3BhcmFtcztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMDA6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTAxLVxcdGludCBlcnI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTUtXFx0XFx0XFx0XFx0XFx0ICAgICAgRFNBX0xPT1BfREVWTElOS19QQVJBTV9JRF9WVFUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTE2OlxcdFxcdFxcdFxcdFxcdCAgICAgIGRzYV9sb29wX2RldmxpbmtfdnR1X2dldCwgcHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMjU6c3RhdGljIGVudW0gZHNhX3RhZ19wcm90b2NvbCBkc2FfbG9vcF9nZXRfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNi1cXHRcXHRcXHRcXHRcXHRcXHQgICBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzMy1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzQ6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM1LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM3LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM5LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkcy1cXHUwMDNlbnVtX3BvcnRzOyBpKyspXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQwOlxcdFxcdG1lbWNweShwcy1cXHUwMDNlcG9ydHNbaV0ubWliLCBkc2FfbG9vcF9taWJzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MTpcXHRcXHQgICAgICAgc2l6ZW9mKGRzYV9sb29wX21pYnMpKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ1OlxcdHJldHVybiBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhkcyk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ2LX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDctXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTUyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE1MzpzdGF0aWMgaW50IGRzYV9sb29wX2dldF9zc2V0X2NvdW50KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBzc2V0KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE1NC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTYxOnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYyLVxcdFxcdFxcdFxcdCB1MzIgc3RyaW5nc2V0LCB1aW50OF90ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2My17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTY0OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2NS1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3My1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNzQ6c3RhdGljIHZvaWQgZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzUtXFx0XFx0XFx0XFx0ICAgICAgIHVpbnQ2NF90ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3Ni17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc3OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3OC1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4My1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODQ6c3RhdGljIGludCBkc2FfbG9vcF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4NS17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTg2OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4Ny1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE5OC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxOTk6c3RhdGljIGludCBkc2FfbG9vcF9waHlfd3JpdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDAtXFx0XFx0XFx0ICAgICAgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMS17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjAyOlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMy1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMTU6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjE2LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI1LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNy1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjMyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIzMzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzQtXFx0XFx0XFx0XFx0XFx0dTggc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjQwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2ZpbHRlcmluZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0MS1cXHRcXHRcXHRcXHRcXHRib29sIHZsYW5fZmlsdGVyaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQ5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1MDpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTEtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTUtXFx0Ym9vbCBwdmlkID0gdmxhbi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1BWSUQ7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU2OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1Ny1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXFx1MDAzZWJ1cztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTg6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODM6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg0LVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcG9ydF92bGFuICp2bGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg2LVxcdGJvb2wgdW50YWdnZWQgPSB2bGFuLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fVU5UQUdHRUQ7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mjg3OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4OC1cXHR1MTYgcHZpZCA9IHBzLVxcdTAwM2Vwb3J0c1twb3J0XS5wdmlkO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4OS1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXFx1MDAzZWJ1cztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyOTA6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTItXFx0XFx0XFx0XFx0ICAgIGludCBuZXdfbXR1KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMy17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzE0OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzE1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfbWF4X210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI3LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzMzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNDpzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGRzYV9sb29wX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzU6XFx0LmdldF90YWdfcHJvdG9jb2xcXHQ9IGRzYV9sb29wX2dldF9wcm90b2NvbCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzY6XFx0LnNldHVwXFx0XFx0XFx0PSBkc2FfbG9vcF9zZXR1cCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzc6XFx0LnRlYXJkb3duXFx0XFx0PSBkc2FfbG9vcF90ZWFyZG93bixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzg6XFx0LmdldF9zdHJpbmdzXFx0XFx0PSBkc2FfbG9vcF9nZXRfc3RyaW5ncyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzk6XFx0LmdldF9ldGh0b29sX3N0YXRzXFx0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDA6XFx0LmdldF9zc2V0X2NvdW50XFx0XFx0PSBkc2FfbG9vcF9nZXRfc3NldF9jb3VudCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDE6XFx0LmdldF9ldGh0b29sX3BoeV9zdGF0c1xcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQyOlxcdC5waHlfcmVhZFxcdFxcdD0gZHNhX2xvb3BfcGh5X3JlYWQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQzOlxcdC5waHlfd3JpdGVcXHRcXHQ9IGRzYV9sb29wX3BoeV93cml0ZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDQ6XFx0LnBvcnRfYnJpZGdlX2pvaW5cXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4sXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ1OlxcdC5wb3J0X2JyaWRnZV9sZWF2ZVxcdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ2OlxcdC5wb3J0X3N0cF9zdGF0ZV9zZXRcXHQ9IGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDc6XFx0LnBvcnRfdmxhbl9maWx0ZXJpbmdcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ4OlxcdC5wb3J0X3ZsYW5fYWRkXFx0XFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0OTpcXHQucG9ydF92bGFuX2RlbFxcdFxcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2RlbCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTA6XFx0LnBvcnRfY2hhbmdlX210dVxcdD0gZHNhX2xvb3BfcG9ydF9jaGFuZ2VfbXR1LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MTpcXHQucG9ydF9tYXhfbXR1XFx0XFx0PSBkc2FfbG9vcF9wb3J0X21heF9tdHUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUyOlxcdC5waHlsaW5rX2dldF9jYXBzXFx0PSBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1My19O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1NC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTU6c3RhdGljIGludCBkc2FfbG9vcF9kcnZfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1Ni17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU3OlxcdHN0cnVjdCBkc2FfbG9vcF9wZGF0YSAqcGRhdGEgPSBtZGlvZGV2LVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTg6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1OS1cXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODItXFx0ZHMtXFx1MDAzZWRldiA9IFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzgzOlxcdGRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2ZHNhX2xvb3BfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cXHRkcy1cXHUwMDNlcHJpdiA9IHBzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5NzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTgte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OS1cXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDAwOlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDExOnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyMi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MjM6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBkc2FfbG9vcF9kcnYgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI0LVxcdC5tZGlvZHJ2LmRyaXZlclxcdD0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI2LVxcdH0sXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI3OlxcdC5wcm9iZVxcdD0gZHNhX2xvb3BfZHJ2X3Byb2JlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyODpcXHQucmVtb3ZlXFx0PSBkc2FfbG9vcF9kcnZfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyOTpcXHQuc2h1dGRvd24gPSBkc2FfbG9vcF9kcnZfc2h1dGRvd24sXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMwLX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMxLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzMjpzdGF0aWMgaW50IGRzYV9sb29wX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMzLVxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM0LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzU6XFx0cmV0dXJuIGRydiA9PSBcXHUwMDI2ZHNhX2xvb3BfZHJ2Lm1kaW9kcnYuZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNi19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM3LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzODpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ1LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0NjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDcte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0ODpcXHRzdGF0aWMgc3RydWN0IGRzYV9sb29wX3BkYXRhIGRzYV9sb29wX3BkYXRhID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0OS1cXHRcXHQuY2QgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcxOlxcdHN3aXRjaF9tZGlvZGV2LVxcdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcyOlxcdHN3aXRjaF9tZGlvZGV2LVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFxcdTAwMjZkc2FfbG9vcF9wZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODEtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDgyOnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2luaXQodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4NzpcXHRyZXQgPSBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTQ6XFx0cmV0ID0gbWRpb19kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNmRzYV9sb29wX2Rydik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk1LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTY6XFx0XFx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk3LVxcdFxcdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDItfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwMzptb2R1bGVfaW5pdChkc2FfbG9vcF9pbml0KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA1OnN0YXRpYyB2b2lkIF9fZXhpdCBkc2FfbG9vcF9leGl0KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDc6XFx0bWRpb19kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDg6XFx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA5LVxcdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTEtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUxMjptb2R1bGVfZXhpdChkc2FfbG9vcF9leGl0KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjE5OjM2LjQzOTk2MjY0NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzgzOTc0NzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTGltaXRhdGlvbnMgYW5kIFBvc3NpYmlsaXRpZXMgZm9yIEZ1enppbmcgdGhlIHl0ODUyMSBQSFkgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgZHNhX2xvb3BgIGRyaXZlciwgYW5kIGl0J3MgZXNzZW50aWFsbHkgYSBwbGFjZWhvbGRlciwgYSBtb2NrIERTQSBzd2l0Y2guIEl0IGRvZXNuJ3QgYm90aGVyIHdpdGggYWN0dWFsIFBIWSBpbnN0YW50aWF0aW9uLCBqdXN0IHJlZ2lzdGVycyB0aGlzIGZha2Ugc3dpdGNoLiBOb3csIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdG8gYXBwcm9hY2ggZnV6emluZyB0aGUgYHl0ODUyMWAgUEhZIGRyaXZlciwgYW5kIHRoZSBpbW1lZGlhdGUgaXNzdWUgaXMgdGhlIGxhY2sgb2Ygc3BlY2lmaWMgaGFyZHdhcmUg4oCTIHN5emthbGxlciBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhbnkgbW90b3Jjb21tIFBIWXMgYXZhaWxhYmxlLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IGh1cmRsZS5cblxuU28sIHRoZSBxdWVzdGlvbiBpczogaG93IGNhbiBJIGV2ZW4gKnJlYWNoKiBzb21ldGhpbmcgbGlrZSBgeXQ4NTIxX2dldF9mZWF0dXJlc2Agd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmU/IFRoZSBvbmx5IHBhdGh3YXkgSSBzZWUgaXMgdGhyb3VnaCBhIHNvZnR3YXJlIE1ESU8gYnVzLiBJZiBJIGNvdWxkIG1hbmlwdWxhdGUgdGhhdCBzb2Z0d2FyZSBidXMgdG8gcHJlc2VudCBmYWtlZCBQSFkgSURzLCB0aGVuIHRoZSBgeXQ4NTIxYCBkcml2ZXIgKmNvdWxkKiBwcm9iZSBhbmQgYmVjb21lIGFjdGl2ZS4gVGhhdCB3b3VsZCBiZSB0aGUgZW50cnkgcG9pbnQgSSBuZWVkLlxuXG5Ob3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgc3l6a2FsbGVyIGhhcyBhbiBNRElPIGZ1enplci4gRG9lcyBpdCBvZmZlciB0aGUgbWVhbnMgdG8gZnV6eiB0aGUgTURJTyBpbnRlcmZhY2U/IEkgbmVlZCB0byBjaGVjayB0aGUga2VybmVsJ3Mgc3l6a2FsbGVyIGNvdmVyYWdlLCBhbmQgbG9vayBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byBgbWRpb2AuIExldCdzIHNlZSBpZiB0aGVyZSdzIGFueSBleGlzdGluZyB3b3JrIGluIHRoaXMgYXJlYSB0byBsZXZlcmFnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg4NTYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6NDIuMjIzOTM5NTM5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDYxNDg0OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoxOTo0Mi4yODQ1NjIyNzhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzNTY2MjQ2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBzdW1tYXJpemVkIGZyb20gdGhhdCBwcm9tcHQsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBQb3RlbnRpYWwgTURJTyBGdXp6aW5nIE9wcG9ydHVuaXRpZXMqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBsYW5kc2NhcGUgZm9yIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGtlcm5lbCdzIG5ldHdvcmsgUEhZIGRyaXZlcnMuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBhbnl0aGluZyByZWxhdGVkIHRvIGBtZGlvYC4gSSdtIGdvaW5nIHRvIHNjYW4gdGhlIGBkcml2ZXJzL25ldC9waHkvYCBkaXJlY3RvcnkuIFRoZSBnb2FsIGlzIHRvIHNlZSBpZiBhbnkgZXhpc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgb3IgY29tcG9uZW50cyBhcmUgYWxyZWFkeSBpbiBwbGFjZSB0aGF0IGNvdWxkIGJlIGxldmVyYWdlZCBmb3IgZnV6emluZyB0aGUgTURJTyBpbnRlcmZhY2UuIFRoaXMgY291bGQgaW52b2x2ZSBsb29raW5nIGZvciBleGlzdGluZyBkcml2ZXJzIHRoYXQgdXRpbGl6ZSB0aGUgTURJTyBpbnRlcmZhY2UsIGFueSBoZWxwZXIgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gTURJTyBjb21tdW5pY2F0aW9uIHRoYXQgbWlnaHQgYmUgc3VzY2VwdGlibGUgdG8gaW5wdXQgdnVsbmVyYWJpbGl0aWVzLCBvciBldmVuIHByZS1leGlzdGluZyBmdXp6ZXIgaGFybmVzc2VzIHRoYXQgaGF2ZSBiZWVuIHBhcnRpYWxseSBpbXBsZW1lbnRlZC4gVGhlIGlkZWEgaXMgdG8gZmluZCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZWZmaWNpZW50bHkgcHJpb3JpdGl6ZSB0aGUgaW52ZXN0aWdhdGlvbi4gSSBkb24ndCB3YW50IHRvIHJlaW52ZW50IHRoZSB3aGVlbCwgaWYgYXQgYWxsIHBvc3NpYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTMxOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjE5OjQ1LjgyMDIyNjc0OVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg2NTI3NDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZ1enpcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6NDUuODg4ODg4Nzc3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MjMxNzY4NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgS2VybmVsIFRlc3RpbmcgVG9vbGJveCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUga2VybmVsIGZ1enppbmcgaW5mcmFzdHJ1Y3R1cmUsIHBhcnRpY3VsYXJseSB3aGF0IHN5emthbGxlciBjYW4gbGV2ZXJhZ2UgZm9yIGVtdWxhdGluZyB2YXJpb3VzIGhhcmR3YXJlIGNvbXBvbmVudHMuIEl0J3MgcmVhbGx5IHF1aXRlIGltcHJlc3NpdmUgaG93IGl0IGNhbiB1c2UgYHZoY2lgIGZvciBVU0Ig4oCTIHRoYXQncyBhIGNsZXZlciBzb2x1dGlvbi4gQW5kIGBtYWM4MDIxMV9od3NpbWAgZm9yIFdpRmksIHBlcmZlY3QuIFRoZW4sIGZvciBncmFwaGljcywgYHZrbXNgIHdpdGggRFJNIGlzIGEgc29saWQgY2hvaWNlLiBPZiBjb3Vyc2UsIGB1aW5wdXRgIGhhbmRsZXMgaW5wdXQgcmVhbGx5IHdlbGwsIGFuZCB3ZSBoYXZlIGBzbmQtZHVtbXlgIGZvciBzb3VuZCwgd2hpY2gga2VlcHMgdGhpbmdzIHNpbXBsZS4gRm9yIG5ldHdvcmtpbmcgaW50ZXJmYWNlcywgdGhlIGZsZXhpYmlsaXR5IGlzIHRoZSByZWFsIHN0cmVuZ3RoIOKAkyBgdmNhbmAgaGFuZGxlcyBDQU4sIHRoZW4gdGhlcmUncyBgZHVtbXlgLCBgdmV0aGAsIGB0dW5gLCBgdGFwYCwgYW5kIGBuZXRkZXZzaW1gLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBtYWtlIGEgbm90ZSBvZiB0aGlzLiBJIHdvbmRlciwgZG9lcyBgbmV0ZGV2c2ltYCBhY3R1YWxseSBzaW11bGF0ZSBNRElPIGFuZCBQSFlzIHRvIGdldCB1cyBjbG9zZXIgdG8gdGVzdGluZyB0aG9zZSBwYXJ0cyBvZiB0aGUgc3RhY2s/IEkgc2hvdWxkIHJlYWxseSBjaGVjayB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyB0aGVyZSwgc2VlIGlmIHdlIGdldCB0aGUgZnVsbCBwaWN0dXJlIG9yIG5vdC4gR290dGEgZGlnIGludG8gdGhhdCFcblxuXG4iLCJJbnB1dFRva2VucyI6MTk1ODIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6NTAuNDEyMDY3Njg3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTM2MDE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM9MTQ1NT1zdGF0aWMgaW50IF9fbnNpbV9kZXZfcG9ydF9hZGQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNDc0LVxcdFxcdGF0dHJzLmZsYXZvdXIgPSBERVZMSU5LX1BPUlRfRkxBVk9VUl9QSFlTSUNBTDtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTQ3NTpcXHRcXHRhdHRycy5waHlzLnBvcnRfbnVtYmVyID0gcG9ydF9pbmRleCArIDE7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE0NzYtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0zMjI9c3RydWN0IG5zaW1fZGV2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zNDEtXFx0c3RydWN0IG11dGV4IHByb2dzX2xpc3RfbG9jaztcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzQyOlxcdHN0cnVjdCBuZXRkZXZfcGh5c19pdGVtX2lkIHN3aXRjaF9pZDtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzQzLVxcdHN0cnVjdCBsaXN0X2hlYWQgcG9ydF9saXN0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoxOTo1MC40Njc0MzE2MzdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzEwNTUzOTY3NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBSZWFjaGluZyB0aGUgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0byB0cmlnZ2VyIHRoYXQgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYG1vdG9yY29tbS5jYCBQSFkgZHJpdmVyLiBJdCBzZWVtcyBwcmV0dHkgbG9ja2VkIGRvd24gaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYW5kIGhlcmUncyBteSBicmVha2Rvd24gb2Ygd2h5LlxuXG5GaXJzdCwgSSBydWxlZCBvdXQgYG5ldGRldnNpbWAg4oCTIGl0J3Mgbm90IGEgY29udGVuZGVyIGZvciB0aGlzLiBUaGVuIEkgY29uc2lkZXJlZCBgZml4ZWQtcGh5YCwgd2hpY2ggYWxsb3dzIGluc3RhbnRpYXRpbmcgUEhZcywgYnV0IHRoZXkgYXJlIGFsbCBmaXhlZCwgYW5kIGRvbid0IG1hdGNoIHRoZSBgbW90b3Jjb21tYCB0eXBlLiBJIGFsc28gY29udGVtcGxhdGVkIGEgdXNlciBzcGFjZSBwcm9ncmFtIGNyZWF0aW5nIGEgdmlydHVhbCBNRElPIGJ1cyBhbmQgaW5qZWN0aW5nIGRldmljZXMuIFRoYXTigJlzIHByb2JhYmx5IHRvbyBjb252b2x1dGVkLCBldmVuIGlmIHBvc3NpYmxlLlxuXG5JIGxvb2tlZCBhdCBgbWRpby1ncGlvYCwgdGhpbmtpbmcgbWF5YmUgSSBjb3VsZCBkcml2ZSBpdCB3aXRoIEdQSU9zLCBidXQgU3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBpbnRlcmFjdCB3aXRoIEdQSU9zIGluIHRoYXQgd2F5IHRvIGVtdWxhdGUgYW4gTURJTyBwcm90b2NvbC4gU28sIHNjcmFwIHRoYXQgaWRlYS4gVGhlbiwgSSBjb25zaWRlcmVkIHRoZSBgU0lPQ1NNSUlSRUdgIGlvY3RsLiBJdCdzIGEgcG9zc2liaWxpdHksIHJpZ2h0PyBJZiBhIG5ldHdvcmsgZGV2aWNlIGhhcyBhbiBNRElPIGJ1cywgSSBjb3VsZCB1c2UgaXQgdG8gd3JpdGUgdG8gUEhZIHJlZ2lzdGVycy4gQnV0LCB0aGUgcnViIGlzIHRoYXQgdGhlIFBIWSBkcml2ZXIgaGFzIHRvIGJlIGJvdW5kIHRvIHRoZSBQSFkgZGV2aWNlICpmaXJzdCouIEFuZCB3aXRob3V0IHRoZSBoYXJkd2FyZSBwcmVzZW50LCB0aGUgUEhZIGRldmljZSBpc24ndCBjcmVhdGVkLCBhbmQgdGh1cyB0aGUgZHJpdmVyIGlzbid0IGJvdW5kLlxuXG5JIGJyaWVmbHkgY29uc2lkZXJlZCBgSTJDYCBvciBgU1BJYCwgYnV0IHF1aWNrbHkgZGlzbWlzc2VkIHRoZW0g4oCTIHRoaXMgaXMgYW4gTURJTyBkZXZpY2UuIFdoYXQgYWJvdXQgdGhlIGRldmljZSB0cmVlPyBDYW4gSSBiaW5kIHRoZSBkcml2ZXIgdGhlcmU/IFNhZGx5LCBTeXprYWxsZXIgZG9lc24ndCBhbGxvdyBmb3IgZHluYW1pYyBtb2RpZmljYXRpb24gb2YgdGhlIGRldmljZSB0cmVlLlxuXG5TbywgaXQncyBzdGFydGluZyB0byBsb29rIHByZXR0eSBibGVhay4gSXQgYXBwZWFycyB0aGF0IHJlYWNoaW5nIGB5dDg1MjFfZ2V0X2ZlYXR1cmVzYCBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiBpcyBwcmV0dHkgbXVjaCBpbXBvc3NpYmxlLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2sgaWYgdGhlcmUncyBhbnkgYG1vdG9yY29tbWAgc3BlY2lmaWMgZW11bGF0aW9uIGluIFFFTVUuIEkgcXVpY2tseSBzY2FubmVkIHRoZSBjb21tb24gbmV0d29yayBkZXZpY2VzOiBgZTEwMDBgLCBgcnRsODEzOWAsIGB2aXJ0aW8tbmV0YCwgYHBjbmV0YCwgYG5lMmtgLCBgdHVsaXBgLCBgdm14bmV0M2AsIGBpZ2JgLCBldGMuIE5vbmUgb2YgdGhlc2UgdXNlIGBtb3RvcmNvbW1gIFBIWXMuIEkgdGhlbiBjb25zaWRlcmVkIG90aGVyIE1BQ3MgZW11bGF0ZWQgaW4gUUVNVSwgbGlrZSBgZHdtYWNgIChzdG1tYWMpIGluIGVpdGhlciBgaHcvbmV0L2FsbHdpbm5lci1zdW44aS1lbWFjLmNgIG9yIGBody9uZXQvaW14X2ZlYy5jYCwgYnV0IGV2ZW4gdGhleSBkb24ndCBzZWVtIHRvIGVtdWxhdGUgYSBgbW90b3Jjb21tYCBQSFkuIEl0J3MgbW9yZSBsaWtlbHkgdGhhdCBRRU1VIGVtdWxhdGVzIGEgZ2VuZXJpYyBQSFksIGxpa2UgUmVhbHRlayBvciBOYXRpb25hbCBTZW1pY29uZHVjdG9yLiBMZXQgbWUganVzdCBkbyBhIHF1aWNrIHNlYXJjaCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgbm8gbWVudGlvbiBvZiBgbW90b3Jjb21tYCBpbiB0aGUgUUVNVSBzb3VyY2UsIGV2ZW4gdGhvdWdoIHRoYXQgaXMgdW5saWtlbHkuXG5cbkFscmlnaHQsIGlzIHRoZXJlIGFub3RoZXIgd2F5IHRvIHRyaWdnZXIgYHl0ODUyMV9nZXRfZmVhdHVyZXNgPyBJIG5lZWQgdG8gdGhpbmsgdGhpcyB0aHJvdWdoLiBJdCdzIGEgY2FsbGJhY2sgZm9yIGBnZXRfZmVhdHVyZXNgIHdpdGhpbiB0aGUgYHBoeV9kcml2ZXJgIHN0cnVjdHVyZS4gU28sIGl0J3MgZ29pbmcgdG8gYmUgY2FsbGVkIGZyb20gZWl0aGVyIGBwaHlfcHJvYmVgLCBgcGh5X2F0dGFjaF9kaXJlY3RgLCBvciBgcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzYC4gQnV0LCBpdCBhbGwgY29tZXMgYmFjayB0byB0aGUgc2FtZSBwcm9ibGVtOiBUaGUgYG1vdG9yY29tbWAgUEhZIGRyaXZlciBuZWVkcyB0byBiZSBib3VuZCB0byBhIGBwaHlfZGV2aWNlYC4gQW5kIGEgYHBoeV9kZXZpY2VgIGlzIG9ubHkgY3JlYXRlZCB3aGVuIHRoZSBNRElPIGJ1cyBpcyBzY2FubmVkLCBhbmQgdGhlIFBIWSBJRCBtYXRjaGVzIGBQSFlfSURfWVQ4NTExYCAob3Igd2hhdGV2ZXIgdGhlIGNvcnJlY3QgSUQgYWN0dWFsbHkgaXMuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgSUQgdG8gYmUgY2VydGFpbikuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjIxLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjIxOjAxLjUyMjgzMDU0OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxNTc3ODI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JRF9ZVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xNC1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTU6I2RlZmluZSBQSFlfSURfWVQ4NTExXFx0XFx0MHgwMDAwMDEwYVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxNjojZGVmaW5lIFBIWV9JRF9ZVDg1MjFcXHRcXHQweDAwMDAwMTFhXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE3OiNkZWZpbmUgUEhZX0lEX1lUODUyMlxcdFxcdDB4NGY1MWU5MjhcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTg6I2RlZmluZSBQSFlfSURfWVQ4NTMxXFx0XFx0MHg0ZjUxZTkxYlxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxOTojZGVmaW5lIFBIWV9JRF9ZVDg1MzFTXFx0XFx0MHg0ZjUxZTkxYVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoyMDojZGVmaW5lIFBIWV9JRF9ZVDg4MjFcXHRcXHQweDRmNTFlYTE5XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTIxLS8qIFlUODUyMS9ZVDg1MzFTL1lUODgyMSBSZWdpc3RlciBPdmVydmlld1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTg5MD1zdGF0aWMgaW50IHl0cGh5X3JnbWlpX2Nsa19kZWxheV9jb25maWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy05MjEtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfR01JSTpcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6OTIyOlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlcGh5X2lkICE9IFBIWV9JRF9ZVDg1MzFTKVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy05MjMtXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTEwNjM9c3RhdGljIGludCB5dDg1MjFfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xMTE2LVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxMTE3OlxcdGlmIChwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlcGh5X2lkID09IFBIWV9JRF9ZVDg1MjEpIHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTExOC1cXHRcXHRzd2l0Y2ggKGZyZXEpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xMTQzLVxcdFxcdH1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTE0NDpcXHR9IGVsc2UgaWYgKHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VwaHlfaWQgPT0gUEhZX0lEX1lUODUzMVMpIHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTE0NS1cXHRcXHRzd2l0Y2ggKGZyZXEpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0xNjc2PXN0YXRpYyBpbnQgeXQ4NTIxX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTcwOS1cXHRpZiAocGh5X2ludGVyZmFjZV9pc19yZ21paShwaHlkZXYpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE3MTA6XFx0ICAgIHBoeWRldl9pZF9jb21wYXJlKHBoeWRldiwgUEhZX0lEX1lUODUzMVMpKVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xNzExLVxcdFxcdHJldCA9IHl0ODUzMV9zZXRfZHMocGh5ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0zMDYzPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtb3RvcmNvbW1fcGh5X2RydnNbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA2NC1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMwNjU6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MTEpLFxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMDY2LVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiWVQ4NTExIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNzMtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMDc0OlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4NTIxKSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA3NS1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIllUODUyMSBHaWdhYml0IEV0aGVybmV0XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMDkzLVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzA5NDpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUyMiksXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwOTUtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJZVDg1MjIgMTAwIE1lZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxMDEtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTAyOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4NTMxKSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzEwMy1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIllUODUzMSBHaWdhYml0IEV0aGVybmV0XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTE1LVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzExNjpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUzMVMpLFxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTE3LVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiWVQ4NTMxUyBHaWdhYml0IEV0aGVybmV0XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTMyLVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzEzMzpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODgyMSksXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxMzQtXFx0XFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJZVDg4MjEgMi41R2JwcyBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTMxNTg9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBtb3RvcmNvbW1fdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxNTk6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUxMSkgfSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE2MDpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4NTIxKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTYxOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MjIpIH0sXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxNjI6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUzMSkgfSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE2MzpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4NTMxUykgfSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE2NDpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4ODIxKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTY1LVxcdHsgLyogc2VudGluZWwgKi8gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoyMTowMS43NzQ0MTQ3NzVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjUwMDczOTY2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBTeXprYWxsZXIncyBNRElPIERldmljZSBDcmVhdGlvbiBDYXBhYmlsaXRpZXMqKlxuXG5Pa2F5LCBzbyB0aGVzZSBkZXZpY2UgSURzIGFyZSBjbGVhcmx5ICpzcGVjaWZpYyouIFRoZSBjaGFsbGVuZ2UsIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlLCBib2lscyBkb3duIHRvIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiBjb25qdXJlIHVwIGEgdmlydHVhbCBNRElPIGRldmljZSB3aXRoIHRoZSBleGFjdCBJRCBJIG5lZWQuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogZG9lcyBzeXprYWxsZXIgaGF2ZSBhbnkgbWVjaGFuaXNtIGZvciB2aXJ0dWFsIE1ESU8gZGV2aWNlIGNyZWF0aW9uICphdCBhbGwqP1xuXG5MZXQncyBzZWUuIEkgcmVtZW1iZXIgaXQgbGV2ZXJhZ2VzIGEgdmFyaWV0eSBvZiBuZXR3b3JrIGRldmljZXMgZm9yIGZ1enppbmc6IGB0dW5gLCBgdGFwYCwgYHZldGhgLCBgbWFjc2VjYCwgdGhlIHdob2xlIGFscGhhYmV0IHNvdXAgb2YgdmlydHVhbCBuZXR3b3JraW5nIHN0dWZmLi4uIGB2Y2FuYCwgYHZ4Y2FuYCwgYGR1bW15YCwgYG5sbW9uYCwgYGdlbmV2ZWAsIGBtYWN2bGFuYCwgYGlwdmxhbmAsIGBicmlkZ2VgLCBgYm9uZGAsIGB0ZWFtYCwgYHZsYW5gLCBgd2lyZWd1YXJkYCwgYGJhdGFkdmAsIGBoc3JgLCBgeGZybWAsIGBuZXRkZXZzaW1gLCBgYmFyZXVkcGAsIGBhbXRgLCBgd3dhbmAsIGBtY3RwYCwgYHFydHJgLCBgY2FuYCwgYGJsdWV0b290aGAsIGBuZmNgLCBgaWVlZTgwMjE1NGAsIGBtYWM4MDIxMV9od3NpbWAsIGB2aGNpYCwgYHVpbnB1dGAsIGBzbmQtZHVtbXlgLCBgdmttc2AsIGBsb29wYmFja2AuIFRoYXQncyBhIGNvbXByZWhlbnNpdmUgbGlzdC4gQnV0LCByZXZpZXdpbmcgdGhlbSwgKm5vbmUqIG9mIHRob3NlIHNlZW0gZGVzaWduZWQgdG8gY3JlYXRlIE1ESU8gZGV2aWNlcyB3aXRoIGFyYml0cmFyeSBJRHMuIFRoZXkncmUgZm9jdXNlZCBvbiBvdGhlciBuZXR3b3JraW5nIGxheWVycy5cblxuSG9sZCBvbiwgdGhvdWdoLiBUaGUgYGRzYV9sb29wYCBkcml2ZXIgaXMgcmluZ2luZyBhIGJlbGwuIEkgc2VlbSB0byByZWNhbGwgaXQgc2ltdWxhdGluZyBhIHN3aXRjaC4gQ291bGQgaXQgYmUgY3JlYXRpbmcgUEhZcyBhcyBwYXJ0IG9mIHRoYXQgbW9jay11cD8gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIHNwZWNpZmljYWxseSBsb29rIGF0IGhvdyB0aGUgYGRzYV9sb29wYCBkcml2ZXIgY3JlYXRlcyBpdHMgdmlydHVhbCBzd2l0Y2ggYW5kIGFzc29jaWF0ZWQgZGV2aWNlcy4gVGhlIGtleSBmdW5jdGlvbiB0byBleGFtaW5lIHdvdWxkIGJlIGBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXZgIGluIGBkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY2AuIExldCdzIHNlZSBpZiB0aGlzIGlzIHRoZSBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMzE4LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjIxOjA4LjI3NTE1NzMyNFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk1MDM0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQzOD1zdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0NS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDY6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQ4Mj1zdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3OlxcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4OC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoyMTowOC4zMzQ2NjQyNTNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIwNTk1ODE3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldmAgZnVuY3Rpb24uIEknbSBnb2luZyB0byBhcHByb2FjaCB0aGlzIHdpdGggdGhlIGFzc3VtcHRpb24gdGhhdCwgbGlrZSBtb3N0IG1vZGVybiBEU0EgY29kZSwgaXQncyBidWlsZGluZyBvbiB0aGUgZXhpc3RpbmcgZm91bmRhdGlvbmFsIHN0cnVjdHVyZXMgYW5kIGFic3RyYWN0aW9ucy4gTXkgaW5pdGlhbCBleHBlY3RhdGlvbnMgYXJlIHRoYXQgaXQgd2lsbCBiZSBzZXR0aW5nIHVwIGEgbmV3IHZpcnR1YWwgZGV2aWNlIHJlcHJlc2VudGluZyBhIHN3aXRjaCwgbGlrZWx5IGFuIGludGVybmFsIG9uZSwgYW5kIHByb2JhYmx5IGNvbmZpZ3VyaW5nIHRoZSBNRElPIChNYW5hZ2VtZW50IERhdGEgSW5wdXQvT3V0cHV0KSBpbnRlcmZhY2UgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIHN3aXRjaCdzIFBIWXMgKFBoeXNpY2FsIExheWVyIFRyYW5zY2VpdmVycykuXG5cbknigJlsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgICoqRGV2aWNlIEFsbG9jYXRpb246KiogSG93IGl0IGFsbG9jYXRlcyB0aGUgbmV3IGBzdHJ1Y3QgZHNhX3N3aXRjaGAgKG9yIHNpbWlsYXIpIHN0cnVjdHVyZS4gSXMgaXQgdXNpbmcgdGhlIHN0YW5kYXJkIGBremFsbG9jYCBwYXR0ZXJuPyBBcmUgdGhlcmUgYW55IGN1c3RvbSBhbGxvY2F0b3JzP1xuKiAgICoqTURJTyBTZXR1cDoqKiBUaGUgbWVhdCBvZiB0aGUgbWF0dGVyLiBIb3cgaXMgdGhlIE1ESU8gYnVzIGJlaW5nIGFzc2lnbmVkPyBJcyBpdCBjcmVhdGluZyBhIG5ldyBNRElPIGJ1cyBpbnN0YW5jZSBvciBwaWdneWJhY2tpbmcgb24gYW4gZXhpc3Rpbmcgb25lPyBXaGF0IHNwZWNpZmljIE1ESU8gZHJpdmVyIGhvb2tzIChlLmcuLCBgbWRpb2J1c19yZWdpc3RlcmAgb3IgZXF1aXZhbGVudCkgYXJlIHVzZWQ/IEFyZSB0aGVyZSBhbnkgc3BlY2lhbCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHRoZSBNRElPIGludGVyZmFjZS4gSSBleHBlY3Qgc29tZSBQSFkgYWRkcmVzc2luZyBhbmQgc2V0dXAgdG8gaGFwcGVuIGhlcmUuXG4qICAgKipEU0EgRHJpdmVyIEludGVyYWN0aW9uOioqIEnigJlsbCBiZSBjaGVja2luZyBob3cgdGhlIG5ldyBzd2l0Y2ggZGV2aWNlIGludGVncmF0ZXMgaW50byB0aGUgbWFpbiBEU0EgZHJpdmVyIGZyYW1ld29yay4gSXMgaXQgcmVnaXN0ZXJpbmcgdGhlIHN3aXRjaCB3aXRoIGBkc2FfcmVnaXN0ZXJfc3dpdGNoYCBvciBhIHNpbWlsYXIgZnVuY3Rpb24/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgaG9va3MgYmVpbmcgc2V0IHVwIGZvciBEU0EtbGV2ZWwgb3BlcmF0aW9ucyAoZS5nLiwgVkxBTiBmaWx0ZXJpbmcsIHBvcnQgY29uZmlndXJhdGlvbik/XG4qICAgKipFcnJvciBIYW5kbGluZzoqKiBJdCdzICpjcml0aWNhbCogdG8gc2VlIGhvdyByb2J1c3QgdGhlIGVycm9yIGhhbmRsaW5nIGlzLiBMb29rIGZvciBjaGVja3MgYWZ0ZXIgZXZlcnkgYWxsb2NhdGlvbiBvciBzeXN0ZW0gY2FsbCwgYW5kIGhvdyBpdCBoYW5kbGVzIGNsZWFudXAgb2YgYWxsb2NhdGVkIHJlc291cmNlcyBpZiBzb21ldGhpbmcgZmFpbHMuIFByb3BlciByZXNvdXJjZSBjbGVhbnVwIGlzIGVzc2VudGlhbC5cbiogICAqKlJlc291cmNlIE1hbmFnZW1lbnQ6KiogSG93IGlzIHRoaXMgZnVuY3Rpb24gbWFuYWdpbmcgaXRzIHJlc291cmNlcywgbGlrZSB0aGUgTURJTyBidXMsIERTQSBzd2l0Y2ggc3RydWN0dXJlLCBhbmQgbWVtb3J5PyBBcmUgdGhlc2UgY29ycmVjdGx5IGNsZWFuZWQgdXAgb24gZGV2aWNlIHJlbW92YWwgb3IgZHJpdmVyIHVubG9hZD9cblxuVWx0aW1hdGVseSwgSSBleHBlY3QgdG8gc2VlIGEgZnVuY3Rpb24gdGhhdCwgZ2l2ZW4gYXBwcm9wcmlhdGUgcGFyYW1ldGVycywgY3JlYXRlcyBhIG5ldyBpbnRlcm5hbCBEU0Egc3dpdGNoIGRldmljZSBjYXBhYmxlIG9mIGludGVyYWN0aW5nIHdpdGggaXRzIFBIWXMgdGhyb3VnaCBNRElPLiBUaGUgcXVhbGl0eSBvZiB0aGlzIHNldHVwIGRldGVybWluZXMgaG93IHdlbGwgdGhlIHN3aXRjaCBvcGVyYXRlcy4gVGltZSB0byByZWFkIHRoZSBjb2RlIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDI4OSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjIxOjEzLjU0MDYyNDQ3NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NDYsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NDY6XFx0c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXFxuIDQ0NzpcXHR7XFxuIDQ0ODpcXHRcXHRzdGF0aWMgc3RydWN0IGRzYV9sb29wX3BkYXRhIGRzYV9sb29wX3BkYXRhID0ge1xcbiA0NDk6XFx0XFx0XFx0LmNkID0ge1xcbiA0NTA6XFx0XFx0XFx0XFx0LnBvcnRfbmFtZXNbMF0gPSBcXFwibGFuMVxcXCIsXFxuIDQ1MTpcXHRcXHRcXHRcXHQucG9ydF9uYW1lc1sxXSA9IFxcXCJsYW4yXFxcIixcXG4gNDUyOlxcdFxcdFxcdFxcdC5wb3J0X25hbWVzWzJdID0gXFxcImxhbjNcXFwiLFxcbiA0NTM6XFx0XFx0XFx0XFx0LnBvcnRfbmFtZXNbM10gPSBcXFwibGFuNFxcXCIsXFxuIDQ1NDpcXHRcXHRcXHRcXHQucG9ydF9uYW1lc1tEU0FfTE9PUF9DUFVfUE9SVF0gPSBcXFwiY3B1XFxcIixcXG4gNDU1OlxcdFxcdFxcdH0sXFxuIDQ1NjpcXHRcXHRcXHQubmFtZSA9IFxcXCJEU0EgbW9ja3VwIGRyaXZlclxcXCIsXFxuIDQ1NzpcXHRcXHRcXHQuZW5hYmxlZF9wb3J0cyA9IDB4MWYsXFxuIDQ1ODpcXHRcXHRcXHQubmV0ZGV2ID0gXFxcImV0aDBcXFwiLFxcbiA0NTk6XFx0XFx0fTtcXG4gNDYwOlxcdFxcdHN0cnVjdCBtaWlfYnVzICpidXM7XFxuIDQ2MTpcXHRcXHRpbnQgcmV0ID0gLUVOT0RFVjtcXG4gNDYyOlxcdFxcbiA0NjM6XFx0XFx0YnVzID0gbWRpb19maW5kX2J1cyhcXFwiZml4ZWQtMFxcXCIpO1xcbiA0NjQ6XFx0XFx0aWYgKFdBUk5fT04oIWJ1cykpXFxuIDQ2NTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA0NjY6XFx0XFxuIDQ2NzpcXHRcXHRzd2l0Y2hfbWRpb2RldiA9IG1kaW9fZGV2aWNlX2NyZWF0ZShidXMsIDMxKTtcXG4gNDY4OlxcdFxcdGlmIChJU19FUlIoc3dpdGNoX21kaW9kZXYpKVxcbiA0Njk6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDQ3MDpcXHRcXG4gNDcxOlxcdFxcdHN3aXRjaF9tZGlvZGV2LVxcdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XFxuIDQ3MjpcXHRcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEgPSBcXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XFxuIDQ3MzpcXHRcXG4gNDc0OlxcdFxcdHJldCA9IG1kaW9fZGV2aWNlX3JlZ2lzdGVyKHN3aXRjaF9tZGlvZGV2KTtcXG4gNDc1OlxcdFxcdGlmIChyZXQpXFxuIDQ3NjpcXHRcXHRcXHRtZGlvX2RldmljZV9mcmVlKHN3aXRjaF9tZGlvZGV2KTtcXG4gNDc3OlxcdG91dDpcXG4gNDc4OlxcdFxcdHB1dF9kZXZpY2UoXFx1MDAyNmJ1cy1cXHUwMDNlZGV2KTtcXG4gNDc5OlxcdFxcdHJldHVybiByZXQ7XFxuIDQ4MDpcXHR9XFxuIDQ4MTpcXHRcXG4gNDgyOlxcdHN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2luaXQodm9pZClcXG4gNDgzOlxcdHtcXG4gNDg0OlxcdFxcdHVuc2lnbmVkIGludCBpO1xcbiA0ODU6XFx0XFx0aW50IHJldDtcXG4gNDg2OlxcdFxcbiA0ODc6XFx0XFx0cmV0ID0gZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KCk7XFxuIDQ4ODpcXHRcXHRpZiAocmV0KVxcbiA0ODk6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNDkwOlxcdFxcbiA0OTE6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE5VTV9GSVhFRF9QSFlTOyBpKyspXFxuIDQ5MjpcXHRcXHRcXHRwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XFxuIDQ5MzpcXHRcXG4gNDk0OlxcdFxcdHJldCA9IG1kaW9fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZkc2FfbG9vcF9kcnYpO1xcbiA0OTU6XFx0XFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoyMToxMy41NDA3MDgyNDZaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUxOTMwMzg1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVU0IgYW5kIE1vdG9yY29tbSBQSFlzOiBBIFF1aWNrIEV4cGxvcmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpdCdzIHVzaW5nIGEgYGZpeGVkLXBoeWAsIGJ1dCBpdCdzICpub3QqIGNyZWF0aW5nIE1vdG9yY29tbSBQSFlzIGRpcmVjdGx5LiBUaGF0J3MgYSBsaXR0bGUgdW51c3VhbCwgYW5kIGl0J3MgZ290IG1lIHRoaW5raW5nLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzLCBpcyB0aGVyZSBldmVuIGFub3RoZXIgd2F5IHRvIGdldCBNRElPIGRldmljZXMgaW50byB0aGUgc3lzdGVtPyBCZXlvbmQgdGhlIG9idmlvdXMuXG5cbldhaXQgYSBzZWNvbmQuLi5JJ20gcmVtZW1iZXJpbmcgdGhhdCBzeXprYWxsZXIgaGFzIHNvbWUgYHN5el91c2JfY29ubmVjdGAgY2FsbHMsIGxpa2UgYHN5el91c2JfY29ubmVjdF9hdGg5a2AuIFRoYXQncyBpbnRlcmVzdGluZywgbWF5YmUgdGhlcmUncyBhIGNvbm5lY3Rpb24gdGhlcmUuIFRoaXMgbWFrZXMgbWUgY29uc2lkZXIgaWYgdGhlcmUgaXMgYSBVU0IgZXRoZXJuZXQgYWRhcHRlciBvdXQgdGhlcmUgdGhhdCAqZG9lcyogdXNlIE1vdG9yY29tbSBQSFlzLCBpdCBtaWdodCBiZSBhIHdheSB0byBpbmplY3QgdGhlbS5cblxuVGhlIGJlc3QgdGhpbmcgdG8gZG8gaXMgdG8gY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgVVNCIGRyaXZlcnMgdGhhdCBhY3R1YWxseSB1c2UgbW90b3Jjb21tIFBIWXMgYXQgYWxsLiBBIHF1aWNrIGludmVzdGlnYXRpb24gb2YgZXhpc3RpbmcgZHJpdmVycyBhbmQgdGhlaXIgaGFyZHdhcmUgc3VwcG9ydCBpcyBwcm9iYWJseSB0aGUgYmVzdCBmaXJzdCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTU2NSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MjE6MTkuMDYwMDE0NjQ0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTExNzMwOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW90b3Jjb21tXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjIxOjE5LjEyNTE0MDY5M1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzY0MTAwNDM3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCB0b3VjaGVzIHRoZSBgZHdtYWMtbW90b3Jjb21tLmNgIGRyaXZlci4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBQQ0ksIGFuZCBzcGVjaWZpY2FsbHkgYSBQQ0kgZGV2aWNlIGZyb20gTW90b3Jjb21tLiBJIGtub3cgdGhhdCBgZHdtYWMtbW90b3Jjb21tLmNgIHJlZ2lzdGVycyBhIGRldmljZSB3aXRoIGBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTU9UT1JDT01NLCAweDY4MDEpYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgY2FuIHN5emthbGxlciBldmVuIHRvdWNoIHRoaXM/IEkga25vdyBzeXprYWxsZXIgaGFzIGB2aGNpYCBmb3IgVVNCLCB3aGljaCBpcyBuZWF0LCBidXQgSSBjYW4ndCByZWNhbGwgYW55IGtpbmQgb2YgZXF1aXZhbGVudCBmb3IgUENJLiBcblxuTGV0IG1lIHJlcGhyYXNlIHRoYXQuIEkga25vdyBzeXprYWxsZXIgZG9lc24ndCBnZW5lcmFsbHkgZW11bGF0ZSAqYXJiaXRyYXJ5KiBQQ0kgZGV2aWNlcy4gSXQgdXNlcyBRRU1VIHRvIHByb3ZpZGUgdGhlIFBDSSBkZXZpY2VzIGlmIHlvdSdyZSBmdXp6aW5nIHRoYXQgd2F5LiBBbmQgSSByZWNhbGwgdGhlcmUgYXJlIGN1c3RvbSBQQ0kgZnV6emVycyBvdXQgdGhlcmUsIGJ1dCBzeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgZ2VuZXJpYyBQQ0kgZGV2aWNlIGluamVjdG9yIGxpa2UgYHZoY2lgLlxuXG5XYWl0LCB3aGF0IGFib3V0IGBzeXpfcGNpX2RldmljZV9hZGRgPyBOb3BlLCB0aGF0IGRvZXNuJ3QgZXhpc3QuIFRoZXJlJ3MgVkZJTyBmdXp6aW5nLCBidXQgdGhhdCdzIGZvciB1c2Vyc3BhY2UgZHJpdmVycywgcmlnaHQ/IFNvLCB1bmxlc3MgdGhlIGFjdHVhbCBoYXJkd2FyZSBpcyBwcmVzZW50LCBgZHdtYWMtbW90b3Jjb21tYCBpcyBkZWFkIGluIHRoZSB3YXRlci5cblxuT2theSwgbWF5YmUgdGhlcmUncyBhIHdvcmthcm91bmQuIENvdWxkIHRoZSBQSFkgZHJpdmVyIGJlIHJlYWNoZWQgaW5kaXJlY3RseSB0aHJvdWdoIGFub3RoZXIgTUFDIGRyaXZlcj8gRXZlbiBpZiB0aGF0IHdlcmUgdGhlIGNhc2UsIHRoZSBQSFkgZGV2aWNlIGl0c2VsZiB3b3VsZCBzdGlsbCBuZWVkIHRvIGJlIGluc3RhbnRpYXRlZC4gVGhlIE1ESU8gYnVzIHdvdWxkIG5lZWQgdG8gZmluZCB0aGUgUEhZIElELCBhbmQgd2l0aG91dCB0aGUgaGFyZHdhcmUsIHRoYXQgd29uJ3QgaGFwcGVuLiBUaGUgZHJpdmVyIHdvbid0IHByb2JlLlxuXG5JcyB0aGVyZSBhbnkgd2F5IHRvIGZha2UgYSBQSFkgSUQgb24gYW4gTURJTyBidXM/IE1heWJlIGlmIHRoZXJlJ3MgYSB2aXJ0dWFsIE1ESU8gYnVzLiBMZXQncyBzZWUuLi4gYG1hY21hY2AsIGBkdW1teWAsIGBuZXRkZXZzaW1gLCBgdHVuL3RhcGAsIGB2ZXRoYCwgYG1hY3ZsYW5gLCBgZHNhX2xvb3BgLi4uIE5vLiBOb25lIG9mIHRoZW0gaGF2ZSBNRElPIGV4Y2VwdCBgZHNhX2xvb3BgIHdoaWNoIHVzZXMgYGZpeGVkLXBoeWAuXG5cblNvLCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IHRoZXJlJ3Mgbm8gcGF0aCB0byBgeXQ4NTIxX2dldF9mZWF0dXJlc2AgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbi4gU2luY2UgdGhlIHBhdGNoIG1vZGlmaWVzIGBtb3RvcmNvbW0uY2AsIGEgaGFyZHdhcmUtc3BlY2lmaWMgUEhZIGRyaXZlciwgYW5kIHRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSwgdGhpcyBjb2RlIGlzIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlxuXG5MZXQgbWUgZG91YmxlIGNoZWNrLiBDb3VsZCBgeXQ4NTIxX2dldF9mZWF0dXJlc2AgYmUgY2FsbGVkIGZyb20gc29tZXdoZXJlIGVsc2U/IE5vcGUsIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24gaW5zaWRlIGBtb3RvcmNvbW0uY2AuIENvdWxkIGBtb3RvcmNvbW0uY2AgYmUgY29tcGlsZWQgYXMgcGFydCBvZiBzb21lIG90aGVyIG1vZHVsZT8gTm8sIGl0J3MgaW4gaXRzIG93biBgbW90b3Jjb21tLmtvYCBvciBidWlsdC1pbiwgYW5kIG9ubHkgcmVnaXN0ZXJzIGl0c2VsZiBhcyBhIFBIWSBkcml2ZXIuXG5cbk9rYXksIGxldCBtZSByZXZpZXcgdGhlIGluc3RydWN0aW9ucyBhZ2Fpbi4gXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi5cIlxuXG5HaXZlbiB0aGF0IGBtb3RvcmNvbW0uY2AgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgZHJpdmVyLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgZm9yIGl0LCBhbmQgdGhlIGZhY3QgdGhhdCB0aGVyZSdzIG5vIGBtZGlvYCBpbmplY3Rpb24gbWVjaGFuaXNtIGluIHN5emthbGxlci4gSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlbGV2YW50IGNvZGUgaXMgc2ltcGx5IHVucmVhY2hhYmxlIGluIHRoZSB0YXJnZXQgZW52aXJvbm1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTkxMywiT3V0cHV0VG9rZW5zIjo5MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoyMTozMi43NjYxNDgxMDJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTc1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBkcml2ZXIgKG1vdG9yY29tbSkuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBQSFkgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIGFuZCBzeXprYWxsZXIgY2Fubm90IGluc3RhbnRpYXRlIGFyYml0cmFyeSBQSFkgZGV2aWNlcyB3aXRob3V0IGhhcmR3YXJlLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgZHJpdmVyIChtb3RvcmNvbW0pLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgUEhZIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBhbmQgc3l6a2FsbGVyIGNhbm5vdCBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgUEhZIGRldmljZXMgd2l0aG91dCBoYXJkd2FyZSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowl8pxd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-11 03:58:35 +0000 UTC FinishedAt: 2026-07-11 04:21:34 +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+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUEhZIGRyaXZlciAobW90b3Jjb21tKS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIFBIWSBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgYW5kIHN5emthbGxlciBjYW5ub3QgaW5zdGFudGlhdGUgYXJiaXRyYXJ5IFBIWSBkZXZpY2VzIHdpdGhvdXQgaGFyZHdhcmUsIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjJlYzQ5OTYzYzJjOTk4ZTA5MjhjNjU0M2ExZGVkM2U2YzkzZGRiZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDExIDA0OjE5OjA0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYyBiL2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uY1xuaW5kZXggNTA3MTYwNWExYTExN2EuLjgxODA5OGE3OGQyM2RlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmNcbkBAIC0yNDkwLDcgJiM0MzsyNDkwLDggQEAgc3RhdGljIGludCB5dDg1MjFfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdC8qIGFkZCBmaWJlciYjMzk7cyBmZWF0dXJlcyB0byBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkICovXG4gXHRcdHl0ODUyMV9wcmVwYXJlX2ZpYmVyX2ZlYXR1cmVzKHBoeWRldiwgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCk7XG4gXHR9XG4tXHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0ID8gcmV0IDogZ2VucGh5X2M0NV9yZWFkX2VlZV9hYmlsaXRpZXMocGh5ZGV2KTtcbiB9XG4gXG4gLyoqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgZHJpdmVyIChtb3RvcmNvbW0pLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgUEhZIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBhbmQgc3l6a2FsbGVyIGNhbm5vdCBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgUEhZIGRldmljZXMgd2l0aG91dCBoYXJkd2FyZSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDYyZWM0OTk2M2MyYzk5OGUwOTI4YzY1NDNhMWRlZDNlNmM5M2RkYmYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAxMSAwNDoxOTowNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYyBiL2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYwppbmRleCA1MDcxNjA1YTFhMTE3YS4uODE4MDk4YTc4ZDIzZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMKQEAgLTI0OTAsNyAmIzQzOzI0OTAsOCBAQCBzdGF0aWMgaW50IHl0ODUyMV9nZXRfZmVhdHVyZXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkJLyogYWRkIGZpYmVyJiMzOTtzIGZlYXR1cmVzIHRvIHBoeWRldi0mZ3Q7c3VwcG9ydGVkICovCiAJCXl0ODUyMV9wcmVwYXJlX2ZpYmVyX2ZlYXR1cmVzKHBoeWRldiwgcGh5ZGV2LSZndDtzdXBwb3J0ZWQpOwogCX0KLQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXR1cm4gcmV0ID8gcmV0IDogZ2VucGh5X2M0NV9yZWFkX2VlZV9hYmlsaXRpZXMocGh5ZGV2KTsKIH0KIAogLyoqCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MzQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWNlbnQgTmV0d29yayBQSFkgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBwb2tpbmcgYXJvdW5kIGluIHRoZSBgZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jYCBmaWxlLiBUaGUgc3BlY2lmaWMgYXJlYSBvZiBpbnRlcmVzdCBpcyB0aGUgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGUgY2hhbmdlIGlzIGEgc2ltcGxlIGNvbmRpdGlvbmFsOiB0aGUgb3JpZ2luYWwgY29kZSBqdXN0IHJldHVybmVkIHRoZSB2YWx1ZSBvZiBgcmV0YCwgYnV0IG5vdyBpdCYjMzk7cyByZXR1cm5pbmcgYHJldCA/IHJldCA6IGdlbnBoeV9jNDVfcmVhZF9lZWVfYWJpbGl0aWVzKHBoeWRldik7YC4gRXNzZW50aWFsbHksIGl0IGlzIGNoZWNraW5nIGlmIHJldCBpcyB0cnVlLCBpZiBzbywgcmV0dXJuaW5nIHJldCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzZWNvbmQgZXhwcmVzc2lvbi4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRlbHZlIGludG8gdGhlIGNvZGUgaXRzZWxmLiBJIHdhbnQgdG8gc2VlIHdoYXQgYHJldGAgcmVwcmVzZW50cyBpbiB0aGlzIGNvbnRleHQgYW5kIHVuZGVyc3RhbmQgdGhlIGxvZ2ljIHRoYXQmIzM5O3MgYmVpbmcgdXNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgY29uZGl0aW9uYWwgd2FzIGludHJvZHVjZWQgYW5kIHdoYXQgcG90ZW50aWFsIGVkZ2UgY2FzZXMgaXQmIzM5O3MgdHJ5aW5nIHRvIGFkZHJlc3MuIElzIHRoaXMgYWJvdXQgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCAoRUVFKSBjYXBhYmlsaXRpZXMsIG9yIHNvbWV0aGluZyBlbHNlPyBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBpbnRvIHdoYXQgYGdlbnBoeV9jNDVfcmVhZF9lZWVfYWJpbGl0aWVzKHBoeWRldilgIGlzIGFuZCBpdHMgaW1wbGljYXRpb25zLiBBbHNvLCB3aGF0IGRvZXMgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIGRvIGlmIHRoZXJlIGlzIGFuIGVycm9yPyBNeSBmYW1pbGlhcml0eSB3aXRoIHRoZSBNb3RvcmNvbW0gUEhZIGRyaXZlcnMgd2lsbCBjb21lIGluIGhhbmR5IGhlcmUuIFVsdGltYXRlbHksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgcGFydGljdWxhciBtb2RpZmljYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eXQ4NTIxX2dldF9mZWF0dXJlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MjQwMD1zdGF0aWMgaW50IHl0cGh5X3V0cF9yZWFkX2FiaWxpdGllcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0yNDQwLS8qKlxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjI0NDE6ICogeXQ4NTIxX2dldF9mZWF0dXJlc19wYWdlZCgpIC0gIHJlYWQgc3VwcG9ydGVkIGxpbmsgbW9kZXMgZm9yIG9uZSBwYWdlXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMjQ0Mi0gKiBAcGh5ZGV2OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0yNDQ3LSAqL1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjI0NDg6c3RhdGljIGludCB5dDg1MjFfZ2V0X2ZlYXR1cmVzX3BhZ2VkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBwYWdlKVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTI0NDkte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0yNDcxLS8qKlxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjI0NzI6ICogeXQ4NTIxX2dldF9mZWF0dXJlcyAtIHN3aXRjaCByZWcgc3BhY2UgdGhlbiBjYWxsIHl0ODUyMV9nZXRfZmVhdHVyZXNfcGFnZWRcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0yNDczLSAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0yNDc2LSAqL1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjI0Nzc6c3RhdGljIGludCB5dDg1MjFfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMjQ3OC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTI0ODItXHRpZiAocHJpdi1cdTAwM2VyZWdfcGFnZSAhPSBZVDg1MjFfUlNTUl9UT19CRV9BUkJJVFJBVEVEKSB7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MjQ4MzpcdFx0cmV0ID0geXQ4NTIxX2dldF9mZWF0dXJlc19wYWdlZChwaHlkZXYsIHByaXYtXHUwMDNlcmVnX3BhZ2UpO1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTI0ODQtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjI0ODU6XHRcdHJldCA9IHl0ODUyMV9nZXRfZmVhdHVyZXNfcGFnZWQocGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTI0ODYtXHRcdFx0XHRcdFx0WVQ4NTIxX1JTU1JfVVRQX1NQQUNFKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MzA2Mz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbW90b3Jjb21tX3BoeV9kcnZzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNzUtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7WVQ4NTIxIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzA3NjpcdFx0LmdldF9mZWF0dXJlc1x0PSB5dDg1MjFfZ2V0X2ZlYXR1cmVzLFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNzctXHRcdC5wcm9iZVx0XHQ9IHl0ODUyMV9wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzExNy1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtZVDg1MzFTIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzExODpcdFx0LmdldF9mZWF0dXJlc1x0PSB5dDg1MjFfZ2V0X2ZlYXR1cmVzLFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxMTktXHRcdC5wcm9iZVx0XHQ9IHl0ODUyMV9wcm9iZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDU4CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIHRoZSBgbW90b3Jjb21tLmNgIFBIWSBEcml2ZXIgd2l0aGluIFN5emthbGxlcioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGhpdHMgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uY2AgZmlsZS4gUmlnaHQsIHRoYXQmIzM5O3MgYSBQSFkgZHJpdmVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgaG93IGxpa2VseSBpcyB0aGlzIHRvIGJlIGV4cGxvaXRhYmxlIHdpdGhpbiB0aGUgc3l6a2FsbGVyIGVudmlyb25tZW50PyBHZW5lcmFsbHksIFBIWSBkcml2ZXJzIGFyZSB0aWVkIHRvIG5ldHdvcmsgaW50ZXJmYWNlcywgYXNzdW1pbmcgdGhlIGhhcmR3YXJlIGlzIHByZXNlbnQsIG9yIHBvc3NpYmx5IGVtdWxhdGVkLiBTeXprYWxsZXIgdXN1YWxseSBkb2VzbiYjMzk7dCBlbXVsYXRlIHNwZWNpZmljIFBIWXMgZGlyZWN0bHksIGF0IGxlYXN0IG5vdCBpbiBhIHRhcmdldGVkIHdheS4gSXQgbWlnaHQgaGF2ZSBzb21lIGdlbmVyaWMgTURJTy9QSFkgZnV6emluZyBpbnRlcmZhY2VzLCBwcm9iYWJseSB0aHJvdWdoIG5ldGxpbmsgb3IgaW9jdGxzLiBCdXQgdGhvc2UgYXJlIG9mdGVuIHF1aXRlIGxpbWl0ZWQgaW4gdGhlaXIgYWJpbGl0eSB0byByZWFjaCBzcGVjaWZpYyBkcml2ZXJzIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50LgoKV2FpdCwgdGhvdWdoLCBzeXprYWxsZXIgZG9lcyBoYXZlIHRob3NlIE1ESU8vUEhZIGZ1enppbmcgY2FwYWJpbGl0aWVzIHZpYSBuZXRsaW5rIG9yIGlvY3Rscy4uLiBidXQgc3RpbGwsIGl0JiMzOTtzIGdlbmVyYWxseSBhIGh1cmRsZSB0byBkaXJlY3RseSB0YXJnZXQgYSBzcGVjaWZpYyBkcml2ZXIgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuCgpIYW5nIG9uLi4uIGlzIHRoZXJlIGEgY2xldmVyIHdheSB0byB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlPyBDb3VsZCBJIHNvbWVob3cgdXNlIGBTSU9DU01JSVJFR2AgaW9jdGxzIG9yIGEgc2ltaWxhciBtZXRob2Q/IEJ1dCwgZXZlbiB3aXRoIHRob3NlLCB0aGUgUEhZIGRyaXZlciBzdGlsbCBuZWVkcyB0byBiZSBib3VuZCB0byAqc29tZSoga2luZCBvZiBkZXZpY2UsIHJpZ2h0PwoKV2FpdCwgc3l6a2FsbGVyICpjYW4qIGluc3RhbnRpYXRlIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzIGxpa2UgdmV0aCBvciB0dW4uIEhvd2V2ZXIsIHRob3NlIGR1bW15IGRldmljZXMgZG9uJiMzOTt0IHR5cGljYWxseSBsZXZlcmFnZSBhY3R1YWwgUEhZIGRyaXZlcnMuIFNvLCBjYW4gSSBzb21laG93IGJpbmQgYSBQSFkgZHJpdmVyIGxpa2UgYG1vdG9yY29tbS5jYCB0byBhIGR1bW15IGRldmljZSB0aGF0IHN5emthbGxlciBjcmVhdGVzPyBQcm9iYWJseSBub3QgZGlyZWN0bHkuCgpTaG9vdCwgaXQmIzM5O3Mgc3RhcnRpbmcgdG8gbG9vayBsaWtlIHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgYnVpbHQtaW4gd2F5IHRvIGVtdWxhdGUgc3BlY2lmaWMgUEhZIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgbGlrZSB0aGUgbW90b3Jjb21tIHN0dWZmLgoKV2FpdCBhIHNlYywgc3l6a2FsbGVyIGRvZXMgZW11bGF0ZSBVU0IgdmlhIGB2aGNpYCwgd2lmaSB2aWEgYG1hYzgwMjExX2h3c2ltYCwgRFJNIHRocm91Z2ggYHZrbXNgLCBldGMuIFNvLCB0aGVyZSBpcyBwcmVjZWRlbnQgZm9yIGRldmljZSBzcGVjaWZpYyBlbXVsYXRvcnMuLi4gYnV0IGZvciBQSFlzLCB0aGUgY2xvc2VzdCBzZWVtcyB0byBiZSBgZml4ZWQtcGh5YCwgYW5kIHRoYXQgZG9lc24mIzM5O3QgdXNlIHRoZSBgbW90b3Jjb21tLmNgIGNvZGUgYXQgYWxsLgoKU28sIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpczogSXMgYG1vdG9yY29tbS5jYCBhY3R1YWxseSByZWFjaGFibGUgaW4gc3l6a2FsbGVyPyBJdCYjMzk7cyB0aW1lIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIGFuZCBtYWtlIHN1cmUgdGhlcmUmIzM5O3Mgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpdGVtIGZvciB0aGUgYG1vdG9yY29tbWAgc3VwcG9ydCB0aGF0IEkmIzM5O20gbWlzc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNT1RPUkNPTU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTMzOD1jb25maWcgTUlDUk9TRU1JX1BIWVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTM0Ni1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjM0Nzpjb25maWcgTU9UT1JDT01NX1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMzQ4LVx0dHJpc3RhdGUgXCYjMzQ7TW90b3Jjb21tIFBIWXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9ODI9b2JqLSQoQ09ORklHX01JQ1JPU0VNSV9QSFkpXHQmIzQzOz0gbXNjYy9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4MzpvYmotJChDT05GSUdfTU9UT1JDT01NX1BIWSlcdCYjNDM7PSBtb3RvcmNvbW0ub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTg0LW9iai0kKENPTkZJR19OQVRJT05BTF9QSFkpXHQmIzQzOz0gbmF0aW9uYWwub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwOTUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNT1RPUkNPTU1fUEhZIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYE1PVE9SQ09NTV9QSFlgIGNvbmZpZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gd2UgYWN0dWFsbHkgaGl0IHRoaXMgY29kZSBwYXRoPyBJdCYjMzk7cyBhIFBIWSBkcml2ZXIsIHdoaWNoIG1lYW5zIHRoZSBgZ2V0X2ZlYXR1cmVzYCBjYWxsYmFjaywgdGhlIG9uZSBJJiMzOTttIGludGVyZXN0ZWQgaW4sIHNob3VsZCBiZSB0cmlnZ2VyZWQgZHVyaW5nIHRoZSBQSFkmIzM5O3MgaW5pdGlhbGl6YXRpb24sIGVpdGhlciB3aGVuIGl0JiMzOTtzIGJlaW5nIHByb2JlZCBvciB3aGVuIHNvbWVvbmUmIzM5O3MgYWN0aXZlbHkgYXNraW5nIGFib3V0IGl0cyBjYXBhYmlsaXRpZXMuIElmIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBpc24mIzM5O3QgcHJlc2VudCwgdGhlIGRyaXZlciB3b3VsZG4mIzM5O3QgZXZlbiBwcm9iZSBpbiB0aGUgZmlyc3QgcGxhY2UsIHJpZ2h0PwoKVGhlbiBJIHRob3VnaHQsIGlzIHRoZXJlIGEgd2F5IHRvIGJyaW5nIGEgUEhZIGRldmljZSBpbnRvIGV4aXN0ZW5jZSBpbiBzb2Z0d2FyZT8gSSB2YWd1ZWx5IHJlbWVtYmVyIHNvbWV0aGluZyBhYm91dCBNRElPIGJ1c2VzIGFuZCBpbmplY3RpbmcgZGV2aWNlcy4gQnV0LCBhbmQgdGhpcyBpcyBhIHN0aWNraW5nIHBvaW50LCBkb2VzIFN5emthbGxlciwgd2hpY2ggaXMgd2hhdCBJJiMzOTttIHVzaW5nLCBoYXZlIGEgZ2VuZXJpYyBNRElPIGZ1enplciB0aGF0IHdvdWxkIGxldCBtZSBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgUEhZcz8gSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBvbmUgb2ZmaGFuZC4KCldhaXQuLi4gaGFuZyBvbiBhIG1pbnV0ZS4gRGlkbiYjMzk7dCBJIHNlZSBzb21ldGhpbmcgYWJvdXQgTURJTyBmdXp6aW5nIHdpdGhpbiBTeXprYWxsZXI/IE1heWJlIEkgYW0gd3JvbmcsIGFuZCBpdCBpcyBjYXBhYmxlIG9mIHNvbWV0aGluZy4gSSBkb24mIzM5O3QgaGF2ZSBkaXJlY3QgYWNjZXNzIHRvIHRoZSBTeXprYWxsZXIgc291cmNlIGhlcmUsIGJ1dCBJIGNhbiBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSB2aXJ0dWFsIE1ESU8gZHJpdmVycyB3aXRoaW4gdGhlIGtlcm5lbC4gVGhhdCBjb3VsZCBiZSBhIGNydWNpYWwgaGludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8uKm1vY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTg4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqUHJvYmluZyBmb3IgUEhZIERyaXZlciBBY2Nlc3MqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgUEhZIGRyaXZlcnMuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjYXN1YWwgZXhwbG9yYXRpb247IEkmIzM5O20gYXNzdW1pbmcgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyByZWFzb24gSSBuZWVkIHRoaXMgbGV2ZWwgb2YgY29udHJvbC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGlkZW50aWZ5aW5nIGFueSBhdmFpbGFibGUgZW50cnkgcG9pbnRzIOKAkyBlc3NlbnRpYWxseSwgZXhwb3NlZCBpbnRlcmZhY2VzLCBBUElzLCBvciBkYXRhIHN0cnVjdHVyZXMg4oCTIHRoYXQgYWxsb3cgZm9yIGRpcmVjdCBtYW5pcHVsYXRpb24gb3IgaW50ZXJyb2dhdGlvbiBvZiB0aGUgUEhZIGxheWVyLiBUaGlzIGNvdWxkIGludm9sdmUgZXhhbWluaW5nIGV4aXN0aW5nIGtlcm5lbCBtb2R1bGVzLCBhbmFseXppbmcgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcywgb3IgZXZlbiBsb29raW5nIGludG8gc3RhbmRhcmQgcHJvdG9jb2xzIG9yIG1ldGhvZG9sb2dpZXMgZ2VuZXJhbGx5IHVzZWQgaW4gdGhpcyBjb250ZXh0LiBUaGUgZ29hbCBoZXJlIGlzIGVmZmljaWVudCBhY2Nlc3MgdG8gdGhlIFBIWSYjMzk7cyB1bmRlcmx5aW5nIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpby4qZnV6eiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODAzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgTW9ja2luZyBUZWNobmlxdWVzIGZvciBNRElPIEludGVyZmFjZSoqCgpSaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdG8gYXBwcm9hY2ggdGhlIE1ESU8gaW50ZXJmYWNlIHRlc3RpbmcsIGFuZCB0aGUgcXVlc3Rpb24gb2YgbW9ja2luZyBpcyBpbW1lZGlhdGVseSBmcm9udCBvZiBtaW5kLiBJJiMzOTt2ZSBiZWVuIHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgc3RyYXRlZ2llcywgYW5kIG9uZSBjb25jZXB0IGtlZXBzIHN1cmZhY2luZzogdXRpbGl6aW5nIGEgbW9ja2luZyBsaWJyYXJ5IHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBoYW5kbGUgdGhlIE1ESU8gcHJvdG9jb2wuIEkmIzM5O20gd29uZGVyaW5nIGlmIHRoZXJlIGFyZSBhbnkgd2VsbC1lc3RhYmxpc2hlZCBzb2x1dGlvbnMgb3V0IHRoZXJlIHRhaWxvcmVkIGZvciB0aGlzOyBzb21ldGhpbmcgYWxvbmcgdGhlIGxpbmVzIG9mIGFuIGBtZGlvLW1vY2tgIGxpYnJhcnksIG9yIG1heWJlIHNvbWV0aGluZyBzaW1pbGFyIHVuZGVyIGEgZGlmZmVyZW50IG5hbWUsIHRoYXQgd291bGQgc2F2ZSBhIHNpZ25pZmljYW50IGFtb3VudCBvZiBkZXZlbG9wbWVudCB0aW1lPyBJJiMzOTtkIGV4cGVjdCB0aGF0IHN1Y2ggYSBsaWJyYXJ5IHdvdWxkIHByb3ZpZGUgYSBzaW1wbGlmaWVkLCBwcm9ncmFtbWF0aWMgaW50ZXJmYWNlIGZvciBzaW11bGF0aW5nIE1ESU8gdHJhbnNhY3Rpb25zLCBhbGxvd2luZyBtZSB0byBkZWZpbmUgdGhlIGJlaGF2aW9yIG9mIHZhcmlvdXMgUEhZIHJlZ2lzdGVycy4gVGhlbiBJIGNhbiBqdXN0IGZvY3VzIG9uIHRoZSBjb3JlIGxvZ2ljIGFuZCBub3QgdGhlIGNvbXBsZXhpdHkgb2YgTURJTyBhY2Nlc3MuIFRoZSBpZGVhIGlzIHRvIGlzb2xhdGUgbXkgY29tcG9uZW50IGFuZCBlbnN1cmUgaXRzIGZ1bmN0aW9uYWxpdHkgaXMgY29ycmVjdCwgaXJyZXNwZWN0aXZlIG9mIGFueSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgdGhhdCBjYW4gY3JlYXRlIGNvbXBsaWNhdGlvbnMuIEl0JiMzOTtkIGJlIGZhciBtb3JlIGVmZmljaWVudCB0aGFuIGJ1aWxkaW5nIGV2ZXJ5dGhpbmcgZnJvbSBzY3JhdGNoISBJJiMzOTttIGxlYW5pbmcgdG93YXJkIGV4cGxvcmluZyB0aGlzIHBvc3NpYmlsaXR5IG1vcmUgZGVlcGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8uKmR1bW15JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwOTMKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBUcmlnZ2VyIGZvciBgeXQ4NTIxX2dldF9mZWF0dXJlc2AqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdGhlIGB5dDg1MjFfZ2V0X2ZlYXR1cmVzYCBmdW5jdGlvbiBhY3R1YWxseSBnZXRzIGNhbGxlZC4gTXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgUEhZIGRyaXZlcnMsIGxpa2UgdGhpcyBvbmUsIGFyZSB0eXBpY2FsbHkgYnJvdWdodCBpbnRvIGV4aXN0ZW5jZSB2aWEgdGhlIE1ESU8gYnVzIHNjYW5uaW5nIGFuZCBtYXRjaGluZyB0aGUgUEhZIElELCBvciB0aHJvdWdoIGEgZGV2aWNlIHRyZWUgaW5zdGFudGlhdGlvbi4gVGhlIHByb2JsZW0gSSYjMzk7bSBmYWNpbmcgaXMgdGhpczogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgc29tZXRoaW5nIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUsIHdoZXJlIHdlICpkb24mIzM5O3QqIGhhdmUgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uIGZvciBhIE1vdG9yY29tbSBQSFksIHRoZSB0eXBpY2FsIHByb2JpbmcgbWVjaGFuaXNtcyBwcm9iYWJseSB3b24mIzM5O3Qgd29yay4gSXQmIzM5O3MgZXNzZW50aWFsbHkgaW1wb3NzaWJsZSBmb3IgdGhlIGNvZGUgdG8gZ2V0IGhpdCB1bmRlciB0aGVzZSBjaXJjdW1zdGFuY2VzLiBTbywgbGV0IG1lIGRvdWJsZS1jaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGluIHBsYWNlIHRoYXQgKmNvdWxkKiBwb3RlbnRpYWxseSB0cmlnZ2VyIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb3RvcmNvbW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTQ5NjI9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgeXQ5MjF4X29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDk2MzpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDttb3RvcmNvbW0seXQ5MjE1XCYjMzQ7IH0sXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDk2NC1cdHt9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NTI9b2JqLSQoQ09ORklHX0RXTUFDX0xPT05HU09OKVx0JiM0Mzs9IGR3bWFjLWxvb25nc29uLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUzOm9iai0kKENPTkZJR19EV01BQ19NT1RPUkNPTU0pXHQmIzQzOz0gZHdtYWMtbW90b3Jjb21tLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTU0LXN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjI6I2RlZmluZSBEUklWRVJfTkFNRSBcJiMzNDtkd21hYy1tb3RvcmNvbW1cJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTIzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6NTU6c3RydWN0IG1vdG9yY29tbV9lZnVzZV9wYXRjaCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy01Ni1cdF9fbGUxNiBhZGRyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6NjA6c3RydWN0IGR3bWFjX21vdG9yY29tbV9wcml2IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTYxLVx0dm9pZCBfX2lvbWVtICpiYXNlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6NjQ6c3RhdGljIGludCBtb3RvcmNvbW1fZWZ1c2VfcmVhZF9ieXRlKHN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTY1LVx0XHRcdFx0ICAgICB1OCBvZmZzZXQsIHU4ICpieXRlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6ODM6c3RhdGljIGludCBtb3RvcmNvbW1fZWZ1c2VfcmVhZF9wYXRjaChzdHJ1Y3QgZHdtYWNfbW90b3Jjb21tX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy04NC1cdFx0XHRcdCAgICAgIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6ODU6XHRcdFx0XHQgICAgICBzdHJ1Y3QgbW90b3Jjb21tX2VmdXNlX3BhdGNoICpwYXRjaClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTg2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy05Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjkzOlx0XHRyZXQgPSBtb3RvcmNvbW1fZWZ1c2VfcmVhZF9ieXRlKHByaXYsIG9mZnNldCwgXHUwMDI2cFtpXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy05NC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xMDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxMDE6c3RhdGljIGludCBtb3RvcmNvbW1fZWZ1c2VfZ2V0X3BhdGNoX3ZhbHVlKHN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTEwMi1cdFx0XHRcdFx0ICAgdTE2IGFkZHIsIHUzMiAqdmFsdWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xMDMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTA0Olx0c3RydWN0IG1vdG9yY29tbV9lZnVzZV9wYXRjaCBwYXRjaDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTEwNS1cdGludCBpLCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTA3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRUZVU0VfUEFUQ0hfTUFYX05VTTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjEwODpcdFx0cmV0ID0gbW90b3Jjb21tX2VmdXNlX3JlYWRfcGF0Y2gocHJpdiwgaSwgXHUwMDI2cGF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTA5LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTEyMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjEyMzpzdGF0aWMgaW50IG1vdG9yY29tbV9lZnVzZV9yZWFkX21hYyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxMjQ6XHRcdFx0XHQgICAgc3RydWN0IGR3bWFjX21vdG9yY29tbV9wcml2ICpwcml2LCB1OCAqbWFjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTI1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxMjk6XHRyZXQgPSBtb3RvcmNvbW1fZWZ1c2VfZ2V0X3BhdGNoX3ZhbHVlKHByaXYsIEVGVVNFX0FERFJfTUFDQTBMUixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTEzMC1cdFx0XHRcdFx0ICAgICAgXHUwMDI2bWFjYTBscik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTM1Olx0cmV0ID0gbW90b3Jjb21tX2VmdXNlX2dldF9wYXRjaF92YWx1ZShwcml2LCBFRlVTRV9BRERSX01BQ0EwSFIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xMzYtXHRcdFx0XHRcdCAgICAgIFx1MDAyNm1hY2EwaHIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjE1MTpzdGF0aWMgdm9pZCBtb3RvcmNvbW1fZGVhc3NlcnRfbWRpb19waHlfcmVzZXQoc3RydWN0IGR3bWFjX21vdG9yY29tbV9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTUyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxNjA6c3RhdGljIHZvaWQgbW90b3Jjb21tX3Jlc2V0KHN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE2MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTY5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTcwOlx0bW90b3Jjb21tX2RlYXNzZXJ0X21kaW9fcGh5X3Jlc2V0KHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTcxLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjE3MzpzdGF0aWMgdm9pZCBtb3RvcmNvbW1faW5pdChzdHJ1Y3QgZHdtYWNfbW90b3Jjb21tX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xNzQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjE4ODpzdGF0aWMgaW50IG1vdG9yY29tbV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE4OS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxOTA6XHRzdHJ1Y3QgZHdtYWNfbW90b3Jjb21tX3ByaXYgKnByaXYgPSBic3BfcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE5MS1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjAwLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyMDE6XHRtb3RvcmNvbW1fZGVhc3NlcnRfbWRpb19waHlfcmVzZXQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyMDI6XHRtb3RvcmNvbW1faW5pdChwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTIwMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yMDc9c3RhdGljIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyMDg6bW90b3Jjb21tX2RlZmF1bHRfcGxhdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjA5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDktXHRwbGF0LVx1MDAzZXN1c3BlbmRcdFx0PSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI1MDpcdHBsYXQtXHUwMDNlcmVzdW1lXHRcdD0gbW90b3Jjb21tX3Jlc3VtZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI1MS1cdHBsYXQtXHUwMDNlZmxhZ3NcdFx0PSBTVE1NQUNfRkxBR19UU09fRU4gfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI1NzpzdGF0aWMgdm9pZCBtb3RvcmNvbW1fZnJlZV9pcnEodm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI1OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjY0OnN0YXRpYyBpbnQgbW90b3Jjb21tX3NldHVwX2lycShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI2NS1cdFx0XHQgICAgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyOTA6XHRyZXR1cm4gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBtb3RvcmNvbW1fZnJlZV9pcnEsIHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjkxLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI5MzpzdGF0aWMgaW50IG1vdG9yY29tbV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjk0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI5NS1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI5NjpcdHN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI5Ny1cdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHJlcyA9IHt9O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTMwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjMwNDpcdHBsYXQgPSBtb3RvcmNvbW1fZGVmYXVsdF9wbGF0X2RhdGEocGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zMDUtXHRpZiAoIXBsYXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzMxOlx0bW90b3Jjb21tX3Jlc2V0KHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzMyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTMzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM0MDpcdHJldCA9IG1vdG9yY29tbV9lZnVzZV9yZWFkX21hYyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgcHJpdiwgcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNDEtXHRpZiAocmV0ID09IC1FTk9FTlQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNTE6XHRyZXQgPSBtb3RvcmNvbW1fc2V0dXBfaXJxKHBkZXYsIFx1MDAyNnJlcywgcGxhdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNTItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM1NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM1NTpcdG1vdG9yY29tbV9pbml0KHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzU2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM2MjpzdGF0aWMgdm9pZCBtb3RvcmNvbW1fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzYzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNjc6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGR3bWFjX21vdG9yY29tbV9wY2lfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2OC1cdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01PVE9SQ09NTSwgMHg2ODAxKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM3MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzcxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkd21hY19tb3RvcmNvbW1fcGNpX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM3MzpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZHdtYWNfbW90b3Jjb21tX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzQtXHQubmFtZSA9IERSSVZFUl9OQU1FLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6Mzc1Olx0LmlkX3RhYmxlID0gZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM3NjpcdC5wcm9iZSA9IG1vdG9yY29tbV9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM3NzpcdC5yZW1vdmUgPSBtb3RvcmNvbW1fcmVtb3ZlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzc4LVx0LmRyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozODM6bW9kdWxlX3BjaV9kcml2ZXIoZHdtYWNfbW90b3Jjb21tX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzg0LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT04Mj1vYmotJChDT05GSUdfTUlDUk9TRU1JX1BIWSlcdCYjNDM7PSBtc2NjL1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19NT1RPUkNPTU1fUEhZKVx0JiM0Mzs9IG1vdG9yY29tbS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtODQtb2JqLSQoQ09ORklHX05BVElPTkFMX1BIWSlcdCYjNDM7PSBuYXRpb25hbC5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTEwMDY9c3RhdGljIGludCB5dDg1MzFfc2V0X2RzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTEwMTItXHQvKiBzZXQgcmdtaWkgcnggY2xrIGRyaXZlciBzdHJlbmd0aCAqL1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjEwMTM6XHRpZiAoIWRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsIFwmIzM0O21vdG9yY29tbSxyeC1jbGstZHJ2LW1pY3JvYW1wXCYjMzQ7LCBcdTAwMjZ2YWwpKSB7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTAxNC1cdFx0ZHMgPSB5dDg1MzFfZ2V0X2RzX21hcChwaHlkZXYsIHZhbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTEwMzAtXHQvKiBzZXQgcmdtaWkgcnggZGF0YSBkcml2ZXIgc3RyZW5ndGggKi9cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxMDMxOlx0aWYgKCFkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCBcJiMzNDttb3RvcmNvbW0scngtZGF0YS1kcnYtbWljcm9hbXBcJiMzNDssIFx1MDAyNnZhbCkpIHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xMDMyLVx0XHRkcyA9IHl0ODUzMV9nZXRfZHNfbWFwKHBoeWRldiwgdmFsKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MTA2Mz1zdGF0aWMgaW50IHl0ODUyMV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xMTEzLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjExMTQ6XHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTMyKGRldiwgXCYjMzQ7bW90b3Jjb21tLGNsay1vdXQtZnJlcXVlbmN5LWh6XCYjMzQ7LCBcdTAwMjZmcmVxKSlcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xMTE1LVx0XHRmcmVxID0gWVRQSFlfRFRTX09VVFBVVF9DTEtfRElTO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0xMTgwPXN0YXRpYyBpbnQgeXQ4NTMxX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTExODUtXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTE4NjpcdGlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCBcJiMzNDttb3RvcmNvbW0sY2xrLW91dC1mcmVxdWVuY3ktaHpcJiMzNDssIFx1MDAyNmZyZXEpKVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTExODctXHRcdGZyZXEgPSBZVFBIWV9EVFNfT1VUUFVUX0NMS19ESVM7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTE2NzY9c3RhdGljIGludCB5dDg1MjFfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTY5Mi1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxNjkzOlx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDttb3RvcmNvbW0sYXV0by1zbGVlcC1kaXNhYmxlZFwmIzM0OykpIHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xNjk0LVx0XHQvKiBkaXNhYmxlIGF1dG8gc2xlZXAgKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTcwMC1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxNzAxOlx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDttb3RvcmNvbW0sa2VlcC1wbGwtZW5hYmxlZFwmIzM0OykpIHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xNzAyLVx0XHQvKiBlbmFibGUgUlhDIGNsb2NrIHdoZW4gbm8gd2lyZSBwbHVnICovXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTE4MTc9c3RhdGljIGludCB5dDg1MzFfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTgyNS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxODI2Olx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDttb3RvcmNvbW0sYXV0by1zbGVlcC1kaXNhYmxlZFwmIzM0OykpIHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODI3LVx0XHQvKiBkaXNhYmxlIGF1dG8gc2xlZXAgKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTgzNC1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxODM1Olx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDttb3RvcmNvbW0sa2VlcC1wbGwtZW5hYmxlZFwmIzM0OykpIHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODM2LVx0XHQvKiBlbmFibGUgUlhDIGNsb2NrIHdoZW4gbm8gd2lyZSBwbHVnICovXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTE4NTM9c3RhdGljIGludCB5dDg1MjJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTg3MC1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxODcxOlx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDttb3RvcmNvbW0sYXV0by1zbGVlcC1kaXNhYmxlZFwmIzM0OykpIHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODcyLVx0XHQvKiBkaXNhYmxlIGF1dG8gc2xlZXAgKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTg4OC0gKiBOT1RFOiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCB0byBhZGFwdCB0byBWRjIgd2l0aCBKSDcxMTAgU29DLiBQbGVhc2VcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxODg5OiAqIGtlZXAgXCYjMzQ7bW90b3Jjb21tLHR4LWNsay1hZGotZW5hYmxlZFwmIzM0OyBub3QgZXhpc3QgaW4gZHRzIHdoZW4gdGhlIHNvYyBpcyBub3RcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODkwLSAqIEpINzExMC5cbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MTg5Mj1zdGF0aWMgdm9pZCB5dDg1MzFfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE5MDEtXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTkwMjpcdGlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXCYjMzQ7bW90b3Jjb21tLHR4LWNsay1hZGotZW5hYmxlZFwmIzM0OykpXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTkwMy1cdFx0dHhfY2xrX2Fkal9lbmFibGVkID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTkwNy1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxOTA4Olx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDttb3RvcmNvbW0sdHgtY2xrLTEwLWludmVydGVkXCYjMzQ7KSlcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xOTA5LVx0XHR0eF9jbGtfMTBfaW52ZXJ0ZWQgPSB0cnVlO1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE5MTA6XHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFwmIzM0O21vdG9yY29tbSx0eC1jbGstMTAwLWludmVydGVkXCYjMzQ7KSlcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xOTExLVx0XHR0eF9jbGtfMTAwX2ludmVydGVkID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxOTEyOlx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDttb3RvcmNvbW0sdHgtY2xrLTEwMDAtaW52ZXJ0ZWRcJiMzNDspKVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE5MTMtXHRcdHR4X2Nsa18xMDAwX2ludmVydGVkID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MzA0MT1zdGF0aWMgaW50IHl0ODgyMV9yZXN1bWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA2Mi1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMDYzOnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtb3RvcmNvbW1fcGh5X2RydnNbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMDY0LVx0e1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTUwLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxNTE6bW9kdWxlX3BoeV9kcml2ZXIobW90b3Jjb21tX3BoeV9kcnZzKTtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTUyLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0zMTU2PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzE1Ny1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTU4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbW90b3Jjb21tX3RibFtdID0ge1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxNTktXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4NTExKSB9LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTY3LVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxNjg6TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBtb3RvcmNvbW1fdGJsKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE3MTEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgdGhlIGBtb3RvcmNvbW1gIFBIWSBEcml2ZXIgaW4gU3l6a2FsbGVyKioKCk9rYXksIHNvIHRoZSBgbW90b3Jjb21tYCBQSFkgZHJpdmVyIGlzIHJlZ2lzdGVyZWQgd2l0aCBgbW9kdWxlX3BoeV9kcml2ZXJgLiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgaG93IGRvIEkgZ2V0IFN5emthbGxlciB0byBpbnRlcmFjdCB3aXRoIGl0PyBJZGVhbGx5LCB0aGVyZSB3b3VsZCBiZSBhIGdlbmVyaWMgTURJTyBkZXZpY2UgaW5zdGFudGlhdG9yLCBidXQgYXMgSSByZWNhbGwsIFN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIHRoYXQuIFdlIGFyZSwgYWZ0ZXIgYWxsLCB0YWxraW5nIGFib3V0IFBIWXMgd2hpY2ggYXJlIHVzdWFsbHkgY3JlYXRlZCB3aGVuIGEgTUFDIGRyaXZlciBwcm9iZXMgdGhlIE1ESU8gYnVzLgoKV2FpdCwgYXJlIHRoZXJlIGFueSBuZXRsaW5rIGhvb2tzIHRoYXQgY2FuIGhlbHAgaGVyZT8gQ291bGQgc29tZXRoaW5nIGxpa2UgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAgYmUgdXNlZnVsPyBObywgdGhhdCYjMzk7cyBub3QgdGhlIHJpZ2h0IHBhdGguIFdoYXQgYWJvdXQgYW55IG9mIHRoZSBvdGhlciBuZXQgZGV2aWNlcz8gYG1hY3NlY2AsIGBkdW1teWAsIGFuZCBgdmV0aGAgYXJlIG91dCDigJMgdGhleSBieXBhc3MgTURJTyBhbHRvZ2V0aGVyLiBXaGF0IGFib3V0IHNvbWV0aGluZyBsaWtlIGB0dW5gIG9yIGB0YXBgPyBOb3BlLCBub3QgbGlrZWx5LgoKSG1tLCB3aGF0IGFib3V0IERTQSwgRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZT8gU3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgRFNBIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBIb3dldmVyLCBEU0Egb2Z0ZW4gcmVsaWVzIG9uIGRldmljZSB0cmVlIG9yIHBsYXRmb3JtLXNwZWNpZmljIGRhdGEuIEl04oCZcyB1c3VhbGx5IHRpZWQgZGlyZWN0bHkgdG8gdGhlIGhhcmR3YXJlLgoKQnV0IHdhaXQsIHRoZXJlJiMzOTtzIGEgZ2xpbW1lciBvZiBob3BlISBUaGUgYGRzYV9sb29wYCBkcml2ZXIgaXMgYSBtb2NrIERTQSBkcml2ZXIsIGlzbiYjMzk7dCBpdD8gSWYgaXQmIzM5O3MgYSBtb2NrIGRyaXZlciwgaXQgbWF5IGhhdmUgYSBzaW1wbGlmaWVkIGluc3RhbnRpYXRpb24gcGF0aC4gRG9lcyAqdGhhdCogZHJpdmVyIGludGVyYWN0IHdpdGggTURJTz8gSWYgc28sIGNvdWxkIEkgcG90ZW50aWFsbHkgbGV2ZXJhZ2UgdGhlIGBkc2FfbG9vcGAgZHJpdmVyIHRvIGluc3RhbnRpYXRlIGFyYml0cmFyeSBQSFlzLCBpbmNsdWRpbmcgdGhlIGBtb3RvcmNvbW1gIGRyaXZlcj8gVGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IHByb21pc2luZyBhdmVudWUgdG8gZXhwbG9yZS4gVGltZSB0byBjaGVjayBpZiBgZHNhX2xvb3BgIGNhbiBiZSBsZXZlcmFnZWQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RzYV9sb29wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9Mz1iY20tc2YyLW9ianNcdFx0XHQ6PSBiY21fc2YyLm8gYmNtX3NmMl9jZnAub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX05FVF9EU0FfTE9PUClcdCYjNDM7PSBkc2FfbG9vcC5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtNS1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFx0JiM0Mzs9IGtzODk5NS5vXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTpzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNi1cdHUxNiBtZW1iZXJzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzA6c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMS1cdGNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU6ZW51bSBkc2FfbG9vcF9taWJfY291bnRlcnMge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzYtXHREU0FfTE9PUF9QSFlfUkVBRF9PSyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzOnN0cnVjdCBkc2FfbG9vcF9wb3J0IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0Olx0c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBtaWJbX19EU0FfTE9PUF9DTlRfTUFYXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ1LVx0dTE2IHB2aWQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTpzdHJ1Y3QgZHNhX2xvb3BfcHJpdiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MC1cdHN0cnVjdCBtaWlfYnVzXHQqYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEtXHR1bnNpZ25lZCBpbnRcdHBvcnRfYmFzZTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUyOlx0c3RydWN0IGRzYV9sb29wX3ZsYW4gdmxhbnNbVkxBTl9OX1ZJRF07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01My1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NDpcdHN0cnVjdCBkc2FfbG9vcF9wb3J0IHBvcnRzW0RTQV9NQVhfUE9SVFNdO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTUtfTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTc6c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU4LVx0LyogTXVzdCBiZSBmaXJzdCwgc3VjaCB0aGF0IGRzYV9yZWdpc3Rlcl9zd2l0Y2goKSBjYW4gYWNjZXNzIHRoaXNcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjY3OnN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IGRzYV9sb29wX21pYnNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY4LVx0W0RTQV9MT09QX1BIWV9SRUFEX09LXVx0PSB7IFwmIzM0O3BoeV9yZWFkX29rXCYjMzQ7LCB9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTc1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo3NzplbnVtIGRzYV9sb29wX2RldmxpbmtfcmVzb3VyY2VfaWQge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzgtXHREU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX05PTkUsICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjgyOnN0YXRpYyB1NjQgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0KHZvaWQgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04My17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IHByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04NS1cdHVuc2lnbmVkIGludCBpLCBjb3VudCA9IDA7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NjpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6OTc6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OS1cdHN0cnVjdCBkZXZsaW5rX3Jlc291cmNlX3NpemVfcGFyYW1zIHNpemVfcGFyYW1zO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTAwOlx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEwMS1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE1LVx0XHRcdFx0XHQgICAgICBEU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX1ZUVSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjExNjpcdFx0XHRcdFx0ICAgICAgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0LCBwcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTI1OnN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgZHNhX2xvb3BfZ2V0X3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNi1cdFx0XHRcdFx0XHQgICBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzQ6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzUte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNy1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzOS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRzLVx1MDAzZW51bV9wb3J0czsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDA6XHRcdG1lbWNweShwcy1cdTAwM2Vwb3J0c1tpXS5taWIsIGRzYV9sb29wX21pYnMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDE6XHRcdCAgICAgICBzaXplb2YoZHNhX2xvb3BfbWlicykpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0NC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0NTpcdHJldHVybiBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhkcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDYtfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ3LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTUyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTUzOnN0YXRpYyBpbnQgZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHNzZXQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2MC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2MTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYyLVx0XHRcdFx0IHUzMiBzdHJpbmdzZXQsIHVpbnQ4X3QgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjMte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTY0Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2NS1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NDpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc1LVx0XHRcdFx0ICAgICAgIHVpbnQ2NF90ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc2LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NzpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzgtXHR1bnNpZ25lZCBpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODQ6c3RhdGljIGludCBkc2FfbG9vcF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg1LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODctXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE5OC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5OTpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAwLVx0XHRcdCAgICAgIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMS17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDI6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAzLVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMTU6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTYtXHRcdFx0XHQgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjMyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjMzOnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM0LVx0XHRcdFx0XHR1OCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNDA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDEtXHRcdFx0XHRcdGJvb2wgdmxhbl9maWx0ZXJpbmcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQ5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjUwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjUxLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4sXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU1LVx0Ym9vbCBwdmlkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTg6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTktXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjgyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjgzOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg0LVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg2LVx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXHUwMDNlZmxhZ3MgXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fVU5UQUdHRUQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODc6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg4LVx0dTE2IHB2aWQgPSBwcy1cdTAwM2Vwb3J0c1twb3J0XS5wdmlkO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg5LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MDpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMi1cdFx0XHRcdCAgICBpbnQgbmV3X210dSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMy17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzIxOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI3LVx0XHRcdFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzMzLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM1Olx0LmdldF90YWdfcHJvdG9jb2xcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM2Olx0LnNldHVwXHRcdFx0PSBkc2FfbG9vcF9zZXR1cCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNzpcdC50ZWFyZG93blx0XHQ9IGRzYV9sb29wX3RlYXJkb3duLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM4Olx0LmdldF9zdHJpbmdzXHRcdD0gZHNhX2xvb3BfZ2V0X3N0cmluZ3MsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzk6XHQuZ2V0X2V0aHRvb2xfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDA6XHQuZ2V0X3NzZXRfY291bnRcdFx0PSBkc2FfbG9vcF9nZXRfc3NldF9jb3VudCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MTpcdC5nZXRfZXRodG9vbF9waHlfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDI6XHQucGh5X3JlYWRcdFx0PSBkc2FfbG9vcF9waHlfcmVhZCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MzpcdC5waHlfd3JpdGVcdFx0PSBkc2FfbG9vcF9waHlfd3JpdGUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDQ6XHQucG9ydF9icmlkZ2Vfam9pblx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ1Olx0LnBvcnRfYnJpZGdlX2xlYXZlXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ2Olx0LnBvcnRfc3RwX3N0YXRlX3NldFx0PSBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDc6XHQucG9ydF92bGFuX2ZpbHRlcmluZ1x0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ4Olx0LnBvcnRfdmxhbl9hZGRcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ5Olx0LnBvcnRfdmxhbl9kZWxcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUwOlx0LnBvcnRfY2hhbmdlX210dVx0PSBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTE6XHQucG9ydF9tYXhfbXR1XHRcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUyOlx0LnBoeWxpbmtfZ2V0X2NhcHNcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1My19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1Ni17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1ODpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1OS1cdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODItXHRkcy1cdTAwM2VkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MzpcdGRzLVx1MDAzZW9wcyA9IFx1MDAyNmRzYV9sb29wX2RyaXZlcjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cdGRzLVx1MDAzZXByaXYgPSBwcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTc6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTgte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk5LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQwMDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQwMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIzOnN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgZHNhX2xvb3BfZHJ2ID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI0LVx0Lm1kaW9kcnYuZHJpdmVyXHQ9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjYtXHR9LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI3Olx0LnByb2JlXHQ9IGRzYV9sb29wX2Rydl9wcm9iZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyODpcdC5yZW1vdmVcdD0gZHNhX2xvb3BfZHJ2X3JlbW92ZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyOTpcdC5zaHV0ZG93biA9IGRzYV9sb29wX2Rydl9zaHV0ZG93bixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMC19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDMyOnN0YXRpYyBpbnQgZHNhX2xvb3BfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMy1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM0LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcdHJldHVybiBkcnYgPT0gXHUwMDI2ZHNhX2xvb3BfZHJ2Lm1kaW9kcnYuZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNy1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzODpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0ODpcdHN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgZHNhX2xvb3BfcGRhdGEgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDktXHRcdC5jZCA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFx1MDAyNmRzYV9sb29wX3BkYXRhO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4MjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4NzpcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTQ6XHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk2Olx0XHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5Ny1cdFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDItfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTAzOm1vZHVsZV9pbml0KGRzYV9sb29wX2luaXQpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA1OnN0YXRpYyB2b2lkIF9fZXhpdCBkc2FfbG9vcF9leGl0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3Olx0bWRpb19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA4Olx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDktXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTI6bW9kdWxlX2V4aXQoZHNhX2xvb3BfZXhpdCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4ODU2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTGltaXRhdGlvbnMgYW5kIFBvc3NpYmlsaXRpZXMgZm9yIEZ1enppbmcgdGhlIHl0ODUyMSBQSFkgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBkc2FfbG9vcGAgZHJpdmVyLCBhbmQgaXQmIzM5O3MgZXNzZW50aWFsbHkgYSBwbGFjZWhvbGRlciwgYSBtb2NrIERTQSBzd2l0Y2guIEl0IGRvZXNuJiMzOTt0IGJvdGhlciB3aXRoIGFjdHVhbCBQSFkgaW5zdGFudGlhdGlvbiwganVzdCByZWdpc3RlcnMgdGhpcyBmYWtlIHN3aXRjaC4gTm93LCBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0byBhcHByb2FjaCBmdXp6aW5nIHRoZSBgeXQ4NTIxYCBQSFkgZHJpdmVyLCBhbmQgdGhlIGltbWVkaWF0ZSBpc3N1ZSBpcyB0aGUgbGFjayBvZiBzcGVjaWZpYyBoYXJkd2FyZSDigJMgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHNlZW0gdG8gaGF2ZSBhbnkgbW90b3Jjb21tIFBIWXMgYXZhaWxhYmxlLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IGh1cmRsZS4KClNvLCB0aGUgcXVlc3Rpb24gaXM6IGhvdyBjYW4gSSBldmVuICpyZWFjaCogc29tZXRoaW5nIGxpa2UgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlPyBUaGUgb25seSBwYXRod2F5IEkgc2VlIGlzIHRocm91Z2ggYSBzb2Z0d2FyZSBNRElPIGJ1cy4gSWYgSSBjb3VsZCBtYW5pcHVsYXRlIHRoYXQgc29mdHdhcmUgYnVzIHRvIHByZXNlbnQgZmFrZWQgUEhZIElEcywgdGhlbiB0aGUgYHl0ODUyMWAgZHJpdmVyICpjb3VsZCogcHJvYmUgYW5kIGJlY29tZSBhY3RpdmUuIFRoYXQgd291bGQgYmUgdGhlIGVudHJ5IHBvaW50IEkgbmVlZC4KCk5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSBpZiBzeXprYWxsZXIgaGFzIGFuIE1ESU8gZnV6emVyLiBEb2VzIGl0IG9mZmVyIHRoZSBtZWFucyB0byBmdXp6IHRoZSBNRElPIGludGVyZmFjZT8gSSBuZWVkIHRvIGNoZWNrIHRoZSBrZXJuZWwmIzM5O3Mgc3l6a2FsbGVyIGNvdmVyYWdlLCBhbmQgbG9vayBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byBgbWRpb2AuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGV4aXN0aW5nIHdvcmsgaW4gdGhpcyBhcmVhIHRvIGxldmVyYWdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzMTkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgc3VtbWFyaXplZCBmcm9tIHRoYXQgcHJvbXB0LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBNRElPIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgbGFuZHNjYXBlIGZvciBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29yayBQSFkgZHJpdmVycy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGFueXRoaW5nIHJlbGF0ZWQgdG8gYG1kaW9gLiBJJiMzOTttIGdvaW5nIHRvIHNjYW4gdGhlIGBkcml2ZXJzL25ldC9waHkvYCBkaXJlY3RvcnkuIFRoZSBnb2FsIGlzIHRvIHNlZSBpZiBhbnkgZXhpc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgb3IgY29tcG9uZW50cyBhcmUgYWxyZWFkeSBpbiBwbGFjZSB0aGF0IGNvdWxkIGJlIGxldmVyYWdlZCBmb3IgZnV6emluZyB0aGUgTURJTyBpbnRlcmZhY2UuIFRoaXMgY291bGQgaW52b2x2ZSBsb29raW5nIGZvciBleGlzdGluZyBkcml2ZXJzIHRoYXQgdXRpbGl6ZSB0aGUgTURJTyBpbnRlcmZhY2UsIGFueSBoZWxwZXIgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gTURJTyBjb21tdW5pY2F0aW9uIHRoYXQgbWlnaHQgYmUgc3VzY2VwdGlibGUgdG8gaW5wdXQgdnVsbmVyYWJpbGl0aWVzLCBvciBldmVuIHByZS1leGlzdGluZyBmdXp6ZXIgaGFybmVzc2VzIHRoYXQgaGF2ZSBiZWVuIHBhcnRpYWxseSBpbXBsZW1lbnRlZC4gVGhlIGlkZWEgaXMgdG8gZmluZCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZWZmaWNpZW50bHkgcHJpb3JpdGl6ZSB0aGUgaW52ZXN0aWdhdGlvbi4gSSBkb24mIzM5O3Qgd2FudCB0byByZWludmVudCB0aGUgd2hlZWwsIGlmIGF0IGFsbCBwb3NzaWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXp6JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTgyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEtlcm5lbCBUZXN0aW5nIFRvb2xib3gqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUga2VybmVsIGZ1enppbmcgaW5mcmFzdHJ1Y3R1cmUsIHBhcnRpY3VsYXJseSB3aGF0IHN5emthbGxlciBjYW4gbGV2ZXJhZ2UgZm9yIGVtdWxhdGluZyB2YXJpb3VzIGhhcmR3YXJlIGNvbXBvbmVudHMuIEl0JiMzOTtzIHJlYWxseSBxdWl0ZSBpbXByZXNzaXZlIGhvdyBpdCBjYW4gdXNlIGB2aGNpYCBmb3IgVVNCIOKAkyB0aGF0JiMzOTtzIGEgY2xldmVyIHNvbHV0aW9uLiBBbmQgYG1hYzgwMjExX2h3c2ltYCBmb3IgV2lGaSwgcGVyZmVjdC4gVGhlbiwgZm9yIGdyYXBoaWNzLCBgdmttc2Agd2l0aCBEUk0gaXMgYSBzb2xpZCBjaG9pY2UuIE9mIGNvdXJzZSwgYHVpbnB1dGAgaGFuZGxlcyBpbnB1dCByZWFsbHkgd2VsbCwgYW5kIHdlIGhhdmUgYHNuZC1kdW1teWAgZm9yIHNvdW5kLCB3aGljaCBrZWVwcyB0aGluZ3Mgc2ltcGxlLiBGb3IgbmV0d29ya2luZyBpbnRlcmZhY2VzLCB0aGUgZmxleGliaWxpdHkgaXMgdGhlIHJlYWwgc3RyZW5ndGgg4oCTIGB2Y2FuYCBoYW5kbGVzIENBTiwgdGhlbiB0aGVyZSYjMzk7cyBgZHVtbXlgLCBgdmV0aGAsIGB0dW5gLCBgdGFwYCwgYW5kIGBuZXRkZXZzaW1gLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gbWFrZSBhIG5vdGUgb2YgdGhpcy4gSSB3b25kZXIsIGRvZXMgYG5ldGRldnNpbWAgYWN0dWFsbHkgc2ltdWxhdGUgTURJTyBhbmQgUEhZcyB0byBnZXQgdXMgY2xvc2VyIHRvIHRlc3RpbmcgdGhvc2UgcGFydHMgb2YgdGhlIHN0YWNrPyBJIHNob3VsZCByZWFsbHkgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgdGhlcmUsIHNlZSBpZiB3ZSBnZXQgdGhlIGZ1bGwgcGljdHVyZSBvciBub3QuIEdvdHRhIGRpZyBpbnRvIHRoYXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE0NTU9c3RhdGljIGludCBfX25zaW1fZGV2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE0NzQtXHRcdGF0dHJzLmZsYXZvdXIgPSBERVZMSU5LX1BPUlRfRkxBVk9VUl9QSFlTSUNBTDtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNDc1Olx0XHRhdHRycy5waHlzLnBvcnRfbnVtYmVyID0gcG9ydF9pbmRleCAmIzQzOyAxO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE0NzYtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0zMjI9c3RydWN0IG5zaW1fZGV2IHtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzQxLVx0c3RydWN0IG11dGV4IHByb2dzX2xpc3RfbG9jaztcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozNDI6XHRzdHJ1Y3QgbmV0ZGV2X3BoeXNfaXRlbV9pZCBzd2l0Y2hfaWQ7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzQzLVx0c3RydWN0IGxpc3RfaGVhZCBwb3J0X2xpc3Q7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjIxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgUmVhY2hpbmcgdGhlIGB5dDg1MjFfZ2V0X2ZlYXR1cmVzYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0byB0cmlnZ2VyIHRoYXQgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYG1vdG9yY29tbS5jYCBQSFkgZHJpdmVyLiBJdCBzZWVtcyBwcmV0dHkgbG9ja2VkIGRvd24gaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYW5kIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHdoeS4KCkZpcnN0LCBJIHJ1bGVkIG91dCBgbmV0ZGV2c2ltYCDigJMgaXQmIzM5O3Mgbm90IGEgY29udGVuZGVyIGZvciB0aGlzLiBUaGVuIEkgY29uc2lkZXJlZCBgZml4ZWQtcGh5YCwgd2hpY2ggYWxsb3dzIGluc3RhbnRpYXRpbmcgUEhZcywgYnV0IHRoZXkgYXJlIGFsbCBmaXhlZCwgYW5kIGRvbiYjMzk7dCBtYXRjaCB0aGUgYG1vdG9yY29tbWAgdHlwZS4gSSBhbHNvIGNvbnRlbXBsYXRlZCBhIHVzZXIgc3BhY2UgcHJvZ3JhbSBjcmVhdGluZyBhIHZpcnR1YWwgTURJTyBidXMgYW5kIGluamVjdGluZyBkZXZpY2VzLiBUaGF04oCZcyBwcm9iYWJseSB0b28gY29udm9sdXRlZCwgZXZlbiBpZiBwb3NzaWJsZS4KCkkgbG9va2VkIGF0IGBtZGlvLWdwaW9gLCB0aGlua2luZyBtYXliZSBJIGNvdWxkIGRyaXZlIGl0IHdpdGggR1BJT3MsIGJ1dCBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBpbnRlcmFjdCB3aXRoIEdQSU9zIGluIHRoYXQgd2F5IHRvIGVtdWxhdGUgYW4gTURJTyBwcm90b2NvbC4gU28sIHNjcmFwIHRoYXQgaWRlYS4gVGhlbiwgSSBjb25zaWRlcmVkIHRoZSBgU0lPQ1NNSUlSRUdgIGlvY3RsLiBJdCYjMzk7cyBhIHBvc3NpYmlsaXR5LCByaWdodD8gSWYgYSBuZXR3b3JrIGRldmljZSBoYXMgYW4gTURJTyBidXMsIEkgY291bGQgdXNlIGl0IHRvIHdyaXRlIHRvIFBIWSByZWdpc3RlcnMuIEJ1dCwgdGhlIHJ1YiBpcyB0aGF0IHRoZSBQSFkgZHJpdmVyIGhhcyB0byBiZSBib3VuZCB0byB0aGUgUEhZIGRldmljZSAqZmlyc3QqLiBBbmQgd2l0aG91dCB0aGUgaGFyZHdhcmUgcHJlc2VudCwgdGhlIFBIWSBkZXZpY2UgaXNuJiMzOTt0IGNyZWF0ZWQsIGFuZCB0aHVzIHRoZSBkcml2ZXIgaXNuJiMzOTt0IGJvdW5kLgoKSSBicmllZmx5IGNvbnNpZGVyZWQgYEkyQ2Agb3IgYFNQSWAsIGJ1dCBxdWlja2x5IGRpc21pc3NlZCB0aGVtIOKAkyB0aGlzIGlzIGFuIE1ESU8gZGV2aWNlLiBXaGF0IGFib3V0IHRoZSBkZXZpY2UgdHJlZT8gQ2FuIEkgYmluZCB0aGUgZHJpdmVyIHRoZXJlPyBTYWRseSwgU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGFsbG93IGZvciBkeW5hbWljIG1vZGlmaWNhdGlvbiBvZiB0aGUgZGV2aWNlIHRyZWUuCgpTbywgaXQmIzM5O3Mgc3RhcnRpbmcgdG8gbG9vayBwcmV0dHkgYmxlYWsuIEl0IGFwcGVhcnMgdGhhdCByZWFjaGluZyBgeXQ4NTIxX2dldF9mZWF0dXJlc2AgaW4gZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24gaXMgcHJldHR5IG11Y2ggaW1wb3NzaWJsZS4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgYG1vdG9yY29tbWAgc3BlY2lmaWMgZW11bGF0aW9uIGluIFFFTVUuIEkgcXVpY2tseSBzY2FubmVkIHRoZSBjb21tb24gbmV0d29yayBkZXZpY2VzOiBgZTEwMDBgLCBgcnRsODEzOWAsIGB2aXJ0aW8tbmV0YCwgYHBjbmV0YCwgYG5lMmtgLCBgdHVsaXBgLCBgdm14bmV0M2AsIGBpZ2JgLCBldGMuIE5vbmUgb2YgdGhlc2UgdXNlIGBtb3RvcmNvbW1gIFBIWXMuIEkgdGhlbiBjb25zaWRlcmVkIG90aGVyIE1BQ3MgZW11bGF0ZWQgaW4gUUVNVSwgbGlrZSBgZHdtYWNgIChzdG1tYWMpIGluIGVpdGhlciBgaHcvbmV0L2FsbHdpbm5lci1zdW44aS1lbWFjLmNgIG9yIGBody9uZXQvaW14X2ZlYy5jYCwgYnV0IGV2ZW4gdGhleSBkb24mIzM5O3Qgc2VlbSB0byBlbXVsYXRlIGEgYG1vdG9yY29tbWAgUEhZLiBJdCYjMzk7cyBtb3JlIGxpa2VseSB0aGF0IFFFTVUgZW11bGF0ZXMgYSBnZW5lcmljIFBIWSwgbGlrZSBSZWFsdGVrIG9yIE5hdGlvbmFsIFNlbWljb25kdWN0b3IuIExldCBtZSBqdXN0IGRvIGEgcXVpY2sgc2VhcmNoIHRvIG1ha2Ugc3VyZSB0aGVyZSBpcyBubyBtZW50aW9uIG9mIGBtb3RvcmNvbW1gIGluIHRoZSBRRU1VIHNvdXJjZSwgZXZlbiB0aG91Z2ggdGhhdCBpcyB1bmxpa2VseS4KCkFscmlnaHQsIGlzIHRoZXJlIGFub3RoZXIgd2F5IHRvIHRyaWdnZXIgYHl0ODUyMV9nZXRfZmVhdHVyZXNgPyBJIG5lZWQgdG8gdGhpbmsgdGhpcyB0aHJvdWdoLiBJdCYjMzk7cyBhIGNhbGxiYWNrIGZvciBgZ2V0X2ZlYXR1cmVzYCB3aXRoaW4gdGhlIGBwaHlfZHJpdmVyYCBzdHJ1Y3R1cmUuIFNvLCBpdCYjMzk7cyBnb2luZyB0byBiZSBjYWxsZWQgZnJvbSBlaXRoZXIgYHBoeV9wcm9iZWAsIGBwaHlfYXR0YWNoX2RpcmVjdGAsIG9yIGBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3NgLiBCdXQsIGl0IGFsbCBjb21lcyBiYWNrIHRvIHRoZSBzYW1lIHByb2JsZW06IFRoZSBgbW90b3Jjb21tYCBQSFkgZHJpdmVyIG5lZWRzIHRvIGJlIGJvdW5kIHRvIGEgYHBoeV9kZXZpY2VgLiBBbmQgYSBgcGh5X2RldmljZWAgaXMgb25seSBjcmVhdGVkIHdoZW4gdGhlIE1ESU8gYnVzIGlzIHNjYW5uZWQsIGFuZCB0aGUgUEhZIElEIG1hdGNoZXMgYFBIWV9JRF9ZVDg1MTFgIChvciB3aGF0ZXZlciB0aGUgY29ycmVjdCBJRCBhY3R1YWxseSBpcy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgSUQgdG8gYmUgY2VydGFpbikuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BIWV9JRF9ZVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE0LVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE1OiNkZWZpbmUgUEhZX0lEX1lUODUxMVx0XHQweDAwMDAwMTBhXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTY6I2RlZmluZSBQSFlfSURfWVQ4NTIxXHRcdDB4MDAwMDAxMWFcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxNzojZGVmaW5lIFBIWV9JRF9ZVDg1MjJcdFx0MHg0ZjUxZTkyOFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE4OiNkZWZpbmUgUEhZX0lEX1lUODUzMVx0XHQweDRmNTFlOTFiXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTk6I2RlZmluZSBQSFlfSURfWVQ4NTMxU1x0XHQweDRmNTFlOTFhXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MjA6I2RlZmluZSBQSFlfSURfWVQ4ODIxXHRcdDB4NGY1MWVhMTlcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0yMS0vKiBZVDg1MjEvWVQ4NTMxUy9ZVDg4MjEgUmVnaXN0ZXIgT3ZlcnZpZXdcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9ODkwPXN0YXRpYyBpbnQgeXRwaHlfcmdtaWlfY2xrX2RlbGF5X2NvbmZpZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy05MjEtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJOlxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjkyMjpcdFx0aWYgKHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcGh5X2lkICE9IFBIWV9JRF9ZVDg1MzFTKVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTkyMy1cdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTEwNjM9c3RhdGljIGludCB5dDg1MjFfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTExNi1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxMTE3Olx0aWYgKHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcGh5X2lkID09IFBIWV9JRF9ZVDg1MjEpIHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xMTE4LVx0XHRzd2l0Y2ggKGZyZXEpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTE0My1cdFx0fVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjExNDQ6XHR9IGVsc2UgaWYgKHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlcGh5X2lkID09IFBIWV9JRF9ZVDg1MzFTKSB7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTE0NS1cdFx0c3dpdGNoIChmcmVxKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTE2NzY9c3RhdGljIGludCB5dDg1MjFfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTcwOS1cdGlmIChwaHlfaW50ZXJmYWNlX2lzX3JnbWlpKHBoeWRldikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTcxMDpcdCAgICBwaHlkZXZfaWRfY29tcGFyZShwaHlkZXYsIFBIWV9JRF9ZVDg1MzFTKSlcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xNzExLVx0XHRyZXQgPSB5dDg1MzFfc2V0X2RzKHBoeWRldik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTMwNjM9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1vdG9yY29tbV9waHlfZHJ2c1tdID0ge1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNjQtXHR7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzA2NTpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MTEpLFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNjYtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7WVQ4NTExIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNzMtXHR7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzA3NDpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MjEpLFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNzUtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7WVQ4NTIxIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwOTMtXHR7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzA5NDpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MjIpLFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwOTUtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7WVQ4NTIyIDEwMCBNZWdhYml0IEV0aGVybmV0XCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTAxLVx0e1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxMDI6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4NTMxKSxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTAzLVx0XHQubmFtZVx0XHQ9IFwmIzM0O1lUODUzMSBHaWdhYml0IEV0aGVybmV0XCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTE1LVx0e1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxMTY6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4NTMxUyksXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzExNy1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtZVDg1MzFTIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxMzItXHR7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzEzMzpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg4MjEpLFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxMzQtXHRcdC5uYW1lXHRcdFx0PSBcJiMzNDtZVDg4MjEgMi41R2JwcyBQSFlcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTMxNTg9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBtb3RvcmNvbW1fdGJsW10gPSB7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE1OTpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MTEpIH0sXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE2MDpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MjEpIH0sXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE2MTpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MjIpIH0sXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE2MjpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MzEpIH0sXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE2MzpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MzFTKSB9LFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxNjQ6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4ODIxKSB9LFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxNjUtXHR7IC8qIHNlbnRpbmVsICovIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMzMTgKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgU3l6a2FsbGVyJiMzOTtzIE1ESU8gRGV2aWNlIENyZWF0aW9uIENhcGFiaWxpdGllcyoqCgpPa2F5LCBzbyB0aGVzZSBkZXZpY2UgSURzIGFyZSBjbGVhcmx5ICpzcGVjaWZpYyouIFRoZSBjaGFsbGVuZ2UsIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlLCBib2lscyBkb3duIHRvIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiBjb25qdXJlIHVwIGEgdmlydHVhbCBNRElPIGRldmljZSB3aXRoIHRoZSBleGFjdCBJRCBJIG5lZWQuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogZG9lcyBzeXprYWxsZXIgaGF2ZSBhbnkgbWVjaGFuaXNtIGZvciB2aXJ0dWFsIE1ESU8gZGV2aWNlIGNyZWF0aW9uICphdCBhbGwqPwoKTGV0JiMzOTtzIHNlZS4gSSByZW1lbWJlciBpdCBsZXZlcmFnZXMgYSB2YXJpZXR5IG9mIG5ldHdvcmsgZGV2aWNlcyBmb3IgZnV6emluZzogYHR1bmAsIGB0YXBgLCBgdmV0aGAsIGBtYWNzZWNgLCB0aGUgd2hvbGUgYWxwaGFiZXQgc291cCBvZiB2aXJ0dWFsIG5ldHdvcmtpbmcgc3R1ZmYuLi4gYHZjYW5gLCBgdnhjYW5gLCBgZHVtbXlgLCBgbmxtb25gLCBgZ2VuZXZlYCwgYG1hY3ZsYW5gLCBgaXB2bGFuYCwgYGJyaWRnZWAsIGBib25kYCwgYHRlYW1gLCBgdmxhbmAsIGB3aXJlZ3VhcmRgLCBgYmF0YWR2YCwgYGhzcmAsIGB4ZnJtYCwgYG5ldGRldnNpbWAsIGBiYXJldWRwYCwgYGFtdGAsIGB3d2FuYCwgYG1jdHBgLCBgcXJ0cmAsIGBjYW5gLCBgYmx1ZXRvb3RoYCwgYG5mY2AsIGBpZWVlODAyMTU0YCwgYG1hYzgwMjExX2h3c2ltYCwgYHZoY2lgLCBgdWlucHV0YCwgYHNuZC1kdW1teWAsIGB2a21zYCwgYGxvb3BiYWNrYC4gVGhhdCYjMzk7cyBhIGNvbXByZWhlbnNpdmUgbGlzdC4gQnV0LCByZXZpZXdpbmcgdGhlbSwgKm5vbmUqIG9mIHRob3NlIHNlZW0gZGVzaWduZWQgdG8gY3JlYXRlIE1ESU8gZGV2aWNlcyB3aXRoIGFyYml0cmFyeSBJRHMuIFRoZXkmIzM5O3JlIGZvY3VzZWQgb24gb3RoZXIgbmV0d29ya2luZyBsYXllcnMuCgpIb2xkIG9uLCB0aG91Z2guIFRoZSBgZHNhX2xvb3BgIGRyaXZlciBpcyByaW5naW5nIGEgYmVsbC4gSSBzZWVtIHRvIHJlY2FsbCBpdCBzaW11bGF0aW5nIGEgc3dpdGNoLiBDb3VsZCBpdCBiZSBjcmVhdGluZyBQSFlzIGFzIHBhcnQgb2YgdGhhdCBtb2NrLXVwPyBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhhdC4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgc3BlY2lmaWNhbGx5IGxvb2sgYXQgaG93IHRoZSBgZHNhX2xvb3BgIGRyaXZlciBjcmVhdGVzIGl0cyB2aXJ0dWFsIHN3aXRjaCBhbmQgYXNzb2NpYXRlZCBkZXZpY2VzLiBUaGUga2V5IGZ1bmN0aW9uIHRvIGV4YW1pbmUgd291bGQgYmUgYGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldmAgaW4gYGRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jYC4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIGlzIHRoZSBrZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQzOD1zdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDY6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQ4Mj1zdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3Olx0cmV0ID0gZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODgtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDI4OQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldmAgZnVuY3Rpb24uIEkmIzM5O20gZ29pbmcgdG8gYXBwcm9hY2ggdGhpcyB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQsIGxpa2UgbW9zdCBtb2Rlcm4gRFNBIGNvZGUsIGl0JiMzOTtzIGJ1aWxkaW5nIG9uIHRoZSBleGlzdGluZyBmb3VuZGF0aW9uYWwgc3RydWN0dXJlcyBhbmQgYWJzdHJhY3Rpb25zLiBNeSBpbml0aWFsIGV4cGVjdGF0aW9ucyBhcmUgdGhhdCBpdCB3aWxsIGJlIHNldHRpbmcgdXAgYSBuZXcgdmlydHVhbCBkZXZpY2UgcmVwcmVzZW50aW5nIGEgc3dpdGNoLCBsaWtlbHkgYW4gaW50ZXJuYWwgb25lLCBhbmQgcHJvYmFibHkgY29uZmlndXJpbmcgdGhlIE1ESU8gKE1hbmFnZW1lbnQgRGF0YSBJbnB1dC9PdXRwdXQpIGludGVyZmFjZSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgc3dpdGNoJiMzOTtzIFBIWXMgKFBoeXNpY2FsIExheWVyIFRyYW5zY2VpdmVycykuCgpJ4oCZbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6CgoqICAgKipEZXZpY2UgQWxsb2NhdGlvbjoqKiBIb3cgaXQgYWxsb2NhdGVzIHRoZSBuZXcgYHN0cnVjdCBkc2Ffc3dpdGNoYCAob3Igc2ltaWxhcikgc3RydWN0dXJlLiBJcyBpdCB1c2luZyB0aGUgc3RhbmRhcmQgYGt6YWxsb2NgIHBhdHRlcm4/IEFyZSB0aGVyZSBhbnkgY3VzdG9tIGFsbG9jYXRvcnM/CiogICAqKk1ESU8gU2V0dXA6KiogVGhlIG1lYXQgb2YgdGhlIG1hdHRlci4gSG93IGlzIHRoZSBNRElPIGJ1cyBiZWluZyBhc3NpZ25lZD8gSXMgaXQgY3JlYXRpbmcgYSBuZXcgTURJTyBidXMgaW5zdGFuY2Ugb3IgcGlnZ3liYWNraW5nIG9uIGFuIGV4aXN0aW5nIG9uZT8gV2hhdCBzcGVjaWZpYyBNRElPIGRyaXZlciBob29rcyAoZS5nLiwgYG1kaW9idXNfcmVnaXN0ZXJgIG9yIGVxdWl2YWxlbnQpIGFyZSB1c2VkPyBBcmUgdGhlcmUgYW55IHNwZWNpYWwgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB0aGUgTURJTyBpbnRlcmZhY2UuIEkgZXhwZWN0IHNvbWUgUEhZIGFkZHJlc3NpbmcgYW5kIHNldHVwIHRvIGhhcHBlbiBoZXJlLgoqICAgKipEU0EgRHJpdmVyIEludGVyYWN0aW9uOioqIEnigJlsbCBiZSBjaGVja2luZyBob3cgdGhlIG5ldyBzd2l0Y2ggZGV2aWNlIGludGVncmF0ZXMgaW50byB0aGUgbWFpbiBEU0EgZHJpdmVyIGZyYW1ld29yay4gSXMgaXQgcmVnaXN0ZXJpbmcgdGhlIHN3aXRjaCB3aXRoIGBkc2FfcmVnaXN0ZXJfc3dpdGNoYCBvciBhIHNpbWlsYXIgZnVuY3Rpb24/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgaG9va3MgYmVpbmcgc2V0IHVwIGZvciBEU0EtbGV2ZWwgb3BlcmF0aW9ucyAoZS5nLiwgVkxBTiBmaWx0ZXJpbmcsIHBvcnQgY29uZmlndXJhdGlvbik/CiogICAqKkVycm9yIEhhbmRsaW5nOioqIEl0JiMzOTtzICpjcml0aWNhbCogdG8gc2VlIGhvdyByb2J1c3QgdGhlIGVycm9yIGhhbmRsaW5nIGlzLiBMb29rIGZvciBjaGVja3MgYWZ0ZXIgZXZlcnkgYWxsb2NhdGlvbiBvciBzeXN0ZW0gY2FsbCwgYW5kIGhvdyBpdCBoYW5kbGVzIGNsZWFudXAgb2YgYWxsb2NhdGVkIHJlc291cmNlcyBpZiBzb21ldGhpbmcgZmFpbHMuIFByb3BlciByZXNvdXJjZSBjbGVhbnVwIGlzIGVzc2VudGlhbC4KKiAgICoqUmVzb3VyY2UgTWFuYWdlbWVudDoqKiBIb3cgaXMgdGhpcyBmdW5jdGlvbiBtYW5hZ2luZyBpdHMgcmVzb3VyY2VzLCBsaWtlIHRoZSBNRElPIGJ1cywgRFNBIHN3aXRjaCBzdHJ1Y3R1cmUsIGFuZCBtZW1vcnk/IEFyZSB0aGVzZSBjb3JyZWN0bHkgY2xlYW5lZCB1cCBvbiBkZXZpY2UgcmVtb3ZhbCBvciBkcml2ZXIgdW5sb2FkPwoKVWx0aW1hdGVseSwgSSBleHBlY3QgdG8gc2VlIGEgZnVuY3Rpb24gdGhhdCwgZ2l2ZW4gYXBwcm9wcmlhdGUgcGFyYW1ldGVycywgY3JlYXRlcyBhIG5ldyBpbnRlcm5hbCBEU0Egc3dpdGNoIGRldmljZSBjYXBhYmxlIG9mIGludGVyYWN0aW5nIHdpdGggaXRzIFBIWXMgdGhyb3VnaCBNRElPLiBUaGUgcXVhbGl0eSBvZiB0aGlzIHNldHVwIGRldGVybWluZXMgaG93IHdlbGwgdGhlIHN3aXRjaCBvcGVyYXRlcy4gVGltZSB0byByZWFkIHRoZSBjb2RlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDQ2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NDY6XHRzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYodm9pZClcbiA0NDc6XHR7XG4gNDQ4Olx0XHRzdGF0aWMgc3RydWN0IGRzYV9sb29wX3BkYXRhIGRzYV9sb29wX3BkYXRhID0ge1xuIDQ0OTpcdFx0XHQuY2QgPSB7XG4gNDUwOlx0XHRcdFx0LnBvcnRfbmFtZXNbMF0gPSBcJiMzNDtsYW4xXCYjMzQ7LFxuIDQ1MTpcdFx0XHRcdC5wb3J0X25hbWVzWzFdID0gXCYjMzQ7bGFuMlwmIzM0OyxcbiA0NTI6XHRcdFx0XHQucG9ydF9uYW1lc1syXSA9IFwmIzM0O2xhbjNcJiMzNDssXG4gNDUzOlx0XHRcdFx0LnBvcnRfbmFtZXNbM10gPSBcJiMzNDtsYW40XCYjMzQ7LFxuIDQ1NDpcdFx0XHRcdC5wb3J0X25hbWVzW0RTQV9MT09QX0NQVV9QT1JUXSA9IFwmIzM0O2NwdVwmIzM0OyxcbiA0NTU6XHRcdFx0fSxcbiA0NTY6XHRcdFx0Lm5hbWUgPSBcJiMzNDtEU0EgbW9ja3VwIGRyaXZlclwmIzM0OyxcbiA0NTc6XHRcdFx0LmVuYWJsZWRfcG9ydHMgPSAweDFmLFxuIDQ1ODpcdFx0XHQubmV0ZGV2ID0gXCYjMzQ7ZXRoMFwmIzM0OyxcbiA0NTk6XHRcdH07XG4gNDYwOlx0XHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuIDQ2MTpcdFx0aW50IHJldCA9IC1FTk9ERVY7XG4gNDYyOlx0XG4gNDYzOlx0XHRidXMgPSBtZGlvX2ZpbmRfYnVzKFwmIzM0O2ZpeGVkLTBcJiMzNDspO1xuIDQ2NDpcdFx0aWYgKFdBUk5fT04oIWJ1cykpXG4gNDY1Olx0XHRcdHJldHVybiByZXQ7XG4gNDY2Olx0XG4gNDY3Olx0XHRzd2l0Y2hfbWRpb2RldiA9IG1kaW9fZGV2aWNlX2NyZWF0ZShidXMsIDMxKTtcbiA0Njg6XHRcdGlmIChJU19FUlIoc3dpdGNoX21kaW9kZXYpKVxuIDQ2OTpcdFx0XHRnb3RvIG91dDtcbiA0NzA6XHRcbiA0NzE6XHRcdHN3aXRjaF9tZGlvZGV2LVx1MDAzZWJ1c19tYXRjaCA9IGRzYV9sb29wX2J1c19tYXRjaDtcbiA0NzI6XHRcdHN3aXRjaF9tZGlvZGV2LVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhID0gXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XG4gNDczOlx0XG4gNDc0Olx0XHRyZXQgPSBtZGlvX2RldmljZV9yZWdpc3Rlcihzd2l0Y2hfbWRpb2Rldik7XG4gNDc1Olx0XHRpZiAocmV0KVxuIDQ3NjpcdFx0XHRtZGlvX2RldmljZV9mcmVlKHN3aXRjaF9tZGlvZGV2KTtcbiA0Nzc6XHRvdXQ6XG4gNDc4Olx0XHRwdXRfZGV2aWNlKFx1MDAyNmJ1cy1cdTAwM2VkZXYpO1xuIDQ3OTpcdFx0cmV0dXJuIHJldDtcbiA0ODA6XHR9XG4gNDgxOlx0XG4gNDgyOlx0c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxuIDQ4MzpcdHtcbiA0ODQ6XHRcdHVuc2lnbmVkIGludCBpO1xuIDQ4NTpcdFx0aW50IHJldDtcbiA0ODY6XHRcbiA0ODc6XHRcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xuIDQ4ODpcdFx0aWYgKHJldClcbiA0ODk6XHRcdFx0cmV0dXJuIHJldDtcbiA0OTA6XHRcbiA0OTE6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE5VTV9GSVhFRF9QSFlTOyBpJiM0MzsmIzQzOylcbiA0OTI6XHRcdFx0cGh5ZGV2c1tpXSA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xuIDQ5MzpcdFxuIDQ5NDpcdFx0cmV0ID0gbWRpb19kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcbiA0OTU6XHRcdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU1NjUKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVU0IgYW5kIE1vdG9yY29tbSBQSFlzOiBBIFF1aWNrIEV4cGxvcmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0JiMzOTtzIHVzaW5nIGEgYGZpeGVkLXBoeWAsIGJ1dCBpdCYjMzk7cyAqbm90KiBjcmVhdGluZyBNb3RvcmNvbW0gUEhZcyBkaXJlY3RseS4gVGhhdCYjMzk7cyBhIGxpdHRsZSB1bnVzdWFsLCBhbmQgaXQmIzM5O3MgZ290IG1lIHRoaW5raW5nLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzLCBpcyB0aGVyZSBldmVuIGFub3RoZXIgd2F5IHRvIGdldCBNRElPIGRldmljZXMgaW50byB0aGUgc3lzdGVtPyBCZXlvbmQgdGhlIG9idmlvdXMuCgpXYWl0IGEgc2Vjb25kLi4uSSYjMzk7bSByZW1lbWJlcmluZyB0aGF0IHN5emthbGxlciBoYXMgc29tZSBgc3l6X3VzYl9jb25uZWN0YCBjYWxscywgbGlrZSBgc3l6X3VzYl9jb25uZWN0X2F0aDlrYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgbWF5YmUgdGhlcmUmIzM5O3MgYSBjb25uZWN0aW9uIHRoZXJlLiBUaGlzIG1ha2VzIG1lIGNvbnNpZGVyIGlmIHRoZXJlIGlzIGEgVVNCIGV0aGVybmV0IGFkYXB0ZXIgb3V0IHRoZXJlIHRoYXQgKmRvZXMqIHVzZSBNb3RvcmNvbW0gUEhZcywgaXQgbWlnaHQgYmUgYSB3YXkgdG8gaW5qZWN0IHRoZW0uCgpUaGUgYmVzdCB0aGluZyB0byBkbyBpcyB0byBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBVU0IgZHJpdmVycyB0aGF0IGFjdHVhbGx5IHVzZSBtb3RvcmNvbW0gUEhZcyBhdCBhbGwuIEEgcXVpY2sgaW52ZXN0aWdhdGlvbiBvZiBleGlzdGluZyBkcml2ZXJzIGFuZCB0aGVpciBoYXJkd2FyZSBzdXBwb3J0IGlzIHByb2JhYmx5IHRoZSBiZXN0IGZpcnN0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW90b3Jjb21tJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1OTEzCgkJCQkJCQlvdXRwdXQ6IDkwCgkJCQkJCQl0aG91Z2h0czogODUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQgdG91Y2hlcyB0aGUgYGR3bWFjLW1vdG9yY29tbS5jYCBkcml2ZXIuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgUENJLCBhbmQgc3BlY2lmaWNhbGx5IGEgUENJIGRldmljZSBmcm9tIE1vdG9yY29tbS4gSSBrbm93IHRoYXQgYGR3bWFjLW1vdG9yY29tbS5jYCByZWdpc3RlcnMgYSBkZXZpY2Ugd2l0aCBgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01PVE9SQ09NTSwgMHg2ODAxKWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIGNhbiBzeXprYWxsZXIgZXZlbiB0b3VjaCB0aGlzPyBJIGtub3cgc3l6a2FsbGVyIGhhcyBgdmhjaWAgZm9yIFVTQiwgd2hpY2ggaXMgbmVhdCwgYnV0IEkgY2FuJiMzOTt0IHJlY2FsbCBhbnkga2luZCBvZiBlcXVpdmFsZW50IGZvciBQQ0kuIAoKTGV0IG1lIHJlcGhyYXNlIHRoYXQuIEkga25vdyBzeXprYWxsZXIgZG9lc24mIzM5O3QgZ2VuZXJhbGx5IGVtdWxhdGUgKmFyYml0cmFyeSogUENJIGRldmljZXMuIEl0IHVzZXMgUUVNVSB0byBwcm92aWRlIHRoZSBQQ0kgZGV2aWNlcyBpZiB5b3UmIzM5O3JlIGZ1enppbmcgdGhhdCB3YXkuIEFuZCBJIHJlY2FsbCB0aGVyZSBhcmUgY3VzdG9tIFBDSSBmdXp6ZXJzIG91dCB0aGVyZSwgYnV0IHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgZ2VuZXJpYyBQQ0kgZGV2aWNlIGluamVjdG9yIGxpa2UgYHZoY2lgLgoKV2FpdCwgd2hhdCBhYm91dCBgc3l6X3BjaV9kZXZpY2VfYWRkYD8gTm9wZSwgdGhhdCBkb2VzbiYjMzk7dCBleGlzdC4gVGhlcmUmIzM5O3MgVkZJTyBmdXp6aW5nLCBidXQgdGhhdCYjMzk7cyBmb3IgdXNlcnNwYWNlIGRyaXZlcnMsIHJpZ2h0PyBTbywgdW5sZXNzIHRoZSBhY3R1YWwgaGFyZHdhcmUgaXMgcHJlc2VudCwgYGR3bWFjLW1vdG9yY29tbWAgaXMgZGVhZCBpbiB0aGUgd2F0ZXIuCgpPa2F5LCBtYXliZSB0aGVyZSYjMzk7cyBhIHdvcmthcm91bmQuIENvdWxkIHRoZSBQSFkgZHJpdmVyIGJlIHJlYWNoZWQgaW5kaXJlY3RseSB0aHJvdWdoIGFub3RoZXIgTUFDIGRyaXZlcj8gRXZlbiBpZiB0aGF0IHdlcmUgdGhlIGNhc2UsIHRoZSBQSFkgZGV2aWNlIGl0c2VsZiB3b3VsZCBzdGlsbCBuZWVkIHRvIGJlIGluc3RhbnRpYXRlZC4gVGhlIE1ESU8gYnVzIHdvdWxkIG5lZWQgdG8gZmluZCB0aGUgUEhZIElELCBhbmQgd2l0aG91dCB0aGUgaGFyZHdhcmUsIHRoYXQgd29uJiMzOTt0IGhhcHBlbi4gVGhlIGRyaXZlciB3b24mIzM5O3QgcHJvYmUuCgpJcyB0aGVyZSBhbnkgd2F5IHRvIGZha2UgYSBQSFkgSUQgb24gYW4gTURJTyBidXM/IE1heWJlIGlmIHRoZXJlJiMzOTtzIGEgdmlydHVhbCBNRElPIGJ1cy4gTGV0JiMzOTtzIHNlZS4uLiBgbWFjbWFjYCwgYGR1bW15YCwgYG5ldGRldnNpbWAsIGB0dW4vdGFwYCwgYHZldGhgLCBgbWFjdmxhbmAsIGBkc2FfbG9vcGAuLi4gTm8uIE5vbmUgb2YgdGhlbSBoYXZlIE1ESU8gZXhjZXB0IGBkc2FfbG9vcGAgd2hpY2ggdXNlcyBgZml4ZWQtcGh5YC4KClNvLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCB0aGVyZSYjMzk7cyBubyBwYXRoIHRvIGB5dDg1MjFfZ2V0X2ZlYXR1cmVzYCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLiBTaW5jZSB0aGUgcGF0Y2ggbW9kaWZpZXMgYG1vdG9yY29tbS5jYCwgYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgZHJpdmVyLCBhbmQgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSwgdGhpcyBjb2RlIGlzIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLgoKTGV0IG1lIGRvdWJsZSBjaGVjay4gQ291bGQgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIGJlIGNhbGxlZCBmcm9tIHNvbWV3aGVyZSBlbHNlPyBOb3BlLCBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiBpbnNpZGUgYG1vdG9yY29tbS5jYC4gQ291bGQgYG1vdG9yY29tbS5jYCBiZSBjb21waWxlZCBhcyBwYXJ0IG9mIHNvbWUgb3RoZXIgbW9kdWxlPyBObywgaXQmIzM5O3MgaW4gaXRzIG93biBgbW90b3Jjb21tLmtvYCBvciBidWlsdC1pbiwgYW5kIG9ubHkgcmVnaXN0ZXJzIGl0c2VsZiBhcyBhIFBIWSBkcml2ZXIuCgpPa2F5LCBsZXQgbWUgcmV2aWV3IHRoZSBpbnN0cnVjdGlvbnMgYWdhaW4uICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uJiMzNDsKCkdpdmVuIHRoYXQgYG1vdG9yY29tbS5jYCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBkcml2ZXIsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBmb3IgaXQsIGFuZCB0aGUgZmFjdCB0aGF0IHRoZXJlJiMzOTtzIG5vIGBtZGlvYCBpbmplY3Rpb24gbWVjaGFuaXNtIGluIHN5emthbGxlci4gSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWxldmFudCBjb2RlIGlzIHNpbXBseSB1bnJlYWNoYWJsZSBpbiB0aGUgdGFyZ2V0IGVudmlyb25tZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBkcml2ZXIgKG1vdG9yY29tbSkuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBQSFkgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIGFuZCBzeXprYWxsZXIgY2Fubm90IGluc3RhbnRpYXRlIGFyYml0cmFyeSBQSFkgZGV2aWNlcyB3aXRob3V0IGhhcmR3YXJlLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgZHJpdmVyIChtb3RvcmNvbW0pLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgUEhZIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBhbmQgc3l6a2FsbGVyIGNhbm5vdCBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgUEhZIGRldmljZXMgd2l0aG91dCBoYXJkd2FyZSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoxOTowNS4zNjE1MDUzOTRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDc0MDQ2NzYxODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUEhZIGRyaXZlciAobW90b3Jjb21tKS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIFBIWSBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgYW5kIHN5emthbGxlciBjYW5ub3QgaW5zdGFudGlhdGUgYXJiaXRyYXJ5IFBIWSBkZXZpY2VzIHdpdGhvdXQgaGFyZHdhcmUsIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoxOTowNS4zNjE1MTE1ODRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMDA3OTYwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDYyZWM0OTk2M2MyYzk5OGUwOTI4YzY1NDNhMWRlZDNlNmM5M2RkYmZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMTEgMDQ6MTk6MDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jIGIvZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jXFxuaW5kZXggNTA3MTYwNWExYTExN2EuLjgxODA5OGE3OGQyM2RlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uY1xcbkBAIC0yNDkwLDcgKzI0OTAsOCBAQCBzdGF0aWMgaW50IHl0ODUyMV9nZXRfZmVhdHVyZXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0XFx0LyogYWRkIGZpYmVyJ3MgZmVhdHVyZXMgdG8gcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQgKi9cXG4gXFx0XFx0eXQ4NTIxX3ByZXBhcmVfZmliZXJfZmVhdHVyZXMocGh5ZGV2LCBwaHlkZXYtXFx1MDAzZXN1cHBvcnRlZCk7XFxuIFxcdH1cXG4tXFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldHVybiByZXQgPyByZXQgOiBnZW5waHlfYzQ1X3JlYWRfZWVlX2FiaWxpdGllcyhwaHlkZXYpO1xcbiB9XFxuIFxcbiAvKipcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6MDUuNjkyNDE3MzQ3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDcwNzM3NTc2NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUEhZIGRyaXZlciAobW90b3Jjb21tKS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIFBIWSBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgYW5kIHN5emthbGxlciBjYW5ub3QgaW5zdGFudGlhdGUgYXJiaXRyYXJ5IFBIWSBkZXZpY2VzIHdpdGhvdXQgaGFyZHdhcmUsIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDYyZWM0OTk2M2MyYzk5OGUwOTI4YzY1NDNhMWRlZDNlNmM5M2RkYmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAwNDoxOTowNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYyBiL2RyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uY1xuaW5kZXggNTA3MTYwNWExYTExN2EuLjgxODA5OGE3OGQyM2RlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmNcbkBAIC0yNDkwLDcgKzI0OTAsOCBAQCBzdGF0aWMgaW50IHl0ODUyMV9nZXRfZmVhdHVyZXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdFx0LyogYWRkIGZpYmVyJ3MgZmVhdHVyZXMgdG8gcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCAqL1xuIFx0XHR5dDg1MjFfcHJlcGFyZV9maWJlcl9mZWF0dXJlcyhwaHlkZXYsIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpO1xuIFx0fVxuLVx0cmV0dXJuIHJldDtcbitcbitcdHJldHVybiByZXQgPyByZXQgOiBnZW5waHlfYzQ1X3JlYWRfZWVlX2FiaWxpdGllcyhwaHlkZXYpO1xuIH1cbiBcbiAvKipcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjE5OjA1LjY5MjQxODg1NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0ODQyOTY1NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IE5ldHdvcmsgUEhZIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGFyb3VuZCBpbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uY2AgZmlsZS4gVGhlIHNwZWNpZmljIGFyZWEgb2YgaW50ZXJlc3QgaXMgdGhlIGB5dDg1MjFfZ2V0X2ZlYXR1cmVzYCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhlIGNoYW5nZSBpcyBhIHNpbXBsZSBjb25kaXRpb25hbDogdGhlIG9yaWdpbmFsIGNvZGUganVzdCByZXR1cm5lZCB0aGUgdmFsdWUgb2YgYHJldGAsIGJ1dCBub3cgaXQncyByZXR1cm5pbmcgYHJldCA/IHJldCA6IGdlbnBoeV9jNDVfcmVhZF9lZWVfYWJpbGl0aWVzKHBoeWRldik7YC4gRXNzZW50aWFsbHksIGl0IGlzIGNoZWNraW5nIGlmIHJldCBpcyB0cnVlLCBpZiBzbywgcmV0dXJuaW5nIHJldCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzZWNvbmQgZXhwcmVzc2lvbi5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGVsdmUgaW50byB0aGUgY29kZSBpdHNlbGYuIEkgd2FudCB0byBzZWUgd2hhdCBgcmV0YCByZXByZXNlbnRzIGluIHRoaXMgY29udGV4dCBhbmQgdW5kZXJzdGFuZCB0aGUgbG9naWMgdGhhdCdzIGJlaW5nIHVzZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIGNvbmRpdGlvbmFsIHdhcyBpbnRyb2R1Y2VkIGFuZCB3aGF0IHBvdGVudGlhbCBlZGdlIGNhc2VzIGl0J3MgdHJ5aW5nIHRvIGFkZHJlc3MuIElzIHRoaXMgYWJvdXQgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCAoRUVFKSBjYXBhYmlsaXRpZXMsIG9yIHNvbWV0aGluZyBlbHNlPyBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEknbGwgbmVlZCB0byBsb29rIGludG8gd2hhdCBgZ2VucGh5X2M0NV9yZWFkX2VlZV9hYmlsaXRpZXMocGh5ZGV2KWAgaXMgYW5kIGl0cyBpbXBsaWNhdGlvbnMuIEFsc28sIHdoYXQgZG9lcyBgeXQ4NTIxX2dldF9mZWF0dXJlc2AgZG8gaWYgdGhlcmUgaXMgYW4gZXJyb3I/IE15IGZhbWlsaWFyaXR5IHdpdGggdGhlIE1vdG9yY29tbSBQSFkgZHJpdmVycyB3aWxsIGNvbWUgaW4gaGFuZHkgaGVyZS4gVWx0aW1hdGVseSwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBwYXJ0aWN1bGFyIG1vZGlmaWNhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzNCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6MTAuMTc2NzE3MTQ0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NDcxMzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInl0ODUyMV9nZXRfZmVhdHVyZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0yNDAwPXN0YXRpYyBpbnQgeXRwaHlfdXRwX3JlYWRfYWJpbGl0aWVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMjQ0MC0vKipcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MjQ0MTogKiB5dDg1MjFfZ2V0X2ZlYXR1cmVzX3BhZ2VkKCkgLSAgcmVhZCBzdXBwb3J0ZWQgbGluayBtb2RlcyBmb3Igb25lIHBhZ2VcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMjQ0Mi0gKiBAcGh5ZGV2OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeV9kZXZpY2VcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0yNDQ3LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoyNDQ4OnN0YXRpYyBpbnQgeXQ4NTIxX2dldF9mZWF0dXJlc19wYWdlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgcGFnZSlcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMjQ0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMjQ3MS0vKipcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MjQ3MjogKiB5dDg1MjFfZ2V0X2ZlYXR1cmVzIC0gc3dpdGNoIHJlZyBzcGFjZSB0aGVuIGNhbGwgeXQ4NTIxX2dldF9mZWF0dXJlc19wYWdlZFxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0yNDczLSAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTI0NzYtICovXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjI0Nzc6c3RhdGljIGludCB5dDg1MjFfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTI0Nzgte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTI0ODItXFx0aWYgKHByaXYtXFx1MDAzZXJlZ19wYWdlICE9IFlUODUyMV9SU1NSX1RPX0JFX0FSQklUUkFURUQpIHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MjQ4MzpcXHRcXHRyZXQgPSB5dDg1MjFfZ2V0X2ZlYXR1cmVzX3BhZ2VkKHBoeWRldiwgcHJpdi1cXHUwMDNlcmVnX3BhZ2UpO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0yNDg0LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjI0ODU6XFx0XFx0cmV0ID0geXQ4NTIxX2dldF9mZWF0dXJlc19wYWdlZChwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTI0ODYtXFx0XFx0XFx0XFx0XFx0XFx0WVQ4NTIxX1JTU1JfVVRQX1NQQUNFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0zMDYzPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtb3RvcmNvbW1fcGh5X2RydnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMDc1LVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiWVQ4NTIxIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMDc2OlxcdFxcdC5nZXRfZmVhdHVyZXNcXHQ9IHl0ODUyMV9nZXRfZmVhdHVyZXMsXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNzctXFx0XFx0LnByb2JlXFx0XFx0PSB5dDg1MjFfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzExNy1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIllUODUzMVMgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxMTg6XFx0XFx0LmdldF9mZWF0dXJlc1xcdD0geXQ4NTIxX2dldF9mZWF0dXJlcyxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzExOS1cXHRcXHQucHJvYmVcXHRcXHQ9IHl0ODUyMV9wcm9iZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6MTAuMjMxMTkyODQ0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzAzNzE5MTY5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiB0aGUgYG1vdG9yY29tbS5jYCBQSFkgRHJpdmVyIHdpdGhpbiBTeXprYWxsZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGhpdHMgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uY2AgZmlsZS4gUmlnaHQsIHRoYXQncyBhIFBIWSBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBob3cgbGlrZWx5IGlzIHRoaXMgdG8gYmUgZXhwbG9pdGFibGUgd2l0aGluIHRoZSBzeXprYWxsZXIgZW52aXJvbm1lbnQ/IEdlbmVyYWxseSwgUEhZIGRyaXZlcnMgYXJlIHRpZWQgdG8gbmV0d29yayBpbnRlcmZhY2VzLCBhc3N1bWluZyB0aGUgaGFyZHdhcmUgaXMgcHJlc2VudCwgb3IgcG9zc2libHkgZW11bGF0ZWQuIFN5emthbGxlciB1c3VhbGx5IGRvZXNuJ3QgZW11bGF0ZSBzcGVjaWZpYyBQSFlzIGRpcmVjdGx5LCBhdCBsZWFzdCBub3QgaW4gYSB0YXJnZXRlZCB3YXkuIEl0IG1pZ2h0IGhhdmUgc29tZSBnZW5lcmljIE1ESU8vUEhZIGZ1enppbmcgaW50ZXJmYWNlcywgcHJvYmFibHkgdGhyb3VnaCBuZXRsaW5rIG9yIGlvY3Rscy4gQnV0IHRob3NlIGFyZSBvZnRlbiBxdWl0ZSBsaW1pdGVkIGluIHRoZWlyIGFiaWxpdHkgdG8gcmVhY2ggc3BlY2lmaWMgZHJpdmVycyB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgcHJlc2VudC5cblxuV2FpdCwgdGhvdWdoLCBzeXprYWxsZXIgZG9lcyBoYXZlIHRob3NlIE1ESU8vUEhZIGZ1enppbmcgY2FwYWJpbGl0aWVzIHZpYSBuZXRsaW5rIG9yIGlvY3Rscy4uLiBidXQgc3RpbGwsIGl0J3MgZ2VuZXJhbGx5IGEgaHVyZGxlIHRvIGRpcmVjdGx5IHRhcmdldCBhIHNwZWNpZmljIGRyaXZlciB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZS5cblxuSGFuZyBvbi4uLiBpcyB0aGVyZSBhIGNsZXZlciB3YXkgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aCB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZT8gQ291bGQgSSBzb21laG93IHVzZSBgU0lPQ1NNSUlSRUdgIGlvY3RscyBvciBhIHNpbWlsYXIgbWV0aG9kPyBCdXQsIGV2ZW4gd2l0aCB0aG9zZSwgdGhlIFBIWSBkcml2ZXIgc3RpbGwgbmVlZHMgdG8gYmUgYm91bmQgdG8gKnNvbWUqIGtpbmQgb2YgZGV2aWNlLCByaWdodD9cblxuV2FpdCwgc3l6a2FsbGVyICpjYW4qIGluc3RhbnRpYXRlIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzIGxpa2UgdmV0aCBvciB0dW4uIEhvd2V2ZXIsIHRob3NlIGR1bW15IGRldmljZXMgZG9uJ3QgdHlwaWNhbGx5IGxldmVyYWdlIGFjdHVhbCBQSFkgZHJpdmVycy4gU28sIGNhbiBJIHNvbWVob3cgYmluZCBhIFBIWSBkcml2ZXIgbGlrZSBgbW90b3Jjb21tLmNgIHRvIGEgZHVtbXkgZGV2aWNlIHRoYXQgc3l6a2FsbGVyIGNyZWF0ZXM/IFByb2JhYmx5IG5vdCBkaXJlY3RseS5cblxuU2hvb3QsIGl0J3Mgc3RhcnRpbmcgdG8gbG9vayBsaWtlIHN5emthbGxlciBkb2Vzbid0IGhhdmUgYSBidWlsdC1pbiB3YXkgdG8gZW11bGF0ZSBzcGVjaWZpYyBQSFkgaGFyZHdhcmUsIHNwZWNpZmljYWxseSBsaWtlIHRoZSBtb3RvcmNvbW0gc3R1ZmYuXG5cbldhaXQgYSBzZWMsIHN5emthbGxlciBkb2VzIGVtdWxhdGUgVVNCIHZpYSBgdmhjaWAsIHdpZmkgdmlhIGBtYWM4MDIxMV9od3NpbWAsIERSTSB0aHJvdWdoIGB2a21zYCwgZXRjLiBTbywgdGhlcmUgaXMgcHJlY2VkZW50IGZvciBkZXZpY2Ugc3BlY2lmaWMgZW11bGF0b3JzLi4uIGJ1dCBmb3IgUEhZcywgdGhlIGNsb3Nlc3Qgc2VlbXMgdG8gYmUgYGZpeGVkLXBoeWAsIGFuZCB0aGF0IGRvZXNuJ3QgdXNlIHRoZSBgbW90b3Jjb21tLmNgIGNvZGUgYXQgYWxsLlxuXG5TbywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiBJcyBgbW90b3Jjb21tLmNgIGFjdHVhbGx5IHJlYWNoYWJsZSBpbiBzeXprYWxsZXI/IEl0J3MgdGltZSB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBhbmQgbWFrZSBzdXJlIHRoZXJlJ3Mgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpdGVtIGZvciB0aGUgYG1vdG9yY29tbWAgc3VwcG9ydCB0aGF0IEknbSBtaXNzaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDU4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjE5OjE3LjI2ODM5MTcyMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTI5OTk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNT1RPUkNPTU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZz0zMzg9Y29uZmlnIE1JQ1JPU0VNSV9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTM0Ni1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzozNDc6Y29uZmlnIE1PVE9SQ09NTV9QSFlcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zNDgtXFx0dHJpc3RhdGUgXFxcIk1vdG9yY29tbSBQSFlzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTgyPW9iai0kKENPTkZJR19NSUNST1NFTUlfUEhZKVxcdCs9IG1zY2MvXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19NT1RPUkNPTU1fUEhZKVxcdCs9IG1vdG9yY29tbS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTg0LW9iai0kKENPTkZJR19OQVRJT05BTF9QSFkpXFx0Kz0gbmF0aW9uYWwub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoxOToxNy4zMjk3MDIyOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyOTU0NDU1MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNT1RPUkNPTU1fUEhZIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBNT1RPUkNPTU1fUEhZYCBjb25maWcuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHdlIGFjdHVhbGx5IGhpdCB0aGlzIGNvZGUgcGF0aD8gSXQncyBhIFBIWSBkcml2ZXIsIHdoaWNoIG1lYW5zIHRoZSBgZ2V0X2ZlYXR1cmVzYCBjYWxsYmFjaywgdGhlIG9uZSBJJ20gaW50ZXJlc3RlZCBpbiwgc2hvdWxkIGJlIHRyaWdnZXJlZCBkdXJpbmcgdGhlIFBIWSdzIGluaXRpYWxpemF0aW9uLCBlaXRoZXIgd2hlbiBpdCdzIGJlaW5nIHByb2JlZCBvciB3aGVuIHNvbWVvbmUncyBhY3RpdmVseSBhc2tpbmcgYWJvdXQgaXRzIGNhcGFiaWxpdGllcy4gSWYgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIGlzbid0IHByZXNlbnQsIHRoZSBkcml2ZXIgd291bGRuJ3QgZXZlbiBwcm9iZSBpbiB0aGUgZmlyc3QgcGxhY2UsIHJpZ2h0P1xuXG5UaGVuIEkgdGhvdWdodCwgaXMgdGhlcmUgYSB3YXkgdG8gYnJpbmcgYSBQSFkgZGV2aWNlIGludG8gZXhpc3RlbmNlIGluIHNvZnR3YXJlPyBJIHZhZ3VlbHkgcmVtZW1iZXIgc29tZXRoaW5nIGFib3V0IE1ESU8gYnVzZXMgYW5kIGluamVjdGluZyBkZXZpY2VzLiBCdXQsIGFuZCB0aGlzIGlzIGEgc3RpY2tpbmcgcG9pbnQsIGRvZXMgU3l6a2FsbGVyLCB3aGljaCBpcyB3aGF0IEknbSB1c2luZywgaGF2ZSBhIGdlbmVyaWMgTURJTyBmdXp6ZXIgdGhhdCB3b3VsZCBsZXQgbWUgaW5zdGFudGlhdGUgYXJiaXRyYXJ5IFBIWXM/IEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBvbmUgb2ZmaGFuZC5cblxuV2FpdC4uLiBoYW5nIG9uIGEgbWludXRlLiBEaWRuJ3QgSSBzZWUgc29tZXRoaW5nIGFib3V0IE1ESU8gZnV6emluZyB3aXRoaW4gU3l6a2FsbGVyPyBNYXliZSBJIGFtIHdyb25nLCBhbmQgaXQgaXMgY2FwYWJsZSBvZiBzb21ldGhpbmcuIEkgZG9uJ3QgaGF2ZSBkaXJlY3QgYWNjZXNzIHRvIHRoZSBTeXprYWxsZXIgc291cmNlIGhlcmUsIGJ1dCBJIGNhbiBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSB2aXJ0dWFsIE1ESU8gZHJpdmVycyB3aXRoaW4gdGhlIGtlcm5lbC4gVGhhdCBjb3VsZCBiZSBhIGNydWNpYWwgaGludC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA5NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoxOToyMS42MjUxNTIxMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDg3Njc0OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby4qbW9ja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoxOToyMS42ODYwNTM4NjlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzQzNDM4NTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipQcm9iaW5nIGZvciBQSFkgRHJpdmVyIEFjY2VzcyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgUEhZIGRyaXZlcnMuIFRoaXMgaXNuJ3QganVzdCBhIGNhc3VhbCBleHBsb3JhdGlvbjsgSSdtIGFzc3VtaW5nIHRoZXJlJ3MgYSBzcGVjaWZpYyByZWFzb24gSSBuZWVkIHRoaXMgbGV2ZWwgb2YgY29udHJvbC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGlkZW50aWZ5aW5nIGFueSBhdmFpbGFibGUgZW50cnkgcG9pbnRzIOKAkyBlc3NlbnRpYWxseSwgZXhwb3NlZCBpbnRlcmZhY2VzLCBBUElzLCBvciBkYXRhIHN0cnVjdHVyZXMg4oCTIHRoYXQgYWxsb3cgZm9yIGRpcmVjdCBtYW5pcHVsYXRpb24gb3IgaW50ZXJyb2dhdGlvbiBvZiB0aGUgUEhZIGxheWVyLiBUaGlzIGNvdWxkIGludm9sdmUgZXhhbWluaW5nIGV4aXN0aW5nIGtlcm5lbCBtb2R1bGVzLCBhbmFseXppbmcgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcywgb3IgZXZlbiBsb29raW5nIGludG8gc3RhbmRhcmQgcHJvdG9jb2xzIG9yIG1ldGhvZG9sb2dpZXMgZ2VuZXJhbGx5IHVzZWQgaW4gdGhpcyBjb250ZXh0LiBUaGUgZ29hbCBoZXJlIGlzIGVmZmljaWVudCBhY2Nlc3MgdG8gdGhlIFBIWSdzIHVuZGVybHlpbmcgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU4OCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjE5OjI0LjQyOTQ5NDU5N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI0NjI1MzAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW8uKmZ1enpcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6MjQuNDkxOTY1OTQ2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNzI5OTQ2NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNvbnNpZGVyaW5nIE1vY2tpbmcgVGVjaG5pcXVlcyBmb3IgTURJTyBJbnRlcmZhY2UqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBhcHByb2FjaCB0aGUgTURJTyBpbnRlcmZhY2UgdGVzdGluZywgYW5kIHRoZSBxdWVzdGlvbiBvZiBtb2NraW5nIGlzIGltbWVkaWF0ZWx5IGZyb250IG9mIG1pbmQuIEkndmUgYmVlbiBydW5uaW5nIHRocm91Z2ggcG90ZW50aWFsIHN0cmF0ZWdpZXMsIGFuZCBvbmUgY29uY2VwdCBrZWVwcyBzdXJmYWNpbmc6IHV0aWxpemluZyBhIG1vY2tpbmcgbGlicmFyeSBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gaGFuZGxlIHRoZSBNRElPIHByb3RvY29sLiBJJ20gd29uZGVyaW5nIGlmIHRoZXJlIGFyZSBhbnkgd2VsbC1lc3RhYmxpc2hlZCBzb2x1dGlvbnMgb3V0IHRoZXJlIHRhaWxvcmVkIGZvciB0aGlzOyBzb21ldGhpbmcgYWxvbmcgdGhlIGxpbmVzIG9mIGFuIGBtZGlvLW1vY2tgIGxpYnJhcnksIG9yIG1heWJlIHNvbWV0aGluZyBzaW1pbGFyIHVuZGVyIGEgZGlmZmVyZW50IG5hbWUsIHRoYXQgd291bGQgc2F2ZSBhIHNpZ25pZmljYW50IGFtb3VudCBvZiBkZXZlbG9wbWVudCB0aW1lPyBJJ2QgZXhwZWN0IHRoYXQgc3VjaCBhIGxpYnJhcnkgd291bGQgcHJvdmlkZSBhIHNpbXBsaWZpZWQsIHByb2dyYW1tYXRpYyBpbnRlcmZhY2UgZm9yIHNpbXVsYXRpbmcgTURJTyB0cmFuc2FjdGlvbnMsIGFsbG93aW5nIG1lIHRvIGRlZmluZSB0aGUgYmVoYXZpb3Igb2YgdmFyaW91cyBQSFkgcmVnaXN0ZXJzLiBUaGVuIEkgY2FuIGp1c3QgZm9jdXMgb24gdGhlIGNvcmUgbG9naWMgYW5kIG5vdCB0aGUgY29tcGxleGl0eSBvZiBNRElPIGFjY2Vzcy4gVGhlIGlkZWEgaXMgdG8gaXNvbGF0ZSBteSBjb21wb25lbnQgYW5kIGVuc3VyZSBpdHMgZnVuY3Rpb25hbGl0eSBpcyBjb3JyZWN0LCBpcnJlc3BlY3RpdmUgb2YgYW55IGhhcmR3YXJlIGRlcGVuZGVuY2llcyB0aGF0IGNhbiBjcmVhdGUgY29tcGxpY2F0aW9ucy4gSXQnZCBiZSBmYXIgbW9yZSBlZmZpY2llbnQgdGhhbiBidWlsZGluZyBldmVyeXRoaW5nIGZyb20gc2NyYXRjaCEgSSdtIGxlYW5pbmcgdG93YXJkIGV4cGxvcmluZyB0aGlzIHBvc3NpYmlsaXR5IG1vcmUgZGVlcGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODAzLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6MjcuNTY0OTYyNjQ2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTU5NzAxMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby4qZHVtbXlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6MjcuNjI0NTczMzQ2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjIxNzE2NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgVHJpZ2dlciBmb3IgYHl0ODUyMV9nZXRfZmVhdHVyZXNgKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0aGUgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIGZ1bmN0aW9uIGFjdHVhbGx5IGdldHMgY2FsbGVkLiBNeSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBQSFkgZHJpdmVycywgbGlrZSB0aGlzIG9uZSwgYXJlIHR5cGljYWxseSBicm91Z2h0IGludG8gZXhpc3RlbmNlIHZpYSB0aGUgTURJTyBidXMgc2Nhbm5pbmcgYW5kIG1hdGNoaW5nIHRoZSBQSFkgSUQsIG9yIHRocm91Z2ggYSBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uLiBUaGUgcHJvYmxlbSBJJ20gZmFjaW5nIGlzIHRoaXM6IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIHNvbWV0aGluZyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvciBRRU1VLCB3aGVyZSB3ZSAqZG9uJ3QqIGhhdmUgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uIGZvciBhIE1vdG9yY29tbSBQSFksIHRoZSB0eXBpY2FsIHByb2JpbmcgbWVjaGFuaXNtcyBwcm9iYWJseSB3b24ndCB3b3JrLiBJdCdzIGVzc2VudGlhbGx5IGltcG9zc2libGUgZm9yIHRoZSBjb2RlIHRvIGdldCBoaXQgdW5kZXIgdGhlc2UgY2lyY3Vtc3RhbmNlcy4gU28sIGxldCBtZSBkb3VibGUtY2hlY2sgaWYgdGhlcmUncyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGluIHBsYWNlIHRoYXQgKmNvdWxkKiBwb3RlbnRpYWxseSB0cmlnZ2VyIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDkzLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6MzAuODQ2NzUwMDVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTc1MzI0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb3RvcmNvbW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz00OTYyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHl0OTIxeF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo0OTYzOlxcdHsgLmNvbXBhdGlibGUgPSBcXFwibW90b3Jjb21tLHl0OTIxNVxcXCIgfSxcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDk2NC1cXHR7fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NTI9b2JqLSQoQ09ORklHX0RXTUFDX0xPT05HU09OKVxcdCs9IGR3bWFjLWxvb25nc29uLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MzpvYmotJChDT05GSUdfRFdNQUNfTU9UT1JDT01NKVxcdCs9IGR3bWFjLW1vdG9yY29tbS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNTQtc3RtbWFjLXBjaS1vYmpzOj0gc3RtbWFjX3BjaS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyMjojZGVmaW5lIERSSVZFUl9OQU1FIFxcXCJkd21hYy1tb3RvcmNvbW1cXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy01NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzo1NTpzdHJ1Y3QgbW90b3Jjb21tX2VmdXNlX3BhdGNoIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy01Ni1cXHRfX2xlMTYgYWRkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjYwOnN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtNjEtXFx0dm9pZCBfX2lvbWVtICpiYXNlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtNjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6NjQ6c3RhdGljIGludCBtb3RvcmNvbW1fZWZ1c2VfcmVhZF9ieXRlKHN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy02NS1cXHRcXHRcXHRcXHQgICAgIHU4IG9mZnNldCwgdTggKmJ5dGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy04Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzo4MzpzdGF0aWMgaW50IG1vdG9yY29tbV9lZnVzZV9yZWFkX3BhdGNoKHN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy04NC1cXHRcXHRcXHRcXHQgICAgICB1OCBpbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzo4NTpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbW90b3Jjb21tX2VmdXNlX3BhdGNoICpwYXRjaClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy04Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy05Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzo5MzpcXHRcXHRyZXQgPSBtb3RvcmNvbW1fZWZ1c2VfcmVhZF9ieXRlKHByaXYsIG9mZnNldCwgXFx1MDAyNnBbaV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTk0LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xMDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTAxOnN0YXRpYyBpbnQgbW90b3Jjb21tX2VmdXNlX2dldF9wYXRjaF92YWx1ZShzdHJ1Y3QgZHdtYWNfbW90b3Jjb21tX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTAyLVxcdFxcdFxcdFxcdFxcdCAgIHUxNiBhZGRyLCB1MzIgKnZhbHVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTEwMy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTA0OlxcdHN0cnVjdCBtb3RvcmNvbW1fZWZ1c2VfcGF0Y2ggcGF0Y2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTA1LVxcdGludCBpLCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xMDctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEVGVVNFX1BBVENIX01BWF9OVU07IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjEwODpcXHRcXHRyZXQgPSBtb3RvcmNvbW1fZWZ1c2VfcmVhZF9wYXRjaChwcml2LCBpLCBcXHUwMDI2cGF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTEwOS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjEyMzpzdGF0aWMgaW50IG1vdG9yY29tbV9lZnVzZV9yZWFkX21hYyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTI0OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZHdtYWNfbW90b3Jjb21tX3ByaXYgKnByaXYsIHU4ICptYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTEyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxMjk6XFx0cmV0ID0gbW90b3Jjb21tX2VmdXNlX2dldF9wYXRjaF92YWx1ZShwcml2LCBFRlVTRV9BRERSX01BQ0EwTFIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTMwLVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZtYWNhMGxyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTEzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxMzU6XFx0cmV0ID0gbW90b3Jjb21tX2VmdXNlX2dldF9wYXRjaF92YWx1ZShwcml2LCBFRlVTRV9BRERSX01BQ0EwSFIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTM2LVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZtYWNhMGhyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxNTE6c3RhdGljIHZvaWQgbW90b3Jjb21tX2RlYXNzZXJ0X21kaW9fcGh5X3Jlc2V0KHN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjE2MDpzdGF0aWMgdm9pZCBtb3RvcmNvbW1fcmVzZXQoc3RydWN0IGR3bWFjX21vdG9yY29tbV9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE2MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xNjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTcwOlxcdG1vdG9yY29tbV9kZWFzc2VydF9tZGlvX3BoeV9yZXNldChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xNzEtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxNzM6c3RhdGljIHZvaWQgbW90b3Jjb21tX2luaXQoc3RydWN0IGR3bWFjX21vdG9yY29tbV9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE3NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTg4OnN0YXRpYyBpbnQgbW90b3Jjb21tX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE4OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTkwOlxcdHN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiAqcHJpdiA9IGJzcF9wcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE5MS1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjAwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjIwMTpcXHRtb3RvcmNvbW1fZGVhc3NlcnRfbWRpb19waHlfcmVzZXQocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjAyOlxcdG1vdG9yY29tbV9pbml0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTIwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTIwNz1zdGF0aWMgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyMDg6bW90b3Jjb21tX2RlZmF1bHRfcGxhdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTIwOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDktXFx0cGxhdC1cXHUwMDNlc3VzcGVuZFxcdFxcdD0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjUwOlxcdHBsYXQtXFx1MDAzZXJlc3VtZVxcdFxcdD0gbW90b3Jjb21tX3Jlc3VtZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNTEtXFx0cGxhdC1cXHUwMDNlZmxhZ3NcXHRcXHQ9IFNUTU1BQ19GTEFHX1RTT19FTiB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjU3OnN0YXRpYyB2b2lkIG1vdG9yY29tbV9mcmVlX2lycSh2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI1OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjY0OnN0YXRpYyBpbnQgbW90b3Jjb21tX3NldHVwX2lycShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNjUtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjkwOlxcdHJldHVybiBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgbW90b3Jjb21tX2ZyZWVfaXJxLCBwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yOTEtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyOTM6c3RhdGljIGludCBtb3RvcmNvbW1fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yOTQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI5NS1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6Mjk2OlxcdHN0cnVjdCBkd21hY19tb3RvcmNvbW1fcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yOTctXFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgcmVzID0ge307XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzA0OlxcdHBsYXQgPSBtb3RvcmNvbW1fZGVmYXVsdF9wbGF0X2RhdGEocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzA1LVxcdGlmICghcGxhdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTMzMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozMzE6XFx0bW90b3Jjb21tX3Jlc2V0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTMzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTMzOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNDA6XFx0cmV0ID0gbW90b3Jjb21tX2VmdXNlX3JlYWRfbWFjKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHByaXYsIHJlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM0MS1cXHRpZiAocmV0ID09IC1FTk9FTlQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNTE6XFx0cmV0ID0gbW90b3Jjb21tX3NldHVwX2lycShwZGV2LCBcXHUwMDI2cmVzLCBwbGF0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNTItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNTU6XFx0bW90b3Jjb21tX2luaXQocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM2MjpzdGF0aWMgdm9pZCBtb3RvcmNvbW1fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzY3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBkd21hY19tb3RvcmNvbW1fcGNpX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzY4LVxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01PVE9SQ09NTSwgMHg2ODAxKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzcwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzcxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkd21hY19tb3RvcmNvbW1fcGNpX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzczOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBkd21hY19tb3RvcmNvbW1fcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzQtXFx0Lm5hbWUgPSBEUklWRVJfTkFNRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNzU6XFx0LmlkX3RhYmxlID0gZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNzY6XFx0LnByb2JlID0gbW90b3Jjb21tX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM3NzpcXHQucmVtb3ZlID0gbW90b3Jjb21tX3JlbW92ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzgtXFx0LmRyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozODM6bW9kdWxlX3BjaV9kcml2ZXIoZHdtYWNfbW90b3Jjb21tX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT04Mj1vYmotJChDT05GSUdfTUlDUk9TRU1JX1BIWSlcXHQrPSBtc2NjL1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4MzpvYmotJChDT05GSUdfTU9UT1JDT01NX1BIWSlcXHQrPSBtb3RvcmNvbW0ub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS04NC1vYmotJChDT05GSUdfTkFUSU9OQUxfUEhZKVxcdCs9IG5hdGlvbmFsLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0xMDA2PXN0YXRpYyBpbnQgeXQ4NTMxX3NldF9kcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTEwMTItXFx0Lyogc2V0IHJnbWlpIHJ4IGNsayBkcml2ZXIgc3RyZW5ndGggKi9cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTAxMzpcXHRpZiAoIWRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsIFxcXCJtb3RvcmNvbW0scngtY2xrLWRydi1taWNyb2FtcFxcXCIsIFxcdTAwMjZ2YWwpKSB7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTEwMTQtXFx0XFx0ZHMgPSB5dDg1MzFfZ2V0X2RzX21hcChwaHlkZXYsIHZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTAzMC1cXHQvKiBzZXQgcmdtaWkgcnggZGF0YSBkcml2ZXIgc3RyZW5ndGggKi9cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTAzMTpcXHRpZiAoIWRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsIFxcXCJtb3RvcmNvbW0scngtZGF0YS1kcnYtbWljcm9hbXBcXFwiLCBcXHUwMDI2dmFsKSkge1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xMDMyLVxcdFxcdGRzID0geXQ4NTMxX2dldF9kc19tYXAocGh5ZGV2LCB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTEwNjM9c3RhdGljIGludCB5dDg1MjFfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xMTEzLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxMTE0OlxcdGlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCBcXFwibW90b3Jjb21tLGNsay1vdXQtZnJlcXVlbmN5LWh6XFxcIiwgXFx1MDAyNmZyZXEpKVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xMTE1LVxcdFxcdGZyZXEgPSBZVFBIWV9EVFNfT1VUUFVUX0NMS19ESVM7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MTE4MD1zdGF0aWMgaW50IHl0ODUzMV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTExODUtXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjExODY6XFx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsIFxcXCJtb3RvcmNvbW0sY2xrLW91dC1mcmVxdWVuY3ktaHpcXFwiLCBcXHUwMDI2ZnJlcSkpXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTExODctXFx0XFx0ZnJlcSA9IFlUUEhZX0RUU19PVVRQVVRfQ0xLX0RJUztcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0xNjc2PXN0YXRpYyBpbnQgeXQ4NTIxX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTY5Mi1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTY5MzpcXHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFxcXCJtb3RvcmNvbW0sYXV0by1zbGVlcC1kaXNhYmxlZFxcXCIpKSB7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE2OTQtXFx0XFx0LyogZGlzYWJsZSBhdXRvIHNsZWVwICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTcwMC1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTcwMTpcXHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFxcXCJtb3RvcmNvbW0sa2VlcC1wbGwtZW5hYmxlZFxcXCIpKSB7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE3MDItXFx0XFx0LyogZW5hYmxlIFJYQyBjbG9jayB3aGVuIG5vIHdpcmUgcGx1ZyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTE4MTc9c3RhdGljIGludCB5dDg1MzFfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODI1LVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxODI2OlxcdGlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXFxcIm1vdG9yY29tbSxhdXRvLXNsZWVwLWRpc2FibGVkXFxcIikpIHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTgyNy1cXHRcXHQvKiBkaXNhYmxlIGF1dG8gc2xlZXAgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODM0LVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxODM1OlxcdGlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXFxcIm1vdG9yY29tbSxrZWVwLXBsbC1lbmFibGVkXFxcIikpIHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTgzNi1cXHRcXHQvKiBlbmFibGUgUlhDIGNsb2NrIHdoZW4gbm8gd2lyZSBwbHVnICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MTg1Mz1zdGF0aWMgaW50IHl0ODUyMl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE4NzAtXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE4NzE6XFx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcXFwibW90b3Jjb21tLGF1dG8tc2xlZXAtZGlzYWJsZWRcXFwiKSkge1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODcyLVxcdFxcdC8qIGRpc2FibGUgYXV0byBzbGVlcCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE4ODgtICogTk9URTogVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgdG8gYWRhcHQgdG8gVkYyIHdpdGggSkg3MTEwIFNvQy4gUGxlYXNlXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE4ODk6ICoga2VlcCBcXFwibW90b3Jjb21tLHR4LWNsay1hZGotZW5hYmxlZFxcXCIgbm90IGV4aXN0IGluIGR0cyB3aGVuIHRoZSBzb2MgaXMgbm90XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE4OTAtICogSkg3MTEwLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTE4OTI9c3RhdGljIHZvaWQgeXQ4NTMxX2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE5MDEtXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE5MDI6XFx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcXFwibW90b3Jjb21tLHR4LWNsay1hZGotZW5hYmxlZFxcXCIpKVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xOTAzLVxcdFxcdHR4X2Nsa19hZGpfZW5hYmxlZCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTkwNy1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTkwODpcXHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFxcXCJtb3RvcmNvbW0sdHgtY2xrLTEwLWludmVydGVkXFxcIikpXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE5MDktXFx0XFx0dHhfY2xrXzEwX2ludmVydGVkID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTkxMDpcXHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFxcXCJtb3RvcmNvbW0sdHgtY2xrLTEwMC1pbnZlcnRlZFxcXCIpKVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xOTExLVxcdFxcdHR4X2Nsa18xMDBfaW52ZXJ0ZWQgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxOTEyOlxcdGlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXFxcIm1vdG9yY29tbSx0eC1jbGstMTAwMC1pbnZlcnRlZFxcXCIpKVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xOTEzLVxcdFxcdHR4X2Nsa18xMDAwX2ludmVydGVkID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0zMDQxPXN0YXRpYyBpbnQgeXQ4ODIxX3Jlc3VtZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNjItXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMwNjM6c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1vdG9yY29tbV9waHlfZHJ2c1tdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMDY0LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTUwLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTUxOm1vZHVsZV9waHlfZHJpdmVyKG1vdG9yY29tbV9waHlfZHJ2cyk7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxNTItXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MzE1Nj1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxNTctXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxNTg6c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBtb3RvcmNvbW1fdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxNTktXFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUxMSkgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTY3LVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTY4Ok1PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgbW90b3Jjb21tX3RibCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjE5OjMxLjAyODUxNzQ0OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzUwMjI4MzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIHRoZSBgbW90b3Jjb21tYCBQSFkgRHJpdmVyIGluIFN5emthbGxlcioqXG5cbk9rYXksIHNvIHRoZSBgbW90b3Jjb21tYCBQSFkgZHJpdmVyIGlzIHJlZ2lzdGVyZWQgd2l0aCBgbW9kdWxlX3BoeV9kcml2ZXJgLiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgaG93IGRvIEkgZ2V0IFN5emthbGxlciB0byBpbnRlcmFjdCB3aXRoIGl0PyBJZGVhbGx5LCB0aGVyZSB3b3VsZCBiZSBhIGdlbmVyaWMgTURJTyBkZXZpY2UgaW5zdGFudGlhdG9yLCBidXQgYXMgSSByZWNhbGwsIFN5emthbGxlciBkb2Vzbid0IGhhdmUgdGhhdC4gV2UgYXJlLCBhZnRlciBhbGwsIHRhbGtpbmcgYWJvdXQgUEhZcyB3aGljaCBhcmUgdXN1YWxseSBjcmVhdGVkIHdoZW4gYSBNQUMgZHJpdmVyIHByb2JlcyB0aGUgTURJTyBidXMuXG5cbldhaXQsIGFyZSB0aGVyZSBhbnkgbmV0bGluayBob29rcyB0aGF0IGNhbiBoZWxwIGhlcmU/IENvdWxkIHNvbWV0aGluZyBsaWtlIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgIGJlIHVzZWZ1bD8gTm8sIHRoYXQncyBub3QgdGhlIHJpZ2h0IHBhdGguIFdoYXQgYWJvdXQgYW55IG9mIHRoZSBvdGhlciBuZXQgZGV2aWNlcz8gYG1hY3NlY2AsIGBkdW1teWAsIGFuZCBgdmV0aGAgYXJlIG91dCDigJMgdGhleSBieXBhc3MgTURJTyBhbHRvZ2V0aGVyLiBXaGF0IGFib3V0IHNvbWV0aGluZyBsaWtlIGB0dW5gIG9yIGB0YXBgPyBOb3BlLCBub3QgbGlrZWx5LlxuXG5IbW0sIHdoYXQgYWJvdXQgRFNBLCBEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlPyBTeXprYWxsZXIgKmRvZXMqIGhhdmUgc29tZSBEU0EgZnV6emluZyBjYXBhYmlsaXRpZXMuIEhvd2V2ZXIsIERTQSBvZnRlbiByZWxpZXMgb24gZGV2aWNlIHRyZWUgb3IgcGxhdGZvcm0tc3BlY2lmaWMgZGF0YS4gSXTigJlzIHVzdWFsbHkgdGllZCBkaXJlY3RseSB0byB0aGUgaGFyZHdhcmUuXG5cbkJ1dCB3YWl0LCB0aGVyZSdzIGEgZ2xpbW1lciBvZiBob3BlISBUaGUgYGRzYV9sb29wYCBkcml2ZXIgaXMgYSBtb2NrIERTQSBkcml2ZXIsIGlzbid0IGl0PyBJZiBpdCdzIGEgbW9jayBkcml2ZXIsIGl0IG1heSBoYXZlIGEgc2ltcGxpZmllZCBpbnN0YW50aWF0aW9uIHBhdGguIERvZXMgKnRoYXQqIGRyaXZlciBpbnRlcmFjdCB3aXRoIE1ESU8/IElmIHNvLCBjb3VsZCBJIHBvdGVudGlhbGx5IGxldmVyYWdlIHRoZSBgZHNhX2xvb3BgIGRyaXZlciB0byBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgUEhZcywgaW5jbHVkaW5nIHRoZSBgbW90b3Jjb21tYCBkcml2ZXI/IFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBwcm9taXNpbmcgYXZlbnVlIHRvIGV4cGxvcmUuIFRpbWUgdG8gY2hlY2sgaWYgYGRzYV9sb29wYCBjYW4gYmUgbGV2ZXJhZ2VkIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTcxMSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoxOTozNi4zNzg3NDgwNzZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMjA4NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRzYV9sb29wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTM9YmNtLXNmMi1vYmpzXFx0XFx0XFx0Oj0gYmNtX3NmMi5vIGJjbV9zZjJfY2ZwLm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTkVUX0RTQV9MT09QKVxcdCs9IGRzYV9sb29wLm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtNS1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFxcdCs9IGtzODk5NS5vXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTpzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjYtXFx0dTE2IG1lbWJlcnM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMDpzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMS1cXHRjaGFyIG5hbWVbRVRIX0dTVFJJTkdfTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1OmVudW0gZHNhX2xvb3BfbWliX2NvdW50ZXJzIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNi1cXHREU0FfTE9PUF9QSFlfUkVBRF9PSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzOnN0cnVjdCBkc2FfbG9vcF9wb3J0IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IG1pYltfX0RTQV9MT09QX0NOVF9NQVhdO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ1LVxcdHUxNiBwdmlkO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk6c3RydWN0IGRzYV9sb29wX3ByaXYge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwLVxcdHN0cnVjdCBtaWlfYnVzXFx0KmJ1cztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MS1cXHR1bnNpZ25lZCBpbnRcXHRwb3J0X2Jhc2U7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTI6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gdmxhbnNbVkxBTl9OX1ZJRF07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTMtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcG9ydCBwb3J0c1tEU0FfTUFYX1BPUlRTXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01NS19O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU3OnN0cnVjdCBkc2FfbG9vcF9wZGF0YSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTgtXFx0LyogTXVzdCBiZSBmaXJzdCwgc3VjaCB0aGF0IGRzYV9yZWdpc3Rlcl9zd2l0Y2goKSBjYW4gYWNjZXNzIHRoaXNcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjY3OnN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IGRzYV9sb29wX21pYnNbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02OC1cXHRbRFNBX0xPT1BfUEhZX1JFQURfT0tdXFx0PSB7IFxcXCJwaHlfcmVhZF9va1xcXCIsIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz03NT1zdGF0aWMgc3RydWN0IG1kaW9fZGV2aWNlICpzd2l0Y2hfbWRpb2RldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo3NzplbnVtIGRzYV9sb29wX2RldmxpbmtfcmVzb3VyY2VfaWQge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTc4LVxcdERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfTk9ORSwgIC8qIERFVkxJTktfUkVTT1VSQ0VfSURfUEFSRU5UX1RPUCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODEtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODI6c3RhdGljIHU2NCBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQodm9pZCAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04My17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04NS1cXHR1bnNpZ25lZCBpbnQgaSwgY291bnQgPSAwO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg2OlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjk3OnN0YXRpYyBpbnQgZHNhX2xvb3Bfc2V0dXBfZGV2bGlua19yZXNvdXJjZXMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk4LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OS1cXHRzdHJ1Y3QgZGV2bGlua19yZXNvdXJjZV9zaXplX3BhcmFtcyBzaXplX3BhcmFtcztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMDA6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTAxLVxcdGludCBlcnI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTUtXFx0XFx0XFx0XFx0XFx0ICAgICAgRFNBX0xPT1BfREVWTElOS19QQVJBTV9JRF9WVFUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTE2OlxcdFxcdFxcdFxcdFxcdCAgICAgIGRzYV9sb29wX2RldmxpbmtfdnR1X2dldCwgcHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMjU6c3RhdGljIGVudW0gZHNhX3RhZ19wcm90b2NvbCBkc2FfbG9vcF9nZXRfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNi1cXHRcXHRcXHRcXHRcXHRcXHQgICBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzMy1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzQ6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM1LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM3LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM5LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkcy1cXHUwMDNlbnVtX3BvcnRzOyBpKyspXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQwOlxcdFxcdG1lbWNweShwcy1cXHUwMDNlcG9ydHNbaV0ubWliLCBkc2FfbG9vcF9taWJzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MTpcXHRcXHQgICAgICAgc2l6ZW9mKGRzYV9sb29wX21pYnMpKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ1OlxcdHJldHVybiBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhkcyk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ2LX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDctXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTUyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE1MzpzdGF0aWMgaW50IGRzYV9sb29wX2dldF9zc2V0X2NvdW50KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBzc2V0KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE1NC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTYxOnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYyLVxcdFxcdFxcdFxcdCB1MzIgc3RyaW5nc2V0LCB1aW50OF90ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2My17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTY0OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2NS1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3My1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNzQ6c3RhdGljIHZvaWQgZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzUtXFx0XFx0XFx0XFx0ICAgICAgIHVpbnQ2NF90ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3Ni17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc3OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3OC1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4My1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODQ6c3RhdGljIGludCBkc2FfbG9vcF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4NS17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTg2OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4Ny1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE5OC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxOTk6c3RhdGljIGludCBkc2FfbG9vcF9waHlfd3JpdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDAtXFx0XFx0XFx0ICAgICAgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMS17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjAyOlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMy1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMTU6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjE2LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI1LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNy1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjMyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIzMzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzQtXFx0XFx0XFx0XFx0XFx0dTggc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjQwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2ZpbHRlcmluZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0MS1cXHRcXHRcXHRcXHRcXHRib29sIHZsYW5fZmlsdGVyaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQ5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1MDpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTEtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTUtXFx0Ym9vbCBwdmlkID0gdmxhbi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1BWSUQ7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU2OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1Ny1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXFx1MDAzZWJ1cztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTg6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODM6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg0LVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcG9ydF92bGFuICp2bGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg2LVxcdGJvb2wgdW50YWdnZWQgPSB2bGFuLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fVU5UQUdHRUQ7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mjg3OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4OC1cXHR1MTYgcHZpZCA9IHBzLVxcdTAwM2Vwb3J0c1twb3J0XS5wdmlkO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4OS1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXFx1MDAzZWJ1cztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyOTA6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTItXFx0XFx0XFx0XFx0ICAgIGludCBuZXdfbXR1KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMy17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzE0OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzE1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfbWF4X210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI3LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzMzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNDpzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGRzYV9sb29wX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzU6XFx0LmdldF90YWdfcHJvdG9jb2xcXHQ9IGRzYV9sb29wX2dldF9wcm90b2NvbCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzY6XFx0LnNldHVwXFx0XFx0XFx0PSBkc2FfbG9vcF9zZXR1cCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzc6XFx0LnRlYXJkb3duXFx0XFx0PSBkc2FfbG9vcF90ZWFyZG93bixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzg6XFx0LmdldF9zdHJpbmdzXFx0XFx0PSBkc2FfbG9vcF9nZXRfc3RyaW5ncyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzk6XFx0LmdldF9ldGh0b29sX3N0YXRzXFx0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDA6XFx0LmdldF9zc2V0X2NvdW50XFx0XFx0PSBkc2FfbG9vcF9nZXRfc3NldF9jb3VudCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDE6XFx0LmdldF9ldGh0b29sX3BoeV9zdGF0c1xcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQyOlxcdC5waHlfcmVhZFxcdFxcdD0gZHNhX2xvb3BfcGh5X3JlYWQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQzOlxcdC5waHlfd3JpdGVcXHRcXHQ9IGRzYV9sb29wX3BoeV93cml0ZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDQ6XFx0LnBvcnRfYnJpZGdlX2pvaW5cXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4sXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ1OlxcdC5wb3J0X2JyaWRnZV9sZWF2ZVxcdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ2OlxcdC5wb3J0X3N0cF9zdGF0ZV9zZXRcXHQ9IGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDc6XFx0LnBvcnRfdmxhbl9maWx0ZXJpbmdcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ4OlxcdC5wb3J0X3ZsYW5fYWRkXFx0XFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0OTpcXHQucG9ydF92bGFuX2RlbFxcdFxcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2RlbCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTA6XFx0LnBvcnRfY2hhbmdlX210dVxcdD0gZHNhX2xvb3BfcG9ydF9jaGFuZ2VfbXR1LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MTpcXHQucG9ydF9tYXhfbXR1XFx0XFx0PSBkc2FfbG9vcF9wb3J0X21heF9tdHUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUyOlxcdC5waHlsaW5rX2dldF9jYXBzXFx0PSBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1My19O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1NC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTU6c3RhdGljIGludCBkc2FfbG9vcF9kcnZfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1Ni17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU3OlxcdHN0cnVjdCBkc2FfbG9vcF9wZGF0YSAqcGRhdGEgPSBtZGlvZGV2LVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTg6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1OS1cXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODItXFx0ZHMtXFx1MDAzZWRldiA9IFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzgzOlxcdGRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2ZHNhX2xvb3BfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cXHRkcy1cXHUwMDNlcHJpdiA9IHBzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5NzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTgte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OS1cXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDAwOlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDExOnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyMi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MjM6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBkc2FfbG9vcF9kcnYgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI0LVxcdC5tZGlvZHJ2LmRyaXZlclxcdD0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI2LVxcdH0sXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI3OlxcdC5wcm9iZVxcdD0gZHNhX2xvb3BfZHJ2X3Byb2JlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyODpcXHQucmVtb3ZlXFx0PSBkc2FfbG9vcF9kcnZfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyOTpcXHQuc2h1dGRvd24gPSBkc2FfbG9vcF9kcnZfc2h1dGRvd24sXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMwLX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMxLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzMjpzdGF0aWMgaW50IGRzYV9sb29wX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMzLVxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM0LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzU6XFx0cmV0dXJuIGRydiA9PSBcXHUwMDI2ZHNhX2xvb3BfZHJ2Lm1kaW9kcnYuZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNi19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM3LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzODpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ1LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0NjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDcte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0ODpcXHRzdGF0aWMgc3RydWN0IGRzYV9sb29wX3BkYXRhIGRzYV9sb29wX3BkYXRhID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0OS1cXHRcXHQuY2QgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcxOlxcdHN3aXRjaF9tZGlvZGV2LVxcdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcyOlxcdHN3aXRjaF9tZGlvZGV2LVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFxcdTAwMjZkc2FfbG9vcF9wZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODEtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDgyOnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2luaXQodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4NzpcXHRyZXQgPSBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTQ6XFx0cmV0ID0gbWRpb19kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNmRzYV9sb29wX2Rydik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk1LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTY6XFx0XFx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk3LVxcdFxcdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDItfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwMzptb2R1bGVfaW5pdChkc2FfbG9vcF9pbml0KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA1OnN0YXRpYyB2b2lkIF9fZXhpdCBkc2FfbG9vcF9leGl0KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDc6XFx0bWRpb19kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDg6XFx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA5LVxcdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTEtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUxMjptb2R1bGVfZXhpdChkc2FfbG9vcF9leGl0KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjE5OjM2LjQzOTk2MjY0NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzgzOTc0NzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTGltaXRhdGlvbnMgYW5kIFBvc3NpYmlsaXRpZXMgZm9yIEZ1enppbmcgdGhlIHl0ODUyMSBQSFkgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgZHNhX2xvb3BgIGRyaXZlciwgYW5kIGl0J3MgZXNzZW50aWFsbHkgYSBwbGFjZWhvbGRlciwgYSBtb2NrIERTQSBzd2l0Y2guIEl0IGRvZXNuJ3QgYm90aGVyIHdpdGggYWN0dWFsIFBIWSBpbnN0YW50aWF0aW9uLCBqdXN0IHJlZ2lzdGVycyB0aGlzIGZha2Ugc3dpdGNoLiBOb3csIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdG8gYXBwcm9hY2ggZnV6emluZyB0aGUgYHl0ODUyMWAgUEhZIGRyaXZlciwgYW5kIHRoZSBpbW1lZGlhdGUgaXNzdWUgaXMgdGhlIGxhY2sgb2Ygc3BlY2lmaWMgaGFyZHdhcmUg4oCTIHN5emthbGxlciBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhbnkgbW90b3Jjb21tIFBIWXMgYXZhaWxhYmxlLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IGh1cmRsZS5cblxuU28sIHRoZSBxdWVzdGlvbiBpczogaG93IGNhbiBJIGV2ZW4gKnJlYWNoKiBzb21ldGhpbmcgbGlrZSBgeXQ4NTIxX2dldF9mZWF0dXJlc2Agd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmU/IFRoZSBvbmx5IHBhdGh3YXkgSSBzZWUgaXMgdGhyb3VnaCBhIHNvZnR3YXJlIE1ESU8gYnVzLiBJZiBJIGNvdWxkIG1hbmlwdWxhdGUgdGhhdCBzb2Z0d2FyZSBidXMgdG8gcHJlc2VudCBmYWtlZCBQSFkgSURzLCB0aGVuIHRoZSBgeXQ4NTIxYCBkcml2ZXIgKmNvdWxkKiBwcm9iZSBhbmQgYmVjb21lIGFjdGl2ZS4gVGhhdCB3b3VsZCBiZSB0aGUgZW50cnkgcG9pbnQgSSBuZWVkLlxuXG5Ob3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgc3l6a2FsbGVyIGhhcyBhbiBNRElPIGZ1enplci4gRG9lcyBpdCBvZmZlciB0aGUgbWVhbnMgdG8gZnV6eiB0aGUgTURJTyBpbnRlcmZhY2U/IEkgbmVlZCB0byBjaGVjayB0aGUga2VybmVsJ3Mgc3l6a2FsbGVyIGNvdmVyYWdlLCBhbmQgbG9vayBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byBgbWRpb2AuIExldCdzIHNlZSBpZiB0aGVyZSdzIGFueSBleGlzdGluZyB3b3JrIGluIHRoaXMgYXJlYSB0byBsZXZlcmFnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg4NTYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6NDIuMjIzOTM5NTM5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDYxNDg0OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoxOTo0Mi4yODQ1NjIyNzhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzNTY2MjQ2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBzdW1tYXJpemVkIGZyb20gdGhhdCBwcm9tcHQsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBQb3RlbnRpYWwgTURJTyBGdXp6aW5nIE9wcG9ydHVuaXRpZXMqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBsYW5kc2NhcGUgZm9yIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGtlcm5lbCdzIG5ldHdvcmsgUEhZIGRyaXZlcnMuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBhbnl0aGluZyByZWxhdGVkIHRvIGBtZGlvYC4gSSdtIGdvaW5nIHRvIHNjYW4gdGhlIGBkcml2ZXJzL25ldC9waHkvYCBkaXJlY3RvcnkuIFRoZSBnb2FsIGlzIHRvIHNlZSBpZiBhbnkgZXhpc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgb3IgY29tcG9uZW50cyBhcmUgYWxyZWFkeSBpbiBwbGFjZSB0aGF0IGNvdWxkIGJlIGxldmVyYWdlZCBmb3IgZnV6emluZyB0aGUgTURJTyBpbnRlcmZhY2UuIFRoaXMgY291bGQgaW52b2x2ZSBsb29raW5nIGZvciBleGlzdGluZyBkcml2ZXJzIHRoYXQgdXRpbGl6ZSB0aGUgTURJTyBpbnRlcmZhY2UsIGFueSBoZWxwZXIgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gTURJTyBjb21tdW5pY2F0aW9uIHRoYXQgbWlnaHQgYmUgc3VzY2VwdGlibGUgdG8gaW5wdXQgdnVsbmVyYWJpbGl0aWVzLCBvciBldmVuIHByZS1leGlzdGluZyBmdXp6ZXIgaGFybmVzc2VzIHRoYXQgaGF2ZSBiZWVuIHBhcnRpYWxseSBpbXBsZW1lbnRlZC4gVGhlIGlkZWEgaXMgdG8gZmluZCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZWZmaWNpZW50bHkgcHJpb3JpdGl6ZSB0aGUgaW52ZXN0aWdhdGlvbi4gSSBkb24ndCB3YW50IHRvIHJlaW52ZW50IHRoZSB3aGVlbCwgaWYgYXQgYWxsIHBvc3NpYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTMxOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjE5OjQ1LjgyMDIyNjc0OVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg2NTI3NDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZ1enpcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6NDUuODg4ODg4Nzc3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MjMxNzY4NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgS2VybmVsIFRlc3RpbmcgVG9vbGJveCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUga2VybmVsIGZ1enppbmcgaW5mcmFzdHJ1Y3R1cmUsIHBhcnRpY3VsYXJseSB3aGF0IHN5emthbGxlciBjYW4gbGV2ZXJhZ2UgZm9yIGVtdWxhdGluZyB2YXJpb3VzIGhhcmR3YXJlIGNvbXBvbmVudHMuIEl0J3MgcmVhbGx5IHF1aXRlIGltcHJlc3NpdmUgaG93IGl0IGNhbiB1c2UgYHZoY2lgIGZvciBVU0Ig4oCTIHRoYXQncyBhIGNsZXZlciBzb2x1dGlvbi4gQW5kIGBtYWM4MDIxMV9od3NpbWAgZm9yIFdpRmksIHBlcmZlY3QuIFRoZW4sIGZvciBncmFwaGljcywgYHZrbXNgIHdpdGggRFJNIGlzIGEgc29saWQgY2hvaWNlLiBPZiBjb3Vyc2UsIGB1aW5wdXRgIGhhbmRsZXMgaW5wdXQgcmVhbGx5IHdlbGwsIGFuZCB3ZSBoYXZlIGBzbmQtZHVtbXlgIGZvciBzb3VuZCwgd2hpY2gga2VlcHMgdGhpbmdzIHNpbXBsZS4gRm9yIG5ldHdvcmtpbmcgaW50ZXJmYWNlcywgdGhlIGZsZXhpYmlsaXR5IGlzIHRoZSByZWFsIHN0cmVuZ3RoIOKAkyBgdmNhbmAgaGFuZGxlcyBDQU4sIHRoZW4gdGhlcmUncyBgZHVtbXlgLCBgdmV0aGAsIGB0dW5gLCBgdGFwYCwgYW5kIGBuZXRkZXZzaW1gLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBtYWtlIGEgbm90ZSBvZiB0aGlzLiBJIHdvbmRlciwgZG9lcyBgbmV0ZGV2c2ltYCBhY3R1YWxseSBzaW11bGF0ZSBNRElPIGFuZCBQSFlzIHRvIGdldCB1cyBjbG9zZXIgdG8gdGVzdGluZyB0aG9zZSBwYXJ0cyBvZiB0aGUgc3RhY2s/IEkgc2hvdWxkIHJlYWxseSBjaGVjayB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyB0aGVyZSwgc2VlIGlmIHdlIGdldCB0aGUgZnVsbCBwaWN0dXJlIG9yIG5vdC4gR290dGEgZGlnIGludG8gdGhhdCFcblxuXG4iLCJJbnB1dFRva2VucyI6MTk1ODIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MTk6NTAuNDEyMDY3Njg3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTM2MDE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM9MTQ1NT1zdGF0aWMgaW50IF9fbnNpbV9kZXZfcG9ydF9hZGQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNDc0LVxcdFxcdGF0dHJzLmZsYXZvdXIgPSBERVZMSU5LX1BPUlRfRkxBVk9VUl9QSFlTSUNBTDtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTQ3NTpcXHRcXHRhdHRycy5waHlzLnBvcnRfbnVtYmVyID0gcG9ydF9pbmRleCArIDE7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE0NzYtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0zMjI9c3RydWN0IG5zaW1fZGV2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zNDEtXFx0c3RydWN0IG11dGV4IHByb2dzX2xpc3RfbG9jaztcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzQyOlxcdHN0cnVjdCBuZXRkZXZfcGh5c19pdGVtX2lkIHN3aXRjaF9pZDtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzQzLVxcdHN0cnVjdCBsaXN0X2hlYWQgcG9ydF9saXN0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoxOTo1MC40Njc0MzE2MzdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzEwNTUzOTY3NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBSZWFjaGluZyB0aGUgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0byB0cmlnZ2VyIHRoYXQgYHl0ODUyMV9nZXRfZmVhdHVyZXNgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYG1vdG9yY29tbS5jYCBQSFkgZHJpdmVyLiBJdCBzZWVtcyBwcmV0dHkgbG9ja2VkIGRvd24gaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYW5kIGhlcmUncyBteSBicmVha2Rvd24gb2Ygd2h5LlxuXG5GaXJzdCwgSSBydWxlZCBvdXQgYG5ldGRldnNpbWAg4oCTIGl0J3Mgbm90IGEgY29udGVuZGVyIGZvciB0aGlzLiBUaGVuIEkgY29uc2lkZXJlZCBgZml4ZWQtcGh5YCwgd2hpY2ggYWxsb3dzIGluc3RhbnRpYXRpbmcgUEhZcywgYnV0IHRoZXkgYXJlIGFsbCBmaXhlZCwgYW5kIGRvbid0IG1hdGNoIHRoZSBgbW90b3Jjb21tYCB0eXBlLiBJIGFsc28gY29udGVtcGxhdGVkIGEgdXNlciBzcGFjZSBwcm9ncmFtIGNyZWF0aW5nIGEgdmlydHVhbCBNRElPIGJ1cyBhbmQgaW5qZWN0aW5nIGRldmljZXMuIFRoYXTigJlzIHByb2JhYmx5IHRvbyBjb252b2x1dGVkLCBldmVuIGlmIHBvc3NpYmxlLlxuXG5JIGxvb2tlZCBhdCBgbWRpby1ncGlvYCwgdGhpbmtpbmcgbWF5YmUgSSBjb3VsZCBkcml2ZSBpdCB3aXRoIEdQSU9zLCBidXQgU3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBpbnRlcmFjdCB3aXRoIEdQSU9zIGluIHRoYXQgd2F5IHRvIGVtdWxhdGUgYW4gTURJTyBwcm90b2NvbC4gU28sIHNjcmFwIHRoYXQgaWRlYS4gVGhlbiwgSSBjb25zaWRlcmVkIHRoZSBgU0lPQ1NNSUlSRUdgIGlvY3RsLiBJdCdzIGEgcG9zc2liaWxpdHksIHJpZ2h0PyBJZiBhIG5ldHdvcmsgZGV2aWNlIGhhcyBhbiBNRElPIGJ1cywgSSBjb3VsZCB1c2UgaXQgdG8gd3JpdGUgdG8gUEhZIHJlZ2lzdGVycy4gQnV0LCB0aGUgcnViIGlzIHRoYXQgdGhlIFBIWSBkcml2ZXIgaGFzIHRvIGJlIGJvdW5kIHRvIHRoZSBQSFkgZGV2aWNlICpmaXJzdCouIEFuZCB3aXRob3V0IHRoZSBoYXJkd2FyZSBwcmVzZW50LCB0aGUgUEhZIGRldmljZSBpc24ndCBjcmVhdGVkLCBhbmQgdGh1cyB0aGUgZHJpdmVyIGlzbid0IGJvdW5kLlxuXG5JIGJyaWVmbHkgY29uc2lkZXJlZCBgSTJDYCBvciBgU1BJYCwgYnV0IHF1aWNrbHkgZGlzbWlzc2VkIHRoZW0g4oCTIHRoaXMgaXMgYW4gTURJTyBkZXZpY2UuIFdoYXQgYWJvdXQgdGhlIGRldmljZSB0cmVlPyBDYW4gSSBiaW5kIHRoZSBkcml2ZXIgdGhlcmU/IFNhZGx5LCBTeXprYWxsZXIgZG9lc24ndCBhbGxvdyBmb3IgZHluYW1pYyBtb2RpZmljYXRpb24gb2YgdGhlIGRldmljZSB0cmVlLlxuXG5TbywgaXQncyBzdGFydGluZyB0byBsb29rIHByZXR0eSBibGVhay4gSXQgYXBwZWFycyB0aGF0IHJlYWNoaW5nIGB5dDg1MjFfZ2V0X2ZlYXR1cmVzYCBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiBpcyBwcmV0dHkgbXVjaCBpbXBvc3NpYmxlLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2sgaWYgdGhlcmUncyBhbnkgYG1vdG9yY29tbWAgc3BlY2lmaWMgZW11bGF0aW9uIGluIFFFTVUuIEkgcXVpY2tseSBzY2FubmVkIHRoZSBjb21tb24gbmV0d29yayBkZXZpY2VzOiBgZTEwMDBgLCBgcnRsODEzOWAsIGB2aXJ0aW8tbmV0YCwgYHBjbmV0YCwgYG5lMmtgLCBgdHVsaXBgLCBgdm14bmV0M2AsIGBpZ2JgLCBldGMuIE5vbmUgb2YgdGhlc2UgdXNlIGBtb3RvcmNvbW1gIFBIWXMuIEkgdGhlbiBjb25zaWRlcmVkIG90aGVyIE1BQ3MgZW11bGF0ZWQgaW4gUUVNVSwgbGlrZSBgZHdtYWNgIChzdG1tYWMpIGluIGVpdGhlciBgaHcvbmV0L2FsbHdpbm5lci1zdW44aS1lbWFjLmNgIG9yIGBody9uZXQvaW14X2ZlYy5jYCwgYnV0IGV2ZW4gdGhleSBkb24ndCBzZWVtIHRvIGVtdWxhdGUgYSBgbW90b3Jjb21tYCBQSFkuIEl0J3MgbW9yZSBsaWtlbHkgdGhhdCBRRU1VIGVtdWxhdGVzIGEgZ2VuZXJpYyBQSFksIGxpa2UgUmVhbHRlayBvciBOYXRpb25hbCBTZW1pY29uZHVjdG9yLiBMZXQgbWUganVzdCBkbyBhIHF1aWNrIHNlYXJjaCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgbm8gbWVudGlvbiBvZiBgbW90b3Jjb21tYCBpbiB0aGUgUUVNVSBzb3VyY2UsIGV2ZW4gdGhvdWdoIHRoYXQgaXMgdW5saWtlbHkuXG5cbkFscmlnaHQsIGlzIHRoZXJlIGFub3RoZXIgd2F5IHRvIHRyaWdnZXIgYHl0ODUyMV9nZXRfZmVhdHVyZXNgPyBJIG5lZWQgdG8gdGhpbmsgdGhpcyB0aHJvdWdoLiBJdCdzIGEgY2FsbGJhY2sgZm9yIGBnZXRfZmVhdHVyZXNgIHdpdGhpbiB0aGUgYHBoeV9kcml2ZXJgIHN0cnVjdHVyZS4gU28sIGl0J3MgZ29pbmcgdG8gYmUgY2FsbGVkIGZyb20gZWl0aGVyIGBwaHlfcHJvYmVgLCBgcGh5X2F0dGFjaF9kaXJlY3RgLCBvciBgcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzYC4gQnV0LCBpdCBhbGwgY29tZXMgYmFjayB0byB0aGUgc2FtZSBwcm9ibGVtOiBUaGUgYG1vdG9yY29tbWAgUEhZIGRyaXZlciBuZWVkcyB0byBiZSBib3VuZCB0byBhIGBwaHlfZGV2aWNlYC4gQW5kIGEgYHBoeV9kZXZpY2VgIGlzIG9ubHkgY3JlYXRlZCB3aGVuIHRoZSBNRElPIGJ1cyBpcyBzY2FubmVkLCBhbmQgdGhlIFBIWSBJRCBtYXRjaGVzIGBQSFlfSURfWVQ4NTExYCAob3Igd2hhdGV2ZXIgdGhlIGNvcnJlY3QgSUQgYWN0dWFsbHkgaXMuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgSUQgdG8gYmUgY2VydGFpbikuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjIxLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjIxOjAxLjUyMjgzMDU0OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxNTc3ODI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JRF9ZVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xNC1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTU6I2RlZmluZSBQSFlfSURfWVQ4NTExXFx0XFx0MHgwMDAwMDEwYVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxNjojZGVmaW5lIFBIWV9JRF9ZVDg1MjFcXHRcXHQweDAwMDAwMTFhXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE3OiNkZWZpbmUgUEhZX0lEX1lUODUyMlxcdFxcdDB4NGY1MWU5MjhcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTg6I2RlZmluZSBQSFlfSURfWVQ4NTMxXFx0XFx0MHg0ZjUxZTkxYlxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxOTojZGVmaW5lIFBIWV9JRF9ZVDg1MzFTXFx0XFx0MHg0ZjUxZTkxYVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoyMDojZGVmaW5lIFBIWV9JRF9ZVDg4MjFcXHRcXHQweDRmNTFlYTE5XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTIxLS8qIFlUODUyMS9ZVDg1MzFTL1lUODgyMSBSZWdpc3RlciBPdmVydmlld1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTg5MD1zdGF0aWMgaW50IHl0cGh5X3JnbWlpX2Nsa19kZWxheV9jb25maWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy05MjEtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfR01JSTpcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6OTIyOlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlcGh5X2lkICE9IFBIWV9JRF9ZVDg1MzFTKVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy05MjMtXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTEwNjM9c3RhdGljIGludCB5dDg1MjFfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xMTE2LVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxMTE3OlxcdGlmIChwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlcGh5X2lkID09IFBIWV9JRF9ZVDg1MjEpIHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTExOC1cXHRcXHRzd2l0Y2ggKGZyZXEpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xMTQzLVxcdFxcdH1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTE0NDpcXHR9IGVsc2UgaWYgKHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VwaHlfaWQgPT0gUEhZX0lEX1lUODUzMVMpIHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTE0NS1cXHRcXHRzd2l0Y2ggKGZyZXEpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0xNjc2PXN0YXRpYyBpbnQgeXQ4NTIxX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTcwOS1cXHRpZiAocGh5X2ludGVyZmFjZV9pc19yZ21paShwaHlkZXYpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE3MTA6XFx0ICAgIHBoeWRldl9pZF9jb21wYXJlKHBoeWRldiwgUEhZX0lEX1lUODUzMVMpKVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xNzExLVxcdFxcdHJldCA9IHl0ODUzMV9zZXRfZHMocGh5ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0zMDYzPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtb3RvcmNvbW1fcGh5X2RydnNbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA2NC1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMwNjU6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MTEpLFxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMDY2LVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiWVQ4NTExIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNzMtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMDc0OlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4NTIxKSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA3NS1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIllUODUyMSBHaWdhYml0IEV0aGVybmV0XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMDkzLVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzA5NDpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUyMiksXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwOTUtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJZVDg1MjIgMTAwIE1lZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxMDEtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTAyOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4NTMxKSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzEwMy1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIllUODUzMSBHaWdhYml0IEV0aGVybmV0XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTE1LVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzExNjpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUzMVMpLFxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTE3LVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiWVQ4NTMxUyBHaWdhYml0IEV0aGVybmV0XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTMyLVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzEzMzpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODgyMSksXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxMzQtXFx0XFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJZVDg4MjEgMi41R2JwcyBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTMxNTg9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBtb3RvcmNvbW1fdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxNTk6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUxMSkgfSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE2MDpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4NTIxKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTYxOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MjIpIH0sXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxNjI6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUzMSkgfSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE2MzpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4NTMxUykgfSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE2NDpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4ODIxKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTY1LVxcdHsgLyogc2VudGluZWwgKi8gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoyMTowMS43NzQ0MTQ3NzVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjUwMDczOTY2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBTeXprYWxsZXIncyBNRElPIERldmljZSBDcmVhdGlvbiBDYXBhYmlsaXRpZXMqKlxuXG5Pa2F5LCBzbyB0aGVzZSBkZXZpY2UgSURzIGFyZSBjbGVhcmx5ICpzcGVjaWZpYyouIFRoZSBjaGFsbGVuZ2UsIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlLCBib2lscyBkb3duIHRvIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiBjb25qdXJlIHVwIGEgdmlydHVhbCBNRElPIGRldmljZSB3aXRoIHRoZSBleGFjdCBJRCBJIG5lZWQuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogZG9lcyBzeXprYWxsZXIgaGF2ZSBhbnkgbWVjaGFuaXNtIGZvciB2aXJ0dWFsIE1ESU8gZGV2aWNlIGNyZWF0aW9uICphdCBhbGwqP1xuXG5MZXQncyBzZWUuIEkgcmVtZW1iZXIgaXQgbGV2ZXJhZ2VzIGEgdmFyaWV0eSBvZiBuZXR3b3JrIGRldmljZXMgZm9yIGZ1enppbmc6IGB0dW5gLCBgdGFwYCwgYHZldGhgLCBgbWFjc2VjYCwgdGhlIHdob2xlIGFscGhhYmV0IHNvdXAgb2YgdmlydHVhbCBuZXR3b3JraW5nIHN0dWZmLi4uIGB2Y2FuYCwgYHZ4Y2FuYCwgYGR1bW15YCwgYG5sbW9uYCwgYGdlbmV2ZWAsIGBtYWN2bGFuYCwgYGlwdmxhbmAsIGBicmlkZ2VgLCBgYm9uZGAsIGB0ZWFtYCwgYHZsYW5gLCBgd2lyZWd1YXJkYCwgYGJhdGFkdmAsIGBoc3JgLCBgeGZybWAsIGBuZXRkZXZzaW1gLCBgYmFyZXVkcGAsIGBhbXRgLCBgd3dhbmAsIGBtY3RwYCwgYHFydHJgLCBgY2FuYCwgYGJsdWV0b290aGAsIGBuZmNgLCBgaWVlZTgwMjE1NGAsIGBtYWM4MDIxMV9od3NpbWAsIGB2aGNpYCwgYHVpbnB1dGAsIGBzbmQtZHVtbXlgLCBgdmttc2AsIGBsb29wYmFja2AuIFRoYXQncyBhIGNvbXByZWhlbnNpdmUgbGlzdC4gQnV0LCByZXZpZXdpbmcgdGhlbSwgKm5vbmUqIG9mIHRob3NlIHNlZW0gZGVzaWduZWQgdG8gY3JlYXRlIE1ESU8gZGV2aWNlcyB3aXRoIGFyYml0cmFyeSBJRHMuIFRoZXkncmUgZm9jdXNlZCBvbiBvdGhlciBuZXR3b3JraW5nIGxheWVycy5cblxuSG9sZCBvbiwgdGhvdWdoLiBUaGUgYGRzYV9sb29wYCBkcml2ZXIgaXMgcmluZ2luZyBhIGJlbGwuIEkgc2VlbSB0byByZWNhbGwgaXQgc2ltdWxhdGluZyBhIHN3aXRjaC4gQ291bGQgaXQgYmUgY3JlYXRpbmcgUEhZcyBhcyBwYXJ0IG9mIHRoYXQgbW9jay11cD8gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIHNwZWNpZmljYWxseSBsb29rIGF0IGhvdyB0aGUgYGRzYV9sb29wYCBkcml2ZXIgY3JlYXRlcyBpdHMgdmlydHVhbCBzd2l0Y2ggYW5kIGFzc29jaWF0ZWQgZGV2aWNlcy4gVGhlIGtleSBmdW5jdGlvbiB0byBleGFtaW5lIHdvdWxkIGJlIGBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXZgIGluIGBkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY2AuIExldCdzIHNlZSBpZiB0aGlzIGlzIHRoZSBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMzE4LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjIxOjA4LjI3NTE1NzMyNFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk1MDM0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQzOD1zdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0NS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDY6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQ4Mj1zdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3OlxcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4OC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoyMTowOC4zMzQ2NjQyNTNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIwNTk1ODE3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldmAgZnVuY3Rpb24uIEknbSBnb2luZyB0byBhcHByb2FjaCB0aGlzIHdpdGggdGhlIGFzc3VtcHRpb24gdGhhdCwgbGlrZSBtb3N0IG1vZGVybiBEU0EgY29kZSwgaXQncyBidWlsZGluZyBvbiB0aGUgZXhpc3RpbmcgZm91bmRhdGlvbmFsIHN0cnVjdHVyZXMgYW5kIGFic3RyYWN0aW9ucy4gTXkgaW5pdGlhbCBleHBlY3RhdGlvbnMgYXJlIHRoYXQgaXQgd2lsbCBiZSBzZXR0aW5nIHVwIGEgbmV3IHZpcnR1YWwgZGV2aWNlIHJlcHJlc2VudGluZyBhIHN3aXRjaCwgbGlrZWx5IGFuIGludGVybmFsIG9uZSwgYW5kIHByb2JhYmx5IGNvbmZpZ3VyaW5nIHRoZSBNRElPIChNYW5hZ2VtZW50IERhdGEgSW5wdXQvT3V0cHV0KSBpbnRlcmZhY2UgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIHN3aXRjaCdzIFBIWXMgKFBoeXNpY2FsIExheWVyIFRyYW5zY2VpdmVycykuXG5cbknigJlsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgICoqRGV2aWNlIEFsbG9jYXRpb246KiogSG93IGl0IGFsbG9jYXRlcyB0aGUgbmV3IGBzdHJ1Y3QgZHNhX3N3aXRjaGAgKG9yIHNpbWlsYXIpIHN0cnVjdHVyZS4gSXMgaXQgdXNpbmcgdGhlIHN0YW5kYXJkIGBremFsbG9jYCBwYXR0ZXJuPyBBcmUgdGhlcmUgYW55IGN1c3RvbSBhbGxvY2F0b3JzP1xuKiAgICoqTURJTyBTZXR1cDoqKiBUaGUgbWVhdCBvZiB0aGUgbWF0dGVyLiBIb3cgaXMgdGhlIE1ESU8gYnVzIGJlaW5nIGFzc2lnbmVkPyBJcyBpdCBjcmVhdGluZyBhIG5ldyBNRElPIGJ1cyBpbnN0YW5jZSBvciBwaWdneWJhY2tpbmcgb24gYW4gZXhpc3Rpbmcgb25lPyBXaGF0IHNwZWNpZmljIE1ESU8gZHJpdmVyIGhvb2tzIChlLmcuLCBgbWRpb2J1c19yZWdpc3RlcmAgb3IgZXF1aXZhbGVudCkgYXJlIHVzZWQ/IEFyZSB0aGVyZSBhbnkgc3BlY2lhbCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHRoZSBNRElPIGludGVyZmFjZS4gSSBleHBlY3Qgc29tZSBQSFkgYWRkcmVzc2luZyBhbmQgc2V0dXAgdG8gaGFwcGVuIGhlcmUuXG4qICAgKipEU0EgRHJpdmVyIEludGVyYWN0aW9uOioqIEnigJlsbCBiZSBjaGVja2luZyBob3cgdGhlIG5ldyBzd2l0Y2ggZGV2aWNlIGludGVncmF0ZXMgaW50byB0aGUgbWFpbiBEU0EgZHJpdmVyIGZyYW1ld29yay4gSXMgaXQgcmVnaXN0ZXJpbmcgdGhlIHN3aXRjaCB3aXRoIGBkc2FfcmVnaXN0ZXJfc3dpdGNoYCBvciBhIHNpbWlsYXIgZnVuY3Rpb24/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgaG9va3MgYmVpbmcgc2V0IHVwIGZvciBEU0EtbGV2ZWwgb3BlcmF0aW9ucyAoZS5nLiwgVkxBTiBmaWx0ZXJpbmcsIHBvcnQgY29uZmlndXJhdGlvbik/XG4qICAgKipFcnJvciBIYW5kbGluZzoqKiBJdCdzICpjcml0aWNhbCogdG8gc2VlIGhvdyByb2J1c3QgdGhlIGVycm9yIGhhbmRsaW5nIGlzLiBMb29rIGZvciBjaGVja3MgYWZ0ZXIgZXZlcnkgYWxsb2NhdGlvbiBvciBzeXN0ZW0gY2FsbCwgYW5kIGhvdyBpdCBoYW5kbGVzIGNsZWFudXAgb2YgYWxsb2NhdGVkIHJlc291cmNlcyBpZiBzb21ldGhpbmcgZmFpbHMuIFByb3BlciByZXNvdXJjZSBjbGVhbnVwIGlzIGVzc2VudGlhbC5cbiogICAqKlJlc291cmNlIE1hbmFnZW1lbnQ6KiogSG93IGlzIHRoaXMgZnVuY3Rpb24gbWFuYWdpbmcgaXRzIHJlc291cmNlcywgbGlrZSB0aGUgTURJTyBidXMsIERTQSBzd2l0Y2ggc3RydWN0dXJlLCBhbmQgbWVtb3J5PyBBcmUgdGhlc2UgY29ycmVjdGx5IGNsZWFuZWQgdXAgb24gZGV2aWNlIHJlbW92YWwgb3IgZHJpdmVyIHVubG9hZD9cblxuVWx0aW1hdGVseSwgSSBleHBlY3QgdG8gc2VlIGEgZnVuY3Rpb24gdGhhdCwgZ2l2ZW4gYXBwcm9wcmlhdGUgcGFyYW1ldGVycywgY3JlYXRlcyBhIG5ldyBpbnRlcm5hbCBEU0Egc3dpdGNoIGRldmljZSBjYXBhYmxlIG9mIGludGVyYWN0aW5nIHdpdGggaXRzIFBIWXMgdGhyb3VnaCBNRElPLiBUaGUgcXVhbGl0eSBvZiB0aGlzIHNldHVwIGRldGVybWluZXMgaG93IHdlbGwgdGhlIHN3aXRjaCBvcGVyYXRlcy4gVGltZSB0byByZWFkIHRoZSBjb2RlIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDI4OSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjIxOjEzLjU0MDYyNDQ3NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NDYsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NDY6XFx0c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXFxuIDQ0NzpcXHR7XFxuIDQ0ODpcXHRcXHRzdGF0aWMgc3RydWN0IGRzYV9sb29wX3BkYXRhIGRzYV9sb29wX3BkYXRhID0ge1xcbiA0NDk6XFx0XFx0XFx0LmNkID0ge1xcbiA0NTA6XFx0XFx0XFx0XFx0LnBvcnRfbmFtZXNbMF0gPSBcXFwibGFuMVxcXCIsXFxuIDQ1MTpcXHRcXHRcXHRcXHQucG9ydF9uYW1lc1sxXSA9IFxcXCJsYW4yXFxcIixcXG4gNDUyOlxcdFxcdFxcdFxcdC5wb3J0X25hbWVzWzJdID0gXFxcImxhbjNcXFwiLFxcbiA0NTM6XFx0XFx0XFx0XFx0LnBvcnRfbmFtZXNbM10gPSBcXFwibGFuNFxcXCIsXFxuIDQ1NDpcXHRcXHRcXHRcXHQucG9ydF9uYW1lc1tEU0FfTE9PUF9DUFVfUE9SVF0gPSBcXFwiY3B1XFxcIixcXG4gNDU1OlxcdFxcdFxcdH0sXFxuIDQ1NjpcXHRcXHRcXHQubmFtZSA9IFxcXCJEU0EgbW9ja3VwIGRyaXZlclxcXCIsXFxuIDQ1NzpcXHRcXHRcXHQuZW5hYmxlZF9wb3J0cyA9IDB4MWYsXFxuIDQ1ODpcXHRcXHRcXHQubmV0ZGV2ID0gXFxcImV0aDBcXFwiLFxcbiA0NTk6XFx0XFx0fTtcXG4gNDYwOlxcdFxcdHN0cnVjdCBtaWlfYnVzICpidXM7XFxuIDQ2MTpcXHRcXHRpbnQgcmV0ID0gLUVOT0RFVjtcXG4gNDYyOlxcdFxcbiA0NjM6XFx0XFx0YnVzID0gbWRpb19maW5kX2J1cyhcXFwiZml4ZWQtMFxcXCIpO1xcbiA0NjQ6XFx0XFx0aWYgKFdBUk5fT04oIWJ1cykpXFxuIDQ2NTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA0NjY6XFx0XFxuIDQ2NzpcXHRcXHRzd2l0Y2hfbWRpb2RldiA9IG1kaW9fZGV2aWNlX2NyZWF0ZShidXMsIDMxKTtcXG4gNDY4OlxcdFxcdGlmIChJU19FUlIoc3dpdGNoX21kaW9kZXYpKVxcbiA0Njk6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDQ3MDpcXHRcXG4gNDcxOlxcdFxcdHN3aXRjaF9tZGlvZGV2LVxcdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XFxuIDQ3MjpcXHRcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEgPSBcXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XFxuIDQ3MzpcXHRcXG4gNDc0OlxcdFxcdHJldCA9IG1kaW9fZGV2aWNlX3JlZ2lzdGVyKHN3aXRjaF9tZGlvZGV2KTtcXG4gNDc1OlxcdFxcdGlmIChyZXQpXFxuIDQ3NjpcXHRcXHRcXHRtZGlvX2RldmljZV9mcmVlKHN3aXRjaF9tZGlvZGV2KTtcXG4gNDc3OlxcdG91dDpcXG4gNDc4OlxcdFxcdHB1dF9kZXZpY2UoXFx1MDAyNmJ1cy1cXHUwMDNlZGV2KTtcXG4gNDc5OlxcdFxcdHJldHVybiByZXQ7XFxuIDQ4MDpcXHR9XFxuIDQ4MTpcXHRcXG4gNDgyOlxcdHN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2luaXQodm9pZClcXG4gNDgzOlxcdHtcXG4gNDg0OlxcdFxcdHVuc2lnbmVkIGludCBpO1xcbiA0ODU6XFx0XFx0aW50IHJldDtcXG4gNDg2OlxcdFxcbiA0ODc6XFx0XFx0cmV0ID0gZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KCk7XFxuIDQ4ODpcXHRcXHRpZiAocmV0KVxcbiA0ODk6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNDkwOlxcdFxcbiA0OTE6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE5VTV9GSVhFRF9QSFlTOyBpKyspXFxuIDQ5MjpcXHRcXHRcXHRwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XFxuIDQ5MzpcXHRcXG4gNDk0OlxcdFxcdHJldCA9IG1kaW9fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZkc2FfbG9vcF9kcnYpO1xcbiA0OTU6XFx0XFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoyMToxMy41NDA3MDgyNDZaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUxOTMwMzg1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVU0IgYW5kIE1vdG9yY29tbSBQSFlzOiBBIFF1aWNrIEV4cGxvcmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpdCdzIHVzaW5nIGEgYGZpeGVkLXBoeWAsIGJ1dCBpdCdzICpub3QqIGNyZWF0aW5nIE1vdG9yY29tbSBQSFlzIGRpcmVjdGx5LiBUaGF0J3MgYSBsaXR0bGUgdW51c3VhbCwgYW5kIGl0J3MgZ290IG1lIHRoaW5raW5nLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzLCBpcyB0aGVyZSBldmVuIGFub3RoZXIgd2F5IHRvIGdldCBNRElPIGRldmljZXMgaW50byB0aGUgc3lzdGVtPyBCZXlvbmQgdGhlIG9idmlvdXMuXG5cbldhaXQgYSBzZWNvbmQuLi5JJ20gcmVtZW1iZXJpbmcgdGhhdCBzeXprYWxsZXIgaGFzIHNvbWUgYHN5el91c2JfY29ubmVjdGAgY2FsbHMsIGxpa2UgYHN5el91c2JfY29ubmVjdF9hdGg5a2AuIFRoYXQncyBpbnRlcmVzdGluZywgbWF5YmUgdGhlcmUncyBhIGNvbm5lY3Rpb24gdGhlcmUuIFRoaXMgbWFrZXMgbWUgY29uc2lkZXIgaWYgdGhlcmUgaXMgYSBVU0IgZXRoZXJuZXQgYWRhcHRlciBvdXQgdGhlcmUgdGhhdCAqZG9lcyogdXNlIE1vdG9yY29tbSBQSFlzLCBpdCBtaWdodCBiZSBhIHdheSB0byBpbmplY3QgdGhlbS5cblxuVGhlIGJlc3QgdGhpbmcgdG8gZG8gaXMgdG8gY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgVVNCIGRyaXZlcnMgdGhhdCBhY3R1YWxseSB1c2UgbW90b3Jjb21tIFBIWXMgYXQgYWxsLiBBIHF1aWNrIGludmVzdGlnYXRpb24gb2YgZXhpc3RpbmcgZHJpdmVycyBhbmQgdGhlaXIgaGFyZHdhcmUgc3VwcG9ydCBpcyBwcm9iYWJseSB0aGUgYmVzdCBmaXJzdCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTU2NSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6MjE6MTkuMDYwMDE0NjQ0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTExNzMwOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW90b3Jjb21tXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjIxOjE5LjEyNTE0MDY5M1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzY0MTAwNDM3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCB0b3VjaGVzIHRoZSBgZHdtYWMtbW90b3Jjb21tLmNgIGRyaXZlci4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBQQ0ksIGFuZCBzcGVjaWZpY2FsbHkgYSBQQ0kgZGV2aWNlIGZyb20gTW90b3Jjb21tLiBJIGtub3cgdGhhdCBgZHdtYWMtbW90b3Jjb21tLmNgIHJlZ2lzdGVycyBhIGRldmljZSB3aXRoIGBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTU9UT1JDT01NLCAweDY4MDEpYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgY2FuIHN5emthbGxlciBldmVuIHRvdWNoIHRoaXM/IEkga25vdyBzeXprYWxsZXIgaGFzIGB2aGNpYCBmb3IgVVNCLCB3aGljaCBpcyBuZWF0LCBidXQgSSBjYW4ndCByZWNhbGwgYW55IGtpbmQgb2YgZXF1aXZhbGVudCBmb3IgUENJLiBcblxuTGV0IG1lIHJlcGhyYXNlIHRoYXQuIEkga25vdyBzeXprYWxsZXIgZG9lc24ndCBnZW5lcmFsbHkgZW11bGF0ZSAqYXJiaXRyYXJ5KiBQQ0kgZGV2aWNlcy4gSXQgdXNlcyBRRU1VIHRvIHByb3ZpZGUgdGhlIFBDSSBkZXZpY2VzIGlmIHlvdSdyZSBmdXp6aW5nIHRoYXQgd2F5LiBBbmQgSSByZWNhbGwgdGhlcmUgYXJlIGN1c3RvbSBQQ0kgZnV6emVycyBvdXQgdGhlcmUsIGJ1dCBzeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgZ2VuZXJpYyBQQ0kgZGV2aWNlIGluamVjdG9yIGxpa2UgYHZoY2lgLlxuXG5XYWl0LCB3aGF0IGFib3V0IGBzeXpfcGNpX2RldmljZV9hZGRgPyBOb3BlLCB0aGF0IGRvZXNuJ3QgZXhpc3QuIFRoZXJlJ3MgVkZJTyBmdXp6aW5nLCBidXQgdGhhdCdzIGZvciB1c2Vyc3BhY2UgZHJpdmVycywgcmlnaHQ/IFNvLCB1bmxlc3MgdGhlIGFjdHVhbCBoYXJkd2FyZSBpcyBwcmVzZW50LCBgZHdtYWMtbW90b3Jjb21tYCBpcyBkZWFkIGluIHRoZSB3YXRlci5cblxuT2theSwgbWF5YmUgdGhlcmUncyBhIHdvcmthcm91bmQuIENvdWxkIHRoZSBQSFkgZHJpdmVyIGJlIHJlYWNoZWQgaW5kaXJlY3RseSB0aHJvdWdoIGFub3RoZXIgTUFDIGRyaXZlcj8gRXZlbiBpZiB0aGF0IHdlcmUgdGhlIGNhc2UsIHRoZSBQSFkgZGV2aWNlIGl0c2VsZiB3b3VsZCBzdGlsbCBuZWVkIHRvIGJlIGluc3RhbnRpYXRlZC4gVGhlIE1ESU8gYnVzIHdvdWxkIG5lZWQgdG8gZmluZCB0aGUgUEhZIElELCBhbmQgd2l0aG91dCB0aGUgaGFyZHdhcmUsIHRoYXQgd29uJ3QgaGFwcGVuLiBUaGUgZHJpdmVyIHdvbid0IHByb2JlLlxuXG5JcyB0aGVyZSBhbnkgd2F5IHRvIGZha2UgYSBQSFkgSUQgb24gYW4gTURJTyBidXM/IE1heWJlIGlmIHRoZXJlJ3MgYSB2aXJ0dWFsIE1ESU8gYnVzLiBMZXQncyBzZWUuLi4gYG1hY21hY2AsIGBkdW1teWAsIGBuZXRkZXZzaW1gLCBgdHVuL3RhcGAsIGB2ZXRoYCwgYG1hY3ZsYW5gLCBgZHNhX2xvb3BgLi4uIE5vLiBOb25lIG9mIHRoZW0gaGF2ZSBNRElPIGV4Y2VwdCBgZHNhX2xvb3BgIHdoaWNoIHVzZXMgYGZpeGVkLXBoeWAuXG5cblNvLCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IHRoZXJlJ3Mgbm8gcGF0aCB0byBgeXQ4NTIxX2dldF9mZWF0dXJlc2AgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbi4gU2luY2UgdGhlIHBhdGNoIG1vZGlmaWVzIGBtb3RvcmNvbW0uY2AsIGEgaGFyZHdhcmUtc3BlY2lmaWMgUEhZIGRyaXZlciwgYW5kIHRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSwgdGhpcyBjb2RlIGlzIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlxuXG5MZXQgbWUgZG91YmxlIGNoZWNrLiBDb3VsZCBgeXQ4NTIxX2dldF9mZWF0dXJlc2AgYmUgY2FsbGVkIGZyb20gc29tZXdoZXJlIGVsc2U/IE5vcGUsIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24gaW5zaWRlIGBtb3RvcmNvbW0uY2AuIENvdWxkIGBtb3RvcmNvbW0uY2AgYmUgY29tcGlsZWQgYXMgcGFydCBvZiBzb21lIG90aGVyIG1vZHVsZT8gTm8sIGl0J3MgaW4gaXRzIG93biBgbW90b3Jjb21tLmtvYCBvciBidWlsdC1pbiwgYW5kIG9ubHkgcmVnaXN0ZXJzIGl0c2VsZiBhcyBhIFBIWSBkcml2ZXIuXG5cbk9rYXksIGxldCBtZSByZXZpZXcgdGhlIGluc3RydWN0aW9ucyBhZ2Fpbi4gXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi5cIlxuXG5HaXZlbiB0aGF0IGBtb3RvcmNvbW0uY2AgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgZHJpdmVyLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgZm9yIGl0LCBhbmQgdGhlIGZhY3QgdGhhdCB0aGVyZSdzIG5vIGBtZGlvYCBpbmplY3Rpb24gbWVjaGFuaXNtIGluIHN5emthbGxlci4gSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlbGV2YW50IGNvZGUgaXMgc2ltcGx5IHVucmVhY2hhYmxlIGluIHRoZSB0YXJnZXQgZW52aXJvbm1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTkxMywiT3V0cHV0VG9rZW5zIjo5MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDoyMTozMi43NjYxNDgxMDJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTc1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBkcml2ZXIgKG1vdG9yY29tbSkuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBQSFkgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIGFuZCBzeXprYWxsZXIgY2Fubm90IGluc3RhbnRpYXRlIGFyYml0cmFyeSBQSFkgZGV2aWNlcyB3aXRob3V0IGhhcmR3YXJlLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgZHJpdmVyIChtb3RvcmNvbW0pLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgUEhZIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBhbmQgc3l6a2FsbGVyIGNhbm5vdCBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgUEhZIGRldmljZXMgd2l0aG91dCBoYXJkd2FyZSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowl8pxd[1] Phase: Running StartedAt: 2026-07-11 04:21:44 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8pxd[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-11 04:21:44 +0000 UTC FinishedAt: 2026-07-11 04:21:49 +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,}