Name: series-workflowqwvb5 Phase: Failed StartedAt: 2026-09-09 14:02:29 +0000 UTC FinishedAt: 2026-09-09 14:25:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqwvb5[0] Phase: Succeeded StartedAt: 2026-09-09 14:02:29 +0000 UTC FinishedAt: 2026-09-09 14:24:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqwvb5[0].run-triage Phase: Succeeded StartedAt: 2026-09-09 14:02:29 +0000 UTC FinishedAt: 2026-09-09 14:24:53 +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+CgkJCTx0ZD4yMDI2LzA5LzA5IDE0OjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyByZXNldCBHUElPIHN1cHBvcnQgdG8gdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBNaWNyb2NoaXAgTEFOODY1eCBTUEkgTUFDLVBIWSBldGhlcm5ldCBkcml2ZXIgYW5kIHVwZGF0ZXMgdGhlIGRldmljZXRyZWUgYmluZGluZ3MuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIGRlZGljYXRlZCBwaHlzaWNhbCBoYXJkd2FyZSAoTWljcm9jaGlwIExBTjg2NTAvMSBNQUMtUEhZIG9uIGFuIFNQSSBidXMpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDE0OjI0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTcxNWJhOGE1MzQ0YjczMTA1MjY1ZjYxMmM2MjBiNDFlYTllYjAxZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMTQ6MjQ6MDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyb2NoaXAsbGFuODY1MC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyb2NoaXAsbGFuODY1MC55YW1sXG5pbmRleCA3NjZmZjU4MTQ3YWUzLi4xYjU0M2NlMzA3NjMyIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyb2NoaXAsbGFuODY1MC55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JvY2hpcCxsYW44NjUwLnlhbWxcbkBAIC00MCw2ICYjNDM7NDAsMTEgQEAgcHJvcGVydGllczpcbiAgICAgICBFdmVudC5cbiAgICAgbWF4SXRlbXM6IDFcbiBcbiYjNDM7ICByZXNldC1ncGlvczpcbiYjNDM7ICAgIGRlc2NyaXB0aW9uOlxuJiM0MzsgICAgICBHUElPIGNvbm5lY3RlZCB0byB0aGUgYWN0aXZlLWxvdyBSRVNFVF9OIHBpbiBvZiB0aGUgTUFDLVBIWS5cbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuICAgc3BpLW1heC1mcmVxdWVuY3k6XG4gICAgIG1pbmltdW06IDE1MDAwMDAwXG4gICAgIG1heGltdW06IDI1MDAwMDAwXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXG5pbmRleCAyNmEyNzYxMzMyYTVhLi42MmFiYzU3N2JlOTBkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNcbkBAIC05LDYgJiM0Mzs5LDggQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2FfdGM2LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpby9jb25zdW1lci5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbiBcbiAjZGVmaW5lIERSVl9OQU1FXHRcdFx0XCYjMzQ7bGFuODY1MFwmIzM0O1xuIFxuQEAgLTQxLDYgJiM0Mzs0Myw3IEBAIHN0cnVjdCBsYW44NjV4X3ByaXYge1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbiBcdHN0cnVjdCBzcGlfZGV2aWNlICpzcGk7XG4gXHRzdHJ1Y3Qgb2FfdGM2ICp0YzY7XG4mIzQzO1x0c3RydWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbztcbiB9O1xuIFxuIHN0YXRpYyBpbnQgbGFuODY1eF9zZXRfaHdfbWFjYWRkcl9sb3dfYnl0ZXMoc3RydWN0IG9hX3RjNiAqdGM2LCBjb25zdCB1OCAqbWFjKVxuQEAgLTM0Niw2ICYjNDM7MzQ5LDI0IEBAIHN0YXRpYyBpbnQgbGFuODY1eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuIFx0c3BpX3NldF9kcnZkYXRhKHNwaSwgcHJpdik7XG4gXHRJTklUX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VtdWx0aWNhc3Rfd29yaywgbGFuODY1eF9tdWx0aWNhc3Rfd29ya19oYW5kbGVyKTtcbiBcbiYjNDM7XHRwcml2LVx1MDAzZXJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChcdTAwMjZzcGktXHUwMDNlZGV2LCBcJiMzNDtyZXNldFwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgR1BJT0RfT1VUX0xPVyk7XG4mIzQzO1x0aWYgKElTX0VSUihwcml2LVx1MDAzZXJlc2V0X2dwaW8pKSB7XG4mIzQzO1x0XHRyZXQgPSBkZXZfZXJyX3Byb2JlKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFBUUl9FUlIocHJpdi1cdTAwM2VyZXNldF9ncGlvKSxcbiYjNDM7XHRcdFx0XHQgICAgXCYjMzQ7RmFpbGVkIHRvIGdldCByZXNldCBHUElPXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGdvdG8gZnJlZV9uZXRkZXY7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VyZXNldF9ncGlvKSB7XG4mIzQzO1x0XHQvKiBBc3NlcnQgaGFyZHdhcmUgcmVzZXQgZm9yIDEwIHVzIChkYXRhc2hlZXQgc3BlY2lmaWVzIG1pbiA1IHVzKVxuJiM0MztcdFx0ICogYW5kIGFsbG93IDEgbXMgc2V0dGxlIHRpbWUgZm9yIGNyeXN0YWwgb3NjaWxsYXRvciBzdGFydHVwLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cdTAwM2VyZXNldF9ncGlvLCAxKTtcbiYjNDM7XHRcdGZzbGVlcCgxMCk7XG4mIzQzO1x0XHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cdTAwM2VyZXNldF9ncGlvLCAwKTtcbiYjNDM7XHRcdGZzbGVlcCgxMDAwKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cHJpdi1cdTAwM2V0YzYgPSBvYV90YzZfaW5pdChzcGksIG5ldGRldiwgTlVMTCk7XG4gXHRpZiAoIXByaXYtXHUwMDNldGM2KSB7XG4gXHRcdHJldCA9IC1FTk9ERVY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTQ6MjQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyByZXNldCBHUElPIHN1cHBvcnQgdG8gdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBNaWNyb2NoaXAgTEFOODY1eCBTUEkgTUFDLVBIWSBldGhlcm5ldCBkcml2ZXIgYW5kIHVwZGF0ZXMgdGhlIGRldmljZXRyZWUgYmluZGluZ3MuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIGRlZGljYXRlZCBwaHlzaWNhbCBoYXJkd2FyZSAoTWljcm9jaGlwIExBTjg2NTAvMSBNQUMtUEhZIG9uIGFuIFNQSSBidXMpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTcxNWJhOGE1MzQ0YjczMTA1MjY1ZjYxMmM2MjBiNDFlYTllYjAxZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDkgMTQ6MjQ6MDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JvY2hpcCxsYW44NjUwLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JvY2hpcCxsYW44NjUwLnlhbWwKaW5kZXggNzY2ZmY1ODE0N2FlMy4uMWI1NDNjZTMwNzYzMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyb2NoaXAsbGFuODY1MC55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWljcm9jaGlwLGxhbjg2NTAueWFtbApAQCAtNDAsNiAmIzQzOzQwLDExIEBAIHByb3BlcnRpZXM6CiAgICAgICBFdmVudC4KICAgICBtYXhJdGVtczogMQogCiYjNDM7ICByZXNldC1ncGlvczoKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgR1BJTyBjb25uZWN0ZWQgdG8gdGhlIGFjdGl2ZS1sb3cgUkVTRVRfTiBwaW4gb2YgdGhlIE1BQy1QSFkuCiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiAgIHNwaS1tYXgtZnJlcXVlbmN5OgogICAgIG1pbmltdW06IDE1MDAwMDAwCiAgICAgbWF4aW11bTogMjUwMDAwMDAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYwppbmRleCAyNmEyNzYxMzMyYTVhLi42MmFiYzU3N2JlOTBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jCkBAIC05LDYgJiM0Mzs5LDggQEAKICNpbmNsdWRlICZsdDtsaW51eC9rZXJuZWwuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9waHkuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9vYV90YzYuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZ3Bpby9jb25zdW1lci5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kZWxheS5oJmd0OwogCiAjZGVmaW5lIERSVl9OQU1FCQkJJiMzNDtsYW44NjUwJiMzNDsKIApAQCAtNDEsNiAmIzQzOzQzLDcgQEAgc3RydWN0IGxhbjg2NXhfcHJpdiB7CiAJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjsKIAlzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpOwogCXN0cnVjdCBvYV90YzYgKnRjNjsKJiM0MzsJc3RydWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbzsKIH07CiAKIHN0YXRpYyBpbnQgbGFuODY1eF9zZXRfaHdfbWFjYWRkcl9sb3dfYnl0ZXMoc3RydWN0IG9hX3RjNiAqdGM2LCBjb25zdCB1OCAqbWFjKQpAQCAtMzQ2LDYgJiM0MzszNDksMjQgQEAgc3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJc3BpX3NldF9kcnZkYXRhKHNwaSwgcHJpdik7CiAJSU5JVF9XT1JLKCZhbXA7cHJpdi0mZ3Q7bXVsdGljYXN0X3dvcmssIGxhbjg2NXhfbXVsdGljYXN0X3dvcmtfaGFuZGxlcik7CiAKJiM0MzsJcHJpdi0mZ3Q7cmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKCZhbXA7c3BpLSZndDtkZXYsICYjMzQ7cmVzZXQmIzM0OywKJiM0MzsJCQkJCQkgICBHUElPRF9PVVRfTE9XKTsKJiM0MzsJaWYgKElTX0VSUihwcml2LSZndDtyZXNldF9ncGlvKSkgewomIzQzOwkJcmV0ID0gZGV2X2Vycl9wcm9iZSgmYW1wO3NwaS0mZ3Q7ZGV2LCBQVFJfRVJSKHByaXYtJmd0O3Jlc2V0X2dwaW8pLAomIzQzOwkJCQkgICAgJiMzNDtGYWlsZWQgdG8gZ2V0IHJlc2V0IEdQSU9cbiYjMzQ7KTsKJiM0MzsJCWdvdG8gZnJlZV9uZXRkZXY7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKHByaXYtJmd0O3Jlc2V0X2dwaW8pIHsKJiM0MzsJCS8qIEFzc2VydCBoYXJkd2FyZSByZXNldCBmb3IgMTAgdXMgKGRhdGFzaGVldCBzcGVjaWZpZXMgbWluIDUgdXMpCiYjNDM7CQkgKiBhbmQgYWxsb3cgMSBtcyBzZXR0bGUgdGltZSBmb3IgY3J5c3RhbCBvc2NpbGxhdG9yIHN0YXJ0dXAuCiYjNDM7CQkgKi8KJiM0MzsJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChwcml2LSZndDtyZXNldF9ncGlvLCAxKTsKJiM0MzsJCWZzbGVlcCgxMCk7CiYjNDM7CQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi0mZ3Q7cmVzZXRfZ3BpbywgMCk7CiYjNDM7CQlmc2xlZXAoMTAwMCk7CiYjNDM7CX0KJiM0MzsKIAlwcml2LSZndDt0YzYgPSBvYV90YzZfaW5pdChzcGksIG5ldGRldiwgTlVMTCk7CiAJaWYgKCFwcml2LSZndDt0YzYpIHsKIAkJcmV0ID0gLUVOT0RFVjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIExBTjg2NVggRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCBmb2N1cyBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLiBJIHNlZSB0aGUgcGF0Y2ggdG91Y2hlcyB0d28ga2V5IGFyZWFzOiB0aGUgZGV2aWNlIHRyZWUgYmluZGluZyBkb2N1bWVudGF0aW9uIGZvciB0aGUgTWljcm9jaGlwIExBTjg2NTAsIHNwZWNpZmljYWxseSBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyb2NoaXAsbGFuODY1MC55YW1sYCwgYW5kIHRoZSBTUEkgZHJpdmVyIGltcGxlbWVudGF0aW9uLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jYCwgd2l0aCBjaGFuZ2VzIGluIGBsYW44NjV4X3Byb2JlYC4KCkZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2Ygd2hhdCB0aGlzIGRyaXZlciAqaXMqIGFuZCBob3cgaXQgaW50ZWdyYXRlcy4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIGBsYW44NjV4LmNgIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIEtjb25maWcgY29uZmlndXJhdGlvbiB0byBkZXRlcm1pbmUgaG93IGl0JiMzOTtzIGJ1aWx0LCBlbmFibGVkLCBhbmQgaWYgaXQmIzM5O3MgbGlrZWx5IHRvIGJlIGFjY2Vzc2libGUgdGhyb3VnaCBzdGFuZGFyZCBmdXp6aW5nIHNldHVwcyBsaWtlIHN5emthbGxlciBpbiBhIFFFTVUgZW52aXJvbm1lbnQuIFRoaXMgaXMgY3JpdGljYWwgZm9yIGFzc2Vzc2luZyB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiBhbnkgdnVsbmVyYWJpbGl0aWVzLgoKVGhlbiwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHV0aWxpemUgZWl0aGVyIGdyZXBwZXIgb3Igc3RyYWlnaHQtdXAgZmlsZSByZWFkaW5nIG9uIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvYCBkaXJlY3RvcnkgdG8gZ2V0IGEgcmFwaWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgbW9kdWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xhbjg2NXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnPTQ1PWNvbmZpZyBMQU43NDNYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZzo2MDpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNjEtc291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGU9MTA9bGFuNzQzeC1vYmpzIDo9IGxhbjc0M3hfbWFpbi5vIGxhbjc0M3hfZXRodG9vbC5vIGxhbjc0M3hfcHRwLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZS0xMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfTEFOODY1WCkgJiM0Mzs9IGxhbjg2NXgvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGUtMTMtb2JqLSQoQ09ORklHX0xBTjk2NlhfU1dJVENIKSAmIzQzOz0gbGFuOTY2eC9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnPTg9Y29uZmlnIExBTjg2NVhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnLTE2LVx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWc6MTc6XHQgIGNhbGxlZCBsYW44NjV4LlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZy0xOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTEFOODY1WCkgJiM0Mzs9IGxhbjg2NXgub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MTpzdHJ1Y3QgbGFuODY1eF9wcml2IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00Mi1cdHN0cnVjdCB3b3JrX3N0cnVjdCBtdWx0aWNhc3Rfd29yaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDk6c3RhdGljIGludCBsYW44NjV4X3NldF9od19tYWNhZGRyX2xvd19ieXRlcyhzdHJ1Y3Qgb2FfdGM2ICp0YzYsIGNvbnN0IHU4ICptYWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNTAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy01Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo1ODpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X2h3X21hY2FkZHIoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiwgY29uc3QgdTggKm1hYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy01OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTY0LVx0LyogQ29uZmlndXJlIE1BQyBhZGRyZXNzIGxvdyBieXRlcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjY1Olx0cmV0ID0gbGFuODY1eF9zZXRfaHdfbWFjYWRkcl9sb3dfYnl0ZXMocHJpdi1cdTAwM2V0YzYsIG1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNjYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy03OC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjc5Olx0cmVzdG9yZV9yZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyX2xvd19ieXRlcyhwcml2LVx1MDAzZXRjNixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy04MC1cdFx0XHRcdFx0XHQgICAgICAgcHJpdi1cdTAwM2VuZXRkZXYtXHUwMDNlZGV2X2FkZHIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy04Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo4NzpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGxhbjg2NXhfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtODgtXHQuZ2V0X2xpbmtfa3NldHRpbmdzID0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy05MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo5MjpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHZvaWQgKmFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtOTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjk0Olx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtOTUtXHRzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJlc3MgPSBhZGRyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTA1Olx0cmV0ID0gbGFuODY1eF9zZXRfaHdfbWFjYWRkcihwcml2LCBhZGRyZXNzLVx1MDAzZXNhX2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEwNi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jPTExND1zdGF0aWMgdTMyIGdldF9hZGRyZXNzX2JpdCh1OCBhZGRyW0VUSF9BTEVOXSwgdTMyIGJpdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjExOTpzdGF0aWMgdTMyIGxhbjg2NXhfaGFzaCh1OCBhZGRyW0VUSF9BTEVOXSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTM1OnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfc3BlY2lmaWNfbXVsdGljYXN0X2FkZHIoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMzYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xNDItXHRuZXRkZXZfZm9yX2VhY2hfbWNfYWRkcihoYSwgcHJpdi1cdTAwM2VuZXRkZXYpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxNDM6XHRcdHUzMiBiaXRfbnVtID0gbGFuODY1eF9oYXNoKGhhLVx1MDAzZWFkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE0NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjE2NzpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X2FsbF9tdWx0aWNhc3RfYWRkcihzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE2OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxODk6c3RhdGljIGludCBsYW44NjV4X2NsZWFyX2FsbF9tdWx0aWNhc3RfYWRkcihzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE5MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIwNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMDg6c3RhdGljIHZvaWQgbGFuODY1eF9tdWx0aWNhc3Rfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMDkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIxMDpcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGxhbjg2NXhfcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMTEtXHRcdFx0XHRcdFx0IG11bHRpY2FzdF93b3JrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjIxLVx0XHQvKiBFbmFibGluZyBhbGwgbXVsdGljYXN0IG1vZGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMjI6XHRcdGlmIChsYW44NjV4X3NldF9hbGxfbXVsdGljYXN0X2FkZHIocHJpdikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjIzLVx0XHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjI5LVx0XHQvKiBFbmFibGluZyBzcGVjaWZpYyBtdWx0aWNhc3QgbW9kZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIzMDpcdFx0aWYgKGxhbjg2NXhfc2V0X3NwZWNpZmljX211bHRpY2FzdF9hZGRyKHByaXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIzMS1cdFx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIzNy1cdFx0LyogRW5hYmxpbmcgbG9jYWwgbWFjIGFkZHJlc3Mgb25seSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIzODpcdFx0aWYgKGxhbjg2NXhfY2xlYXJfYWxsX211bHRpY2FzdF9hZGRyKHByaXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIzOS1cdFx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNDc6c3RhdGljIHZvaWQgbGFuODY1eF9zZXRfbXVsdGljYXN0X2xpc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNDgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI0OTpcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI1NDpzdGF0aWMgbmV0ZGV2X3R4X3QgbGFuODY1eF9zZW5kX3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1NS1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjU3Olx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjU4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjYyOnN0YXRpYyBpbnQgbGFuODY1eF9od19kaXNhYmxlKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjYzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI3NzpzdGF0aWMgaW50IGxhbjg2NXhfbmV0X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjc4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNzk6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yODAtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yODMtXHRwaHlfc3RvcChuZXRkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyODQ6XHRyZXQgPSBsYW44NjV4X2h3X2Rpc2FibGUocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjg1LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjkzOnN0YXRpYyBpbnQgbGFuODY1eF9od19lbmFibGUoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzA4OnN0YXRpYyBpbnQgbGFuODY1eF9uZXRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMwOS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzEwOlx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzExLVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzEzOlx0cmV0ID0gbGFuODY1eF9od19lbmFibGUocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzE0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbGFuODY1eF9uZXRkZXZfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyNzpcdC5uZG9fb3Blblx0XHQ9IGxhbjg2NXhfbmV0X29wZW4sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI4Olx0Lm5kb19zdG9wXHRcdD0gbGFuODY1eF9uZXRfY2xvc2UsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI5Olx0Lm5kb19zdGFydF94bWl0XHRcdD0gbGFuODY1eF9zZW5kX3BhY2tldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMzA6XHQubmRvX3NldF9yeF9tb2RlXHQ9IGxhbjg2NXhfc2V0X211bHRpY2FzdF9saXN0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMzMTpcdC5uZG9fc2V0X21hY19hZGRyZXNzXHQ9IGxhbjg2NXhfc2V0X21hY19hZGRyZXNzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMzMi1cdC5uZG9fdmFsaWRhdGVfYWRkclx0PSBldGhfdmFsaWRhdGVfYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMzNjpzdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMzcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMzOC1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzM5Olx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNDAtXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozNDI6XHRuZXRkZXYgPSBhbGxvY19ldGhlcmRldihzaXplb2Yoc3RydWN0IGxhbjg2NXhfcHJpdikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0My1cdGlmICghbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNDktXHRzcGlfc2V0X2RydmRhdGEoc3BpLCBwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozNTA6XHRJTklUX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VtdWx0aWNhc3Rfd29yaywgbGFuODY1eF9tdWx0aWNhc3Rfd29ya19oYW5kbGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MTM6XHRyZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyKHByaXYsIG5ldGRldi1cdTAwM2VkZXZfYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDE0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MjAtXHRuZXRkZXYtXHUwMDNlaXJxID0gc3BpLVx1MDAzZWlycTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MjE6XHRuZXRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNmxhbjg2NXhfbmV0ZGV2X29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MjI6XHRuZXRkZXYtXHUwMDNlZXRodG9vbF9vcHMgPSBcdTAwMjZsYW44NjV4X2V0aHRvb2xfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQyMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQzOTpzdGF0aWMgdm9pZCBsYW44NjV4X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQxOlx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ0OTpzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgbGFuODY1eF9pZHNbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NTAtXHR7IC5uYW1lID0gXCYjMzQ7bGFuODY1MFwmIzM0OyB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NTMtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NTQ6TU9EVUxFX0RFVklDRV9UQUJMRShzcGksIGxhbjg2NXhfaWRzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDU2OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGxhbjg2NXhfZHRfaWRzW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDU3LVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxsYW44NjUwXCYjMzQ7IH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ2MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ2MTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBsYW44NjV4X2R0X2lkcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ2MzpzdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgbGFuODY1eF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDY0LVx0LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NjUtXHRcdC5uYW1lID0gRFJWX05BTUUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDY2Olx0XHQub2ZfbWF0Y2hfdGFibGUgPSBsYW44NjV4X2R0X2lkcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NjctXHQgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0Njg6XHQucHJvYmUgPSBsYW44NjV4X3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ2OTpcdC5yZW1vdmUgPSBsYW44NjV4X3JlbW92ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NzA6XHQuaWRfdGFibGUgPSBsYW44NjV4X2lkcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NzEtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NzI6bW9kdWxlX3NwaV9kcml2ZXIobGFuODY1eF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ3My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxNDoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDE2NQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIGl0OgoKKipBbmFseXppbmcgdGhlIExBTjg2NXggRHJpdmVyIFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgTEFOODY1eCBFdGhlcm5ldCBkcml2ZXIgaXMgYmVpbmcgaW5pdGlhbGl6ZWQuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBmdWxsIGBwcm9iZWAgZnVuY3Rpb24gd2l0aGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCB3aGVyZSB0aGUgaGFyZHdhcmUgaXMgaWRlbnRpZmllZCwgcmVzb3VyY2VzIGFyZSBhbGxvY2F0ZWQsIGFuZCB0aGUgZGV2aWNlIGlzIGJyb3VnaHQgb25saW5lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBoZXJlOiBob3cgdGhlIFBIWSBpcyBjb25maWd1cmVkLCBob3cgaW50ZXJydXB0cyBhcmUgaGFuZGxlZCwgYW5kIGhvdyB0aGUgbmV0d29yayBpbnRlcmZhY2UgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBrZXJuZWwuIEkmIzM5O20gbG9va2luZyBmb3IgYW55IGluaXRpYWxpemF0aW9uIGdvdGNoYXMuCgpUaGVuLCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMsIEkmIzM5O2xsIG5lZWQgdG8gY3Jvc3MtcmVmZXJlbmNlIHRoYXQgd2l0aCB0aGUgcmVsZXZhbnQgYEtjb25maWdgIGZpbGUuIFRoZSBgS2NvbmZpZ2Agd2lsbCB0ZWxsIG1lIHdoaWNoIGNvbmZpZ3VyYXRpb25zIGVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZHJpdmVyLCB3aGF0IHNldHRpbmdzIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBwcmVyZXF1aXNpdGVzLCBsaWtlIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzIG9yIG90aGVyIGRyaXZlcnMgdGhhdCBuZWVkIHRvIGJlIGluIHBsYWNlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGRyaXZlciBjYW4gYmUgYnVpbHQgYW5kIGNvbmZpZ3VyZWQgaW4gZGlmZmVyZW50IHNjZW5hcmlvcy4gSSB3YW50IHRvIGJ1aWxkIGEgaG9saXN0aWMgcGljdHVyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCB0aGUgcmVzb3VyY2VzIGFzc2lnbmVkIHRvIHRoZSBkcml2ZXIsIGFuZCBob3cgaXQgaXMgZXhwZWN0ZWQgdG8gZnVuY3Rpb24gYXMgYSB3aG9sZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxNDoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA5MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzM1Olx0XG4gMzM2Olx0c3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4gMzM3Olx0e1xuIDMzODpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbiAzMzk6XHRcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXY7XG4gMzQwOlx0XHRpbnQgcmV0O1xuIDM0MTpcdFxuIDM0MjpcdFx0bmV0ZGV2ID0gYWxsb2NfZXRoZXJkZXYoc2l6ZW9mKHN0cnVjdCBsYW44NjV4X3ByaXYpKTtcbiAzNDM6XHRcdGlmICghbmV0ZGV2KVxuIDM0NDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAzNDU6XHRcbiAzNDY6XHRcdHByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuIDM0NzpcdFx0cHJpdi1cdTAwM2VuZXRkZXYgPSBuZXRkZXY7XG4gMzQ4Olx0XHRwcml2LVx1MDAzZXNwaSA9IHNwaTtcbiAzNDk6XHRcdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xuIDM1MDpcdFx0SU5JVF9XT1JLKFx1MDAyNnByaXYtXHUwMDNlbXVsdGljYXN0X3dvcmssIGxhbjg2NXhfbXVsdGljYXN0X3dvcmtfaGFuZGxlcik7XG4gMzUxOlx0XG4gMzUyOlx0XHRwcml2LVx1MDAzZXJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChcdTAwMjZzcGktXHUwMDNlZGV2LCBcJiMzNDtyZXNldFwmIzM0OyxcbiAzNTM6XHRcdFx0XHRcdFx0XHQgICBHUElPRF9PVVRfTE9XKTtcbiAzNTQ6XHRcdGlmIChJU19FUlIocHJpdi1cdTAwM2VyZXNldF9ncGlvKSkge1xuIDM1NTpcdFx0XHRyZXQgPSBkZXZfZXJyX3Byb2JlKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFBUUl9FUlIocHJpdi1cdTAwM2VyZXNldF9ncGlvKSxcbiAzNTY6XHRcdFx0XHRcdCAgICBcJiMzNDtGYWlsZWQgdG8gZ2V0IHJlc2V0IEdQSU9cXG5cJiMzNDspO1xuIDM1NzpcdFx0XHRnb3RvIGZyZWVfbmV0ZGV2O1xuIDM1ODpcdFx0fVxuIDM1OTpcdFxuIDM2MDpcdFx0aWYgKHByaXYtXHUwMDNlcmVzZXRfZ3Bpbykge1xuIDM2MTpcdFx0XHQvKiBBc3NlcnQgaGFyZHdhcmUgcmVzZXQgZm9yIDEwIHVzIChkYXRhc2hlZXQgc3BlY2lmaWVzIG1pbiA1IHVzKVxuIDM2MjpcdFx0XHQgKiBhbmQgYWxsb3cgMSBtcyBzZXR0bGUgdGltZSBmb3IgY3J5c3RhbCBvc2NpbGxhdG9yIHN0YXJ0dXAuXG4gMzYzOlx0XHRcdCAqL1xuIDM2NDpcdFx0XHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cdTAwM2VyZXNldF9ncGlvLCAxKTtcbiAzNjU6XHRcdFx0ZnNsZWVwKDEwKTtcbiAzNjY6XHRcdFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXHUwMDNlcmVzZXRfZ3BpbywgMCk7XG4gMzY3Olx0XHRcdGZzbGVlcCgxMDAwKTtcbiAzNjg6XHRcdH1cbiAzNjk6XHRcbiAzNzA6XHRcdHByaXYtXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIE5VTEwpO1xuIDM3MTpcdFx0aWYgKCFwcml2LVx1MDAzZXRjNikge1xuIDM3MjpcdFx0XHRyZXQgPSAtRU5PREVWO1xuIDM3MzpcdFx0XHRnb3RvIGZyZWVfbmV0ZGV2O1xuIDM3NDpcdFx0fVxuIDM3NTpcdFxuIDM3NjpcdFx0LyogTEFOODY1eCBSZXYuQjAvQjEgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZyb20gQU4xNzYwXG4gMzc3Olx0XHQgKiBBcyBwZXIgdGhlIENvbmZpZ3VyYXRpb24gQXBwbGljYXRpb24gTm90ZSBBTjE3NjAgcHVibGlzaGVkIGluIHRoZVxuIDM3ODpcdFx0ICogbGluaywgaHR0cHM6Ly93d3cubWljcm9jaGlwLmNvbS9lbi11cy9hcHBsaWNhdGlvbi1ub3Rlcy9hbjE3NjBcbiAzNzk6XHRcdCAqIFJldmlzaW9uIEYgKERTNjAwMDE3NjBHIC0gSnVuZSAyMDI0KSwgY29uZmlndXJlIHRoZSBNQUMgdG8gc2V0IHRpbWVcbiAzODA6XHRcdCAqIHN0YW1waW5nIGF0IHRoZSBlbmQgb2YgdGhlIFN0YXJ0IG9mIEZyYW1lIERlbGltaXRlciAoU0ZEKSBhbmQgc2V0IHRoZVxuIDM4MTpcdFx0ICogVGltZXIgSW5jcmVtZW50IHJlZyB0byA0MCBucyB0byBiZSB1c2VkIGFzIGEgMjUgTUh6IGludGVybmFsIGNsb2NrLlxuIDM4MjpcdFx0ICovXG4gMzgzOlx0XHRyZXQgPSBvYV90YzZfd3JpdGVfcmVnaXN0ZXIocHJpdi1cdTAwM2V0YzYsIExBTjg2NVhfUkVHX01BQ19UU1VfVElNRVJfSU5DUixcbiAzODQ6XHRcdFx0XHRcdCAgICBNQUNfVFNVX1RJTUVSX0lOQ1JfQ09VTlRfTkFOT1NFQ09ORFMpO1xuIDM4NTpcdFx0aWYgKHJldCkge1xuIDM4NjpcdFx0XHRkZXZfZXJyKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byBjb25maWcgVFNVIFRpbWVyIEluY3IgcmVnOiAlZFxcblwmIzM0OyxcbiAzODc6XHRcdFx0XHRyZXQpO1xuIDM4ODpcdFx0XHRnb3RvIG9hX3RjNl9leGl0O1xuIDM4OTpcdFx0fVxuIDM5MDpcdFxuIDM5MTpcdFx0LyogQXMgcGVyIHRoZSBwb2ludCBzMyBpbiB0aGUgYmVsb3cgZXJyYXRhLCBTUEkgcmVjZWl2ZSBFdGhlcm5ldCBmcmFtZVxuIDM5MjpcdFx0ICogdHJhbnNmZXIgbWF5IGhhbHQgd2hlbiBzdGFydGluZyB0aGUgbmV4dCBmcmFtZSBpbiB0aGUgc2FtZSBkYXRhIGJsb2NrXG4gMzkzOlx0XHQgKiAoY2h1bmspIGFzIHRoZSBlbmQgb2YgYSBwcmV2aW91cyBmcmFtZS4gVGhlIFJGQSBmaWVsZCBzaG91bGQgYmVcbiAzOTQ6XHRcdCAqIGNvbmZpZ3VyZWQgdG8gMDFiIG9yIDEwYiBmb3IgcHJvcGVyIG9wZXJhdGlvbi4gSW4gdGhlc2UgbW9kZXMsIG9ubHlcbiAzOTU6XHRcdCAqIG9uZSByZWNlaXZlIEV0aGVybmV0IGZyYW1lIHdpbGwgYmUgcGxhY2VkIGluIGEgc2luZ2xlIGRhdGEgYmxvY2suXG4gMzk2Olx0XHQgKiBXaGVuIHRoZSBSRkEgZmllbGQgaXMgd3JpdHRlbiB0byAwMWIsIHJlY2VpdmVkIGZyYW1lcyB3aWxsIGJlIGZvcmNlZFxuIDM5NzpcdFx0ICogdG8gb25seSBzdGFydCBpbiB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgZGF0YSBibG9jayBwYXlsb2FkIChTV089MCkuIEFzXG4gMzk4Olx0XHQgKiByZWNvbW1lbmRlZCwgZW5hYmxlIHplcm8gYWxpZ24gcmVjZWl2ZSBmcmFtZSBmZWF0dXJlIGZvciBwcm9wZXJcbiAzOTk6XHRcdCAqIG9wZXJhdGlvbi5cbiA0MDA6XHRcdCAqXG4gNDAxOlx0XHQgKiBodHRwczovL3d3MS5taWNyb2NoaXAuY29tL2Rvd25sb2Fkcy9hZW1Eb2N1bWVudHMvZG9jdW1lbnRzL0FJUy9Qcm9kdWN0RG9jdW1lbnRzL0VycmF0YS9MQU44NjUwLTEtRXJyYXRhLTgwMDAxMDc1LnBkZlxuIDQwMjpcdFx0ICovXG4gNDAzOlx0XHRyZXQgPSBvYV90YzZfemVyb19hbGlnbl9yZWNlaXZlX2ZyYW1lX2VuYWJsZShwcml2LVx1MDAzZXRjNik7XG4gNDA0Olx0XHRpZiAocmV0KSB7XG4gNDA1Olx0XHRcdGRldl9lcnIoXHUwMDI2c3BpLVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIHNldCBaQVJGRTogJWRcXG5cJiMzNDssIHJldCk7XG4gNDA2Olx0XHRcdGdvdG8gb2FfdGM2X2V4aXQ7XG4gNDA3Olx0XHR9XG4gNDA4Olx0XG4gNDA5Olx0XHQvKiBHZXQgdGhlIE1BQyBhZGRyZXNzIGZyb20gdGhlIFNQSSBkZXZpY2UgdHJlZSBub2RlICovXG4gNDEwOlx0XHRpZiAoZGV2aWNlX2dldF9ldGhkZXZfYWRkcmVzcyhcdTAwMjZzcGktXHUwMDNlZGV2LCBuZXRkZXYpKVxuIDQxMTpcdFx0XHRldGhfaHdfYWRkcl9yYW5kb20obmV0ZGV2KTtcbiA0MTI6XHRcbiA0MTM6XHRcdHJldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHIocHJpdiwgbmV0ZGV2LVx1MDAzZWRldl9hZGRyKTtcbiA0MTQ6XHRcdGlmIChyZXQpIHtcbiA0MTU6XHRcdFx0ZGV2X2VycihcdTAwMjZzcGktXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gY29uZmlndXJlIE1BQzogJWRcXG5cJiMzNDssIHJldCk7XG4gNDE2Olx0XHRcdGdvdG8gb2FfdGM2X2V4aXQ7XG4gNDE3Olx0XHR9XG4gNDE4Olx0XG4gNDE5Olx0XHRuZXRkZXYtXHUwMDNlaWZfcG9ydCA9IElGX1BPUlRfMTBCQVNFVDtcbiA0MjA6XHRcdG5ldGRldi1cdTAwM2VpcnEgPSBzcGktXHUwMDNlaXJxO1xuIDQyMTpcdFx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZsYW44NjV4X25ldGRldl9vcHM7XG4gNDIyOlx0XHRuZXRkZXYtXHUwMDNlZXRodG9vbF9vcHMgPSBcdTAwMjZsYW44NjV4X2V0aHRvb2xfb3BzO1xuIDQyMzpcdFxuIDQyNDpcdFx0cmV0ID0gcmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIxNzAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyBpdDoKCioqTEFOODY1WCBLY29uZmlnIERlZXAgRGl2ZSoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBMQU44NjVYJiMzOTtzIEtjb25maWcuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgdGhvcm91Z2ggY2hlY2sgdG8gc2VlIGV4YWN0bHkgd2hhdCBmZWF0dXJlcyBhcmUgZXhwb3NlZCBhbmQgaG93IHRoZXkmIzM5O3JlIGNvbmZpZ3VyZWQuIEkgd2FudCB0byBzZWUgaG93IHRoZSByZWxldmFudCBkcml2ZXIgaXMgcHJlc2VudGVkLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIG5ldHdvcmsgc3RhY2sgYW5kIGFueSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIHRvIGNvbnRyb2wgdGhpbmdzIGxpa2UgUEhZIGFkZHJlc3NpbmcsIGludGVycnVwdCBsaW5lcywgY2xvY2sgc291cmNlcywgYW5kIGFueSBwb3RlbnRpYWwgcG93ZXIgbWFuYWdlbWVudCBzZXR0aW5ncy4KCk15IGluaXRpYWwgc2NhbiB3aWxsIGZvY3VzIG9uIHRyYWNpbmcgdGhlIHZhcmlvdXMgYGRlcGVuZHMgb25gLCBgc2VsZWN0YCwgYW5kIGBkZWZhdWx0YCBzdGF0ZW1lbnRzLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IEkga25vdyBob3cgdGhpcyBtb2R1bGUgZml0cyBpbnRvIHRoZSBncmVhdGVyIHN5c3RlbSBjb25maWd1cmF0aW9uIGFuZCB3aGF0IGl0IHJlbGllcyBvbi4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciB0aGVyZSBhcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyBrZXJuZWwgdmVyc2lvbnMgb3IgZmVhdHVyZXMg4oCTIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBjb21wYXRpYmlsaXR5IGlzc3VlcyBkb3duIHRoZSBsaW5lLiBJJiMzOTtsbCBtYWtlIG5vdGVzIGFib3V0IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIGFuZCBhbnkgYXNzb2NpYXRlZCBNRElPIGJ1cyBzdXBwb3J0IGFuZCB0aGUgZ2VuZXJpYyBFdGhlcm5ldCBQSFkgZnJhbWV3b3JrLiBBIHNvbGlkIEtjb25maWcgcmV2aWV3IHdpbGwgaGVscCBidWlsZCBhIHN0cm9uZyBmb3VuZGF0aW9uIGZvciBhbnkgZnV0dXJlIGludGVncmF0aW9uIG9yIHRyb3VibGVzaG9vdGluZyBlZmZvcnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIE1pY3JvY2hpcCBMQU44NjV4IERyaXZlciBTdXBwb3J0XG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGlmIE5FVF9WRU5ET1JfTUlDUk9DSElQXG4gICA3Olx0XG4gICA4Olx0Y29uZmlnIExBTjg2NVhcbiAgIDk6XHRcdHRyaXN0YXRlIFwmIzM0O0xBTjg2NXggc3VwcG9ydFwmIzM0O1xuICAxMDpcdFx0ZGVwZW5kcyBvbiBTUElcbiAgMTE6XHRcdHNlbGVjdCBPQV9UQzZcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgU3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBMQU44NjUwLzEgUmV2LkIwL0IxIE1BQ1BIWSBFdGhlcm5ldCBjaGlwLiBJdFxuICAxNDpcdFx0ICB1c2VzIE9QRU4gQWxsaWFuY2UgMTBCQVNFLVQxeCBTZXJpYWwgSW50ZXJmYWNlIHNwZWNpZmljYXRpb24uXG4gIDE1Olx0XG4gIDE2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbCBiZVxuICAxNzpcdFx0ICBjYWxsZWQgbGFuODY1eC5cbiAgMTg6XHRcbiAgMTk6XHRlbmRpZiAjIE5FVF9WRU5ET1JfTUlDUk9DSElQXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI3MjMKCQkJCQkJCW91dHB1dDogMTE2CgkJCQkJCQl0aG91Z2h0czogODE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkxBTjg2NVggRHJpdmVyIEFuYWx5c2lzIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBMQU44NjVYYCBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhlIE1pY3JvY2hpcCBMQU44NjUwLzEgUmV2LkIwL0IxIE1BQ1BIWSBFdGhlcm5ldCBjaGlwIGNvbm5lY3RlZCB2aWEgU1BJLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBoYXJkd2FyZSBpcyBldmVuIHJlbW90ZWx5IGFjY2Vzc2libGUgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSAvIHN5emthbGxlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGd1aWRlbGluZXMgYXJlIHByZXR0eSBjbGVhcjogZnV6emluZyBpcyBvbmx5IGFwcGxpY2FibGUgdG8gY29kZSB0aGF0ICpjYW4qIGFjdHVhbGx5IGV4ZWN1dGUgaW4gdGhlc2UgZW52aXJvbm1lbnRzLiBUaGF0IG1lYW5zIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMsIHRoaW5ncyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXAgYXJlIGZhaXIgZ2FtZSwgYnV0IG5vdCB0aGlzLgoKVGhlIGluaXRpYWwgaHVuY2ggaXMgdGhhdCwgbm8sIHRoaXMgaXMgbm90IGdvaW5nIHRvIHdvcmsuIExldOKAmXMgY29uZmlybS4gVGhlIGRyaXZlciBpcyBhbiBTUEkgY2xpZW50LCBkZW1hbmRpbmcgdGhlIGBtaWNyb2NoaXAsbGFuODY1MGAgaGFyZHdhcmUsIGNvbm5lY3RlZCB0aHJvdWdoIFNQSSAoYW5kIE9BX1RDNiBjb21tdW5pY2F0aW9uKS4gVGhlcmUmIzM5O3Mgbm8gZW11bGF0aW9uIG9mIFNQSSBkZXZpY2VzIGZvciB0aGUgYGxhbjg2NTBgIGluIHRoZSBzdGFuZGFyZCBRRU1VL3N5emthbGxlciBhbWQ2NCBzZXR1cCwgZnVsbCBzdG9wLiBFdmVuICppZiogdGhlIGRldmljZSB3ZXJlIHRvIHNvbWVob3cgZ2V0IHByb2JlZCwgdGhlIGRyaXZlciBnb2VzIG9uIHRvIGluaXRpYWxpemUgdGhlIE9BX1RDNiBpbnRlcmZhY2UgdXNpbmcgYG9hX3RjNl9pbml0YCwgYG9hX3RjNl93cml0ZV9yZWdpc3RlcmAsIGV0Yy4gd2hpY2ggcmVxdWlyZSBhIHBoeXNpY2FsIFNQSSBidXMuCgpOb3csIGxldCYjMzk7cyBicmVhayBkb3duIHRoZSBwYXRjaCBpdHNlbGYuIFRoZSBwYXRjaCBwcmltYXJpbHkgaW50cm9kdWNlcyBHUElPIGhhbmRsaW5nIGZvciBhIHJlc2V0IHBpbiB3aXRoaW4gdGhlIGBsYW44NjV4X3Byb2JlYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCB0cmllcyB0byBnZXQgYW4gb3B0aW9uYWwgcmVzZXQgR1BJTywgYXNzZXJ0cyB0aGUgcmVzZXQgZm9yIGEgc2hvcnQgZHVyYXRpb24sIGFuZCB0aGVuIGRlLWFzc2VydHMgaXQuIFRoaXMgcmVzZXQgc2VxdWVuY2UsIHdoaWxlIGltcG9ydGFudCBmb3IgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mIHRoZSBoYXJkd2FyZSwgcmVsaWVzIG9uIGEgcGh5c2ljYWwgR1BJTyBwaW4gY29ubmVjdGVkIHRvIHRoZSBMQU44NjUwIGNoaXAsIG5vdCBzb21ldGhpbmcgYWJzdHJhY3RlZCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4gSXQgYWxzbyB1cGRhdGVzIHRoZSBkZXZpY2UgdHJlZSBiaW5kaW5nIFlBTUwgZG9jdW1lbnRhdGlvbiB3aGljaCBpcyBub3QgcmVsZXZhbnQgdG8gdGhlIGZ1enppbmcgb2YgdGhlIGRldmljZSBpdHNlbGYuCgpUaGUgZHJpdmVyIGlzIGNsZWFybHkgZGVzaWduZWQgZm9yIGEgZGVkaWNhdGVkIGhhcmR3YXJlIFNQSSBuZXR3b3JrIGNvbnRyb2xsZXIgYW5kIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgZGV2aWNlIHRyZWUgY29uZmlndXJlZCB0byB1c2Ugb25lLiBUaGF0IGhhcmR3YXJlIGlzbiYjMzk7dCBzaW11bGF0ZWQgaW4gb3VyIHN0YW5kYXJkIFFFTVUvc3l6a2FsbGVyIHNldHVwLgoKVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCwgZXNwZWNpYWxseSB0aGUgYWRkZWQgcmVzZXQgbG9naWMgaW4gYGxhbjg2NXhfcHJvYmVgLCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuIFdlIGNhbiYjMzk7dCByZWFjaCBpdC4gR2l2ZW4gdGhlIGxhY2sgb2YgaGFyZHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHBhcnRpY3VsYXIgU1BJIGRldmljZSwgYW5kIHRoZSBzcGVjaWZpYyByZXF1aXJlbWVudCB0byB0b3VjaCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcGlucywgdGhlcmUgaXMgbm8gd2F5IHdlIGNhbiBmdXp6IHRoaXMuCgpTbywgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIG1ldGFkYXRhOgotIFdvcnRoRnV6emluZzogZmFsc2UKLSBGb2N1c1N5bWJvbHM6IFtdCi0gRW5hYmxlQ29uZmlnczogW10KLSBSZWFzb25pbmc6IENvbmNpc2UgZXhwbGFuYXRpb24gc3RhdGluZyB0aGF0IExBTjg2NVggaXMgYW4gU1BJIE1BQy1QSFkgRXRoZXJuZXQgZHJpdmVyIHJlcXVpcmluZyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgcHJlc2VudC9lbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIC8gc3l6a2FsbGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBwcm9iZSBsb2dpYyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuClRoaXMgaXMgYWxsIGFzIGV4cGVjdGVkLiBMZXQmIzM5O3MgZm9ybWF0IHRoZSBjYWxsIHRvIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyByZXNldCBHUElPIHN1cHBvcnQgdG8gdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBNaWNyb2NoaXAgTEFOODY1eCBTUEkgTUFDLVBIWSBldGhlcm5ldCBkcml2ZXIgYW5kIHVwZGF0ZXMgdGhlIGRldmljZXRyZWUgYmluZGluZ3MuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIGRlZGljYXRlZCBwaHlzaWNhbCBoYXJkd2FyZSAoTWljcm9jaGlwIExBTjg2NTAvMSBNQUMtUEhZIG9uIGFuIFNQSSBidXMpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHJlc2V0IEdQSU8gc3VwcG9ydCB0byB0aGUgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIE1pY3JvY2hpcCBMQU44NjV4IFNQSSBNQUMtUEhZIGV0aGVybmV0IGRyaXZlciBhbmQgdXBkYXRlcyB0aGUgZGV2aWNldHJlZSBiaW5kaW5ncy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChNaWNyb2NoaXAgTEFOODY1MC8xIE1BQy1QSFkgb24gYW4gU1BJIGJ1cykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDE0OjI0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxNDoyNDowMy42MDMzNjYyNThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA4Njc3ODI3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgcmVzZXQgR1BJTyBzdXBwb3J0IHRvIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgTWljcm9jaGlwIExBTjg2NXggU1BJIE1BQy1QSFkgZXRoZXJuZXQgZHJpdmVyIGFuZCB1cGRhdGVzIHRoZSBkZXZpY2V0cmVlIGJpbmRpbmdzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBkZWRpY2F0ZWQgcGh5c2ljYWwgaGFyZHdhcmUgKE1pY3JvY2hpcCBMQU44NjUwLzEgTUFDLVBIWSBvbiBhbiBTUEkgYnVzKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTQ6MjQ6MDMuNjAzMzcyMTA4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzE5MzMxNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNzE1YmE4YTUzNDRiNzMxMDUyNjVmNjEyYzYyMGI0MWVhOWViMDFmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDkgMTQ6MjQ6MDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyb2NoaXAsbGFuODY1MC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyb2NoaXAsbGFuODY1MC55YW1sXFxuaW5kZXggNzY2ZmY1ODE0N2FlMy4uMWI1NDNjZTMwNzYzMiAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JvY2hpcCxsYW44NjUwLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JvY2hpcCxsYW44NjUwLnlhbWxcXG5AQCAtNDAsNiArNDAsMTEgQEAgcHJvcGVydGllczpcXG4gICAgICAgRXZlbnQuXFxuICAgICBtYXhJdGVtczogMVxcbiBcXG4rICByZXNldC1ncGlvczpcXG4rICAgIGRlc2NyaXB0aW9uOlxcbisgICAgICBHUElPIGNvbm5lY3RlZCB0byB0aGUgYWN0aXZlLWxvdyBSRVNFVF9OIHBpbiBvZiB0aGUgTUFDLVBIWS5cXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbiAgIHNwaS1tYXgtZnJlcXVlbmN5OlxcbiAgICAgbWluaW11bTogMTUwMDAwMDBcXG4gICAgIG1heGltdW06IDI1MDAwMDAwXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguY1xcbmluZGV4IDI2YTI3NjEzMzJhNWEuLjYyYWJjNTc3YmU5MGQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXFxuQEAgLTksNiArOSw4IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2FfdGM2LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9ncGlvL2NvbnN1bWVyLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWxheS5oXFx1MDAzZVxcbiBcXG4gI2RlZmluZSBEUlZfTkFNRVxcdFxcdFxcdFxcXCJsYW44NjUwXFxcIlxcbiBcXG5AQCAtNDEsNiArNDMsNyBAQCBzdHJ1Y3QgbGFuODY1eF9wcml2IHtcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG4gXFx0c3RydWN0IHNwaV9kZXZpY2UgKnNwaTtcXG4gXFx0c3RydWN0IG9hX3RjNiAqdGM2O1xcbitcXHRzdHJ1Y3QgZ3Bpb19kZXNjICpyZXNldF9ncGlvO1xcbiB9O1xcbiBcXG4gc3RhdGljIGludCBsYW44NjV4X3NldF9od19tYWNhZGRyX2xvd19ieXRlcyhzdHJ1Y3Qgb2FfdGM2ICp0YzYsIGNvbnN0IHU4ICptYWMpXFxuQEAgLTM0Niw2ICszNDksMjQgQEAgc3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuIFxcdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xcbiBcXHRJTklUX1dPUksoXFx1MDAyNnByaXYtXFx1MDAzZW11bHRpY2FzdF93b3JrLCBsYW44NjV4X211bHRpY2FzdF93b3JrX2hhbmRsZXIpO1xcbiBcXG4rXFx0cHJpdi1cXHUwMDNlcmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgXFxcInJlc2V0XFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgR1BJT0RfT1VUX0xPVyk7XFxuK1xcdGlmIChJU19FUlIocHJpdi1cXHUwMDNlcmVzZXRfZ3BpbykpIHtcXG4rXFx0XFx0cmV0ID0gZGV2X2Vycl9wcm9iZShcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIFBUUl9FUlIocHJpdi1cXHUwMDNlcmVzZXRfZ3BpbyksXFxuK1xcdFxcdFxcdFxcdCAgICBcXFwiRmFpbGVkIHRvIGdldCByZXNldCBHUElPXFxcXG5cXFwiKTtcXG4rXFx0XFx0Z290byBmcmVlX25ldGRldjtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKHByaXYtXFx1MDAzZXJlc2V0X2dwaW8pIHtcXG4rXFx0XFx0LyogQXNzZXJ0IGhhcmR3YXJlIHJlc2V0IGZvciAxMCB1cyAoZGF0YXNoZWV0IHNwZWNpZmllcyBtaW4gNSB1cylcXG4rXFx0XFx0ICogYW5kIGFsbG93IDEgbXMgc2V0dGxlIHRpbWUgZm9yIGNyeXN0YWwgb3NjaWxsYXRvciBzdGFydHVwLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXFx1MDAzZXJlc2V0X2dwaW8sIDEpO1xcbitcXHRcXHRmc2xlZXAoMTApO1xcbitcXHRcXHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cXHUwMDNlcmVzZXRfZ3BpbywgMCk7XFxuK1xcdFxcdGZzbGVlcCgxMDAwKTtcXG4rXFx0fVxcbitcXG4gXFx0cHJpdi1cXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIE5VTEwpO1xcbiBcXHRpZiAoIXByaXYtXFx1MDAzZXRjNikge1xcbiBcXHRcXHRyZXQgPSAtRU5PREVWO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxNDoyNDowNC4xNzYwMTc5MTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE3NTE0MTEzMjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHJlc2V0IEdQSU8gc3VwcG9ydCB0byB0aGUgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIE1pY3JvY2hpcCBMQU44NjV4IFNQSSBNQUMtUEhZIGV0aGVybmV0IGRyaXZlciBhbmQgdXBkYXRlcyB0aGUgZGV2aWNldHJlZSBiaW5kaW5ncy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChNaWNyb2NoaXAgTEFOODY1MC8xIE1BQy1QSFkgb24gYW4gU1BJIGJ1cykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTcxNWJhOGE1MzQ0YjczMTA1MjY1ZjYxMmM2MjBiNDFlYTllYjAxZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMTQ6MjQ6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JvY2hpcCxsYW44NjUwLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JvY2hpcCxsYW44NjUwLnlhbWxcbmluZGV4IDc2NmZmNTgxNDdhZTMuLjFiNTQzY2UzMDc2MzIgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JvY2hpcCxsYW44NjUwLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWljcm9jaGlwLGxhbjg2NTAueWFtbFxuQEAgLTQwLDYgKzQwLDExIEBAIHByb3BlcnRpZXM6XG4gICAgICAgRXZlbnQuXG4gICAgIG1heEl0ZW1zOiAxXG4gXG4rICByZXNldC1ncGlvczpcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgR1BJTyBjb25uZWN0ZWQgdG8gdGhlIGFjdGl2ZS1sb3cgUkVTRVRfTiBwaW4gb2YgdGhlIE1BQy1QSFkuXG4rICAgIG1heEl0ZW1zOiAxXG4rXG4gICBzcGktbWF4LWZyZXF1ZW5jeTpcbiAgICAgbWluaW11bTogMTUwMDAwMDBcbiAgICAgbWF4aW11bTogMjUwMDAwMDBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNcbmluZGV4IDI2YTI3NjEzMzJhNWEuLjYyYWJjNTc3YmU5MGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguY1xuQEAgLTksNiArOSw4IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29hX3RjNi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpby9jb25zdW1lci5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuIFxuICNkZWZpbmUgRFJWX05BTUVcdFx0XHRcImxhbjg2NTBcIlxuIFxuQEAgLTQxLDYgKzQzLDcgQEAgc3RydWN0IGxhbjg2NXhfcHJpdiB7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xuIFx0c3RydWN0IHNwaV9kZXZpY2UgKnNwaTtcbiBcdHN0cnVjdCBvYV90YzYgKnRjNjtcbitcdHN0cnVjdCBncGlvX2Rlc2MgKnJlc2V0X2dwaW87XG4gfTtcbiBcbiBzdGF0aWMgaW50IGxhbjg2NXhfc2V0X2h3X21hY2FkZHJfbG93X2J5dGVzKHN0cnVjdCBvYV90YzYgKnRjNiwgY29uc3QgdTggKm1hYylcbkBAIC0zNDYsNiArMzQ5LDI0IEBAIHN0YXRpYyBpbnQgbGFuODY1eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuIFx0c3BpX3NldF9kcnZkYXRhKHNwaSwgcHJpdik7XG4gXHRJTklUX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VtdWx0aWNhc3Rfd29yaywgbGFuODY1eF9tdWx0aWNhc3Rfd29ya19oYW5kbGVyKTtcbiBcbitcdHByaXYtXHUwMDNlcmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFwicmVzZXRcIixcbitcdFx0XHRcdFx0XHQgICBHUElPRF9PVVRfTE9XKTtcbitcdGlmIChJU19FUlIocHJpdi1cdTAwM2VyZXNldF9ncGlvKSkge1xuK1x0XHRyZXQgPSBkZXZfZXJyX3Byb2JlKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFBUUl9FUlIocHJpdi1cdTAwM2VyZXNldF9ncGlvKSxcbitcdFx0XHRcdCAgICBcIkZhaWxlZCB0byBnZXQgcmVzZXQgR1BJT1xcblwiKTtcbitcdFx0Z290byBmcmVlX25ldGRldjtcbitcdH1cbitcbitcdGlmIChwcml2LVx1MDAzZXJlc2V0X2dwaW8pIHtcbitcdFx0LyogQXNzZXJ0IGhhcmR3YXJlIHJlc2V0IGZvciAxMCB1cyAoZGF0YXNoZWV0IHNwZWNpZmllcyBtaW4gNSB1cylcbitcdFx0ICogYW5kIGFsbG93IDEgbXMgc2V0dGxlIHRpbWUgZm9yIGNyeXN0YWwgb3NjaWxsYXRvciBzdGFydHVwLlxuK1x0XHQgKi9cbitcdFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXHUwMDNlcmVzZXRfZ3BpbywgMSk7XG4rXHRcdGZzbGVlcCgxMCk7XG4rXHRcdGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChwcml2LVx1MDAzZXJlc2V0X2dwaW8sIDApO1xuK1x0XHRmc2xlZXAoMTAwMCk7XG4rXHR9XG4rXG4gXHRwcml2LVx1MDAzZXRjNiA9IG9hX3RjNl9pbml0KHNwaSwgbmV0ZGV2LCBOVUxMKTtcbiBcdGlmICghcHJpdi1cdTAwM2V0YzYpIHtcbiBcdFx0cmV0ID0gLUVOT0RFVjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDE0OjI0OjA0LjE3NjAxOTU1MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYyNTk0NDA2NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMQU44NjVYIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIGZvY3VzIGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMuIEkgc2VlIHRoZSBwYXRjaCB0b3VjaGVzIHR3byBrZXkgYXJlYXM6IHRoZSBkZXZpY2UgdHJlZSBiaW5kaW5nIGRvY3VtZW50YXRpb24gZm9yIHRoZSBNaWNyb2NoaXAgTEFOODY1MCwgc3BlY2lmaWNhbGx5IGBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JvY2hpcCxsYW44NjUwLnlhbWxgLCBhbmQgdGhlIFNQSSBkcml2ZXIgaW1wbGVtZW50YXRpb24sIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNgLCB3aXRoIGNoYW5nZXMgaW4gYGxhbjg2NXhfcHJvYmVgLlxuXG5GaXJzdCwgSSBuZWVkIHRvIGdldCBhIHNvbGlkIGdyYXNwIG9mIHdoYXQgdGhpcyBkcml2ZXIgKmlzKiBhbmQgaG93IGl0IGludGVncmF0ZXMuIEknbGwgbmVlZCB0byBzY3J1dGluaXplIGBsYW44NjV4LmNgIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIEtjb25maWcgY29uZmlndXJhdGlvbiB0byBkZXRlcm1pbmUgaG93IGl0J3MgYnVpbHQsIGVuYWJsZWQsIGFuZCBpZiBpdCdzIGxpa2VseSB0byBiZSBhY2Nlc3NpYmxlIHRocm91Z2ggc3RhbmRhcmQgZnV6emluZyBzZXR1cHMgbGlrZSBzeXprYWxsZXIgaW4gYSBRRU1VIGVudmlyb25tZW50LiBUaGlzIGlzIGNyaXRpY2FsIGZvciBhc3Nlc3NpbmcgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgYW55IHZ1bG5lcmFiaWxpdGllcy5cblxuVGhlbiwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgdXRpbGl6ZSBlaXRoZXIgZ3JlcHBlciBvciBzdHJhaWdodC11cCBmaWxlIHJlYWRpbmcgb24gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9gIGRpcmVjdG9yeSB0byBnZXQgYSByYXBpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1ODUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxNDoyNDoxMC40MzU0NjM3MjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIzODAwMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGFuODY1eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnPTQ1PWNvbmZpZyBMQU43NDNYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZy01OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZzo2MDpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNjEtc291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlPTEwPWxhbjc0M3gtb2JqcyA6PSBsYW43NDN4X21haW4ubyBsYW43NDN4X2V0aHRvb2wubyBsYW43NDN4X3B0cC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlLTExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfTEFOODY1WCkgKz0gbGFuODY1eC9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGUtMTMtb2JqLSQoQ09ORklHX0xBTjk2NlhfU1dJVENIKSArPSBsYW45NjZ4L1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZz04PWNvbmZpZyBMQU44NjVYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnLTE2LVxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZzoxNzpcXHQgIGNhbGxlZCBsYW44NjV4LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWctMTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0xBTjg2NVgpICs9IGxhbjg2NXgub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MTpzdHJ1Y3QgbGFuODY1eF9wcml2IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDItXFx0c3RydWN0IHdvcmtfc3RydWN0IG11bHRpY2FzdF93b3JrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0OTpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X2h3X21hY2FkZHJfbG93X2J5dGVzKHN0cnVjdCBvYV90YzYgKnRjNiwgY29uc3QgdTggKm1hYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo1ODpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X2h3X21hY2FkZHIoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiwgY29uc3QgdTggKm1hYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTY0LVxcdC8qIENvbmZpZ3VyZSBNQUMgYWRkcmVzcyBsb3cgYnl0ZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NjU6XFx0cmV0ID0gbGFuODY1eF9zZXRfaHdfbWFjYWRkcl9sb3dfYnl0ZXMocHJpdi1cXHUwMDNldGM2LCBtYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy02Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTc4LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo3OTpcXHRyZXN0b3JlX3JldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHJfbG93X2J5dGVzKHByaXYtXFx1MDAzZXRjNixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtODAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHByaXYtXFx1MDAzZW5ldGRldi1cXHUwMDNlZGV2X2FkZHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo4NzpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGxhbjg2NXhfZXRodG9vbF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTg4LVxcdC5nZXRfbGlua19rc2V0dGluZ3MgPSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjkyOnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdm9pZCAqYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtOTMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo5NDpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtOTUtXFx0c3RydWN0IHNvY2thZGRyICphZGRyZXNzID0gYWRkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjEwNTpcXHRyZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyKHByaXYsIGFkZHJlc3MtXFx1MDAzZXNhX2RhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMDYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYz0xMTQ9c3RhdGljIHUzMiBnZXRfYWRkcmVzc19iaXQodTggYWRkcltFVEhfQUxFTl0sIHUzMiBiaXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxMTk6c3RhdGljIHUzMiBsYW44NjV4X2hhc2godTggYWRkcltFVEhfQUxFTl0pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEyMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxMzU6c3RhdGljIGludCBsYW44NjV4X3NldF9zcGVjaWZpY19tdWx0aWNhc3RfYWRkcihzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE0Mi1cXHRuZXRkZXZfZm9yX2VhY2hfbWNfYWRkcihoYSwgcHJpdi1cXHUwMDNlbmV0ZGV2KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjE0MzpcXHRcXHR1MzIgYml0X251bSA9IGxhbjg2NXhfaGFzaChoYS1cXHUwMDNlYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE0NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xNjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjE2NzpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X2FsbF9tdWx0aWNhc3RfYWRkcihzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xNjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTg5OnN0YXRpYyBpbnQgbGFuODY1eF9jbGVhcl9hbGxfbXVsdGljYXN0X2FkZHIoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIwODpzdGF0aWMgdm9pZCBsYW44NjV4X211bHRpY2FzdF93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMDkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMTA6XFx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbGFuODY1eF9wcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMTEtXFx0XFx0XFx0XFx0XFx0XFx0IG11bHRpY2FzdF93b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMjEtXFx0XFx0LyogRW5hYmxpbmcgYWxsIG11bHRpY2FzdCBtb2RlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIyMjpcXHRcXHRpZiAobGFuODY1eF9zZXRfYWxsX211bHRpY2FzdF9hZGRyKHByaXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMjMtXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIyOS1cXHRcXHQvKiBFbmFibGluZyBzcGVjaWZpYyBtdWx0aWNhc3QgbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMzA6XFx0XFx0aWYgKGxhbjg2NXhfc2V0X3NwZWNpZmljX211bHRpY2FzdF9hZGRyKHByaXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMzEtXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIzNy1cXHRcXHQvKiBFbmFibGluZyBsb2NhbCBtYWMgYWRkcmVzcyBvbmx5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIzODpcXHRcXHRpZiAobGFuODY1eF9jbGVhcl9hbGxfbXVsdGljYXN0X2FkZHIocHJpdikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIzOS1cXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNDc6c3RhdGljIHZvaWQgbGFuODY1eF9zZXRfbXVsdGljYXN0X2xpc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjQ4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjQ5OlxcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNTQ6c3RhdGljIG5ldGRldl90eF90IGxhbjg2NXhfc2VuZF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjU1LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNTYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNTc6XFx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI2MjpzdGF0aWMgaW50IGxhbjg2NXhfaHdfZGlzYWJsZShzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6Mjc3OnN0YXRpYyBpbnQgbGFuODY1eF9uZXRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjc4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6Mjc5OlxcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yODAtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yODMtXFx0cGh5X3N0b3AobmV0ZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyODQ6XFx0cmV0ID0gbGFuODY1eF9od19kaXNhYmxlKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yODUtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjkzOnN0YXRpYyBpbnQgbGFuODY1eF9od19lbmFibGUoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMwODpzdGF0aWMgaW50IGxhbjg2NXhfbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzA5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzEwOlxcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMTEtXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMTM6XFx0cmV0ID0gbGFuODY1eF9od19lbmFibGUocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMxNC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjY6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBsYW44NjV4X25ldGRldl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyNzpcXHQubmRvX29wZW5cXHRcXHQ9IGxhbjg2NXhfbmV0X29wZW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyODpcXHQubmRvX3N0b3BcXHRcXHQ9IGxhbjg2NXhfbmV0X2Nsb3NlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjk6XFx0Lm5kb19zdGFydF94bWl0XFx0XFx0PSBsYW44NjV4X3NlbmRfcGFja2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMzA6XFx0Lm5kb19zZXRfcnhfbW9kZVxcdD0gbGFuODY1eF9zZXRfbXVsdGljYXN0X2xpc3QsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMzMTpcXHQubmRvX3NldF9tYWNfYWRkcmVzc1xcdD0gbGFuODY1eF9zZXRfbWFjX2FkZHJlc3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMzMi1cXHQubmRvX3ZhbGlkYXRlX2FkZHJcXHQ9IGV0aF92YWxpZGF0ZV9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzM2OnN0YXRpYyBpbnQgbGFuODY1eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMzcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMzgtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzM5OlxcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0MC1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM0MjpcXHRuZXRkZXYgPSBhbGxvY19ldGhlcmRldihzaXplb2Yoc3RydWN0IGxhbjg2NXhfcHJpdikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNDMtXFx0aWYgKCFuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzQ5LVxcdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozNTA6XFx0SU5JVF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2VtdWx0aWNhc3Rfd29yaywgbGFuODY1eF9tdWx0aWNhc3Rfd29ya19oYW5kbGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzUxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDEzOlxcdHJldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHIocHJpdiwgbmV0ZGV2LVxcdTAwM2VkZXZfYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQxNC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDIwLVxcdG5ldGRldi1cXHUwMDNlaXJxID0gc3BpLVxcdTAwM2VpcnE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQyMTpcXHRuZXRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2bGFuODY1eF9uZXRkZXZfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MjI6XFx0bmV0ZGV2LVxcdTAwM2VldGh0b29sX29wcyA9IFxcdTAwMjZsYW44NjV4X2V0aHRvb2xfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0Mzk6c3RhdGljIHZvaWQgbGFuODY1eF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDQwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQxOlxcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDQyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQ5OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBsYW44NjV4X2lkc1tdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NTAtXFx0eyAubmFtZSA9IFxcXCJsYW44NjUwXFxcIiB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ1My19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NTQ6TU9EVUxFX0RFVklDRV9UQUJMRShzcGksIGxhbjg2NXhfaWRzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NTY6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbGFuODY1eF9kdF9pZHNbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDU3LVxcdHsgLmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGxhbjg2NTBcXFwiIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDYwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ2MTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBsYW44NjV4X2R0X2lkcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDYzOnN0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBsYW44NjV4X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDY0LVxcdC5kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ2NS1cXHRcXHQubmFtZSA9IERSVl9OQU1FLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NjY6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gbGFuODY1eF9kdF9pZHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ2Ny1cXHQgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDY4OlxcdC5wcm9iZSA9IGxhbjg2NXhfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ2OTpcXHQucmVtb3ZlID0gbGFuODY1eF9yZW1vdmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ3MDpcXHQuaWRfdGFibGUgPSBsYW44NjV4X2lkcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDcxLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ3Mjptb2R1bGVfc3BpX2RyaXZlcihsYW44NjV4X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ3My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTQ6MjQ6MTAuNDg3ODQ5MDA0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjc1NzIwMTQ0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgaXQ6XG5cbioqQW5hbHl6aW5nIHRoZSBMQU44NjV4IERyaXZlciBQcm9iZSBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgTEFOODY1eCBFdGhlcm5ldCBkcml2ZXIgaXMgYmVpbmcgaW5pdGlhbGl6ZWQuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBmdWxsIGBwcm9iZWAgZnVuY3Rpb24gd2l0aGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCB3aGVyZSB0aGUgaGFyZHdhcmUgaXMgaWRlbnRpZmllZCwgcmVzb3VyY2VzIGFyZSBhbGxvY2F0ZWQsIGFuZCB0aGUgZGV2aWNlIGlzIGJyb3VnaHQgb25saW5lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBoZXJlOiBob3cgdGhlIFBIWSBpcyBjb25maWd1cmVkLCBob3cgaW50ZXJydXB0cyBhcmUgaGFuZGxlZCwgYW5kIGhvdyB0aGUgbmV0d29yayBpbnRlcmZhY2UgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBrZXJuZWwuIEknbSBsb29raW5nIGZvciBhbnkgaW5pdGlhbGl6YXRpb24gZ290Y2hhcy5cblxuVGhlbiwgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLCBJJ2xsIG5lZWQgdG8gY3Jvc3MtcmVmZXJlbmNlIHRoYXQgd2l0aCB0aGUgcmVsZXZhbnQgYEtjb25maWdgIGZpbGUuIFRoZSBgS2NvbmZpZ2Agd2lsbCB0ZWxsIG1lIHdoaWNoIGNvbmZpZ3VyYXRpb25zIGVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZHJpdmVyLCB3aGF0IHNldHRpbmdzIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBwcmVyZXF1aXNpdGVzLCBsaWtlIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzIG9yIG90aGVyIGRyaXZlcnMgdGhhdCBuZWVkIHRvIGJlIGluIHBsYWNlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGRyaXZlciBjYW4gYmUgYnVpbHQgYW5kIGNvbmZpZ3VyZWQgaW4gZGlmZmVyZW50IHNjZW5hcmlvcy4gSSB3YW50IHRvIGJ1aWxkIGEgaG9saXN0aWMgcGljdHVyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCB0aGUgcmVzb3VyY2VzIGFzc2lnbmVkIHRvIHRoZSBkcml2ZXIsIGFuZCBob3cgaXQgaXMgZXhwZWN0ZWQgdG8gZnVuY3Rpb24gYXMgYSB3aG9sZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxNjUsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxNDoyNDoxMy4yNDUwNTI2ODhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzM1LFxuICBcIkxpbmVDb3VudFwiOiA5MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzM1OlxcdFxcbiAzMzY6XFx0c3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuIDMzNzpcXHR7XFxuIDMzODpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbiAzMzk6XFx0XFx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdjtcXG4gMzQwOlxcdFxcdGludCByZXQ7XFxuIDM0MTpcXHRcXG4gMzQyOlxcdFxcdG5ldGRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZihzdHJ1Y3QgbGFuODY1eF9wcml2KSk7XFxuIDM0MzpcXHRcXHRpZiAoIW5ldGRldilcXG4gMzQ0OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAzNDU6XFx0XFxuIDM0NjpcXHRcXHRwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG4gMzQ3OlxcdFxcdHByaXYtXFx1MDAzZW5ldGRldiA9IG5ldGRldjtcXG4gMzQ4OlxcdFxcdHByaXYtXFx1MDAzZXNwaSA9IHNwaTtcXG4gMzQ5OlxcdFxcdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xcbiAzNTA6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2VtdWx0aWNhc3Rfd29yaywgbGFuODY1eF9tdWx0aWNhc3Rfd29ya19oYW5kbGVyKTtcXG4gMzUxOlxcdFxcbiAzNTI6XFx0XFx0cHJpdi1cXHUwMDNlcmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgXFxcInJlc2V0XFxcIixcXG4gMzUzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIEdQSU9EX09VVF9MT1cpO1xcbiAzNTQ6XFx0XFx0aWYgKElTX0VSUihwcml2LVxcdTAwM2VyZXNldF9ncGlvKSkge1xcbiAzNTU6XFx0XFx0XFx0cmV0ID0gZGV2X2Vycl9wcm9iZShcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIFBUUl9FUlIocHJpdi1cXHUwMDNlcmVzZXRfZ3BpbyksXFxuIDM1NjpcXHRcXHRcXHRcXHRcXHQgICAgXFxcIkZhaWxlZCB0byBnZXQgcmVzZXQgR1BJT1xcXFxuXFxcIik7XFxuIDM1NzpcXHRcXHRcXHRnb3RvIGZyZWVfbmV0ZGV2O1xcbiAzNTg6XFx0XFx0fVxcbiAzNTk6XFx0XFxuIDM2MDpcXHRcXHRpZiAocHJpdi1cXHUwMDNlcmVzZXRfZ3Bpbykge1xcbiAzNjE6XFx0XFx0XFx0LyogQXNzZXJ0IGhhcmR3YXJlIHJlc2V0IGZvciAxMCB1cyAoZGF0YXNoZWV0IHNwZWNpZmllcyBtaW4gNSB1cylcXG4gMzYyOlxcdFxcdFxcdCAqIGFuZCBhbGxvdyAxIG1zIHNldHRsZSB0aW1lIGZvciBjcnlzdGFsIG9zY2lsbGF0b3Igc3RhcnR1cC5cXG4gMzYzOlxcdFxcdFxcdCAqL1xcbiAzNjQ6XFx0XFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXFx1MDAzZXJlc2V0X2dwaW8sIDEpO1xcbiAzNjU6XFx0XFx0XFx0ZnNsZWVwKDEwKTtcXG4gMzY2OlxcdFxcdFxcdGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChwcml2LVxcdTAwM2VyZXNldF9ncGlvLCAwKTtcXG4gMzY3OlxcdFxcdFxcdGZzbGVlcCgxMDAwKTtcXG4gMzY4OlxcdFxcdH1cXG4gMzY5OlxcdFxcbiAzNzA6XFx0XFx0cHJpdi1cXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIE5VTEwpO1xcbiAzNzE6XFx0XFx0aWYgKCFwcml2LVxcdTAwM2V0YzYpIHtcXG4gMzcyOlxcdFxcdFxcdHJldCA9IC1FTk9ERVY7XFxuIDM3MzpcXHRcXHRcXHRnb3RvIGZyZWVfbmV0ZGV2O1xcbiAzNzQ6XFx0XFx0fVxcbiAzNzU6XFx0XFxuIDM3NjpcXHRcXHQvKiBMQU44NjV4IFJldi5CMC9CMSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZnJvbSBBTjE3NjBcXG4gMzc3OlxcdFxcdCAqIEFzIHBlciB0aGUgQ29uZmlndXJhdGlvbiBBcHBsaWNhdGlvbiBOb3RlIEFOMTc2MCBwdWJsaXNoZWQgaW4gdGhlXFxuIDM3ODpcXHRcXHQgKiBsaW5rLCBodHRwczovL3d3dy5taWNyb2NoaXAuY29tL2VuLXVzL2FwcGxpY2F0aW9uLW5vdGVzL2FuMTc2MFxcbiAzNzk6XFx0XFx0ICogUmV2aXNpb24gRiAoRFM2MDAwMTc2MEcgLSBKdW5lIDIwMjQpLCBjb25maWd1cmUgdGhlIE1BQyB0byBzZXQgdGltZVxcbiAzODA6XFx0XFx0ICogc3RhbXBpbmcgYXQgdGhlIGVuZCBvZiB0aGUgU3RhcnQgb2YgRnJhbWUgRGVsaW1pdGVyIChTRkQpIGFuZCBzZXQgdGhlXFxuIDM4MTpcXHRcXHQgKiBUaW1lciBJbmNyZW1lbnQgcmVnIHRvIDQwIG5zIHRvIGJlIHVzZWQgYXMgYSAyNSBNSHogaW50ZXJuYWwgY2xvY2suXFxuIDM4MjpcXHRcXHQgKi9cXG4gMzgzOlxcdFxcdHJldCA9IG9hX3RjNl93cml0ZV9yZWdpc3Rlcihwcml2LVxcdTAwM2V0YzYsIExBTjg2NVhfUkVHX01BQ19UU1VfVElNRVJfSU5DUixcXG4gMzg0OlxcdFxcdFxcdFxcdFxcdCAgICBNQUNfVFNVX1RJTUVSX0lOQ1JfQ09VTlRfTkFOT1NFQ09ORFMpO1xcbiAzODU6XFx0XFx0aWYgKHJldCkge1xcbiAzODY6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gY29uZmlnIFRTVSBUaW1lciBJbmNyIHJlZzogJWRcXFxcblxcXCIsXFxuIDM4NzpcXHRcXHRcXHRcXHRyZXQpO1xcbiAzODg6XFx0XFx0XFx0Z290byBvYV90YzZfZXhpdDtcXG4gMzg5OlxcdFxcdH1cXG4gMzkwOlxcdFxcbiAzOTE6XFx0XFx0LyogQXMgcGVyIHRoZSBwb2ludCBzMyBpbiB0aGUgYmVsb3cgZXJyYXRhLCBTUEkgcmVjZWl2ZSBFdGhlcm5ldCBmcmFtZVxcbiAzOTI6XFx0XFx0ICogdHJhbnNmZXIgbWF5IGhhbHQgd2hlbiBzdGFydGluZyB0aGUgbmV4dCBmcmFtZSBpbiB0aGUgc2FtZSBkYXRhIGJsb2NrXFxuIDM5MzpcXHRcXHQgKiAoY2h1bmspIGFzIHRoZSBlbmQgb2YgYSBwcmV2aW91cyBmcmFtZS4gVGhlIFJGQSBmaWVsZCBzaG91bGQgYmVcXG4gMzk0OlxcdFxcdCAqIGNvbmZpZ3VyZWQgdG8gMDFiIG9yIDEwYiBmb3IgcHJvcGVyIG9wZXJhdGlvbi4gSW4gdGhlc2UgbW9kZXMsIG9ubHlcXG4gMzk1OlxcdFxcdCAqIG9uZSByZWNlaXZlIEV0aGVybmV0IGZyYW1lIHdpbGwgYmUgcGxhY2VkIGluIGEgc2luZ2xlIGRhdGEgYmxvY2suXFxuIDM5NjpcXHRcXHQgKiBXaGVuIHRoZSBSRkEgZmllbGQgaXMgd3JpdHRlbiB0byAwMWIsIHJlY2VpdmVkIGZyYW1lcyB3aWxsIGJlIGZvcmNlZFxcbiAzOTc6XFx0XFx0ICogdG8gb25seSBzdGFydCBpbiB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgZGF0YSBibG9jayBwYXlsb2FkIChTV089MCkuIEFzXFxuIDM5ODpcXHRcXHQgKiByZWNvbW1lbmRlZCwgZW5hYmxlIHplcm8gYWxpZ24gcmVjZWl2ZSBmcmFtZSBmZWF0dXJlIGZvciBwcm9wZXJcXG4gMzk5OlxcdFxcdCAqIG9wZXJhdGlvbi5cXG4gNDAwOlxcdFxcdCAqXFxuIDQwMTpcXHRcXHQgKiBodHRwczovL3d3MS5taWNyb2NoaXAuY29tL2Rvd25sb2Fkcy9hZW1Eb2N1bWVudHMvZG9jdW1lbnRzL0FJUy9Qcm9kdWN0RG9jdW1lbnRzL0VycmF0YS9MQU44NjUwLTEtRXJyYXRhLTgwMDAxMDc1LnBkZlxcbiA0MDI6XFx0XFx0ICovXFxuIDQwMzpcXHRcXHRyZXQgPSBvYV90YzZfemVyb19hbGlnbl9yZWNlaXZlX2ZyYW1lX2VuYWJsZShwcml2LVxcdTAwM2V0YzYpO1xcbiA0MDQ6XFx0XFx0aWYgKHJldCkge1xcbiA0MDU6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gc2V0IFpBUkZFOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4gNDA2OlxcdFxcdFxcdGdvdG8gb2FfdGM2X2V4aXQ7XFxuIDQwNzpcXHRcXHR9XFxuIDQwODpcXHRcXG4gNDA5OlxcdFxcdC8qIEdldCB0aGUgTUFDIGFkZHJlc3MgZnJvbSB0aGUgU1BJIGRldmljZSB0cmVlIG5vZGUgKi9cXG4gNDEwOlxcdFxcdGlmIChkZXZpY2VfZ2V0X2V0aGRldl9hZGRyZXNzKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgbmV0ZGV2KSlcXG4gNDExOlxcdFxcdFxcdGV0aF9od19hZGRyX3JhbmRvbShuZXRkZXYpO1xcbiA0MTI6XFx0XFxuIDQxMzpcXHRcXHRyZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyKHByaXYsIG5ldGRldi1cXHUwMDNlZGV2X2FkZHIpO1xcbiA0MTQ6XFx0XFx0aWYgKHJldCkge1xcbiA0MTU6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gY29uZmlndXJlIE1BQzogJWRcXFxcblxcXCIsIHJldCk7XFxuIDQxNjpcXHRcXHRcXHRnb3RvIG9hX3RjNl9leGl0O1xcbiA0MTc6XFx0XFx0fVxcbiA0MTg6XFx0XFxuIDQxOTpcXHRcXHRuZXRkZXYtXFx1MDAzZWlmX3BvcnQgPSBJRl9QT1JUXzEwQkFTRVQ7XFxuIDQyMDpcXHRcXHRuZXRkZXYtXFx1MDAzZWlycSA9IHNwaS1cXHUwMDNlaXJxO1xcbiA0MjE6XFx0XFx0bmV0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNmxhbjg2NXhfbmV0ZGV2X29wcztcXG4gNDIyOlxcdFxcdG5ldGRldi1cXHUwMDNlZXRodG9vbF9vcHMgPSBcXHUwMDI2bGFuODY1eF9ldGh0b29sX29wcztcXG4gNDIzOlxcdFxcbiA0MjQ6XFx0XFx0cmV0ID0gcmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDE0OjI0OjEzLjI0NTE0OTc5OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1Nzc1OTQ1MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIGl0OlxuXG4qKkxBTjg2NVggS2NvbmZpZyBEZWVwIERpdmUqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBMQU44NjVYJ3MgS2NvbmZpZy4gTGV0J3Mgc3RhcnQgd2l0aCBhIHRob3JvdWdoIGNoZWNrIHRvIHNlZSBleGFjdGx5IHdoYXQgZmVhdHVyZXMgYXJlIGV4cG9zZWQgYW5kIGhvdyB0aGV5J3JlIGNvbmZpZ3VyZWQuIEkgd2FudCB0byBzZWUgaG93IHRoZSByZWxldmFudCBkcml2ZXIgaXMgcHJlc2VudGVkLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIG5ldHdvcmsgc3RhY2sgYW5kIGFueSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIHRvIGNvbnRyb2wgdGhpbmdzIGxpa2UgUEhZIGFkZHJlc3NpbmcsIGludGVycnVwdCBsaW5lcywgY2xvY2sgc291cmNlcywgYW5kIGFueSBwb3RlbnRpYWwgcG93ZXIgbWFuYWdlbWVudCBzZXR0aW5ncy5cblxuTXkgaW5pdGlhbCBzY2FuIHdpbGwgZm9jdXMgb24gdHJhY2luZyB0aGUgdmFyaW91cyBgZGVwZW5kcyBvbmAsIGBzZWxlY3RgLCBhbmQgYGRlZmF1bHRgIHN0YXRlbWVudHMuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgSSBrbm93IGhvdyB0aGlzIG1vZHVsZSBmaXRzIGludG8gdGhlIGdyZWF0ZXIgc3lzdGVtIGNvbmZpZ3VyYXRpb24gYW5kIHdoYXQgaXQgcmVsaWVzIG9uLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgb24gc3BlY2lmaWMga2VybmVsIHZlcnNpb25zIG9yIGZlYXR1cmVzIOKAkyBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBjb21wYXRpYmlsaXR5IGlzc3VlcyBkb3duIHRoZSBsaW5lLiBJJ2xsIG1ha2Ugbm90ZXMgYWJvdXQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgYW5kIGFueSBhc3NvY2lhdGVkIE1ESU8gYnVzIHN1cHBvcnQgYW5kIHRoZSBnZW5lcmljIEV0aGVybmV0IFBIWSBmcmFtZXdvcmsuIEEgc29saWQgS2NvbmZpZyByZXZpZXcgd2lsbCBoZWxwIGJ1aWxkIGEgc3Ryb25nIGZvdW5kYXRpb24gZm9yIGFueSBmdXR1cmUgaW50ZWdyYXRpb24gb3IgdHJvdWJsZXNob290aW5nIGVmZm9ydHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMTcwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxNDoyNDoxNS44MjI3NDY3MTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1pY3JvY2hpcCBMQU44NjV4IERyaXZlciBTdXBwb3J0XFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGlmIE5FVF9WRU5ET1JfTUlDUk9DSElQXFxuICAgNzpcXHRcXG4gICA4OlxcdGNvbmZpZyBMQU44NjVYXFxuICAgOTpcXHRcXHR0cmlzdGF0ZSBcXFwiTEFOODY1eCBzdXBwb3J0XFxcIlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBTUElcXG4gIDExOlxcdFxcdHNlbGVjdCBPQV9UQzZcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgU3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBMQU44NjUwLzEgUmV2LkIwL0IxIE1BQ1BIWSBFdGhlcm5ldCBjaGlwLiBJdFxcbiAgMTQ6XFx0XFx0ICB1c2VzIE9QRU4gQWxsaWFuY2UgMTBCQVNFLVQxeCBTZXJpYWwgSW50ZXJmYWNlIHNwZWNpZmljYXRpb24uXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlXFxuICAxNzpcXHRcXHQgIGNhbGxlZCBsYW44NjV4LlxcbiAgMTg6XFx0XFxuICAxOTpcXHRlbmRpZiAjIE5FVF9WRU5ET1JfTUlDUk9DSElQXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDE0OjI0OjE1LjgyMjgzMDE4NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU4NjcyNzIzODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTEFOODY1WCBEcml2ZXIgQW5hbHlzaXMgZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBMQU44NjVYYCBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhlIE1pY3JvY2hpcCBMQU44NjUwLzEgUmV2LkIwL0IxIE1BQ1BIWSBFdGhlcm5ldCBjaGlwIGNvbm5lY3RlZCB2aWEgU1BJLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBoYXJkd2FyZSBpcyBldmVuIHJlbW90ZWx5IGFjY2Vzc2libGUgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSAvIHN5emthbGxlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGd1aWRlbGluZXMgYXJlIHByZXR0eSBjbGVhcjogZnV6emluZyBpcyBvbmx5IGFwcGxpY2FibGUgdG8gY29kZSB0aGF0ICpjYW4qIGFjdHVhbGx5IGV4ZWN1dGUgaW4gdGhlc2UgZW52aXJvbm1lbnRzLiBUaGF0IG1lYW5zIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMsIHRoaW5ncyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXAgYXJlIGZhaXIgZ2FtZSwgYnV0IG5vdCB0aGlzLlxuXG5UaGUgaW5pdGlhbCBodW5jaCBpcyB0aGF0LCBubywgdGhpcyBpcyBub3QgZ29pbmcgdG8gd29yay4gTGV04oCZcyBjb25maXJtLiBUaGUgZHJpdmVyIGlzIGFuIFNQSSBjbGllbnQsIGRlbWFuZGluZyB0aGUgYG1pY3JvY2hpcCxsYW44NjUwYCBoYXJkd2FyZSwgY29ubmVjdGVkIHRocm91Z2ggU1BJIChhbmQgT0FfVEM2IGNvbW11bmljYXRpb24pLiBUaGVyZSdzIG5vIGVtdWxhdGlvbiBvZiBTUEkgZGV2aWNlcyBmb3IgdGhlIGBsYW44NjUwYCBpbiB0aGUgc3RhbmRhcmQgUUVNVS9zeXprYWxsZXIgYW1kNjQgc2V0dXAsIGZ1bGwgc3RvcC4gRXZlbiAqaWYqIHRoZSBkZXZpY2Ugd2VyZSB0byBzb21laG93IGdldCBwcm9iZWQsIHRoZSBkcml2ZXIgZ29lcyBvbiB0byBpbml0aWFsaXplIHRoZSBPQV9UQzYgaW50ZXJmYWNlIHVzaW5nIGBvYV90YzZfaW5pdGAsIGBvYV90YzZfd3JpdGVfcmVnaXN0ZXJgLCBldGMuIHdoaWNoIHJlcXVpcmUgYSBwaHlzaWNhbCBTUEkgYnVzLlxuXG5Ob3csIGxldCdzIGJyZWFrIGRvd24gdGhlIHBhdGNoIGl0c2VsZi4gVGhlIHBhdGNoIHByaW1hcmlseSBpbnRyb2R1Y2VzIEdQSU8gaGFuZGxpbmcgZm9yIGEgcmVzZXQgcGluIHdpdGhpbiB0aGUgYGxhbjg2NXhfcHJvYmVgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHRyaWVzIHRvIGdldCBhbiBvcHRpb25hbCByZXNldCBHUElPLCBhc3NlcnRzIHRoZSByZXNldCBmb3IgYSBzaG9ydCBkdXJhdGlvbiwgYW5kIHRoZW4gZGUtYXNzZXJ0cyBpdC4gVGhpcyByZXNldCBzZXF1ZW5jZSwgd2hpbGUgaW1wb3J0YW50IGZvciBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGhhcmR3YXJlLCByZWxpZXMgb24gYSBwaHlzaWNhbCBHUElPIHBpbiBjb25uZWN0ZWQgdG8gdGhlIExBTjg2NTAgY2hpcCwgbm90IHNvbWV0aGluZyBhYnN0cmFjdGVkIGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LiBJdCBhbHNvIHVwZGF0ZXMgdGhlIGRldmljZSB0cmVlIGJpbmRpbmcgWUFNTCBkb2N1bWVudGF0aW9uIHdoaWNoIGlzIG5vdCByZWxldmFudCB0byB0aGUgZnV6emluZyBvZiB0aGUgZGV2aWNlIGl0c2VsZi5cblxuVGhlIGRyaXZlciBpcyBjbGVhcmx5IGRlc2lnbmVkIGZvciBhIGRlZGljYXRlZCBoYXJkd2FyZSBTUEkgbmV0d29yayBjb250cm9sbGVyIGFuZCByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBvciBhIGRldmljZSB0cmVlIGNvbmZpZ3VyZWQgdG8gdXNlIG9uZS4gVGhhdCBoYXJkd2FyZSBpc24ndCBzaW11bGF0ZWQgaW4gb3VyIHN0YW5kYXJkIFFFTVUvc3l6a2FsbGVyIHNldHVwLlxuXG5UaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoLCBlc3BlY2lhbGx5IHRoZSBhZGRlZCByZXNldCBsb2dpYyBpbiBgbGFuODY1eF9wcm9iZWAsIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4gV2UgY2FuJ3QgcmVhY2ggaXQuIEdpdmVuIHRoZSBsYWNrIG9mIGhhcmR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBwYXJ0aWN1bGFyIFNQSSBkZXZpY2UsIGFuZCB0aGUgc3BlY2lmaWMgcmVxdWlyZW1lbnQgdG8gdG91Y2ggdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHBpbnMsIHRoZXJlIGlzIG5vIHdheSB3ZSBjYW4gZnV6eiB0aGlzLlxuXG5TbywgbGV0J3MgY29uZmlybSB0aGUgbWV0YWRhdGE6XG4tIFdvcnRoRnV6emluZzogZmFsc2Vcbi0gRm9jdXNTeW1ib2xzOiBbXVxuLSBFbmFibGVDb25maWdzOiBbXVxuLSBSZWFzb25pbmc6IENvbmNpc2UgZXhwbGFuYXRpb24gc3RhdGluZyB0aGF0IExBTjg2NVggaXMgYW4gU1BJIE1BQy1QSFkgRXRoZXJuZXQgZHJpdmVyIHJlcXVpcmluZyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgcHJlc2VudC9lbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIC8gc3l6a2FsbGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBwcm9iZSBsb2dpYyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXG5UaGlzIGlzIGFsbCBhcyBleHBlY3RlZC4gTGV0J3MgZm9ybWF0IHRoZSBjYWxsIHRvIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzIzLCJPdXRwdXRUb2tlbnMiOjExNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDE0OjI0OjIxLjY5MDEwNDg0MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgcmVzZXQgR1BJTyBzdXBwb3J0IHRvIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgTWljcm9jaGlwIExBTjg2NXggU1BJIE1BQy1QSFkgZXRoZXJuZXQgZHJpdmVyIGFuZCB1cGRhdGVzIHRoZSBkZXZpY2V0cmVlIGJpbmRpbmdzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBkZWRpY2F0ZWQgcGh5c2ljYWwgaGFyZHdhcmUgKE1pY3JvY2hpcCBMQU44NjUwLzEgTUFDLVBIWSBvbiBhbiBTUEkgYnVzKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyByZXNldCBHUElPIHN1cHBvcnQgdG8gdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBNaWNyb2NoaXAgTEFOODY1eCBTUEkgTUFDLVBIWSBldGhlcm5ldCBkcml2ZXIgYW5kIHVwZGF0ZXMgdGhlIGRldmljZXRyZWUgYmluZGluZ3MuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIGRlZGljYXRlZCBwaHlzaWNhbCBoYXJkd2FyZSAoTWljcm9jaGlwIExBTjg2NTAvMSBNQUMtUEhZIG9uIGFuIFNQSSBidXMpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxNDoyNDoyMS42OTAxMzM2MzFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowqwvb5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-09 14:02:29 +0000 UTC FinishedAt: 2026-09-09 14:24:22 +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+CgkJCTx0ZD4yMDI2LzA5LzA5IDE0OjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyByZXNldCBHUElPIHN1cHBvcnQgdG8gdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBNaWNyb2NoaXAgTEFOODY1eCBTUEkgTUFDLVBIWSBldGhlcm5ldCBkcml2ZXIgYW5kIHVwZGF0ZXMgdGhlIGRldmljZXRyZWUgYmluZGluZ3MuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIGRlZGljYXRlZCBwaHlzaWNhbCBoYXJkd2FyZSAoTWljcm9jaGlwIExBTjg2NTAvMSBNQUMtUEhZIG9uIGFuIFNQSSBidXMpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDE0OjI0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTcxNWJhOGE1MzQ0YjczMTA1MjY1ZjYxMmM2MjBiNDFlYTllYjAxZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMTQ6MjQ6MDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyb2NoaXAsbGFuODY1MC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyb2NoaXAsbGFuODY1MC55YW1sXG5pbmRleCA3NjZmZjU4MTQ3YWUzLi4xYjU0M2NlMzA3NjMyIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyb2NoaXAsbGFuODY1MC55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JvY2hpcCxsYW44NjUwLnlhbWxcbkBAIC00MCw2ICYjNDM7NDAsMTEgQEAgcHJvcGVydGllczpcbiAgICAgICBFdmVudC5cbiAgICAgbWF4SXRlbXM6IDFcbiBcbiYjNDM7ICByZXNldC1ncGlvczpcbiYjNDM7ICAgIGRlc2NyaXB0aW9uOlxuJiM0MzsgICAgICBHUElPIGNvbm5lY3RlZCB0byB0aGUgYWN0aXZlLWxvdyBSRVNFVF9OIHBpbiBvZiB0aGUgTUFDLVBIWS5cbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuICAgc3BpLW1heC1mcmVxdWVuY3k6XG4gICAgIG1pbmltdW06IDE1MDAwMDAwXG4gICAgIG1heGltdW06IDI1MDAwMDAwXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXG5pbmRleCAyNmEyNzYxMzMyYTVhLi42MmFiYzU3N2JlOTBkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNcbkBAIC05LDYgJiM0Mzs5LDggQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2FfdGM2LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpby9jb25zdW1lci5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbiBcbiAjZGVmaW5lIERSVl9OQU1FXHRcdFx0XCYjMzQ7bGFuODY1MFwmIzM0O1xuIFxuQEAgLTQxLDYgJiM0Mzs0Myw3IEBAIHN0cnVjdCBsYW44NjV4X3ByaXYge1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbiBcdHN0cnVjdCBzcGlfZGV2aWNlICpzcGk7XG4gXHRzdHJ1Y3Qgb2FfdGM2ICp0YzY7XG4mIzQzO1x0c3RydWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbztcbiB9O1xuIFxuIHN0YXRpYyBpbnQgbGFuODY1eF9zZXRfaHdfbWFjYWRkcl9sb3dfYnl0ZXMoc3RydWN0IG9hX3RjNiAqdGM2LCBjb25zdCB1OCAqbWFjKVxuQEAgLTM0Niw2ICYjNDM7MzQ5LDI0IEBAIHN0YXRpYyBpbnQgbGFuODY1eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuIFx0c3BpX3NldF9kcnZkYXRhKHNwaSwgcHJpdik7XG4gXHRJTklUX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VtdWx0aWNhc3Rfd29yaywgbGFuODY1eF9tdWx0aWNhc3Rfd29ya19oYW5kbGVyKTtcbiBcbiYjNDM7XHRwcml2LVx1MDAzZXJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChcdTAwMjZzcGktXHUwMDNlZGV2LCBcJiMzNDtyZXNldFwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgR1BJT0RfT1VUX0xPVyk7XG4mIzQzO1x0aWYgKElTX0VSUihwcml2LVx1MDAzZXJlc2V0X2dwaW8pKSB7XG4mIzQzO1x0XHRyZXQgPSBkZXZfZXJyX3Byb2JlKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFBUUl9FUlIocHJpdi1cdTAwM2VyZXNldF9ncGlvKSxcbiYjNDM7XHRcdFx0XHQgICAgXCYjMzQ7RmFpbGVkIHRvIGdldCByZXNldCBHUElPXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGdvdG8gZnJlZV9uZXRkZXY7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VyZXNldF9ncGlvKSB7XG4mIzQzO1x0XHQvKiBBc3NlcnQgaGFyZHdhcmUgcmVzZXQgZm9yIDEwIHVzIChkYXRhc2hlZXQgc3BlY2lmaWVzIG1pbiA1IHVzKVxuJiM0MztcdFx0ICogYW5kIGFsbG93IDEgbXMgc2V0dGxlIHRpbWUgZm9yIGNyeXN0YWwgb3NjaWxsYXRvciBzdGFydHVwLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cdTAwM2VyZXNldF9ncGlvLCAxKTtcbiYjNDM7XHRcdGZzbGVlcCgxMCk7XG4mIzQzO1x0XHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cdTAwM2VyZXNldF9ncGlvLCAwKTtcbiYjNDM7XHRcdGZzbGVlcCgxMDAwKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cHJpdi1cdTAwM2V0YzYgPSBvYV90YzZfaW5pdChzcGksIG5ldGRldiwgTlVMTCk7XG4gXHRpZiAoIXByaXYtXHUwMDNldGM2KSB7XG4gXHRcdHJldCA9IC1FTk9ERVY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTQ6MjQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyByZXNldCBHUElPIHN1cHBvcnQgdG8gdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBNaWNyb2NoaXAgTEFOODY1eCBTUEkgTUFDLVBIWSBldGhlcm5ldCBkcml2ZXIgYW5kIHVwZGF0ZXMgdGhlIGRldmljZXRyZWUgYmluZGluZ3MuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIGRlZGljYXRlZCBwaHlzaWNhbCBoYXJkd2FyZSAoTWljcm9jaGlwIExBTjg2NTAvMSBNQUMtUEhZIG9uIGFuIFNQSSBidXMpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTcxNWJhOGE1MzQ0YjczMTA1MjY1ZjYxMmM2MjBiNDFlYTllYjAxZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDkgMTQ6MjQ6MDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JvY2hpcCxsYW44NjUwLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JvY2hpcCxsYW44NjUwLnlhbWwKaW5kZXggNzY2ZmY1ODE0N2FlMy4uMWI1NDNjZTMwNzYzMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyb2NoaXAsbGFuODY1MC55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWljcm9jaGlwLGxhbjg2NTAueWFtbApAQCAtNDAsNiAmIzQzOzQwLDExIEBAIHByb3BlcnRpZXM6CiAgICAgICBFdmVudC4KICAgICBtYXhJdGVtczogMQogCiYjNDM7ICByZXNldC1ncGlvczoKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgR1BJTyBjb25uZWN0ZWQgdG8gdGhlIGFjdGl2ZS1sb3cgUkVTRVRfTiBwaW4gb2YgdGhlIE1BQy1QSFkuCiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiAgIHNwaS1tYXgtZnJlcXVlbmN5OgogICAgIG1pbmltdW06IDE1MDAwMDAwCiAgICAgbWF4aW11bTogMjUwMDAwMDAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYwppbmRleCAyNmEyNzYxMzMyYTVhLi42MmFiYzU3N2JlOTBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jCkBAIC05LDYgJiM0Mzs5LDggQEAKICNpbmNsdWRlICZsdDtsaW51eC9rZXJuZWwuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9waHkuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9vYV90YzYuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZ3Bpby9jb25zdW1lci5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kZWxheS5oJmd0OwogCiAjZGVmaW5lIERSVl9OQU1FCQkJJiMzNDtsYW44NjUwJiMzNDsKIApAQCAtNDEsNiAmIzQzOzQzLDcgQEAgc3RydWN0IGxhbjg2NXhfcHJpdiB7CiAJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjsKIAlzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpOwogCXN0cnVjdCBvYV90YzYgKnRjNjsKJiM0MzsJc3RydWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbzsKIH07CiAKIHN0YXRpYyBpbnQgbGFuODY1eF9zZXRfaHdfbWFjYWRkcl9sb3dfYnl0ZXMoc3RydWN0IG9hX3RjNiAqdGM2LCBjb25zdCB1OCAqbWFjKQpAQCAtMzQ2LDYgJiM0MzszNDksMjQgQEAgc3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJc3BpX3NldF9kcnZkYXRhKHNwaSwgcHJpdik7CiAJSU5JVF9XT1JLKCZhbXA7cHJpdi0mZ3Q7bXVsdGljYXN0X3dvcmssIGxhbjg2NXhfbXVsdGljYXN0X3dvcmtfaGFuZGxlcik7CiAKJiM0MzsJcHJpdi0mZ3Q7cmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKCZhbXA7c3BpLSZndDtkZXYsICYjMzQ7cmVzZXQmIzM0OywKJiM0MzsJCQkJCQkgICBHUElPRF9PVVRfTE9XKTsKJiM0MzsJaWYgKElTX0VSUihwcml2LSZndDtyZXNldF9ncGlvKSkgewomIzQzOwkJcmV0ID0gZGV2X2Vycl9wcm9iZSgmYW1wO3NwaS0mZ3Q7ZGV2LCBQVFJfRVJSKHByaXYtJmd0O3Jlc2V0X2dwaW8pLAomIzQzOwkJCQkgICAgJiMzNDtGYWlsZWQgdG8gZ2V0IHJlc2V0IEdQSU9cbiYjMzQ7KTsKJiM0MzsJCWdvdG8gZnJlZV9uZXRkZXY7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKHByaXYtJmd0O3Jlc2V0X2dwaW8pIHsKJiM0MzsJCS8qIEFzc2VydCBoYXJkd2FyZSByZXNldCBmb3IgMTAgdXMgKGRhdGFzaGVldCBzcGVjaWZpZXMgbWluIDUgdXMpCiYjNDM7CQkgKiBhbmQgYWxsb3cgMSBtcyBzZXR0bGUgdGltZSBmb3IgY3J5c3RhbCBvc2NpbGxhdG9yIHN0YXJ0dXAuCiYjNDM7CQkgKi8KJiM0MzsJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChwcml2LSZndDtyZXNldF9ncGlvLCAxKTsKJiM0MzsJCWZzbGVlcCgxMCk7CiYjNDM7CQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi0mZ3Q7cmVzZXRfZ3BpbywgMCk7CiYjNDM7CQlmc2xlZXAoMTAwMCk7CiYjNDM7CX0KJiM0MzsKIAlwcml2LSZndDt0YzYgPSBvYV90YzZfaW5pdChzcGksIG5ldGRldiwgTlVMTCk7CiAJaWYgKCFwcml2LSZndDt0YzYpIHsKIAkJcmV0ID0gLUVOT0RFVjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIExBTjg2NVggRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCBmb2N1cyBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLiBJIHNlZSB0aGUgcGF0Y2ggdG91Y2hlcyB0d28ga2V5IGFyZWFzOiB0aGUgZGV2aWNlIHRyZWUgYmluZGluZyBkb2N1bWVudGF0aW9uIGZvciB0aGUgTWljcm9jaGlwIExBTjg2NTAsIHNwZWNpZmljYWxseSBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyb2NoaXAsbGFuODY1MC55YW1sYCwgYW5kIHRoZSBTUEkgZHJpdmVyIGltcGxlbWVudGF0aW9uLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jYCwgd2l0aCBjaGFuZ2VzIGluIGBsYW44NjV4X3Byb2JlYC4KCkZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2Ygd2hhdCB0aGlzIGRyaXZlciAqaXMqIGFuZCBob3cgaXQgaW50ZWdyYXRlcy4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIGBsYW44NjV4LmNgIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIEtjb25maWcgY29uZmlndXJhdGlvbiB0byBkZXRlcm1pbmUgaG93IGl0JiMzOTtzIGJ1aWx0LCBlbmFibGVkLCBhbmQgaWYgaXQmIzM5O3MgbGlrZWx5IHRvIGJlIGFjY2Vzc2libGUgdGhyb3VnaCBzdGFuZGFyZCBmdXp6aW5nIHNldHVwcyBsaWtlIHN5emthbGxlciBpbiBhIFFFTVUgZW52aXJvbm1lbnQuIFRoaXMgaXMgY3JpdGljYWwgZm9yIGFzc2Vzc2luZyB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiBhbnkgdnVsbmVyYWJpbGl0aWVzLgoKVGhlbiwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHV0aWxpemUgZWl0aGVyIGdyZXBwZXIgb3Igc3RyYWlnaHQtdXAgZmlsZSByZWFkaW5nIG9uIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvYCBkaXJlY3RvcnkgdG8gZ2V0IGEgcmFwaWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgbW9kdWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xhbjg2NXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnPTQ1PWNvbmZpZyBMQU43NDNYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZzo2MDpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNjEtc291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGU9MTA9bGFuNzQzeC1vYmpzIDo9IGxhbjc0M3hfbWFpbi5vIGxhbjc0M3hfZXRodG9vbC5vIGxhbjc0M3hfcHRwLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZS0xMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfTEFOODY1WCkgJiM0Mzs9IGxhbjg2NXgvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGUtMTMtb2JqLSQoQ09ORklHX0xBTjk2NlhfU1dJVENIKSAmIzQzOz0gbGFuOTY2eC9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnPTg9Y29uZmlnIExBTjg2NVhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnLTE2LVx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWc6MTc6XHQgIGNhbGxlZCBsYW44NjV4LlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZy0xOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTEFOODY1WCkgJiM0Mzs9IGxhbjg2NXgub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MTpzdHJ1Y3QgbGFuODY1eF9wcml2IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00Mi1cdHN0cnVjdCB3b3JrX3N0cnVjdCBtdWx0aWNhc3Rfd29yaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDk6c3RhdGljIGludCBsYW44NjV4X3NldF9od19tYWNhZGRyX2xvd19ieXRlcyhzdHJ1Y3Qgb2FfdGM2ICp0YzYsIGNvbnN0IHU4ICptYWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNTAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy01Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo1ODpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X2h3X21hY2FkZHIoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiwgY29uc3QgdTggKm1hYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy01OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTY0LVx0LyogQ29uZmlndXJlIE1BQyBhZGRyZXNzIGxvdyBieXRlcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjY1Olx0cmV0ID0gbGFuODY1eF9zZXRfaHdfbWFjYWRkcl9sb3dfYnl0ZXMocHJpdi1cdTAwM2V0YzYsIG1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNjYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy03OC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjc5Olx0cmVzdG9yZV9yZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyX2xvd19ieXRlcyhwcml2LVx1MDAzZXRjNixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy04MC1cdFx0XHRcdFx0XHQgICAgICAgcHJpdi1cdTAwM2VuZXRkZXYtXHUwMDNlZGV2X2FkZHIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy04Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo4NzpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGxhbjg2NXhfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtODgtXHQuZ2V0X2xpbmtfa3NldHRpbmdzID0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy05MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo5MjpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHZvaWQgKmFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtOTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjk0Olx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtOTUtXHRzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJlc3MgPSBhZGRyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTA1Olx0cmV0ID0gbGFuODY1eF9zZXRfaHdfbWFjYWRkcihwcml2LCBhZGRyZXNzLVx1MDAzZXNhX2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEwNi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jPTExND1zdGF0aWMgdTMyIGdldF9hZGRyZXNzX2JpdCh1OCBhZGRyW0VUSF9BTEVOXSwgdTMyIGJpdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjExOTpzdGF0aWMgdTMyIGxhbjg2NXhfaGFzaCh1OCBhZGRyW0VUSF9BTEVOXSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTM1OnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfc3BlY2lmaWNfbXVsdGljYXN0X2FkZHIoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMzYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xNDItXHRuZXRkZXZfZm9yX2VhY2hfbWNfYWRkcihoYSwgcHJpdi1cdTAwM2VuZXRkZXYpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxNDM6XHRcdHUzMiBiaXRfbnVtID0gbGFuODY1eF9oYXNoKGhhLVx1MDAzZWFkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE0NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjE2NzpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X2FsbF9tdWx0aWNhc3RfYWRkcihzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE2OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxODk6c3RhdGljIGludCBsYW44NjV4X2NsZWFyX2FsbF9tdWx0aWNhc3RfYWRkcihzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE5MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIwNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMDg6c3RhdGljIHZvaWQgbGFuODY1eF9tdWx0aWNhc3Rfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMDkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIxMDpcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGxhbjg2NXhfcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMTEtXHRcdFx0XHRcdFx0IG11bHRpY2FzdF93b3JrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjIxLVx0XHQvKiBFbmFibGluZyBhbGwgbXVsdGljYXN0IG1vZGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMjI6XHRcdGlmIChsYW44NjV4X3NldF9hbGxfbXVsdGljYXN0X2FkZHIocHJpdikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjIzLVx0XHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjI5LVx0XHQvKiBFbmFibGluZyBzcGVjaWZpYyBtdWx0aWNhc3QgbW9kZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIzMDpcdFx0aWYgKGxhbjg2NXhfc2V0X3NwZWNpZmljX211bHRpY2FzdF9hZGRyKHByaXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIzMS1cdFx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIzNy1cdFx0LyogRW5hYmxpbmcgbG9jYWwgbWFjIGFkZHJlc3Mgb25seSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIzODpcdFx0aWYgKGxhbjg2NXhfY2xlYXJfYWxsX211bHRpY2FzdF9hZGRyKHByaXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIzOS1cdFx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNDc6c3RhdGljIHZvaWQgbGFuODY1eF9zZXRfbXVsdGljYXN0X2xpc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNDgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI0OTpcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI1NDpzdGF0aWMgbmV0ZGV2X3R4X3QgbGFuODY1eF9zZW5kX3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1NS1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjU3Olx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjU4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjYyOnN0YXRpYyBpbnQgbGFuODY1eF9od19kaXNhYmxlKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjYzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI3NzpzdGF0aWMgaW50IGxhbjg2NXhfbmV0X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjc4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNzk6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yODAtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yODMtXHRwaHlfc3RvcChuZXRkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyODQ6XHRyZXQgPSBsYW44NjV4X2h3X2Rpc2FibGUocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjg1LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjkzOnN0YXRpYyBpbnQgbGFuODY1eF9od19lbmFibGUoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzA4OnN0YXRpYyBpbnQgbGFuODY1eF9uZXRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMwOS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzEwOlx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzExLVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzEzOlx0cmV0ID0gbGFuODY1eF9od19lbmFibGUocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzE0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbGFuODY1eF9uZXRkZXZfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyNzpcdC5uZG9fb3Blblx0XHQ9IGxhbjg2NXhfbmV0X29wZW4sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI4Olx0Lm5kb19zdG9wXHRcdD0gbGFuODY1eF9uZXRfY2xvc2UsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI5Olx0Lm5kb19zdGFydF94bWl0XHRcdD0gbGFuODY1eF9zZW5kX3BhY2tldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMzA6XHQubmRvX3NldF9yeF9tb2RlXHQ9IGxhbjg2NXhfc2V0X211bHRpY2FzdF9saXN0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMzMTpcdC5uZG9fc2V0X21hY19hZGRyZXNzXHQ9IGxhbjg2NXhfc2V0X21hY19hZGRyZXNzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMzMi1cdC5uZG9fdmFsaWRhdGVfYWRkclx0PSBldGhfdmFsaWRhdGVfYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMzNjpzdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMzcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMzOC1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzM5Olx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNDAtXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozNDI6XHRuZXRkZXYgPSBhbGxvY19ldGhlcmRldihzaXplb2Yoc3RydWN0IGxhbjg2NXhfcHJpdikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0My1cdGlmICghbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNDktXHRzcGlfc2V0X2RydmRhdGEoc3BpLCBwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozNTA6XHRJTklUX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VtdWx0aWNhc3Rfd29yaywgbGFuODY1eF9tdWx0aWNhc3Rfd29ya19oYW5kbGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MTM6XHRyZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyKHByaXYsIG5ldGRldi1cdTAwM2VkZXZfYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDE0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MjAtXHRuZXRkZXYtXHUwMDNlaXJxID0gc3BpLVx1MDAzZWlycTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MjE6XHRuZXRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNmxhbjg2NXhfbmV0ZGV2X29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MjI6XHRuZXRkZXYtXHUwMDNlZXRodG9vbF9vcHMgPSBcdTAwMjZsYW44NjV4X2V0aHRvb2xfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQyMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQzOTpzdGF0aWMgdm9pZCBsYW44NjV4X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQxOlx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ0OTpzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgbGFuODY1eF9pZHNbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NTAtXHR7IC5uYW1lID0gXCYjMzQ7bGFuODY1MFwmIzM0OyB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NTMtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NTQ6TU9EVUxFX0RFVklDRV9UQUJMRShzcGksIGxhbjg2NXhfaWRzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDU2OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGxhbjg2NXhfZHRfaWRzW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDU3LVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxsYW44NjUwXCYjMzQ7IH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ2MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ2MTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBsYW44NjV4X2R0X2lkcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ2MzpzdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgbGFuODY1eF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDY0LVx0LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NjUtXHRcdC5uYW1lID0gRFJWX05BTUUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDY2Olx0XHQub2ZfbWF0Y2hfdGFibGUgPSBsYW44NjV4X2R0X2lkcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NjctXHQgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0Njg6XHQucHJvYmUgPSBsYW44NjV4X3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ2OTpcdC5yZW1vdmUgPSBsYW44NjV4X3JlbW92ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NzA6XHQuaWRfdGFibGUgPSBsYW44NjV4X2lkcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NzEtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NzI6bW9kdWxlX3NwaV9kcml2ZXIobGFuODY1eF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ3My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxNDoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDE2NQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIGl0OgoKKipBbmFseXppbmcgdGhlIExBTjg2NXggRHJpdmVyIFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgTEFOODY1eCBFdGhlcm5ldCBkcml2ZXIgaXMgYmVpbmcgaW5pdGlhbGl6ZWQuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBmdWxsIGBwcm9iZWAgZnVuY3Rpb24gd2l0aGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCB3aGVyZSB0aGUgaGFyZHdhcmUgaXMgaWRlbnRpZmllZCwgcmVzb3VyY2VzIGFyZSBhbGxvY2F0ZWQsIGFuZCB0aGUgZGV2aWNlIGlzIGJyb3VnaHQgb25saW5lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBoZXJlOiBob3cgdGhlIFBIWSBpcyBjb25maWd1cmVkLCBob3cgaW50ZXJydXB0cyBhcmUgaGFuZGxlZCwgYW5kIGhvdyB0aGUgbmV0d29yayBpbnRlcmZhY2UgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBrZXJuZWwuIEkmIzM5O20gbG9va2luZyBmb3IgYW55IGluaXRpYWxpemF0aW9uIGdvdGNoYXMuCgpUaGVuLCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMsIEkmIzM5O2xsIG5lZWQgdG8gY3Jvc3MtcmVmZXJlbmNlIHRoYXQgd2l0aCB0aGUgcmVsZXZhbnQgYEtjb25maWdgIGZpbGUuIFRoZSBgS2NvbmZpZ2Agd2lsbCB0ZWxsIG1lIHdoaWNoIGNvbmZpZ3VyYXRpb25zIGVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZHJpdmVyLCB3aGF0IHNldHRpbmdzIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBwcmVyZXF1aXNpdGVzLCBsaWtlIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzIG9yIG90aGVyIGRyaXZlcnMgdGhhdCBuZWVkIHRvIGJlIGluIHBsYWNlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGRyaXZlciBjYW4gYmUgYnVpbHQgYW5kIGNvbmZpZ3VyZWQgaW4gZGlmZmVyZW50IHNjZW5hcmlvcy4gSSB3YW50IHRvIGJ1aWxkIGEgaG9saXN0aWMgcGljdHVyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCB0aGUgcmVzb3VyY2VzIGFzc2lnbmVkIHRvIHRoZSBkcml2ZXIsIGFuZCBob3cgaXQgaXMgZXhwZWN0ZWQgdG8gZnVuY3Rpb24gYXMgYSB3aG9sZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxNDoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA5MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzM1Olx0XG4gMzM2Olx0c3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4gMzM3Olx0e1xuIDMzODpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbiAzMzk6XHRcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXY7XG4gMzQwOlx0XHRpbnQgcmV0O1xuIDM0MTpcdFxuIDM0MjpcdFx0bmV0ZGV2ID0gYWxsb2NfZXRoZXJkZXYoc2l6ZW9mKHN0cnVjdCBsYW44NjV4X3ByaXYpKTtcbiAzNDM6XHRcdGlmICghbmV0ZGV2KVxuIDM0NDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAzNDU6XHRcbiAzNDY6XHRcdHByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuIDM0NzpcdFx0cHJpdi1cdTAwM2VuZXRkZXYgPSBuZXRkZXY7XG4gMzQ4Olx0XHRwcml2LVx1MDAzZXNwaSA9IHNwaTtcbiAzNDk6XHRcdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xuIDM1MDpcdFx0SU5JVF9XT1JLKFx1MDAyNnByaXYtXHUwMDNlbXVsdGljYXN0X3dvcmssIGxhbjg2NXhfbXVsdGljYXN0X3dvcmtfaGFuZGxlcik7XG4gMzUxOlx0XG4gMzUyOlx0XHRwcml2LVx1MDAzZXJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChcdTAwMjZzcGktXHUwMDNlZGV2LCBcJiMzNDtyZXNldFwmIzM0OyxcbiAzNTM6XHRcdFx0XHRcdFx0XHQgICBHUElPRF9PVVRfTE9XKTtcbiAzNTQ6XHRcdGlmIChJU19FUlIocHJpdi1cdTAwM2VyZXNldF9ncGlvKSkge1xuIDM1NTpcdFx0XHRyZXQgPSBkZXZfZXJyX3Byb2JlKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFBUUl9FUlIocHJpdi1cdTAwM2VyZXNldF9ncGlvKSxcbiAzNTY6XHRcdFx0XHRcdCAgICBcJiMzNDtGYWlsZWQgdG8gZ2V0IHJlc2V0IEdQSU9cXG5cJiMzNDspO1xuIDM1NzpcdFx0XHRnb3RvIGZyZWVfbmV0ZGV2O1xuIDM1ODpcdFx0fVxuIDM1OTpcdFxuIDM2MDpcdFx0aWYgKHByaXYtXHUwMDNlcmVzZXRfZ3Bpbykge1xuIDM2MTpcdFx0XHQvKiBBc3NlcnQgaGFyZHdhcmUgcmVzZXQgZm9yIDEwIHVzIChkYXRhc2hlZXQgc3BlY2lmaWVzIG1pbiA1IHVzKVxuIDM2MjpcdFx0XHQgKiBhbmQgYWxsb3cgMSBtcyBzZXR0bGUgdGltZSBmb3IgY3J5c3RhbCBvc2NpbGxhdG9yIHN0YXJ0dXAuXG4gMzYzOlx0XHRcdCAqL1xuIDM2NDpcdFx0XHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cdTAwM2VyZXNldF9ncGlvLCAxKTtcbiAzNjU6XHRcdFx0ZnNsZWVwKDEwKTtcbiAzNjY6XHRcdFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXHUwMDNlcmVzZXRfZ3BpbywgMCk7XG4gMzY3Olx0XHRcdGZzbGVlcCgxMDAwKTtcbiAzNjg6XHRcdH1cbiAzNjk6XHRcbiAzNzA6XHRcdHByaXYtXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIE5VTEwpO1xuIDM3MTpcdFx0aWYgKCFwcml2LVx1MDAzZXRjNikge1xuIDM3MjpcdFx0XHRyZXQgPSAtRU5PREVWO1xuIDM3MzpcdFx0XHRnb3RvIGZyZWVfbmV0ZGV2O1xuIDM3NDpcdFx0fVxuIDM3NTpcdFxuIDM3NjpcdFx0LyogTEFOODY1eCBSZXYuQjAvQjEgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZyb20gQU4xNzYwXG4gMzc3Olx0XHQgKiBBcyBwZXIgdGhlIENvbmZpZ3VyYXRpb24gQXBwbGljYXRpb24gTm90ZSBBTjE3NjAgcHVibGlzaGVkIGluIHRoZVxuIDM3ODpcdFx0ICogbGluaywgaHR0cHM6Ly93d3cubWljcm9jaGlwLmNvbS9lbi11cy9hcHBsaWNhdGlvbi1ub3Rlcy9hbjE3NjBcbiAzNzk6XHRcdCAqIFJldmlzaW9uIEYgKERTNjAwMDE3NjBHIC0gSnVuZSAyMDI0KSwgY29uZmlndXJlIHRoZSBNQUMgdG8gc2V0IHRpbWVcbiAzODA6XHRcdCAqIHN0YW1waW5nIGF0IHRoZSBlbmQgb2YgdGhlIFN0YXJ0IG9mIEZyYW1lIERlbGltaXRlciAoU0ZEKSBhbmQgc2V0IHRoZVxuIDM4MTpcdFx0ICogVGltZXIgSW5jcmVtZW50IHJlZyB0byA0MCBucyB0byBiZSB1c2VkIGFzIGEgMjUgTUh6IGludGVybmFsIGNsb2NrLlxuIDM4MjpcdFx0ICovXG4gMzgzOlx0XHRyZXQgPSBvYV90YzZfd3JpdGVfcmVnaXN0ZXIocHJpdi1cdTAwM2V0YzYsIExBTjg2NVhfUkVHX01BQ19UU1VfVElNRVJfSU5DUixcbiAzODQ6XHRcdFx0XHRcdCAgICBNQUNfVFNVX1RJTUVSX0lOQ1JfQ09VTlRfTkFOT1NFQ09ORFMpO1xuIDM4NTpcdFx0aWYgKHJldCkge1xuIDM4NjpcdFx0XHRkZXZfZXJyKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byBjb25maWcgVFNVIFRpbWVyIEluY3IgcmVnOiAlZFxcblwmIzM0OyxcbiAzODc6XHRcdFx0XHRyZXQpO1xuIDM4ODpcdFx0XHRnb3RvIG9hX3RjNl9leGl0O1xuIDM4OTpcdFx0fVxuIDM5MDpcdFxuIDM5MTpcdFx0LyogQXMgcGVyIHRoZSBwb2ludCBzMyBpbiB0aGUgYmVsb3cgZXJyYXRhLCBTUEkgcmVjZWl2ZSBFdGhlcm5ldCBmcmFtZVxuIDM5MjpcdFx0ICogdHJhbnNmZXIgbWF5IGhhbHQgd2hlbiBzdGFydGluZyB0aGUgbmV4dCBmcmFtZSBpbiB0aGUgc2FtZSBkYXRhIGJsb2NrXG4gMzkzOlx0XHQgKiAoY2h1bmspIGFzIHRoZSBlbmQgb2YgYSBwcmV2aW91cyBmcmFtZS4gVGhlIFJGQSBmaWVsZCBzaG91bGQgYmVcbiAzOTQ6XHRcdCAqIGNvbmZpZ3VyZWQgdG8gMDFiIG9yIDEwYiBmb3IgcHJvcGVyIG9wZXJhdGlvbi4gSW4gdGhlc2UgbW9kZXMsIG9ubHlcbiAzOTU6XHRcdCAqIG9uZSByZWNlaXZlIEV0aGVybmV0IGZyYW1lIHdpbGwgYmUgcGxhY2VkIGluIGEgc2luZ2xlIGRhdGEgYmxvY2suXG4gMzk2Olx0XHQgKiBXaGVuIHRoZSBSRkEgZmllbGQgaXMgd3JpdHRlbiB0byAwMWIsIHJlY2VpdmVkIGZyYW1lcyB3aWxsIGJlIGZvcmNlZFxuIDM5NzpcdFx0ICogdG8gb25seSBzdGFydCBpbiB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgZGF0YSBibG9jayBwYXlsb2FkIChTV089MCkuIEFzXG4gMzk4Olx0XHQgKiByZWNvbW1lbmRlZCwgZW5hYmxlIHplcm8gYWxpZ24gcmVjZWl2ZSBmcmFtZSBmZWF0dXJlIGZvciBwcm9wZXJcbiAzOTk6XHRcdCAqIG9wZXJhdGlvbi5cbiA0MDA6XHRcdCAqXG4gNDAxOlx0XHQgKiBodHRwczovL3d3MS5taWNyb2NoaXAuY29tL2Rvd25sb2Fkcy9hZW1Eb2N1bWVudHMvZG9jdW1lbnRzL0FJUy9Qcm9kdWN0RG9jdW1lbnRzL0VycmF0YS9MQU44NjUwLTEtRXJyYXRhLTgwMDAxMDc1LnBkZlxuIDQwMjpcdFx0ICovXG4gNDAzOlx0XHRyZXQgPSBvYV90YzZfemVyb19hbGlnbl9yZWNlaXZlX2ZyYW1lX2VuYWJsZShwcml2LVx1MDAzZXRjNik7XG4gNDA0Olx0XHRpZiAocmV0KSB7XG4gNDA1Olx0XHRcdGRldl9lcnIoXHUwMDI2c3BpLVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIHNldCBaQVJGRTogJWRcXG5cJiMzNDssIHJldCk7XG4gNDA2Olx0XHRcdGdvdG8gb2FfdGM2X2V4aXQ7XG4gNDA3Olx0XHR9XG4gNDA4Olx0XG4gNDA5Olx0XHQvKiBHZXQgdGhlIE1BQyBhZGRyZXNzIGZyb20gdGhlIFNQSSBkZXZpY2UgdHJlZSBub2RlICovXG4gNDEwOlx0XHRpZiAoZGV2aWNlX2dldF9ldGhkZXZfYWRkcmVzcyhcdTAwMjZzcGktXHUwMDNlZGV2LCBuZXRkZXYpKVxuIDQxMTpcdFx0XHRldGhfaHdfYWRkcl9yYW5kb20obmV0ZGV2KTtcbiA0MTI6XHRcbiA0MTM6XHRcdHJldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHIocHJpdiwgbmV0ZGV2LVx1MDAzZWRldl9hZGRyKTtcbiA0MTQ6XHRcdGlmIChyZXQpIHtcbiA0MTU6XHRcdFx0ZGV2X2VycihcdTAwMjZzcGktXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gY29uZmlndXJlIE1BQzogJWRcXG5cJiMzNDssIHJldCk7XG4gNDE2Olx0XHRcdGdvdG8gb2FfdGM2X2V4aXQ7XG4gNDE3Olx0XHR9XG4gNDE4Olx0XG4gNDE5Olx0XHRuZXRkZXYtXHUwMDNlaWZfcG9ydCA9IElGX1BPUlRfMTBCQVNFVDtcbiA0MjA6XHRcdG5ldGRldi1cdTAwM2VpcnEgPSBzcGktXHUwMDNlaXJxO1xuIDQyMTpcdFx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZsYW44NjV4X25ldGRldl9vcHM7XG4gNDIyOlx0XHRuZXRkZXYtXHUwMDNlZXRodG9vbF9vcHMgPSBcdTAwMjZsYW44NjV4X2V0aHRvb2xfb3BzO1xuIDQyMzpcdFxuIDQyNDpcdFx0cmV0ID0gcmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIxNzAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyBpdDoKCioqTEFOODY1WCBLY29uZmlnIERlZXAgRGl2ZSoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBMQU44NjVYJiMzOTtzIEtjb25maWcuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgdGhvcm91Z2ggY2hlY2sgdG8gc2VlIGV4YWN0bHkgd2hhdCBmZWF0dXJlcyBhcmUgZXhwb3NlZCBhbmQgaG93IHRoZXkmIzM5O3JlIGNvbmZpZ3VyZWQuIEkgd2FudCB0byBzZWUgaG93IHRoZSByZWxldmFudCBkcml2ZXIgaXMgcHJlc2VudGVkLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIG5ldHdvcmsgc3RhY2sgYW5kIGFueSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIHRvIGNvbnRyb2wgdGhpbmdzIGxpa2UgUEhZIGFkZHJlc3NpbmcsIGludGVycnVwdCBsaW5lcywgY2xvY2sgc291cmNlcywgYW5kIGFueSBwb3RlbnRpYWwgcG93ZXIgbWFuYWdlbWVudCBzZXR0aW5ncy4KCk15IGluaXRpYWwgc2NhbiB3aWxsIGZvY3VzIG9uIHRyYWNpbmcgdGhlIHZhcmlvdXMgYGRlcGVuZHMgb25gLCBgc2VsZWN0YCwgYW5kIGBkZWZhdWx0YCBzdGF0ZW1lbnRzLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IEkga25vdyBob3cgdGhpcyBtb2R1bGUgZml0cyBpbnRvIHRoZSBncmVhdGVyIHN5c3RlbSBjb25maWd1cmF0aW9uIGFuZCB3aGF0IGl0IHJlbGllcyBvbi4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciB0aGVyZSBhcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyBrZXJuZWwgdmVyc2lvbnMgb3IgZmVhdHVyZXMg4oCTIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBjb21wYXRpYmlsaXR5IGlzc3VlcyBkb3duIHRoZSBsaW5lLiBJJiMzOTtsbCBtYWtlIG5vdGVzIGFib3V0IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIGFuZCBhbnkgYXNzb2NpYXRlZCBNRElPIGJ1cyBzdXBwb3J0IGFuZCB0aGUgZ2VuZXJpYyBFdGhlcm5ldCBQSFkgZnJhbWV3b3JrLiBBIHNvbGlkIEtjb25maWcgcmV2aWV3IHdpbGwgaGVscCBidWlsZCBhIHN0cm9uZyBmb3VuZGF0aW9uIGZvciBhbnkgZnV0dXJlIGludGVncmF0aW9uIG9yIHRyb3VibGVzaG9vdGluZyBlZmZvcnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIE1pY3JvY2hpcCBMQU44NjV4IERyaXZlciBTdXBwb3J0XG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGlmIE5FVF9WRU5ET1JfTUlDUk9DSElQXG4gICA3Olx0XG4gICA4Olx0Y29uZmlnIExBTjg2NVhcbiAgIDk6XHRcdHRyaXN0YXRlIFwmIzM0O0xBTjg2NXggc3VwcG9ydFwmIzM0O1xuICAxMDpcdFx0ZGVwZW5kcyBvbiBTUElcbiAgMTE6XHRcdHNlbGVjdCBPQV9UQzZcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgU3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBMQU44NjUwLzEgUmV2LkIwL0IxIE1BQ1BIWSBFdGhlcm5ldCBjaGlwLiBJdFxuICAxNDpcdFx0ICB1c2VzIE9QRU4gQWxsaWFuY2UgMTBCQVNFLVQxeCBTZXJpYWwgSW50ZXJmYWNlIHNwZWNpZmljYXRpb24uXG4gIDE1Olx0XG4gIDE2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbCBiZVxuICAxNzpcdFx0ICBjYWxsZWQgbGFuODY1eC5cbiAgMTg6XHRcbiAgMTk6XHRlbmRpZiAjIE5FVF9WRU5ET1JfTUlDUk9DSElQXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI3MjMKCQkJCQkJCW91dHB1dDogMTE2CgkJCQkJCQl0aG91Z2h0czogODE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkxBTjg2NVggRHJpdmVyIEFuYWx5c2lzIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBMQU44NjVYYCBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhlIE1pY3JvY2hpcCBMQU44NjUwLzEgUmV2LkIwL0IxIE1BQ1BIWSBFdGhlcm5ldCBjaGlwIGNvbm5lY3RlZCB2aWEgU1BJLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBoYXJkd2FyZSBpcyBldmVuIHJlbW90ZWx5IGFjY2Vzc2libGUgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSAvIHN5emthbGxlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGd1aWRlbGluZXMgYXJlIHByZXR0eSBjbGVhcjogZnV6emluZyBpcyBvbmx5IGFwcGxpY2FibGUgdG8gY29kZSB0aGF0ICpjYW4qIGFjdHVhbGx5IGV4ZWN1dGUgaW4gdGhlc2UgZW52aXJvbm1lbnRzLiBUaGF0IG1lYW5zIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMsIHRoaW5ncyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXAgYXJlIGZhaXIgZ2FtZSwgYnV0IG5vdCB0aGlzLgoKVGhlIGluaXRpYWwgaHVuY2ggaXMgdGhhdCwgbm8sIHRoaXMgaXMgbm90IGdvaW5nIHRvIHdvcmsuIExldOKAmXMgY29uZmlybS4gVGhlIGRyaXZlciBpcyBhbiBTUEkgY2xpZW50LCBkZW1hbmRpbmcgdGhlIGBtaWNyb2NoaXAsbGFuODY1MGAgaGFyZHdhcmUsIGNvbm5lY3RlZCB0aHJvdWdoIFNQSSAoYW5kIE9BX1RDNiBjb21tdW5pY2F0aW9uKS4gVGhlcmUmIzM5O3Mgbm8gZW11bGF0aW9uIG9mIFNQSSBkZXZpY2VzIGZvciB0aGUgYGxhbjg2NTBgIGluIHRoZSBzdGFuZGFyZCBRRU1VL3N5emthbGxlciBhbWQ2NCBzZXR1cCwgZnVsbCBzdG9wLiBFdmVuICppZiogdGhlIGRldmljZSB3ZXJlIHRvIHNvbWVob3cgZ2V0IHByb2JlZCwgdGhlIGRyaXZlciBnb2VzIG9uIHRvIGluaXRpYWxpemUgdGhlIE9BX1RDNiBpbnRlcmZhY2UgdXNpbmcgYG9hX3RjNl9pbml0YCwgYG9hX3RjNl93cml0ZV9yZWdpc3RlcmAsIGV0Yy4gd2hpY2ggcmVxdWlyZSBhIHBoeXNpY2FsIFNQSSBidXMuCgpOb3csIGxldCYjMzk7cyBicmVhayBkb3duIHRoZSBwYXRjaCBpdHNlbGYuIFRoZSBwYXRjaCBwcmltYXJpbHkgaW50cm9kdWNlcyBHUElPIGhhbmRsaW5nIGZvciBhIHJlc2V0IHBpbiB3aXRoaW4gdGhlIGBsYW44NjV4X3Byb2JlYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCB0cmllcyB0byBnZXQgYW4gb3B0aW9uYWwgcmVzZXQgR1BJTywgYXNzZXJ0cyB0aGUgcmVzZXQgZm9yIGEgc2hvcnQgZHVyYXRpb24sIGFuZCB0aGVuIGRlLWFzc2VydHMgaXQuIFRoaXMgcmVzZXQgc2VxdWVuY2UsIHdoaWxlIGltcG9ydGFudCBmb3IgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mIHRoZSBoYXJkd2FyZSwgcmVsaWVzIG9uIGEgcGh5c2ljYWwgR1BJTyBwaW4gY29ubmVjdGVkIHRvIHRoZSBMQU44NjUwIGNoaXAsIG5vdCBzb21ldGhpbmcgYWJzdHJhY3RlZCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4gSXQgYWxzbyB1cGRhdGVzIHRoZSBkZXZpY2UgdHJlZSBiaW5kaW5nIFlBTUwgZG9jdW1lbnRhdGlvbiB3aGljaCBpcyBub3QgcmVsZXZhbnQgdG8gdGhlIGZ1enppbmcgb2YgdGhlIGRldmljZSBpdHNlbGYuCgpUaGUgZHJpdmVyIGlzIGNsZWFybHkgZGVzaWduZWQgZm9yIGEgZGVkaWNhdGVkIGhhcmR3YXJlIFNQSSBuZXR3b3JrIGNvbnRyb2xsZXIgYW5kIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgZGV2aWNlIHRyZWUgY29uZmlndXJlZCB0byB1c2Ugb25lLiBUaGF0IGhhcmR3YXJlIGlzbiYjMzk7dCBzaW11bGF0ZWQgaW4gb3VyIHN0YW5kYXJkIFFFTVUvc3l6a2FsbGVyIHNldHVwLgoKVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCwgZXNwZWNpYWxseSB0aGUgYWRkZWQgcmVzZXQgbG9naWMgaW4gYGxhbjg2NXhfcHJvYmVgLCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuIFdlIGNhbiYjMzk7dCByZWFjaCBpdC4gR2l2ZW4gdGhlIGxhY2sgb2YgaGFyZHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHBhcnRpY3VsYXIgU1BJIGRldmljZSwgYW5kIHRoZSBzcGVjaWZpYyByZXF1aXJlbWVudCB0byB0b3VjaCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcGlucywgdGhlcmUgaXMgbm8gd2F5IHdlIGNhbiBmdXp6IHRoaXMuCgpTbywgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIG1ldGFkYXRhOgotIFdvcnRoRnV6emluZzogZmFsc2UKLSBGb2N1c1N5bWJvbHM6IFtdCi0gRW5hYmxlQ29uZmlnczogW10KLSBSZWFzb25pbmc6IENvbmNpc2UgZXhwbGFuYXRpb24gc3RhdGluZyB0aGF0IExBTjg2NVggaXMgYW4gU1BJIE1BQy1QSFkgRXRoZXJuZXQgZHJpdmVyIHJlcXVpcmluZyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgcHJlc2VudC9lbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIC8gc3l6a2FsbGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBwcm9iZSBsb2dpYyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuClRoaXMgaXMgYWxsIGFzIGV4cGVjdGVkLiBMZXQmIzM5O3MgZm9ybWF0IHRoZSBjYWxsIHRvIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyByZXNldCBHUElPIHN1cHBvcnQgdG8gdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBNaWNyb2NoaXAgTEFOODY1eCBTUEkgTUFDLVBIWSBldGhlcm5ldCBkcml2ZXIgYW5kIHVwZGF0ZXMgdGhlIGRldmljZXRyZWUgYmluZGluZ3MuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIGRlZGljYXRlZCBwaHlzaWNhbCBoYXJkd2FyZSAoTWljcm9jaGlwIExBTjg2NTAvMSBNQUMtUEhZIG9uIGFuIFNQSSBidXMpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHJlc2V0IEdQSU8gc3VwcG9ydCB0byB0aGUgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIE1pY3JvY2hpcCBMQU44NjV4IFNQSSBNQUMtUEhZIGV0aGVybmV0IGRyaXZlciBhbmQgdXBkYXRlcyB0aGUgZGV2aWNldHJlZSBiaW5kaW5ncy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChNaWNyb2NoaXAgTEFOODY1MC8xIE1BQy1QSFkgb24gYW4gU1BJIGJ1cykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDE0OjI0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxNDoyNDowMy42MDMzNjYyNThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA4Njc3ODI3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgcmVzZXQgR1BJTyBzdXBwb3J0IHRvIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgTWljcm9jaGlwIExBTjg2NXggU1BJIE1BQy1QSFkgZXRoZXJuZXQgZHJpdmVyIGFuZCB1cGRhdGVzIHRoZSBkZXZpY2V0cmVlIGJpbmRpbmdzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBkZWRpY2F0ZWQgcGh5c2ljYWwgaGFyZHdhcmUgKE1pY3JvY2hpcCBMQU44NjUwLzEgTUFDLVBIWSBvbiBhbiBTUEkgYnVzKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTQ6MjQ6MDMuNjAzMzcyMTA4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzE5MzMxNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNzE1YmE4YTUzNDRiNzMxMDUyNjVmNjEyYzYyMGI0MWVhOWViMDFmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDkgMTQ6MjQ6MDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyb2NoaXAsbGFuODY1MC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyb2NoaXAsbGFuODY1MC55YW1sXFxuaW5kZXggNzY2ZmY1ODE0N2FlMy4uMWI1NDNjZTMwNzYzMiAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JvY2hpcCxsYW44NjUwLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JvY2hpcCxsYW44NjUwLnlhbWxcXG5AQCAtNDAsNiArNDAsMTEgQEAgcHJvcGVydGllczpcXG4gICAgICAgRXZlbnQuXFxuICAgICBtYXhJdGVtczogMVxcbiBcXG4rICByZXNldC1ncGlvczpcXG4rICAgIGRlc2NyaXB0aW9uOlxcbisgICAgICBHUElPIGNvbm5lY3RlZCB0byB0aGUgYWN0aXZlLWxvdyBSRVNFVF9OIHBpbiBvZiB0aGUgTUFDLVBIWS5cXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbiAgIHNwaS1tYXgtZnJlcXVlbmN5OlxcbiAgICAgbWluaW11bTogMTUwMDAwMDBcXG4gICAgIG1heGltdW06IDI1MDAwMDAwXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguY1xcbmluZGV4IDI2YTI3NjEzMzJhNWEuLjYyYWJjNTc3YmU5MGQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXFxuQEAgLTksNiArOSw4IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2FfdGM2LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9ncGlvL2NvbnN1bWVyLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWxheS5oXFx1MDAzZVxcbiBcXG4gI2RlZmluZSBEUlZfTkFNRVxcdFxcdFxcdFxcXCJsYW44NjUwXFxcIlxcbiBcXG5AQCAtNDEsNiArNDMsNyBAQCBzdHJ1Y3QgbGFuODY1eF9wcml2IHtcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG4gXFx0c3RydWN0IHNwaV9kZXZpY2UgKnNwaTtcXG4gXFx0c3RydWN0IG9hX3RjNiAqdGM2O1xcbitcXHRzdHJ1Y3QgZ3Bpb19kZXNjICpyZXNldF9ncGlvO1xcbiB9O1xcbiBcXG4gc3RhdGljIGludCBsYW44NjV4X3NldF9od19tYWNhZGRyX2xvd19ieXRlcyhzdHJ1Y3Qgb2FfdGM2ICp0YzYsIGNvbnN0IHU4ICptYWMpXFxuQEAgLTM0Niw2ICszNDksMjQgQEAgc3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuIFxcdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xcbiBcXHRJTklUX1dPUksoXFx1MDAyNnByaXYtXFx1MDAzZW11bHRpY2FzdF93b3JrLCBsYW44NjV4X211bHRpY2FzdF93b3JrX2hhbmRsZXIpO1xcbiBcXG4rXFx0cHJpdi1cXHUwMDNlcmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgXFxcInJlc2V0XFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgR1BJT0RfT1VUX0xPVyk7XFxuK1xcdGlmIChJU19FUlIocHJpdi1cXHUwMDNlcmVzZXRfZ3BpbykpIHtcXG4rXFx0XFx0cmV0ID0gZGV2X2Vycl9wcm9iZShcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIFBUUl9FUlIocHJpdi1cXHUwMDNlcmVzZXRfZ3BpbyksXFxuK1xcdFxcdFxcdFxcdCAgICBcXFwiRmFpbGVkIHRvIGdldCByZXNldCBHUElPXFxcXG5cXFwiKTtcXG4rXFx0XFx0Z290byBmcmVlX25ldGRldjtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKHByaXYtXFx1MDAzZXJlc2V0X2dwaW8pIHtcXG4rXFx0XFx0LyogQXNzZXJ0IGhhcmR3YXJlIHJlc2V0IGZvciAxMCB1cyAoZGF0YXNoZWV0IHNwZWNpZmllcyBtaW4gNSB1cylcXG4rXFx0XFx0ICogYW5kIGFsbG93IDEgbXMgc2V0dGxlIHRpbWUgZm9yIGNyeXN0YWwgb3NjaWxsYXRvciBzdGFydHVwLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXFx1MDAzZXJlc2V0X2dwaW8sIDEpO1xcbitcXHRcXHRmc2xlZXAoMTApO1xcbitcXHRcXHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cXHUwMDNlcmVzZXRfZ3BpbywgMCk7XFxuK1xcdFxcdGZzbGVlcCgxMDAwKTtcXG4rXFx0fVxcbitcXG4gXFx0cHJpdi1cXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIE5VTEwpO1xcbiBcXHRpZiAoIXByaXYtXFx1MDAzZXRjNikge1xcbiBcXHRcXHRyZXQgPSAtRU5PREVWO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxNDoyNDowNC4xNzYwMTc5MTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE3NTE0MTEzMjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHJlc2V0IEdQSU8gc3VwcG9ydCB0byB0aGUgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIE1pY3JvY2hpcCBMQU44NjV4IFNQSSBNQUMtUEhZIGV0aGVybmV0IGRyaXZlciBhbmQgdXBkYXRlcyB0aGUgZGV2aWNldHJlZSBiaW5kaW5ncy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChNaWNyb2NoaXAgTEFOODY1MC8xIE1BQy1QSFkgb24gYW4gU1BJIGJ1cykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTcxNWJhOGE1MzQ0YjczMTA1MjY1ZjYxMmM2MjBiNDFlYTllYjAxZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMTQ6MjQ6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JvY2hpcCxsYW44NjUwLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JvY2hpcCxsYW44NjUwLnlhbWxcbmluZGV4IDc2NmZmNTgxNDdhZTMuLjFiNTQzY2UzMDc2MzIgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JvY2hpcCxsYW44NjUwLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWljcm9jaGlwLGxhbjg2NTAueWFtbFxuQEAgLTQwLDYgKzQwLDExIEBAIHByb3BlcnRpZXM6XG4gICAgICAgRXZlbnQuXG4gICAgIG1heEl0ZW1zOiAxXG4gXG4rICByZXNldC1ncGlvczpcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgR1BJTyBjb25uZWN0ZWQgdG8gdGhlIGFjdGl2ZS1sb3cgUkVTRVRfTiBwaW4gb2YgdGhlIE1BQy1QSFkuXG4rICAgIG1heEl0ZW1zOiAxXG4rXG4gICBzcGktbWF4LWZyZXF1ZW5jeTpcbiAgICAgbWluaW11bTogMTUwMDAwMDBcbiAgICAgbWF4aW11bTogMjUwMDAwMDBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNcbmluZGV4IDI2YTI3NjEzMzJhNWEuLjYyYWJjNTc3YmU5MGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguY1xuQEAgLTksNiArOSw4IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29hX3RjNi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpby9jb25zdW1lci5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuIFxuICNkZWZpbmUgRFJWX05BTUVcdFx0XHRcImxhbjg2NTBcIlxuIFxuQEAgLTQxLDYgKzQzLDcgQEAgc3RydWN0IGxhbjg2NXhfcHJpdiB7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xuIFx0c3RydWN0IHNwaV9kZXZpY2UgKnNwaTtcbiBcdHN0cnVjdCBvYV90YzYgKnRjNjtcbitcdHN0cnVjdCBncGlvX2Rlc2MgKnJlc2V0X2dwaW87XG4gfTtcbiBcbiBzdGF0aWMgaW50IGxhbjg2NXhfc2V0X2h3X21hY2FkZHJfbG93X2J5dGVzKHN0cnVjdCBvYV90YzYgKnRjNiwgY29uc3QgdTggKm1hYylcbkBAIC0zNDYsNiArMzQ5LDI0IEBAIHN0YXRpYyBpbnQgbGFuODY1eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuIFx0c3BpX3NldF9kcnZkYXRhKHNwaSwgcHJpdik7XG4gXHRJTklUX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VtdWx0aWNhc3Rfd29yaywgbGFuODY1eF9tdWx0aWNhc3Rfd29ya19oYW5kbGVyKTtcbiBcbitcdHByaXYtXHUwMDNlcmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFwicmVzZXRcIixcbitcdFx0XHRcdFx0XHQgICBHUElPRF9PVVRfTE9XKTtcbitcdGlmIChJU19FUlIocHJpdi1cdTAwM2VyZXNldF9ncGlvKSkge1xuK1x0XHRyZXQgPSBkZXZfZXJyX3Byb2JlKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFBUUl9FUlIocHJpdi1cdTAwM2VyZXNldF9ncGlvKSxcbitcdFx0XHRcdCAgICBcIkZhaWxlZCB0byBnZXQgcmVzZXQgR1BJT1xcblwiKTtcbitcdFx0Z290byBmcmVlX25ldGRldjtcbitcdH1cbitcbitcdGlmIChwcml2LVx1MDAzZXJlc2V0X2dwaW8pIHtcbitcdFx0LyogQXNzZXJ0IGhhcmR3YXJlIHJlc2V0IGZvciAxMCB1cyAoZGF0YXNoZWV0IHNwZWNpZmllcyBtaW4gNSB1cylcbitcdFx0ICogYW5kIGFsbG93IDEgbXMgc2V0dGxlIHRpbWUgZm9yIGNyeXN0YWwgb3NjaWxsYXRvciBzdGFydHVwLlxuK1x0XHQgKi9cbitcdFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXHUwMDNlcmVzZXRfZ3BpbywgMSk7XG4rXHRcdGZzbGVlcCgxMCk7XG4rXHRcdGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChwcml2LVx1MDAzZXJlc2V0X2dwaW8sIDApO1xuK1x0XHRmc2xlZXAoMTAwMCk7XG4rXHR9XG4rXG4gXHRwcml2LVx1MDAzZXRjNiA9IG9hX3RjNl9pbml0KHNwaSwgbmV0ZGV2LCBOVUxMKTtcbiBcdGlmICghcHJpdi1cdTAwM2V0YzYpIHtcbiBcdFx0cmV0ID0gLUVOT0RFVjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDE0OjI0OjA0LjE3NjAxOTU1MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYyNTk0NDA2NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMQU44NjVYIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIGZvY3VzIGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMuIEkgc2VlIHRoZSBwYXRjaCB0b3VjaGVzIHR3byBrZXkgYXJlYXM6IHRoZSBkZXZpY2UgdHJlZSBiaW5kaW5nIGRvY3VtZW50YXRpb24gZm9yIHRoZSBNaWNyb2NoaXAgTEFOODY1MCwgc3BlY2lmaWNhbGx5IGBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JvY2hpcCxsYW44NjUwLnlhbWxgLCBhbmQgdGhlIFNQSSBkcml2ZXIgaW1wbGVtZW50YXRpb24sIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNgLCB3aXRoIGNoYW5nZXMgaW4gYGxhbjg2NXhfcHJvYmVgLlxuXG5GaXJzdCwgSSBuZWVkIHRvIGdldCBhIHNvbGlkIGdyYXNwIG9mIHdoYXQgdGhpcyBkcml2ZXIgKmlzKiBhbmQgaG93IGl0IGludGVncmF0ZXMuIEknbGwgbmVlZCB0byBzY3J1dGluaXplIGBsYW44NjV4LmNgIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIEtjb25maWcgY29uZmlndXJhdGlvbiB0byBkZXRlcm1pbmUgaG93IGl0J3MgYnVpbHQsIGVuYWJsZWQsIGFuZCBpZiBpdCdzIGxpa2VseSB0byBiZSBhY2Nlc3NpYmxlIHRocm91Z2ggc3RhbmRhcmQgZnV6emluZyBzZXR1cHMgbGlrZSBzeXprYWxsZXIgaW4gYSBRRU1VIGVudmlyb25tZW50LiBUaGlzIGlzIGNyaXRpY2FsIGZvciBhc3Nlc3NpbmcgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgYW55IHZ1bG5lcmFiaWxpdGllcy5cblxuVGhlbiwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgdXRpbGl6ZSBlaXRoZXIgZ3JlcHBlciBvciBzdHJhaWdodC11cCBmaWxlIHJlYWRpbmcgb24gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9gIGRpcmVjdG9yeSB0byBnZXQgYSByYXBpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1ODUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxNDoyNDoxMC40MzU0NjM3MjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIzODAwMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGFuODY1eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnPTQ1PWNvbmZpZyBMQU43NDNYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZy01OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZzo2MDpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNjEtc291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlPTEwPWxhbjc0M3gtb2JqcyA6PSBsYW43NDN4X21haW4ubyBsYW43NDN4X2V0aHRvb2wubyBsYW43NDN4X3B0cC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlLTExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfTEFOODY1WCkgKz0gbGFuODY1eC9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGUtMTMtb2JqLSQoQ09ORklHX0xBTjk2NlhfU1dJVENIKSArPSBsYW45NjZ4L1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZz04PWNvbmZpZyBMQU44NjVYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnLTE2LVxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZzoxNzpcXHQgIGNhbGxlZCBsYW44NjV4LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWctMTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0xBTjg2NVgpICs9IGxhbjg2NXgub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MTpzdHJ1Y3QgbGFuODY1eF9wcml2IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDItXFx0c3RydWN0IHdvcmtfc3RydWN0IG11bHRpY2FzdF93b3JrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0OTpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X2h3X21hY2FkZHJfbG93X2J5dGVzKHN0cnVjdCBvYV90YzYgKnRjNiwgY29uc3QgdTggKm1hYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo1ODpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X2h3X21hY2FkZHIoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiwgY29uc3QgdTggKm1hYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTY0LVxcdC8qIENvbmZpZ3VyZSBNQUMgYWRkcmVzcyBsb3cgYnl0ZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NjU6XFx0cmV0ID0gbGFuODY1eF9zZXRfaHdfbWFjYWRkcl9sb3dfYnl0ZXMocHJpdi1cXHUwMDNldGM2LCBtYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy02Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTc4LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo3OTpcXHRyZXN0b3JlX3JldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHJfbG93X2J5dGVzKHByaXYtXFx1MDAzZXRjNixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtODAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHByaXYtXFx1MDAzZW5ldGRldi1cXHUwMDNlZGV2X2FkZHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo4NzpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGxhbjg2NXhfZXRodG9vbF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTg4LVxcdC5nZXRfbGlua19rc2V0dGluZ3MgPSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjkyOnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdm9pZCAqYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtOTMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo5NDpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtOTUtXFx0c3RydWN0IHNvY2thZGRyICphZGRyZXNzID0gYWRkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjEwNTpcXHRyZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyKHByaXYsIGFkZHJlc3MtXFx1MDAzZXNhX2RhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMDYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYz0xMTQ9c3RhdGljIHUzMiBnZXRfYWRkcmVzc19iaXQodTggYWRkcltFVEhfQUxFTl0sIHUzMiBiaXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxMTk6c3RhdGljIHUzMiBsYW44NjV4X2hhc2godTggYWRkcltFVEhfQUxFTl0pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEyMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxMzU6c3RhdGljIGludCBsYW44NjV4X3NldF9zcGVjaWZpY19tdWx0aWNhc3RfYWRkcihzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE0Mi1cXHRuZXRkZXZfZm9yX2VhY2hfbWNfYWRkcihoYSwgcHJpdi1cXHUwMDNlbmV0ZGV2KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjE0MzpcXHRcXHR1MzIgYml0X251bSA9IGxhbjg2NXhfaGFzaChoYS1cXHUwMDNlYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE0NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xNjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjE2NzpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X2FsbF9tdWx0aWNhc3RfYWRkcihzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xNjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTg5OnN0YXRpYyBpbnQgbGFuODY1eF9jbGVhcl9hbGxfbXVsdGljYXN0X2FkZHIoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIwODpzdGF0aWMgdm9pZCBsYW44NjV4X211bHRpY2FzdF93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMDkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMTA6XFx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbGFuODY1eF9wcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMTEtXFx0XFx0XFx0XFx0XFx0XFx0IG11bHRpY2FzdF93b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMjEtXFx0XFx0LyogRW5hYmxpbmcgYWxsIG11bHRpY2FzdCBtb2RlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIyMjpcXHRcXHRpZiAobGFuODY1eF9zZXRfYWxsX211bHRpY2FzdF9hZGRyKHByaXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMjMtXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIyOS1cXHRcXHQvKiBFbmFibGluZyBzcGVjaWZpYyBtdWx0aWNhc3QgbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMzA6XFx0XFx0aWYgKGxhbjg2NXhfc2V0X3NwZWNpZmljX211bHRpY2FzdF9hZGRyKHByaXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMzEtXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIzNy1cXHRcXHQvKiBFbmFibGluZyBsb2NhbCBtYWMgYWRkcmVzcyBvbmx5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIzODpcXHRcXHRpZiAobGFuODY1eF9jbGVhcl9hbGxfbXVsdGljYXN0X2FkZHIocHJpdikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIzOS1cXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNDc6c3RhdGljIHZvaWQgbGFuODY1eF9zZXRfbXVsdGljYXN0X2xpc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjQ4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjQ5OlxcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNTQ6c3RhdGljIG5ldGRldl90eF90IGxhbjg2NXhfc2VuZF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjU1LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNTYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNTc6XFx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI2MjpzdGF0aWMgaW50IGxhbjg2NXhfaHdfZGlzYWJsZShzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6Mjc3OnN0YXRpYyBpbnQgbGFuODY1eF9uZXRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjc4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6Mjc5OlxcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yODAtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yODMtXFx0cGh5X3N0b3AobmV0ZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyODQ6XFx0cmV0ID0gbGFuODY1eF9od19kaXNhYmxlKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yODUtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjkzOnN0YXRpYyBpbnQgbGFuODY1eF9od19lbmFibGUoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMwODpzdGF0aWMgaW50IGxhbjg2NXhfbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzA5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzEwOlxcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMTEtXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMTM6XFx0cmV0ID0gbGFuODY1eF9od19lbmFibGUocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMxNC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjY6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBsYW44NjV4X25ldGRldl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyNzpcXHQubmRvX29wZW5cXHRcXHQ9IGxhbjg2NXhfbmV0X29wZW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyODpcXHQubmRvX3N0b3BcXHRcXHQ9IGxhbjg2NXhfbmV0X2Nsb3NlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjk6XFx0Lm5kb19zdGFydF94bWl0XFx0XFx0PSBsYW44NjV4X3NlbmRfcGFja2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMzA6XFx0Lm5kb19zZXRfcnhfbW9kZVxcdD0gbGFuODY1eF9zZXRfbXVsdGljYXN0X2xpc3QsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMzMTpcXHQubmRvX3NldF9tYWNfYWRkcmVzc1xcdD0gbGFuODY1eF9zZXRfbWFjX2FkZHJlc3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMzMi1cXHQubmRvX3ZhbGlkYXRlX2FkZHJcXHQ9IGV0aF92YWxpZGF0ZV9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzM2OnN0YXRpYyBpbnQgbGFuODY1eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMzcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMzgtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzM5OlxcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0MC1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM0MjpcXHRuZXRkZXYgPSBhbGxvY19ldGhlcmRldihzaXplb2Yoc3RydWN0IGxhbjg2NXhfcHJpdikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNDMtXFx0aWYgKCFuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzQ5LVxcdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozNTA6XFx0SU5JVF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2VtdWx0aWNhc3Rfd29yaywgbGFuODY1eF9tdWx0aWNhc3Rfd29ya19oYW5kbGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzUxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDEzOlxcdHJldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHIocHJpdiwgbmV0ZGV2LVxcdTAwM2VkZXZfYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQxNC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDIwLVxcdG5ldGRldi1cXHUwMDNlaXJxID0gc3BpLVxcdTAwM2VpcnE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQyMTpcXHRuZXRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2bGFuODY1eF9uZXRkZXZfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MjI6XFx0bmV0ZGV2LVxcdTAwM2VldGh0b29sX29wcyA9IFxcdTAwMjZsYW44NjV4X2V0aHRvb2xfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0Mzk6c3RhdGljIHZvaWQgbGFuODY1eF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDQwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQxOlxcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDQyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQ5OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBsYW44NjV4X2lkc1tdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NTAtXFx0eyAubmFtZSA9IFxcXCJsYW44NjUwXFxcIiB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ1My19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NTQ6TU9EVUxFX0RFVklDRV9UQUJMRShzcGksIGxhbjg2NXhfaWRzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NTY6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbGFuODY1eF9kdF9pZHNbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDU3LVxcdHsgLmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGxhbjg2NTBcXFwiIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDYwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ2MTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBsYW44NjV4X2R0X2lkcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDYzOnN0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBsYW44NjV4X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDY0LVxcdC5kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ2NS1cXHRcXHQubmFtZSA9IERSVl9OQU1FLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NjY6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gbGFuODY1eF9kdF9pZHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ2Ny1cXHQgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDY4OlxcdC5wcm9iZSA9IGxhbjg2NXhfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ2OTpcXHQucmVtb3ZlID0gbGFuODY1eF9yZW1vdmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ3MDpcXHQuaWRfdGFibGUgPSBsYW44NjV4X2lkcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDcxLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ3Mjptb2R1bGVfc3BpX2RyaXZlcihsYW44NjV4X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ3My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTQ6MjQ6MTAuNDg3ODQ5MDA0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjc1NzIwMTQ0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgaXQ6XG5cbioqQW5hbHl6aW5nIHRoZSBMQU44NjV4IERyaXZlciBQcm9iZSBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgTEFOODY1eCBFdGhlcm5ldCBkcml2ZXIgaXMgYmVpbmcgaW5pdGlhbGl6ZWQuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBmdWxsIGBwcm9iZWAgZnVuY3Rpb24gd2l0aGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCB3aGVyZSB0aGUgaGFyZHdhcmUgaXMgaWRlbnRpZmllZCwgcmVzb3VyY2VzIGFyZSBhbGxvY2F0ZWQsIGFuZCB0aGUgZGV2aWNlIGlzIGJyb3VnaHQgb25saW5lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBoZXJlOiBob3cgdGhlIFBIWSBpcyBjb25maWd1cmVkLCBob3cgaW50ZXJydXB0cyBhcmUgaGFuZGxlZCwgYW5kIGhvdyB0aGUgbmV0d29yayBpbnRlcmZhY2UgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBrZXJuZWwuIEknbSBsb29raW5nIGZvciBhbnkgaW5pdGlhbGl6YXRpb24gZ290Y2hhcy5cblxuVGhlbiwgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLCBJJ2xsIG5lZWQgdG8gY3Jvc3MtcmVmZXJlbmNlIHRoYXQgd2l0aCB0aGUgcmVsZXZhbnQgYEtjb25maWdgIGZpbGUuIFRoZSBgS2NvbmZpZ2Agd2lsbCB0ZWxsIG1lIHdoaWNoIGNvbmZpZ3VyYXRpb25zIGVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZHJpdmVyLCB3aGF0IHNldHRpbmdzIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBwcmVyZXF1aXNpdGVzLCBsaWtlIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzIG9yIG90aGVyIGRyaXZlcnMgdGhhdCBuZWVkIHRvIGJlIGluIHBsYWNlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGRyaXZlciBjYW4gYmUgYnVpbHQgYW5kIGNvbmZpZ3VyZWQgaW4gZGlmZmVyZW50IHNjZW5hcmlvcy4gSSB3YW50IHRvIGJ1aWxkIGEgaG9saXN0aWMgcGljdHVyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCB0aGUgcmVzb3VyY2VzIGFzc2lnbmVkIHRvIHRoZSBkcml2ZXIsIGFuZCBob3cgaXQgaXMgZXhwZWN0ZWQgdG8gZnVuY3Rpb24gYXMgYSB3aG9sZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxNjUsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxNDoyNDoxMy4yNDUwNTI2ODhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzM1LFxuICBcIkxpbmVDb3VudFwiOiA5MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzM1OlxcdFxcbiAzMzY6XFx0c3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuIDMzNzpcXHR7XFxuIDMzODpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbiAzMzk6XFx0XFx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdjtcXG4gMzQwOlxcdFxcdGludCByZXQ7XFxuIDM0MTpcXHRcXG4gMzQyOlxcdFxcdG5ldGRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZihzdHJ1Y3QgbGFuODY1eF9wcml2KSk7XFxuIDM0MzpcXHRcXHRpZiAoIW5ldGRldilcXG4gMzQ0OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAzNDU6XFx0XFxuIDM0NjpcXHRcXHRwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG4gMzQ3OlxcdFxcdHByaXYtXFx1MDAzZW5ldGRldiA9IG5ldGRldjtcXG4gMzQ4OlxcdFxcdHByaXYtXFx1MDAzZXNwaSA9IHNwaTtcXG4gMzQ5OlxcdFxcdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xcbiAzNTA6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2VtdWx0aWNhc3Rfd29yaywgbGFuODY1eF9tdWx0aWNhc3Rfd29ya19oYW5kbGVyKTtcXG4gMzUxOlxcdFxcbiAzNTI6XFx0XFx0cHJpdi1cXHUwMDNlcmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgXFxcInJlc2V0XFxcIixcXG4gMzUzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIEdQSU9EX09VVF9MT1cpO1xcbiAzNTQ6XFx0XFx0aWYgKElTX0VSUihwcml2LVxcdTAwM2VyZXNldF9ncGlvKSkge1xcbiAzNTU6XFx0XFx0XFx0cmV0ID0gZGV2X2Vycl9wcm9iZShcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIFBUUl9FUlIocHJpdi1cXHUwMDNlcmVzZXRfZ3BpbyksXFxuIDM1NjpcXHRcXHRcXHRcXHRcXHQgICAgXFxcIkZhaWxlZCB0byBnZXQgcmVzZXQgR1BJT1xcXFxuXFxcIik7XFxuIDM1NzpcXHRcXHRcXHRnb3RvIGZyZWVfbmV0ZGV2O1xcbiAzNTg6XFx0XFx0fVxcbiAzNTk6XFx0XFxuIDM2MDpcXHRcXHRpZiAocHJpdi1cXHUwMDNlcmVzZXRfZ3Bpbykge1xcbiAzNjE6XFx0XFx0XFx0LyogQXNzZXJ0IGhhcmR3YXJlIHJlc2V0IGZvciAxMCB1cyAoZGF0YXNoZWV0IHNwZWNpZmllcyBtaW4gNSB1cylcXG4gMzYyOlxcdFxcdFxcdCAqIGFuZCBhbGxvdyAxIG1zIHNldHRsZSB0aW1lIGZvciBjcnlzdGFsIG9zY2lsbGF0b3Igc3RhcnR1cC5cXG4gMzYzOlxcdFxcdFxcdCAqL1xcbiAzNjQ6XFx0XFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXFx1MDAzZXJlc2V0X2dwaW8sIDEpO1xcbiAzNjU6XFx0XFx0XFx0ZnNsZWVwKDEwKTtcXG4gMzY2OlxcdFxcdFxcdGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChwcml2LVxcdTAwM2VyZXNldF9ncGlvLCAwKTtcXG4gMzY3OlxcdFxcdFxcdGZzbGVlcCgxMDAwKTtcXG4gMzY4OlxcdFxcdH1cXG4gMzY5OlxcdFxcbiAzNzA6XFx0XFx0cHJpdi1cXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIE5VTEwpO1xcbiAzNzE6XFx0XFx0aWYgKCFwcml2LVxcdTAwM2V0YzYpIHtcXG4gMzcyOlxcdFxcdFxcdHJldCA9IC1FTk9ERVY7XFxuIDM3MzpcXHRcXHRcXHRnb3RvIGZyZWVfbmV0ZGV2O1xcbiAzNzQ6XFx0XFx0fVxcbiAzNzU6XFx0XFxuIDM3NjpcXHRcXHQvKiBMQU44NjV4IFJldi5CMC9CMSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZnJvbSBBTjE3NjBcXG4gMzc3OlxcdFxcdCAqIEFzIHBlciB0aGUgQ29uZmlndXJhdGlvbiBBcHBsaWNhdGlvbiBOb3RlIEFOMTc2MCBwdWJsaXNoZWQgaW4gdGhlXFxuIDM3ODpcXHRcXHQgKiBsaW5rLCBodHRwczovL3d3dy5taWNyb2NoaXAuY29tL2VuLXVzL2FwcGxpY2F0aW9uLW5vdGVzL2FuMTc2MFxcbiAzNzk6XFx0XFx0ICogUmV2aXNpb24gRiAoRFM2MDAwMTc2MEcgLSBKdW5lIDIwMjQpLCBjb25maWd1cmUgdGhlIE1BQyB0byBzZXQgdGltZVxcbiAzODA6XFx0XFx0ICogc3RhbXBpbmcgYXQgdGhlIGVuZCBvZiB0aGUgU3RhcnQgb2YgRnJhbWUgRGVsaW1pdGVyIChTRkQpIGFuZCBzZXQgdGhlXFxuIDM4MTpcXHRcXHQgKiBUaW1lciBJbmNyZW1lbnQgcmVnIHRvIDQwIG5zIHRvIGJlIHVzZWQgYXMgYSAyNSBNSHogaW50ZXJuYWwgY2xvY2suXFxuIDM4MjpcXHRcXHQgKi9cXG4gMzgzOlxcdFxcdHJldCA9IG9hX3RjNl93cml0ZV9yZWdpc3Rlcihwcml2LVxcdTAwM2V0YzYsIExBTjg2NVhfUkVHX01BQ19UU1VfVElNRVJfSU5DUixcXG4gMzg0OlxcdFxcdFxcdFxcdFxcdCAgICBNQUNfVFNVX1RJTUVSX0lOQ1JfQ09VTlRfTkFOT1NFQ09ORFMpO1xcbiAzODU6XFx0XFx0aWYgKHJldCkge1xcbiAzODY6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gY29uZmlnIFRTVSBUaW1lciBJbmNyIHJlZzogJWRcXFxcblxcXCIsXFxuIDM4NzpcXHRcXHRcXHRcXHRyZXQpO1xcbiAzODg6XFx0XFx0XFx0Z290byBvYV90YzZfZXhpdDtcXG4gMzg5OlxcdFxcdH1cXG4gMzkwOlxcdFxcbiAzOTE6XFx0XFx0LyogQXMgcGVyIHRoZSBwb2ludCBzMyBpbiB0aGUgYmVsb3cgZXJyYXRhLCBTUEkgcmVjZWl2ZSBFdGhlcm5ldCBmcmFtZVxcbiAzOTI6XFx0XFx0ICogdHJhbnNmZXIgbWF5IGhhbHQgd2hlbiBzdGFydGluZyB0aGUgbmV4dCBmcmFtZSBpbiB0aGUgc2FtZSBkYXRhIGJsb2NrXFxuIDM5MzpcXHRcXHQgKiAoY2h1bmspIGFzIHRoZSBlbmQgb2YgYSBwcmV2aW91cyBmcmFtZS4gVGhlIFJGQSBmaWVsZCBzaG91bGQgYmVcXG4gMzk0OlxcdFxcdCAqIGNvbmZpZ3VyZWQgdG8gMDFiIG9yIDEwYiBmb3IgcHJvcGVyIG9wZXJhdGlvbi4gSW4gdGhlc2UgbW9kZXMsIG9ubHlcXG4gMzk1OlxcdFxcdCAqIG9uZSByZWNlaXZlIEV0aGVybmV0IGZyYW1lIHdpbGwgYmUgcGxhY2VkIGluIGEgc2luZ2xlIGRhdGEgYmxvY2suXFxuIDM5NjpcXHRcXHQgKiBXaGVuIHRoZSBSRkEgZmllbGQgaXMgd3JpdHRlbiB0byAwMWIsIHJlY2VpdmVkIGZyYW1lcyB3aWxsIGJlIGZvcmNlZFxcbiAzOTc6XFx0XFx0ICogdG8gb25seSBzdGFydCBpbiB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgZGF0YSBibG9jayBwYXlsb2FkIChTV089MCkuIEFzXFxuIDM5ODpcXHRcXHQgKiByZWNvbW1lbmRlZCwgZW5hYmxlIHplcm8gYWxpZ24gcmVjZWl2ZSBmcmFtZSBmZWF0dXJlIGZvciBwcm9wZXJcXG4gMzk5OlxcdFxcdCAqIG9wZXJhdGlvbi5cXG4gNDAwOlxcdFxcdCAqXFxuIDQwMTpcXHRcXHQgKiBodHRwczovL3d3MS5taWNyb2NoaXAuY29tL2Rvd25sb2Fkcy9hZW1Eb2N1bWVudHMvZG9jdW1lbnRzL0FJUy9Qcm9kdWN0RG9jdW1lbnRzL0VycmF0YS9MQU44NjUwLTEtRXJyYXRhLTgwMDAxMDc1LnBkZlxcbiA0MDI6XFx0XFx0ICovXFxuIDQwMzpcXHRcXHRyZXQgPSBvYV90YzZfemVyb19hbGlnbl9yZWNlaXZlX2ZyYW1lX2VuYWJsZShwcml2LVxcdTAwM2V0YzYpO1xcbiA0MDQ6XFx0XFx0aWYgKHJldCkge1xcbiA0MDU6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gc2V0IFpBUkZFOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4gNDA2OlxcdFxcdFxcdGdvdG8gb2FfdGM2X2V4aXQ7XFxuIDQwNzpcXHRcXHR9XFxuIDQwODpcXHRcXG4gNDA5OlxcdFxcdC8qIEdldCB0aGUgTUFDIGFkZHJlc3MgZnJvbSB0aGUgU1BJIGRldmljZSB0cmVlIG5vZGUgKi9cXG4gNDEwOlxcdFxcdGlmIChkZXZpY2VfZ2V0X2V0aGRldl9hZGRyZXNzKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgbmV0ZGV2KSlcXG4gNDExOlxcdFxcdFxcdGV0aF9od19hZGRyX3JhbmRvbShuZXRkZXYpO1xcbiA0MTI6XFx0XFxuIDQxMzpcXHRcXHRyZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyKHByaXYsIG5ldGRldi1cXHUwMDNlZGV2X2FkZHIpO1xcbiA0MTQ6XFx0XFx0aWYgKHJldCkge1xcbiA0MTU6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gY29uZmlndXJlIE1BQzogJWRcXFxcblxcXCIsIHJldCk7XFxuIDQxNjpcXHRcXHRcXHRnb3RvIG9hX3RjNl9leGl0O1xcbiA0MTc6XFx0XFx0fVxcbiA0MTg6XFx0XFxuIDQxOTpcXHRcXHRuZXRkZXYtXFx1MDAzZWlmX3BvcnQgPSBJRl9QT1JUXzEwQkFTRVQ7XFxuIDQyMDpcXHRcXHRuZXRkZXYtXFx1MDAzZWlycSA9IHNwaS1cXHUwMDNlaXJxO1xcbiA0MjE6XFx0XFx0bmV0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNmxhbjg2NXhfbmV0ZGV2X29wcztcXG4gNDIyOlxcdFxcdG5ldGRldi1cXHUwMDNlZXRodG9vbF9vcHMgPSBcXHUwMDI2bGFuODY1eF9ldGh0b29sX29wcztcXG4gNDIzOlxcdFxcbiA0MjQ6XFx0XFx0cmV0ID0gcmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDE0OjI0OjEzLjI0NTE0OTc5OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1Nzc1OTQ1MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIGl0OlxuXG4qKkxBTjg2NVggS2NvbmZpZyBEZWVwIERpdmUqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBMQU44NjVYJ3MgS2NvbmZpZy4gTGV0J3Mgc3RhcnQgd2l0aCBhIHRob3JvdWdoIGNoZWNrIHRvIHNlZSBleGFjdGx5IHdoYXQgZmVhdHVyZXMgYXJlIGV4cG9zZWQgYW5kIGhvdyB0aGV5J3JlIGNvbmZpZ3VyZWQuIEkgd2FudCB0byBzZWUgaG93IHRoZSByZWxldmFudCBkcml2ZXIgaXMgcHJlc2VudGVkLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIG5ldHdvcmsgc3RhY2sgYW5kIGFueSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIHRvIGNvbnRyb2wgdGhpbmdzIGxpa2UgUEhZIGFkZHJlc3NpbmcsIGludGVycnVwdCBsaW5lcywgY2xvY2sgc291cmNlcywgYW5kIGFueSBwb3RlbnRpYWwgcG93ZXIgbWFuYWdlbWVudCBzZXR0aW5ncy5cblxuTXkgaW5pdGlhbCBzY2FuIHdpbGwgZm9jdXMgb24gdHJhY2luZyB0aGUgdmFyaW91cyBgZGVwZW5kcyBvbmAsIGBzZWxlY3RgLCBhbmQgYGRlZmF1bHRgIHN0YXRlbWVudHMuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgSSBrbm93IGhvdyB0aGlzIG1vZHVsZSBmaXRzIGludG8gdGhlIGdyZWF0ZXIgc3lzdGVtIGNvbmZpZ3VyYXRpb24gYW5kIHdoYXQgaXQgcmVsaWVzIG9uLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgb24gc3BlY2lmaWMga2VybmVsIHZlcnNpb25zIG9yIGZlYXR1cmVzIOKAkyBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBjb21wYXRpYmlsaXR5IGlzc3VlcyBkb3duIHRoZSBsaW5lLiBJJ2xsIG1ha2Ugbm90ZXMgYWJvdXQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgYW5kIGFueSBhc3NvY2lhdGVkIE1ESU8gYnVzIHN1cHBvcnQgYW5kIHRoZSBnZW5lcmljIEV0aGVybmV0IFBIWSBmcmFtZXdvcmsuIEEgc29saWQgS2NvbmZpZyByZXZpZXcgd2lsbCBoZWxwIGJ1aWxkIGEgc3Ryb25nIGZvdW5kYXRpb24gZm9yIGFueSBmdXR1cmUgaW50ZWdyYXRpb24gb3IgdHJvdWJsZXNob290aW5nIGVmZm9ydHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMTcwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxNDoyNDoxNS44MjI3NDY3MTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1pY3JvY2hpcCBMQU44NjV4IERyaXZlciBTdXBwb3J0XFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGlmIE5FVF9WRU5ET1JfTUlDUk9DSElQXFxuICAgNzpcXHRcXG4gICA4OlxcdGNvbmZpZyBMQU44NjVYXFxuICAgOTpcXHRcXHR0cmlzdGF0ZSBcXFwiTEFOODY1eCBzdXBwb3J0XFxcIlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBTUElcXG4gIDExOlxcdFxcdHNlbGVjdCBPQV9UQzZcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgU3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBMQU44NjUwLzEgUmV2LkIwL0IxIE1BQ1BIWSBFdGhlcm5ldCBjaGlwLiBJdFxcbiAgMTQ6XFx0XFx0ICB1c2VzIE9QRU4gQWxsaWFuY2UgMTBCQVNFLVQxeCBTZXJpYWwgSW50ZXJmYWNlIHNwZWNpZmljYXRpb24uXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlXFxuICAxNzpcXHRcXHQgIGNhbGxlZCBsYW44NjV4LlxcbiAgMTg6XFx0XFxuICAxOTpcXHRlbmRpZiAjIE5FVF9WRU5ET1JfTUlDUk9DSElQXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDE0OjI0OjE1LjgyMjgzMDE4NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU4NjcyNzIzODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTEFOODY1WCBEcml2ZXIgQW5hbHlzaXMgZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBMQU44NjVYYCBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhlIE1pY3JvY2hpcCBMQU44NjUwLzEgUmV2LkIwL0IxIE1BQ1BIWSBFdGhlcm5ldCBjaGlwIGNvbm5lY3RlZCB2aWEgU1BJLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBoYXJkd2FyZSBpcyBldmVuIHJlbW90ZWx5IGFjY2Vzc2libGUgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSAvIHN5emthbGxlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGd1aWRlbGluZXMgYXJlIHByZXR0eSBjbGVhcjogZnV6emluZyBpcyBvbmx5IGFwcGxpY2FibGUgdG8gY29kZSB0aGF0ICpjYW4qIGFjdHVhbGx5IGV4ZWN1dGUgaW4gdGhlc2UgZW52aXJvbm1lbnRzLiBUaGF0IG1lYW5zIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMsIHRoaW5ncyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXAgYXJlIGZhaXIgZ2FtZSwgYnV0IG5vdCB0aGlzLlxuXG5UaGUgaW5pdGlhbCBodW5jaCBpcyB0aGF0LCBubywgdGhpcyBpcyBub3QgZ29pbmcgdG8gd29yay4gTGV04oCZcyBjb25maXJtLiBUaGUgZHJpdmVyIGlzIGFuIFNQSSBjbGllbnQsIGRlbWFuZGluZyB0aGUgYG1pY3JvY2hpcCxsYW44NjUwYCBoYXJkd2FyZSwgY29ubmVjdGVkIHRocm91Z2ggU1BJIChhbmQgT0FfVEM2IGNvbW11bmljYXRpb24pLiBUaGVyZSdzIG5vIGVtdWxhdGlvbiBvZiBTUEkgZGV2aWNlcyBmb3IgdGhlIGBsYW44NjUwYCBpbiB0aGUgc3RhbmRhcmQgUUVNVS9zeXprYWxsZXIgYW1kNjQgc2V0dXAsIGZ1bGwgc3RvcC4gRXZlbiAqaWYqIHRoZSBkZXZpY2Ugd2VyZSB0byBzb21laG93IGdldCBwcm9iZWQsIHRoZSBkcml2ZXIgZ29lcyBvbiB0byBpbml0aWFsaXplIHRoZSBPQV9UQzYgaW50ZXJmYWNlIHVzaW5nIGBvYV90YzZfaW5pdGAsIGBvYV90YzZfd3JpdGVfcmVnaXN0ZXJgLCBldGMuIHdoaWNoIHJlcXVpcmUgYSBwaHlzaWNhbCBTUEkgYnVzLlxuXG5Ob3csIGxldCdzIGJyZWFrIGRvd24gdGhlIHBhdGNoIGl0c2VsZi4gVGhlIHBhdGNoIHByaW1hcmlseSBpbnRyb2R1Y2VzIEdQSU8gaGFuZGxpbmcgZm9yIGEgcmVzZXQgcGluIHdpdGhpbiB0aGUgYGxhbjg2NXhfcHJvYmVgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHRyaWVzIHRvIGdldCBhbiBvcHRpb25hbCByZXNldCBHUElPLCBhc3NlcnRzIHRoZSByZXNldCBmb3IgYSBzaG9ydCBkdXJhdGlvbiwgYW5kIHRoZW4gZGUtYXNzZXJ0cyBpdC4gVGhpcyByZXNldCBzZXF1ZW5jZSwgd2hpbGUgaW1wb3J0YW50IGZvciBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGhhcmR3YXJlLCByZWxpZXMgb24gYSBwaHlzaWNhbCBHUElPIHBpbiBjb25uZWN0ZWQgdG8gdGhlIExBTjg2NTAgY2hpcCwgbm90IHNvbWV0aGluZyBhYnN0cmFjdGVkIGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LiBJdCBhbHNvIHVwZGF0ZXMgdGhlIGRldmljZSB0cmVlIGJpbmRpbmcgWUFNTCBkb2N1bWVudGF0aW9uIHdoaWNoIGlzIG5vdCByZWxldmFudCB0byB0aGUgZnV6emluZyBvZiB0aGUgZGV2aWNlIGl0c2VsZi5cblxuVGhlIGRyaXZlciBpcyBjbGVhcmx5IGRlc2lnbmVkIGZvciBhIGRlZGljYXRlZCBoYXJkd2FyZSBTUEkgbmV0d29yayBjb250cm9sbGVyIGFuZCByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBvciBhIGRldmljZSB0cmVlIGNvbmZpZ3VyZWQgdG8gdXNlIG9uZS4gVGhhdCBoYXJkd2FyZSBpc24ndCBzaW11bGF0ZWQgaW4gb3VyIHN0YW5kYXJkIFFFTVUvc3l6a2FsbGVyIHNldHVwLlxuXG5UaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoLCBlc3BlY2lhbGx5IHRoZSBhZGRlZCByZXNldCBsb2dpYyBpbiBgbGFuODY1eF9wcm9iZWAsIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4gV2UgY2FuJ3QgcmVhY2ggaXQuIEdpdmVuIHRoZSBsYWNrIG9mIGhhcmR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBwYXJ0aWN1bGFyIFNQSSBkZXZpY2UsIGFuZCB0aGUgc3BlY2lmaWMgcmVxdWlyZW1lbnQgdG8gdG91Y2ggdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHBpbnMsIHRoZXJlIGlzIG5vIHdheSB3ZSBjYW4gZnV6eiB0aGlzLlxuXG5TbywgbGV0J3MgY29uZmlybSB0aGUgbWV0YWRhdGE6XG4tIFdvcnRoRnV6emluZzogZmFsc2Vcbi0gRm9jdXNTeW1ib2xzOiBbXVxuLSBFbmFibGVDb25maWdzOiBbXVxuLSBSZWFzb25pbmc6IENvbmNpc2UgZXhwbGFuYXRpb24gc3RhdGluZyB0aGF0IExBTjg2NVggaXMgYW4gU1BJIE1BQy1QSFkgRXRoZXJuZXQgZHJpdmVyIHJlcXVpcmluZyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgcHJlc2VudC9lbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIC8gc3l6a2FsbGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBwcm9iZSBsb2dpYyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXG5UaGlzIGlzIGFsbCBhcyBleHBlY3RlZC4gTGV0J3MgZm9ybWF0IHRoZSBjYWxsIHRvIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzIzLCJPdXRwdXRUb2tlbnMiOjExNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDE0OjI0OjIxLjY5MDEwNDg0MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgcmVzZXQgR1BJTyBzdXBwb3J0IHRvIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgTWljcm9jaGlwIExBTjg2NXggU1BJIE1BQy1QSFkgZXRoZXJuZXQgZHJpdmVyIGFuZCB1cGRhdGVzIHRoZSBkZXZpY2V0cmVlIGJpbmRpbmdzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBkZWRpY2F0ZWQgcGh5c2ljYWwgaGFyZHdhcmUgKE1pY3JvY2hpcCBMQU44NjUwLzEgTUFDLVBIWSBvbiBhbiBTUEkgYnVzKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyByZXNldCBHUElPIHN1cHBvcnQgdG8gdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBNaWNyb2NoaXAgTEFOODY1eCBTUEkgTUFDLVBIWSBldGhlcm5ldCBkcml2ZXIgYW5kIHVwZGF0ZXMgdGhlIGRldmljZXRyZWUgYmluZGluZ3MuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIGRlZGljYXRlZCBwaHlzaWNhbCBoYXJkd2FyZSAoTWljcm9jaGlwIExBTjg2NTAvMSBNQUMtUEhZIG9uIGFuIFNQSSBidXMpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxNDoyNDoyMS42OTAxMzM2MzFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowqwvb5[1] Phase: Running StartedAt: 2026-09-09 14:24:53 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqwvb5[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-09 14:24:53 +0000 UTC FinishedAt: 2026-09-09 14:24:57 +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,}