Name: series-workflow8l5gj Phase: Failed StartedAt: 2026-09-02 05:32:20 +0000 UTC FinishedAt: 2026-09-02 05:34:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8l5gj[0] Phase: Succeeded StartedAt: 2026-09-02 05:32:20 +0000 UTC FinishedAt: 2026-09-02 05:34:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8l5gj[0].run-triage Phase: Succeeded StartedAt: 2026-09-02 05:32:20 +0000 UTC FinishedAt: 2026-09-02 05:34:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgRGV2aWNlIFRyZWUgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBpbiB0aGUgUmVuZXNhcyBSWi9OMS9UMkggTUlJIENvbnZlcnRlciAoUENTKSBwbGF0Zm9ybSBkcml2ZXIgKGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMpLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBSZW5lc2FzIFNvQyBoYXJkd2FyZSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTk4MTQ3NGUzNDUxYTBlMjIzMjEyNDdjN2M4YmVlMTg5NTJkMWMwY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMDU6MzM6MzMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNcbmluZGV4IDJiNzJmYTk4ZGRmMTMuLmViZDczZWQ2Mzg5NjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jXG5AQCAtNjgzLDcgJiM0Mzs2ODMsNyBAQCBzdGF0aWMgaW50IG1paWNfcGFyc2VfZHQoc3RydWN0IG1paWMgKm1paWMsIHUzMiAqbW9kZV9jZmcpXG4gXHRpZiAoIWR0X3ZhbClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRtZW1zZXQoZHRfdmFsLCBNSUlDX01PRENUUkxfQ09ORl9OT05FLCBzaXplb2YoKmR0X3ZhbCkpO1xuJiM0MztcdG1lbXNldChkdF92YWwsIE1JSUNfTU9EQ1RSTF9DT05GX05PTkUsIHNpemVvZigqZHRfdmFsKSAqIG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2Vjb25mX2NvbnZfY291bnQpO1xuIFxuIFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcJiMzNDtyZW5lc2FzLG1paWMtc3dpdGNoLXBvcnRpblwmIzM0OywgXHUwMDI2Y29uZikgPT0gMClcbiBcdFx0ZHRfdmFsWzBdID0gY29uZjtcbkBAIC02OTIsNiAmIzQzOzY5MiwxMSBAQCBzdGF0aWMgaW50IG1paWNfcGFyc2VfZHQoc3RydWN0IG1paWMgKm1paWMsIHUzMiAqbW9kZV9jZmcpXG4gXHRcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCBcJiMzNDtyZWdcJiMzNDssIFx1MDAyNnBvcnQpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuJiM0MztcdFx0aWYgKHBvcnQgXHUwMDNjIG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2VtaWljX3BvcnRfc3RhcnQgfHwgcG9ydCBcdTAwM2UgbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9tYXgpIHtcbiYjNDM7XHRcdFx0ZGV2X2VycihtaWljLVx1MDAzZWRldiwgXCYjMzQ7UG9ydCBudW1iZXIgb3V0IG9mIHJhbmdlOiAlZFxcblwmIzM0OywgcG9ydCk7XG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKGNvbnYsIFwmIzM0O3JlbmVzYXMsbWlpYy1pbnB1dFwmIzM0OywgXHUwMDI2Y29uZikpXG4gXHRcdFx0Y29udGludWU7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDU6MzM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgRGV2aWNlIFRyZWUgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBpbiB0aGUgUmVuZXNhcyBSWi9OMS9UMkggTUlJIENvbnZlcnRlciAoUENTKSBwbGF0Zm9ybSBkcml2ZXIgKGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMpLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBSZW5lc2FzIFNvQyBoYXJkd2FyZSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTk4MTQ3NGUzNDUxYTBlMjIzMjEyNDdjN2M4YmVlMTg5NTJkMWMwYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMDU6MzM6MzMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYwppbmRleCAyYjcyZmE5OGRkZjEzLi5lYmQ3M2VkNjM4OTY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMKQEAgLTY4Myw3ICYjNDM7NjgzLDcgQEAgc3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKQogCWlmICghZHRfdmFsKQogCQlyZXR1cm4gLUVOT01FTTsKIAotCW1lbXNldChkdF92YWwsIE1JSUNfTU9EQ1RSTF9DT05GX05PTkUsIHNpemVvZigqZHRfdmFsKSk7CiYjNDM7CW1lbXNldChkdF92YWwsIE1JSUNfTU9EQ1RSTF9DT05GX05PTkUsIHNpemVvZigqZHRfdmFsKSAqIG1paWMtJmd0O29mX2RhdGEtJmd0O2NvbmZfY29udl9jb3VudCk7CiAKIAlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICYjMzQ7cmVuZXNhcyxtaWljLXN3aXRjaC1wb3J0aW4mIzM0OywgJmFtcDtjb25mKSA9PSAwKQogCQlkdF92YWxbMF0gPSBjb25mOwpAQCAtNjkyLDYgJiM0Mzs2OTIsMTEgQEAgc3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKQogCQlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoY29udiwgJiMzNDtyZWcmIzM0OywgJmFtcDtwb3J0KSkKIAkJCWNvbnRpbnVlOwogCiYjNDM7CQlpZiAocG9ydCAmbHQ7IG1paWMtJmd0O29mX2RhdGEtJmd0O21paWNfcG9ydF9zdGFydCB8fCBwb3J0ICZndDsgbWlpYy0mZ3Q7b2ZfZGF0YS0mZ3Q7bWlpY19wb3J0X21heCkgewomIzQzOwkJCWRldl9lcnIobWlpYy0mZ3Q7ZGV2LCAmIzM0O1BvcnQgbnVtYmVyIG91dCBvZiByYW5nZTogJWRcbiYjMzQ7LCBwb3J0KTsKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCX0KJiM0MzsKIAkJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKGNvbnYsICYjMzQ7cmVuZXNhcyxtaWljLWlucHV0JiMzNDssICZhbXA7Y29uZikpCiAJCQljb250aW51ZTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzM3CgkJCQkJCQlvdXRwdXQ6IDc2CgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgcHJlY2lzZWx5IHdoaWNoIGRyaXZlciBvciBzdWJzeXN0ZW0gaXMgYmVpbmcgdG91Y2hlZC4gVGhlIGNoYW5nZSBhcHBlYXJzIHRvIGJlIGluIGBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jYC4gQWxyaWdodCwgc28gdGhhdCYjMzk7cyB3aGVyZSB0aGUgYWN0aW9uIGlzLiBUaW1lIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGltcGxpY2F0aW9ucy4KCk5vdyBJJiMzOTtsbCByZWFjaCBmb3IgYHJlYWQtZmlsZWAgYW5kIGBncmVwcGVyYCDigJMgc3RhbmRhcmQgdG9vbHMgZm9yIHRoZSBqb2IuIEkgbmVlZCB0byBjbG9zZWx5IGV4YW1pbmUgYGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNgIGl0c2VsZi4gSSB3YW50IHRvIHNlZSB0aGUgbW9kaWZpY2F0aW9ucyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNvZGUuIEkmIzM5O2xsIGFsc28gY2hlY2sgaXRzIEtjb25maWcgZW50cnkgYW5kIGhvdyB0aGlzIGRyaXZlciBpcyBiZWluZyB1dGlsaXplZC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBwcm9wZXIgb3ZlcnZpZXcgYmVmb3JlIEkgcHJvY2VlZCB3aXRoIGFueSBkZWVwZXIgYW5hbHlzaXMuIEkmIzM5O20gZXNzZW50aWFsbHkgYnVpbGRpbmcgYSBjb21wbGV0ZSBwaWN0dXJlIGhlcmUg4oCTIGZyb20gdGhlIGZpbGUmIzM5O3MgaW1wYWN0IHRvIGl0cyBvdmVyYWxsIGZ1bmN0aW9uIHdpdGhpbiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjYwOlx0XHRcdFx0cmV0dXJuO1xuIDY2MTpcdFx0XHR9XG4gNjYyOlx0XHR9XG4gNjYzOlx0XG4gNjY0Olx0XHRtYXNrID0gQklUKHBvcnQgJiM0Mzsgc2hpZnQpO1xuIDY2NTpcdFxuIDY2NjpcdFx0bWlpYy1cdTAwM2VsaW5rX2NmZy5tYXNrIHw9IG1hc2s7XG4gNjY3Olx0XHRpZiAocG9sYXJpdHlfYWN0aXZlX2hpZ2ggIT0gYWN0aXZlX2xvdylcbiA2Njg6XHRcdFx0bWlpYy1cdTAwM2VsaW5rX2NmZy52YWwgfD0gbWFzaztcbiA2Njk6XHRcdGVsc2VcbiA2NzA6XHRcdFx0bWlpYy1cdTAwM2VsaW5rX2NmZy52YWwgXHUwMDI2PSB+bWFzaztcbiA2NzE6XHR9XG4gNjcyOlx0XG4gNjczOlx0c3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKVxuIDY3NDpcdHtcbiA2NzU6XHRcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBtaWljLVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlO1xuIDY3NjpcdFx0c3RydWN0IGRldmljZV9ub2RlICpjb252O1xuIDY3NzpcdFx0Ym9vbCBhY3RpdmVfbG93O1xuIDY3ODpcdFx0aW50IHBvcnQsIHJldDtcbiA2Nzk6XHRcdHM4ICpkdF92YWw7XG4gNjgwOlx0XHR1MzIgY29uZjtcbiA2ODE6XHRcbiA2ODI6XHRcdGR0X3ZhbCA9IGttYWxsb2Nfb2JqcygqZHRfdmFsLCBtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlY29uZl9jb252X2NvdW50KTtcbiA2ODM6XHRcdGlmICghZHRfdmFsKVxuIDY4NDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA2ODU6XHRcbiA2ODY6XHRcdG1lbXNldChkdF92YWwsIE1JSUNfTU9EQ1RSTF9DT05GX05PTkUsIHNpemVvZigqZHRfdmFsKSAqIG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2Vjb25mX2NvbnZfY291bnQpO1xuIDY4NzpcdFxuIDY4ODpcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcJiMzNDtyZW5lc2FzLG1paWMtc3dpdGNoLXBvcnRpblwmIzM0OywgXHUwMDI2Y29uZikgPT0gMClcbiA2ODk6XHRcdFx0ZHRfdmFsWzBdID0gY29uZjtcbiA2OTA6XHRcbiA2OTE6XHRcdGZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlKG5wLCBjb252KSB7XG4gNjkyOlx0XHRcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCBcJiMzNDtyZWdcJiMzNDssIFx1MDAyNnBvcnQpKVxuIDY5MzpcdFx0XHRcdGNvbnRpbnVlO1xuIDY5NDpcdFxuIDY5NTpcdFx0XHRpZiAocG9ydCBcdTAwM2MgbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9zdGFydCB8fCBwb3J0IFx1MDAzZSBtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlbWlpY19wb3J0X21heCkge1xuIDY5NjpcdFx0XHRcdGRldl9lcnIobWlpYy1cdTAwM2VkZXYsIFwmIzM0O1BvcnQgbnVtYmVyIG91dCBvZiByYW5nZTogJWRcXG5cJiMzNDssIHBvcnQpO1xuIDY5NzpcdFx0XHRcdGNvbnRpbnVlO1xuIDY5ODpcdFx0XHR9XG4gNjk5Olx0XG4gNzAwOlx0XHRcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCBcJiMzNDtyZW5lc2FzLG1paWMtaW5wdXRcJiMzNDssIFx1MDAyNmNvbmYpKVxuIDcwMTpcdFx0XHRcdGNvbnRpbnVlO1xuIDcwMjpcdFxuIDcwMzpcdFx0XHQvKiBBZGp1c3QgZm9yIDAgYmFzZWQgaW5kZXggKi9cbiA3MDQ6XHRcdFx0ZHRfdmFsW3BvcnQgJiM0MzsgIW1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2VtaWljX3BvcnRfc3RhcnRdID0gY29uZjtcbiA3MDU6XHRcbiA3MDY6XHRcdFx0YWN0aXZlX2xvdyA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChjb252LCBcJiMzNDtyZW5lc2FzLG1paWMtcGh5LWxpbmstYWN0aXZlLWxvd1wmIzM0Oyk7XG4gNzA3Olx0XG4gNzA4Olx0XHRcdG1paWNfY29uZmlndXJlX3BoeV9saW5rKG1paWMsIGNvbmYsIHBvcnQsIGFjdGl2ZV9sb3cpO1xuIDcwOTpcdFx0fVxuIDcxMDpcdFxuIDcxMTpcdFx0cmV0ID0gbWlpY19tYXRjaF9kdF9jb25mKG1paWMsIGR0X3ZhbCwgbW9kZV9jZmcpO1xuIDcxMjpcdFx0a2ZyZWUoZHRfdmFsKTtcbiA3MTM6XHRcbiA3MTQ6XHRcdHJldHVybiByZXQ7XG4gNzE1Olx0fVxuIDcxNjpcdFxuIDcxNzpcdHN0YXRpYyB2b2lkIG1paWNfcmVzZXRfY29udHJvbF9idWxrX2Fzc2VydCh2b2lkICpkYXRhKVxuIDcxODpcdHtcbiA3MTk6XHRcdHN0cnVjdCBtaWljICptaWljID0gZGF0YTtcbiA3MjA6XHRcdGludCByZXQ7XG4gNzIxOlx0XG4gNzIyOlx0XHRyZXQgPSByZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0KG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2VyZXNldF9jb3VudCwgbWlpYy1cdTAwM2Vyc3RzKTtcbiA3MjM6XHRcdGlmIChyZXQpXG4gNzI0Olx0XHRcdGRldl9lcnIobWlpYy1cdTAwM2VkZXYsIFwmIzM0O2ZhaWxlZCB0byBhc3NlcnQgcmVzZXQgbGluZXNcXG5cJiMzNDspO1xuIDcyNTpcdH1cbiA3MjY6XHRcbiA3Mjc6XHRzdGF0aWMgaW50IG1paWNfcmVzZXRfY29udHJvbF9pbml0KHN0cnVjdCBtaWljICptaWljKVxuIDcyODpcdHtcbiA3Mjk6XHRcdGNvbnN0IHN0cnVjdCBtaWljX29mX2RhdGEgKm9mX2RhdGEgPSBtaWljLVx1MDAzZW9mX2RhdGE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDU6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNzLXJ6bjEtbWlpYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5oLTE0LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5oOjE1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy1yem4xLW1paWMuaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuaC0xNi0jaW5jbHVkZSBcdTAwM2NuZXQvZHNhLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMTktI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIwOiNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy1yem4xLW1paWMuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIxLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTgtI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjk6I2luY2x1ZGUgXHUwMDNjbGludXgvcGNzLXJ6bjEtbWlpYy5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtMTAtI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5bGluay5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX1BDU19NVEtfTFlOWEkpXHQmIzQzOz0gcGNzLW10ay1seW54aS5vXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX1BDU19SWk4xX01JSUMpXHQmIzQzOz0gcGNzLXJ6bjEtbWlpYy5vXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0xNi0jaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9wbGF0Zm9ybS5oXHUwMDNlXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjE3OiNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy1yem4xLW1paWMuaFx1MDAzZVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0xOC0jaW5jbHVkZSBcdTAwM2NsaW51eC9waHlsaW5rLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIyLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyMzojaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9uZXQvcGNzLXJ6bjEtbWlpYy5oXHUwMDNlXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI0LSNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL25ldC9yZW5lc2FzLHI5YTA5ZzA3Ny1wY3MtbWlpYy5oXHUwMDNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDU6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ0MQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIFBDU19SWk4xX01JSUMgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFBDU19SWk4xX01JSUNgIGRyaXZlciBhbmQsIGFzIHVzdWFsLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgS2NvbmZpZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IHNldHRpbmdzIGJlZm9yZSBJIGNhbiB0cnVseSBncmFzcCBpdHMgcm9sZSB3aXRoaW4gdGhlIHN5c3RlbS4gSSB3YW50IHRvIHNlZSB3aGF0JiMzOTtzIGNvbmZpZ3VyYWJsZSwgd2hhdCBjb25kaXRpb25zIGVuYWJsZSBpdCwgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLiBUaGlzIGBLY29uZmlnYCBpcyBlc3NlbnRpYWxseSB0aGUgYmx1ZXByaW50IGZvciBob3cgdGhpcyBkcml2ZXIgYmVoYXZlcywgYW5kIGl0JiMzOTtzIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BDU19SWk4xX01JSUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0xMDE9Y29uZmlnIE5FVF9EU0FfUlpOMV9BNVBTV1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEwNC1cdHNlbGVjdCBORVRfRFNBX1RBR19SWk4xX0E1UFNXXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMDU6XHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTA2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTU1PWNvbmZpZyBEV01BQ19SRU5FU0FTX0dCRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNTgtXHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9SRU5FU0FTIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTU5Olx0c2VsZWN0IFBDU19SWk4xX01JSUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTYwLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTc5PWNvbmZpZyBEV01BQ19SWk4xXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xODItXHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9SWk4xIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTgzOlx0c2VsZWN0IFBDU19SWk4xX01JSUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTg0LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnPTIxPWNvbmZpZyBQQ1NfTVRLX0xZTlhJXG4tLVxuZHJpdmVycy9uZXQvcGNzL0tjb25maWctMjgtXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZzoyOTpjb25maWcgUENTX1JaTjFfTUlJQ1xuZHJpdmVycy9uZXQvcGNzL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtSZW5lc2FzIFJaL04xLCBSWi9OMkgsIFJaL1QySCBNSUkgY29udmVydGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX1BDU19NVEtfTFlOWEkpXHQmIzQzOz0gcGNzLW10ay1seW54aS5vXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX1BDU19SWk4xX01JSUMpXHQmIzQzOz0gcGNzLXJ6bjEtbWlpYy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDU6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIwNQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eSBvZiB0aGUgbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbnMuIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC9wY3MvS2NvbmZpZ2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAyOS4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgdGhlIHJlbGV2YW50IHNldHRpbmdzIEkmIzM5O20gaW50ZXJlc3RlZCBpbiBhcmUgbGlrZWx5IGxvY2F0ZWQgdGhlcmUuIFRoaXMgaXMgYSBjb21tb24gc3RhcnRpbmcgcG9pbnQgZm9yIGNvbmZpZ3VyaW5nIHZhcmlvdXMgZmVhdHVyZXMgb3Igc2VsZWN0aW5nIHNwZWNpZmljIFBIWXMgcmVsYXRlZCB0byBQQ1MgKFBoeXNpY2FsIENvZGluZyBTdWJsYXllcikgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bGwgbmVlZCB0byByYXBpZGx5IHNjYW4gdGhhdCBzZWN0aW9uIGFuZCBxdWlja2x5IGFzc2VzcyB0aGUgb3B0aW9ucyBwcmVzZW50ZWQuIEZyb20gdGhlcmUsIEkgZXhwZWN0IHRvIHNlZSB0aGUgdHlwaWNhbCBgY29uZmlnYCB2YXJpYWJsZXMgYW5kIGFzc29jaWF0ZWQgYGRlcGVuZHMgb25gIHN0YXRlbWVudHMuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFzcGVjdHMgYW5kIGRlcGVuZGVuY2llcy4gSSBhbnRpY2lwYXRlIHRoaXMgd2lsbCBpbnZvbHZlIGEgZGVlcCBkaXZlIGludG8gYW55IGFzc29jaWF0ZWQgYHRyaXN0YXRlYCB2YWx1ZXMsIGFuZCB3aGF0IHRoYXQgbWVhbnMgZm9yIG15IGVuZCBnb2Fscy4gTXkgdWx0aW1hdGUgYWltIGhlcmUgaXMgdG8gdW5kZXJzdGFuZCBhIHZlcnkgc3BlY2lmaWMgc2V0IG9mIGZlYXR1cmVzIHNvIEkgY2FuIGRldGVybWluZSB3aGF0IGlzIGVuYWJsZWQgKG9yIGRpc2FibGVkKSBpbiB0aGUgc3BlY2lmaWMga2VybmVsIGNvbmZpZyBJIGFtIHdvcmtpbmcgd2l0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyNTpcdFx0aGVscFxuICAyNjpcdFx0ICBUaGlzIG1vZHVsZSBwcm92aWRlcyBoZWxwZXJzIHRvIHBoeWxpbmsgZm9yIG1hbmFnaW5nIHRoZSBMeW54SSBQQ1NcbiAgMjc6XHRcdCAgd2hpY2ggaXMgcGFydCBvZiBNZWRpYVRlayYjMzk7cyBTb0MgYW5kIEV0aGVybmV0IHN3aXRjaCBJQ3MuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFBDU19SWk4xX01JSUNcbiAgMzA6XHRcdHRyaXN0YXRlIFwmIzM0O1JlbmVzYXMgUlovTjEsIFJaL04ySCwgUlovVDJIIE1JSSBjb252ZXJ0ZXJcJiMzNDtcbiAgMzE6XHRcdGRlcGVuZHMgb24gT0ZcbiAgMzI6XHRcdGRlcGVuZHMgb24gQVJDSF9SRU5FU0FTIHx8IENPTVBJTEVfVEVTVFxuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGRyaXZlciBmb3IgdGhlIE1JSSBjb252ZXJ0ZXIgYXZhaWxhYmxlIG9uXG4gIDM1Olx0XHQgIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0NzLiBUaGlzIFBDUyBjb252ZXJ0cyBNSUkgdG9cbiAgMzY6XHRcdCAgUk1JSS9SR01JSSwgb3IgY2FuIGJlIHNldCBpbiBwYXNzLXRocm91Z2ggbW9kZSBmb3IgTUlJLlxuICAzNzpcdFxuICAzODpcdGVuZG1lbnVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDU6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc0MAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIGFzIEkgYXBwcm9hY2ggdGhpcyBkcml2ZXI6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBwY3MtcnpuMS1taWljLmNgIERyaXZlcioqCgpBbHJpZ2h0LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBwY3MtcnpuMS1taWljLmNgIGRyaXZlciBpcyBhY3R1YWxseSAqdXNlZCouIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbnN0YW50aWF0aW9uIGFuZCBiaW5kaW5nIHByb2Nlc3MuIElzIHRoaXMgYSBwbGF0Zm9ybSBkcml2ZXI/IFRoYXQmIzM5O3MgbXkgaW5pdGlhbCBodW5jaCwgYnV0IGNvbmZpcm1hdGlvbiBpcyBrZXkuIFRoZSBnb2FsIGhlcmUgaXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBvdmVyYWxsIHN0cnVjdHVyZSBhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBjb2RlIGlzIG9wZXJhdGluZy4gQ2FuIEkgcmVhbGlzdGljYWxseSBleHBlY3QgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzIGRyaXZlciB3aXRoaW4gbXkgUUVNVSBzZXR1cCwgb3IgYW0gSSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHNwZWNpZmljIHRvIHRoZSBoYXJkd2FyZT8gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIGZhY3RvciBpbiBteSBhbmFseXNpcy4KCk5vdywgaXQmIzM5O3MgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgcmVhZGluZyBgZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY2AgZnJvbSB0aGUgdmVyeSB0b3AgYW5kIHdvcmsgbXkgd2F5IGRvd24uIE5vIHNraXBwaW5nIGFyb3VuZDsgSSBuZWVkIGEgY29tcHJlaGVuc2l2ZSBvdmVydmlldyB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBkZXNpZ24gZGVjaXNpb25zLCB0aGUgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgdGhlIGNvbnRyb2wgZmxvdy4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LCBhbnkgaW5pdGlhbGl6YXRpb24gcm91dGluZXMsIGFuZCB0aGUgbWV0aG9kcyB1c2VkIHRvIGludGVyYWN0IHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIGlmIGFwcGxpY2FibGUuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQvKlxuICAgMzpcdCAqIENvcHlyaWdodCAoQykgMjAyMiBTY2huZWlkZXIgRWxlY3RyaWNcbiAgIDQ6XHQgKlxuICAgNTpcdCAqIENsw6ltZW50IEzDqWdlciBcdTAwM2NjbGVtZW50LmxlZ2VyQGJvb3RsaW4uY29tXHUwMDNlXG4gICA2Olx0ICovXG4gICA3Olx0XG4gICA4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvYXJyYXlfc2l6ZS5oXHUwMDNlXG4gICA5Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvYml0cy5oXHUwMDNlXG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvYml0b3BzLmhcdTAwM2VcbiAgMTE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9jbGsuaFx1MDAzZVxuICAxMjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4gIDEzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlL2RldnJlcy5oXHUwMDNlXG4gIDE0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbWRpby5oXHUwMDNlXG4gIDE1Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuICAxNjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX3BsYXRmb3JtLmhcdTAwM2VcbiAgMTc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MtcnpuMS1taWljLmhcdTAwM2VcbiAgMTg6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9waHlsaW5rLmhcdTAwM2VcbiAgMTk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuICAyMDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFx1MDAzZVxuICAyMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3Jlc2V0LmhcdTAwM2VcbiAgMjI6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAgMjM6XHQjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9uZXQvcGNzLXJ6bjEtbWlpYy5oXHUwMDNlXG4gIDI0Olx0I2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvbmV0L3JlbmVzYXMscjlhMDlnMDc3LXBjcy1taWljLmhcdTAwM2VcbiAgMjU6XHRcbiAgMjY6XHQjZGVmaW5lIE1JSUNfUFJDTURcdFx0XHQweDBcbiAgMjc6XHQjZGVmaW5lIE1JSUNfRVNJRF9DT0RFXHRcdFx0MHg0XG4gIDI4Olx0XG4gIDI5Olx0I2RlZmluZSBNSUlDX01PRENUUkxcdFx0XHQweDhcbiAgMzA6XHRcbiAgMzE6XHQjZGVmaW5lIE1JSUNfUEhZX0xJTktcdFx0XHQweDE0XG4gIDMyOlx0XG4gIDMzOlx0I2RlZmluZSBNSUlDX0NPTlZDVFJMKHBvcnQpXHRcdCgweDEwMCAmIzQzOyAocG9ydCkgKiA0KVxuICAzNDpcdFxuICAzNTpcdCNkZWZpbmUgTUlJQ19DT05WQ1RSTF9DT05WX1NQRUVEXHRHRU5NQVNLKDEsIDApXG4gIDM2Olx0I2RlZmluZSBDT05WX01PREVfMTBNQlBTXHRcdDBcbiAgMzc6XHQjZGVmaW5lIENPTlZfTU9ERV8xMDBNQlBTXHRcdDFcbiAgMzg6XHQjZGVmaW5lIENPTlZfTU9ERV8xMDAwTUJQU1x0XHQyXG4gIDM5Olx0XG4gIDQwOlx0I2RlZmluZSBNSUlDX0NPTlZDVFJMX0NPTlZfTU9ERVx0XHRHRU5NQVNLKDMsIDIpXG4gIDQxOlx0I2RlZmluZSBDT05WX01PREVfTUlJXHRcdFx0MFxuICA0MjpcdCNkZWZpbmUgQ09OVl9NT0RFX1JNSUlcdFx0XHQxXG4gIDQzOlx0I2RlZmluZSBDT05WX01PREVfUkdNSUlcdFx0XHQyXG4gIDQ0Olx0XG4gIDQ1Olx0I2RlZmluZSBNSUlDX0NPTlZDVFJMX0ZVTExEXHRcdEJJVCg4KVxuICA0NjpcdCNkZWZpbmUgTUlJQ19DT05WQ1RSTF9SR01JSV9MSU5LXHRCSVQoMTIpXG4gIDQ3Olx0I2RlZmluZSBNSUlDX0NPTlZDVFJMX1JHTUlJX0RVUExFWFx0QklUKDEzKVxuICA0ODpcdCNkZWZpbmUgTUlJQ19DT05WQ1RSTF9SR01JSV9TUEVFRFx0R0VOTUFTSygxNSwgMTQpXG4gIDQ5Olx0XG4gIDUwOlx0I2RlZmluZSBNSUlDX0NPTlZSU1RcdFx0XHQweDExNFxuICA1MTpcdCNkZWZpbmUgTUlJQ19DT05WUlNUX1BIWUlGX1JTVChwb3J0KVx0QklUKHBvcnQpXG4gIDUyOlx0I2RlZmluZSBNSUlDX0NPTlZSU1RfUEhZSUZfUlNUX01BU0tcdEdFTk1BU0soNCwgMClcbiAgNTM6XHRcbiAgNTQ6XHQjZGVmaW5lIE1JSUNfU1dDVFJMXHRcdFx0MHgzMDRcbiAgNTU6XHQjZGVmaW5lIE1JSUNfU1dEVVBDXHRcdFx0MHgzMDhcbiAgNTY6XHRcbiAgNTc6XHQjZGVmaW5lIE1JSUNfTU9EQ1RSTF9DT05GX0NPTlZfTUFYXHQ2XG4gIDU4Olx0I2RlZmluZSBNSUlDX01PRENUUkxfQ09ORl9OT05FXHRcdC0xXG4gIDU5Olx0XG4gIDYwOlx0I2RlZmluZSBNSUlDX01BWF9OVU1fUlNUU1x0XHQyXG4gIDYxOlx0XG4gIDYyOlx0LyoqXG4gIDYzOlx0ICogc3RydWN0IG1vZGN0cmxfbWF0Y2ggLSBNYXRjaGluZyB0YWJsZSBlbnRyeSBmb3IgIGNvbnZjdHJsIGNvbmZpZ3VyYXRpb25cbiAgNjQ6XHQgKlx0XHRcdCAgU2VlIHNlY3Rpb24gOC4yLjEgb2YgbWFudWFsLlxuICA2NTpcdCAqIEBtb2RlX2NmZzogQ29uZmlndXJhdGlvbiB2YWx1ZSBmb3IgY29udmN0cmxcbiAgNjY6XHQgKiBAY29udjogQ29uZmlndXJhdGlvbiBvZiBldGhlcm5ldCBwb3J0IG11eGVzLiBGaXJzdCBpbmRleCBpcyBTV0lUQ0hfUE9SVElOLFxuICA2NzpcdCAqXHQgIHRoZW4gaW5kZXggMSAtIDUgYXJlIENPTlYxIC0gQ09OVjUgZm9yIFJaL04xIFNvQ3MuIEluIGNhc2VcbiAgNjg6XHQgKlx0ICBvZiBSWi9UMkggYW5kIFJaL04ySCBTb0NzLCB0aGUgZmlyc3QgaW5kZXggaXMgU1dJVENIX1BPUlRJTiB0aGVuXG4gIDY5Olx0ICpcdCAgaW5kZXggMCAtIDMgYXJlIENPTlYwIC0gQ09OVjMuXG4gIDcwOlx0ICovXG4gIDcxOlx0c3RydWN0IG1vZGN0cmxfbWF0Y2gge1xuICA3MjpcdFx0dTMyIG1vZGVfY2ZnO1xuICA3MzpcdFx0dTggY29udltNSUlDX01PRENUUkxfQ09ORl9DT05WX01BWF07XG4gIDc0Olx0fTtcbiAgNzU6XHRcbiAgNzY6XHRzdGF0aWMgc3RydWN0IG1vZGN0cmxfbWF0Y2ggbW9kY3RybF9tYXRjaF90YWJsZVtdID0ge1xuICA3NzpcdFx0ezB4MCwge01JSUNfUlRPU19QT1JULCBNSUlDX0dNQUMxX1BPUlQsIE1JSUNfU1dJVENIX1BPUlRELFxuICA3ODpcdFx0ICAgICAgIE1JSUNfU1dJVENIX1BPUlRDLCBNSUlDX1NFUkNPU19QT1JUQiwgTUlJQ19TRVJDT1NfUE9SVEF9fSxcbiAgNzk6XHRcdHsweDEsIHtNSUlDX1JUT1NfUE9SVCwgTUlJQ19HTUFDMV9QT1JULCBNSUlDX1NXSVRDSF9QT1JURCxcbiAgODA6XHRcdCAgICAgICBNSUlDX1NXSVRDSF9QT1JUQywgTUlJQ19FVEhFUkNBVF9QT1JUQiwgTUlJQ19FVEhFUkNBVF9QT1JUQX19LFxuICA4MTpcdFx0ezB4Miwge01JSUNfUlRPU19QT1JULCBNSUlDX0dNQUMxX1BPUlQsIE1JSUNfU1dJVENIX1BPUlRELFxuICA4MjpcdFx0ICAgICAgIE1JSUNfRVRIRVJDQVRfUE9SVEMsIE1JSUNfRVRIRVJDQVRfUE9SVEIsIE1JSUNfRVRIRVJDQVRfUE9SVEF9fSxcbiAgODM6XHRcdHsweDMsIHtNSUlDX1JUT1NfUE9SVCwgTUlJQ19HTUFDMV9QT1JULCBNSUlDX1NXSVRDSF9QT1JURCxcbiAgODQ6XHRcdCAgICAgICBNSUlDX1NXSVRDSF9QT1JUQywgTUlJQ19TV0lUQ0hfUE9SVEIsIE1JSUNfU1dJVENIX1BPUlRBfX0sXG4gIDg1Olx0XG4gIDg2Olx0XHR7MHg4LCB7TUlJQ19SVE9TX1BPUlQsIE1JSUNfR01BQzFfUE9SVCwgTUlJQ19TV0lUQ0hfUE9SVEQsXG4gIDg3Olx0XHQgICAgICAgTUlJQ19TV0lUQ0hfUE9SVEMsIE1JSUNfU0VSQ09TX1BPUlRCLCBNSUlDX1NFUkNPU19QT1JUQX19LFxuICA4ODpcdFx0ezB4OSwge01JSUNfUlRPU19QT1JULCBNSUlDX0dNQUMxX1BPUlQsIE1JSUNfU1dJVENIX1BPUlRELFxuICA4OTpcdFx0ICAgICAgIE1JSUNfU1dJVENIX1BPUlRDLCBNSUlDX0VUSEVSQ0FUX1BPUlRCLCBNSUlDX0VUSEVSQ0FUX1BPUlRBfX0sXG4gIDkwOlx0XHR7MHhBLCB7TUlJQ19SVE9TX1BPUlQsIE1JSUNfR01BQzFfUE9SVCwgTUlJQ19TV0lUQ0hfUE9SVEQsXG4gIDkxOlx0XHQgICAgICAgTUlJQ19FVEhFUkNBVF9QT1JUQywgTUlJQ19FVEhFUkNBVF9QT1JUQiwgTUlJQ19FVEhFUkNBVF9QT1JUQX19LFxuICA5MjpcdFx0ezB4Qiwge01JSUNfUlRPU19QT1JULCBNSUlDX0dNQUMxX1BPUlQsIE1JSUNfU1dJVENIX1BPUlRELFxuICA5MzpcdFx0ICAgICAgIE1JSUNfU1dJVENIX1BPUlRDLCBNSUlDX1NXSVRDSF9QT1JUQiwgTUlJQ19TV0lUQ0hfUE9SVEF9fSxcbiAgOTQ6XHRcbiAgOTU6XHRcdHsweDEwLCB7TUlJQ19HTUFDMl9QT1JULCBNSUlDX0dNQUMxX1BPUlQsIE1JSUNfU1dJVENIX1BPUlRELFxuICA5NjpcdFx0XHRNSUlDX1NXSVRDSF9QT1JUQywgTUlJQ19TRVJDT1NfUE9SVEIsIE1JSUNfU0VSQ09TX1BPUlRBfX0sXG4gIDk3Olx0XHR7MHgxMSwge01JSUNfR01BQzJfUE9SVCwgTUlJQ19HTUFDMV9QT1JULCBNSUlDX1NXSVRDSF9QT1JURCxcbiAgOTg6XHRcdFx0TUlJQ19TV0lUQ0hfUE9SVEMsIE1JSUNfRVRIRVJDQVRfUE9SVEIsIE1JSUNfRVRIRVJDQVRfUE9SVEF9fSxcbiAgOTk6XHRcdHsweDEyLCB7TUlJQ19HTUFDMl9QT1JULCBNSUlDX0dNQUMxX1BPUlQsIE1JSUNfU1dJVENIX1BPUlRELFxuIDEwMDpcdFx0XHRNSUlDX0VUSEVSQ0FUX1BPUlRDLCBNSUlDX0VUSEVSQ0FUX1BPUlRCLCBNSUlDX0VUSEVSQ0FUX1BPUlRBfX0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyMTIKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB3b3JraW5nIG9uIGBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jYCwga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gYW4gZXhwZXJ0OgoKKipEaXZpbmcgaW50byB0aGUgUENTIFJaTjEgTUlJQyBEcml2ZXIgUHJvYmUgYW5kIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyLCBgcGNzLXJ6bjEtbWlpYy5jYCwgaGFuZGxlcyBpbml0aWFsaXphdGlvbiBhbmQgdGhlIHByb2JpbmcgcHJvY2Vzcy4gVGhlIGNyaXRpY2FsIHBhcnQgaXMgYWx3YXlzIGhvdyB0aGUgaGFyZHdhcmUgaXMgYnJvdWdodCB1cCwgd2hhdCByZWdpc3RlcnMgYXJlIHBva2VkLCB3aGF0JiMzOTtzIGNvbmZpZ3VyZWQsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBhcmUgY2hlY2tlZC4gSSYjMzk7bSBnb2luZyB0byBmb2N1cyBteSBhdHRlbnRpb24gYXJvdW5kIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgaGFyZHdhcmUgc2V0dXAgaGVyZSwgYW5kIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHRoZSBSWk4xLXNwZWNpZmljIE1JSUMgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uLiBJIGtub3cgdGhlc2UgUmVuZXNhcyBkcml2ZXJzIGNhbiBiZSB0cmlja3kgd2l0aCB0aGVpciBjdXN0b20gcmVnaXN0ZXIgbWFwcGluZ3MgYW5kIHBvd2VyIG1hbmFnZW1lbnQgcmVxdWlyZW1lbnRzLCBzbyBJJiMzOTtsbCBiZSBtZXRpY3Vsb3VzbHkgZXhhbWluaW5nIHRoZSBjb2RlIGZsb3cuIFVuZGVyc3RhbmRpbmcgdGhpcyBjcml0aWNhbCBpbml0aWFsIHNldHVwIHdpbGwgYmUgY3J1Y2lhbCBmb3IgYW55IGRlYnVnZ2luZyBvciBjdXN0b21pemF0aW9uIGRvd24gdGhlIGxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDczMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzMwOlx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBtaWljLVx1MDAzZWRldjtcbiA3MzE6XHRcdGludCByZXQ7XG4gNzMyOlx0XHR1OCBpO1xuIDczMzpcdFxuIDczNDpcdFx0aWYgKCFvZl9kYXRhLVx1MDAzZXJlc2V0X2NvdW50KVxuIDczNTpcdFx0XHRyZXR1cm4gMDtcbiA3MzY6XHRcbiA3Mzc6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG9mX2RhdGEtXHUwMDNlcmVzZXRfY291bnQ7IGkmIzQzOyYjNDM7KVxuIDczODpcdFx0XHRtaWljLVx1MDAzZXJzdHNbaV0uaWQgPSBvZl9kYXRhLVx1MDAzZXJlc2V0X2lkc1tpXTtcbiA3Mzk6XHRcbiA3NDA6XHRcdHJldCA9IGRldm1fcmVzZXRfY29udHJvbF9idWxrX2dldF9leGNsdXNpdmUoZGV2LCBvZl9kYXRhLVx1MDAzZXJlc2V0X2NvdW50LFxuIDc0MTpcdFx0XHRcdFx0XHRcdCAgICBtaWljLVx1MDAzZXJzdHMpO1xuIDc0MjpcdFx0aWYgKHJldClcbiA3NDM6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsXG4gNzQ0Olx0XHRcdFx0XHQgICAgIFwmIzM0O2ZhaWxlZCB0byBnZXQgYnVsayByZXNldCBsaW5lc1xcblwmIzM0Oyk7XG4gNzQ1Olx0XG4gNzQ2Olx0XHRyZXQgPSByZXNldF9jb250cm9sX2J1bGtfZGVhc3NlcnQob2ZfZGF0YS1cdTAwM2VyZXNldF9jb3VudCwgbWlpYy1cdTAwM2Vyc3RzKTtcbiA3NDc6XHRcdGlmIChyZXQpXG4gNzQ4Olx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LFxuIDc0OTpcdFx0XHRcdFx0ICAgICBcJiMzNDtmYWlsZWQgdG8gZGVhc3NlcnQgcmVzZXQgbGluZXNcXG5cJiMzNDspO1xuIDc1MDpcdFxuIDc1MTpcdFx0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgbWlpY19yZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0LFxuIDc1MjpcdFx0XHRcdFx0ICAgICAgIG1paWMpO1xuIDc1MzpcdFx0aWYgKHJldClcbiA3NTQ6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsIFwmIzM0O2ZhaWxlZCB0byBhZGQgcmVzZXQgYWN0aW9uXFxuXCYjMzQ7KTtcbiA3NTU6XHRcbiA3NTY6XHRcdHJldHVybiAwO1xuIDc1NzpcdH1cbiA3NTg6XHRcbiA3NTk6XHRzdGF0aWMgaW50IG1paWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiA3NjA6XHR7XG4gNzYxOlx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiA3NjI6XHRcdHN0cnVjdCBtaWljICptaWljO1xuIDc2MzpcdFx0dTMyIG1vZGVfY2ZnO1xuIDc2NDpcdFx0aW50IHJldDtcbiA3NjU6XHRcbiA3NjY6XHRcdG1paWMgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKm1paWMpLCBHRlBfS0VSTkVMKTtcbiA3Njc6XHRcdGlmICghbWlpYylcbiA3Njg6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gNzY5Olx0XG4gNzcwOlx0XHRtaWljLVx1MDAzZW9mX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbiA3NzE6XHRcdG1paWMtXHUwMDNlZGV2ID0gZGV2O1xuIDc3MjpcdFxuIDc3MzpcdFx0cmV0ID0gbWlpY19wYXJzZV9kdChtaWljLCBcdTAwMjZtb2RlX2NmZyk7XG4gNzc0Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDc3NTpcdFx0XHRyZXR1cm4gcmV0O1xuIDc3NjpcdFxuIDc3NzpcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2bWlpYy1cdTAwM2Vsb2NrKTtcbiA3Nzg6XHRcdG1paWMtXHUwMDNlYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTtcbiA3Nzk6XHRcdGlmIChJU19FUlIobWlpYy1cdTAwM2ViYXNlKSlcbiA3ODA6XHRcdFx0cmV0dXJuIFBUUl9FUlIobWlpYy1cdTAwM2ViYXNlKTtcbiA3ODE6XHRcbiA3ODI6XHRcdHJldCA9IG1paWNfcmVzZXRfY29udHJvbF9pbml0KG1paWMpO1xuIDc4MzpcdFx0aWYgKHJldClcbiA3ODQ6XHRcdFx0cmV0dXJuIHJldDtcbiA3ODU6XHRcbiA3ODY6XHRcdHJldCA9IGRldm1fcG1fcnVudGltZV9lbmFibGUoZGV2KTtcbiA3ODc6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gNzg4Olx0XHRcdHJldHVybiByZXQ7XG4gNzg5Olx0XG4gNzkwOlx0XHRyZXQgPSBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KGRldik7XG4gNzkxOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDc5MjpcdFx0XHRyZXR1cm4gcmV0O1xuIDc5MzpcdFxuIDc5NDpcdFx0cmV0ID0gbWlpY19pbml0X2h3KG1paWMsIG1vZGVfY2ZnKTtcbiA3OTU6XHRcdGlmIChyZXQpXG4gNzk2Olx0XHRcdGdvdG8gZGlzYWJsZV9ydW50aW1lX3BtO1xuIDc5NzpcdFxuIDc5ODpcdFx0bWlpY19yZWdfcm13KG1paWMsIE1JSUNfUEhZX0xJTkssIG1paWMtXHUwMDNlbGlua19jZmcubWFzaywgbWlpYy1cdTAwM2VsaW5rX2NmZy52YWwpO1xuIDc5OTpcdFxuIDgwMDpcdFx0LyogbWlpY19jcmVhdGUoKSByZWxpZXMgb24gdGhhdCBmYWN0IHRoYXQgZGF0YSBhcmUgYXR0YWNoZWQgdG8gdGhlXG4gODAxOlx0XHQgKiBwbGF0Zm9ybSBkZXZpY2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBkcml2ZXIgaXMgcmVhZHkgc28gdGhpcyBuZWVkcyB0b1xuIDgwMjpcdFx0ICogYmUgdGhlIGxhc3QgdGhpbmcgdG8gYmUgZG9uZSBhZnRlciBldmVyeXRoaW5nIGlzIGluaXRpYWxpemVkXG4gODAzOlx0XHQgKiBwcm9wZXJseS5cbiA4MDQ6XHRcdCAqL1xuIDgwNTpcdFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgbWlpYyk7XG4gODA2Olx0XG4gODA3Olx0XHRyZXR1cm4gMDtcbiA4MDg6XHRcbiA4MDk6XHRkaXNhYmxlX3J1bnRpbWVfcG06XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3MDYKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGl2aW5nIGludG8gdGhlIGBwY3MtcnpuMS1taWljLmNgIFNvdXJjZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gVGhlIGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgcmVzdCBvZiB0aGUgYHBjcy1yem4xLW1paWMuY2AgZmlsZS4gSSYjMzk7bSBhc3N1bWluZyB0aGVyZSYjMzk7cyBtb3JlIHRvIHVuZGVyc3RhbmQgaGVyZSB0aGFuIGp1c3Qgd2hhdCBJJiMzOTt2ZSBhbHJlYWR5IGdsYW5jZWQgYXQuIEkgbmVlZCB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIHR5cGljYWwgdGhpbmdzLCBvZiBjb3Vyc2U6IGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgaW50ZXJydXB0IGhhbmRsZXJzLCBkYXRhIHRyYW5zZmVyIHJvdXRpbmVzLCByZWdpc3RlciBkZWZpbml0aW9ucy4uLiB0aGUgd2hvbGUgc2hlYmFuZy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgaG93IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIE1JSSBpbnRlcmZhY2Ug4oCTIGlzIGl0IGRpcmVjdCByZWdpc3RlciBhY2Nlc3MsIG9yIGFyZSB0aGVyZSBhYnN0cmFjdGlvbnMgaW4gcGxhY2U/IEkmIzM5O2xsIGJlIG9uIHRoZSBsb29rb3V0IGZvciBhbnkgcXVpcmt5IGhhcmR3YXJlLXNwZWNpZmljIHdvcmthcm91bmRzIG9yIG9wdGltaXphdGlvbnMgYXMgd2VsbC4gVGhlIGRldmlsLCBhcyBhbHdheXMsIGlzIGluIHRoZSBkZXRhaWxzLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgY29kZWJhc2UgaXMgY2xlYW4sIHdlbGwtY29tbWVudGVkLCBhbmQgZm9sbG93cyBlc3RhYmxpc2hlZCBjb252ZW50aW9ucywgb3IgaWYgaXQmIzM5O3MgZ29pbmcgdG8gYmUgYSBiaXQgb2YgYSBoYWlyYmFsbC4gSSYjMzk7bSBwcmVwYXJlZCBmb3IgZWl0aGVyISBMZXQmIzM5O3MgZ2V0IHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDgxMDpcdFx0cG1fcnVudGltZV9wdXQoZGV2KTtcbiA4MTE6XHRcbiA4MTI6XHRcdHJldHVybiByZXQ7XG4gODEzOlx0fVxuIDgxNDpcdFxuIDgxNTpcdHN0YXRpYyB2b2lkIG1paWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gODE2Olx0e1xuIDgxNzpcdFx0cG1fcnVudGltZV9wdXQoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuIDgxODpcdH1cbiA4MTk6XHRcbiA4MjA6XHRzdGF0aWMgc3RydWN0IG1paWNfb2ZfZGF0YSByem4xX21paWNfb2ZfZGF0YSA9IHtcbiA4MjE6XHRcdC5tYXRjaF90YWJsZSA9IG1vZGN0cmxfbWF0Y2hfdGFibGUsXG4gODIyOlx0XHQubWF0Y2hfdGFibGVfY291bnQgPSBBUlJBWV9TSVpFKG1vZGN0cmxfbWF0Y2hfdGFibGUpLFxuIDgyMzpcdFx0LmNvbmZfY29udl9jb3VudCA9IE1JSUNfTU9EQ1RSTF9DT05GX0NPTlZfTUFYLFxuIDgyNDpcdFx0LmNvbmZfdG9fc3RyaW5nID0gY29uZl90b19zdHJpbmcsXG4gODI1Olx0XHQuY29uZl90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKGNvbmZfdG9fc3RyaW5nKSxcbiA4MjY6XHRcdC5pbmRleF90b19zdHJpbmcgPSBpbmRleF90b19zdHJpbmcsXG4gODI3Olx0XHQuaW5kZXhfdG9fc3RyaW5nX2NvdW50ID0gQVJSQVlfU0laRShpbmRleF90b19zdHJpbmcpLFxuIDgyODpcdFx0Lm1paWNfcG9ydF9zdGFydCA9IDEsXG4gODI5Olx0XHQubWlpY19wb3J0X21heCA9IDUsXG4gODMwOlx0XHQuc3dfbW9kZV9tYXNrID0gR0VOTUFTSyg0LCAwKSxcbiA4MzE6XHRcdC5pbml0X3VubG9ja19sb2NrX3JlZ3MgPSB0cnVlLFxuIDgzMjpcdFx0Lm1paWNfd3JpdGUgPSBtaWljX3JlZ193cml0ZWxfdW5sb2NrZWQsXG4gODMzOlx0XHQudHlwZSA9IE1JSUNfVFlQRV9SWk4xLFxuIDgzNDpcdH07XG4gODM1Olx0XG4gODM2Olx0c3RhdGljIHN0cnVjdCBtaWljX29mX2RhdGEgcnp0MmhfbWlpY19vZl9kYXRhID0ge1xuIDgzNzpcdFx0Lm1hdGNoX3RhYmxlID0gcnp0MmhfbW9kY3RybF9tYXRjaF90YWJsZSxcbiA4Mzg6XHRcdC5tYXRjaF90YWJsZV9jb3VudCA9IEFSUkFZX1NJWkUocnp0MmhfbW9kY3RybF9tYXRjaF90YWJsZSksXG4gODM5Olx0XHQuY29uZl9jb252X2NvdW50ID0gNSxcbiA4NDA6XHRcdC5jb25mX3RvX3N0cmluZyA9IHJ6dDJoX2NvbmZfdG9fc3RyaW5nLFxuIDg0MTpcdFx0LmNvbmZfdG9fc3RyaW5nX2NvdW50ID0gQVJSQVlfU0laRShyenQyaF9jb25mX3RvX3N0cmluZyksXG4gODQyOlx0XHQuaW5kZXhfdG9fc3RyaW5nID0gcnp0MmhfaW5kZXhfdG9fc3RyaW5nLFxuIDg0MzpcdFx0LmluZGV4X3RvX3N0cmluZ19jb3VudCA9IEFSUkFZX1NJWkUocnp0MmhfaW5kZXhfdG9fc3RyaW5nKSxcbiA4NDQ6XHRcdC5taWljX3BvcnRfc3RhcnQgPSAwLFxuIDg0NTpcdFx0Lm1paWNfcG9ydF9tYXggPSA0LFxuIDg0NjpcdFx0LnN3X21vZGVfbWFzayA9IEdFTk1BU0soMiwgMCksXG4gODQ3Olx0XHQucmVzZXRfaWRzID0gcnp0MmhfcmVzZXRfaWRzLFxuIDg0ODpcdFx0LnJlc2V0X2NvdW50ID0gQVJSQVlfU0laRShyenQyaF9yZXNldF9pZHMpLFxuIDg0OTpcdFx0Lm1paWNfd3JpdGUgPSBtaWljX3JlZ193cml0ZWxfbG9ja2VkLFxuIDg1MDpcdFx0LnR5cGUgPSBNSUlDX1RZUEVfUlpUMkgsXG4gODUxOlx0fTtcbiA4NTI6XHRcbiA4NTM6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtaWljX29mX210YWJsZVtdID0ge1xuIDg1NDpcdFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlbmVzYXMscjlhMDlnMDc3LW1paWNcJiMzNDssIC5kYXRhID0gXHUwMDI2cnp0MmhfbWlpY19vZl9kYXRhIH0sXG4gODU1Olx0XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cmVuZXNhcyxyem4xLW1paWNcJiMzNDssIC5kYXRhID0gXHUwMDI2cnpuMV9taWljX29mX2RhdGEgfSxcbiA4NTY6XHRcdHsgLyogc2VudGluZWwgKi8gfVxuIDg1NzpcdH07XG4gODU4Olx0TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbWlpY19vZl9tdGFibGUpO1xuIDg1OTpcdFxuIDg2MDpcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1paWNfZHJpdmVyID0ge1xuIDg2MTpcdFx0LmRyaXZlciA9IHtcbiA4NjI6XHRcdFx0Lm5hbWVcdCA9IFwmIzM0O3J6bjFfbWlpY1wmIzM0OyxcbiA4NjM6XHRcdFx0LnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLFxuIDg2NDpcdFx0XHQub2ZfbWF0Y2hfdGFibGUgPSBtaWljX29mX210YWJsZSxcbiA4NjU6XHRcdH0sXG4gODY2Olx0XHQucHJvYmUgPSBtaWljX3Byb2JlLFxuIDg2NzpcdFx0LnJlbW92ZSA9IG1paWNfcmVtb3ZlLFxuIDg2ODpcdH07XG4gODY5Olx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtaWljX2RyaXZlcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTQ3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYG1paWNfZHJpdmVyYCBhbmQgaXRzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgbWlpY19kcml2ZXJgLiBTZWVtcyBsaWtlIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLCB1c2luZyBhbiBPRiBtYXRjaCB0YWJsZSwgc3BlY2lmaWNhbGx5IGZvciBSZW5lc2FzIFNvQ3MgbGlrZSB0aGUgUlovTjEgYW5kIFJaL1QySCwgd2l0aCB0aGF0IGByZW5lc2FzLHI5YTA5ZzA3Ny1taWljYCBhbmQgYHJlbmVzYXMscnpuMS1taWljYCBjb21wYXRpYmlsaXR5IHN0cmluZ3MuIFRoZSBgLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlYCBiaXQgY2F0Y2hlcyBteSBleWUg4oCTIGludGVyZXN0aW5nLgoKVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciB0aGlzIGhhcmR3YXJlLCBhbmQgYnkgZXh0ZW5zaW9uIHRoaXMgZHJpdmVyLCBpcyBldmVuIGFjY2Vzc2libGUgd2l0aGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFdlIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyBwcmFjdGljYWxseSBmdXp6YWJsZS4KClRoYXQgdGFrZXMgbWUgdG8gdGhlIHJ1bGVzZXQ6IGl0JiMzOTtzIGEgbm8tZ28gaWYgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIHNldHVwcywgZXZlbiBpZiB0aGUgaGFyZHdhcmUgaXMgc29mdHdhcmUtZW11bGF0ZWQuIFZlbmRvci1zcGVjaWZpYyBzdHVmZiByZXF1aXJpbmcgYWN0dWFsIFBDSWUgY2FyZHMgaXMgYWxzbyBvZmYgdGhlIHRhYmxlLiBUaGlzIGRyaXZlciBjb3VsZCBiZSBpbiB0cm91YmxlLgoKU28sIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGlzIGluc3RhbnRpYXRlZCBvciB1c2VkLiBJJiMzOTtsbCBjaGVjayB0byBzZWUgaWYgYHBjcy1yem4xLW1paWNgIGlzIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2UuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgYGdyZXBgIGZvciBgbWlpY19jcmVhdGVgIG9yIGFueSByZWxldmFudCBleHBvcnRzL2Z1bmN0aW9ucyB3aXRoaW4gYHBjcy1yem4xLW1paWMuY2AuIFRoYXQgc2hvdWxkIHJldmVhbCB0aGUgaW50ZXJhY3Rpb24gcG9pbnRzIGFuZCB3aGV0aGVyIGl0JiMzOTtzIHRpZWQgdG8gc29tZSBkZWVwbHkgc3BlY2lmaWMgaGFyZHdhcmUsIG9yIGlmIHRoZXJlJiMzOTtzIGEgY2hhbmNlIG9mIHRyaWdnZXJpbmcgaXQgd2l0aG91dCBhIHBoeXNpY2FsIFJlbmVzYXMgc2V0dXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21paWNfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM9MTE0Nz1zdGF0aWMgdm9pZCBhNXBzd19wY3NfZnJlZShzdHJ1Y3QgYTVwc3cgKmE1cHN3KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE1Mi1cdFx0aWYgKGE1cHN3LVx1MDAzZXBjc1tpXSlcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM6MTE1MzpcdFx0XHRtaWljX2Rlc3Ryb3koYTVwc3ctXHUwMDNlcGNzW2ldKTtcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE1NC1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTExNTc9c3RhdGljIGludCBhNXBzd19wY3NfZ2V0KHN0cnVjdCBhNXBzdyAqYTVwc3cpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTgyLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYzoxMTgzOlx0XHRwY3MgPSBtaWljX2NyZWF0ZShhNXBzdy1cdTAwM2VkZXYsIHBjc19ub2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE4NC1cdFx0aWYgKElTX0VSUihwY3MpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTYzPXN0YXRpYyBpbnQgcmVuZXNhc19nbWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtNzAtXHRpZiAocGNzX25vZGUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzo3MTpcdFx0cGNzID0gbWlpY19jcmVhdGUocHJpdi1cdTAwM2VkZXZpY2UsIHBjc19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy03Mi1cdFx0b2Zfbm9kZV9wdXQocGNzX25vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz04Mj1zdGF0aWMgdm9pZCByZW5lc2FzX2dtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy04NC1cdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjg1Olx0XHRtaWljX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtODYtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYz0xNj1zdGF0aWMgaW50IHJ6bjFfZHdtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy0yNC1cdGlmIChwY3Nfbm9kZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjI1Olx0XHRwY3MgPSBtaWljX2NyZWF0ZShwcml2LVx1MDAzZWRldmljZSwgcGNzX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTI2LVx0XHRvZl9ub2RlX3B1dChwY3Nfbm9kZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTM2PXN0YXRpYyB2b2lkIHJ6bjFfZHdtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy0zOC1cdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjM5Olx0XHRtaWljX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNDAtfVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM9MTc3PXN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgcnp0MmhfcmVzZXRfaWRzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0xODItLyoqXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjE4MzogKiBzdHJ1Y3QgbWlpY19waHlfbGlua19jZmcgLSBNSUlDIFBIWV9MSU5LIGNvbmZpZ3VyYXRpb25cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMTg0LSAqIEBtYXNrOiBNYXNrIG9mIHBoeV9saW5rIGJpdHNcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE4Ni0gKi9cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MTg3OnN0cnVjdCBtaWljX3BoeV9saW5rX2NmZyB7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE4OC1cdHUzMiBtYXNrO1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM9MjAxPXN0cnVjdCBtaWljIHtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIwNS1cdHN0cnVjdCByZXNldF9jb250cm9sX2J1bGtfZGF0YSByc3RzW01JSUNfTUFYX05VTV9SU1RTXTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjA2Olx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjA3Olx0c3RydWN0IG1paWNfcGh5X2xpbmtfY2ZnIGxpbmtfY2ZnO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMDgtfTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjA5LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyMTA6ZW51bSBtaWljX3R5cGUge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMTEtXHRNSUlDX1RZUEVfUlpOMSxcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIxNS0vKipcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjE2OiAqIHN0cnVjdCBtaWljX29mX2RhdGEgLSBPRiBkYXRhIGZvciBNSUkgY29udmVydGVyXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIxNy0gKiBAbWF0Y2hfdGFibGU6IE1hdGNoaW5nIHRhYmxlIGZvciBjb252Y3RybCBjb25maWd1cmF0aW9uXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMjMtICogQGluZGV4X3RvX3N0cmluZ19jb3VudDogTnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGluZGV4X3RvX3N0cmluZyBhcnJheVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyMjQ6ICogQG1paWNfcG9ydF9zdGFydDogTUlJQyBwb3J0IHN0YXJ0IG51bWJlclxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyMjU6ICogQG1paWNfcG9ydF9tYXg6IE1heGltdW0gTUlJQyBzdXBwb3J0ZWRcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjI2LSAqIEBzd19tb2RlX21hc2s6IFN3aXRjaCBtb2RlIG1hc2tcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIzMC0gKiAgYmVmb3JlIGFjY2Vzcy5cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjMxOiAqIEBtaWljX3dyaXRlOiBGdW5jdGlvbiBwb2ludGVyIHRvIHdyaXRlIGEgdmFsdWUgdG8gYSBNSUlDIHJlZ2lzdGVyXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIzMi0gKiBAdHlwZTogVHlwZSBvZiBNSUlDXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIzMy0gKi9cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjM0OnN0cnVjdCBtaWljX29mX2RhdGEge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMzUtXHRzdHJ1Y3QgbW9kY3RybF9tYXRjaCAqbWF0Y2hfdGFibGU7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNDEtXHR1OCBpbmRleF90b19zdHJpbmdfY291bnQ7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI0MjpcdHU4IG1paWNfcG9ydF9zdGFydDtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjQzOlx0dTggbWlpY19wb3J0X21heDtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjQ0LVx0dTggc3dfbW9kZV9tYXNrO1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjQ3LVx0Ym9vbCBpbml0X3VubG9ja19sb2NrX3JlZ3M7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI0ODpcdHZvaWQgKCptaWljX3dyaXRlKShzdHJ1Y3QgbWlpYyAqbWlpYywgaW50IG9mZnNldCwgdTMyIHZhbHVlKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjQ5Olx0ZW51bSBtaWljX3R5cGUgdHlwZTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjUwLX07XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNTItLyoqXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI1MzogKiBzdHJ1Y3QgbWlpY19wb3J0IC0gUGVyIHBvcnQgTUlJIGNvbnZlcnRlciBzdHJ1Y3RcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjU0LSAqIEBtaWljOiBiYWNraWxpbmcgdG8gTUlJIGNvbnZlcnRlciBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI1OC0gKi9cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjU5OnN0cnVjdCBtaWljX3BvcnQge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNjAtXHRzdHJ1Y3QgbWlpYyAqbWlpYztcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI2NS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjY2OnN0YXRpYyBzdHJ1Y3QgbWlpY19wb3J0ICpwaHlsaW5rX3Bjc190b19taWljX3BvcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI2Ny17XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI2ODpcdHJldHVybiBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgbWlpY19wb3J0LCBwY3MpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNjktfVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNzAtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI3MTpzdGF0aWMgdm9pZCBtaWljX3VubG9ja19yZWdzKHN0cnVjdCBtaWljICptaWljKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNzIte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjc5LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyODA6c3RhdGljIHZvaWQgbWlpY19sb2NrX3JlZ3Moc3RydWN0IG1paWMgKm1paWMpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI4MS17XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yODUtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI4NjpzdGF0aWMgdm9pZCBtaWljX3JlZ193cml0ZWxfdW5sb2NrZWQoc3RydWN0IG1paWMgKm1paWMsIGludCBvZmZzZXQsIHUzMiB2YWx1ZSlcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjg3LXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI5MC1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjkxOnN0YXRpYyB2b2lkIG1paWNfcmVnX3dyaXRlbF9sb2NrZWQoc3RydWN0IG1paWMgKm1paWMsIGludCBvZmZzZXQsIHUzMiB2YWx1ZSlcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjkyLXtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjkzOlx0bWlpY191bmxvY2tfcmVncyhtaWljKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjk0LVx0d3JpdGVsKHZhbHVlLCBtaWljLVx1MDAzZWJhc2UgJiM0Mzsgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mjk1Olx0bWlpY19sb2NrX3JlZ3MobWlpYyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI5Ni19XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI5Ny1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mjk4OnN0YXRpYyB2b2lkIG1paWNfcmVnX3dyaXRlbChzdHJ1Y3QgbWlpYyAqbWlpYywgaW50IG9mZnNldCwgdTMyIHZhbHVlKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTkte1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMDA6XHRtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlbWlpY193cml0ZShtaWljLCBvZmZzZXQsIHZhbHVlKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzAxLX1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzAyLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMDM6c3RhdGljIHUzMiBtaWljX3JlZ19yZWFkbChzdHJ1Y3QgbWlpYyAqbWlpYywgaW50IG9mZnNldClcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzA0LXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMwNy1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzA4OnN0YXRpYyB2b2lkIG1paWNfcmVnX3JtdyhzdHJ1Y3QgbWlpYyAqbWlpYywgaW50IG9mZnNldCwgdTMyIG1hc2ssIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMwOS17XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMTMtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMxNDpcdHJlZyA9IG1paWNfcmVnX3JlYWRsKG1paWMsIG9mZnNldCk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMxNS1cdHJlZyBcdTAwMjY9IH5tYXNrO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMTYtXHRyZWcgfD0gdmFsO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMTc6XHRtaWljX3JlZ193cml0ZWwobWlpYywgb2Zmc2V0LCByZWcpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMTgtXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMjEtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMyMjpzdGF0aWMgdm9pZCBtaWljX2NvbnZlcnRlcl9lbmFibGUoc3RydWN0IG1paWMgKm1paWMsIGludCBwb3J0LCBpbnQgZW5hYmxlKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMjMte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzI4LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMjk6XHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19DT05WUlNULCBNSUlDX0NPTlZSU1RfUEhZSUZfUlNUKHBvcnQpLCB2YWwpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMzAtfVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMzEtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMzMjpzdGF0aWMgaW50IG1paWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMzMy1cdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMzUte1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMzY6XHRzdHJ1Y3QgbWlpY19wb3J0ICptaWljX3BvcnQgPSBwaHlsaW5rX3Bjc190b19taWljX3BvcnQocGNzKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzM3Olx0c3RydWN0IG1paWMgKm1paWMgPSBtaWljX3BvcnQtXHUwMDNlbWlpYztcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzM4LVx0dTMyIHNwZWVkLCBjb252X21vZGUsIHZhbCwgbWFzaztcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzM5Olx0aW50IHBvcnQgPSBtaWljX3BvcnQtXHUwMDNlcG9ydDtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzQwLVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzcwLVx0ICovXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM3MTpcdGlmIChpbnRlcmZhY2UgIT0gbWlpY19wb3J0LVx1MDAzZWludGVyZmFjZSkge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zNzItXHRcdHZhbCB8PSBGSUVMRF9QUkVQKE1JSUNfQ09OVkNUUkxfQ09OVl9TUEVFRCwgc3BlZWQpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zNzMtXHRcdG1hc2sgfD0gTUlJQ19DT05WQ1RSTF9DT05WX1NQRUVEO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozNzQ6XHRcdG1paWNfcG9ydC1cdTAwM2VpbnRlcmZhY2UgPSBpbnRlcmZhY2U7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM3NS1cdH1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzc2LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozNzc6XHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19DT05WQ1RSTChwb3J0KSwgbWFzaywgdmFsKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mzc4Olx0bWlpY19jb252ZXJ0ZXJfZW5hYmxlKG1paWMsIG1paWNfcG9ydC1cdTAwM2Vwb3J0LCAxKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzc5LVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzgyLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozODM6c3RhdGljIHZvaWQgbWlpY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM4NC1cdFx0XHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwgaW50IHNwZWVkLCBpbnQgZHVwbGV4KVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zODUte1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozODY6XHRzdHJ1Y3QgbWlpY19wb3J0ICptaWljX3BvcnQgPSBwaHlsaW5rX3Bjc190b19taWljX3BvcnQocGNzKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mzg3Olx0c3RydWN0IG1paWMgKm1paWMgPSBtaWljX3BvcnQtXHUwMDNlbWlpYztcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzg4LVx0dTMyIGNvbnZfc3BlZWQgPSAwLCB2YWwgPSAwO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozODk6XHRpbnQgcG9ydCA9IG1paWNfcG9ydC1cdTAwM2Vwb3J0O1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zOTAtXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MTItXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQxMzpcdG1paWNfcmVnX3JtdyhtaWljLCBNSUlDX0NPTlZDVFJMKHBvcnQpLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MTQtXHRcdCAgICAgKE1JSUNfQ09OVkNUUkxfQ09OVl9TUEVFRCB8IE1JSUNfQ09OVkNUUkxfRlVMTEQpLCB2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDE2LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0MTc6c3RhdGljIGludCBtaWljX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MTgte1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0MTk6XHRzdHJ1Y3QgbWlpY19wb3J0ICptaWljX3BvcnQgPSBwaHlsaW5rX3Bjc190b19taWljX3BvcnQocGNzKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDIwOlx0c3RydWN0IG1paWMgKm1paWMgPSBtaWljX3BvcnQtXHUwMDNlbWlpYztcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDIxLVx0dTMyIHZhbCwgbWFzaztcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQyOS1cdFx0ICovXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQzMDpcdFx0bWlpY19wb3J0LVx1MDAzZWludGVyZmFjZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MzEtXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MzUtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQzNjpcdFx0bWlpY19yZWdfcm13KG1paWMsIE1JSUNfQ09OVkNUUkwobWlpY19wb3J0LVx1MDAzZXBvcnQpLCBtYXNrLCB2YWwpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MzctXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQzODpcdFx0bWlpY19jb252ZXJ0ZXJfZW5hYmxlKG1paWMsIG1paWNfcG9ydC1cdTAwM2Vwb3J0LCAxKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDM5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDQzLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0NDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgbWlpY19waHlsaW5rX29wcyA9IHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDQ1Olx0LnBjc19jb25maWcgPSBtaWljX2NvbmZpZyxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDQ2Olx0LnBjc19saW5rX3VwID0gbWlpY19saW5rX3VwLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0NDc6XHQucGNzX3ByZV9pbml0ID0gbWlpY19wcmVfaW5pdCxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDQ4LX07XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ0OS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDUwOnN0cnVjdCBwaHlsaW5rX3BjcyAqbWlpY19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00NTEte1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0NTI6XHRjb25zdCBzdHJ1Y3QgbWlpY19vZl9kYXRhICpvZl9kYXRhO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00NTMtXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2O1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0NTQ6XHRzdHJ1Y3QgbWlpY19wb3J0ICptaWljX3BvcnQ7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ1NS1cdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25wO1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDg0LVx0b2ZfZGF0YSA9IG1paWMtXHUwMDNlb2ZfZGF0YTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDg1Olx0aWYgKHBvcnQgXHUwMDNlIG9mX2RhdGEtXHUwMDNlbWlpY19wb3J0X21heCB8fCBwb3J0IFx1MDAzYyBvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9zdGFydCkge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00ODYtXHRcdHB1dF9kZXZpY2UoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDg5LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0OTA6XHRtaWljX3BvcnQgPSBremFsbG9jX29iaigqbWlpY19wb3J0KTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDkxOlx0aWYgKCFtaWljX3BvcnQpIHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDkyLVx0XHRwdXRfZGV2aWNlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ5OC1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDk5Olx0bWlpY19wb3J0LVx1MDAzZW1paWMgPSBtaWljO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MDA6XHRtaWljX3BvcnQtXHUwMDNlcG9ydCA9IHBvcnQgLSBvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9zdGFydDtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTAxOlx0bWlpY19wb3J0LVx1MDAzZXBjcy5vcHMgPSBcdTAwMjZtaWljX3BoeWxpbmtfb3BzO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MDItXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwMzpcdHBoeV9pbnRlcmZhY2Vfc2V0X3JnbWlpKG1paWNfcG9ydC1cdTAwM2VwY3Muc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MDQ6XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUksIG1paWNfcG9ydC1cdTAwM2VwY3Muc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MDU6XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX01JSSwgbWlpY19wb3J0LVx1MDAzZXBjcy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUwNi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTA3Olx0cmV0dXJuIFx1MDAyNm1paWNfcG9ydC1cdTAwM2VwY3M7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUwOC19XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwOTpFWFBPUlRfU1lNQk9MKG1paWNfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTEwLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MTE6dm9pZCBtaWljX2Rlc3Ryb3koc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUxMi17XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUxMzpcdHN0cnVjdCBtaWljX3BvcnQgKm1paWNfcG9ydCA9IHBoeWxpbmtfcGNzX3RvX21paWNfcG9ydChwY3MpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MTQtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUxNTpcdG1paWNfY29udmVydGVyX2VuYWJsZShtaWljX3BvcnQtXHUwMDNlbWlpYywgbWlpY19wb3J0LVx1MDAzZXBvcnQsIDApO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MTY6XHRrZnJlZShtaWljX3BvcnQpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MTctfVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MTg6RVhQT1JUX1NZTUJPTChtaWljX2Rlc3Ryb3kpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MTktXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUyMDpzdGF0aWMgaW50IG1paWNfaW5pdF9odyhzdHJ1Y3QgbWlpYyAqbWlpYywgdTMyIGNmZ19tb2RlKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MjEte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTI5LVx0aWYgKG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2Vpbml0X3VubG9ja19sb2NrX3JlZ3MpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUzMDpcdFx0bWlpY191bmxvY2tfcmVncyhtaWljKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTMxLVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTM0LVx0ICovXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUzNTpcdG1paWNfcmVnX3dyaXRlbChtaWljLCBNSUlDX01PRENUUkwsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUzNi1cdFx0XHQoKGNmZ19tb2RlIFx1MDAzY1x1MDAzYyBfX2Zmcyhzd19tb2RlX21hc2spKSBcdTAwMjYgc3dfbW9kZV9tYXNrKSk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUzNy1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTM4Olx0Zm9yIChwb3J0ID0gMDsgcG9ydCBcdTAwM2MgbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9tYXg7IHBvcnQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUzOTpcdFx0bWlpY19jb252ZXJ0ZXJfZW5hYmxlKG1paWMsIHBvcnQsIDApO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NDAtXHRcdC8qIERpc2FibGUgc3BlZWQvZHVwbGV4IGNvbnRyb2wgZnJvbSB0aGVzZSByZWdpc3RlcnMsIGRhdGFzaGVldFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTQzLVx0XHQgKi9cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTQ0Olx0XHRtaWljX3JlZ193cml0ZWwobWlpYywgTUlJQ19TV0NUUkwsIDB4MCk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU0NTpcdFx0bWlpY19yZWdfd3JpdGVsKG1paWMsIE1JSUNfU1dEVVBDLCAweDApO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NDYtXHR9XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NTAtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU1MTpzdGF0aWMgYm9vbCBtaWljX21vZGN0cmxfbWF0Y2goczggKnRhYmxlX3ZhbCwgczggKmR0X3ZhbCwgdTggY291bnQpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU1Mi17XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NjUtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU2NjpzdGF0aWMgdm9pZCBtaWljX2R1bXBfY29uZihzdHJ1Y3QgbWlpYyAqbWlpYywgczggKmNvbmYpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU2Ny17XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU2ODpcdGNvbnN0IHN0cnVjdCBtaWljX29mX2RhdGEgKm9mX2RhdGEgPSBtaWljLVx1MDAzZW9mX2RhdGE7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU2OS1cdGNvbnN0IGNoYXIgKmNvbmZfbmFtZTtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU4Mi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTgzOnN0YXRpYyBpbnQgbWlpY19tYXRjaF9kdF9jb25mKHN0cnVjdCBtaWljICptaWljLCBzOCAqZHRfdmFsLCB1MzIgKm1vZGVfY2ZnKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01ODQte1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1ODU6XHRjb25zdCBzdHJ1Y3QgbWlpY19vZl9kYXRhICpvZl9kYXRhID0gbWlpYy1cdTAwM2VvZl9kYXRhO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01ODYtXHRzdHJ1Y3QgbW9kY3RybF9tYXRjaCAqdGFibGVfZW50cnk7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01OTEtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU5MjpcdFx0aWYgKG1paWNfbW9kY3RybF9tYXRjaCh0YWJsZV9lbnRyeS1cdTAwM2Vjb252LCBkdF92YWwsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU5My1cdFx0XHRcdCAgICAgICBtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlY29uZl9jb252X2NvdW50KSkge1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTk5LVx0ZGV2X2VycihtaWljLVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGFwcGx5IHJlcXVlc3RlZCBjb25maWd1cmF0aW9uXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NjAwOlx0bWlpY19kdW1wX2NvbmYobWlpYywgZHRfdmFsKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjAxLVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjA0LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo2MDU6c3RhdGljIHZvaWQgbWlpY19jb25maWd1cmVfcGh5X2xpbmsoc3RydWN0IG1paWMgKm1paWMsIHUzMiBjb25mLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy02MDYtXHRcdFx0XHQgICAgdTMyIHBvcnQsIGJvb2wgYWN0aXZlX2xvdylcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTY3Mi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NjczOnN0YXRpYyBpbnQgbWlpY19wYXJzZV9kdChzdHJ1Y3QgbWlpYyAqbWlpYywgdTMyICptb2RlX2NmZylcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjc0LXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTY5NC1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Njk1Olx0XHRpZiAocG9ydCBcdTAwM2MgbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9zdGFydCB8fCBwb3J0IFx1MDAzZSBtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlbWlpY19wb3J0X21heCkge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy02OTYtXHRcdFx0ZGV2X2VycihtaWljLVx1MDAzZWRldiwgXCYjMzQ7UG9ydCBudW1iZXIgb3V0IG9mIHJhbmdlOiAlZFxcblwmIzM0OywgcG9ydCk7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MDMtXHRcdC8qIEFkanVzdCBmb3IgMCBiYXNlZCBpbmRleCAqL1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3MDQ6XHRcdGR0X3ZhbFtwb3J0ICYjNDM7ICFtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlbWlpY19wb3J0X3N0YXJ0XSA9IGNvbmY7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcwNS1cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcwNy1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzA4Olx0XHRtaWljX2NvbmZpZ3VyZV9waHlfbGluayhtaWljLCBjb25mLCBwb3J0LCBhY3RpdmVfbG93KTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzA5LVx0fVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MTAtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjcxMTpcdHJldCA9IG1paWNfbWF0Y2hfZHRfY29uZihtaWljLCBkdF92YWwsIG1vZGVfY2ZnKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzEyLVx0a2ZyZWUoZHRfdmFsKTtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcxNi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzE3OnN0YXRpYyB2b2lkIG1paWNfcmVzZXRfY29udHJvbF9idWxrX2Fzc2VydCh2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MTgte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzI2LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3Mjc6c3RhdGljIGludCBtaWljX3Jlc2V0X2NvbnRyb2xfaW5pdChzdHJ1Y3QgbWlpYyAqbWlpYylcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzI4LXtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzI5Olx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YSA9IG1paWMtXHUwMDNlb2ZfZGF0YTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzMwLVx0c3RydWN0IGRldmljZSAqZGV2ID0gbWlpYy1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03NTAtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjc1MTpcdHJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIG1paWNfcmVzZXRfY29udHJvbF9idWxrX2Fzc2VydCxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzUyLVx0XHRcdFx0ICAgICAgIG1paWMpO1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzU4LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3NTk6c3RhdGljIGludCBtaWljX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc2MC17XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03NzItXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjc3MzpcdHJldCA9IG1paWNfcGFyc2VfZHQobWlpYywgXHUwMDI2bW9kZV9jZmcpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03NzQtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzgxLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3ODI6XHRyZXQgPSBtaWljX3Jlc2V0X2NvbnRyb2xfaW5pdChtaWljKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzgzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc5My1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Nzk0Olx0cmV0ID0gbWlpY19pbml0X2h3KG1paWMsIG1vZGVfY2ZnKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzk1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc5Ny1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Nzk4Olx0bWlpY19yZWdfcm13KG1paWMsIE1JSUNfUEhZX0xJTkssIG1paWMtXHUwMDNlbGlua19jZmcubWFzaywgbWlpYy1cdTAwM2VsaW5rX2NmZy52YWwpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03OTktXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgwMDpcdC8qIG1paWNfY3JlYXRlKCkgcmVsaWVzIG9uIHRoYXQgZmFjdCB0aGF0IGRhdGEgYXJlIGF0dGFjaGVkIHRvIHRoZVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MDEtXHQgKiBwbGF0Zm9ybSBkZXZpY2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBkcml2ZXIgaXMgcmVhZHkgc28gdGhpcyBuZWVkcyB0b1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODE0LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4MTU6c3RhdGljIHZvaWQgbWlpY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODE2LXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgxOS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODIwOnN0YXRpYyBzdHJ1Y3QgbWlpY19vZl9kYXRhIHJ6bjFfbWlpY19vZl9kYXRhID0ge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MjEtXHQubWF0Y2hfdGFibGUgPSBtb2RjdHJsX21hdGNoX3RhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODI3LVx0LmluZGV4X3RvX3N0cmluZ19jb3VudCA9IEFSUkFZX1NJWkUoaW5kZXhfdG9fc3RyaW5nKSxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODI4Olx0Lm1paWNfcG9ydF9zdGFydCA9IDEsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgyOTpcdC5taWljX3BvcnRfbWF4ID0gNSxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODMwLVx0LnN3X21vZGVfbWFzayA9IEdFTk1BU0soNCwgMCksXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgzMS1cdC5pbml0X3VubG9ja19sb2NrX3JlZ3MgPSB0cnVlLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4MzI6XHQubWlpY193cml0ZSA9IG1paWNfcmVnX3dyaXRlbF91bmxvY2tlZCxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODMzLVx0LnR5cGUgPSBNSUlDX1RZUEVfUlpOMSxcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgzNS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODM2OnN0YXRpYyBzdHJ1Y3QgbWlpY19vZl9kYXRhIHJ6dDJoX21paWNfb2ZfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODM3LVx0Lm1hdGNoX3RhYmxlID0gcnp0MmhfbW9kY3RybF9tYXRjaF90YWJsZSxcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg0My1cdC5pbmRleF90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKHJ6dDJoX2luZGV4X3RvX3N0cmluZyksXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg0NDpcdC5taWljX3BvcnRfc3RhcnQgPSAwLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NDU6XHQubWlpY19wb3J0X21heCA9IDQsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg0Ni1cdC5zd19tb2RlX21hc2sgPSBHRU5NQVNLKDIsIDApLFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODQ4LVx0LnJlc2V0X2NvdW50ID0gQVJSQVlfU0laRShyenQyaF9yZXNldF9pZHMpLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NDk6XHQubWlpY193cml0ZSA9IG1paWNfcmVnX3dyaXRlbF9sb2NrZWQsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg1MC1cdC50eXBlID0gTUlJQ19UWVBFX1JaVDJILFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODUyLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NTM6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWlpY19vZl9tdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODU0Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlbmVzYXMscjlhMDlnMDc3LW1paWNcJiMzNDssIC5kYXRhID0gXHUwMDI2cnp0MmhfbWlpY19vZl9kYXRhIH0sXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg1NTpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZW5lc2FzLHJ6bjEtbWlpY1wmIzM0OywgLmRhdGEgPSBcdTAwMjZyem4xX21paWNfb2ZfZGF0YSB9LFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NTYtXHR7IC8qIHNlbnRpbmVsICovIH1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODU3LX07XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg1ODpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtaWljX29mX210YWJsZSk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg1OS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODYwOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1paWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NjEtXHQuZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODYzLVx0XHQuc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWUsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg2NDpcdFx0Lm9mX21hdGNoX3RhYmxlID0gbWlpY19vZl9tdGFibGUsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg2NS1cdH0sXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg2NjpcdC5wcm9iZSA9IG1paWNfcHJvYmUsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg2NzpcdC5yZW1vdmUgPSBtaWljX3JlbW92ZSxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODY4LX07XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg2OTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1paWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODcwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQ3NgoJCQkJCQkJb3V0cHV0OiAxMDgKCQkJCQkJCXRob3VnaHRzOiA4MDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgYHBjcy1yem4xLW1paWMuY2AgYW5kIEZ1enppbmcgRmVhc2liaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGBwY3MtcnpuMS1taWljLmNgIGlzIGEgZHJpdmVyIGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbXBvbmVudDogYSBQaHlzaWNhbCBDb2RpbmcgU3VibGF5ZXIgKFBDUykgLyBNZWRpYSBJbmRlcGVuZGVudCBJbnRlcmZhY2UgKE1JSSkgY29udmVydGVyLCBidXQgKm9ubHkqIGZvciBSZW5lc2FzIFJaL04xLCBSWi9OMkgsIGFuZCBSWi9UMkggU29Dcy4gVGhpcyBpcyBpbXBvcnRhbnQuIEl0JiMzOTtzIHByb2JlZCB0aHJvdWdoIHRoZSBkZXZpY2UgdHJlZSwgYW5kIGltcG9ydGFudGx5LCB0aGUgYmluZGluZyBpcyBzdXBwcmVzc2VkLCBtZWFuaW5nIGl0JiMzOTtzIHRpZWQgdG8gdGhpcyB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGVudmlyb25tZW50LiBJdCYjMzk7cyBub3QgZHluYW1pY2FsbHkgbG9hZGFibGUgdGhyb3VnaCBzeXNmcywgYW5kIHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIGxpa2UgUUVNVSBvciBHQ0UgKmRvZXNuJiMzOTt0KiBlbXVsYXRlIHRoZSBSZW5lc2FzIFJaL04xIE1JSUMgaGFyZHdhcmUuIFRoZXJlZm9yZSwgdGhlIGNvZGUgcGF0aHMgd2l0aGluIGBtaWljX3Byb2JlYCBhbmQgY29uc2VxdWVudGx5IGBtaWljX3BhcnNlX2R0YCBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiB0aGVzZSB0eXBpY2FsIGZ1enppbmcgc2V0dXBzLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuCgpOb3csIGxldCYjMzk7cyBjb21wYXJlIHRoaXMgdG8gdGhlIGZ1enppbmcgZ3VpZGVsaW5lcy4gVGhlIGtleSBwb2ludCBoZXJlIGlzOiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4mIzM0OyBUaGlzICpkaXJlY3RseSogYXBwbGllcyB0byB0aGlzIGRyaXZlci4KCkkmIzM5O3ZlIGV4YW1pbmVkIHRoZSBzcGVjaWZpYyBwYXRjaC4gVGhlIG1vZGlmaWNhdGlvbnMgYXJlIHdpdGhpbiBgbWlpY19wYXJzZV9kdGA6IHplcm9pbmcgYSBkYXRhIHN0cnVjdHVyZSBhbmQgYWRkaW5nIGEgcG9ydCByYW5nZSBjaGVjay4gVGhlIGNydWNpYWwgdGhpbmcgaXMgdGhhdCBgbWlpY19wYXJzZV9kdGAgaXMgKm9ubHkqIGNhbGxlZCBmcm9tIGBtaWljX3Byb2JlYCwgd2hpY2gsIGFzIHdlIGVzdGFibGlzaGVkLCBpcyAqb25seSogaW52b2tlZCBkdXJpbmcgYSBwbGF0Zm9ybSBkZXZpY2UgcHJvYmUgZm9yIHRoaXMgc3BlY2lmaWMgUmVuZXNhcyBNSUkgY29udmVydGVyIGhhcmR3YXJlIGluIGEgZGV2aWNlIHRyZWUgc2V0dXAuIFRoaXMgY29uZmlybXMgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LgoKVGhlcmVmb3JlLCBhcHBseWluZyB0aGVzZSBndWlkZWxpbmVzLCB0aGVyZSBpcyBubyB2YWx1ZSBpbiB0YXJnZXRpbmcgdGhpcyBzcGVjaWZpYyBkcml2ZXIgZm9yIGZ1enppbmcuIFRoZSBwYXRjaCBpcyBub3QgcmVsZXZhbnQgZm9yIG15IGFyZWEgb2YgZXhwZXJ0aXNlLgoKTXkgY29uY2x1c2lvbiBpczoKCi0gICAqKldvcnRoRnV6emluZzogZmFsc2UqKgotICAgKipGb2N1c1N5bWJvbHM6IFxbIF0qKgotICAgKipFbmFibGVDb25maWdzOiBcWyBdKioKLSAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBtb2RpZmllcyBEZXZpY2UgVHJlZSAoRFQpIHBhcnNpbmcgaW4gdGhlIFJlbmVzYXMgUlovTjEgLyBSWi9UMkggUENTIChNSUkgY29udmVydGVyKSBwbGF0Zm9ybSBkcml2ZXIgKGBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jYCkuIFRoaXMgaGFyZHdhcmUgaXMgc3BlY2lmaWMgdG8gUmVuZXNhcyBTb0NzIGFuZCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIG9yIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoaXMgbWFrZXMgdGhlIHBhdGNoIHVuaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIGFzIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgRGV2aWNlIFRyZWUgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBpbiB0aGUgUmVuZXNhcyBSWi9OMS9UMkggTUlJIENvbnZlcnRlciAoUENTKSBwbGF0Zm9ybSBkcml2ZXIgKGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMpLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBSZW5lc2FzIFNvQyBoYXJkd2FyZSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBEZXZpY2UgVHJlZSBwYXJzaW5nIGFuZCB2YWxpZGF0aW9uIGluIHRoZSBSZW5lc2FzIFJaL04xL1QySCBNSUkgQ29udmVydGVyIChQQ1MpIHBsYXRmb3JtIGRyaXZlciAoZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYykuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIFJlbmVzYXMgU29DIGhhcmR3YXJlIGFuZCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIG9yIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNTozMzozNS42ODA4MjkwMzFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDY3MzE0OTM1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIERldmljZSBUcmVlIHBhcnNpbmcgYW5kIHZhbGlkYXRpb24gaW4gdGhlIFJlbmVzYXMgUlovTjEvVDJIIE1JSSBDb252ZXJ0ZXIgKFBDUykgcGxhdGZvcm0gZHJpdmVyIChkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jKS4gVGhpcyBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gUmVuZXNhcyBTb0MgaGFyZHdhcmUgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDU6MzM6MzUuNjgwODMzNTkxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDI0MDU4NTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTk4MTQ3NGUzNDUxYTBlMjIzMjEyNDdjN2M4YmVlMTg5NTJkMWMwY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDA1OjMzOjMzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jXFxuaW5kZXggMmI3MmZhOThkZGYxMy4uZWJkNzNlZDYzODk2NiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1xcbkBAIC02ODMsNyArNjgzLDcgQEAgc3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKVxcbiBcXHRpZiAoIWR0X3ZhbClcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHRtZW1zZXQoZHRfdmFsLCBNSUlDX01PRENUUkxfQ09ORl9OT05FLCBzaXplb2YoKmR0X3ZhbCkpO1xcbitcXHRtZW1zZXQoZHRfdmFsLCBNSUlDX01PRENUUkxfQ09ORl9OT05FLCBzaXplb2YoKmR0X3ZhbCkgKiBtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2Vjb25mX2NvbnZfY291bnQpO1xcbiBcXG4gXFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcXFwicmVuZXNhcyxtaWljLXN3aXRjaC1wb3J0aW5cXFwiLCBcXHUwMDI2Y29uZikgPT0gMClcXG4gXFx0XFx0ZHRfdmFsWzBdID0gY29uZjtcXG5AQCAtNjkyLDYgKzY5MiwxMSBAQCBzdGF0aWMgaW50IG1paWNfcGFyc2VfZHQoc3RydWN0IG1paWMgKm1paWMsIHUzMiAqbW9kZV9jZmcpXFxuIFxcdFxcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCBcXFwicmVnXFxcIiwgXFx1MDAyNnBvcnQpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuK1xcdFxcdGlmIChwb3J0IFxcdTAwM2MgbWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X3N0YXJ0IHx8IHBvcnQgXFx1MDAzZSBtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2VtaWljX3BvcnRfbWF4KSB7XFxuK1xcdFxcdFxcdGRldl9lcnIobWlpYy1cXHUwMDNlZGV2LCBcXFwiUG9ydCBudW1iZXIgb3V0IG9mIHJhbmdlOiAlZFxcXFxuXFxcIiwgcG9ydCk7XFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoY29udiwgXFxcInJlbmVzYXMsbWlpYy1pbnB1dFxcXCIsIFxcdTAwMjZjb25mKSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNTozMzozNy4xMDU0Nzg3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzMyNDg0ODU2MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIERldmljZSBUcmVlIHBhcnNpbmcgYW5kIHZhbGlkYXRpb24gaW4gdGhlIFJlbmVzYXMgUlovTjEvVDJIIE1JSSBDb252ZXJ0ZXIgKFBDUykgcGxhdGZvcm0gZHJpdmVyIChkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jKS4gVGhpcyBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gUmVuZXNhcyBTb0MgaGFyZHdhcmUgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTk4MTQ3NGUzNDUxYTBlMjIzMjEyNDdjN2M4YmVlMTg5NTJkMWMwY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMDU6MzM6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1xuaW5kZXggMmI3MmZhOThkZGYxMy4uZWJkNzNlZDYzODk2NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNcbisrKyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNcbkBAIC02ODMsNyArNjgzLDcgQEAgc3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKVxuIFx0aWYgKCFkdF92YWwpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0bWVtc2V0KGR0X3ZhbCwgTUlJQ19NT0RDVFJMX0NPTkZfTk9ORSwgc2l6ZW9mKCpkdF92YWwpKTtcbitcdG1lbXNldChkdF92YWwsIE1JSUNfTU9EQ1RSTF9DT05GX05PTkUsIHNpemVvZigqZHRfdmFsKSAqIG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2Vjb25mX2NvbnZfY291bnQpO1xuIFxuIFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcInJlbmVzYXMsbWlpYy1zd2l0Y2gtcG9ydGluXCIsIFx1MDAyNmNvbmYpID09IDApXG4gXHRcdGR0X3ZhbFswXSA9IGNvbmY7XG5AQCAtNjkyLDYgKzY5MiwxMSBAQCBzdGF0aWMgaW50IG1paWNfcGFyc2VfZHQoc3RydWN0IG1paWMgKm1paWMsIHUzMiAqbW9kZV9jZmcpXG4gXHRcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCBcInJlZ1wiLCBcdTAwMjZwb3J0KSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbitcdFx0aWYgKHBvcnQgXHUwMDNjIG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2VtaWljX3BvcnRfc3RhcnQgfHwgcG9ydCBcdTAwM2UgbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9tYXgpIHtcbitcdFx0XHRkZXZfZXJyKG1paWMtXHUwMDNlZGV2LCBcIlBvcnQgbnVtYmVyIG91dCBvZiByYW5nZTogJWRcXG5cIiwgcG9ydCk7XG4rXHRcdFx0Y29udGludWU7XG4rXHRcdH1cbitcbiBcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKGNvbnYsIFwicmVuZXNhcyxtaWljLWlucHV0XCIsIFx1MDAyNmNvbmYpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDU6MzM6MzcuMTA1NDgwMjk5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTE3NDE5Nzg5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgcHJlY2lzZWx5IHdoaWNoIGRyaXZlciBvciBzdWJzeXN0ZW0gaXMgYmVpbmcgdG91Y2hlZC4gVGhlIGNoYW5nZSBhcHBlYXJzIHRvIGJlIGluIGBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jYC4gQWxyaWdodCwgc28gdGhhdCdzIHdoZXJlIHRoZSBhY3Rpb24gaXMuIFRpbWUgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgaW1wbGljYXRpb25zLlxuXG5Ob3cgSSdsbCByZWFjaCBmb3IgYHJlYWQtZmlsZWAgYW5kIGBncmVwcGVyYCDigJMgc3RhbmRhcmQgdG9vbHMgZm9yIHRoZSBqb2IuIEkgbmVlZCB0byBjbG9zZWx5IGV4YW1pbmUgYGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNgIGl0c2VsZi4gSSB3YW50IHRvIHNlZSB0aGUgbW9kaWZpY2F0aW9ucyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNvZGUuIEknbGwgYWxzbyBjaGVjayBpdHMgS2NvbmZpZyBlbnRyeSBhbmQgaG93IHRoaXMgZHJpdmVyIGlzIGJlaW5nIHV0aWxpemVkLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIHByb3BlciBvdmVydmlldyBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55IGRlZXBlciBhbmFseXNpcy4gSSdtIGVzc2VudGlhbGx5IGJ1aWxkaW5nIGEgY29tcGxldGUgcGljdHVyZSBoZXJlIOKAkyBmcm9tIHRoZSBmaWxlJ3MgaW1wYWN0IHRvIGl0cyBvdmVyYWxsIGZ1bmN0aW9uIHdpdGhpbiB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzM3LCJPdXRwdXRUb2tlbnMiOjc2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNTozMzo0Mi4yNzk2ODAyNDFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY2MCxcbiAgXCJMaW5lQ291bnRcIjogNzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY2MDpcXHRcXHRcXHRcXHRyZXR1cm47XFxuIDY2MTpcXHRcXHRcXHR9XFxuIDY2MjpcXHRcXHR9XFxuIDY2MzpcXHRcXG4gNjY0OlxcdFxcdG1hc2sgPSBCSVQocG9ydCArIHNoaWZ0KTtcXG4gNjY1OlxcdFxcbiA2NjY6XFx0XFx0bWlpYy1cXHUwMDNlbGlua19jZmcubWFzayB8PSBtYXNrO1xcbiA2Njc6XFx0XFx0aWYgKHBvbGFyaXR5X2FjdGl2ZV9oaWdoICE9IGFjdGl2ZV9sb3cpXFxuIDY2ODpcXHRcXHRcXHRtaWljLVxcdTAwM2VsaW5rX2NmZy52YWwgfD0gbWFzaztcXG4gNjY5OlxcdFxcdGVsc2VcXG4gNjcwOlxcdFxcdFxcdG1paWMtXFx1MDAzZWxpbmtfY2ZnLnZhbCBcXHUwMDI2PSB+bWFzaztcXG4gNjcxOlxcdH1cXG4gNjcyOlxcdFxcbiA2NzM6XFx0c3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKVxcbiA2NzQ6XFx0e1xcbiA2NzU6XFx0XFx0c3RydWN0IGRldmljZV9ub2RlICpucCA9IG1paWMtXFx1MDAzZWRldi1cXHUwMDNlb2Zfbm9kZTtcXG4gNjc2OlxcdFxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqY29udjtcXG4gNjc3OlxcdFxcdGJvb2wgYWN0aXZlX2xvdztcXG4gNjc4OlxcdFxcdGludCBwb3J0LCByZXQ7XFxuIDY3OTpcXHRcXHRzOCAqZHRfdmFsO1xcbiA2ODA6XFx0XFx0dTMyIGNvbmY7XFxuIDY4MTpcXHRcXG4gNjgyOlxcdFxcdGR0X3ZhbCA9IGttYWxsb2Nfb2JqcygqZHRfdmFsLCBtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2Vjb25mX2NvbnZfY291bnQpO1xcbiA2ODM6XFx0XFx0aWYgKCFkdF92YWwpXFxuIDY4NDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gNjg1OlxcdFxcbiA2ODY6XFx0XFx0bWVtc2V0KGR0X3ZhbCwgTUlJQ19NT0RDVFJMX0NPTkZfTk9ORSwgc2l6ZW9mKCpkdF92YWwpICogbWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlY29uZl9jb252X2NvdW50KTtcXG4gNjg3OlxcdFxcbiA2ODg6XFx0XFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcXFwicmVuZXNhcyxtaWljLXN3aXRjaC1wb3J0aW5cXFwiLCBcXHUwMDI2Y29uZikgPT0gMClcXG4gNjg5OlxcdFxcdFxcdGR0X3ZhbFswXSA9IGNvbmY7XFxuIDY5MDpcXHRcXG4gNjkxOlxcdFxcdGZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlKG5wLCBjb252KSB7XFxuIDY5MjpcXHRcXHRcXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoY29udiwgXFxcInJlZ1xcXCIsIFxcdTAwMjZwb3J0KSlcXG4gNjkzOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiA2OTQ6XFx0XFxuIDY5NTpcXHRcXHRcXHRpZiAocG9ydCBcXHUwMDNjIG1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZW1paWNfcG9ydF9zdGFydCB8fCBwb3J0IFxcdTAwM2UgbWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X21heCkge1xcbiA2OTY6XFx0XFx0XFx0XFx0ZGV2X2VycihtaWljLVxcdTAwM2VkZXYsIFxcXCJQb3J0IG51bWJlciBvdXQgb2YgcmFuZ2U6ICVkXFxcXG5cXFwiLCBwb3J0KTtcXG4gNjk3OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiA2OTg6XFx0XFx0XFx0fVxcbiA2OTk6XFx0XFxuIDcwMDpcXHRcXHRcXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoY29udiwgXFxcInJlbmVzYXMsbWlpYy1pbnB1dFxcXCIsIFxcdTAwMjZjb25mKSlcXG4gNzAxOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiA3MDI6XFx0XFxuIDcwMzpcXHRcXHRcXHQvKiBBZGp1c3QgZm9yIDAgYmFzZWQgaW5kZXggKi9cXG4gNzA0OlxcdFxcdFxcdGR0X3ZhbFtwb3J0ICsgIW1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZW1paWNfcG9ydF9zdGFydF0gPSBjb25mO1xcbiA3MDU6XFx0XFxuIDcwNjpcXHRcXHRcXHRhY3RpdmVfbG93ID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKGNvbnYsIFxcXCJyZW5lc2FzLG1paWMtcGh5LWxpbmstYWN0aXZlLWxvd1xcXCIpO1xcbiA3MDc6XFx0XFxuIDcwODpcXHRcXHRcXHRtaWljX2NvbmZpZ3VyZV9waHlfbGluayhtaWljLCBjb25mLCBwb3J0LCBhY3RpdmVfbG93KTtcXG4gNzA5OlxcdFxcdH1cXG4gNzEwOlxcdFxcbiA3MTE6XFx0XFx0cmV0ID0gbWlpY19tYXRjaF9kdF9jb25mKG1paWMsIGR0X3ZhbCwgbW9kZV9jZmcpO1xcbiA3MTI6XFx0XFx0a2ZyZWUoZHRfdmFsKTtcXG4gNzEzOlxcdFxcbiA3MTQ6XFx0XFx0cmV0dXJuIHJldDtcXG4gNzE1OlxcdH1cXG4gNzE2OlxcdFxcbiA3MTc6XFx0c3RhdGljIHZvaWQgbWlpY19yZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0KHZvaWQgKmRhdGEpXFxuIDcxODpcXHR7XFxuIDcxOTpcXHRcXHRzdHJ1Y3QgbWlpYyAqbWlpYyA9IGRhdGE7XFxuIDcyMDpcXHRcXHRpbnQgcmV0O1xcbiA3MjE6XFx0XFxuIDcyMjpcXHRcXHRyZXQgPSByZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0KG1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZXJlc2V0X2NvdW50LCBtaWljLVxcdTAwM2Vyc3RzKTtcXG4gNzIzOlxcdFxcdGlmIChyZXQpXFxuIDcyNDpcXHRcXHRcXHRkZXZfZXJyKG1paWMtXFx1MDAzZWRldiwgXFxcImZhaWxlZCB0byBhc3NlcnQgcmVzZXQgbGluZXNcXFxcblxcXCIpO1xcbiA3MjU6XFx0fVxcbiA3MjY6XFx0XFxuIDcyNzpcXHRzdGF0aWMgaW50IG1paWNfcmVzZXRfY29udHJvbF9pbml0KHN0cnVjdCBtaWljICptaWljKVxcbiA3Mjg6XFx0e1xcbiA3Mjk6XFx0XFx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YSA9IG1paWMtXFx1MDAzZW9mX2RhdGE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA1OjMzOjQyLjI3OTc3MzMxMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjY1OTQzMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNzLXJ6bjEtbWlpY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuaC0xNC0jaW5jbHVkZSBcXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuaDoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvcGNzLXJ6bjEtbWlpYy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmgtMTYtI2luY2x1ZGUgXFx1MDAzY25ldC9kc2EuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0xOS0jaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM6MjA6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1yem4xLW1paWMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjk6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1yem4xLW1paWMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtMTAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeWxpbmsuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZT05PW9iai0kKENPTkZJR19QQ1NfTVRLX0xZTlhJKVxcdCs9IHBjcy1tdGstbHlueGkub1xcbmRyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfUENTX1JaTjFfTUlJQylcXHQrPSBwY3MtcnpuMS1taWljLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX3BsYXRmb3JtLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoxNzojaW5jbHVkZSBcXHUwMDNjbGludXgvcGNzLXJ6bjEtbWlpYy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeWxpbmsuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjItI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIzOiNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9uZXQvcGNzLXJ6bjEtbWlpYy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjQtI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL25ldC9yZW5lc2FzLHI5YTA5ZzA3Ny1wY3MtbWlpYy5oXFx1MDAzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNTozMzo0Mi40MDYzNzE1MjlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzQ1ODY4NTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBQQ1NfUlpOMV9NSUlDIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgUENTX1JaTjFfTUlJQ2AgZHJpdmVyIGFuZCwgYXMgdXN1YWwsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBLY29uZmlnLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgc2V0dGluZ3MgYmVmb3JlIEkgY2FuIHRydWx5IGdyYXNwIGl0cyByb2xlIHdpdGhpbiB0aGUgc3lzdGVtLiBJIHdhbnQgdG8gc2VlIHdoYXQncyBjb25maWd1cmFibGUsIHdoYXQgY29uZGl0aW9ucyBlbmFibGUgaXQsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbC4gVGhpcyBgS2NvbmZpZ2AgaXMgZXNzZW50aWFsbHkgdGhlIGJsdWVwcmludCBmb3IgaG93IHRoaXMgZHJpdmVyIGJlaGF2ZXMsIGFuZCBpdCdzIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LiBMZXQncyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NDEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNTozMzo0NC4xNTIyNDIzNTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ3NjI2NzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBDU19SWk4xX01JSUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL0tjb25maWc9MTAxPWNvbmZpZyBORVRfRFNBX1JaTjFfQTVQU1dcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEwNC1cXHRzZWxlY3QgTkVUX0RTQV9UQUdfUlpOMV9BNVBTV1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEwNTpcXHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEwNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE1NT1jb25maWcgRFdNQUNfUkVORVNBU19HQkVUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNTgtXFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9SRU5FU0FTIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE1OTpcXHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTYwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTc5PWNvbmZpZyBEV01BQ19SWk4xXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE4Mi1cXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1JaTjEgfHwgQ09NUElMRV9URVNUKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTgzOlxcdHNlbGVjdCBQQ1NfUlpOMV9NSUlDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xODQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWc9MjE9Y29uZmlnIFBDU19NVEtfTFlOWElcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnOjI5OmNvbmZpZyBQQ1NfUlpOMV9NSUlDXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWctMzAtXFx0dHJpc3RhdGUgXFxcIlJlbmVzYXMgUlovTjEsIFJaL04ySCwgUlovVDJIIE1JSSBjb252ZXJ0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfUENTX01US19MWU5YSSlcXHQrPSBwY3MtbXRrLWx5bnhpLm9cXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX1BDU19SWk4xX01JSUMpXFx0Kz0gcGNzLXJ6bjEtbWlpYy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA1OjMzOjQ0Ljg5OTg3MzIyMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMzNDA4NDE0MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBuZXR3b3JrIGRyaXZlciBjb25maWd1cmF0aW9ucy4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgZHJpdmVycy9uZXQvcGNzL0tjb25maWdgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMjkuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoZSByZWxldmFudCBzZXR0aW5ncyBJJ20gaW50ZXJlc3RlZCBpbiBhcmUgbGlrZWx5IGxvY2F0ZWQgdGhlcmUuIFRoaXMgaXMgYSBjb21tb24gc3RhcnRpbmcgcG9pbnQgZm9yIGNvbmZpZ3VyaW5nIHZhcmlvdXMgZmVhdHVyZXMgb3Igc2VsZWN0aW5nIHNwZWNpZmljIFBIWXMgcmVsYXRlZCB0byBQQ1MgKFBoeXNpY2FsIENvZGluZyBTdWJsYXllcikgZnVuY3Rpb25hbGl0eS4gSSdsbCBuZWVkIHRvIHJhcGlkbHkgc2NhbiB0aGF0IHNlY3Rpb24gYW5kIHF1aWNrbHkgYXNzZXNzIHRoZSBvcHRpb25zIHByZXNlbnRlZC4gRnJvbSB0aGVyZSwgSSBleHBlY3QgdG8gc2VlIHRoZSB0eXBpY2FsIGBjb25maWdgIHZhcmlhYmxlcyBhbmQgYXNzb2NpYXRlZCBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYXNwZWN0cyBhbmQgZGVwZW5kZW5jaWVzLiBJIGFudGljaXBhdGUgdGhpcyB3aWxsIGludm9sdmUgYSBkZWVwIGRpdmUgaW50byBhbnkgYXNzb2NpYXRlZCBgdHJpc3RhdGVgIHZhbHVlcywgYW5kIHdoYXQgdGhhdCBtZWFucyBmb3IgbXkgZW5kIGdvYWxzLiBNeSB1bHRpbWF0ZSBhaW0gaGVyZSBpcyB0byB1bmRlcnN0YW5kIGEgdmVyeSBzcGVjaWZpYyBzZXQgb2YgZmVhdHVyZXMgc28gSSBjYW4gZGV0ZXJtaW5lIHdoYXQgaXMgZW5hYmxlZCAob3IgZGlzYWJsZWQpIGluIHRoZSBzcGVjaWZpYyBrZXJuZWwgY29uZmlnIEkgYW0gd29ya2luZyB3aXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjA1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDU6MzM6NDguMjQwNzE2NTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9wY3MvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyNTpcXHRcXHRoZWxwXFxuICAyNjpcXHRcXHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGhlbHBlcnMgdG8gcGh5bGluayBmb3IgbWFuYWdpbmcgdGhlIEx5bnhJIFBDU1xcbiAgMjc6XFx0XFx0ICB3aGljaCBpcyBwYXJ0IG9mIE1lZGlhVGVrJ3MgU29DIGFuZCBFdGhlcm5ldCBzd2l0Y2ggSUNzLlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgUENTX1JaTjFfTUlJQ1xcbiAgMzA6XFx0XFx0dHJpc3RhdGUgXFxcIlJlbmVzYXMgUlovTjEsIFJaL04ySCwgUlovVDJIIE1JSSBjb252ZXJ0ZXJcXFwiXFxuICAzMTpcXHRcXHRkZXBlbmRzIG9uIE9GXFxuICAzMjpcXHRcXHRkZXBlbmRzIG9uIEFSQ0hfUkVORVNBUyB8fCBDT01QSUxFX1RFU1RcXG4gIDMzOlxcdFxcdGhlbHBcXG4gIDM0OlxcdFxcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBkcml2ZXIgZm9yIHRoZSBNSUkgY29udmVydGVyIGF2YWlsYWJsZSBvblxcbiAgMzU6XFx0XFx0ICBSZW5lc2FzIFJaL04xLCBSWi9OMkgsIGFuZCBSWi9UMkggU29Dcy4gVGhpcyBQQ1MgY29udmVydHMgTUlJIHRvXFxuICAzNjpcXHRcXHQgIFJNSUkvUkdNSUksIG9yIGNhbiBiZSBzZXQgaW4gcGFzcy10aHJvdWdoIG1vZGUgZm9yIE1JSS5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0ZW5kbWVudVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNTozMzo0OC4yNDA3NzUwNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjM3MTI4NzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBhcyBJIGFwcHJvYWNoIHRoaXMgZHJpdmVyOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBwY3MtcnpuMS1taWljLmNgIERyaXZlcioqXG5cbkFscmlnaHQsIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYHBjcy1yem4xLW1paWMuY2AgZHJpdmVyIGlzIGFjdHVhbGx5ICp1c2VkKi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGluc3RhbnRpYXRpb24gYW5kIGJpbmRpbmcgcHJvY2Vzcy4gSXMgdGhpcyBhIHBsYXRmb3JtIGRyaXZlcj8gVGhhdCdzIG15IGluaXRpYWwgaHVuY2gsIGJ1dCBjb25maXJtYXRpb24gaXMga2V5LiBUaGUgZ29hbCBoZXJlIGlzIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgYW5kIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoaXMgY29kZSBpcyBvcGVyYXRpbmcuIENhbiBJIHJlYWxpc3RpY2FsbHkgZXhwZWN0IHRvIGludGVyYWN0IHdpdGggdGhpcyBkcml2ZXIgd2l0aGluIG15IFFFTVUgc2V0dXAsIG9yIGFtIEkgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBzcGVjaWZpYyB0byB0aGUgaGFyZHdhcmU/IFRoYXQncyBhIGNyaXRpY2FsIGZhY3RvciBpbiBteSBhbmFseXNpcy5cblxuTm93LCBpdCdzIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8gc3RhcnQgcmVhZGluZyBgZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY2AgZnJvbSB0aGUgdmVyeSB0b3AgYW5kIHdvcmsgbXkgd2F5IGRvd24uIE5vIHNraXBwaW5nIGFyb3VuZDsgSSBuZWVkIGEgY29tcHJlaGVuc2l2ZSBvdmVydmlldyB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBkZXNpZ24gZGVjaXNpb25zLCB0aGUgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgdGhlIGNvbnRyb2wgZmxvdy4gSSdtIGxvb2tpbmcgZm9yIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHksIGFueSBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgYW5kIHRoZSBtZXRob2RzIHVzZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgaWYgYXBwbGljYWJsZS4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzQwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNTozMzo1MC44Nzc5MDYyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTE5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQvKlxcbiAgIDM6XFx0ICogQ29weXJpZ2h0IChDKSAyMDIyIFNjaG5laWRlciBFbGVjdHJpY1xcbiAgIDQ6XFx0ICpcXG4gICA1OlxcdCAqIENsw6ltZW50IEzDqWdlciBcXHUwMDNjY2xlbWVudC5sZWdlckBib290bGluLmNvbVxcdTAwM2VcXG4gICA2OlxcdCAqL1xcbiAgIDc6XFx0XFxuICAgODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvYXJyYXlfc2l6ZS5oXFx1MDAzZVxcbiAgIDk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdHMuaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRvcHMuaFxcdTAwM2VcXG4gIDExOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9jbGsuaFxcdTAwM2VcXG4gIDEyOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZXZpY2UuaFxcdTAwM2VcXG4gIDEzOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZXZpY2UvZGV2cmVzLmhcXHUwMDNlXFxuICAxNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbWRpby5oXFx1MDAzZVxcbiAgMTU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuICAxNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfcGxhdGZvcm0uaFxcdTAwM2VcXG4gIDE3OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9wY3MtcnpuMS1taWljLmhcXHUwMDNlXFxuICAxODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5bGluay5oXFx1MDAzZVxcbiAgMTk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbiAgMjA6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFxcdTAwM2VcXG4gIDIxOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZXNldC5oXFx1MDAzZVxcbiAgMjI6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG4gIDIzOlxcdCNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9uZXQvcGNzLXJ6bjEtbWlpYy5oXFx1MDAzZVxcbiAgMjQ6XFx0I2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL25ldC9yZW5lc2FzLHI5YTA5ZzA3Ny1wY3MtbWlpYy5oXFx1MDAzZVxcbiAgMjU6XFx0XFxuICAyNjpcXHQjZGVmaW5lIE1JSUNfUFJDTURcXHRcXHRcXHQweDBcXG4gIDI3OlxcdCNkZWZpbmUgTUlJQ19FU0lEX0NPREVcXHRcXHRcXHQweDRcXG4gIDI4OlxcdFxcbiAgMjk6XFx0I2RlZmluZSBNSUlDX01PRENUUkxcXHRcXHRcXHQweDhcXG4gIDMwOlxcdFxcbiAgMzE6XFx0I2RlZmluZSBNSUlDX1BIWV9MSU5LXFx0XFx0XFx0MHgxNFxcbiAgMzI6XFx0XFxuICAzMzpcXHQjZGVmaW5lIE1JSUNfQ09OVkNUUkwocG9ydClcXHRcXHQoMHgxMDAgKyAocG9ydCkgKiA0KVxcbiAgMzQ6XFx0XFxuICAzNTpcXHQjZGVmaW5lIE1JSUNfQ09OVkNUUkxfQ09OVl9TUEVFRFxcdEdFTk1BU0soMSwgMClcXG4gIDM2OlxcdCNkZWZpbmUgQ09OVl9NT0RFXzEwTUJQU1xcdFxcdDBcXG4gIDM3OlxcdCNkZWZpbmUgQ09OVl9NT0RFXzEwME1CUFNcXHRcXHQxXFxuICAzODpcXHQjZGVmaW5lIENPTlZfTU9ERV8xMDAwTUJQU1xcdFxcdDJcXG4gIDM5OlxcdFxcbiAgNDA6XFx0I2RlZmluZSBNSUlDX0NPTlZDVFJMX0NPTlZfTU9ERVxcdFxcdEdFTk1BU0soMywgMilcXG4gIDQxOlxcdCNkZWZpbmUgQ09OVl9NT0RFX01JSVxcdFxcdFxcdDBcXG4gIDQyOlxcdCNkZWZpbmUgQ09OVl9NT0RFX1JNSUlcXHRcXHRcXHQxXFxuICA0MzpcXHQjZGVmaW5lIENPTlZfTU9ERV9SR01JSVxcdFxcdFxcdDJcXG4gIDQ0OlxcdFxcbiAgNDU6XFx0I2RlZmluZSBNSUlDX0NPTlZDVFJMX0ZVTExEXFx0XFx0QklUKDgpXFxuICA0NjpcXHQjZGVmaW5lIE1JSUNfQ09OVkNUUkxfUkdNSUlfTElOS1xcdEJJVCgxMilcXG4gIDQ3OlxcdCNkZWZpbmUgTUlJQ19DT05WQ1RSTF9SR01JSV9EVVBMRVhcXHRCSVQoMTMpXFxuICA0ODpcXHQjZGVmaW5lIE1JSUNfQ09OVkNUUkxfUkdNSUlfU1BFRURcXHRHRU5NQVNLKDE1LCAxNClcXG4gIDQ5OlxcdFxcbiAgNTA6XFx0I2RlZmluZSBNSUlDX0NPTlZSU1RcXHRcXHRcXHQweDExNFxcbiAgNTE6XFx0I2RlZmluZSBNSUlDX0NPTlZSU1RfUEhZSUZfUlNUKHBvcnQpXFx0QklUKHBvcnQpXFxuICA1MjpcXHQjZGVmaW5lIE1JSUNfQ09OVlJTVF9QSFlJRl9SU1RfTUFTS1xcdEdFTk1BU0soNCwgMClcXG4gIDUzOlxcdFxcbiAgNTQ6XFx0I2RlZmluZSBNSUlDX1NXQ1RSTFxcdFxcdFxcdDB4MzA0XFxuICA1NTpcXHQjZGVmaW5lIE1JSUNfU1dEVVBDXFx0XFx0XFx0MHgzMDhcXG4gIDU2OlxcdFxcbiAgNTc6XFx0I2RlZmluZSBNSUlDX01PRENUUkxfQ09ORl9DT05WX01BWFxcdDZcXG4gIDU4OlxcdCNkZWZpbmUgTUlJQ19NT0RDVFJMX0NPTkZfTk9ORVxcdFxcdC0xXFxuICA1OTpcXHRcXG4gIDYwOlxcdCNkZWZpbmUgTUlJQ19NQVhfTlVNX1JTVFNcXHRcXHQyXFxuICA2MTpcXHRcXG4gIDYyOlxcdC8qKlxcbiAgNjM6XFx0ICogc3RydWN0IG1vZGN0cmxfbWF0Y2ggLSBNYXRjaGluZyB0YWJsZSBlbnRyeSBmb3IgIGNvbnZjdHJsIGNvbmZpZ3VyYXRpb25cXG4gIDY0OlxcdCAqXFx0XFx0XFx0ICBTZWUgc2VjdGlvbiA4LjIuMSBvZiBtYW51YWwuXFxuICA2NTpcXHQgKiBAbW9kZV9jZmc6IENvbmZpZ3VyYXRpb24gdmFsdWUgZm9yIGNvbnZjdHJsXFxuICA2NjpcXHQgKiBAY29udjogQ29uZmlndXJhdGlvbiBvZiBldGhlcm5ldCBwb3J0IG11eGVzLiBGaXJzdCBpbmRleCBpcyBTV0lUQ0hfUE9SVElOLFxcbiAgNjc6XFx0ICpcXHQgIHRoZW4gaW5kZXggMSAtIDUgYXJlIENPTlYxIC0gQ09OVjUgZm9yIFJaL04xIFNvQ3MuIEluIGNhc2VcXG4gIDY4OlxcdCAqXFx0ICBvZiBSWi9UMkggYW5kIFJaL04ySCBTb0NzLCB0aGUgZmlyc3QgaW5kZXggaXMgU1dJVENIX1BPUlRJTiB0aGVuXFxuICA2OTpcXHQgKlxcdCAgaW5kZXggMCAtIDMgYXJlIENPTlYwIC0gQ09OVjMuXFxuICA3MDpcXHQgKi9cXG4gIDcxOlxcdHN0cnVjdCBtb2RjdHJsX21hdGNoIHtcXG4gIDcyOlxcdFxcdHUzMiBtb2RlX2NmZztcXG4gIDczOlxcdFxcdHU4IGNvbnZbTUlJQ19NT0RDVFJMX0NPTkZfQ09OVl9NQVhdO1xcbiAgNzQ6XFx0fTtcXG4gIDc1OlxcdFxcbiAgNzY6XFx0c3RhdGljIHN0cnVjdCBtb2RjdHJsX21hdGNoIG1vZGN0cmxfbWF0Y2hfdGFibGVbXSA9IHtcXG4gIDc3OlxcdFxcdHsweDAsIHtNSUlDX1JUT1NfUE9SVCwgTUlJQ19HTUFDMV9QT1JULCBNSUlDX1NXSVRDSF9QT1JURCxcXG4gIDc4OlxcdFxcdCAgICAgICBNSUlDX1NXSVRDSF9QT1JUQywgTUlJQ19TRVJDT1NfUE9SVEIsIE1JSUNfU0VSQ09TX1BPUlRBfX0sXFxuICA3OTpcXHRcXHR7MHgxLCB7TUlJQ19SVE9TX1BPUlQsIE1JSUNfR01BQzFfUE9SVCwgTUlJQ19TV0lUQ0hfUE9SVEQsXFxuICA4MDpcXHRcXHQgICAgICAgTUlJQ19TV0lUQ0hfUE9SVEMsIE1JSUNfRVRIRVJDQVRfUE9SVEIsIE1JSUNfRVRIRVJDQVRfUE9SVEF9fSxcXG4gIDgxOlxcdFxcdHsweDIsIHtNSUlDX1JUT1NfUE9SVCwgTUlJQ19HTUFDMV9QT1JULCBNSUlDX1NXSVRDSF9QT1JURCxcXG4gIDgyOlxcdFxcdCAgICAgICBNSUlDX0VUSEVSQ0FUX1BPUlRDLCBNSUlDX0VUSEVSQ0FUX1BPUlRCLCBNSUlDX0VUSEVSQ0FUX1BPUlRBfX0sXFxuICA4MzpcXHRcXHR7MHgzLCB7TUlJQ19SVE9TX1BPUlQsIE1JSUNfR01BQzFfUE9SVCwgTUlJQ19TV0lUQ0hfUE9SVEQsXFxuICA4NDpcXHRcXHQgICAgICAgTUlJQ19TV0lUQ0hfUE9SVEMsIE1JSUNfU1dJVENIX1BPUlRCLCBNSUlDX1NXSVRDSF9QT1JUQX19LFxcbiAgODU6XFx0XFxuICA4NjpcXHRcXHR7MHg4LCB7TUlJQ19SVE9TX1BPUlQsIE1JSUNfR01BQzFfUE9SVCwgTUlJQ19TV0lUQ0hfUE9SVEQsXFxuICA4NzpcXHRcXHQgICAgICAgTUlJQ19TV0lUQ0hfUE9SVEMsIE1JSUNfU0VSQ09TX1BPUlRCLCBNSUlDX1NFUkNPU19QT1JUQX19LFxcbiAgODg6XFx0XFx0ezB4OSwge01JSUNfUlRPU19QT1JULCBNSUlDX0dNQUMxX1BPUlQsIE1JSUNfU1dJVENIX1BPUlRELFxcbiAgODk6XFx0XFx0ICAgICAgIE1JSUNfU1dJVENIX1BPUlRDLCBNSUlDX0VUSEVSQ0FUX1BPUlRCLCBNSUlDX0VUSEVSQ0FUX1BPUlRBfX0sXFxuICA5MDpcXHRcXHR7MHhBLCB7TUlJQ19SVE9TX1BPUlQsIE1JSUNfR01BQzFfUE9SVCwgTUlJQ19TV0lUQ0hfUE9SVEQsXFxuICA5MTpcXHRcXHQgICAgICAgTUlJQ19FVEhFUkNBVF9QT1JUQywgTUlJQ19FVEhFUkNBVF9QT1JUQiwgTUlJQ19FVEhFUkNBVF9QT1JUQX19LFxcbiAgOTI6XFx0XFx0ezB4Qiwge01JSUNfUlRPU19QT1JULCBNSUlDX0dNQUMxX1BPUlQsIE1JSUNfU1dJVENIX1BPUlRELFxcbiAgOTM6XFx0XFx0ICAgICAgIE1JSUNfU1dJVENIX1BPUlRDLCBNSUlDX1NXSVRDSF9QT1JUQiwgTUlJQ19TV0lUQ0hfUE9SVEF9fSxcXG4gIDk0OlxcdFxcbiAgOTU6XFx0XFx0ezB4MTAsIHtNSUlDX0dNQUMyX1BPUlQsIE1JSUNfR01BQzFfUE9SVCwgTUlJQ19TV0lUQ0hfUE9SVEQsXFxuICA5NjpcXHRcXHRcXHRNSUlDX1NXSVRDSF9QT1JUQywgTUlJQ19TRVJDT1NfUE9SVEIsIE1JSUNfU0VSQ09TX1BPUlRBfX0sXFxuICA5NzpcXHRcXHR7MHgxMSwge01JSUNfR01BQzJfUE9SVCwgTUlJQ19HTUFDMV9QT1JULCBNSUlDX1NXSVRDSF9QT1JURCxcXG4gIDk4OlxcdFxcdFxcdE1JSUNfU1dJVENIX1BPUlRDLCBNSUlDX0VUSEVSQ0FUX1BPUlRCLCBNSUlDX0VUSEVSQ0FUX1BPUlRBfX0sXFxuICA5OTpcXHRcXHR7MHgxMiwge01JSUNfR01BQzJfUE9SVCwgTUlJQ19HTUFDMV9QT1JULCBNSUlDX1NXSVRDSF9QT1JURCxcXG4gMTAwOlxcdFxcdFxcdE1JSUNfRVRIRVJDQVRfUE9SVEMsIE1JSUNfRVRIRVJDQVRfUE9SVEIsIE1JSUNfRVRIRVJDQVRfUE9SVEF9fSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDU6MzM6NTAuODc4MDA3NjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjMxMzczMjkwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHdvcmtpbmcgb24gYGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNgLCBrZWVwaW5nIGluIG1pbmQgSSdtIGFuIGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgUENTIFJaTjEgTUlJQyBEcml2ZXIgUHJvYmUgYW5kIEluaXRpYWxpemF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciwgYHBjcy1yem4xLW1paWMuY2AsIGhhbmRsZXMgaW5pdGlhbGl6YXRpb24gYW5kIHRoZSBwcm9iaW5nIHByb2Nlc3MuIFRoZSBjcml0aWNhbCBwYXJ0IGlzIGFsd2F5cyBob3cgdGhlIGhhcmR3YXJlIGlzIGJyb3VnaHQgdXAsIHdoYXQgcmVnaXN0ZXJzIGFyZSBwb2tlZCwgd2hhdCdzIGNvbmZpZ3VyZWQsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBhcmUgY2hlY2tlZC4gSSdtIGdvaW5nIHRvIGZvY3VzIG15IGF0dGVudGlvbiBhcm91bmQgdGhlIGBwcm9iZWAgZnVuY3Rpb24gYW5kIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBoYXJkd2FyZSBzZXR1cCBoZXJlLCBhbmQgSSdsbCBiZSBsb29raW5nIGZvciBjbHVlcyBhYm91dCB0aGUgUlpOMS1zcGVjaWZpYyBNSUlDIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbi4gSSBrbm93IHRoZXNlIFJlbmVzYXMgZHJpdmVycyBjYW4gYmUgdHJpY2t5IHdpdGggdGhlaXIgY3VzdG9tIHJlZ2lzdGVyIG1hcHBpbmdzIGFuZCBwb3dlciBtYW5hZ2VtZW50IHJlcXVpcmVtZW50cywgc28gSSdsbCBiZSBtZXRpY3Vsb3VzbHkgZXhhbWluaW5nIHRoZSBjb2RlIGZsb3cuIFVuZGVyc3RhbmRpbmcgdGhpcyBjcml0aWNhbCBpbml0aWFsIHNldHVwIHdpbGwgYmUgY3J1Y2lhbCBmb3IgYW55IGRlYnVnZ2luZyBvciBjdXN0b21pemF0aW9uIGRvd24gdGhlIGxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyMTIsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA1OjMzOjUzLjE5MTc0MjUzNVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODMxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MzAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3MzA6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gbWlpYy1cXHUwMDNlZGV2O1xcbiA3MzE6XFx0XFx0aW50IHJldDtcXG4gNzMyOlxcdFxcdHU4IGk7XFxuIDczMzpcXHRcXG4gNzM0OlxcdFxcdGlmICghb2ZfZGF0YS1cXHUwMDNlcmVzZXRfY291bnQpXFxuIDczNTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNzM2OlxcdFxcbiA3Mzc6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG9mX2RhdGEtXFx1MDAzZXJlc2V0X2NvdW50OyBpKyspXFxuIDczODpcXHRcXHRcXHRtaWljLVxcdTAwM2Vyc3RzW2ldLmlkID0gb2ZfZGF0YS1cXHUwMDNlcmVzZXRfaWRzW2ldO1xcbiA3Mzk6XFx0XFxuIDc0MDpcXHRcXHRyZXQgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfYnVsa19nZXRfZXhjbHVzaXZlKGRldiwgb2ZfZGF0YS1cXHUwMDNlcmVzZXRfY291bnQsXFxuIDc0MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgbWlpYy1cXHUwMDNlcnN0cyk7XFxuIDc0MjpcXHRcXHRpZiAocmV0KVxcbiA3NDM6XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsXFxuIDc0NDpcXHRcXHRcXHRcXHRcXHQgICAgIFxcXCJmYWlsZWQgdG8gZ2V0IGJ1bGsgcmVzZXQgbGluZXNcXFxcblxcXCIpO1xcbiA3NDU6XFx0XFxuIDc0NjpcXHRcXHRyZXQgPSByZXNldF9jb250cm9sX2J1bGtfZGVhc3NlcnQob2ZfZGF0YS1cXHUwMDNlcmVzZXRfY291bnQsIG1paWMtXFx1MDAzZXJzdHMpO1xcbiA3NDc6XFx0XFx0aWYgKHJldClcXG4gNzQ4OlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LFxcbiA3NDk6XFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiZmFpbGVkIHRvIGRlYXNzZXJ0IHJlc2V0IGxpbmVzXFxcXG5cXFwiKTtcXG4gNzUwOlxcdFxcbiA3NTE6XFx0XFx0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgbWlpY19yZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0LFxcbiA3NTI6XFx0XFx0XFx0XFx0XFx0ICAgICAgIG1paWMpO1xcbiA3NTM6XFx0XFx0aWYgKHJldClcXG4gNzU0OlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCBcXFwiZmFpbGVkIHRvIGFkZCByZXNldCBhY3Rpb25cXFxcblxcXCIpO1xcbiA3NTU6XFx0XFxuIDc1NjpcXHRcXHRyZXR1cm4gMDtcXG4gNzU3OlxcdH1cXG4gNzU4OlxcdFxcbiA3NTk6XFx0c3RhdGljIGludCBtaWljX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIDc2MDpcXHR7XFxuIDc2MTpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbiA3NjI6XFx0XFx0c3RydWN0IG1paWMgKm1paWM7XFxuIDc2MzpcXHRcXHR1MzIgbW9kZV9jZmc7XFxuIDc2NDpcXHRcXHRpbnQgcmV0O1xcbiA3NjU6XFx0XFxuIDc2NjpcXHRcXHRtaWljID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCptaWljKSwgR0ZQX0tFUk5FTCk7XFxuIDc2NzpcXHRcXHRpZiAoIW1paWMpXFxuIDc2ODpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gNzY5OlxcdFxcbiA3NzA6XFx0XFx0bWlpYy1cXHUwMDNlb2ZfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbiA3NzE6XFx0XFx0bWlpYy1cXHUwMDNlZGV2ID0gZGV2O1xcbiA3NzI6XFx0XFxuIDc3MzpcXHRcXHRyZXQgPSBtaWljX3BhcnNlX2R0KG1paWMsIFxcdTAwMjZtb2RlX2NmZyk7XFxuIDc3NDpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gNzc1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDc3NjpcXHRcXG4gNzc3OlxcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZtaWljLVxcdTAwM2Vsb2NrKTtcXG4gNzc4OlxcdFxcdG1paWMtXFx1MDAzZWJhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCk7XFxuIDc3OTpcXHRcXHRpZiAoSVNfRVJSKG1paWMtXFx1MDAzZWJhc2UpKVxcbiA3ODA6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIobWlpYy1cXHUwMDNlYmFzZSk7XFxuIDc4MTpcXHRcXG4gNzgyOlxcdFxcdHJldCA9IG1paWNfcmVzZXRfY29udHJvbF9pbml0KG1paWMpO1xcbiA3ODM6XFx0XFx0aWYgKHJldClcXG4gNzg0OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDc4NTpcXHRcXG4gNzg2OlxcdFxcdHJldCA9IGRldm1fcG1fcnVudGltZV9lbmFibGUoZGV2KTtcXG4gNzg3OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiA3ODg6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNzg5OlxcdFxcbiA3OTA6XFx0XFx0cmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChkZXYpO1xcbiA3OTE6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDc5MjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA3OTM6XFx0XFxuIDc5NDpcXHRcXHRyZXQgPSBtaWljX2luaXRfaHcobWlpYywgbW9kZV9jZmcpO1xcbiA3OTU6XFx0XFx0aWYgKHJldClcXG4gNzk2OlxcdFxcdFxcdGdvdG8gZGlzYWJsZV9ydW50aW1lX3BtO1xcbiA3OTc6XFx0XFxuIDc5ODpcXHRcXHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19QSFlfTElOSywgbWlpYy1cXHUwMDNlbGlua19jZmcubWFzaywgbWlpYy1cXHUwMDNlbGlua19jZmcudmFsKTtcXG4gNzk5OlxcdFxcbiA4MDA6XFx0XFx0LyogbWlpY19jcmVhdGUoKSByZWxpZXMgb24gdGhhdCBmYWN0IHRoYXQgZGF0YSBhcmUgYXR0YWNoZWQgdG8gdGhlXFxuIDgwMTpcXHRcXHQgKiBwbGF0Zm9ybSBkZXZpY2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBkcml2ZXIgaXMgcmVhZHkgc28gdGhpcyBuZWVkcyB0b1xcbiA4MDI6XFx0XFx0ICogYmUgdGhlIGxhc3QgdGhpbmcgdG8gYmUgZG9uZSBhZnRlciBldmVyeXRoaW5nIGlzIGluaXRpYWxpemVkXFxuIDgwMzpcXHRcXHQgKiBwcm9wZXJseS5cXG4gODA0OlxcdFxcdCAqL1xcbiA4MDU6XFx0XFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgbWlpYyk7XFxuIDgwNjpcXHRcXG4gODA3OlxcdFxcdHJldHVybiAwO1xcbiA4MDg6XFx0XFxuIDgwOTpcXHRkaXNhYmxlX3J1bnRpbWVfcG06XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA1OjMzOjUzLjE5MTkyNzM0NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjk1ODc0NjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gdGhlIGBwY3MtcnpuMS1taWljLmNgIFNvdXJjZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBUaGUgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSByZXN0IG9mIHRoZSBgcGNzLXJ6bjEtbWlpYy5jYCBmaWxlLiBJJ20gYXNzdW1pbmcgdGhlcmUncyBtb3JlIHRvIHVuZGVyc3RhbmQgaGVyZSB0aGFuIGp1c3Qgd2hhdCBJJ3ZlIGFscmVhZHkgZ2xhbmNlZCBhdC4gSSBuZWVkIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGltcGxlbWVudGF0aW9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoZSB0eXBpY2FsIHRoaW5ncywgb2YgY291cnNlOiBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMsIGludGVycnVwdCBoYW5kbGVycywgZGF0YSB0cmFuc2ZlciByb3V0aW5lcywgcmVnaXN0ZXIgZGVmaW5pdGlvbnMuLi4gdGhlIHdob2xlIHNoZWJhbmcuIFNwZWNpZmljYWxseSwgSSdtIGV4cGVjdGluZyB0byBzZWUgaG93IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIE1JSSBpbnRlcmZhY2Ug4oCTIGlzIGl0IGRpcmVjdCByZWdpc3RlciBhY2Nlc3MsIG9yIGFyZSB0aGVyZSBhYnN0cmFjdGlvbnMgaW4gcGxhY2U/IEknbGwgYmUgb24gdGhlIGxvb2tvdXQgZm9yIGFueSBxdWlya3kgaGFyZHdhcmUtc3BlY2lmaWMgd29ya2Fyb3VuZHMgb3Igb3B0aW1pemF0aW9ucyBhcyB3ZWxsLiBUaGUgZGV2aWwsIGFzIGFsd2F5cywgaXMgaW4gdGhlIGRldGFpbHMuIExldCdzIHNlZSBpZiB0aGlzIGNvZGViYXNlIGlzIGNsZWFuLCB3ZWxsLWNvbW1lbnRlZCwgYW5kIGZvbGxvd3MgZXN0YWJsaXNoZWQgY29udmVudGlvbnMsIG9yIGlmIGl0J3MgZ29pbmcgdG8gYmUgYSBiaXQgb2YgYSBoYWlyYmFsbC4gSSdtIHByZXBhcmVkIGZvciBlaXRoZXIhIExldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTcwNiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDU6MzM6NTUuODg3ODA1MTkzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODEwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODEwOlxcdFxcdHBtX3J1bnRpbWVfcHV0KGRldik7XFxuIDgxMTpcXHRcXG4gODEyOlxcdFxcdHJldHVybiByZXQ7XFxuIDgxMzpcXHR9XFxuIDgxNDpcXHRcXG4gODE1OlxcdHN0YXRpYyB2b2lkIG1paWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIDgxNjpcXHR7XFxuIDgxNzpcXHRcXHRwbV9ydW50aW1lX3B1dChcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gODE4OlxcdH1cXG4gODE5OlxcdFxcbiA4MjA6XFx0c3RhdGljIHN0cnVjdCBtaWljX29mX2RhdGEgcnpuMV9taWljX29mX2RhdGEgPSB7XFxuIDgyMTpcXHRcXHQubWF0Y2hfdGFibGUgPSBtb2RjdHJsX21hdGNoX3RhYmxlLFxcbiA4MjI6XFx0XFx0Lm1hdGNoX3RhYmxlX2NvdW50ID0gQVJSQVlfU0laRShtb2RjdHJsX21hdGNoX3RhYmxlKSxcXG4gODIzOlxcdFxcdC5jb25mX2NvbnZfY291bnQgPSBNSUlDX01PRENUUkxfQ09ORl9DT05WX01BWCxcXG4gODI0OlxcdFxcdC5jb25mX3RvX3N0cmluZyA9IGNvbmZfdG9fc3RyaW5nLFxcbiA4MjU6XFx0XFx0LmNvbmZfdG9fc3RyaW5nX2NvdW50ID0gQVJSQVlfU0laRShjb25mX3RvX3N0cmluZyksXFxuIDgyNjpcXHRcXHQuaW5kZXhfdG9fc3RyaW5nID0gaW5kZXhfdG9fc3RyaW5nLFxcbiA4Mjc6XFx0XFx0LmluZGV4X3RvX3N0cmluZ19jb3VudCA9IEFSUkFZX1NJWkUoaW5kZXhfdG9fc3RyaW5nKSxcXG4gODI4OlxcdFxcdC5taWljX3BvcnRfc3RhcnQgPSAxLFxcbiA4Mjk6XFx0XFx0Lm1paWNfcG9ydF9tYXggPSA1LFxcbiA4MzA6XFx0XFx0LnN3X21vZGVfbWFzayA9IEdFTk1BU0soNCwgMCksXFxuIDgzMTpcXHRcXHQuaW5pdF91bmxvY2tfbG9ja19yZWdzID0gdHJ1ZSxcXG4gODMyOlxcdFxcdC5taWljX3dyaXRlID0gbWlpY19yZWdfd3JpdGVsX3VubG9ja2VkLFxcbiA4MzM6XFx0XFx0LnR5cGUgPSBNSUlDX1RZUEVfUlpOMSxcXG4gODM0OlxcdH07XFxuIDgzNTpcXHRcXG4gODM2OlxcdHN0YXRpYyBzdHJ1Y3QgbWlpY19vZl9kYXRhIHJ6dDJoX21paWNfb2ZfZGF0YSA9IHtcXG4gODM3OlxcdFxcdC5tYXRjaF90YWJsZSA9IHJ6dDJoX21vZGN0cmxfbWF0Y2hfdGFibGUsXFxuIDgzODpcXHRcXHQubWF0Y2hfdGFibGVfY291bnQgPSBBUlJBWV9TSVpFKHJ6dDJoX21vZGN0cmxfbWF0Y2hfdGFibGUpLFxcbiA4Mzk6XFx0XFx0LmNvbmZfY29udl9jb3VudCA9IDUsXFxuIDg0MDpcXHRcXHQuY29uZl90b19zdHJpbmcgPSByenQyaF9jb25mX3RvX3N0cmluZyxcXG4gODQxOlxcdFxcdC5jb25mX3RvX3N0cmluZ19jb3VudCA9IEFSUkFZX1NJWkUocnp0MmhfY29uZl90b19zdHJpbmcpLFxcbiA4NDI6XFx0XFx0LmluZGV4X3RvX3N0cmluZyA9IHJ6dDJoX2luZGV4X3RvX3N0cmluZyxcXG4gODQzOlxcdFxcdC5pbmRleF90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKHJ6dDJoX2luZGV4X3RvX3N0cmluZyksXFxuIDg0NDpcXHRcXHQubWlpY19wb3J0X3N0YXJ0ID0gMCxcXG4gODQ1OlxcdFxcdC5taWljX3BvcnRfbWF4ID0gNCxcXG4gODQ2OlxcdFxcdC5zd19tb2RlX21hc2sgPSBHRU5NQVNLKDIsIDApLFxcbiA4NDc6XFx0XFx0LnJlc2V0X2lkcyA9IHJ6dDJoX3Jlc2V0X2lkcyxcXG4gODQ4OlxcdFxcdC5yZXNldF9jb3VudCA9IEFSUkFZX1NJWkUocnp0MmhfcmVzZXRfaWRzKSxcXG4gODQ5OlxcdFxcdC5taWljX3dyaXRlID0gbWlpY19yZWdfd3JpdGVsX2xvY2tlZCxcXG4gODUwOlxcdFxcdC50eXBlID0gTUlJQ19UWVBFX1JaVDJILFxcbiA4NTE6XFx0fTtcXG4gODUyOlxcdFxcbiA4NTM6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWlpY19vZl9tdGFibGVbXSA9IHtcXG4gODU0OlxcdFxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVuZXNhcyxyOWEwOWcwNzctbWlpY1xcXCIsIC5kYXRhID0gXFx1MDAyNnJ6dDJoX21paWNfb2ZfZGF0YSB9LFxcbiA4NTU6XFx0XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJyZW5lc2FzLHJ6bjEtbWlpY1xcXCIsIC5kYXRhID0gXFx1MDAyNnJ6bjFfbWlpY19vZl9kYXRhIH0sXFxuIDg1NjpcXHRcXHR7IC8qIHNlbnRpbmVsICovIH1cXG4gODU3OlxcdH07XFxuIDg1ODpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtaWljX29mX210YWJsZSk7XFxuIDg1OTpcXHRcXG4gODYwOlxcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1paWNfZHJpdmVyID0ge1xcbiA4NjE6XFx0XFx0LmRyaXZlciA9IHtcXG4gODYyOlxcdFxcdFxcdC5uYW1lXFx0ID0gXFxcInJ6bjFfbWlpY1xcXCIsXFxuIDg2MzpcXHRcXHRcXHQuc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWUsXFxuIDg2NDpcXHRcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBtaWljX29mX210YWJsZSxcXG4gODY1OlxcdFxcdH0sXFxuIDg2NjpcXHRcXHQucHJvYmUgPSBtaWljX3Byb2JlLFxcbiA4Njc6XFx0XFx0LnJlbW92ZSA9IG1paWNfcmVtb3ZlLFxcbiA4Njg6XFx0fTtcXG4gODY5OlxcdG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobWlpY19kcml2ZXIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNTozMzo1NS44ODc4OTQ2NTNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDMxMTg3Mzc4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBtaWljX2RyaXZlcmAgYW5kIGl0cyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBtaWljX2RyaXZlcmAuIFNlZW1zIGxpa2UgaXQncyBhIHBsYXRmb3JtIGRyaXZlciwgdXNpbmcgYW4gT0YgbWF0Y2ggdGFibGUsIHNwZWNpZmljYWxseSBmb3IgUmVuZXNhcyBTb0NzIGxpa2UgdGhlIFJaL04xIGFuZCBSWi9UMkgsIHdpdGggdGhhdCBgcmVuZXNhcyxyOWEwOWcwNzctbWlpY2AgYW5kIGByZW5lc2FzLHJ6bjEtbWlpY2AgY29tcGF0aWJpbGl0eSBzdHJpbmdzLiBUaGUgYC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZWAgYml0IGNhdGNoZXMgbXkgZXllIOKAkyBpbnRlcmVzdGluZy5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciB0aGlzIGhhcmR3YXJlLCBhbmQgYnkgZXh0ZW5zaW9uIHRoaXMgZHJpdmVyLCBpcyBldmVuIGFjY2Vzc2libGUgd2l0aGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFdlIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIHByYWN0aWNhbGx5IGZ1enphYmxlLlxuXG5UaGF0IHRha2VzIG1lIHRvIHRoZSBydWxlc2V0OiBpdCdzIGEgbm8tZ28gaWYgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIHNldHVwcywgZXZlbiBpZiB0aGUgaGFyZHdhcmUgaXMgc29mdHdhcmUtZW11bGF0ZWQuIFZlbmRvci1zcGVjaWZpYyBzdHVmZiByZXF1aXJpbmcgYWN0dWFsIFBDSWUgY2FyZHMgaXMgYWxzbyBvZmYgdGhlIHRhYmxlLiBUaGlzIGRyaXZlciBjb3VsZCBiZSBpbiB0cm91YmxlLlxuXG5TbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaXMgaW5zdGFudGlhdGVkIG9yIHVzZWQuIEknbGwgY2hlY2sgdG8gc2VlIGlmIGBwY3MtcnpuMS1taWljYCBpcyBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlLiBMZXQncyBzdGFydCB3aXRoIGEgYGdyZXBgIGZvciBgbWlpY19jcmVhdGVgIG9yIGFueSByZWxldmFudCBleHBvcnRzL2Z1bmN0aW9ucyB3aXRoaW4gYHBjcy1yem4xLW1paWMuY2AuIFRoYXQgc2hvdWxkIHJldmVhbCB0aGUgaW50ZXJhY3Rpb24gcG9pbnRzIGFuZCB3aGV0aGVyIGl0J3MgdGllZCB0byBzb21lIGRlZXBseSBzcGVjaWZpYyBoYXJkd2FyZSwgb3IgaWYgdGhlcmUncyBhIGNoYW5jZSBvZiB0cmlnZ2VyaW5nIGl0IHdpdGhvdXQgYSBwaHlzaWNhbCBSZW5lc2FzIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTE0NywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA1OjM0OjAwLjE5OTc3MTE1OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxNDQwNTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1paWNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTExNDc9c3RhdGljIHZvaWQgYTVwc3dfcGNzX2ZyZWUoc3RydWN0IGE1cHN3ICphNXBzdylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE1Mi1cXHRcXHRpZiAoYTVwc3ctXFx1MDAzZXBjc1tpXSlcXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jOjExNTM6XFx0XFx0XFx0bWlpY19kZXN0cm95KGE1cHN3LVxcdTAwM2VwY3NbaV0pO1xcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE1NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTExNTc9c3RhdGljIGludCBhNXBzd19wY3NfZ2V0KHN0cnVjdCBhNXBzdyAqYTVwc3cpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExODItXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYzoxMTgzOlxcdFxcdHBjcyA9IG1paWNfY3JlYXRlKGE1cHN3LVxcdTAwM2VkZXYsIHBjc19ub2RlKTtcXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExODQtXFx0XFx0aWYgKElTX0VSUihwY3MpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM9NjM9c3RhdGljIGludCByZW5lc2FzX2dtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTcwLVxcdGlmIChwY3Nfbm9kZSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzo3MTpcXHRcXHRwY3MgPSBtaWljX2NyZWF0ZShwcml2LVxcdTAwM2VkZXZpY2UsIHBjc19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtNzItXFx0XFx0b2Zfbm9kZV9wdXQocGNzX25vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTgyPXN0YXRpYyB2b2lkIHJlbmVzYXNfZ21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtODQtXFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM6ODU6XFx0XFx0bWlpY19kZXN0cm95KHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3Bjcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTg2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYz0xNj1zdGF0aWMgaW50IHJ6bjFfZHdtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTI0LVxcdGlmIChwY3Nfbm9kZSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzoyNTpcXHRcXHRwY3MgPSBtaWljX2NyZWF0ZShwcml2LVxcdTAwM2VkZXZpY2UsIHBjc19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtMjYtXFx0XFx0b2Zfbm9kZV9wdXQocGNzX25vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTM2PXN0YXRpYyB2b2lkIHJ6bjFfZHdtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTM4LVxcdGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjM5OlxcdFxcdG1paWNfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy00MC19XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jPTE3Nz1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHJ6dDJoX3Jlc2V0X2lkc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0xODItLyoqXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoxODM6ICogc3RydWN0IG1paWNfcGh5X2xpbmtfY2ZnIC0gTUlJQyBQSFlfTElOSyBjb25maWd1cmF0aW9uXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0xODQtICogQG1hc2s6IE1hc2sgb2YgcGh5X2xpbmsgYml0c1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0xODYtICovXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoxODc6c3RydWN0IG1paWNfcGh5X2xpbmtfY2ZnIHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE4OC1cXHR1MzIgbWFzaztcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM9MjAxPXN0cnVjdCBtaWljIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjA1LVxcdHN0cnVjdCByZXNldF9jb250cm9sX2J1bGtfZGF0YSByc3RzW01JSUNfTUFYX05VTV9SU1RTXTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIwNjpcXHRjb25zdCBzdHJ1Y3QgbWlpY19vZl9kYXRhICpvZl9kYXRhO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjA3OlxcdHN0cnVjdCBtaWljX3BoeV9saW5rX2NmZyBsaW5rX2NmZztcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIwOC19O1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjA5LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjEwOmVudW0gbWlpY190eXBlIHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIxMS1cXHRNSUlDX1RZUEVfUlpOMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjE1LS8qKlxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjE2OiAqIHN0cnVjdCBtaWljX29mX2RhdGEgLSBPRiBkYXRhIGZvciBNSUkgY29udmVydGVyXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMTctICogQG1hdGNoX3RhYmxlOiBNYXRjaGluZyB0YWJsZSBmb3IgY29udmN0cmwgY29uZmlndXJhdGlvblxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMjMtICogQGluZGV4X3RvX3N0cmluZ19jb3VudDogTnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGluZGV4X3RvX3N0cmluZyBhcnJheVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjI0OiAqIEBtaWljX3BvcnRfc3RhcnQ6IE1JSUMgcG9ydCBzdGFydCBudW1iZXJcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIyNTogKiBAbWlpY19wb3J0X21heDogTWF4aW11bSBNSUlDIHN1cHBvcnRlZFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjI2LSAqIEBzd19tb2RlX21hc2s6IFN3aXRjaCBtb2RlIG1hc2tcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjMwLSAqICBiZWZvcmUgYWNjZXNzLlxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjMxOiAqIEBtaWljX3dyaXRlOiBGdW5jdGlvbiBwb2ludGVyIHRvIHdyaXRlIGEgdmFsdWUgdG8gYSBNSUlDIHJlZ2lzdGVyXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMzItICogQHR5cGU6IFR5cGUgb2YgTUlJQ1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjMzLSAqL1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjM0OnN0cnVjdCBtaWljX29mX2RhdGEge1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjM1LVxcdHN0cnVjdCBtb2RjdHJsX21hdGNoICptYXRjaF90YWJsZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjQxLVxcdHU4IGluZGV4X3RvX3N0cmluZ19jb3VudDtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI0MjpcXHR1OCBtaWljX3BvcnRfc3RhcnQ7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNDM6XFx0dTggbWlpY19wb3J0X21heDtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI0NC1cXHR1OCBzd19tb2RlX21hc2s7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI0Ny1cXHRib29sIGluaXRfdW5sb2NrX2xvY2tfcmVncztcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI0ODpcXHR2b2lkICgqbWlpY193cml0ZSkoc3RydWN0IG1paWMgKm1paWMsIGludCBvZmZzZXQsIHUzMiB2YWx1ZSk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNDk6XFx0ZW51bSBtaWljX3R5cGUgdHlwZTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI1MC19O1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNTItLyoqXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNTM6ICogc3RydWN0IG1paWNfcG9ydCAtIFBlciBwb3J0IE1JSSBjb252ZXJ0ZXIgc3RydWN0XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNTQtICogQG1paWM6IGJhY2tpbGluZyB0byBNSUkgY29udmVydGVyIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNTgtICovXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNTk6c3RydWN0IG1paWNfcG9ydCB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNjAtXFx0c3RydWN0IG1paWMgKm1paWM7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI2NS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI2NjpzdGF0aWMgc3RydWN0IG1paWNfcG9ydCAqcGh5bGlua19wY3NfdG9fbWlpY19wb3J0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjY3LXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI2ODpcXHRyZXR1cm4gY29udGFpbmVyX29mKHBjcywgc3RydWN0IG1paWNfcG9ydCwgcGNzKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI2OS19XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNzAtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNzE6c3RhdGljIHZvaWQgbWlpY191bmxvY2tfcmVncyhzdHJ1Y3QgbWlpYyAqbWlpYylcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI3OS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI4MDpzdGF0aWMgdm9pZCBtaWljX2xvY2tfcmVncyhzdHJ1Y3QgbWlpYyAqbWlpYylcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI4MS17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI4NS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI4NjpzdGF0aWMgdm9pZCBtaWljX3JlZ193cml0ZWxfdW5sb2NrZWQoc3RydWN0IG1paWMgKm1paWMsIGludCBvZmZzZXQsIHUzMiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI4Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI5MC1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI5MTpzdGF0aWMgdm9pZCBtaWljX3JlZ193cml0ZWxfbG9ja2VkKHN0cnVjdCBtaWljICptaWljLCBpbnQgb2Zmc2V0LCB1MzIgdmFsdWUpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTIte1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjkzOlxcdG1paWNfdW5sb2NrX3JlZ3MobWlpYyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTQtXFx0d3JpdGVsKHZhbHVlLCBtaWljLVxcdTAwM2ViYXNlICsgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI5NTpcXHRtaWljX2xvY2tfcmVncyhtaWljKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI5Ni19XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTctXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyOTg6c3RhdGljIHZvaWQgbWlpY19yZWdfd3JpdGVsKHN0cnVjdCBtaWljICptaWljLCBpbnQgb2Zmc2V0LCB1MzIgdmFsdWUpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTkte1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzAwOlxcdG1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZW1paWNfd3JpdGUobWlpYywgb2Zmc2V0LCB2YWx1ZSk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMDEtfVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzAyLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzAzOnN0YXRpYyB1MzIgbWlpY19yZWdfcmVhZGwoc3RydWN0IG1paWMgKm1paWMsIGludCBvZmZzZXQpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMDQte1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMDctXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMDg6c3RhdGljIHZvaWQgbWlpY19yZWdfcm13KHN0cnVjdCBtaWljICptaWljLCBpbnQgb2Zmc2V0LCB1MzIgbWFzaywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMwOS17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMxMy1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMxNDpcXHRyZWcgPSBtaWljX3JlZ19yZWFkbChtaWljLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzE1LVxcdHJlZyBcXHUwMDI2PSB+bWFzaztcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMxNi1cXHRyZWcgfD0gdmFsO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzE3OlxcdG1paWNfcmVnX3dyaXRlbChtaWljLCBvZmZzZXQsIHJlZyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMTgtXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMyMS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMyMjpzdGF0aWMgdm9pZCBtaWljX2NvbnZlcnRlcl9lbmFibGUoc3RydWN0IG1paWMgKm1paWMsIGludCBwb3J0LCBpbnQgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzI4LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzI5OlxcdG1paWNfcmVnX3JtdyhtaWljLCBNSUlDX0NPTlZSU1QsIE1JSUNfQ09OVlJTVF9QSFlJRl9SU1QocG9ydCksIHZhbCk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMzAtfVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzMxLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzMyOnN0YXRpYyBpbnQgbWlpY19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMzMy1cXHRcXHQgICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzM1LXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMzNjpcXHRzdHJ1Y3QgbWlpY19wb3J0ICptaWljX3BvcnQgPSBwaHlsaW5rX3Bjc190b19taWljX3BvcnQocGNzKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMzNzpcXHRzdHJ1Y3QgbWlpYyAqbWlpYyA9IG1paWNfcG9ydC1cXHUwMDNlbWlpYztcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMzOC1cXHR1MzIgc3BlZWQsIGNvbnZfbW9kZSwgdmFsLCBtYXNrO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzM5OlxcdGludCBwb3J0ID0gbWlpY19wb3J0LVxcdTAwM2Vwb3J0O1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzQwLVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zNzAtXFx0ICovXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozNzE6XFx0aWYgKGludGVyZmFjZSAhPSBtaWljX3BvcnQtXFx1MDAzZWludGVyZmFjZSkge1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzcyLVxcdFxcdHZhbCB8PSBGSUVMRF9QUkVQKE1JSUNfQ09OVkNUUkxfQ09OVl9TUEVFRCwgc3BlZWQpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzczLVxcdFxcdG1hc2sgfD0gTUlJQ19DT05WQ1RSTF9DT05WX1NQRUVEO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mzc0OlxcdFxcdG1paWNfcG9ydC1cXHUwMDNlaW50ZXJmYWNlID0gaW50ZXJmYWNlO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzc1LVxcdH1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM3Ni1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM3NzpcXHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19DT05WQ1RSTChwb3J0KSwgbWFzaywgdmFsKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM3ODpcXHRtaWljX2NvbnZlcnRlcl9lbmFibGUobWlpYywgbWlpY19wb3J0LVxcdTAwM2Vwb3J0LCAxKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzgyLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzgzOnN0YXRpYyB2b2lkIG1paWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzg0LVxcdFxcdFxcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLCBpbnQgc3BlZWQsIGludCBkdXBsZXgpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zODUte1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mzg2OlxcdHN0cnVjdCBtaWljX3BvcnQgKm1paWNfcG9ydCA9IHBoeWxpbmtfcGNzX3RvX21paWNfcG9ydChwY3MpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mzg3OlxcdHN0cnVjdCBtaWljICptaWljID0gbWlpY19wb3J0LVxcdTAwM2VtaWljO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzg4LVxcdHUzMiBjb252X3NwZWVkID0gMCwgdmFsID0gMDtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM4OTpcXHRpbnQgcG9ydCA9IG1paWNfcG9ydC1cXHUwMDNlcG9ydDtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM5MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDEyLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDEzOlxcdG1paWNfcmVnX3JtdyhtaWljLCBNSUlDX0NPTlZDVFJMKHBvcnQpLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDE0LVxcdFxcdCAgICAgKE1JSUNfQ09OVkNUUkxfQ09OVl9TUEVFRCB8IE1JSUNfQ09OVkNUUkxfRlVMTEQpLCB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MTYtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0MTc6c3RhdGljIGludCBtaWljX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDE4LXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQxOTpcXHRzdHJ1Y3QgbWlpY19wb3J0ICptaWljX3BvcnQgPSBwaHlsaW5rX3Bjc190b19taWljX3BvcnQocGNzKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQyMDpcXHRzdHJ1Y3QgbWlpYyAqbWlpYyA9IG1paWNfcG9ydC1cXHUwMDNlbWlpYztcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQyMS1cXHR1MzIgdmFsLCBtYXNrO1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MjktXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0MzA6XFx0XFx0bWlpY19wb3J0LVxcdTAwM2VpbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfUk1JSTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQzMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDM1LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDM2OlxcdFxcdG1paWNfcmVnX3JtdyhtaWljLCBNSUlDX0NPTlZDVFJMKG1paWNfcG9ydC1cXHUwMDNlcG9ydCksIG1hc2ssIHZhbCk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MzctXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0Mzg6XFx0XFx0bWlpY19jb252ZXJ0ZXJfZW5hYmxlKG1paWMsIG1paWNfcG9ydC1cXHUwMDNlcG9ydCwgMSk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MzktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00NDMtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0NDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgbWlpY19waHlsaW5rX29wcyA9IHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ0NTpcXHQucGNzX2NvbmZpZyA9IG1paWNfY29uZmlnLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDQ2OlxcdC5wY3NfbGlua191cCA9IG1paWNfbGlua191cCxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ0NzpcXHQucGNzX3ByZV9pbml0ID0gbWlpY19wcmVfaW5pdCxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ0OC19O1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDQ5LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDUwOnN0cnVjdCBwaHlsaW5rX3BjcyAqbWlpY19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDUxLXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ1MjpcXHRjb25zdCBzdHJ1Y3QgbWlpY19vZl9kYXRhICpvZl9kYXRhO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDUzLVxcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0NTQ6XFx0c3RydWN0IG1paWNfcG9ydCAqbWlpY19wb3J0O1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDU1LVxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25wO1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00ODQtXFx0b2ZfZGF0YSA9IG1paWMtXFx1MDAzZW9mX2RhdGE7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0ODU6XFx0aWYgKHBvcnQgXFx1MDAzZSBvZl9kYXRhLVxcdTAwM2VtaWljX3BvcnRfbWF4IHx8IHBvcnQgXFx1MDAzYyBvZl9kYXRhLVxcdTAwM2VtaWljX3BvcnRfc3RhcnQpIHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ4Ni1cXHRcXHRwdXRfZGV2aWNlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00ODktXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0OTA6XFx0bWlpY19wb3J0ID0ga3phbGxvY19vYmooKm1paWNfcG9ydCk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0OTE6XFx0aWYgKCFtaWljX3BvcnQpIHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ5Mi1cXHRcXHRwdXRfZGV2aWNlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00OTgtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0OTk6XFx0bWlpY19wb3J0LVxcdTAwM2VtaWljID0gbWlpYztcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwMDpcXHRtaWljX3BvcnQtXFx1MDAzZXBvcnQgPSBwb3J0IC0gb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X3N0YXJ0O1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTAxOlxcdG1paWNfcG9ydC1cXHUwMDNlcGNzLm9wcyA9IFxcdTAwMjZtaWljX3BoeWxpbmtfb3BzO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTAyLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTAzOlxcdHBoeV9pbnRlcmZhY2Vfc2V0X3JnbWlpKG1paWNfcG9ydC1cXHUwMDNlcGNzLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwNDpcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUksIG1paWNfcG9ydC1cXHUwMDNlcGNzLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwNTpcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX01JSSwgbWlpY19wb3J0LVxcdTAwM2VwY3Muc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTA2LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTA3OlxcdHJldHVybiBcXHUwMDI2bWlpY19wb3J0LVxcdTAwM2VwY3M7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MDgtfVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTA5OkVYUE9SVF9TWU1CT0wobWlpY19jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTEwLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTExOnZvaWQgbWlpY19kZXN0cm95KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTEyLXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUxMzpcXHRzdHJ1Y3QgbWlpY19wb3J0ICptaWljX3BvcnQgPSBwaHlsaW5rX3Bjc190b19taWljX3BvcnQocGNzKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUxNC1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUxNTpcXHRtaWljX2NvbnZlcnRlcl9lbmFibGUobWlpY19wb3J0LVxcdTAwM2VtaWljLCBtaWljX3BvcnQtXFx1MDAzZXBvcnQsIDApO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTE2OlxcdGtmcmVlKG1paWNfcG9ydCk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MTctfVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTE4OkVYUE9SVF9TWU1CT0wobWlpY19kZXN0cm95KTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUxOS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUyMDpzdGF0aWMgaW50IG1paWNfaW5pdF9odyhzdHJ1Y3QgbWlpYyAqbWlpYywgdTMyIGNmZ19tb2RlKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTI5LVxcdGlmIChtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2Vpbml0X3VubG9ja19sb2NrX3JlZ3MpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MzA6XFx0XFx0bWlpY191bmxvY2tfcmVncyhtaWljKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUzMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTM0LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTM1OlxcdG1paWNfcmVnX3dyaXRlbChtaWljLCBNSUlDX01PRENUUkwsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MzYtXFx0XFx0XFx0KChjZmdfbW9kZSBcXHUwMDNjXFx1MDAzYyBfX2Zmcyhzd19tb2RlX21hc2spKSBcXHUwMDI2IHN3X21vZGVfbWFzaykpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTM3LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTM4OlxcdGZvciAocG9ydCA9IDA7IHBvcnQgXFx1MDAzYyBtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2VtaWljX3BvcnRfbWF4OyBwb3J0KyspIHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUzOTpcXHRcXHRtaWljX2NvbnZlcnRlcl9lbmFibGUobWlpYywgcG9ydCwgMCk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NDAtXFx0XFx0LyogRGlzYWJsZSBzcGVlZC9kdXBsZXggY29udHJvbCBmcm9tIHRoZXNlIHJlZ2lzdGVycywgZGF0YXNoZWV0XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU0My1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU0NDpcXHRcXHRtaWljX3JlZ193cml0ZWwobWlpYywgTUlJQ19TV0NUUkwsIDB4MCk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1NDU6XFx0XFx0bWlpY19yZWdfd3JpdGVsKG1paWMsIE1JSUNfU1dEVVBDLCAweDApO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTQ2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTUwLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTUxOnN0YXRpYyBib29sIG1paWNfbW9kY3RybF9tYXRjaChzOCAqdGFibGVfdmFsLCBzOCAqZHRfdmFsLCB1OCBjb3VudClcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU1Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU2NS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU2NjpzdGF0aWMgdm9pZCBtaWljX2R1bXBfY29uZihzdHJ1Y3QgbWlpYyAqbWlpYywgczggKmNvbmYpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01Njcte1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTY4OlxcdGNvbnN0IHN0cnVjdCBtaWljX29mX2RhdGEgKm9mX2RhdGEgPSBtaWljLVxcdTAwM2VvZl9kYXRhO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTY5LVxcdGNvbnN0IGNoYXIgKmNvbmZfbmFtZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTgyLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTgzOnN0YXRpYyBpbnQgbWlpY19tYXRjaF9kdF9jb25mKHN0cnVjdCBtaWljICptaWljLCBzOCAqZHRfdmFsLCB1MzIgKm1vZGVfY2ZnKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTg0LXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU4NTpcXHRjb25zdCBzdHJ1Y3QgbWlpY19vZl9kYXRhICpvZl9kYXRhID0gbWlpYy1cXHUwMDNlb2ZfZGF0YTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU4Ni1cXHRzdHJ1Y3QgbW9kY3RybF9tYXRjaCAqdGFibGVfZW50cnk7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU5MS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU5MjpcXHRcXHRpZiAobWlpY19tb2RjdHJsX21hdGNoKHRhYmxlX2VudHJ5LVxcdTAwM2Vjb252LCBkdF92YWwsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01OTMtXFx0XFx0XFx0XFx0ICAgICAgIG1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZWNvbmZfY29udl9jb3VudCkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTk5LVxcdGRldl9lcnIobWlpYy1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGFwcGx5IHJlcXVlc3RlZCBjb25maWd1cmF0aW9uXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjYwMDpcXHRtaWljX2R1bXBfY29uZihtaWljLCBkdF92YWwpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjAxLVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy02MDQtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo2MDU6c3RhdGljIHZvaWQgbWlpY19jb25maWd1cmVfcGh5X2xpbmsoc3RydWN0IG1paWMgKm1paWMsIHUzMiBjb25mLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjA2LVxcdFxcdFxcdFxcdCAgICB1MzIgcG9ydCwgYm9vbCBhY3RpdmVfbG93KVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy02NzItXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo2NzM6c3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjk0LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Njk1OlxcdFxcdGlmIChwb3J0IFxcdTAwM2MgbWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X3N0YXJ0IHx8IHBvcnQgXFx1MDAzZSBtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2VtaWljX3BvcnRfbWF4KSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy02OTYtXFx0XFx0XFx0ZGV2X2VycihtaWljLVxcdTAwM2VkZXYsIFxcXCJQb3J0IG51bWJlciBvdXQgb2YgcmFuZ2U6ICVkXFxcXG5cXFwiLCBwb3J0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzAzLVxcdFxcdC8qIEFkanVzdCBmb3IgMCBiYXNlZCBpbmRleCAqL1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzA0OlxcdFxcdGR0X3ZhbFtwb3J0ICsgIW1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZW1paWNfcG9ydF9zdGFydF0gPSBjb25mO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzA1LVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MDctXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3MDg6XFx0XFx0bWlpY19jb25maWd1cmVfcGh5X2xpbmsobWlpYywgY29uZiwgcG9ydCwgYWN0aXZlX2xvdyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MDktXFx0fVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzEwLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzExOlxcdHJldCA9IG1paWNfbWF0Y2hfZHRfY29uZihtaWljLCBkdF92YWwsIG1vZGVfY2ZnKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcxMi1cXHRrZnJlZShkdF92YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MTYtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3MTc6c3RhdGljIHZvaWQgbWlpY19yZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0KHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MTgte1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MjYtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3Mjc6c3RhdGljIGludCBtaWljX3Jlc2V0X2NvbnRyb2xfaW5pdChzdHJ1Y3QgbWlpYyAqbWlpYylcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcyOC17XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3Mjk6XFx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YSA9IG1paWMtXFx1MDAzZW9mX2RhdGE7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MzAtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gbWlpYy1cXHUwMDNlZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03NTAtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3NTE6XFx0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgbWlpY19yZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0LFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzUyLVxcdFxcdFxcdFxcdCAgICAgICBtaWljKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzU4LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzU5OnN0YXRpYyBpbnQgbWlpY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzYwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzcyLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzczOlxcdHJldCA9IG1paWNfcGFyc2VfZHQobWlpYywgXFx1MDAyNm1vZGVfY2ZnKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc3NC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzgxLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzgyOlxcdHJldCA9IG1paWNfcmVzZXRfY29udHJvbF9pbml0KG1paWMpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzgzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc5My1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjc5NDpcXHRyZXQgPSBtaWljX2luaXRfaHcobWlpYywgbW9kZV9jZmcpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzk1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc5Ny1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjc5ODpcXHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19QSFlfTElOSywgbWlpYy1cXHUwMDNlbGlua19jZmcubWFzaywgbWlpYy1cXHUwMDNlbGlua19jZmcudmFsKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc5OS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgwMDpcXHQvKiBtaWljX2NyZWF0ZSgpIHJlbGllcyBvbiB0aGF0IGZhY3QgdGhhdCBkYXRhIGFyZSBhdHRhY2hlZCB0byB0aGVcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgwMS1cXHQgKiBwbGF0Zm9ybSBkZXZpY2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBkcml2ZXIgaXMgcmVhZHkgc28gdGhpcyBuZWVkcyB0b1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MTQtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4MTU6c3RhdGljIHZvaWQgbWlpY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgxNi17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgxOS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgyMDpzdGF0aWMgc3RydWN0IG1paWNfb2ZfZGF0YSByem4xX21paWNfb2ZfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgyMS1cXHQubWF0Y2hfdGFibGUgPSBtb2RjdHJsX21hdGNoX3RhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MjctXFx0LmluZGV4X3RvX3N0cmluZ19jb3VudCA9IEFSUkFZX1NJWkUoaW5kZXhfdG9fc3RyaW5nKSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgyODpcXHQubWlpY19wb3J0X3N0YXJ0ID0gMSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgyOTpcXHQubWlpY19wb3J0X21heCA9IDUsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MzAtXFx0LnN3X21vZGVfbWFzayA9IEdFTk1BU0soNCwgMCksXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MzEtXFx0LmluaXRfdW5sb2NrX2xvY2tfcmVncyA9IHRydWUsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4MzI6XFx0Lm1paWNfd3JpdGUgPSBtaWljX3JlZ193cml0ZWxfdW5sb2NrZWQsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MzMtXFx0LnR5cGUgPSBNSUlDX1RZUEVfUlpOMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODM1LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODM2OnN0YXRpYyBzdHJ1Y3QgbWlpY19vZl9kYXRhIHJ6dDJoX21paWNfb2ZfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgzNy1cXHQubWF0Y2hfdGFibGUgPSByenQyaF9tb2RjdHJsX21hdGNoX3RhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NDMtXFx0LmluZGV4X3RvX3N0cmluZ19jb3VudCA9IEFSUkFZX1NJWkUocnp0MmhfaW5kZXhfdG9fc3RyaW5nKSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg0NDpcXHQubWlpY19wb3J0X3N0YXJ0ID0gMCxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg0NTpcXHQubWlpY19wb3J0X21heCA9IDQsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NDYtXFx0LnN3X21vZGVfbWFzayA9IEdFTk1BU0soMiwgMCksXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg0OC1cXHQucmVzZXRfY291bnQgPSBBUlJBWV9TSVpFKHJ6dDJoX3Jlc2V0X2lkcyksXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NDk6XFx0Lm1paWNfd3JpdGUgPSBtaWljX3JlZ193cml0ZWxfbG9ja2VkLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODUwLVxcdC50eXBlID0gTUlJQ19UWVBFX1JaVDJILFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NTItXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NTM6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWlpY19vZl9tdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg1NDpcXHR7IC5jb21wYXRpYmxlID0gXFxcInJlbmVzYXMscjlhMDlnMDc3LW1paWNcXFwiLCAuZGF0YSA9IFxcdTAwMjZyenQyaF9taWljX29mX2RhdGEgfSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg1NTpcXHR7IC5jb21wYXRpYmxlID0gXFxcInJlbmVzYXMscnpuMS1taWljXFxcIiwgLmRhdGEgPSBcXHUwMDI2cnpuMV9taWljX29mX2RhdGEgfSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg1Ni1cXHR7IC8qIHNlbnRpbmVsICovIH1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg1Ny19O1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODU4Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1paWNfb2ZfbXRhYmxlKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg1OS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg2MDpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtaWljX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg2MS1cXHQuZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NjMtXFx0XFx0LnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODY0OlxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IG1paWNfb2ZfbXRhYmxlLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODY1LVxcdH0sXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NjY6XFx0LnByb2JlID0gbWlpY19wcm9iZSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg2NzpcXHQucmVtb3ZlID0gbWlpY19yZW1vdmUsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NjgtfTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg2OTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1paWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg3MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDU6MzQ6MDAuMzMxMjE3MzA2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwMDIyNzE5MzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIGBwY3MtcnpuMS1taWljLmNgIGFuZCBGdXp6aW5nIEZlYXNpYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYHBjcy1yem4xLW1paWMuY2AgaXMgYSBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgaGFyZHdhcmUgY29tcG9uZW50OiBhIFBoeXNpY2FsIENvZGluZyBTdWJsYXllciAoUENTKSAvIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSAoTUlJKSBjb252ZXJ0ZXIsIGJ1dCAqb25seSogZm9yIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0NzLiBUaGlzIGlzIGltcG9ydGFudC4gSXQncyBwcm9iZWQgdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUsIGFuZCBpbXBvcnRhbnRseSwgdGhlIGJpbmRpbmcgaXMgc3VwcHJlc3NlZCwgbWVhbmluZyBpdCdzIHRpZWQgdG8gdGhpcyB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGVudmlyb25tZW50LiBJdCdzIG5vdCBkeW5hbWljYWxseSBsb2FkYWJsZSB0aHJvdWdoIHN5c2ZzLCBhbmQgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gbGlrZSBRRU1VIG9yIEdDRSAqZG9lc24ndCogZW11bGF0ZSB0aGUgUmVuZXNhcyBSWi9OMSBNSUlDIGhhcmR3YXJlLiBUaGVyZWZvcmUsIHRoZSBjb2RlIHBhdGhzIHdpdGhpbiBgbWlpY19wcm9iZWAgYW5kIGNvbnNlcXVlbnRseSBgbWlpY19wYXJzZV9kdGAgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gdGhlc2UgdHlwaWNhbCBmdXp6aW5nIHNldHVwcywgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLlxuXG5Ob3csIGxldCdzIGNvbXBhcmUgdGhpcyB0byB0aGUgZnV6emluZyBndWlkZWxpbmVzLiBUaGUga2V5IHBvaW50IGhlcmUgaXM6IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLlwiIFRoaXMgKmRpcmVjdGx5KiBhcHBsaWVzIHRvIHRoaXMgZHJpdmVyLlxuXG5JJ3ZlIGV4YW1pbmVkIHRoZSBzcGVjaWZpYyBwYXRjaC4gVGhlIG1vZGlmaWNhdGlvbnMgYXJlIHdpdGhpbiBgbWlpY19wYXJzZV9kdGA6IHplcm9pbmcgYSBkYXRhIHN0cnVjdHVyZSBhbmQgYWRkaW5nIGEgcG9ydCByYW5nZSBjaGVjay4gVGhlIGNydWNpYWwgdGhpbmcgaXMgdGhhdCBgbWlpY19wYXJzZV9kdGAgaXMgKm9ubHkqIGNhbGxlZCBmcm9tIGBtaWljX3Byb2JlYCwgd2hpY2gsIGFzIHdlIGVzdGFibGlzaGVkLCBpcyAqb25seSogaW52b2tlZCBkdXJpbmcgYSBwbGF0Zm9ybSBkZXZpY2UgcHJvYmUgZm9yIHRoaXMgc3BlY2lmaWMgUmVuZXNhcyBNSUkgY29udmVydGVyIGhhcmR3YXJlIGluIGEgZGV2aWNlIHRyZWUgc2V0dXAuIFRoaXMgY29uZmlybXMgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LlxuXG5UaGVyZWZvcmUsIGFwcGx5aW5nIHRoZXNlIGd1aWRlbGluZXMsIHRoZXJlIGlzIG5vIHZhbHVlIGluIHRhcmdldGluZyB0aGlzIHNwZWNpZmljIGRyaXZlciBmb3IgZnV6emluZy4gVGhlIHBhdGNoIGlzIG5vdCByZWxldmFudCBmb3IgbXkgYXJlYSBvZiBleHBlcnRpc2UuXG5cbk15IGNvbmNsdXNpb24gaXM6XG5cbi0gICAqKldvcnRoRnV6emluZzogZmFsc2UqKlxuLSAgICoqRm9jdXNTeW1ib2xzOiBcXFsgXSoqXG4tICAgKipFbmFibGVDb25maWdzOiBcXFsgXSoqXG4tICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIG1vZGlmaWVzIERldmljZSBUcmVlIChEVCkgcGFyc2luZyBpbiB0aGUgUmVuZXNhcyBSWi9OMSAvIFJaL1QySCBQQ1MgKE1JSSBjb252ZXJ0ZXIpIHBsYXRmb3JtIGRyaXZlciAoYGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNgKS4gVGhpcyBoYXJkd2FyZSBpcyBzcGVjaWZpYyB0byBSZW5lc2FzIFNvQ3MgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhpcyBtYWtlcyB0aGUgcGF0Y2ggdW5pbnRlcmVzdGluZyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgYXMgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHRoZXNlIGVudmlyb25tZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0NzYsIk91dHB1dFRva2VucyI6MTA4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA1OjM0OjEwLjM1MzkzOTg0M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIERldmljZSBUcmVlIHBhcnNpbmcgYW5kIHZhbGlkYXRpb24gaW4gdGhlIFJlbmVzYXMgUlovTjEvVDJIIE1JSSBDb252ZXJ0ZXIgKFBDUykgcGxhdGZvcm0gZHJpdmVyIChkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jKS4gVGhpcyBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gUmVuZXNhcyBTb0MgaGFyZHdhcmUgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgRGV2aWNlIFRyZWUgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBpbiB0aGUgUmVuZXNhcyBSWi9OMS9UMkggTUlJIENvbnZlcnRlciAoUENTKSBwbGF0Zm9ybSBkcml2ZXIgKGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMpLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBSZW5lc2FzIFNvQyBoYXJkd2FyZSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNTozNDoxMC4zNTM5NjYxMDNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow8l5gj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-02 05:32:20 +0000 UTC FinishedAt: 2026-09-02 05:34:12 +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+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgRGV2aWNlIFRyZWUgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBpbiB0aGUgUmVuZXNhcyBSWi9OMS9UMkggTUlJIENvbnZlcnRlciAoUENTKSBwbGF0Zm9ybSBkcml2ZXIgKGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMpLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBSZW5lc2FzIFNvQyBoYXJkd2FyZSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTk4MTQ3NGUzNDUxYTBlMjIzMjEyNDdjN2M4YmVlMTg5NTJkMWMwY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMDU6MzM6MzMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNcbmluZGV4IDJiNzJmYTk4ZGRmMTMuLmViZDczZWQ2Mzg5NjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jXG5AQCAtNjgzLDcgJiM0Mzs2ODMsNyBAQCBzdGF0aWMgaW50IG1paWNfcGFyc2VfZHQoc3RydWN0IG1paWMgKm1paWMsIHUzMiAqbW9kZV9jZmcpXG4gXHRpZiAoIWR0X3ZhbClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRtZW1zZXQoZHRfdmFsLCBNSUlDX01PRENUUkxfQ09ORl9OT05FLCBzaXplb2YoKmR0X3ZhbCkpO1xuJiM0MztcdG1lbXNldChkdF92YWwsIE1JSUNfTU9EQ1RSTF9DT05GX05PTkUsIHNpemVvZigqZHRfdmFsKSAqIG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2Vjb25mX2NvbnZfY291bnQpO1xuIFxuIFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcJiMzNDtyZW5lc2FzLG1paWMtc3dpdGNoLXBvcnRpblwmIzM0OywgXHUwMDI2Y29uZikgPT0gMClcbiBcdFx0ZHRfdmFsWzBdID0gY29uZjtcbkBAIC02OTIsNiAmIzQzOzY5MiwxMSBAQCBzdGF0aWMgaW50IG1paWNfcGFyc2VfZHQoc3RydWN0IG1paWMgKm1paWMsIHUzMiAqbW9kZV9jZmcpXG4gXHRcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCBcJiMzNDtyZWdcJiMzNDssIFx1MDAyNnBvcnQpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuJiM0MztcdFx0aWYgKHBvcnQgXHUwMDNjIG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2VtaWljX3BvcnRfc3RhcnQgfHwgcG9ydCBcdTAwM2UgbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9tYXgpIHtcbiYjNDM7XHRcdFx0ZGV2X2VycihtaWljLVx1MDAzZWRldiwgXCYjMzQ7UG9ydCBudW1iZXIgb3V0IG9mIHJhbmdlOiAlZFxcblwmIzM0OywgcG9ydCk7XG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKGNvbnYsIFwmIzM0O3JlbmVzYXMsbWlpYy1pbnB1dFwmIzM0OywgXHUwMDI2Y29uZikpXG4gXHRcdFx0Y29udGludWU7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDU6MzM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgRGV2aWNlIFRyZWUgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBpbiB0aGUgUmVuZXNhcyBSWi9OMS9UMkggTUlJIENvbnZlcnRlciAoUENTKSBwbGF0Zm9ybSBkcml2ZXIgKGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMpLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBSZW5lc2FzIFNvQyBoYXJkd2FyZSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTk4MTQ3NGUzNDUxYTBlMjIzMjEyNDdjN2M4YmVlMTg5NTJkMWMwYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMDU6MzM6MzMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYwppbmRleCAyYjcyZmE5OGRkZjEzLi5lYmQ3M2VkNjM4OTY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMKQEAgLTY4Myw3ICYjNDM7NjgzLDcgQEAgc3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKQogCWlmICghZHRfdmFsKQogCQlyZXR1cm4gLUVOT01FTTsKIAotCW1lbXNldChkdF92YWwsIE1JSUNfTU9EQ1RSTF9DT05GX05PTkUsIHNpemVvZigqZHRfdmFsKSk7CiYjNDM7CW1lbXNldChkdF92YWwsIE1JSUNfTU9EQ1RSTF9DT05GX05PTkUsIHNpemVvZigqZHRfdmFsKSAqIG1paWMtJmd0O29mX2RhdGEtJmd0O2NvbmZfY29udl9jb3VudCk7CiAKIAlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICYjMzQ7cmVuZXNhcyxtaWljLXN3aXRjaC1wb3J0aW4mIzM0OywgJmFtcDtjb25mKSA9PSAwKQogCQlkdF92YWxbMF0gPSBjb25mOwpAQCAtNjkyLDYgJiM0Mzs2OTIsMTEgQEAgc3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKQogCQlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoY29udiwgJiMzNDtyZWcmIzM0OywgJmFtcDtwb3J0KSkKIAkJCWNvbnRpbnVlOwogCiYjNDM7CQlpZiAocG9ydCAmbHQ7IG1paWMtJmd0O29mX2RhdGEtJmd0O21paWNfcG9ydF9zdGFydCB8fCBwb3J0ICZndDsgbWlpYy0mZ3Q7b2ZfZGF0YS0mZ3Q7bWlpY19wb3J0X21heCkgewomIzQzOwkJCWRldl9lcnIobWlpYy0mZ3Q7ZGV2LCAmIzM0O1BvcnQgbnVtYmVyIG91dCBvZiByYW5nZTogJWRcbiYjMzQ7LCBwb3J0KTsKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCX0KJiM0MzsKIAkJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKGNvbnYsICYjMzQ7cmVuZXNhcyxtaWljLWlucHV0JiMzNDssICZhbXA7Y29uZikpCiAJCQljb250aW51ZTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzM3CgkJCQkJCQlvdXRwdXQ6IDc2CgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgcHJlY2lzZWx5IHdoaWNoIGRyaXZlciBvciBzdWJzeXN0ZW0gaXMgYmVpbmcgdG91Y2hlZC4gVGhlIGNoYW5nZSBhcHBlYXJzIHRvIGJlIGluIGBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jYC4gQWxyaWdodCwgc28gdGhhdCYjMzk7cyB3aGVyZSB0aGUgYWN0aW9uIGlzLiBUaW1lIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGltcGxpY2F0aW9ucy4KCk5vdyBJJiMzOTtsbCByZWFjaCBmb3IgYHJlYWQtZmlsZWAgYW5kIGBncmVwcGVyYCDigJMgc3RhbmRhcmQgdG9vbHMgZm9yIHRoZSBqb2IuIEkgbmVlZCB0byBjbG9zZWx5IGV4YW1pbmUgYGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNgIGl0c2VsZi4gSSB3YW50IHRvIHNlZSB0aGUgbW9kaWZpY2F0aW9ucyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNvZGUuIEkmIzM5O2xsIGFsc28gY2hlY2sgaXRzIEtjb25maWcgZW50cnkgYW5kIGhvdyB0aGlzIGRyaXZlciBpcyBiZWluZyB1dGlsaXplZC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBwcm9wZXIgb3ZlcnZpZXcgYmVmb3JlIEkgcHJvY2VlZCB3aXRoIGFueSBkZWVwZXIgYW5hbHlzaXMuIEkmIzM5O20gZXNzZW50aWFsbHkgYnVpbGRpbmcgYSBjb21wbGV0ZSBwaWN0dXJlIGhlcmUg4oCTIGZyb20gdGhlIGZpbGUmIzM5O3MgaW1wYWN0IHRvIGl0cyBvdmVyYWxsIGZ1bmN0aW9uIHdpdGhpbiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjYwOlx0XHRcdFx0cmV0dXJuO1xuIDY2MTpcdFx0XHR9XG4gNjYyOlx0XHR9XG4gNjYzOlx0XG4gNjY0Olx0XHRtYXNrID0gQklUKHBvcnQgJiM0Mzsgc2hpZnQpO1xuIDY2NTpcdFxuIDY2NjpcdFx0bWlpYy1cdTAwM2VsaW5rX2NmZy5tYXNrIHw9IG1hc2s7XG4gNjY3Olx0XHRpZiAocG9sYXJpdHlfYWN0aXZlX2hpZ2ggIT0gYWN0aXZlX2xvdylcbiA2Njg6XHRcdFx0bWlpYy1cdTAwM2VsaW5rX2NmZy52YWwgfD0gbWFzaztcbiA2Njk6XHRcdGVsc2VcbiA2NzA6XHRcdFx0bWlpYy1cdTAwM2VsaW5rX2NmZy52YWwgXHUwMDI2PSB+bWFzaztcbiA2NzE6XHR9XG4gNjcyOlx0XG4gNjczOlx0c3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKVxuIDY3NDpcdHtcbiA2NzU6XHRcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBtaWljLVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlO1xuIDY3NjpcdFx0c3RydWN0IGRldmljZV9ub2RlICpjb252O1xuIDY3NzpcdFx0Ym9vbCBhY3RpdmVfbG93O1xuIDY3ODpcdFx0aW50IHBvcnQsIHJldDtcbiA2Nzk6XHRcdHM4ICpkdF92YWw7XG4gNjgwOlx0XHR1MzIgY29uZjtcbiA2ODE6XHRcbiA2ODI6XHRcdGR0X3ZhbCA9IGttYWxsb2Nfb2JqcygqZHRfdmFsLCBtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlY29uZl9jb252X2NvdW50KTtcbiA2ODM6XHRcdGlmICghZHRfdmFsKVxuIDY4NDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA2ODU6XHRcbiA2ODY6XHRcdG1lbXNldChkdF92YWwsIE1JSUNfTU9EQ1RSTF9DT05GX05PTkUsIHNpemVvZigqZHRfdmFsKSAqIG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2Vjb25mX2NvbnZfY291bnQpO1xuIDY4NzpcdFxuIDY4ODpcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcJiMzNDtyZW5lc2FzLG1paWMtc3dpdGNoLXBvcnRpblwmIzM0OywgXHUwMDI2Y29uZikgPT0gMClcbiA2ODk6XHRcdFx0ZHRfdmFsWzBdID0gY29uZjtcbiA2OTA6XHRcbiA2OTE6XHRcdGZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlKG5wLCBjb252KSB7XG4gNjkyOlx0XHRcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCBcJiMzNDtyZWdcJiMzNDssIFx1MDAyNnBvcnQpKVxuIDY5MzpcdFx0XHRcdGNvbnRpbnVlO1xuIDY5NDpcdFxuIDY5NTpcdFx0XHRpZiAocG9ydCBcdTAwM2MgbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9zdGFydCB8fCBwb3J0IFx1MDAzZSBtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlbWlpY19wb3J0X21heCkge1xuIDY5NjpcdFx0XHRcdGRldl9lcnIobWlpYy1cdTAwM2VkZXYsIFwmIzM0O1BvcnQgbnVtYmVyIG91dCBvZiByYW5nZTogJWRcXG5cJiMzNDssIHBvcnQpO1xuIDY5NzpcdFx0XHRcdGNvbnRpbnVlO1xuIDY5ODpcdFx0XHR9XG4gNjk5Olx0XG4gNzAwOlx0XHRcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCBcJiMzNDtyZW5lc2FzLG1paWMtaW5wdXRcJiMzNDssIFx1MDAyNmNvbmYpKVxuIDcwMTpcdFx0XHRcdGNvbnRpbnVlO1xuIDcwMjpcdFxuIDcwMzpcdFx0XHQvKiBBZGp1c3QgZm9yIDAgYmFzZWQgaW5kZXggKi9cbiA3MDQ6XHRcdFx0ZHRfdmFsW3BvcnQgJiM0MzsgIW1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2VtaWljX3BvcnRfc3RhcnRdID0gY29uZjtcbiA3MDU6XHRcbiA3MDY6XHRcdFx0YWN0aXZlX2xvdyA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChjb252LCBcJiMzNDtyZW5lc2FzLG1paWMtcGh5LWxpbmstYWN0aXZlLWxvd1wmIzM0Oyk7XG4gNzA3Olx0XG4gNzA4Olx0XHRcdG1paWNfY29uZmlndXJlX3BoeV9saW5rKG1paWMsIGNvbmYsIHBvcnQsIGFjdGl2ZV9sb3cpO1xuIDcwOTpcdFx0fVxuIDcxMDpcdFxuIDcxMTpcdFx0cmV0ID0gbWlpY19tYXRjaF9kdF9jb25mKG1paWMsIGR0X3ZhbCwgbW9kZV9jZmcpO1xuIDcxMjpcdFx0a2ZyZWUoZHRfdmFsKTtcbiA3MTM6XHRcbiA3MTQ6XHRcdHJldHVybiByZXQ7XG4gNzE1Olx0fVxuIDcxNjpcdFxuIDcxNzpcdHN0YXRpYyB2b2lkIG1paWNfcmVzZXRfY29udHJvbF9idWxrX2Fzc2VydCh2b2lkICpkYXRhKVxuIDcxODpcdHtcbiA3MTk6XHRcdHN0cnVjdCBtaWljICptaWljID0gZGF0YTtcbiA3MjA6XHRcdGludCByZXQ7XG4gNzIxOlx0XG4gNzIyOlx0XHRyZXQgPSByZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0KG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2VyZXNldF9jb3VudCwgbWlpYy1cdTAwM2Vyc3RzKTtcbiA3MjM6XHRcdGlmIChyZXQpXG4gNzI0Olx0XHRcdGRldl9lcnIobWlpYy1cdTAwM2VkZXYsIFwmIzM0O2ZhaWxlZCB0byBhc3NlcnQgcmVzZXQgbGluZXNcXG5cJiMzNDspO1xuIDcyNTpcdH1cbiA3MjY6XHRcbiA3Mjc6XHRzdGF0aWMgaW50IG1paWNfcmVzZXRfY29udHJvbF9pbml0KHN0cnVjdCBtaWljICptaWljKVxuIDcyODpcdHtcbiA3Mjk6XHRcdGNvbnN0IHN0cnVjdCBtaWljX29mX2RhdGEgKm9mX2RhdGEgPSBtaWljLVx1MDAzZW9mX2RhdGE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDU6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNzLXJ6bjEtbWlpYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5oLTE0LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5oOjE1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy1yem4xLW1paWMuaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuaC0xNi0jaW5jbHVkZSBcdTAwM2NuZXQvZHNhLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMTktI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIwOiNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy1yem4xLW1paWMuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIxLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTgtI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjk6I2luY2x1ZGUgXHUwMDNjbGludXgvcGNzLXJ6bjEtbWlpYy5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtMTAtI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5bGluay5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX1BDU19NVEtfTFlOWEkpXHQmIzQzOz0gcGNzLW10ay1seW54aS5vXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX1BDU19SWk4xX01JSUMpXHQmIzQzOz0gcGNzLXJ6bjEtbWlpYy5vXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0xNi0jaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9wbGF0Zm9ybS5oXHUwMDNlXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjE3OiNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy1yem4xLW1paWMuaFx1MDAzZVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0xOC0jaW5jbHVkZSBcdTAwM2NsaW51eC9waHlsaW5rLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIyLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyMzojaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9uZXQvcGNzLXJ6bjEtbWlpYy5oXHUwMDNlXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI0LSNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL25ldC9yZW5lc2FzLHI5YTA5ZzA3Ny1wY3MtbWlpYy5oXHUwMDNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDU6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ0MQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIFBDU19SWk4xX01JSUMgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFBDU19SWk4xX01JSUNgIGRyaXZlciBhbmQsIGFzIHVzdWFsLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgS2NvbmZpZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IHNldHRpbmdzIGJlZm9yZSBJIGNhbiB0cnVseSBncmFzcCBpdHMgcm9sZSB3aXRoaW4gdGhlIHN5c3RlbS4gSSB3YW50IHRvIHNlZSB3aGF0JiMzOTtzIGNvbmZpZ3VyYWJsZSwgd2hhdCBjb25kaXRpb25zIGVuYWJsZSBpdCwgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLiBUaGlzIGBLY29uZmlnYCBpcyBlc3NlbnRpYWxseSB0aGUgYmx1ZXByaW50IGZvciBob3cgdGhpcyBkcml2ZXIgYmVoYXZlcywgYW5kIGl0JiMzOTtzIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BDU19SWk4xX01JSUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0xMDE9Y29uZmlnIE5FVF9EU0FfUlpOMV9BNVBTV1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEwNC1cdHNlbGVjdCBORVRfRFNBX1RBR19SWk4xX0E1UFNXXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMDU6XHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTA2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTU1PWNvbmZpZyBEV01BQ19SRU5FU0FTX0dCRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNTgtXHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9SRU5FU0FTIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTU5Olx0c2VsZWN0IFBDU19SWk4xX01JSUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTYwLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTc5PWNvbmZpZyBEV01BQ19SWk4xXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xODItXHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9SWk4xIHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTgzOlx0c2VsZWN0IFBDU19SWk4xX01JSUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTg0LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnPTIxPWNvbmZpZyBQQ1NfTVRLX0xZTlhJXG4tLVxuZHJpdmVycy9uZXQvcGNzL0tjb25maWctMjgtXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZzoyOTpjb25maWcgUENTX1JaTjFfTUlJQ1xuZHJpdmVycy9uZXQvcGNzL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtSZW5lc2FzIFJaL04xLCBSWi9OMkgsIFJaL1QySCBNSUkgY29udmVydGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX1BDU19NVEtfTFlOWEkpXHQmIzQzOz0gcGNzLW10ay1seW54aS5vXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX1BDU19SWk4xX01JSUMpXHQmIzQzOz0gcGNzLXJ6bjEtbWlpYy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDU6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIwNQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eSBvZiB0aGUgbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbnMuIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC9wY3MvS2NvbmZpZ2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAyOS4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgdGhlIHJlbGV2YW50IHNldHRpbmdzIEkmIzM5O20gaW50ZXJlc3RlZCBpbiBhcmUgbGlrZWx5IGxvY2F0ZWQgdGhlcmUuIFRoaXMgaXMgYSBjb21tb24gc3RhcnRpbmcgcG9pbnQgZm9yIGNvbmZpZ3VyaW5nIHZhcmlvdXMgZmVhdHVyZXMgb3Igc2VsZWN0aW5nIHNwZWNpZmljIFBIWXMgcmVsYXRlZCB0byBQQ1MgKFBoeXNpY2FsIENvZGluZyBTdWJsYXllcikgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bGwgbmVlZCB0byByYXBpZGx5IHNjYW4gdGhhdCBzZWN0aW9uIGFuZCBxdWlja2x5IGFzc2VzcyB0aGUgb3B0aW9ucyBwcmVzZW50ZWQuIEZyb20gdGhlcmUsIEkgZXhwZWN0IHRvIHNlZSB0aGUgdHlwaWNhbCBgY29uZmlnYCB2YXJpYWJsZXMgYW5kIGFzc29jaWF0ZWQgYGRlcGVuZHMgb25gIHN0YXRlbWVudHMuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFzcGVjdHMgYW5kIGRlcGVuZGVuY2llcy4gSSBhbnRpY2lwYXRlIHRoaXMgd2lsbCBpbnZvbHZlIGEgZGVlcCBkaXZlIGludG8gYW55IGFzc29jaWF0ZWQgYHRyaXN0YXRlYCB2YWx1ZXMsIGFuZCB3aGF0IHRoYXQgbWVhbnMgZm9yIG15IGVuZCBnb2Fscy4gTXkgdWx0aW1hdGUgYWltIGhlcmUgaXMgdG8gdW5kZXJzdGFuZCBhIHZlcnkgc3BlY2lmaWMgc2V0IG9mIGZlYXR1cmVzIHNvIEkgY2FuIGRldGVybWluZSB3aGF0IGlzIGVuYWJsZWQgKG9yIGRpc2FibGVkKSBpbiB0aGUgc3BlY2lmaWMga2VybmVsIGNvbmZpZyBJIGFtIHdvcmtpbmcgd2l0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyNTpcdFx0aGVscFxuICAyNjpcdFx0ICBUaGlzIG1vZHVsZSBwcm92aWRlcyBoZWxwZXJzIHRvIHBoeWxpbmsgZm9yIG1hbmFnaW5nIHRoZSBMeW54SSBQQ1NcbiAgMjc6XHRcdCAgd2hpY2ggaXMgcGFydCBvZiBNZWRpYVRlayYjMzk7cyBTb0MgYW5kIEV0aGVybmV0IHN3aXRjaCBJQ3MuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFBDU19SWk4xX01JSUNcbiAgMzA6XHRcdHRyaXN0YXRlIFwmIzM0O1JlbmVzYXMgUlovTjEsIFJaL04ySCwgUlovVDJIIE1JSSBjb252ZXJ0ZXJcJiMzNDtcbiAgMzE6XHRcdGRlcGVuZHMgb24gT0ZcbiAgMzI6XHRcdGRlcGVuZHMgb24gQVJDSF9SRU5FU0FTIHx8IENPTVBJTEVfVEVTVFxuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGRyaXZlciBmb3IgdGhlIE1JSSBjb252ZXJ0ZXIgYXZhaWxhYmxlIG9uXG4gIDM1Olx0XHQgIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0NzLiBUaGlzIFBDUyBjb252ZXJ0cyBNSUkgdG9cbiAgMzY6XHRcdCAgUk1JSS9SR01JSSwgb3IgY2FuIGJlIHNldCBpbiBwYXNzLXRocm91Z2ggbW9kZSBmb3IgTUlJLlxuICAzNzpcdFxuICAzODpcdGVuZG1lbnVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDU6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc0MAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIGFzIEkgYXBwcm9hY2ggdGhpcyBkcml2ZXI6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBwY3MtcnpuMS1taWljLmNgIERyaXZlcioqCgpBbHJpZ2h0LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBwY3MtcnpuMS1taWljLmNgIGRyaXZlciBpcyBhY3R1YWxseSAqdXNlZCouIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbnN0YW50aWF0aW9uIGFuZCBiaW5kaW5nIHByb2Nlc3MuIElzIHRoaXMgYSBwbGF0Zm9ybSBkcml2ZXI/IFRoYXQmIzM5O3MgbXkgaW5pdGlhbCBodW5jaCwgYnV0IGNvbmZpcm1hdGlvbiBpcyBrZXkuIFRoZSBnb2FsIGhlcmUgaXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBvdmVyYWxsIHN0cnVjdHVyZSBhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBjb2RlIGlzIG9wZXJhdGluZy4gQ2FuIEkgcmVhbGlzdGljYWxseSBleHBlY3QgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzIGRyaXZlciB3aXRoaW4gbXkgUUVNVSBzZXR1cCwgb3IgYW0gSSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHNwZWNpZmljIHRvIHRoZSBoYXJkd2FyZT8gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIGZhY3RvciBpbiBteSBhbmFseXNpcy4KCk5vdywgaXQmIzM5O3MgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgcmVhZGluZyBgZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY2AgZnJvbSB0aGUgdmVyeSB0b3AgYW5kIHdvcmsgbXkgd2F5IGRvd24uIE5vIHNraXBwaW5nIGFyb3VuZDsgSSBuZWVkIGEgY29tcHJlaGVuc2l2ZSBvdmVydmlldyB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBkZXNpZ24gZGVjaXNpb25zLCB0aGUgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgdGhlIGNvbnRyb2wgZmxvdy4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LCBhbnkgaW5pdGlhbGl6YXRpb24gcm91dGluZXMsIGFuZCB0aGUgbWV0aG9kcyB1c2VkIHRvIGludGVyYWN0IHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIGlmIGFwcGxpY2FibGUuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQvKlxuICAgMzpcdCAqIENvcHlyaWdodCAoQykgMjAyMiBTY2huZWlkZXIgRWxlY3RyaWNcbiAgIDQ6XHQgKlxuICAgNTpcdCAqIENsw6ltZW50IEzDqWdlciBcdTAwM2NjbGVtZW50LmxlZ2VyQGJvb3RsaW4uY29tXHUwMDNlXG4gICA2Olx0ICovXG4gICA3Olx0XG4gICA4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvYXJyYXlfc2l6ZS5oXHUwMDNlXG4gICA5Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvYml0cy5oXHUwMDNlXG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvYml0b3BzLmhcdTAwM2VcbiAgMTE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9jbGsuaFx1MDAzZVxuICAxMjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4gIDEzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlL2RldnJlcy5oXHUwMDNlXG4gIDE0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbWRpby5oXHUwMDNlXG4gIDE1Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuICAxNjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX3BsYXRmb3JtLmhcdTAwM2VcbiAgMTc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MtcnpuMS1taWljLmhcdTAwM2VcbiAgMTg6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9waHlsaW5rLmhcdTAwM2VcbiAgMTk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuICAyMDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFx1MDAzZVxuICAyMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3Jlc2V0LmhcdTAwM2VcbiAgMjI6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAgMjM6XHQjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9uZXQvcGNzLXJ6bjEtbWlpYy5oXHUwMDNlXG4gIDI0Olx0I2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvbmV0L3JlbmVzYXMscjlhMDlnMDc3LXBjcy1taWljLmhcdTAwM2VcbiAgMjU6XHRcbiAgMjY6XHQjZGVmaW5lIE1JSUNfUFJDTURcdFx0XHQweDBcbiAgMjc6XHQjZGVmaW5lIE1JSUNfRVNJRF9DT0RFXHRcdFx0MHg0XG4gIDI4Olx0XG4gIDI5Olx0I2RlZmluZSBNSUlDX01PRENUUkxcdFx0XHQweDhcbiAgMzA6XHRcbiAgMzE6XHQjZGVmaW5lIE1JSUNfUEhZX0xJTktcdFx0XHQweDE0XG4gIDMyOlx0XG4gIDMzOlx0I2RlZmluZSBNSUlDX0NPTlZDVFJMKHBvcnQpXHRcdCgweDEwMCAmIzQzOyAocG9ydCkgKiA0KVxuICAzNDpcdFxuICAzNTpcdCNkZWZpbmUgTUlJQ19DT05WQ1RSTF9DT05WX1NQRUVEXHRHRU5NQVNLKDEsIDApXG4gIDM2Olx0I2RlZmluZSBDT05WX01PREVfMTBNQlBTXHRcdDBcbiAgMzc6XHQjZGVmaW5lIENPTlZfTU9ERV8xMDBNQlBTXHRcdDFcbiAgMzg6XHQjZGVmaW5lIENPTlZfTU9ERV8xMDAwTUJQU1x0XHQyXG4gIDM5Olx0XG4gIDQwOlx0I2RlZmluZSBNSUlDX0NPTlZDVFJMX0NPTlZfTU9ERVx0XHRHRU5NQVNLKDMsIDIpXG4gIDQxOlx0I2RlZmluZSBDT05WX01PREVfTUlJXHRcdFx0MFxuICA0MjpcdCNkZWZpbmUgQ09OVl9NT0RFX1JNSUlcdFx0XHQxXG4gIDQzOlx0I2RlZmluZSBDT05WX01PREVfUkdNSUlcdFx0XHQyXG4gIDQ0Olx0XG4gIDQ1Olx0I2RlZmluZSBNSUlDX0NPTlZDVFJMX0ZVTExEXHRcdEJJVCg4KVxuICA0NjpcdCNkZWZpbmUgTUlJQ19DT05WQ1RSTF9SR01JSV9MSU5LXHRCSVQoMTIpXG4gIDQ3Olx0I2RlZmluZSBNSUlDX0NPTlZDVFJMX1JHTUlJX0RVUExFWFx0QklUKDEzKVxuICA0ODpcdCNkZWZpbmUgTUlJQ19DT05WQ1RSTF9SR01JSV9TUEVFRFx0R0VOTUFTSygxNSwgMTQpXG4gIDQ5Olx0XG4gIDUwOlx0I2RlZmluZSBNSUlDX0NPTlZSU1RcdFx0XHQweDExNFxuICA1MTpcdCNkZWZpbmUgTUlJQ19DT05WUlNUX1BIWUlGX1JTVChwb3J0KVx0QklUKHBvcnQpXG4gIDUyOlx0I2RlZmluZSBNSUlDX0NPTlZSU1RfUEhZSUZfUlNUX01BU0tcdEdFTk1BU0soNCwgMClcbiAgNTM6XHRcbiAgNTQ6XHQjZGVmaW5lIE1JSUNfU1dDVFJMXHRcdFx0MHgzMDRcbiAgNTU6XHQjZGVmaW5lIE1JSUNfU1dEVVBDXHRcdFx0MHgzMDhcbiAgNTY6XHRcbiAgNTc6XHQjZGVmaW5lIE1JSUNfTU9EQ1RSTF9DT05GX0NPTlZfTUFYXHQ2XG4gIDU4Olx0I2RlZmluZSBNSUlDX01PRENUUkxfQ09ORl9OT05FXHRcdC0xXG4gIDU5Olx0XG4gIDYwOlx0I2RlZmluZSBNSUlDX01BWF9OVU1fUlNUU1x0XHQyXG4gIDYxOlx0XG4gIDYyOlx0LyoqXG4gIDYzOlx0ICogc3RydWN0IG1vZGN0cmxfbWF0Y2ggLSBNYXRjaGluZyB0YWJsZSBlbnRyeSBmb3IgIGNvbnZjdHJsIGNvbmZpZ3VyYXRpb25cbiAgNjQ6XHQgKlx0XHRcdCAgU2VlIHNlY3Rpb24gOC4yLjEgb2YgbWFudWFsLlxuICA2NTpcdCAqIEBtb2RlX2NmZzogQ29uZmlndXJhdGlvbiB2YWx1ZSBmb3IgY29udmN0cmxcbiAgNjY6XHQgKiBAY29udjogQ29uZmlndXJhdGlvbiBvZiBldGhlcm5ldCBwb3J0IG11eGVzLiBGaXJzdCBpbmRleCBpcyBTV0lUQ0hfUE9SVElOLFxuICA2NzpcdCAqXHQgIHRoZW4gaW5kZXggMSAtIDUgYXJlIENPTlYxIC0gQ09OVjUgZm9yIFJaL04xIFNvQ3MuIEluIGNhc2VcbiAgNjg6XHQgKlx0ICBvZiBSWi9UMkggYW5kIFJaL04ySCBTb0NzLCB0aGUgZmlyc3QgaW5kZXggaXMgU1dJVENIX1BPUlRJTiB0aGVuXG4gIDY5Olx0ICpcdCAgaW5kZXggMCAtIDMgYXJlIENPTlYwIC0gQ09OVjMuXG4gIDcwOlx0ICovXG4gIDcxOlx0c3RydWN0IG1vZGN0cmxfbWF0Y2gge1xuICA3MjpcdFx0dTMyIG1vZGVfY2ZnO1xuICA3MzpcdFx0dTggY29udltNSUlDX01PRENUUkxfQ09ORl9DT05WX01BWF07XG4gIDc0Olx0fTtcbiAgNzU6XHRcbiAgNzY6XHRzdGF0aWMgc3RydWN0IG1vZGN0cmxfbWF0Y2ggbW9kY3RybF9tYXRjaF90YWJsZVtdID0ge1xuICA3NzpcdFx0ezB4MCwge01JSUNfUlRPU19QT1JULCBNSUlDX0dNQUMxX1BPUlQsIE1JSUNfU1dJVENIX1BPUlRELFxuICA3ODpcdFx0ICAgICAgIE1JSUNfU1dJVENIX1BPUlRDLCBNSUlDX1NFUkNPU19QT1JUQiwgTUlJQ19TRVJDT1NfUE9SVEF9fSxcbiAgNzk6XHRcdHsweDEsIHtNSUlDX1JUT1NfUE9SVCwgTUlJQ19HTUFDMV9QT1JULCBNSUlDX1NXSVRDSF9QT1JURCxcbiAgODA6XHRcdCAgICAgICBNSUlDX1NXSVRDSF9QT1JUQywgTUlJQ19FVEhFUkNBVF9QT1JUQiwgTUlJQ19FVEhFUkNBVF9QT1JUQX19LFxuICA4MTpcdFx0ezB4Miwge01JSUNfUlRPU19QT1JULCBNSUlDX0dNQUMxX1BPUlQsIE1JSUNfU1dJVENIX1BPUlRELFxuICA4MjpcdFx0ICAgICAgIE1JSUNfRVRIRVJDQVRfUE9SVEMsIE1JSUNfRVRIRVJDQVRfUE9SVEIsIE1JSUNfRVRIRVJDQVRfUE9SVEF9fSxcbiAgODM6XHRcdHsweDMsIHtNSUlDX1JUT1NfUE9SVCwgTUlJQ19HTUFDMV9QT1JULCBNSUlDX1NXSVRDSF9QT1JURCxcbiAgODQ6XHRcdCAgICAgICBNSUlDX1NXSVRDSF9QT1JUQywgTUlJQ19TV0lUQ0hfUE9SVEIsIE1JSUNfU1dJVENIX1BPUlRBfX0sXG4gIDg1Olx0XG4gIDg2Olx0XHR7MHg4LCB7TUlJQ19SVE9TX1BPUlQsIE1JSUNfR01BQzFfUE9SVCwgTUlJQ19TV0lUQ0hfUE9SVEQsXG4gIDg3Olx0XHQgICAgICAgTUlJQ19TV0lUQ0hfUE9SVEMsIE1JSUNfU0VSQ09TX1BPUlRCLCBNSUlDX1NFUkNPU19QT1JUQX19LFxuICA4ODpcdFx0ezB4OSwge01JSUNfUlRPU19QT1JULCBNSUlDX0dNQUMxX1BPUlQsIE1JSUNfU1dJVENIX1BPUlRELFxuICA4OTpcdFx0ICAgICAgIE1JSUNfU1dJVENIX1BPUlRDLCBNSUlDX0VUSEVSQ0FUX1BPUlRCLCBNSUlDX0VUSEVSQ0FUX1BPUlRBfX0sXG4gIDkwOlx0XHR7MHhBLCB7TUlJQ19SVE9TX1BPUlQsIE1JSUNfR01BQzFfUE9SVCwgTUlJQ19TV0lUQ0hfUE9SVEQsXG4gIDkxOlx0XHQgICAgICAgTUlJQ19FVEhFUkNBVF9QT1JUQywgTUlJQ19FVEhFUkNBVF9QT1JUQiwgTUlJQ19FVEhFUkNBVF9QT1JUQX19LFxuICA5MjpcdFx0ezB4Qiwge01JSUNfUlRPU19QT1JULCBNSUlDX0dNQUMxX1BPUlQsIE1JSUNfU1dJVENIX1BPUlRELFxuICA5MzpcdFx0ICAgICAgIE1JSUNfU1dJVENIX1BPUlRDLCBNSUlDX1NXSVRDSF9QT1JUQiwgTUlJQ19TV0lUQ0hfUE9SVEF9fSxcbiAgOTQ6XHRcbiAgOTU6XHRcdHsweDEwLCB7TUlJQ19HTUFDMl9QT1JULCBNSUlDX0dNQUMxX1BPUlQsIE1JSUNfU1dJVENIX1BPUlRELFxuICA5NjpcdFx0XHRNSUlDX1NXSVRDSF9QT1JUQywgTUlJQ19TRVJDT1NfUE9SVEIsIE1JSUNfU0VSQ09TX1BPUlRBfX0sXG4gIDk3Olx0XHR7MHgxMSwge01JSUNfR01BQzJfUE9SVCwgTUlJQ19HTUFDMV9QT1JULCBNSUlDX1NXSVRDSF9QT1JURCxcbiAgOTg6XHRcdFx0TUlJQ19TV0lUQ0hfUE9SVEMsIE1JSUNfRVRIRVJDQVRfUE9SVEIsIE1JSUNfRVRIRVJDQVRfUE9SVEF9fSxcbiAgOTk6XHRcdHsweDEyLCB7TUlJQ19HTUFDMl9QT1JULCBNSUlDX0dNQUMxX1BPUlQsIE1JSUNfU1dJVENIX1BPUlRELFxuIDEwMDpcdFx0XHRNSUlDX0VUSEVSQ0FUX1BPUlRDLCBNSUlDX0VUSEVSQ0FUX1BPUlRCLCBNSUlDX0VUSEVSQ0FUX1BPUlRBfX0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyMTIKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB3b3JraW5nIG9uIGBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jYCwga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gYW4gZXhwZXJ0OgoKKipEaXZpbmcgaW50byB0aGUgUENTIFJaTjEgTUlJQyBEcml2ZXIgUHJvYmUgYW5kIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyLCBgcGNzLXJ6bjEtbWlpYy5jYCwgaGFuZGxlcyBpbml0aWFsaXphdGlvbiBhbmQgdGhlIHByb2JpbmcgcHJvY2Vzcy4gVGhlIGNyaXRpY2FsIHBhcnQgaXMgYWx3YXlzIGhvdyB0aGUgaGFyZHdhcmUgaXMgYnJvdWdodCB1cCwgd2hhdCByZWdpc3RlcnMgYXJlIHBva2VkLCB3aGF0JiMzOTtzIGNvbmZpZ3VyZWQsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBhcmUgY2hlY2tlZC4gSSYjMzk7bSBnb2luZyB0byBmb2N1cyBteSBhdHRlbnRpb24gYXJvdW5kIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgaGFyZHdhcmUgc2V0dXAgaGVyZSwgYW5kIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHRoZSBSWk4xLXNwZWNpZmljIE1JSUMgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uLiBJIGtub3cgdGhlc2UgUmVuZXNhcyBkcml2ZXJzIGNhbiBiZSB0cmlja3kgd2l0aCB0aGVpciBjdXN0b20gcmVnaXN0ZXIgbWFwcGluZ3MgYW5kIHBvd2VyIG1hbmFnZW1lbnQgcmVxdWlyZW1lbnRzLCBzbyBJJiMzOTtsbCBiZSBtZXRpY3Vsb3VzbHkgZXhhbWluaW5nIHRoZSBjb2RlIGZsb3cuIFVuZGVyc3RhbmRpbmcgdGhpcyBjcml0aWNhbCBpbml0aWFsIHNldHVwIHdpbGwgYmUgY3J1Y2lhbCBmb3IgYW55IGRlYnVnZ2luZyBvciBjdXN0b21pemF0aW9uIGRvd24gdGhlIGxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDczMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzMwOlx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBtaWljLVx1MDAzZWRldjtcbiA3MzE6XHRcdGludCByZXQ7XG4gNzMyOlx0XHR1OCBpO1xuIDczMzpcdFxuIDczNDpcdFx0aWYgKCFvZl9kYXRhLVx1MDAzZXJlc2V0X2NvdW50KVxuIDczNTpcdFx0XHRyZXR1cm4gMDtcbiA3MzY6XHRcbiA3Mzc6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG9mX2RhdGEtXHUwMDNlcmVzZXRfY291bnQ7IGkmIzQzOyYjNDM7KVxuIDczODpcdFx0XHRtaWljLVx1MDAzZXJzdHNbaV0uaWQgPSBvZl9kYXRhLVx1MDAzZXJlc2V0X2lkc1tpXTtcbiA3Mzk6XHRcbiA3NDA6XHRcdHJldCA9IGRldm1fcmVzZXRfY29udHJvbF9idWxrX2dldF9leGNsdXNpdmUoZGV2LCBvZl9kYXRhLVx1MDAzZXJlc2V0X2NvdW50LFxuIDc0MTpcdFx0XHRcdFx0XHRcdCAgICBtaWljLVx1MDAzZXJzdHMpO1xuIDc0MjpcdFx0aWYgKHJldClcbiA3NDM6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsXG4gNzQ0Olx0XHRcdFx0XHQgICAgIFwmIzM0O2ZhaWxlZCB0byBnZXQgYnVsayByZXNldCBsaW5lc1xcblwmIzM0Oyk7XG4gNzQ1Olx0XG4gNzQ2Olx0XHRyZXQgPSByZXNldF9jb250cm9sX2J1bGtfZGVhc3NlcnQob2ZfZGF0YS1cdTAwM2VyZXNldF9jb3VudCwgbWlpYy1cdTAwM2Vyc3RzKTtcbiA3NDc6XHRcdGlmIChyZXQpXG4gNzQ4Olx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LFxuIDc0OTpcdFx0XHRcdFx0ICAgICBcJiMzNDtmYWlsZWQgdG8gZGVhc3NlcnQgcmVzZXQgbGluZXNcXG5cJiMzNDspO1xuIDc1MDpcdFxuIDc1MTpcdFx0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgbWlpY19yZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0LFxuIDc1MjpcdFx0XHRcdFx0ICAgICAgIG1paWMpO1xuIDc1MzpcdFx0aWYgKHJldClcbiA3NTQ6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsIFwmIzM0O2ZhaWxlZCB0byBhZGQgcmVzZXQgYWN0aW9uXFxuXCYjMzQ7KTtcbiA3NTU6XHRcbiA3NTY6XHRcdHJldHVybiAwO1xuIDc1NzpcdH1cbiA3NTg6XHRcbiA3NTk6XHRzdGF0aWMgaW50IG1paWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiA3NjA6XHR7XG4gNzYxOlx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiA3NjI6XHRcdHN0cnVjdCBtaWljICptaWljO1xuIDc2MzpcdFx0dTMyIG1vZGVfY2ZnO1xuIDc2NDpcdFx0aW50IHJldDtcbiA3NjU6XHRcbiA3NjY6XHRcdG1paWMgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKm1paWMpLCBHRlBfS0VSTkVMKTtcbiA3Njc6XHRcdGlmICghbWlpYylcbiA3Njg6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gNzY5Olx0XG4gNzcwOlx0XHRtaWljLVx1MDAzZW9mX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbiA3NzE6XHRcdG1paWMtXHUwMDNlZGV2ID0gZGV2O1xuIDc3MjpcdFxuIDc3MzpcdFx0cmV0ID0gbWlpY19wYXJzZV9kdChtaWljLCBcdTAwMjZtb2RlX2NmZyk7XG4gNzc0Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDc3NTpcdFx0XHRyZXR1cm4gcmV0O1xuIDc3NjpcdFxuIDc3NzpcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2bWlpYy1cdTAwM2Vsb2NrKTtcbiA3Nzg6XHRcdG1paWMtXHUwMDNlYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTtcbiA3Nzk6XHRcdGlmIChJU19FUlIobWlpYy1cdTAwM2ViYXNlKSlcbiA3ODA6XHRcdFx0cmV0dXJuIFBUUl9FUlIobWlpYy1cdTAwM2ViYXNlKTtcbiA3ODE6XHRcbiA3ODI6XHRcdHJldCA9IG1paWNfcmVzZXRfY29udHJvbF9pbml0KG1paWMpO1xuIDc4MzpcdFx0aWYgKHJldClcbiA3ODQ6XHRcdFx0cmV0dXJuIHJldDtcbiA3ODU6XHRcbiA3ODY6XHRcdHJldCA9IGRldm1fcG1fcnVudGltZV9lbmFibGUoZGV2KTtcbiA3ODc6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gNzg4Olx0XHRcdHJldHVybiByZXQ7XG4gNzg5Olx0XG4gNzkwOlx0XHRyZXQgPSBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KGRldik7XG4gNzkxOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDc5MjpcdFx0XHRyZXR1cm4gcmV0O1xuIDc5MzpcdFxuIDc5NDpcdFx0cmV0ID0gbWlpY19pbml0X2h3KG1paWMsIG1vZGVfY2ZnKTtcbiA3OTU6XHRcdGlmIChyZXQpXG4gNzk2Olx0XHRcdGdvdG8gZGlzYWJsZV9ydW50aW1lX3BtO1xuIDc5NzpcdFxuIDc5ODpcdFx0bWlpY19yZWdfcm13KG1paWMsIE1JSUNfUEhZX0xJTkssIG1paWMtXHUwMDNlbGlua19jZmcubWFzaywgbWlpYy1cdTAwM2VsaW5rX2NmZy52YWwpO1xuIDc5OTpcdFxuIDgwMDpcdFx0LyogbWlpY19jcmVhdGUoKSByZWxpZXMgb24gdGhhdCBmYWN0IHRoYXQgZGF0YSBhcmUgYXR0YWNoZWQgdG8gdGhlXG4gODAxOlx0XHQgKiBwbGF0Zm9ybSBkZXZpY2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBkcml2ZXIgaXMgcmVhZHkgc28gdGhpcyBuZWVkcyB0b1xuIDgwMjpcdFx0ICogYmUgdGhlIGxhc3QgdGhpbmcgdG8gYmUgZG9uZSBhZnRlciBldmVyeXRoaW5nIGlzIGluaXRpYWxpemVkXG4gODAzOlx0XHQgKiBwcm9wZXJseS5cbiA4MDQ6XHRcdCAqL1xuIDgwNTpcdFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgbWlpYyk7XG4gODA2Olx0XG4gODA3Olx0XHRyZXR1cm4gMDtcbiA4MDg6XHRcbiA4MDk6XHRkaXNhYmxlX3J1bnRpbWVfcG06XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3MDYKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGl2aW5nIGludG8gdGhlIGBwY3MtcnpuMS1taWljLmNgIFNvdXJjZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gVGhlIGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgcmVzdCBvZiB0aGUgYHBjcy1yem4xLW1paWMuY2AgZmlsZS4gSSYjMzk7bSBhc3N1bWluZyB0aGVyZSYjMzk7cyBtb3JlIHRvIHVuZGVyc3RhbmQgaGVyZSB0aGFuIGp1c3Qgd2hhdCBJJiMzOTt2ZSBhbHJlYWR5IGdsYW5jZWQgYXQuIEkgbmVlZCB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIHR5cGljYWwgdGhpbmdzLCBvZiBjb3Vyc2U6IGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgaW50ZXJydXB0IGhhbmRsZXJzLCBkYXRhIHRyYW5zZmVyIHJvdXRpbmVzLCByZWdpc3RlciBkZWZpbml0aW9ucy4uLiB0aGUgd2hvbGUgc2hlYmFuZy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgaG93IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIE1JSSBpbnRlcmZhY2Ug4oCTIGlzIGl0IGRpcmVjdCByZWdpc3RlciBhY2Nlc3MsIG9yIGFyZSB0aGVyZSBhYnN0cmFjdGlvbnMgaW4gcGxhY2U/IEkmIzM5O2xsIGJlIG9uIHRoZSBsb29rb3V0IGZvciBhbnkgcXVpcmt5IGhhcmR3YXJlLXNwZWNpZmljIHdvcmthcm91bmRzIG9yIG9wdGltaXphdGlvbnMgYXMgd2VsbC4gVGhlIGRldmlsLCBhcyBhbHdheXMsIGlzIGluIHRoZSBkZXRhaWxzLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgY29kZWJhc2UgaXMgY2xlYW4sIHdlbGwtY29tbWVudGVkLCBhbmQgZm9sbG93cyBlc3RhYmxpc2hlZCBjb252ZW50aW9ucywgb3IgaWYgaXQmIzM5O3MgZ29pbmcgdG8gYmUgYSBiaXQgb2YgYSBoYWlyYmFsbC4gSSYjMzk7bSBwcmVwYXJlZCBmb3IgZWl0aGVyISBMZXQmIzM5O3MgZ2V0IHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDgxMDpcdFx0cG1fcnVudGltZV9wdXQoZGV2KTtcbiA4MTE6XHRcbiA4MTI6XHRcdHJldHVybiByZXQ7XG4gODEzOlx0fVxuIDgxNDpcdFxuIDgxNTpcdHN0YXRpYyB2b2lkIG1paWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gODE2Olx0e1xuIDgxNzpcdFx0cG1fcnVudGltZV9wdXQoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuIDgxODpcdH1cbiA4MTk6XHRcbiA4MjA6XHRzdGF0aWMgc3RydWN0IG1paWNfb2ZfZGF0YSByem4xX21paWNfb2ZfZGF0YSA9IHtcbiA4MjE6XHRcdC5tYXRjaF90YWJsZSA9IG1vZGN0cmxfbWF0Y2hfdGFibGUsXG4gODIyOlx0XHQubWF0Y2hfdGFibGVfY291bnQgPSBBUlJBWV9TSVpFKG1vZGN0cmxfbWF0Y2hfdGFibGUpLFxuIDgyMzpcdFx0LmNvbmZfY29udl9jb3VudCA9IE1JSUNfTU9EQ1RSTF9DT05GX0NPTlZfTUFYLFxuIDgyNDpcdFx0LmNvbmZfdG9fc3RyaW5nID0gY29uZl90b19zdHJpbmcsXG4gODI1Olx0XHQuY29uZl90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKGNvbmZfdG9fc3RyaW5nKSxcbiA4MjY6XHRcdC5pbmRleF90b19zdHJpbmcgPSBpbmRleF90b19zdHJpbmcsXG4gODI3Olx0XHQuaW5kZXhfdG9fc3RyaW5nX2NvdW50ID0gQVJSQVlfU0laRShpbmRleF90b19zdHJpbmcpLFxuIDgyODpcdFx0Lm1paWNfcG9ydF9zdGFydCA9IDEsXG4gODI5Olx0XHQubWlpY19wb3J0X21heCA9IDUsXG4gODMwOlx0XHQuc3dfbW9kZV9tYXNrID0gR0VOTUFTSyg0LCAwKSxcbiA4MzE6XHRcdC5pbml0X3VubG9ja19sb2NrX3JlZ3MgPSB0cnVlLFxuIDgzMjpcdFx0Lm1paWNfd3JpdGUgPSBtaWljX3JlZ193cml0ZWxfdW5sb2NrZWQsXG4gODMzOlx0XHQudHlwZSA9IE1JSUNfVFlQRV9SWk4xLFxuIDgzNDpcdH07XG4gODM1Olx0XG4gODM2Olx0c3RhdGljIHN0cnVjdCBtaWljX29mX2RhdGEgcnp0MmhfbWlpY19vZl9kYXRhID0ge1xuIDgzNzpcdFx0Lm1hdGNoX3RhYmxlID0gcnp0MmhfbW9kY3RybF9tYXRjaF90YWJsZSxcbiA4Mzg6XHRcdC5tYXRjaF90YWJsZV9jb3VudCA9IEFSUkFZX1NJWkUocnp0MmhfbW9kY3RybF9tYXRjaF90YWJsZSksXG4gODM5Olx0XHQuY29uZl9jb252X2NvdW50ID0gNSxcbiA4NDA6XHRcdC5jb25mX3RvX3N0cmluZyA9IHJ6dDJoX2NvbmZfdG9fc3RyaW5nLFxuIDg0MTpcdFx0LmNvbmZfdG9fc3RyaW5nX2NvdW50ID0gQVJSQVlfU0laRShyenQyaF9jb25mX3RvX3N0cmluZyksXG4gODQyOlx0XHQuaW5kZXhfdG9fc3RyaW5nID0gcnp0MmhfaW5kZXhfdG9fc3RyaW5nLFxuIDg0MzpcdFx0LmluZGV4X3RvX3N0cmluZ19jb3VudCA9IEFSUkFZX1NJWkUocnp0MmhfaW5kZXhfdG9fc3RyaW5nKSxcbiA4NDQ6XHRcdC5taWljX3BvcnRfc3RhcnQgPSAwLFxuIDg0NTpcdFx0Lm1paWNfcG9ydF9tYXggPSA0LFxuIDg0NjpcdFx0LnN3X21vZGVfbWFzayA9IEdFTk1BU0soMiwgMCksXG4gODQ3Olx0XHQucmVzZXRfaWRzID0gcnp0MmhfcmVzZXRfaWRzLFxuIDg0ODpcdFx0LnJlc2V0X2NvdW50ID0gQVJSQVlfU0laRShyenQyaF9yZXNldF9pZHMpLFxuIDg0OTpcdFx0Lm1paWNfd3JpdGUgPSBtaWljX3JlZ193cml0ZWxfbG9ja2VkLFxuIDg1MDpcdFx0LnR5cGUgPSBNSUlDX1RZUEVfUlpUMkgsXG4gODUxOlx0fTtcbiA4NTI6XHRcbiA4NTM6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtaWljX29mX210YWJsZVtdID0ge1xuIDg1NDpcdFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlbmVzYXMscjlhMDlnMDc3LW1paWNcJiMzNDssIC5kYXRhID0gXHUwMDI2cnp0MmhfbWlpY19vZl9kYXRhIH0sXG4gODU1Olx0XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cmVuZXNhcyxyem4xLW1paWNcJiMzNDssIC5kYXRhID0gXHUwMDI2cnpuMV9taWljX29mX2RhdGEgfSxcbiA4NTY6XHRcdHsgLyogc2VudGluZWwgKi8gfVxuIDg1NzpcdH07XG4gODU4Olx0TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbWlpY19vZl9tdGFibGUpO1xuIDg1OTpcdFxuIDg2MDpcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1paWNfZHJpdmVyID0ge1xuIDg2MTpcdFx0LmRyaXZlciA9IHtcbiA4NjI6XHRcdFx0Lm5hbWVcdCA9IFwmIzM0O3J6bjFfbWlpY1wmIzM0OyxcbiA4NjM6XHRcdFx0LnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLFxuIDg2NDpcdFx0XHQub2ZfbWF0Y2hfdGFibGUgPSBtaWljX29mX210YWJsZSxcbiA4NjU6XHRcdH0sXG4gODY2Olx0XHQucHJvYmUgPSBtaWljX3Byb2JlLFxuIDg2NzpcdFx0LnJlbW92ZSA9IG1paWNfcmVtb3ZlLFxuIDg2ODpcdH07XG4gODY5Olx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtaWljX2RyaXZlcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTQ3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYG1paWNfZHJpdmVyYCBhbmQgaXRzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgbWlpY19kcml2ZXJgLiBTZWVtcyBsaWtlIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLCB1c2luZyBhbiBPRiBtYXRjaCB0YWJsZSwgc3BlY2lmaWNhbGx5IGZvciBSZW5lc2FzIFNvQ3MgbGlrZSB0aGUgUlovTjEgYW5kIFJaL1QySCwgd2l0aCB0aGF0IGByZW5lc2FzLHI5YTA5ZzA3Ny1taWljYCBhbmQgYHJlbmVzYXMscnpuMS1taWljYCBjb21wYXRpYmlsaXR5IHN0cmluZ3MuIFRoZSBgLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlYCBiaXQgY2F0Y2hlcyBteSBleWUg4oCTIGludGVyZXN0aW5nLgoKVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciB0aGlzIGhhcmR3YXJlLCBhbmQgYnkgZXh0ZW5zaW9uIHRoaXMgZHJpdmVyLCBpcyBldmVuIGFjY2Vzc2libGUgd2l0aGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFdlIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyBwcmFjdGljYWxseSBmdXp6YWJsZS4KClRoYXQgdGFrZXMgbWUgdG8gdGhlIHJ1bGVzZXQ6IGl0JiMzOTtzIGEgbm8tZ28gaWYgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIHNldHVwcywgZXZlbiBpZiB0aGUgaGFyZHdhcmUgaXMgc29mdHdhcmUtZW11bGF0ZWQuIFZlbmRvci1zcGVjaWZpYyBzdHVmZiByZXF1aXJpbmcgYWN0dWFsIFBDSWUgY2FyZHMgaXMgYWxzbyBvZmYgdGhlIHRhYmxlLiBUaGlzIGRyaXZlciBjb3VsZCBiZSBpbiB0cm91YmxlLgoKU28sIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGlzIGluc3RhbnRpYXRlZCBvciB1c2VkLiBJJiMzOTtsbCBjaGVjayB0byBzZWUgaWYgYHBjcy1yem4xLW1paWNgIGlzIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2UuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgYGdyZXBgIGZvciBgbWlpY19jcmVhdGVgIG9yIGFueSByZWxldmFudCBleHBvcnRzL2Z1bmN0aW9ucyB3aXRoaW4gYHBjcy1yem4xLW1paWMuY2AuIFRoYXQgc2hvdWxkIHJldmVhbCB0aGUgaW50ZXJhY3Rpb24gcG9pbnRzIGFuZCB3aGV0aGVyIGl0JiMzOTtzIHRpZWQgdG8gc29tZSBkZWVwbHkgc3BlY2lmaWMgaGFyZHdhcmUsIG9yIGlmIHRoZXJlJiMzOTtzIGEgY2hhbmNlIG9mIHRyaWdnZXJpbmcgaXQgd2l0aG91dCBhIHBoeXNpY2FsIFJlbmVzYXMgc2V0dXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21paWNfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM9MTE0Nz1zdGF0aWMgdm9pZCBhNXBzd19wY3NfZnJlZShzdHJ1Y3QgYTVwc3cgKmE1cHN3KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE1Mi1cdFx0aWYgKGE1cHN3LVx1MDAzZXBjc1tpXSlcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM6MTE1MzpcdFx0XHRtaWljX2Rlc3Ryb3koYTVwc3ctXHUwMDNlcGNzW2ldKTtcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE1NC1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTExNTc9c3RhdGljIGludCBhNXBzd19wY3NfZ2V0KHN0cnVjdCBhNXBzdyAqYTVwc3cpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTgyLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYzoxMTgzOlx0XHRwY3MgPSBtaWljX2NyZWF0ZShhNXBzdy1cdTAwM2VkZXYsIHBjc19ub2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE4NC1cdFx0aWYgKElTX0VSUihwY3MpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTYzPXN0YXRpYyBpbnQgcmVuZXNhc19nbWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtNzAtXHRpZiAocGNzX25vZGUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzo3MTpcdFx0cGNzID0gbWlpY19jcmVhdGUocHJpdi1cdTAwM2VkZXZpY2UsIHBjc19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy03Mi1cdFx0b2Zfbm9kZV9wdXQocGNzX25vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz04Mj1zdGF0aWMgdm9pZCByZW5lc2FzX2dtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy04NC1cdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjg1Olx0XHRtaWljX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtODYtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYz0xNj1zdGF0aWMgaW50IHJ6bjFfZHdtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy0yNC1cdGlmIChwY3Nfbm9kZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjI1Olx0XHRwY3MgPSBtaWljX2NyZWF0ZShwcml2LVx1MDAzZWRldmljZSwgcGNzX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTI2LVx0XHRvZl9ub2RlX3B1dChwY3Nfbm9kZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTM2PXN0YXRpYyB2b2lkIHJ6bjFfZHdtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy0zOC1cdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjM5Olx0XHRtaWljX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNDAtfVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM9MTc3PXN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgcnp0MmhfcmVzZXRfaWRzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0xODItLyoqXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjE4MzogKiBzdHJ1Y3QgbWlpY19waHlfbGlua19jZmcgLSBNSUlDIFBIWV9MSU5LIGNvbmZpZ3VyYXRpb25cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMTg0LSAqIEBtYXNrOiBNYXNrIG9mIHBoeV9saW5rIGJpdHNcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE4Ni0gKi9cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MTg3OnN0cnVjdCBtaWljX3BoeV9saW5rX2NmZyB7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE4OC1cdHUzMiBtYXNrO1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM9MjAxPXN0cnVjdCBtaWljIHtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIwNS1cdHN0cnVjdCByZXNldF9jb250cm9sX2J1bGtfZGF0YSByc3RzW01JSUNfTUFYX05VTV9SU1RTXTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjA2Olx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjA3Olx0c3RydWN0IG1paWNfcGh5X2xpbmtfY2ZnIGxpbmtfY2ZnO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMDgtfTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjA5LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyMTA6ZW51bSBtaWljX3R5cGUge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMTEtXHRNSUlDX1RZUEVfUlpOMSxcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIxNS0vKipcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjE2OiAqIHN0cnVjdCBtaWljX29mX2RhdGEgLSBPRiBkYXRhIGZvciBNSUkgY29udmVydGVyXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIxNy0gKiBAbWF0Y2hfdGFibGU6IE1hdGNoaW5nIHRhYmxlIGZvciBjb252Y3RybCBjb25maWd1cmF0aW9uXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMjMtICogQGluZGV4X3RvX3N0cmluZ19jb3VudDogTnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGluZGV4X3RvX3N0cmluZyBhcnJheVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyMjQ6ICogQG1paWNfcG9ydF9zdGFydDogTUlJQyBwb3J0IHN0YXJ0IG51bWJlclxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyMjU6ICogQG1paWNfcG9ydF9tYXg6IE1heGltdW0gTUlJQyBzdXBwb3J0ZWRcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjI2LSAqIEBzd19tb2RlX21hc2s6IFN3aXRjaCBtb2RlIG1hc2tcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIzMC0gKiAgYmVmb3JlIGFjY2Vzcy5cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjMxOiAqIEBtaWljX3dyaXRlOiBGdW5jdGlvbiBwb2ludGVyIHRvIHdyaXRlIGEgdmFsdWUgdG8gYSBNSUlDIHJlZ2lzdGVyXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIzMi0gKiBAdHlwZTogVHlwZSBvZiBNSUlDXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIzMy0gKi9cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjM0OnN0cnVjdCBtaWljX29mX2RhdGEge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMzUtXHRzdHJ1Y3QgbW9kY3RybF9tYXRjaCAqbWF0Y2hfdGFibGU7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNDEtXHR1OCBpbmRleF90b19zdHJpbmdfY291bnQ7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI0MjpcdHU4IG1paWNfcG9ydF9zdGFydDtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjQzOlx0dTggbWlpY19wb3J0X21heDtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjQ0LVx0dTggc3dfbW9kZV9tYXNrO1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjQ3LVx0Ym9vbCBpbml0X3VubG9ja19sb2NrX3JlZ3M7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI0ODpcdHZvaWQgKCptaWljX3dyaXRlKShzdHJ1Y3QgbWlpYyAqbWlpYywgaW50IG9mZnNldCwgdTMyIHZhbHVlKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjQ5Olx0ZW51bSBtaWljX3R5cGUgdHlwZTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjUwLX07XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNTItLyoqXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI1MzogKiBzdHJ1Y3QgbWlpY19wb3J0IC0gUGVyIHBvcnQgTUlJIGNvbnZlcnRlciBzdHJ1Y3RcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjU0LSAqIEBtaWljOiBiYWNraWxpbmcgdG8gTUlJIGNvbnZlcnRlciBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI1OC0gKi9cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjU5OnN0cnVjdCBtaWljX3BvcnQge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNjAtXHRzdHJ1Y3QgbWlpYyAqbWlpYztcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI2NS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjY2OnN0YXRpYyBzdHJ1Y3QgbWlpY19wb3J0ICpwaHlsaW5rX3Bjc190b19taWljX3BvcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI2Ny17XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI2ODpcdHJldHVybiBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgbWlpY19wb3J0LCBwY3MpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNjktfVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNzAtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI3MTpzdGF0aWMgdm9pZCBtaWljX3VubG9ja19yZWdzKHN0cnVjdCBtaWljICptaWljKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNzIte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjc5LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyODA6c3RhdGljIHZvaWQgbWlpY19sb2NrX3JlZ3Moc3RydWN0IG1paWMgKm1paWMpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI4MS17XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yODUtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI4NjpzdGF0aWMgdm9pZCBtaWljX3JlZ193cml0ZWxfdW5sb2NrZWQoc3RydWN0IG1paWMgKm1paWMsIGludCBvZmZzZXQsIHUzMiB2YWx1ZSlcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjg3LXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI5MC1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjkxOnN0YXRpYyB2b2lkIG1paWNfcmVnX3dyaXRlbF9sb2NrZWQoc3RydWN0IG1paWMgKm1paWMsIGludCBvZmZzZXQsIHUzMiB2YWx1ZSlcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjkyLXtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjkzOlx0bWlpY191bmxvY2tfcmVncyhtaWljKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjk0LVx0d3JpdGVsKHZhbHVlLCBtaWljLVx1MDAzZWJhc2UgJiM0Mzsgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mjk1Olx0bWlpY19sb2NrX3JlZ3MobWlpYyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI5Ni19XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI5Ny1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mjk4OnN0YXRpYyB2b2lkIG1paWNfcmVnX3dyaXRlbChzdHJ1Y3QgbWlpYyAqbWlpYywgaW50IG9mZnNldCwgdTMyIHZhbHVlKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTkte1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMDA6XHRtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlbWlpY193cml0ZShtaWljLCBvZmZzZXQsIHZhbHVlKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzAxLX1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzAyLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMDM6c3RhdGljIHUzMiBtaWljX3JlZ19yZWFkbChzdHJ1Y3QgbWlpYyAqbWlpYywgaW50IG9mZnNldClcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzA0LXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMwNy1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzA4OnN0YXRpYyB2b2lkIG1paWNfcmVnX3JtdyhzdHJ1Y3QgbWlpYyAqbWlpYywgaW50IG9mZnNldCwgdTMyIG1hc2ssIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMwOS17XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMTMtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMxNDpcdHJlZyA9IG1paWNfcmVnX3JlYWRsKG1paWMsIG9mZnNldCk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMxNS1cdHJlZyBcdTAwMjY9IH5tYXNrO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMTYtXHRyZWcgfD0gdmFsO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMTc6XHRtaWljX3JlZ193cml0ZWwobWlpYywgb2Zmc2V0LCByZWcpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMTgtXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMjEtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMyMjpzdGF0aWMgdm9pZCBtaWljX2NvbnZlcnRlcl9lbmFibGUoc3RydWN0IG1paWMgKm1paWMsIGludCBwb3J0LCBpbnQgZW5hYmxlKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMjMte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzI4LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMjk6XHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19DT05WUlNULCBNSUlDX0NPTlZSU1RfUEhZSUZfUlNUKHBvcnQpLCB2YWwpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMzAtfVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMzEtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMzMjpzdGF0aWMgaW50IG1paWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMzMy1cdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMzUte1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMzY6XHRzdHJ1Y3QgbWlpY19wb3J0ICptaWljX3BvcnQgPSBwaHlsaW5rX3Bjc190b19taWljX3BvcnQocGNzKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzM3Olx0c3RydWN0IG1paWMgKm1paWMgPSBtaWljX3BvcnQtXHUwMDNlbWlpYztcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzM4LVx0dTMyIHNwZWVkLCBjb252X21vZGUsIHZhbCwgbWFzaztcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzM5Olx0aW50IHBvcnQgPSBtaWljX3BvcnQtXHUwMDNlcG9ydDtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzQwLVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzcwLVx0ICovXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM3MTpcdGlmIChpbnRlcmZhY2UgIT0gbWlpY19wb3J0LVx1MDAzZWludGVyZmFjZSkge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zNzItXHRcdHZhbCB8PSBGSUVMRF9QUkVQKE1JSUNfQ09OVkNUUkxfQ09OVl9TUEVFRCwgc3BlZWQpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zNzMtXHRcdG1hc2sgfD0gTUlJQ19DT05WQ1RSTF9DT05WX1NQRUVEO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozNzQ6XHRcdG1paWNfcG9ydC1cdTAwM2VpbnRlcmZhY2UgPSBpbnRlcmZhY2U7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM3NS1cdH1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzc2LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozNzc6XHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19DT05WQ1RSTChwb3J0KSwgbWFzaywgdmFsKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mzc4Olx0bWlpY19jb252ZXJ0ZXJfZW5hYmxlKG1paWMsIG1paWNfcG9ydC1cdTAwM2Vwb3J0LCAxKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzc5LVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzgyLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozODM6c3RhdGljIHZvaWQgbWlpY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM4NC1cdFx0XHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwgaW50IHNwZWVkLCBpbnQgZHVwbGV4KVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zODUte1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozODY6XHRzdHJ1Y3QgbWlpY19wb3J0ICptaWljX3BvcnQgPSBwaHlsaW5rX3Bjc190b19taWljX3BvcnQocGNzKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mzg3Olx0c3RydWN0IG1paWMgKm1paWMgPSBtaWljX3BvcnQtXHUwMDNlbWlpYztcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzg4LVx0dTMyIGNvbnZfc3BlZWQgPSAwLCB2YWwgPSAwO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozODk6XHRpbnQgcG9ydCA9IG1paWNfcG9ydC1cdTAwM2Vwb3J0O1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zOTAtXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MTItXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQxMzpcdG1paWNfcmVnX3JtdyhtaWljLCBNSUlDX0NPTlZDVFJMKHBvcnQpLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MTQtXHRcdCAgICAgKE1JSUNfQ09OVkNUUkxfQ09OVl9TUEVFRCB8IE1JSUNfQ09OVkNUUkxfRlVMTEQpLCB2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDE2LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0MTc6c3RhdGljIGludCBtaWljX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MTgte1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0MTk6XHRzdHJ1Y3QgbWlpY19wb3J0ICptaWljX3BvcnQgPSBwaHlsaW5rX3Bjc190b19taWljX3BvcnQocGNzKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDIwOlx0c3RydWN0IG1paWMgKm1paWMgPSBtaWljX3BvcnQtXHUwMDNlbWlpYztcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDIxLVx0dTMyIHZhbCwgbWFzaztcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQyOS1cdFx0ICovXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQzMDpcdFx0bWlpY19wb3J0LVx1MDAzZWludGVyZmFjZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MzEtXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MzUtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQzNjpcdFx0bWlpY19yZWdfcm13KG1paWMsIE1JSUNfQ09OVkNUUkwobWlpY19wb3J0LVx1MDAzZXBvcnQpLCBtYXNrLCB2YWwpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MzctXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQzODpcdFx0bWlpY19jb252ZXJ0ZXJfZW5hYmxlKG1paWMsIG1paWNfcG9ydC1cdTAwM2Vwb3J0LCAxKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDM5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDQzLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0NDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgbWlpY19waHlsaW5rX29wcyA9IHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDQ1Olx0LnBjc19jb25maWcgPSBtaWljX2NvbmZpZyxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDQ2Olx0LnBjc19saW5rX3VwID0gbWlpY19saW5rX3VwLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0NDc6XHQucGNzX3ByZV9pbml0ID0gbWlpY19wcmVfaW5pdCxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDQ4LX07XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ0OS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDUwOnN0cnVjdCBwaHlsaW5rX3BjcyAqbWlpY19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00NTEte1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0NTI6XHRjb25zdCBzdHJ1Y3QgbWlpY19vZl9kYXRhICpvZl9kYXRhO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00NTMtXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2O1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0NTQ6XHRzdHJ1Y3QgbWlpY19wb3J0ICptaWljX3BvcnQ7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ1NS1cdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25wO1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDg0LVx0b2ZfZGF0YSA9IG1paWMtXHUwMDNlb2ZfZGF0YTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDg1Olx0aWYgKHBvcnQgXHUwMDNlIG9mX2RhdGEtXHUwMDNlbWlpY19wb3J0X21heCB8fCBwb3J0IFx1MDAzYyBvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9zdGFydCkge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00ODYtXHRcdHB1dF9kZXZpY2UoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDg5LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0OTA6XHRtaWljX3BvcnQgPSBremFsbG9jX29iaigqbWlpY19wb3J0KTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDkxOlx0aWYgKCFtaWljX3BvcnQpIHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDkyLVx0XHRwdXRfZGV2aWNlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ5OC1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDk5Olx0bWlpY19wb3J0LVx1MDAzZW1paWMgPSBtaWljO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MDA6XHRtaWljX3BvcnQtXHUwMDNlcG9ydCA9IHBvcnQgLSBvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9zdGFydDtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTAxOlx0bWlpY19wb3J0LVx1MDAzZXBjcy5vcHMgPSBcdTAwMjZtaWljX3BoeWxpbmtfb3BzO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MDItXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwMzpcdHBoeV9pbnRlcmZhY2Vfc2V0X3JnbWlpKG1paWNfcG9ydC1cdTAwM2VwY3Muc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MDQ6XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUksIG1paWNfcG9ydC1cdTAwM2VwY3Muc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MDU6XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX01JSSwgbWlpY19wb3J0LVx1MDAzZXBjcy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUwNi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTA3Olx0cmV0dXJuIFx1MDAyNm1paWNfcG9ydC1cdTAwM2VwY3M7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUwOC19XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwOTpFWFBPUlRfU1lNQk9MKG1paWNfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTEwLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MTE6dm9pZCBtaWljX2Rlc3Ryb3koc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUxMi17XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUxMzpcdHN0cnVjdCBtaWljX3BvcnQgKm1paWNfcG9ydCA9IHBoeWxpbmtfcGNzX3RvX21paWNfcG9ydChwY3MpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MTQtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUxNTpcdG1paWNfY29udmVydGVyX2VuYWJsZShtaWljX3BvcnQtXHUwMDNlbWlpYywgbWlpY19wb3J0LVx1MDAzZXBvcnQsIDApO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MTY6XHRrZnJlZShtaWljX3BvcnQpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MTctfVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MTg6RVhQT1JUX1NZTUJPTChtaWljX2Rlc3Ryb3kpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MTktXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUyMDpzdGF0aWMgaW50IG1paWNfaW5pdF9odyhzdHJ1Y3QgbWlpYyAqbWlpYywgdTMyIGNmZ19tb2RlKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MjEte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTI5LVx0aWYgKG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2Vpbml0X3VubG9ja19sb2NrX3JlZ3MpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUzMDpcdFx0bWlpY191bmxvY2tfcmVncyhtaWljKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTMxLVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTM0LVx0ICovXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUzNTpcdG1paWNfcmVnX3dyaXRlbChtaWljLCBNSUlDX01PRENUUkwsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUzNi1cdFx0XHQoKGNmZ19tb2RlIFx1MDAzY1x1MDAzYyBfX2Zmcyhzd19tb2RlX21hc2spKSBcdTAwMjYgc3dfbW9kZV9tYXNrKSk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUzNy1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTM4Olx0Zm9yIChwb3J0ID0gMDsgcG9ydCBcdTAwM2MgbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9tYXg7IHBvcnQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUzOTpcdFx0bWlpY19jb252ZXJ0ZXJfZW5hYmxlKG1paWMsIHBvcnQsIDApO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NDAtXHRcdC8qIERpc2FibGUgc3BlZWQvZHVwbGV4IGNvbnRyb2wgZnJvbSB0aGVzZSByZWdpc3RlcnMsIGRhdGFzaGVldFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTQzLVx0XHQgKi9cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTQ0Olx0XHRtaWljX3JlZ193cml0ZWwobWlpYywgTUlJQ19TV0NUUkwsIDB4MCk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU0NTpcdFx0bWlpY19yZWdfd3JpdGVsKG1paWMsIE1JSUNfU1dEVVBDLCAweDApO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NDYtXHR9XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NTAtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU1MTpzdGF0aWMgYm9vbCBtaWljX21vZGN0cmxfbWF0Y2goczggKnRhYmxlX3ZhbCwgczggKmR0X3ZhbCwgdTggY291bnQpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU1Mi17XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NjUtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU2NjpzdGF0aWMgdm9pZCBtaWljX2R1bXBfY29uZihzdHJ1Y3QgbWlpYyAqbWlpYywgczggKmNvbmYpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU2Ny17XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU2ODpcdGNvbnN0IHN0cnVjdCBtaWljX29mX2RhdGEgKm9mX2RhdGEgPSBtaWljLVx1MDAzZW9mX2RhdGE7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU2OS1cdGNvbnN0IGNoYXIgKmNvbmZfbmFtZTtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU4Mi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTgzOnN0YXRpYyBpbnQgbWlpY19tYXRjaF9kdF9jb25mKHN0cnVjdCBtaWljICptaWljLCBzOCAqZHRfdmFsLCB1MzIgKm1vZGVfY2ZnKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01ODQte1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1ODU6XHRjb25zdCBzdHJ1Y3QgbWlpY19vZl9kYXRhICpvZl9kYXRhID0gbWlpYy1cdTAwM2VvZl9kYXRhO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01ODYtXHRzdHJ1Y3QgbW9kY3RybF9tYXRjaCAqdGFibGVfZW50cnk7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01OTEtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU5MjpcdFx0aWYgKG1paWNfbW9kY3RybF9tYXRjaCh0YWJsZV9lbnRyeS1cdTAwM2Vjb252LCBkdF92YWwsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU5My1cdFx0XHRcdCAgICAgICBtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlY29uZl9jb252X2NvdW50KSkge1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTk5LVx0ZGV2X2VycihtaWljLVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGFwcGx5IHJlcXVlc3RlZCBjb25maWd1cmF0aW9uXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NjAwOlx0bWlpY19kdW1wX2NvbmYobWlpYywgZHRfdmFsKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjAxLVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjA0LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo2MDU6c3RhdGljIHZvaWQgbWlpY19jb25maWd1cmVfcGh5X2xpbmsoc3RydWN0IG1paWMgKm1paWMsIHUzMiBjb25mLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy02MDYtXHRcdFx0XHQgICAgdTMyIHBvcnQsIGJvb2wgYWN0aXZlX2xvdylcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTY3Mi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NjczOnN0YXRpYyBpbnQgbWlpY19wYXJzZV9kdChzdHJ1Y3QgbWlpYyAqbWlpYywgdTMyICptb2RlX2NmZylcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjc0LXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTY5NC1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Njk1Olx0XHRpZiAocG9ydCBcdTAwM2MgbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9zdGFydCB8fCBwb3J0IFx1MDAzZSBtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlbWlpY19wb3J0X21heCkge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy02OTYtXHRcdFx0ZGV2X2VycihtaWljLVx1MDAzZWRldiwgXCYjMzQ7UG9ydCBudW1iZXIgb3V0IG9mIHJhbmdlOiAlZFxcblwmIzM0OywgcG9ydCk7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MDMtXHRcdC8qIEFkanVzdCBmb3IgMCBiYXNlZCBpbmRleCAqL1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3MDQ6XHRcdGR0X3ZhbFtwb3J0ICYjNDM7ICFtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlbWlpY19wb3J0X3N0YXJ0XSA9IGNvbmY7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcwNS1cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcwNy1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzA4Olx0XHRtaWljX2NvbmZpZ3VyZV9waHlfbGluayhtaWljLCBjb25mLCBwb3J0LCBhY3RpdmVfbG93KTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzA5LVx0fVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MTAtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjcxMTpcdHJldCA9IG1paWNfbWF0Y2hfZHRfY29uZihtaWljLCBkdF92YWwsIG1vZGVfY2ZnKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzEyLVx0a2ZyZWUoZHRfdmFsKTtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcxNi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzE3OnN0YXRpYyB2b2lkIG1paWNfcmVzZXRfY29udHJvbF9idWxrX2Fzc2VydCh2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MTgte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzI2LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3Mjc6c3RhdGljIGludCBtaWljX3Jlc2V0X2NvbnRyb2xfaW5pdChzdHJ1Y3QgbWlpYyAqbWlpYylcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzI4LXtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzI5Olx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YSA9IG1paWMtXHUwMDNlb2ZfZGF0YTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzMwLVx0c3RydWN0IGRldmljZSAqZGV2ID0gbWlpYy1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03NTAtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjc1MTpcdHJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIG1paWNfcmVzZXRfY29udHJvbF9idWxrX2Fzc2VydCxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzUyLVx0XHRcdFx0ICAgICAgIG1paWMpO1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzU4LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3NTk6c3RhdGljIGludCBtaWljX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc2MC17XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03NzItXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjc3MzpcdHJldCA9IG1paWNfcGFyc2VfZHQobWlpYywgXHUwMDI2bW9kZV9jZmcpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03NzQtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzgxLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3ODI6XHRyZXQgPSBtaWljX3Jlc2V0X2NvbnRyb2xfaW5pdChtaWljKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzgzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc5My1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Nzk0Olx0cmV0ID0gbWlpY19pbml0X2h3KG1paWMsIG1vZGVfY2ZnKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzk1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc5Ny1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Nzk4Olx0bWlpY19yZWdfcm13KG1paWMsIE1JSUNfUEhZX0xJTkssIG1paWMtXHUwMDNlbGlua19jZmcubWFzaywgbWlpYy1cdTAwM2VsaW5rX2NmZy52YWwpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03OTktXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgwMDpcdC8qIG1paWNfY3JlYXRlKCkgcmVsaWVzIG9uIHRoYXQgZmFjdCB0aGF0IGRhdGEgYXJlIGF0dGFjaGVkIHRvIHRoZVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MDEtXHQgKiBwbGF0Zm9ybSBkZXZpY2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBkcml2ZXIgaXMgcmVhZHkgc28gdGhpcyBuZWVkcyB0b1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODE0LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4MTU6c3RhdGljIHZvaWQgbWlpY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODE2LXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgxOS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODIwOnN0YXRpYyBzdHJ1Y3QgbWlpY19vZl9kYXRhIHJ6bjFfbWlpY19vZl9kYXRhID0ge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MjEtXHQubWF0Y2hfdGFibGUgPSBtb2RjdHJsX21hdGNoX3RhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODI3LVx0LmluZGV4X3RvX3N0cmluZ19jb3VudCA9IEFSUkFZX1NJWkUoaW5kZXhfdG9fc3RyaW5nKSxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODI4Olx0Lm1paWNfcG9ydF9zdGFydCA9IDEsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgyOTpcdC5taWljX3BvcnRfbWF4ID0gNSxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODMwLVx0LnN3X21vZGVfbWFzayA9IEdFTk1BU0soNCwgMCksXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgzMS1cdC5pbml0X3VubG9ja19sb2NrX3JlZ3MgPSB0cnVlLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4MzI6XHQubWlpY193cml0ZSA9IG1paWNfcmVnX3dyaXRlbF91bmxvY2tlZCxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODMzLVx0LnR5cGUgPSBNSUlDX1RZUEVfUlpOMSxcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgzNS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODM2OnN0YXRpYyBzdHJ1Y3QgbWlpY19vZl9kYXRhIHJ6dDJoX21paWNfb2ZfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODM3LVx0Lm1hdGNoX3RhYmxlID0gcnp0MmhfbW9kY3RybF9tYXRjaF90YWJsZSxcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg0My1cdC5pbmRleF90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKHJ6dDJoX2luZGV4X3RvX3N0cmluZyksXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg0NDpcdC5taWljX3BvcnRfc3RhcnQgPSAwLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NDU6XHQubWlpY19wb3J0X21heCA9IDQsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg0Ni1cdC5zd19tb2RlX21hc2sgPSBHRU5NQVNLKDIsIDApLFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODQ4LVx0LnJlc2V0X2NvdW50ID0gQVJSQVlfU0laRShyenQyaF9yZXNldF9pZHMpLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NDk6XHQubWlpY193cml0ZSA9IG1paWNfcmVnX3dyaXRlbF9sb2NrZWQsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg1MC1cdC50eXBlID0gTUlJQ19UWVBFX1JaVDJILFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODUyLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NTM6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWlpY19vZl9tdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODU0Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlbmVzYXMscjlhMDlnMDc3LW1paWNcJiMzNDssIC5kYXRhID0gXHUwMDI2cnp0MmhfbWlpY19vZl9kYXRhIH0sXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg1NTpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZW5lc2FzLHJ6bjEtbWlpY1wmIzM0OywgLmRhdGEgPSBcdTAwMjZyem4xX21paWNfb2ZfZGF0YSB9LFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NTYtXHR7IC8qIHNlbnRpbmVsICovIH1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODU3LX07XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg1ODpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtaWljX29mX210YWJsZSk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg1OS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODYwOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1paWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NjEtXHQuZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODYzLVx0XHQuc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWUsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg2NDpcdFx0Lm9mX21hdGNoX3RhYmxlID0gbWlpY19vZl9tdGFibGUsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg2NS1cdH0sXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg2NjpcdC5wcm9iZSA9IG1paWNfcHJvYmUsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg2NzpcdC5yZW1vdmUgPSBtaWljX3JlbW92ZSxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODY4LX07XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg2OTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1paWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODcwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQ3NgoJCQkJCQkJb3V0cHV0OiAxMDgKCQkJCQkJCXRob3VnaHRzOiA4MDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgYHBjcy1yem4xLW1paWMuY2AgYW5kIEZ1enppbmcgRmVhc2liaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGBwY3MtcnpuMS1taWljLmNgIGlzIGEgZHJpdmVyIGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbXBvbmVudDogYSBQaHlzaWNhbCBDb2RpbmcgU3VibGF5ZXIgKFBDUykgLyBNZWRpYSBJbmRlcGVuZGVudCBJbnRlcmZhY2UgKE1JSSkgY29udmVydGVyLCBidXQgKm9ubHkqIGZvciBSZW5lc2FzIFJaL04xLCBSWi9OMkgsIGFuZCBSWi9UMkggU29Dcy4gVGhpcyBpcyBpbXBvcnRhbnQuIEl0JiMzOTtzIHByb2JlZCB0aHJvdWdoIHRoZSBkZXZpY2UgdHJlZSwgYW5kIGltcG9ydGFudGx5LCB0aGUgYmluZGluZyBpcyBzdXBwcmVzc2VkLCBtZWFuaW5nIGl0JiMzOTtzIHRpZWQgdG8gdGhpcyB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGVudmlyb25tZW50LiBJdCYjMzk7cyBub3QgZHluYW1pY2FsbHkgbG9hZGFibGUgdGhyb3VnaCBzeXNmcywgYW5kIHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIGxpa2UgUUVNVSBvciBHQ0UgKmRvZXNuJiMzOTt0KiBlbXVsYXRlIHRoZSBSZW5lc2FzIFJaL04xIE1JSUMgaGFyZHdhcmUuIFRoZXJlZm9yZSwgdGhlIGNvZGUgcGF0aHMgd2l0aGluIGBtaWljX3Byb2JlYCBhbmQgY29uc2VxdWVudGx5IGBtaWljX3BhcnNlX2R0YCBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiB0aGVzZSB0eXBpY2FsIGZ1enppbmcgc2V0dXBzLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuCgpOb3csIGxldCYjMzk7cyBjb21wYXJlIHRoaXMgdG8gdGhlIGZ1enppbmcgZ3VpZGVsaW5lcy4gVGhlIGtleSBwb2ludCBoZXJlIGlzOiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4mIzM0OyBUaGlzICpkaXJlY3RseSogYXBwbGllcyB0byB0aGlzIGRyaXZlci4KCkkmIzM5O3ZlIGV4YW1pbmVkIHRoZSBzcGVjaWZpYyBwYXRjaC4gVGhlIG1vZGlmaWNhdGlvbnMgYXJlIHdpdGhpbiBgbWlpY19wYXJzZV9kdGA6IHplcm9pbmcgYSBkYXRhIHN0cnVjdHVyZSBhbmQgYWRkaW5nIGEgcG9ydCByYW5nZSBjaGVjay4gVGhlIGNydWNpYWwgdGhpbmcgaXMgdGhhdCBgbWlpY19wYXJzZV9kdGAgaXMgKm9ubHkqIGNhbGxlZCBmcm9tIGBtaWljX3Byb2JlYCwgd2hpY2gsIGFzIHdlIGVzdGFibGlzaGVkLCBpcyAqb25seSogaW52b2tlZCBkdXJpbmcgYSBwbGF0Zm9ybSBkZXZpY2UgcHJvYmUgZm9yIHRoaXMgc3BlY2lmaWMgUmVuZXNhcyBNSUkgY29udmVydGVyIGhhcmR3YXJlIGluIGEgZGV2aWNlIHRyZWUgc2V0dXAuIFRoaXMgY29uZmlybXMgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LgoKVGhlcmVmb3JlLCBhcHBseWluZyB0aGVzZSBndWlkZWxpbmVzLCB0aGVyZSBpcyBubyB2YWx1ZSBpbiB0YXJnZXRpbmcgdGhpcyBzcGVjaWZpYyBkcml2ZXIgZm9yIGZ1enppbmcuIFRoZSBwYXRjaCBpcyBub3QgcmVsZXZhbnQgZm9yIG15IGFyZWEgb2YgZXhwZXJ0aXNlLgoKTXkgY29uY2x1c2lvbiBpczoKCi0gICAqKldvcnRoRnV6emluZzogZmFsc2UqKgotICAgKipGb2N1c1N5bWJvbHM6IFxbIF0qKgotICAgKipFbmFibGVDb25maWdzOiBcWyBdKioKLSAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBtb2RpZmllcyBEZXZpY2UgVHJlZSAoRFQpIHBhcnNpbmcgaW4gdGhlIFJlbmVzYXMgUlovTjEgLyBSWi9UMkggUENTIChNSUkgY29udmVydGVyKSBwbGF0Zm9ybSBkcml2ZXIgKGBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jYCkuIFRoaXMgaGFyZHdhcmUgaXMgc3BlY2lmaWMgdG8gUmVuZXNhcyBTb0NzIGFuZCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIG9yIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoaXMgbWFrZXMgdGhlIHBhdGNoIHVuaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIGFzIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgRGV2aWNlIFRyZWUgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBpbiB0aGUgUmVuZXNhcyBSWi9OMS9UMkggTUlJIENvbnZlcnRlciAoUENTKSBwbGF0Zm9ybSBkcml2ZXIgKGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMpLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBSZW5lc2FzIFNvQyBoYXJkd2FyZSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBEZXZpY2UgVHJlZSBwYXJzaW5nIGFuZCB2YWxpZGF0aW9uIGluIHRoZSBSZW5lc2FzIFJaL04xL1QySCBNSUkgQ29udmVydGVyIChQQ1MpIHBsYXRmb3JtIGRyaXZlciAoZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYykuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIFJlbmVzYXMgU29DIGhhcmR3YXJlIGFuZCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIG9yIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNTozMzozNS42ODA4MjkwMzFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDY3MzE0OTM1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIERldmljZSBUcmVlIHBhcnNpbmcgYW5kIHZhbGlkYXRpb24gaW4gdGhlIFJlbmVzYXMgUlovTjEvVDJIIE1JSSBDb252ZXJ0ZXIgKFBDUykgcGxhdGZvcm0gZHJpdmVyIChkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jKS4gVGhpcyBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gUmVuZXNhcyBTb0MgaGFyZHdhcmUgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDU6MzM6MzUuNjgwODMzNTkxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDI0MDU4NTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTk4MTQ3NGUzNDUxYTBlMjIzMjEyNDdjN2M4YmVlMTg5NTJkMWMwY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDA1OjMzOjMzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jXFxuaW5kZXggMmI3MmZhOThkZGYxMy4uZWJkNzNlZDYzODk2NiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1xcbkBAIC02ODMsNyArNjgzLDcgQEAgc3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKVxcbiBcXHRpZiAoIWR0X3ZhbClcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHRtZW1zZXQoZHRfdmFsLCBNSUlDX01PRENUUkxfQ09ORl9OT05FLCBzaXplb2YoKmR0X3ZhbCkpO1xcbitcXHRtZW1zZXQoZHRfdmFsLCBNSUlDX01PRENUUkxfQ09ORl9OT05FLCBzaXplb2YoKmR0X3ZhbCkgKiBtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2Vjb25mX2NvbnZfY291bnQpO1xcbiBcXG4gXFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcXFwicmVuZXNhcyxtaWljLXN3aXRjaC1wb3J0aW5cXFwiLCBcXHUwMDI2Y29uZikgPT0gMClcXG4gXFx0XFx0ZHRfdmFsWzBdID0gY29uZjtcXG5AQCAtNjkyLDYgKzY5MiwxMSBAQCBzdGF0aWMgaW50IG1paWNfcGFyc2VfZHQoc3RydWN0IG1paWMgKm1paWMsIHUzMiAqbW9kZV9jZmcpXFxuIFxcdFxcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCBcXFwicmVnXFxcIiwgXFx1MDAyNnBvcnQpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuK1xcdFxcdGlmIChwb3J0IFxcdTAwM2MgbWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X3N0YXJ0IHx8IHBvcnQgXFx1MDAzZSBtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2VtaWljX3BvcnRfbWF4KSB7XFxuK1xcdFxcdFxcdGRldl9lcnIobWlpYy1cXHUwMDNlZGV2LCBcXFwiUG9ydCBudW1iZXIgb3V0IG9mIHJhbmdlOiAlZFxcXFxuXFxcIiwgcG9ydCk7XFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoY29udiwgXFxcInJlbmVzYXMsbWlpYy1pbnB1dFxcXCIsIFxcdTAwMjZjb25mKSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNTozMzozNy4xMDU0Nzg3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzMyNDg0ODU2MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIERldmljZSBUcmVlIHBhcnNpbmcgYW5kIHZhbGlkYXRpb24gaW4gdGhlIFJlbmVzYXMgUlovTjEvVDJIIE1JSSBDb252ZXJ0ZXIgKFBDUykgcGxhdGZvcm0gZHJpdmVyIChkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jKS4gVGhpcyBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gUmVuZXNhcyBTb0MgaGFyZHdhcmUgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTk4MTQ3NGUzNDUxYTBlMjIzMjEyNDdjN2M4YmVlMTg5NTJkMWMwY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMDU6MzM6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1xuaW5kZXggMmI3MmZhOThkZGYxMy4uZWJkNzNlZDYzODk2NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNcbisrKyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNcbkBAIC02ODMsNyArNjgzLDcgQEAgc3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKVxuIFx0aWYgKCFkdF92YWwpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0bWVtc2V0KGR0X3ZhbCwgTUlJQ19NT0RDVFJMX0NPTkZfTk9ORSwgc2l6ZW9mKCpkdF92YWwpKTtcbitcdG1lbXNldChkdF92YWwsIE1JSUNfTU9EQ1RSTF9DT05GX05PTkUsIHNpemVvZigqZHRfdmFsKSAqIG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2Vjb25mX2NvbnZfY291bnQpO1xuIFxuIFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcInJlbmVzYXMsbWlpYy1zd2l0Y2gtcG9ydGluXCIsIFx1MDAyNmNvbmYpID09IDApXG4gXHRcdGR0X3ZhbFswXSA9IGNvbmY7XG5AQCAtNjkyLDYgKzY5MiwxMSBAQCBzdGF0aWMgaW50IG1paWNfcGFyc2VfZHQoc3RydWN0IG1paWMgKm1paWMsIHUzMiAqbW9kZV9jZmcpXG4gXHRcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCBcInJlZ1wiLCBcdTAwMjZwb3J0KSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbitcdFx0aWYgKHBvcnQgXHUwMDNjIG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2VtaWljX3BvcnRfc3RhcnQgfHwgcG9ydCBcdTAwM2UgbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9tYXgpIHtcbitcdFx0XHRkZXZfZXJyKG1paWMtXHUwMDNlZGV2LCBcIlBvcnQgbnVtYmVyIG91dCBvZiByYW5nZTogJWRcXG5cIiwgcG9ydCk7XG4rXHRcdFx0Y29udGludWU7XG4rXHRcdH1cbitcbiBcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKGNvbnYsIFwicmVuZXNhcyxtaWljLWlucHV0XCIsIFx1MDAyNmNvbmYpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDU6MzM6MzcuMTA1NDgwMjk5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTE3NDE5Nzg5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgcHJlY2lzZWx5IHdoaWNoIGRyaXZlciBvciBzdWJzeXN0ZW0gaXMgYmVpbmcgdG91Y2hlZC4gVGhlIGNoYW5nZSBhcHBlYXJzIHRvIGJlIGluIGBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jYC4gQWxyaWdodCwgc28gdGhhdCdzIHdoZXJlIHRoZSBhY3Rpb24gaXMuIFRpbWUgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgaW1wbGljYXRpb25zLlxuXG5Ob3cgSSdsbCByZWFjaCBmb3IgYHJlYWQtZmlsZWAgYW5kIGBncmVwcGVyYCDigJMgc3RhbmRhcmQgdG9vbHMgZm9yIHRoZSBqb2IuIEkgbmVlZCB0byBjbG9zZWx5IGV4YW1pbmUgYGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNgIGl0c2VsZi4gSSB3YW50IHRvIHNlZSB0aGUgbW9kaWZpY2F0aW9ucyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNvZGUuIEknbGwgYWxzbyBjaGVjayBpdHMgS2NvbmZpZyBlbnRyeSBhbmQgaG93IHRoaXMgZHJpdmVyIGlzIGJlaW5nIHV0aWxpemVkLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIHByb3BlciBvdmVydmlldyBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55IGRlZXBlciBhbmFseXNpcy4gSSdtIGVzc2VudGlhbGx5IGJ1aWxkaW5nIGEgY29tcGxldGUgcGljdHVyZSBoZXJlIOKAkyBmcm9tIHRoZSBmaWxlJ3MgaW1wYWN0IHRvIGl0cyBvdmVyYWxsIGZ1bmN0aW9uIHdpdGhpbiB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzM3LCJPdXRwdXRUb2tlbnMiOjc2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNTozMzo0Mi4yNzk2ODAyNDFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY2MCxcbiAgXCJMaW5lQ291bnRcIjogNzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY2MDpcXHRcXHRcXHRcXHRyZXR1cm47XFxuIDY2MTpcXHRcXHRcXHR9XFxuIDY2MjpcXHRcXHR9XFxuIDY2MzpcXHRcXG4gNjY0OlxcdFxcdG1hc2sgPSBCSVQocG9ydCArIHNoaWZ0KTtcXG4gNjY1OlxcdFxcbiA2NjY6XFx0XFx0bWlpYy1cXHUwMDNlbGlua19jZmcubWFzayB8PSBtYXNrO1xcbiA2Njc6XFx0XFx0aWYgKHBvbGFyaXR5X2FjdGl2ZV9oaWdoICE9IGFjdGl2ZV9sb3cpXFxuIDY2ODpcXHRcXHRcXHRtaWljLVxcdTAwM2VsaW5rX2NmZy52YWwgfD0gbWFzaztcXG4gNjY5OlxcdFxcdGVsc2VcXG4gNjcwOlxcdFxcdFxcdG1paWMtXFx1MDAzZWxpbmtfY2ZnLnZhbCBcXHUwMDI2PSB+bWFzaztcXG4gNjcxOlxcdH1cXG4gNjcyOlxcdFxcbiA2NzM6XFx0c3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKVxcbiA2NzQ6XFx0e1xcbiA2NzU6XFx0XFx0c3RydWN0IGRldmljZV9ub2RlICpucCA9IG1paWMtXFx1MDAzZWRldi1cXHUwMDNlb2Zfbm9kZTtcXG4gNjc2OlxcdFxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqY29udjtcXG4gNjc3OlxcdFxcdGJvb2wgYWN0aXZlX2xvdztcXG4gNjc4OlxcdFxcdGludCBwb3J0LCByZXQ7XFxuIDY3OTpcXHRcXHRzOCAqZHRfdmFsO1xcbiA2ODA6XFx0XFx0dTMyIGNvbmY7XFxuIDY4MTpcXHRcXG4gNjgyOlxcdFxcdGR0X3ZhbCA9IGttYWxsb2Nfb2JqcygqZHRfdmFsLCBtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2Vjb25mX2NvbnZfY291bnQpO1xcbiA2ODM6XFx0XFx0aWYgKCFkdF92YWwpXFxuIDY4NDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gNjg1OlxcdFxcbiA2ODY6XFx0XFx0bWVtc2V0KGR0X3ZhbCwgTUlJQ19NT0RDVFJMX0NPTkZfTk9ORSwgc2l6ZW9mKCpkdF92YWwpICogbWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlY29uZl9jb252X2NvdW50KTtcXG4gNjg3OlxcdFxcbiA2ODg6XFx0XFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcXFwicmVuZXNhcyxtaWljLXN3aXRjaC1wb3J0aW5cXFwiLCBcXHUwMDI2Y29uZikgPT0gMClcXG4gNjg5OlxcdFxcdFxcdGR0X3ZhbFswXSA9IGNvbmY7XFxuIDY5MDpcXHRcXG4gNjkxOlxcdFxcdGZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlKG5wLCBjb252KSB7XFxuIDY5MjpcXHRcXHRcXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoY29udiwgXFxcInJlZ1xcXCIsIFxcdTAwMjZwb3J0KSlcXG4gNjkzOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiA2OTQ6XFx0XFxuIDY5NTpcXHRcXHRcXHRpZiAocG9ydCBcXHUwMDNjIG1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZW1paWNfcG9ydF9zdGFydCB8fCBwb3J0IFxcdTAwM2UgbWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X21heCkge1xcbiA2OTY6XFx0XFx0XFx0XFx0ZGV2X2VycihtaWljLVxcdTAwM2VkZXYsIFxcXCJQb3J0IG51bWJlciBvdXQgb2YgcmFuZ2U6ICVkXFxcXG5cXFwiLCBwb3J0KTtcXG4gNjk3OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiA2OTg6XFx0XFx0XFx0fVxcbiA2OTk6XFx0XFxuIDcwMDpcXHRcXHRcXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoY29udiwgXFxcInJlbmVzYXMsbWlpYy1pbnB1dFxcXCIsIFxcdTAwMjZjb25mKSlcXG4gNzAxOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiA3MDI6XFx0XFxuIDcwMzpcXHRcXHRcXHQvKiBBZGp1c3QgZm9yIDAgYmFzZWQgaW5kZXggKi9cXG4gNzA0OlxcdFxcdFxcdGR0X3ZhbFtwb3J0ICsgIW1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZW1paWNfcG9ydF9zdGFydF0gPSBjb25mO1xcbiA3MDU6XFx0XFxuIDcwNjpcXHRcXHRcXHRhY3RpdmVfbG93ID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKGNvbnYsIFxcXCJyZW5lc2FzLG1paWMtcGh5LWxpbmstYWN0aXZlLWxvd1xcXCIpO1xcbiA3MDc6XFx0XFxuIDcwODpcXHRcXHRcXHRtaWljX2NvbmZpZ3VyZV9waHlfbGluayhtaWljLCBjb25mLCBwb3J0LCBhY3RpdmVfbG93KTtcXG4gNzA5OlxcdFxcdH1cXG4gNzEwOlxcdFxcbiA3MTE6XFx0XFx0cmV0ID0gbWlpY19tYXRjaF9kdF9jb25mKG1paWMsIGR0X3ZhbCwgbW9kZV9jZmcpO1xcbiA3MTI6XFx0XFx0a2ZyZWUoZHRfdmFsKTtcXG4gNzEzOlxcdFxcbiA3MTQ6XFx0XFx0cmV0dXJuIHJldDtcXG4gNzE1OlxcdH1cXG4gNzE2OlxcdFxcbiA3MTc6XFx0c3RhdGljIHZvaWQgbWlpY19yZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0KHZvaWQgKmRhdGEpXFxuIDcxODpcXHR7XFxuIDcxOTpcXHRcXHRzdHJ1Y3QgbWlpYyAqbWlpYyA9IGRhdGE7XFxuIDcyMDpcXHRcXHRpbnQgcmV0O1xcbiA3MjE6XFx0XFxuIDcyMjpcXHRcXHRyZXQgPSByZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0KG1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZXJlc2V0X2NvdW50LCBtaWljLVxcdTAwM2Vyc3RzKTtcXG4gNzIzOlxcdFxcdGlmIChyZXQpXFxuIDcyNDpcXHRcXHRcXHRkZXZfZXJyKG1paWMtXFx1MDAzZWRldiwgXFxcImZhaWxlZCB0byBhc3NlcnQgcmVzZXQgbGluZXNcXFxcblxcXCIpO1xcbiA3MjU6XFx0fVxcbiA3MjY6XFx0XFxuIDcyNzpcXHRzdGF0aWMgaW50IG1paWNfcmVzZXRfY29udHJvbF9pbml0KHN0cnVjdCBtaWljICptaWljKVxcbiA3Mjg6XFx0e1xcbiA3Mjk6XFx0XFx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YSA9IG1paWMtXFx1MDAzZW9mX2RhdGE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA1OjMzOjQyLjI3OTc3MzMxMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjY1OTQzMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNzLXJ6bjEtbWlpY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuaC0xNC0jaW5jbHVkZSBcXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuaDoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvcGNzLXJ6bjEtbWlpYy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmgtMTYtI2luY2x1ZGUgXFx1MDAzY25ldC9kc2EuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0xOS0jaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM6MjA6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1yem4xLW1paWMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjk6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1yem4xLW1paWMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtMTAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeWxpbmsuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZT05PW9iai0kKENPTkZJR19QQ1NfTVRLX0xZTlhJKVxcdCs9IHBjcy1tdGstbHlueGkub1xcbmRyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfUENTX1JaTjFfTUlJQylcXHQrPSBwY3MtcnpuMS1taWljLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX3BsYXRmb3JtLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoxNzojaW5jbHVkZSBcXHUwMDNjbGludXgvcGNzLXJ6bjEtbWlpYy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeWxpbmsuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjItI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIzOiNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9uZXQvcGNzLXJ6bjEtbWlpYy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjQtI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL25ldC9yZW5lc2FzLHI5YTA5ZzA3Ny1wY3MtbWlpYy5oXFx1MDAzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNTozMzo0Mi40MDYzNzE1MjlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzQ1ODY4NTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBQQ1NfUlpOMV9NSUlDIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgUENTX1JaTjFfTUlJQ2AgZHJpdmVyIGFuZCwgYXMgdXN1YWwsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBLY29uZmlnLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgc2V0dGluZ3MgYmVmb3JlIEkgY2FuIHRydWx5IGdyYXNwIGl0cyByb2xlIHdpdGhpbiB0aGUgc3lzdGVtLiBJIHdhbnQgdG8gc2VlIHdoYXQncyBjb25maWd1cmFibGUsIHdoYXQgY29uZGl0aW9ucyBlbmFibGUgaXQsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbC4gVGhpcyBgS2NvbmZpZ2AgaXMgZXNzZW50aWFsbHkgdGhlIGJsdWVwcmludCBmb3IgaG93IHRoaXMgZHJpdmVyIGJlaGF2ZXMsIGFuZCBpdCdzIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LiBMZXQncyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NDEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNTozMzo0NC4xNTIyNDIzNTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ3NjI2NzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBDU19SWk4xX01JSUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL0tjb25maWc9MTAxPWNvbmZpZyBORVRfRFNBX1JaTjFfQTVQU1dcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEwNC1cXHRzZWxlY3QgTkVUX0RTQV9UQUdfUlpOMV9BNVBTV1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEwNTpcXHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEwNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE1NT1jb25maWcgRFdNQUNfUkVORVNBU19HQkVUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNTgtXFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9SRU5FU0FTIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE1OTpcXHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTYwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTc5PWNvbmZpZyBEV01BQ19SWk4xXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE4Mi1cXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1JaTjEgfHwgQ09NUElMRV9URVNUKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTgzOlxcdHNlbGVjdCBQQ1NfUlpOMV9NSUlDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xODQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWc9MjE9Y29uZmlnIFBDU19NVEtfTFlOWElcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnOjI5OmNvbmZpZyBQQ1NfUlpOMV9NSUlDXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWctMzAtXFx0dHJpc3RhdGUgXFxcIlJlbmVzYXMgUlovTjEsIFJaL04ySCwgUlovVDJIIE1JSSBjb252ZXJ0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfUENTX01US19MWU5YSSlcXHQrPSBwY3MtbXRrLWx5bnhpLm9cXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX1BDU19SWk4xX01JSUMpXFx0Kz0gcGNzLXJ6bjEtbWlpYy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA1OjMzOjQ0Ljg5OTg3MzIyMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMzNDA4NDE0MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBuZXR3b3JrIGRyaXZlciBjb25maWd1cmF0aW9ucy4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgZHJpdmVycy9uZXQvcGNzL0tjb25maWdgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMjkuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoZSByZWxldmFudCBzZXR0aW5ncyBJJ20gaW50ZXJlc3RlZCBpbiBhcmUgbGlrZWx5IGxvY2F0ZWQgdGhlcmUuIFRoaXMgaXMgYSBjb21tb24gc3RhcnRpbmcgcG9pbnQgZm9yIGNvbmZpZ3VyaW5nIHZhcmlvdXMgZmVhdHVyZXMgb3Igc2VsZWN0aW5nIHNwZWNpZmljIFBIWXMgcmVsYXRlZCB0byBQQ1MgKFBoeXNpY2FsIENvZGluZyBTdWJsYXllcikgZnVuY3Rpb25hbGl0eS4gSSdsbCBuZWVkIHRvIHJhcGlkbHkgc2NhbiB0aGF0IHNlY3Rpb24gYW5kIHF1aWNrbHkgYXNzZXNzIHRoZSBvcHRpb25zIHByZXNlbnRlZC4gRnJvbSB0aGVyZSwgSSBleHBlY3QgdG8gc2VlIHRoZSB0eXBpY2FsIGBjb25maWdgIHZhcmlhYmxlcyBhbmQgYXNzb2NpYXRlZCBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYXNwZWN0cyBhbmQgZGVwZW5kZW5jaWVzLiBJIGFudGljaXBhdGUgdGhpcyB3aWxsIGludm9sdmUgYSBkZWVwIGRpdmUgaW50byBhbnkgYXNzb2NpYXRlZCBgdHJpc3RhdGVgIHZhbHVlcywgYW5kIHdoYXQgdGhhdCBtZWFucyBmb3IgbXkgZW5kIGdvYWxzLiBNeSB1bHRpbWF0ZSBhaW0gaGVyZSBpcyB0byB1bmRlcnN0YW5kIGEgdmVyeSBzcGVjaWZpYyBzZXQgb2YgZmVhdHVyZXMgc28gSSBjYW4gZGV0ZXJtaW5lIHdoYXQgaXMgZW5hYmxlZCAob3IgZGlzYWJsZWQpIGluIHRoZSBzcGVjaWZpYyBrZXJuZWwgY29uZmlnIEkgYW0gd29ya2luZyB3aXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjA1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDU6MzM6NDguMjQwNzE2NTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9wY3MvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyNTpcXHRcXHRoZWxwXFxuICAyNjpcXHRcXHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGhlbHBlcnMgdG8gcGh5bGluayBmb3IgbWFuYWdpbmcgdGhlIEx5bnhJIFBDU1xcbiAgMjc6XFx0XFx0ICB3aGljaCBpcyBwYXJ0IG9mIE1lZGlhVGVrJ3MgU29DIGFuZCBFdGhlcm5ldCBzd2l0Y2ggSUNzLlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgUENTX1JaTjFfTUlJQ1xcbiAgMzA6XFx0XFx0dHJpc3RhdGUgXFxcIlJlbmVzYXMgUlovTjEsIFJaL04ySCwgUlovVDJIIE1JSSBjb252ZXJ0ZXJcXFwiXFxuICAzMTpcXHRcXHRkZXBlbmRzIG9uIE9GXFxuICAzMjpcXHRcXHRkZXBlbmRzIG9uIEFSQ0hfUkVORVNBUyB8fCBDT01QSUxFX1RFU1RcXG4gIDMzOlxcdFxcdGhlbHBcXG4gIDM0OlxcdFxcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBkcml2ZXIgZm9yIHRoZSBNSUkgY29udmVydGVyIGF2YWlsYWJsZSBvblxcbiAgMzU6XFx0XFx0ICBSZW5lc2FzIFJaL04xLCBSWi9OMkgsIGFuZCBSWi9UMkggU29Dcy4gVGhpcyBQQ1MgY29udmVydHMgTUlJIHRvXFxuICAzNjpcXHRcXHQgIFJNSUkvUkdNSUksIG9yIGNhbiBiZSBzZXQgaW4gcGFzcy10aHJvdWdoIG1vZGUgZm9yIE1JSS5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0ZW5kbWVudVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNTozMzo0OC4yNDA3NzUwNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjM3MTI4NzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBhcyBJIGFwcHJvYWNoIHRoaXMgZHJpdmVyOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBwY3MtcnpuMS1taWljLmNgIERyaXZlcioqXG5cbkFscmlnaHQsIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYHBjcy1yem4xLW1paWMuY2AgZHJpdmVyIGlzIGFjdHVhbGx5ICp1c2VkKi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGluc3RhbnRpYXRpb24gYW5kIGJpbmRpbmcgcHJvY2Vzcy4gSXMgdGhpcyBhIHBsYXRmb3JtIGRyaXZlcj8gVGhhdCdzIG15IGluaXRpYWwgaHVuY2gsIGJ1dCBjb25maXJtYXRpb24gaXMga2V5LiBUaGUgZ29hbCBoZXJlIGlzIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgYW5kIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoaXMgY29kZSBpcyBvcGVyYXRpbmcuIENhbiBJIHJlYWxpc3RpY2FsbHkgZXhwZWN0IHRvIGludGVyYWN0IHdpdGggdGhpcyBkcml2ZXIgd2l0aGluIG15IFFFTVUgc2V0dXAsIG9yIGFtIEkgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBzcGVjaWZpYyB0byB0aGUgaGFyZHdhcmU/IFRoYXQncyBhIGNyaXRpY2FsIGZhY3RvciBpbiBteSBhbmFseXNpcy5cblxuTm93LCBpdCdzIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8gc3RhcnQgcmVhZGluZyBgZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY2AgZnJvbSB0aGUgdmVyeSB0b3AgYW5kIHdvcmsgbXkgd2F5IGRvd24uIE5vIHNraXBwaW5nIGFyb3VuZDsgSSBuZWVkIGEgY29tcHJlaGVuc2l2ZSBvdmVydmlldyB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBkZXNpZ24gZGVjaXNpb25zLCB0aGUgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgdGhlIGNvbnRyb2wgZmxvdy4gSSdtIGxvb2tpbmcgZm9yIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHksIGFueSBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgYW5kIHRoZSBtZXRob2RzIHVzZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgaWYgYXBwbGljYWJsZS4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzQwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNTozMzo1MC44Nzc5MDYyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTE5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQvKlxcbiAgIDM6XFx0ICogQ29weXJpZ2h0IChDKSAyMDIyIFNjaG5laWRlciBFbGVjdHJpY1xcbiAgIDQ6XFx0ICpcXG4gICA1OlxcdCAqIENsw6ltZW50IEzDqWdlciBcXHUwMDNjY2xlbWVudC5sZWdlckBib290bGluLmNvbVxcdTAwM2VcXG4gICA2OlxcdCAqL1xcbiAgIDc6XFx0XFxuICAgODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvYXJyYXlfc2l6ZS5oXFx1MDAzZVxcbiAgIDk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdHMuaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRvcHMuaFxcdTAwM2VcXG4gIDExOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9jbGsuaFxcdTAwM2VcXG4gIDEyOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZXZpY2UuaFxcdTAwM2VcXG4gIDEzOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZXZpY2UvZGV2cmVzLmhcXHUwMDNlXFxuICAxNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbWRpby5oXFx1MDAzZVxcbiAgMTU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuICAxNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfcGxhdGZvcm0uaFxcdTAwM2VcXG4gIDE3OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9wY3MtcnpuMS1taWljLmhcXHUwMDNlXFxuICAxODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5bGluay5oXFx1MDAzZVxcbiAgMTk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbiAgMjA6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFxcdTAwM2VcXG4gIDIxOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZXNldC5oXFx1MDAzZVxcbiAgMjI6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG4gIDIzOlxcdCNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9uZXQvcGNzLXJ6bjEtbWlpYy5oXFx1MDAzZVxcbiAgMjQ6XFx0I2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL25ldC9yZW5lc2FzLHI5YTA5ZzA3Ny1wY3MtbWlpYy5oXFx1MDAzZVxcbiAgMjU6XFx0XFxuICAyNjpcXHQjZGVmaW5lIE1JSUNfUFJDTURcXHRcXHRcXHQweDBcXG4gIDI3OlxcdCNkZWZpbmUgTUlJQ19FU0lEX0NPREVcXHRcXHRcXHQweDRcXG4gIDI4OlxcdFxcbiAgMjk6XFx0I2RlZmluZSBNSUlDX01PRENUUkxcXHRcXHRcXHQweDhcXG4gIDMwOlxcdFxcbiAgMzE6XFx0I2RlZmluZSBNSUlDX1BIWV9MSU5LXFx0XFx0XFx0MHgxNFxcbiAgMzI6XFx0XFxuICAzMzpcXHQjZGVmaW5lIE1JSUNfQ09OVkNUUkwocG9ydClcXHRcXHQoMHgxMDAgKyAocG9ydCkgKiA0KVxcbiAgMzQ6XFx0XFxuICAzNTpcXHQjZGVmaW5lIE1JSUNfQ09OVkNUUkxfQ09OVl9TUEVFRFxcdEdFTk1BU0soMSwgMClcXG4gIDM2OlxcdCNkZWZpbmUgQ09OVl9NT0RFXzEwTUJQU1xcdFxcdDBcXG4gIDM3OlxcdCNkZWZpbmUgQ09OVl9NT0RFXzEwME1CUFNcXHRcXHQxXFxuICAzODpcXHQjZGVmaW5lIENPTlZfTU9ERV8xMDAwTUJQU1xcdFxcdDJcXG4gIDM5OlxcdFxcbiAgNDA6XFx0I2RlZmluZSBNSUlDX0NPTlZDVFJMX0NPTlZfTU9ERVxcdFxcdEdFTk1BU0soMywgMilcXG4gIDQxOlxcdCNkZWZpbmUgQ09OVl9NT0RFX01JSVxcdFxcdFxcdDBcXG4gIDQyOlxcdCNkZWZpbmUgQ09OVl9NT0RFX1JNSUlcXHRcXHRcXHQxXFxuICA0MzpcXHQjZGVmaW5lIENPTlZfTU9ERV9SR01JSVxcdFxcdFxcdDJcXG4gIDQ0OlxcdFxcbiAgNDU6XFx0I2RlZmluZSBNSUlDX0NPTlZDVFJMX0ZVTExEXFx0XFx0QklUKDgpXFxuICA0NjpcXHQjZGVmaW5lIE1JSUNfQ09OVkNUUkxfUkdNSUlfTElOS1xcdEJJVCgxMilcXG4gIDQ3OlxcdCNkZWZpbmUgTUlJQ19DT05WQ1RSTF9SR01JSV9EVVBMRVhcXHRCSVQoMTMpXFxuICA0ODpcXHQjZGVmaW5lIE1JSUNfQ09OVkNUUkxfUkdNSUlfU1BFRURcXHRHRU5NQVNLKDE1LCAxNClcXG4gIDQ5OlxcdFxcbiAgNTA6XFx0I2RlZmluZSBNSUlDX0NPTlZSU1RcXHRcXHRcXHQweDExNFxcbiAgNTE6XFx0I2RlZmluZSBNSUlDX0NPTlZSU1RfUEhZSUZfUlNUKHBvcnQpXFx0QklUKHBvcnQpXFxuICA1MjpcXHQjZGVmaW5lIE1JSUNfQ09OVlJTVF9QSFlJRl9SU1RfTUFTS1xcdEdFTk1BU0soNCwgMClcXG4gIDUzOlxcdFxcbiAgNTQ6XFx0I2RlZmluZSBNSUlDX1NXQ1RSTFxcdFxcdFxcdDB4MzA0XFxuICA1NTpcXHQjZGVmaW5lIE1JSUNfU1dEVVBDXFx0XFx0XFx0MHgzMDhcXG4gIDU2OlxcdFxcbiAgNTc6XFx0I2RlZmluZSBNSUlDX01PRENUUkxfQ09ORl9DT05WX01BWFxcdDZcXG4gIDU4OlxcdCNkZWZpbmUgTUlJQ19NT0RDVFJMX0NPTkZfTk9ORVxcdFxcdC0xXFxuICA1OTpcXHRcXG4gIDYwOlxcdCNkZWZpbmUgTUlJQ19NQVhfTlVNX1JTVFNcXHRcXHQyXFxuICA2MTpcXHRcXG4gIDYyOlxcdC8qKlxcbiAgNjM6XFx0ICogc3RydWN0IG1vZGN0cmxfbWF0Y2ggLSBNYXRjaGluZyB0YWJsZSBlbnRyeSBmb3IgIGNvbnZjdHJsIGNvbmZpZ3VyYXRpb25cXG4gIDY0OlxcdCAqXFx0XFx0XFx0ICBTZWUgc2VjdGlvbiA4LjIuMSBvZiBtYW51YWwuXFxuICA2NTpcXHQgKiBAbW9kZV9jZmc6IENvbmZpZ3VyYXRpb24gdmFsdWUgZm9yIGNvbnZjdHJsXFxuICA2NjpcXHQgKiBAY29udjogQ29uZmlndXJhdGlvbiBvZiBldGhlcm5ldCBwb3J0IG11eGVzLiBGaXJzdCBpbmRleCBpcyBTV0lUQ0hfUE9SVElOLFxcbiAgNjc6XFx0ICpcXHQgIHRoZW4gaW5kZXggMSAtIDUgYXJlIENPTlYxIC0gQ09OVjUgZm9yIFJaL04xIFNvQ3MuIEluIGNhc2VcXG4gIDY4OlxcdCAqXFx0ICBvZiBSWi9UMkggYW5kIFJaL04ySCBTb0NzLCB0aGUgZmlyc3QgaW5kZXggaXMgU1dJVENIX1BPUlRJTiB0aGVuXFxuICA2OTpcXHQgKlxcdCAgaW5kZXggMCAtIDMgYXJlIENPTlYwIC0gQ09OVjMuXFxuICA3MDpcXHQgKi9cXG4gIDcxOlxcdHN0cnVjdCBtb2RjdHJsX21hdGNoIHtcXG4gIDcyOlxcdFxcdHUzMiBtb2RlX2NmZztcXG4gIDczOlxcdFxcdHU4IGNvbnZbTUlJQ19NT0RDVFJMX0NPTkZfQ09OVl9NQVhdO1xcbiAgNzQ6XFx0fTtcXG4gIDc1OlxcdFxcbiAgNzY6XFx0c3RhdGljIHN0cnVjdCBtb2RjdHJsX21hdGNoIG1vZGN0cmxfbWF0Y2hfdGFibGVbXSA9IHtcXG4gIDc3OlxcdFxcdHsweDAsIHtNSUlDX1JUT1NfUE9SVCwgTUlJQ19HTUFDMV9QT1JULCBNSUlDX1NXSVRDSF9QT1JURCxcXG4gIDc4OlxcdFxcdCAgICAgICBNSUlDX1NXSVRDSF9QT1JUQywgTUlJQ19TRVJDT1NfUE9SVEIsIE1JSUNfU0VSQ09TX1BPUlRBfX0sXFxuICA3OTpcXHRcXHR7MHgxLCB7TUlJQ19SVE9TX1BPUlQsIE1JSUNfR01BQzFfUE9SVCwgTUlJQ19TV0lUQ0hfUE9SVEQsXFxuICA4MDpcXHRcXHQgICAgICAgTUlJQ19TV0lUQ0hfUE9SVEMsIE1JSUNfRVRIRVJDQVRfUE9SVEIsIE1JSUNfRVRIRVJDQVRfUE9SVEF9fSxcXG4gIDgxOlxcdFxcdHsweDIsIHtNSUlDX1JUT1NfUE9SVCwgTUlJQ19HTUFDMV9QT1JULCBNSUlDX1NXSVRDSF9QT1JURCxcXG4gIDgyOlxcdFxcdCAgICAgICBNSUlDX0VUSEVSQ0FUX1BPUlRDLCBNSUlDX0VUSEVSQ0FUX1BPUlRCLCBNSUlDX0VUSEVSQ0FUX1BPUlRBfX0sXFxuICA4MzpcXHRcXHR7MHgzLCB7TUlJQ19SVE9TX1BPUlQsIE1JSUNfR01BQzFfUE9SVCwgTUlJQ19TV0lUQ0hfUE9SVEQsXFxuICA4NDpcXHRcXHQgICAgICAgTUlJQ19TV0lUQ0hfUE9SVEMsIE1JSUNfU1dJVENIX1BPUlRCLCBNSUlDX1NXSVRDSF9QT1JUQX19LFxcbiAgODU6XFx0XFxuICA4NjpcXHRcXHR7MHg4LCB7TUlJQ19SVE9TX1BPUlQsIE1JSUNfR01BQzFfUE9SVCwgTUlJQ19TV0lUQ0hfUE9SVEQsXFxuICA4NzpcXHRcXHQgICAgICAgTUlJQ19TV0lUQ0hfUE9SVEMsIE1JSUNfU0VSQ09TX1BPUlRCLCBNSUlDX1NFUkNPU19QT1JUQX19LFxcbiAgODg6XFx0XFx0ezB4OSwge01JSUNfUlRPU19QT1JULCBNSUlDX0dNQUMxX1BPUlQsIE1JSUNfU1dJVENIX1BPUlRELFxcbiAgODk6XFx0XFx0ICAgICAgIE1JSUNfU1dJVENIX1BPUlRDLCBNSUlDX0VUSEVSQ0FUX1BPUlRCLCBNSUlDX0VUSEVSQ0FUX1BPUlRBfX0sXFxuICA5MDpcXHRcXHR7MHhBLCB7TUlJQ19SVE9TX1BPUlQsIE1JSUNfR01BQzFfUE9SVCwgTUlJQ19TV0lUQ0hfUE9SVEQsXFxuICA5MTpcXHRcXHQgICAgICAgTUlJQ19FVEhFUkNBVF9QT1JUQywgTUlJQ19FVEhFUkNBVF9QT1JUQiwgTUlJQ19FVEhFUkNBVF9QT1JUQX19LFxcbiAgOTI6XFx0XFx0ezB4Qiwge01JSUNfUlRPU19QT1JULCBNSUlDX0dNQUMxX1BPUlQsIE1JSUNfU1dJVENIX1BPUlRELFxcbiAgOTM6XFx0XFx0ICAgICAgIE1JSUNfU1dJVENIX1BPUlRDLCBNSUlDX1NXSVRDSF9QT1JUQiwgTUlJQ19TV0lUQ0hfUE9SVEF9fSxcXG4gIDk0OlxcdFxcbiAgOTU6XFx0XFx0ezB4MTAsIHtNSUlDX0dNQUMyX1BPUlQsIE1JSUNfR01BQzFfUE9SVCwgTUlJQ19TV0lUQ0hfUE9SVEQsXFxuICA5NjpcXHRcXHRcXHRNSUlDX1NXSVRDSF9QT1JUQywgTUlJQ19TRVJDT1NfUE9SVEIsIE1JSUNfU0VSQ09TX1BPUlRBfX0sXFxuICA5NzpcXHRcXHR7MHgxMSwge01JSUNfR01BQzJfUE9SVCwgTUlJQ19HTUFDMV9QT1JULCBNSUlDX1NXSVRDSF9QT1JURCxcXG4gIDk4OlxcdFxcdFxcdE1JSUNfU1dJVENIX1BPUlRDLCBNSUlDX0VUSEVSQ0FUX1BPUlRCLCBNSUlDX0VUSEVSQ0FUX1BPUlRBfX0sXFxuICA5OTpcXHRcXHR7MHgxMiwge01JSUNfR01BQzJfUE9SVCwgTUlJQ19HTUFDMV9QT1JULCBNSUlDX1NXSVRDSF9QT1JURCxcXG4gMTAwOlxcdFxcdFxcdE1JSUNfRVRIRVJDQVRfUE9SVEMsIE1JSUNfRVRIRVJDQVRfUE9SVEIsIE1JSUNfRVRIRVJDQVRfUE9SVEF9fSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDU6MzM6NTAuODc4MDA3NjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjMxMzczMjkwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHdvcmtpbmcgb24gYGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNgLCBrZWVwaW5nIGluIG1pbmQgSSdtIGFuIGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgUENTIFJaTjEgTUlJQyBEcml2ZXIgUHJvYmUgYW5kIEluaXRpYWxpemF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciwgYHBjcy1yem4xLW1paWMuY2AsIGhhbmRsZXMgaW5pdGlhbGl6YXRpb24gYW5kIHRoZSBwcm9iaW5nIHByb2Nlc3MuIFRoZSBjcml0aWNhbCBwYXJ0IGlzIGFsd2F5cyBob3cgdGhlIGhhcmR3YXJlIGlzIGJyb3VnaHQgdXAsIHdoYXQgcmVnaXN0ZXJzIGFyZSBwb2tlZCwgd2hhdCdzIGNvbmZpZ3VyZWQsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBhcmUgY2hlY2tlZC4gSSdtIGdvaW5nIHRvIGZvY3VzIG15IGF0dGVudGlvbiBhcm91bmQgdGhlIGBwcm9iZWAgZnVuY3Rpb24gYW5kIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBoYXJkd2FyZSBzZXR1cCBoZXJlLCBhbmQgSSdsbCBiZSBsb29raW5nIGZvciBjbHVlcyBhYm91dCB0aGUgUlpOMS1zcGVjaWZpYyBNSUlDIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbi4gSSBrbm93IHRoZXNlIFJlbmVzYXMgZHJpdmVycyBjYW4gYmUgdHJpY2t5IHdpdGggdGhlaXIgY3VzdG9tIHJlZ2lzdGVyIG1hcHBpbmdzIGFuZCBwb3dlciBtYW5hZ2VtZW50IHJlcXVpcmVtZW50cywgc28gSSdsbCBiZSBtZXRpY3Vsb3VzbHkgZXhhbWluaW5nIHRoZSBjb2RlIGZsb3cuIFVuZGVyc3RhbmRpbmcgdGhpcyBjcml0aWNhbCBpbml0aWFsIHNldHVwIHdpbGwgYmUgY3J1Y2lhbCBmb3IgYW55IGRlYnVnZ2luZyBvciBjdXN0b21pemF0aW9uIGRvd24gdGhlIGxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyMTIsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA1OjMzOjUzLjE5MTc0MjUzNVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODMxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MzAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3MzA6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gbWlpYy1cXHUwMDNlZGV2O1xcbiA3MzE6XFx0XFx0aW50IHJldDtcXG4gNzMyOlxcdFxcdHU4IGk7XFxuIDczMzpcXHRcXG4gNzM0OlxcdFxcdGlmICghb2ZfZGF0YS1cXHUwMDNlcmVzZXRfY291bnQpXFxuIDczNTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNzM2OlxcdFxcbiA3Mzc6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG9mX2RhdGEtXFx1MDAzZXJlc2V0X2NvdW50OyBpKyspXFxuIDczODpcXHRcXHRcXHRtaWljLVxcdTAwM2Vyc3RzW2ldLmlkID0gb2ZfZGF0YS1cXHUwMDNlcmVzZXRfaWRzW2ldO1xcbiA3Mzk6XFx0XFxuIDc0MDpcXHRcXHRyZXQgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfYnVsa19nZXRfZXhjbHVzaXZlKGRldiwgb2ZfZGF0YS1cXHUwMDNlcmVzZXRfY291bnQsXFxuIDc0MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgbWlpYy1cXHUwMDNlcnN0cyk7XFxuIDc0MjpcXHRcXHRpZiAocmV0KVxcbiA3NDM6XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsXFxuIDc0NDpcXHRcXHRcXHRcXHRcXHQgICAgIFxcXCJmYWlsZWQgdG8gZ2V0IGJ1bGsgcmVzZXQgbGluZXNcXFxcblxcXCIpO1xcbiA3NDU6XFx0XFxuIDc0NjpcXHRcXHRyZXQgPSByZXNldF9jb250cm9sX2J1bGtfZGVhc3NlcnQob2ZfZGF0YS1cXHUwMDNlcmVzZXRfY291bnQsIG1paWMtXFx1MDAzZXJzdHMpO1xcbiA3NDc6XFx0XFx0aWYgKHJldClcXG4gNzQ4OlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LFxcbiA3NDk6XFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiZmFpbGVkIHRvIGRlYXNzZXJ0IHJlc2V0IGxpbmVzXFxcXG5cXFwiKTtcXG4gNzUwOlxcdFxcbiA3NTE6XFx0XFx0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgbWlpY19yZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0LFxcbiA3NTI6XFx0XFx0XFx0XFx0XFx0ICAgICAgIG1paWMpO1xcbiA3NTM6XFx0XFx0aWYgKHJldClcXG4gNzU0OlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCBcXFwiZmFpbGVkIHRvIGFkZCByZXNldCBhY3Rpb25cXFxcblxcXCIpO1xcbiA3NTU6XFx0XFxuIDc1NjpcXHRcXHRyZXR1cm4gMDtcXG4gNzU3OlxcdH1cXG4gNzU4OlxcdFxcbiA3NTk6XFx0c3RhdGljIGludCBtaWljX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIDc2MDpcXHR7XFxuIDc2MTpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbiA3NjI6XFx0XFx0c3RydWN0IG1paWMgKm1paWM7XFxuIDc2MzpcXHRcXHR1MzIgbW9kZV9jZmc7XFxuIDc2NDpcXHRcXHRpbnQgcmV0O1xcbiA3NjU6XFx0XFxuIDc2NjpcXHRcXHRtaWljID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCptaWljKSwgR0ZQX0tFUk5FTCk7XFxuIDc2NzpcXHRcXHRpZiAoIW1paWMpXFxuIDc2ODpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gNzY5OlxcdFxcbiA3NzA6XFx0XFx0bWlpYy1cXHUwMDNlb2ZfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbiA3NzE6XFx0XFx0bWlpYy1cXHUwMDNlZGV2ID0gZGV2O1xcbiA3NzI6XFx0XFxuIDc3MzpcXHRcXHRyZXQgPSBtaWljX3BhcnNlX2R0KG1paWMsIFxcdTAwMjZtb2RlX2NmZyk7XFxuIDc3NDpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gNzc1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDc3NjpcXHRcXG4gNzc3OlxcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZtaWljLVxcdTAwM2Vsb2NrKTtcXG4gNzc4OlxcdFxcdG1paWMtXFx1MDAzZWJhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCk7XFxuIDc3OTpcXHRcXHRpZiAoSVNfRVJSKG1paWMtXFx1MDAzZWJhc2UpKVxcbiA3ODA6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIobWlpYy1cXHUwMDNlYmFzZSk7XFxuIDc4MTpcXHRcXG4gNzgyOlxcdFxcdHJldCA9IG1paWNfcmVzZXRfY29udHJvbF9pbml0KG1paWMpO1xcbiA3ODM6XFx0XFx0aWYgKHJldClcXG4gNzg0OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDc4NTpcXHRcXG4gNzg2OlxcdFxcdHJldCA9IGRldm1fcG1fcnVudGltZV9lbmFibGUoZGV2KTtcXG4gNzg3OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiA3ODg6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNzg5OlxcdFxcbiA3OTA6XFx0XFx0cmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChkZXYpO1xcbiA3OTE6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDc5MjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA3OTM6XFx0XFxuIDc5NDpcXHRcXHRyZXQgPSBtaWljX2luaXRfaHcobWlpYywgbW9kZV9jZmcpO1xcbiA3OTU6XFx0XFx0aWYgKHJldClcXG4gNzk2OlxcdFxcdFxcdGdvdG8gZGlzYWJsZV9ydW50aW1lX3BtO1xcbiA3OTc6XFx0XFxuIDc5ODpcXHRcXHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19QSFlfTElOSywgbWlpYy1cXHUwMDNlbGlua19jZmcubWFzaywgbWlpYy1cXHUwMDNlbGlua19jZmcudmFsKTtcXG4gNzk5OlxcdFxcbiA4MDA6XFx0XFx0LyogbWlpY19jcmVhdGUoKSByZWxpZXMgb24gdGhhdCBmYWN0IHRoYXQgZGF0YSBhcmUgYXR0YWNoZWQgdG8gdGhlXFxuIDgwMTpcXHRcXHQgKiBwbGF0Zm9ybSBkZXZpY2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBkcml2ZXIgaXMgcmVhZHkgc28gdGhpcyBuZWVkcyB0b1xcbiA4MDI6XFx0XFx0ICogYmUgdGhlIGxhc3QgdGhpbmcgdG8gYmUgZG9uZSBhZnRlciBldmVyeXRoaW5nIGlzIGluaXRpYWxpemVkXFxuIDgwMzpcXHRcXHQgKiBwcm9wZXJseS5cXG4gODA0OlxcdFxcdCAqL1xcbiA4MDU6XFx0XFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgbWlpYyk7XFxuIDgwNjpcXHRcXG4gODA3OlxcdFxcdHJldHVybiAwO1xcbiA4MDg6XFx0XFxuIDgwOTpcXHRkaXNhYmxlX3J1bnRpbWVfcG06XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA1OjMzOjUzLjE5MTkyNzM0NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjk1ODc0NjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gdGhlIGBwY3MtcnpuMS1taWljLmNgIFNvdXJjZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBUaGUgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSByZXN0IG9mIHRoZSBgcGNzLXJ6bjEtbWlpYy5jYCBmaWxlLiBJJ20gYXNzdW1pbmcgdGhlcmUncyBtb3JlIHRvIHVuZGVyc3RhbmQgaGVyZSB0aGFuIGp1c3Qgd2hhdCBJJ3ZlIGFscmVhZHkgZ2xhbmNlZCBhdC4gSSBuZWVkIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGltcGxlbWVudGF0aW9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoZSB0eXBpY2FsIHRoaW5ncywgb2YgY291cnNlOiBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMsIGludGVycnVwdCBoYW5kbGVycywgZGF0YSB0cmFuc2ZlciByb3V0aW5lcywgcmVnaXN0ZXIgZGVmaW5pdGlvbnMuLi4gdGhlIHdob2xlIHNoZWJhbmcuIFNwZWNpZmljYWxseSwgSSdtIGV4cGVjdGluZyB0byBzZWUgaG93IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIE1JSSBpbnRlcmZhY2Ug4oCTIGlzIGl0IGRpcmVjdCByZWdpc3RlciBhY2Nlc3MsIG9yIGFyZSB0aGVyZSBhYnN0cmFjdGlvbnMgaW4gcGxhY2U/IEknbGwgYmUgb24gdGhlIGxvb2tvdXQgZm9yIGFueSBxdWlya3kgaGFyZHdhcmUtc3BlY2lmaWMgd29ya2Fyb3VuZHMgb3Igb3B0aW1pemF0aW9ucyBhcyB3ZWxsLiBUaGUgZGV2aWwsIGFzIGFsd2F5cywgaXMgaW4gdGhlIGRldGFpbHMuIExldCdzIHNlZSBpZiB0aGlzIGNvZGViYXNlIGlzIGNsZWFuLCB3ZWxsLWNvbW1lbnRlZCwgYW5kIGZvbGxvd3MgZXN0YWJsaXNoZWQgY29udmVudGlvbnMsIG9yIGlmIGl0J3MgZ29pbmcgdG8gYmUgYSBiaXQgb2YgYSBoYWlyYmFsbC4gSSdtIHByZXBhcmVkIGZvciBlaXRoZXIhIExldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTcwNiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDU6MzM6NTUuODg3ODA1MTkzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODEwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODEwOlxcdFxcdHBtX3J1bnRpbWVfcHV0KGRldik7XFxuIDgxMTpcXHRcXG4gODEyOlxcdFxcdHJldHVybiByZXQ7XFxuIDgxMzpcXHR9XFxuIDgxNDpcXHRcXG4gODE1OlxcdHN0YXRpYyB2b2lkIG1paWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIDgxNjpcXHR7XFxuIDgxNzpcXHRcXHRwbV9ydW50aW1lX3B1dChcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gODE4OlxcdH1cXG4gODE5OlxcdFxcbiA4MjA6XFx0c3RhdGljIHN0cnVjdCBtaWljX29mX2RhdGEgcnpuMV9taWljX29mX2RhdGEgPSB7XFxuIDgyMTpcXHRcXHQubWF0Y2hfdGFibGUgPSBtb2RjdHJsX21hdGNoX3RhYmxlLFxcbiA4MjI6XFx0XFx0Lm1hdGNoX3RhYmxlX2NvdW50ID0gQVJSQVlfU0laRShtb2RjdHJsX21hdGNoX3RhYmxlKSxcXG4gODIzOlxcdFxcdC5jb25mX2NvbnZfY291bnQgPSBNSUlDX01PRENUUkxfQ09ORl9DT05WX01BWCxcXG4gODI0OlxcdFxcdC5jb25mX3RvX3N0cmluZyA9IGNvbmZfdG9fc3RyaW5nLFxcbiA4MjU6XFx0XFx0LmNvbmZfdG9fc3RyaW5nX2NvdW50ID0gQVJSQVlfU0laRShjb25mX3RvX3N0cmluZyksXFxuIDgyNjpcXHRcXHQuaW5kZXhfdG9fc3RyaW5nID0gaW5kZXhfdG9fc3RyaW5nLFxcbiA4Mjc6XFx0XFx0LmluZGV4X3RvX3N0cmluZ19jb3VudCA9IEFSUkFZX1NJWkUoaW5kZXhfdG9fc3RyaW5nKSxcXG4gODI4OlxcdFxcdC5taWljX3BvcnRfc3RhcnQgPSAxLFxcbiA4Mjk6XFx0XFx0Lm1paWNfcG9ydF9tYXggPSA1LFxcbiA4MzA6XFx0XFx0LnN3X21vZGVfbWFzayA9IEdFTk1BU0soNCwgMCksXFxuIDgzMTpcXHRcXHQuaW5pdF91bmxvY2tfbG9ja19yZWdzID0gdHJ1ZSxcXG4gODMyOlxcdFxcdC5taWljX3dyaXRlID0gbWlpY19yZWdfd3JpdGVsX3VubG9ja2VkLFxcbiA4MzM6XFx0XFx0LnR5cGUgPSBNSUlDX1RZUEVfUlpOMSxcXG4gODM0OlxcdH07XFxuIDgzNTpcXHRcXG4gODM2OlxcdHN0YXRpYyBzdHJ1Y3QgbWlpY19vZl9kYXRhIHJ6dDJoX21paWNfb2ZfZGF0YSA9IHtcXG4gODM3OlxcdFxcdC5tYXRjaF90YWJsZSA9IHJ6dDJoX21vZGN0cmxfbWF0Y2hfdGFibGUsXFxuIDgzODpcXHRcXHQubWF0Y2hfdGFibGVfY291bnQgPSBBUlJBWV9TSVpFKHJ6dDJoX21vZGN0cmxfbWF0Y2hfdGFibGUpLFxcbiA4Mzk6XFx0XFx0LmNvbmZfY29udl9jb3VudCA9IDUsXFxuIDg0MDpcXHRcXHQuY29uZl90b19zdHJpbmcgPSByenQyaF9jb25mX3RvX3N0cmluZyxcXG4gODQxOlxcdFxcdC5jb25mX3RvX3N0cmluZ19jb3VudCA9IEFSUkFZX1NJWkUocnp0MmhfY29uZl90b19zdHJpbmcpLFxcbiA4NDI6XFx0XFx0LmluZGV4X3RvX3N0cmluZyA9IHJ6dDJoX2luZGV4X3RvX3N0cmluZyxcXG4gODQzOlxcdFxcdC5pbmRleF90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKHJ6dDJoX2luZGV4X3RvX3N0cmluZyksXFxuIDg0NDpcXHRcXHQubWlpY19wb3J0X3N0YXJ0ID0gMCxcXG4gODQ1OlxcdFxcdC5taWljX3BvcnRfbWF4ID0gNCxcXG4gODQ2OlxcdFxcdC5zd19tb2RlX21hc2sgPSBHRU5NQVNLKDIsIDApLFxcbiA4NDc6XFx0XFx0LnJlc2V0X2lkcyA9IHJ6dDJoX3Jlc2V0X2lkcyxcXG4gODQ4OlxcdFxcdC5yZXNldF9jb3VudCA9IEFSUkFZX1NJWkUocnp0MmhfcmVzZXRfaWRzKSxcXG4gODQ5OlxcdFxcdC5taWljX3dyaXRlID0gbWlpY19yZWdfd3JpdGVsX2xvY2tlZCxcXG4gODUwOlxcdFxcdC50eXBlID0gTUlJQ19UWVBFX1JaVDJILFxcbiA4NTE6XFx0fTtcXG4gODUyOlxcdFxcbiA4NTM6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWlpY19vZl9tdGFibGVbXSA9IHtcXG4gODU0OlxcdFxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVuZXNhcyxyOWEwOWcwNzctbWlpY1xcXCIsIC5kYXRhID0gXFx1MDAyNnJ6dDJoX21paWNfb2ZfZGF0YSB9LFxcbiA4NTU6XFx0XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJyZW5lc2FzLHJ6bjEtbWlpY1xcXCIsIC5kYXRhID0gXFx1MDAyNnJ6bjFfbWlpY19vZl9kYXRhIH0sXFxuIDg1NjpcXHRcXHR7IC8qIHNlbnRpbmVsICovIH1cXG4gODU3OlxcdH07XFxuIDg1ODpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtaWljX29mX210YWJsZSk7XFxuIDg1OTpcXHRcXG4gODYwOlxcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1paWNfZHJpdmVyID0ge1xcbiA4NjE6XFx0XFx0LmRyaXZlciA9IHtcXG4gODYyOlxcdFxcdFxcdC5uYW1lXFx0ID0gXFxcInJ6bjFfbWlpY1xcXCIsXFxuIDg2MzpcXHRcXHRcXHQuc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWUsXFxuIDg2NDpcXHRcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBtaWljX29mX210YWJsZSxcXG4gODY1OlxcdFxcdH0sXFxuIDg2NjpcXHRcXHQucHJvYmUgPSBtaWljX3Byb2JlLFxcbiA4Njc6XFx0XFx0LnJlbW92ZSA9IG1paWNfcmVtb3ZlLFxcbiA4Njg6XFx0fTtcXG4gODY5OlxcdG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobWlpY19kcml2ZXIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNTozMzo1NS44ODc4OTQ2NTNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDMxMTg3Mzc4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBtaWljX2RyaXZlcmAgYW5kIGl0cyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBtaWljX2RyaXZlcmAuIFNlZW1zIGxpa2UgaXQncyBhIHBsYXRmb3JtIGRyaXZlciwgdXNpbmcgYW4gT0YgbWF0Y2ggdGFibGUsIHNwZWNpZmljYWxseSBmb3IgUmVuZXNhcyBTb0NzIGxpa2UgdGhlIFJaL04xIGFuZCBSWi9UMkgsIHdpdGggdGhhdCBgcmVuZXNhcyxyOWEwOWcwNzctbWlpY2AgYW5kIGByZW5lc2FzLHJ6bjEtbWlpY2AgY29tcGF0aWJpbGl0eSBzdHJpbmdzLiBUaGUgYC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZWAgYml0IGNhdGNoZXMgbXkgZXllIOKAkyBpbnRlcmVzdGluZy5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciB0aGlzIGhhcmR3YXJlLCBhbmQgYnkgZXh0ZW5zaW9uIHRoaXMgZHJpdmVyLCBpcyBldmVuIGFjY2Vzc2libGUgd2l0aGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFdlIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIHByYWN0aWNhbGx5IGZ1enphYmxlLlxuXG5UaGF0IHRha2VzIG1lIHRvIHRoZSBydWxlc2V0OiBpdCdzIGEgbm8tZ28gaWYgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIHNldHVwcywgZXZlbiBpZiB0aGUgaGFyZHdhcmUgaXMgc29mdHdhcmUtZW11bGF0ZWQuIFZlbmRvci1zcGVjaWZpYyBzdHVmZiByZXF1aXJpbmcgYWN0dWFsIFBDSWUgY2FyZHMgaXMgYWxzbyBvZmYgdGhlIHRhYmxlLiBUaGlzIGRyaXZlciBjb3VsZCBiZSBpbiB0cm91YmxlLlxuXG5TbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaXMgaW5zdGFudGlhdGVkIG9yIHVzZWQuIEknbGwgY2hlY2sgdG8gc2VlIGlmIGBwY3MtcnpuMS1taWljYCBpcyBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlLiBMZXQncyBzdGFydCB3aXRoIGEgYGdyZXBgIGZvciBgbWlpY19jcmVhdGVgIG9yIGFueSByZWxldmFudCBleHBvcnRzL2Z1bmN0aW9ucyB3aXRoaW4gYHBjcy1yem4xLW1paWMuY2AuIFRoYXQgc2hvdWxkIHJldmVhbCB0aGUgaW50ZXJhY3Rpb24gcG9pbnRzIGFuZCB3aGV0aGVyIGl0J3MgdGllZCB0byBzb21lIGRlZXBseSBzcGVjaWZpYyBoYXJkd2FyZSwgb3IgaWYgdGhlcmUncyBhIGNoYW5jZSBvZiB0cmlnZ2VyaW5nIGl0IHdpdGhvdXQgYSBwaHlzaWNhbCBSZW5lc2FzIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTE0NywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA1OjM0OjAwLjE5OTc3MTE1OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxNDQwNTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1paWNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTExNDc9c3RhdGljIHZvaWQgYTVwc3dfcGNzX2ZyZWUoc3RydWN0IGE1cHN3ICphNXBzdylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE1Mi1cXHRcXHRpZiAoYTVwc3ctXFx1MDAzZXBjc1tpXSlcXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jOjExNTM6XFx0XFx0XFx0bWlpY19kZXN0cm95KGE1cHN3LVxcdTAwM2VwY3NbaV0pO1xcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE1NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTExNTc9c3RhdGljIGludCBhNXBzd19wY3NfZ2V0KHN0cnVjdCBhNXBzdyAqYTVwc3cpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExODItXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYzoxMTgzOlxcdFxcdHBjcyA9IG1paWNfY3JlYXRlKGE1cHN3LVxcdTAwM2VkZXYsIHBjc19ub2RlKTtcXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExODQtXFx0XFx0aWYgKElTX0VSUihwY3MpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM9NjM9c3RhdGljIGludCByZW5lc2FzX2dtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTcwLVxcdGlmIChwY3Nfbm9kZSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzo3MTpcXHRcXHRwY3MgPSBtaWljX2NyZWF0ZShwcml2LVxcdTAwM2VkZXZpY2UsIHBjc19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtNzItXFx0XFx0b2Zfbm9kZV9wdXQocGNzX25vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTgyPXN0YXRpYyB2b2lkIHJlbmVzYXNfZ21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtODQtXFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM6ODU6XFx0XFx0bWlpY19kZXN0cm95KHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3Bjcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTg2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYz0xNj1zdGF0aWMgaW50IHJ6bjFfZHdtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTI0LVxcdGlmIChwY3Nfbm9kZSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzoyNTpcXHRcXHRwY3MgPSBtaWljX2NyZWF0ZShwcml2LVxcdTAwM2VkZXZpY2UsIHBjc19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtMjYtXFx0XFx0b2Zfbm9kZV9wdXQocGNzX25vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTM2PXN0YXRpYyB2b2lkIHJ6bjFfZHdtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTM4LVxcdGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjM5OlxcdFxcdG1paWNfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy00MC19XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jPTE3Nz1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHJ6dDJoX3Jlc2V0X2lkc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0xODItLyoqXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoxODM6ICogc3RydWN0IG1paWNfcGh5X2xpbmtfY2ZnIC0gTUlJQyBQSFlfTElOSyBjb25maWd1cmF0aW9uXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0xODQtICogQG1hc2s6IE1hc2sgb2YgcGh5X2xpbmsgYml0c1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0xODYtICovXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoxODc6c3RydWN0IG1paWNfcGh5X2xpbmtfY2ZnIHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE4OC1cXHR1MzIgbWFzaztcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM9MjAxPXN0cnVjdCBtaWljIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjA1LVxcdHN0cnVjdCByZXNldF9jb250cm9sX2J1bGtfZGF0YSByc3RzW01JSUNfTUFYX05VTV9SU1RTXTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIwNjpcXHRjb25zdCBzdHJ1Y3QgbWlpY19vZl9kYXRhICpvZl9kYXRhO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjA3OlxcdHN0cnVjdCBtaWljX3BoeV9saW5rX2NmZyBsaW5rX2NmZztcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIwOC19O1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjA5LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjEwOmVudW0gbWlpY190eXBlIHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIxMS1cXHRNSUlDX1RZUEVfUlpOMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjE1LS8qKlxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjE2OiAqIHN0cnVjdCBtaWljX29mX2RhdGEgLSBPRiBkYXRhIGZvciBNSUkgY29udmVydGVyXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMTctICogQG1hdGNoX3RhYmxlOiBNYXRjaGluZyB0YWJsZSBmb3IgY29udmN0cmwgY29uZmlndXJhdGlvblxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMjMtICogQGluZGV4X3RvX3N0cmluZ19jb3VudDogTnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGluZGV4X3RvX3N0cmluZyBhcnJheVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjI0OiAqIEBtaWljX3BvcnRfc3RhcnQ6IE1JSUMgcG9ydCBzdGFydCBudW1iZXJcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIyNTogKiBAbWlpY19wb3J0X21heDogTWF4aW11bSBNSUlDIHN1cHBvcnRlZFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjI2LSAqIEBzd19tb2RlX21hc2s6IFN3aXRjaCBtb2RlIG1hc2tcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjMwLSAqICBiZWZvcmUgYWNjZXNzLlxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjMxOiAqIEBtaWljX3dyaXRlOiBGdW5jdGlvbiBwb2ludGVyIHRvIHdyaXRlIGEgdmFsdWUgdG8gYSBNSUlDIHJlZ2lzdGVyXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMzItICogQHR5cGU6IFR5cGUgb2YgTUlJQ1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjMzLSAqL1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjM0OnN0cnVjdCBtaWljX29mX2RhdGEge1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjM1LVxcdHN0cnVjdCBtb2RjdHJsX21hdGNoICptYXRjaF90YWJsZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjQxLVxcdHU4IGluZGV4X3RvX3N0cmluZ19jb3VudDtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI0MjpcXHR1OCBtaWljX3BvcnRfc3RhcnQ7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNDM6XFx0dTggbWlpY19wb3J0X21heDtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI0NC1cXHR1OCBzd19tb2RlX21hc2s7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI0Ny1cXHRib29sIGluaXRfdW5sb2NrX2xvY2tfcmVncztcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI0ODpcXHR2b2lkICgqbWlpY193cml0ZSkoc3RydWN0IG1paWMgKm1paWMsIGludCBvZmZzZXQsIHUzMiB2YWx1ZSk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNDk6XFx0ZW51bSBtaWljX3R5cGUgdHlwZTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI1MC19O1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNTItLyoqXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNTM6ICogc3RydWN0IG1paWNfcG9ydCAtIFBlciBwb3J0IE1JSSBjb252ZXJ0ZXIgc3RydWN0XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNTQtICogQG1paWM6IGJhY2tpbGluZyB0byBNSUkgY29udmVydGVyIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNTgtICovXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNTk6c3RydWN0IG1paWNfcG9ydCB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNjAtXFx0c3RydWN0IG1paWMgKm1paWM7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI2NS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI2NjpzdGF0aWMgc3RydWN0IG1paWNfcG9ydCAqcGh5bGlua19wY3NfdG9fbWlpY19wb3J0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjY3LXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI2ODpcXHRyZXR1cm4gY29udGFpbmVyX29mKHBjcywgc3RydWN0IG1paWNfcG9ydCwgcGNzKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI2OS19XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNzAtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNzE6c3RhdGljIHZvaWQgbWlpY191bmxvY2tfcmVncyhzdHJ1Y3QgbWlpYyAqbWlpYylcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI3OS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI4MDpzdGF0aWMgdm9pZCBtaWljX2xvY2tfcmVncyhzdHJ1Y3QgbWlpYyAqbWlpYylcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI4MS17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI4NS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI4NjpzdGF0aWMgdm9pZCBtaWljX3JlZ193cml0ZWxfdW5sb2NrZWQoc3RydWN0IG1paWMgKm1paWMsIGludCBvZmZzZXQsIHUzMiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI4Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI5MC1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI5MTpzdGF0aWMgdm9pZCBtaWljX3JlZ193cml0ZWxfbG9ja2VkKHN0cnVjdCBtaWljICptaWljLCBpbnQgb2Zmc2V0LCB1MzIgdmFsdWUpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTIte1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjkzOlxcdG1paWNfdW5sb2NrX3JlZ3MobWlpYyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTQtXFx0d3JpdGVsKHZhbHVlLCBtaWljLVxcdTAwM2ViYXNlICsgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI5NTpcXHRtaWljX2xvY2tfcmVncyhtaWljKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI5Ni19XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTctXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyOTg6c3RhdGljIHZvaWQgbWlpY19yZWdfd3JpdGVsKHN0cnVjdCBtaWljICptaWljLCBpbnQgb2Zmc2V0LCB1MzIgdmFsdWUpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTkte1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzAwOlxcdG1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZW1paWNfd3JpdGUobWlpYywgb2Zmc2V0LCB2YWx1ZSk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMDEtfVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzAyLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzAzOnN0YXRpYyB1MzIgbWlpY19yZWdfcmVhZGwoc3RydWN0IG1paWMgKm1paWMsIGludCBvZmZzZXQpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMDQte1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMDctXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMDg6c3RhdGljIHZvaWQgbWlpY19yZWdfcm13KHN0cnVjdCBtaWljICptaWljLCBpbnQgb2Zmc2V0LCB1MzIgbWFzaywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMwOS17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMxMy1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMxNDpcXHRyZWcgPSBtaWljX3JlZ19yZWFkbChtaWljLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzE1LVxcdHJlZyBcXHUwMDI2PSB+bWFzaztcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMxNi1cXHRyZWcgfD0gdmFsO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzE3OlxcdG1paWNfcmVnX3dyaXRlbChtaWljLCBvZmZzZXQsIHJlZyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMTgtXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMyMS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMyMjpzdGF0aWMgdm9pZCBtaWljX2NvbnZlcnRlcl9lbmFibGUoc3RydWN0IG1paWMgKm1paWMsIGludCBwb3J0LCBpbnQgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzI4LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzI5OlxcdG1paWNfcmVnX3JtdyhtaWljLCBNSUlDX0NPTlZSU1QsIE1JSUNfQ09OVlJTVF9QSFlJRl9SU1QocG9ydCksIHZhbCk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMzAtfVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzMxLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzMyOnN0YXRpYyBpbnQgbWlpY19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMzMy1cXHRcXHQgICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzM1LXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMzNjpcXHRzdHJ1Y3QgbWlpY19wb3J0ICptaWljX3BvcnQgPSBwaHlsaW5rX3Bjc190b19taWljX3BvcnQocGNzKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMzNzpcXHRzdHJ1Y3QgbWlpYyAqbWlpYyA9IG1paWNfcG9ydC1cXHUwMDNlbWlpYztcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMzOC1cXHR1MzIgc3BlZWQsIGNvbnZfbW9kZSwgdmFsLCBtYXNrO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzM5OlxcdGludCBwb3J0ID0gbWlpY19wb3J0LVxcdTAwM2Vwb3J0O1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzQwLVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zNzAtXFx0ICovXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozNzE6XFx0aWYgKGludGVyZmFjZSAhPSBtaWljX3BvcnQtXFx1MDAzZWludGVyZmFjZSkge1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzcyLVxcdFxcdHZhbCB8PSBGSUVMRF9QUkVQKE1JSUNfQ09OVkNUUkxfQ09OVl9TUEVFRCwgc3BlZWQpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzczLVxcdFxcdG1hc2sgfD0gTUlJQ19DT05WQ1RSTF9DT05WX1NQRUVEO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mzc0OlxcdFxcdG1paWNfcG9ydC1cXHUwMDNlaW50ZXJmYWNlID0gaW50ZXJmYWNlO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzc1LVxcdH1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM3Ni1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM3NzpcXHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19DT05WQ1RSTChwb3J0KSwgbWFzaywgdmFsKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM3ODpcXHRtaWljX2NvbnZlcnRlcl9lbmFibGUobWlpYywgbWlpY19wb3J0LVxcdTAwM2Vwb3J0LCAxKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzgyLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzgzOnN0YXRpYyB2b2lkIG1paWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzg0LVxcdFxcdFxcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLCBpbnQgc3BlZWQsIGludCBkdXBsZXgpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zODUte1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mzg2OlxcdHN0cnVjdCBtaWljX3BvcnQgKm1paWNfcG9ydCA9IHBoeWxpbmtfcGNzX3RvX21paWNfcG9ydChwY3MpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mzg3OlxcdHN0cnVjdCBtaWljICptaWljID0gbWlpY19wb3J0LVxcdTAwM2VtaWljO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzg4LVxcdHUzMiBjb252X3NwZWVkID0gMCwgdmFsID0gMDtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM4OTpcXHRpbnQgcG9ydCA9IG1paWNfcG9ydC1cXHUwMDNlcG9ydDtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM5MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDEyLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDEzOlxcdG1paWNfcmVnX3JtdyhtaWljLCBNSUlDX0NPTlZDVFJMKHBvcnQpLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDE0LVxcdFxcdCAgICAgKE1JSUNfQ09OVkNUUkxfQ09OVl9TUEVFRCB8IE1JSUNfQ09OVkNUUkxfRlVMTEQpLCB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MTYtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0MTc6c3RhdGljIGludCBtaWljX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDE4LXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQxOTpcXHRzdHJ1Y3QgbWlpY19wb3J0ICptaWljX3BvcnQgPSBwaHlsaW5rX3Bjc190b19taWljX3BvcnQocGNzKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQyMDpcXHRzdHJ1Y3QgbWlpYyAqbWlpYyA9IG1paWNfcG9ydC1cXHUwMDNlbWlpYztcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQyMS1cXHR1MzIgdmFsLCBtYXNrO1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MjktXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0MzA6XFx0XFx0bWlpY19wb3J0LVxcdTAwM2VpbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfUk1JSTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQzMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDM1LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDM2OlxcdFxcdG1paWNfcmVnX3JtdyhtaWljLCBNSUlDX0NPTlZDVFJMKG1paWNfcG9ydC1cXHUwMDNlcG9ydCksIG1hc2ssIHZhbCk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MzctXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0Mzg6XFx0XFx0bWlpY19jb252ZXJ0ZXJfZW5hYmxlKG1paWMsIG1paWNfcG9ydC1cXHUwMDNlcG9ydCwgMSk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MzktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00NDMtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0NDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgbWlpY19waHlsaW5rX29wcyA9IHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ0NTpcXHQucGNzX2NvbmZpZyA9IG1paWNfY29uZmlnLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDQ2OlxcdC5wY3NfbGlua191cCA9IG1paWNfbGlua191cCxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ0NzpcXHQucGNzX3ByZV9pbml0ID0gbWlpY19wcmVfaW5pdCxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ0OC19O1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDQ5LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDUwOnN0cnVjdCBwaHlsaW5rX3BjcyAqbWlpY19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDUxLXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ1MjpcXHRjb25zdCBzdHJ1Y3QgbWlpY19vZl9kYXRhICpvZl9kYXRhO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDUzLVxcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0NTQ6XFx0c3RydWN0IG1paWNfcG9ydCAqbWlpY19wb3J0O1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDU1LVxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25wO1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00ODQtXFx0b2ZfZGF0YSA9IG1paWMtXFx1MDAzZW9mX2RhdGE7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0ODU6XFx0aWYgKHBvcnQgXFx1MDAzZSBvZl9kYXRhLVxcdTAwM2VtaWljX3BvcnRfbWF4IHx8IHBvcnQgXFx1MDAzYyBvZl9kYXRhLVxcdTAwM2VtaWljX3BvcnRfc3RhcnQpIHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ4Ni1cXHRcXHRwdXRfZGV2aWNlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00ODktXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0OTA6XFx0bWlpY19wb3J0ID0ga3phbGxvY19vYmooKm1paWNfcG9ydCk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0OTE6XFx0aWYgKCFtaWljX3BvcnQpIHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ5Mi1cXHRcXHRwdXRfZGV2aWNlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00OTgtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0OTk6XFx0bWlpY19wb3J0LVxcdTAwM2VtaWljID0gbWlpYztcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwMDpcXHRtaWljX3BvcnQtXFx1MDAzZXBvcnQgPSBwb3J0IC0gb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X3N0YXJ0O1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTAxOlxcdG1paWNfcG9ydC1cXHUwMDNlcGNzLm9wcyA9IFxcdTAwMjZtaWljX3BoeWxpbmtfb3BzO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTAyLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTAzOlxcdHBoeV9pbnRlcmZhY2Vfc2V0X3JnbWlpKG1paWNfcG9ydC1cXHUwMDNlcGNzLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwNDpcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUksIG1paWNfcG9ydC1cXHUwMDNlcGNzLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwNTpcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX01JSSwgbWlpY19wb3J0LVxcdTAwM2VwY3Muc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTA2LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTA3OlxcdHJldHVybiBcXHUwMDI2bWlpY19wb3J0LVxcdTAwM2VwY3M7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MDgtfVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTA5OkVYUE9SVF9TWU1CT0wobWlpY19jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTEwLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTExOnZvaWQgbWlpY19kZXN0cm95KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTEyLXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUxMzpcXHRzdHJ1Y3QgbWlpY19wb3J0ICptaWljX3BvcnQgPSBwaHlsaW5rX3Bjc190b19taWljX3BvcnQocGNzKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUxNC1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUxNTpcXHRtaWljX2NvbnZlcnRlcl9lbmFibGUobWlpY19wb3J0LVxcdTAwM2VtaWljLCBtaWljX3BvcnQtXFx1MDAzZXBvcnQsIDApO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTE2OlxcdGtmcmVlKG1paWNfcG9ydCk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MTctfVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTE4OkVYUE9SVF9TWU1CT0wobWlpY19kZXN0cm95KTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUxOS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUyMDpzdGF0aWMgaW50IG1paWNfaW5pdF9odyhzdHJ1Y3QgbWlpYyAqbWlpYywgdTMyIGNmZ19tb2RlKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTI5LVxcdGlmIChtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2Vpbml0X3VubG9ja19sb2NrX3JlZ3MpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MzA6XFx0XFx0bWlpY191bmxvY2tfcmVncyhtaWljKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUzMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTM0LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTM1OlxcdG1paWNfcmVnX3dyaXRlbChtaWljLCBNSUlDX01PRENUUkwsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MzYtXFx0XFx0XFx0KChjZmdfbW9kZSBcXHUwMDNjXFx1MDAzYyBfX2Zmcyhzd19tb2RlX21hc2spKSBcXHUwMDI2IHN3X21vZGVfbWFzaykpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTM3LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTM4OlxcdGZvciAocG9ydCA9IDA7IHBvcnQgXFx1MDAzYyBtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2VtaWljX3BvcnRfbWF4OyBwb3J0KyspIHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUzOTpcXHRcXHRtaWljX2NvbnZlcnRlcl9lbmFibGUobWlpYywgcG9ydCwgMCk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NDAtXFx0XFx0LyogRGlzYWJsZSBzcGVlZC9kdXBsZXggY29udHJvbCBmcm9tIHRoZXNlIHJlZ2lzdGVycywgZGF0YXNoZWV0XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU0My1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU0NDpcXHRcXHRtaWljX3JlZ193cml0ZWwobWlpYywgTUlJQ19TV0NUUkwsIDB4MCk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1NDU6XFx0XFx0bWlpY19yZWdfd3JpdGVsKG1paWMsIE1JSUNfU1dEVVBDLCAweDApO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTQ2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTUwLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTUxOnN0YXRpYyBib29sIG1paWNfbW9kY3RybF9tYXRjaChzOCAqdGFibGVfdmFsLCBzOCAqZHRfdmFsLCB1OCBjb3VudClcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU1Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU2NS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU2NjpzdGF0aWMgdm9pZCBtaWljX2R1bXBfY29uZihzdHJ1Y3QgbWlpYyAqbWlpYywgczggKmNvbmYpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01Njcte1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTY4OlxcdGNvbnN0IHN0cnVjdCBtaWljX29mX2RhdGEgKm9mX2RhdGEgPSBtaWljLVxcdTAwM2VvZl9kYXRhO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTY5LVxcdGNvbnN0IGNoYXIgKmNvbmZfbmFtZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTgyLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTgzOnN0YXRpYyBpbnQgbWlpY19tYXRjaF9kdF9jb25mKHN0cnVjdCBtaWljICptaWljLCBzOCAqZHRfdmFsLCB1MzIgKm1vZGVfY2ZnKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTg0LXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU4NTpcXHRjb25zdCBzdHJ1Y3QgbWlpY19vZl9kYXRhICpvZl9kYXRhID0gbWlpYy1cXHUwMDNlb2ZfZGF0YTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU4Ni1cXHRzdHJ1Y3QgbW9kY3RybF9tYXRjaCAqdGFibGVfZW50cnk7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU5MS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU5MjpcXHRcXHRpZiAobWlpY19tb2RjdHJsX21hdGNoKHRhYmxlX2VudHJ5LVxcdTAwM2Vjb252LCBkdF92YWwsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01OTMtXFx0XFx0XFx0XFx0ICAgICAgIG1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZWNvbmZfY29udl9jb3VudCkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTk5LVxcdGRldl9lcnIobWlpYy1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGFwcGx5IHJlcXVlc3RlZCBjb25maWd1cmF0aW9uXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjYwMDpcXHRtaWljX2R1bXBfY29uZihtaWljLCBkdF92YWwpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjAxLVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy02MDQtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo2MDU6c3RhdGljIHZvaWQgbWlpY19jb25maWd1cmVfcGh5X2xpbmsoc3RydWN0IG1paWMgKm1paWMsIHUzMiBjb25mLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjA2LVxcdFxcdFxcdFxcdCAgICB1MzIgcG9ydCwgYm9vbCBhY3RpdmVfbG93KVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy02NzItXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo2NzM6c3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjk0LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Njk1OlxcdFxcdGlmIChwb3J0IFxcdTAwM2MgbWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X3N0YXJ0IHx8IHBvcnQgXFx1MDAzZSBtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2VtaWljX3BvcnRfbWF4KSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy02OTYtXFx0XFx0XFx0ZGV2X2VycihtaWljLVxcdTAwM2VkZXYsIFxcXCJQb3J0IG51bWJlciBvdXQgb2YgcmFuZ2U6ICVkXFxcXG5cXFwiLCBwb3J0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzAzLVxcdFxcdC8qIEFkanVzdCBmb3IgMCBiYXNlZCBpbmRleCAqL1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzA0OlxcdFxcdGR0X3ZhbFtwb3J0ICsgIW1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZW1paWNfcG9ydF9zdGFydF0gPSBjb25mO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzA1LVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MDctXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3MDg6XFx0XFx0bWlpY19jb25maWd1cmVfcGh5X2xpbmsobWlpYywgY29uZiwgcG9ydCwgYWN0aXZlX2xvdyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MDktXFx0fVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzEwLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzExOlxcdHJldCA9IG1paWNfbWF0Y2hfZHRfY29uZihtaWljLCBkdF92YWwsIG1vZGVfY2ZnKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcxMi1cXHRrZnJlZShkdF92YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MTYtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3MTc6c3RhdGljIHZvaWQgbWlpY19yZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0KHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MTgte1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MjYtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3Mjc6c3RhdGljIGludCBtaWljX3Jlc2V0X2NvbnRyb2xfaW5pdChzdHJ1Y3QgbWlpYyAqbWlpYylcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcyOC17XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3Mjk6XFx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YSA9IG1paWMtXFx1MDAzZW9mX2RhdGE7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MzAtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gbWlpYy1cXHUwMDNlZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03NTAtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3NTE6XFx0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgbWlpY19yZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0LFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzUyLVxcdFxcdFxcdFxcdCAgICAgICBtaWljKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzU4LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzU5OnN0YXRpYyBpbnQgbWlpY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzYwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzcyLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzczOlxcdHJldCA9IG1paWNfcGFyc2VfZHQobWlpYywgXFx1MDAyNm1vZGVfY2ZnKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc3NC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzgxLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzgyOlxcdHJldCA9IG1paWNfcmVzZXRfY29udHJvbF9pbml0KG1paWMpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzgzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc5My1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjc5NDpcXHRyZXQgPSBtaWljX2luaXRfaHcobWlpYywgbW9kZV9jZmcpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzk1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc5Ny1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjc5ODpcXHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19QSFlfTElOSywgbWlpYy1cXHUwMDNlbGlua19jZmcubWFzaywgbWlpYy1cXHUwMDNlbGlua19jZmcudmFsKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc5OS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgwMDpcXHQvKiBtaWljX2NyZWF0ZSgpIHJlbGllcyBvbiB0aGF0IGZhY3QgdGhhdCBkYXRhIGFyZSBhdHRhY2hlZCB0byB0aGVcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgwMS1cXHQgKiBwbGF0Zm9ybSBkZXZpY2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBkcml2ZXIgaXMgcmVhZHkgc28gdGhpcyBuZWVkcyB0b1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MTQtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4MTU6c3RhdGljIHZvaWQgbWlpY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgxNi17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgxOS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgyMDpzdGF0aWMgc3RydWN0IG1paWNfb2ZfZGF0YSByem4xX21paWNfb2ZfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgyMS1cXHQubWF0Y2hfdGFibGUgPSBtb2RjdHJsX21hdGNoX3RhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MjctXFx0LmluZGV4X3RvX3N0cmluZ19jb3VudCA9IEFSUkFZX1NJWkUoaW5kZXhfdG9fc3RyaW5nKSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgyODpcXHQubWlpY19wb3J0X3N0YXJ0ID0gMSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgyOTpcXHQubWlpY19wb3J0X21heCA9IDUsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MzAtXFx0LnN3X21vZGVfbWFzayA9IEdFTk1BU0soNCwgMCksXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MzEtXFx0LmluaXRfdW5sb2NrX2xvY2tfcmVncyA9IHRydWUsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4MzI6XFx0Lm1paWNfd3JpdGUgPSBtaWljX3JlZ193cml0ZWxfdW5sb2NrZWQsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MzMtXFx0LnR5cGUgPSBNSUlDX1RZUEVfUlpOMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODM1LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODM2OnN0YXRpYyBzdHJ1Y3QgbWlpY19vZl9kYXRhIHJ6dDJoX21paWNfb2ZfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgzNy1cXHQubWF0Y2hfdGFibGUgPSByenQyaF9tb2RjdHJsX21hdGNoX3RhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NDMtXFx0LmluZGV4X3RvX3N0cmluZ19jb3VudCA9IEFSUkFZX1NJWkUocnp0MmhfaW5kZXhfdG9fc3RyaW5nKSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg0NDpcXHQubWlpY19wb3J0X3N0YXJ0ID0gMCxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg0NTpcXHQubWlpY19wb3J0X21heCA9IDQsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NDYtXFx0LnN3X21vZGVfbWFzayA9IEdFTk1BU0soMiwgMCksXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg0OC1cXHQucmVzZXRfY291bnQgPSBBUlJBWV9TSVpFKHJ6dDJoX3Jlc2V0X2lkcyksXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NDk6XFx0Lm1paWNfd3JpdGUgPSBtaWljX3JlZ193cml0ZWxfbG9ja2VkLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODUwLVxcdC50eXBlID0gTUlJQ19UWVBFX1JaVDJILFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NTItXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NTM6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWlpY19vZl9tdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg1NDpcXHR7IC5jb21wYXRpYmxlID0gXFxcInJlbmVzYXMscjlhMDlnMDc3LW1paWNcXFwiLCAuZGF0YSA9IFxcdTAwMjZyenQyaF9taWljX29mX2RhdGEgfSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg1NTpcXHR7IC5jb21wYXRpYmxlID0gXFxcInJlbmVzYXMscnpuMS1taWljXFxcIiwgLmRhdGEgPSBcXHUwMDI2cnpuMV9taWljX29mX2RhdGEgfSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg1Ni1cXHR7IC8qIHNlbnRpbmVsICovIH1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg1Ny19O1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODU4Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1paWNfb2ZfbXRhYmxlKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg1OS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg2MDpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtaWljX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg2MS1cXHQuZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NjMtXFx0XFx0LnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODY0OlxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IG1paWNfb2ZfbXRhYmxlLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODY1LVxcdH0sXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NjY6XFx0LnByb2JlID0gbWlpY19wcm9iZSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg2NzpcXHQucmVtb3ZlID0gbWlpY19yZW1vdmUsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NjgtfTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg2OTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1paWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg3MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDU6MzQ6MDAuMzMxMjE3MzA2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwMDIyNzE5MzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIGBwY3MtcnpuMS1taWljLmNgIGFuZCBGdXp6aW5nIEZlYXNpYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYHBjcy1yem4xLW1paWMuY2AgaXMgYSBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgaGFyZHdhcmUgY29tcG9uZW50OiBhIFBoeXNpY2FsIENvZGluZyBTdWJsYXllciAoUENTKSAvIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSAoTUlJKSBjb252ZXJ0ZXIsIGJ1dCAqb25seSogZm9yIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0NzLiBUaGlzIGlzIGltcG9ydGFudC4gSXQncyBwcm9iZWQgdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUsIGFuZCBpbXBvcnRhbnRseSwgdGhlIGJpbmRpbmcgaXMgc3VwcHJlc3NlZCwgbWVhbmluZyBpdCdzIHRpZWQgdG8gdGhpcyB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGVudmlyb25tZW50LiBJdCdzIG5vdCBkeW5hbWljYWxseSBsb2FkYWJsZSB0aHJvdWdoIHN5c2ZzLCBhbmQgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gbGlrZSBRRU1VIG9yIEdDRSAqZG9lc24ndCogZW11bGF0ZSB0aGUgUmVuZXNhcyBSWi9OMSBNSUlDIGhhcmR3YXJlLiBUaGVyZWZvcmUsIHRoZSBjb2RlIHBhdGhzIHdpdGhpbiBgbWlpY19wcm9iZWAgYW5kIGNvbnNlcXVlbnRseSBgbWlpY19wYXJzZV9kdGAgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gdGhlc2UgdHlwaWNhbCBmdXp6aW5nIHNldHVwcywgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLlxuXG5Ob3csIGxldCdzIGNvbXBhcmUgdGhpcyB0byB0aGUgZnV6emluZyBndWlkZWxpbmVzLiBUaGUga2V5IHBvaW50IGhlcmUgaXM6IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLlwiIFRoaXMgKmRpcmVjdGx5KiBhcHBsaWVzIHRvIHRoaXMgZHJpdmVyLlxuXG5JJ3ZlIGV4YW1pbmVkIHRoZSBzcGVjaWZpYyBwYXRjaC4gVGhlIG1vZGlmaWNhdGlvbnMgYXJlIHdpdGhpbiBgbWlpY19wYXJzZV9kdGA6IHplcm9pbmcgYSBkYXRhIHN0cnVjdHVyZSBhbmQgYWRkaW5nIGEgcG9ydCByYW5nZSBjaGVjay4gVGhlIGNydWNpYWwgdGhpbmcgaXMgdGhhdCBgbWlpY19wYXJzZV9kdGAgaXMgKm9ubHkqIGNhbGxlZCBmcm9tIGBtaWljX3Byb2JlYCwgd2hpY2gsIGFzIHdlIGVzdGFibGlzaGVkLCBpcyAqb25seSogaW52b2tlZCBkdXJpbmcgYSBwbGF0Zm9ybSBkZXZpY2UgcHJvYmUgZm9yIHRoaXMgc3BlY2lmaWMgUmVuZXNhcyBNSUkgY29udmVydGVyIGhhcmR3YXJlIGluIGEgZGV2aWNlIHRyZWUgc2V0dXAuIFRoaXMgY29uZmlybXMgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LlxuXG5UaGVyZWZvcmUsIGFwcGx5aW5nIHRoZXNlIGd1aWRlbGluZXMsIHRoZXJlIGlzIG5vIHZhbHVlIGluIHRhcmdldGluZyB0aGlzIHNwZWNpZmljIGRyaXZlciBmb3IgZnV6emluZy4gVGhlIHBhdGNoIGlzIG5vdCByZWxldmFudCBmb3IgbXkgYXJlYSBvZiBleHBlcnRpc2UuXG5cbk15IGNvbmNsdXNpb24gaXM6XG5cbi0gICAqKldvcnRoRnV6emluZzogZmFsc2UqKlxuLSAgICoqRm9jdXNTeW1ib2xzOiBcXFsgXSoqXG4tICAgKipFbmFibGVDb25maWdzOiBcXFsgXSoqXG4tICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIG1vZGlmaWVzIERldmljZSBUcmVlIChEVCkgcGFyc2luZyBpbiB0aGUgUmVuZXNhcyBSWi9OMSAvIFJaL1QySCBQQ1MgKE1JSSBjb252ZXJ0ZXIpIHBsYXRmb3JtIGRyaXZlciAoYGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNgKS4gVGhpcyBoYXJkd2FyZSBpcyBzcGVjaWZpYyB0byBSZW5lc2FzIFNvQ3MgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhpcyBtYWtlcyB0aGUgcGF0Y2ggdW5pbnRlcmVzdGluZyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgYXMgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHRoZXNlIGVudmlyb25tZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0NzYsIk91dHB1dFRva2VucyI6MTA4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA1OjM0OjEwLjM1MzkzOTg0M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIERldmljZSBUcmVlIHBhcnNpbmcgYW5kIHZhbGlkYXRpb24gaW4gdGhlIFJlbmVzYXMgUlovTjEvVDJIIE1JSSBDb252ZXJ0ZXIgKFBDUykgcGxhdGZvcm0gZHJpdmVyIChkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jKS4gVGhpcyBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gUmVuZXNhcyBTb0MgaGFyZHdhcmUgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgRGV2aWNlIFRyZWUgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBpbiB0aGUgUmVuZXNhcyBSWi9OMS9UMkggTUlJIENvbnZlcnRlciAoUENTKSBwbGF0Zm9ybSBkcml2ZXIgKGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMpLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBSZW5lc2FzIFNvQyBoYXJkd2FyZSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNTozNDoxMC4zNTM5NjYxMDNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow8l5gj[1] Phase: Running StartedAt: 2026-09-02 05:34:21 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8l5gj[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-02 05:34:21 +0000 UTC FinishedAt: 2026-09-02 05:34:26 +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,}